{"remainingRequest":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\源码\\vue-element-admin-master\\src\\layout\\components\\TagsView\\ScrollPane.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\源码\\vue-element-admin-master\\src\\layout\\components\\TagsView\\ScrollPane.vue","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KCmNvbnN0IHRhZ0FuZFRhZ1NwYWNpbmcgPSA0IC8vIHRhZ0FuZFRhZ1NwYWNpbmcKCmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnU2Nyb2xsUGFuZScsCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGxlZnQ6IDAKICAgIH0KICB9LAogIGNvbXB1dGVkOiB7CiAgICBzY3JvbGxXcmFwcGVyKCkgewogICAgICByZXR1cm4gdGhpcy4kcmVmcy5zY3JvbGxDb250YWluZXIuJHJlZnMud3JhcAogICAgfQogIH0sCiAgbW91bnRlZCgpIHsKICAgIHRoaXMuc2Nyb2xsV3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmVtaXRTY3JvbGwsIHRydWUpCiAgfSwKICBiZWZvcmVEZXN0cm95KCkgewogICAgdGhpcy5zY3JvbGxXcmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuZW1pdFNjcm9sbCkKICB9LAogIG1ldGhvZHM6IHsKICAgIGhhbmRsZVNjcm9sbChlKSB7CiAgICAgIGNvbnN0IGV2ZW50RGVsdGEgPSBlLndoZWVsRGVsdGEgfHwgLWUuZGVsdGFZICogNDAKICAgICAgY29uc3QgJHNjcm9sbFdyYXBwZXIgPSB0aGlzLnNjcm9sbFdyYXBwZXIKICAgICAgJHNjcm9sbFdyYXBwZXIuc2Nyb2xsTGVmdCA9ICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgKyBldmVudERlbHRhIC8gNAogICAgfSwKICAgIGVtaXRTY3JvbGwoKSB7CiAgICAgIHRoaXMuJGVtaXQoJ3Njcm9sbCcpCiAgICB9LAogICAgbW92ZVRvVGFyZ2V0KGN1cnJlbnRUYWcpIHsKICAgICAgY29uc3QgJGNvbnRhaW5lciA9IHRoaXMuJHJlZnMuc2Nyb2xsQ29udGFpbmVyLiRlbAogICAgICBjb25zdCAkY29udGFpbmVyV2lkdGggPSAkY29udGFpbmVyLm9mZnNldFdpZHRoCiAgICAgIGNvbnN0ICRzY3JvbGxXcmFwcGVyID0gdGhpcy5zY3JvbGxXcmFwcGVyCiAgICAgIGNvbnN0IHRhZ0xpc3QgPSB0aGlzLiRwYXJlbnQuJHJlZnMudGFnCgogICAgICBsZXQgZmlyc3RUYWcgPSBudWxsCiAgICAgIGxldCBsYXN0VGFnID0gbnVsbAoKICAgICAgLy8gZmluZCBmaXJzdCB0YWcgYW5kIGxhc3QgdGFnCiAgICAgIGlmICh0YWdMaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICBmaXJzdFRhZyA9IHRhZ0xpc3RbMF0KICAgICAgICBsYXN0VGFnID0gdGFnTGlzdFt0YWdMaXN0Lmxlbmd0aCAtIDFdCiAgICAgIH0KCiAgICAgIGlmIChmaXJzdFRhZyA9PT0gY3VycmVudFRhZykgewogICAgICAgICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgPSAwCiAgICAgIH0gZWxzZSBpZiAobGFzdFRhZyA9PT0gY3VycmVudFRhZykgewogICAgICAgICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgPSAkc2Nyb2xsV3JhcHBlci5zY3JvbGxXaWR0aCAtICRjb250YWluZXJXaWR0aAogICAgICB9IGVsc2UgewogICAgICAgIC8vIGZpbmQgcHJlVGFnIGFuZCBuZXh0VGFnCiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFnTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBjdXJyZW50VGFnKQogICAgICAgIGNvbnN0IHByZXZUYWcgPSB0YWdMaXN0W2N1cnJlbnRJbmRleCAtIDFdCiAgICAgICAgY29uc3QgbmV4dFRhZyA9IHRhZ0xpc3RbY3VycmVudEluZGV4ICsgMV0KCiAgICAgICAgLy8gdGhlIHRhZydzIG9mZnNldExlZnQgYWZ0ZXIgb2YgbmV4dFRhZwogICAgICAgIGNvbnN0IGFmdGVyTmV4dFRhZ09mZnNldExlZnQgPSBuZXh0VGFnLiRlbC5vZmZzZXRMZWZ0ICsgbmV4dFRhZy4kZWwub2Zmc2V0V2lkdGggKyB0YWdBbmRUYWdTcGFjaW5nCgogICAgICAgIC8vIHRoZSB0YWcncyBvZmZzZXRMZWZ0IGJlZm9yZSBvZiBwcmV2VGFnCiAgICAgICAgY29uc3QgYmVmb3JlUHJldlRhZ09mZnNldExlZnQgPSBwcmV2VGFnLiRlbC5vZmZzZXRMZWZ0IC0gdGFnQW5kVGFnU3BhY2luZwoKICAgICAgICBpZiAoYWZ0ZXJOZXh0VGFnT2Zmc2V0TGVmdCA+ICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgKyAkY29udGFpbmVyV2lkdGgpIHsKICAgICAgICAgICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgPSBhZnRlck5leHRUYWdPZmZzZXRMZWZ0IC0gJGNvbnRhaW5lcldpZHRoCiAgICAgICAgfSBlbHNlIGlmIChiZWZvcmVQcmV2VGFnT2Zmc2V0TGVmdCA8ICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQpIHsKICAgICAgICAgICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgPSBiZWZvcmVQcmV2VGFnT2Zmc2V0TGVmdAogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQo="},{"version":3,"sources":["ScrollPane.vue"],"names":[],"mappings":";;;;;;;AAOA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"ScrollPane.vue","sourceRoot":"src/layout/components/TagsView","sourcesContent":["<template>\n <el-scrollbar ref=\"scrollContainer\" :vertical=\"false\" class=\"scroll-container\" @wheel.native.prevent=\"handleScroll\">\n <slot />\n </el-scrollbar>\n</template>\n\n<script>\nconst tagAndTagSpacing = 4 // tagAndTagSpacing\n\nexport default {\n name: 'ScrollPane',\n data() {\n return {\n left: 0\n }\n },\n computed: {\n scrollWrapper() {\n return this.$refs.scrollContainer.$refs.wrap\n }\n },\n mounted() {\n this.scrollWrapper.addEventListener('scroll', this.emitScroll, true)\n },\n beforeDestroy() {\n this.scrollWrapper.removeEventListener('scroll', this.emitScroll)\n },\n methods: {\n handleScroll(e) {\n const eventDelta = e.wheelDelta || -e.deltaY * 40\n const $scrollWrapper = this.scrollWrapper\n $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4\n },\n emitScroll() {\n this.$emit('scroll')\n },\n moveToTarget(currentTag) {\n const $container = this.$refs.scrollContainer.$el\n const $containerWidth = $container.offsetWidth\n const $scrollWrapper = this.scrollWrapper\n const tagList = this.$parent.$refs.tag\n\n let firstTag = null\n let lastTag = null\n\n // find first tag and last tag\n if (tagList.length > 0) {\n firstTag = tagList[0]\n lastTag = tagList[tagList.length - 1]\n }\n\n if (firstTag === currentTag) {\n $scrollWrapper.scrollLeft = 0\n } else if (lastTag === currentTag) {\n $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth\n } else {\n // find preTag and nextTag\n const currentIndex = tagList.findIndex(item => item === currentTag)\n const prevTag = tagList[currentIndex - 1]\n const nextTag = tagList[currentIndex + 1]\n\n // the tag's offsetLeft after of nextTag\n const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing\n\n // the tag's offsetLeft before of prevTag\n const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagAndTagSpacing\n\n if (afterNextTagOffsetLeft > $scrollWrapper.scrollLeft + $containerWidth) {\n $scrollWrapper.scrollLeft = afterNextTagOffsetLeft - $containerWidth\n } else if (beforePrevTagOffsetLeft < $scrollWrapper.scrollLeft) {\n $scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\n }\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.scroll-container {\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n width: 100%;\n ::v-deep {\n .el-scrollbar__bar {\n bottom: 0px;\n }\n .el-scrollbar__wrap {\n height: 49px;\n }\n }\n}\n</style>\n"]}]}
|