You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
8.0 KiB
1 line
8.0 KiB
{"remainingRequest":"D:\\code\\vue\\admin\\node_modules\\babel-loader\\lib\\index.js!D:\\code\\vue\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\code\\vue\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\code\\vue\\admin\\src\\components\\index\\TagsView\\ScrollPane.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\code\\vue\\admin\\src\\components\\index\\TagsView\\ScrollPane.vue","mtime":1709633785000},{"path":"D:\\code\\vue\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\code\\vue\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":499162500000},{"path":"D:\\code\\vue\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\code\\vue\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleCI7Ci8vCi8vCi8vCi8vCi8vCi8vCnZhciB0YWdBbmRUYWdTcGFjaW5nID0gNDsgLy8gdGFnQW5kVGFnU3BhY2luZwoKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdTY3JvbGxQYW5lJywKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgbGVmdDogMAogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICBzY3JvbGxXcmFwcGVyOiBmdW5jdGlvbiBzY3JvbGxXcmFwcGVyKCkgewogICAgICByZXR1cm4gdGhpcy4kcmVmcy5zY3JvbGxDb250YWluZXIuJHJlZnMud3JhcDsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIGhhbmRsZVNjcm9sbDogZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpIHsKICAgICAgdmFyIGV2ZW50RGVsdGEgPSBlLndoZWVsRGVsdGEgfHwgLWUuZGVsdGFZICogNDA7CiAgICAgIHZhciAkc2Nyb2xsV3JhcHBlciA9IHRoaXMuc2Nyb2xsV3JhcHBlcjsKICAgICAgJHNjcm9sbFdyYXBwZXIuc2Nyb2xsTGVmdCA9ICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgKyBldmVudERlbHRhIC8gNDsKICAgIH0sCiAgICBtb3ZlVG9UYXJnZXQ6IGZ1bmN0aW9uIG1vdmVUb1RhcmdldChjdXJyZW50VGFnKSB7CiAgICAgIHZhciAkY29udGFpbmVyID0gdGhpcy4kcmVmcy5zY3JvbGxDb250YWluZXIuJGVsOwogICAgICB2YXIgJGNvbnRhaW5lcldpZHRoID0gJGNvbnRhaW5lci5vZmZzZXRXaWR0aDsKICAgICAgdmFyICRzY3JvbGxXcmFwcGVyID0gdGhpcy5zY3JvbGxXcmFwcGVyOwogICAgICB2YXIgdGFnTGlzdCA9IHRoaXMuJHBhcmVudC4kcmVmcy50YWc7CiAgICAgIHZhciBmaXJzdFRhZyA9IG51bGw7CiAgICAgIHZhciBsYXN0VGFnID0gbnVsbDsgLy8gZmluZCBmaXJzdCB0YWcgYW5kIGxhc3QgdGFnCgogICAgICBpZiAodGFnTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgZmlyc3RUYWcgPSB0YWdMaXN0WzBdOwogICAgICAgIGxhc3RUYWcgPSB0YWdMaXN0W3RhZ0xpc3QubGVuZ3RoIC0gMV07CiAgICAgIH0KCiAgICAgIGlmIChmaXJzdFRhZyA9PT0gY3VycmVudFRhZykgewogICAgICAgICRzY3JvbGxXcmFwcGVyLnNjcm9sbExlZnQgPSAwOwogICAgICB9IGVsc2UgaWYgKGxhc3RUYWcgPT09IGN1cnJlbnRUYWcpIHsKICAgICAgICAkc2Nyb2xsV3JhcHBlci5zY3JvbGxMZWZ0ID0gJHNjcm9sbFdyYXBwZXIuc2Nyb2xsV2lkdGggLSAkY29udGFpbmVyV2lkdGg7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gZmluZCBwcmVUYWcgYW5kIG5leHRUYWcKICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gdGFnTGlzdC5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtID09PSBjdXJyZW50VGFnOwogICAgICAgIH0pOwogICAgICAgIHZhciBwcmV2VGFnID0gdGFnTGlzdFtjdXJyZW50SW5kZXggLSAxXTsKICAgICAgICB2YXIgbmV4dFRhZyA9IHRhZ0xpc3RbY3VycmVudEluZGV4ICsgMV07IC8vIHRoZSB0YWcncyBvZmZzZXRMZWZ0IGFmdGVyIG9mIG5leHRUYWcKCiAgICAgICAgdmFyIGFmdGVyTmV4dFRhZ09mZnNldExlZnQgPSBuZXh0VGFnLiRlbC5vZmZzZXRMZWZ0ICsgbmV4dFRhZy4kZWwub2Zmc2V0V2lkdGggKyB0YWdBbmRUYWdTcGFjaW5nOyAvLyB0aGUgdGFnJ3Mgb2Zmc2V0TGVmdCBiZWZvcmUgb2YgcHJldlRhZwoKICAgICAgICB2YXIgYmVmb3JlUHJldlRhZ09mZnNldExlZnQgPSBwcmV2VGFnLiRlbC5vZmZzZXRMZWZ0IC0gdGFnQW5kVGFnU3BhY2luZzsKCiAgICAgICAgaWYgKGFmdGVyTmV4dFRhZ09mZnNldExlZnQgPiAkc2Nyb2xsV3JhcHBlci5zY3JvbGxMZWZ0ICsgJGNvbnRhaW5lcldpZHRoKSB7CiAgICAgICAgICAkc2Nyb2xsV3JhcHBlci5zY3JvbGxMZWZ0ID0gYWZ0ZXJOZXh0VGFnT2Zmc2V0TGVmdCAtICRjb250YWluZXJXaWR0aDsKICAgICAgICB9IGVsc2UgaWYgKGJlZm9yZVByZXZUYWdPZmZzZXRMZWZ0IDwgJHNjcm9sbFdyYXBwZXIuc2Nyb2xsTGVmdCkgewogICAgICAgICAgJHNjcm9sbFdyYXBwZXIuc2Nyb2xsTGVmdCA9IGJlZm9yZVByZXZUYWdPZmZzZXRMZWZ0OwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfTs="},{"version":3,"sources":["ScrollPane.vue"],"names":[],"mappings":";;;;;;;AAOA,IAAA,gBAAA,GAAA,CAAA,C,CAAA;;AAEA,eAAA;AACA,EAAA,IAAA,EAAA,YADA;AAEA,EAAA,IAFA,kBAEA;AACA,WAAA;AACA,MAAA,IAAA,EAAA;AADA,KAAA;AAGA,GANA;AAOA,EAAA,QAAA,EAAA;AACA,IAAA,aADA,2BACA;AACA,aAAA,KAAA,KAAA,CAAA,eAAA,CAAA,KAAA,CAAA,IAAA;AACA;AAHA,GAPA;AAYA,EAAA,OAAA,EAAA;AACA,IAAA,YADA,wBACA,CADA,EACA;AACA,UAAA,UAAA,GAAA,CAAA,CAAA,UAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,EAAA;AACA,UAAA,cAAA,GAAA,KAAA,aAAA;AACA,MAAA,cAAA,CAAA,UAAA,GAAA,cAAA,CAAA,UAAA,GAAA,UAAA,GAAA,CAAA;AACA,KALA;AAMA,IAAA,YANA,wBAMA,UANA,EAMA;AACA,UAAA,UAAA,GAAA,KAAA,KAAA,CAAA,eAAA,CAAA,GAAA;AACA,UAAA,eAAA,GAAA,UAAA,CAAA,WAAA;AACA,UAAA,cAAA,GAAA,KAAA,aAAA;AACA,UAAA,OAAA,GAAA,KAAA,OAAA,CAAA,KAAA,CAAA,GAAA;AAEA,UAAA,QAAA,GAAA,IAAA;AACA,UAAA,OAAA,GAAA,IAAA,CAPA,CASA;;AACA,UAAA,OAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA,QAAA,QAAA,GAAA,OAAA,CAAA,CAAA,CAAA;AACA,QAAA,OAAA,GAAA,OAAA,CAAA,OAAA,CAAA,MAAA,GAAA,CAAA,CAAA;AACA;;AAEA,UAAA,QAAA,KAAA,UAAA,EAAA;AACA,QAAA,cAAA,CAAA,UAAA,GAAA,CAAA;AACA,OAFA,MAEA,IAAA,OAAA,KAAA,UAAA,EAAA;AACA,QAAA,cAAA,CAAA,UAAA,GAAA,cAAA,CAAA,WAAA,GAAA,eAAA;AACA,OAFA,MAEA;AACA;AACA,YAAA,YAAA,GAAA,OAAA,CAAA,SAAA,CAAA,UAAA,IAAA;AAAA,iBAAA,IAAA,KAAA,UAAA;AAAA,SAAA,CAAA;AACA,YAAA,OAAA,GAAA,OAAA,CAAA,YAAA,GAAA,CAAA,CAAA;AACA,YAAA,OAAA,GAAA,OAAA,CAAA,YAAA,GAAA,CAAA,CAAA,CAJA,CAMA;;AACA,YAAA,sBAAA,GAAA,OAAA,CAAA,GAAA,CAAA,UAAA,GAAA,OAAA,CAAA,GAAA,CAAA,WAAA,GAAA,gBAAA,CAPA,CASA;;AACA,YAAA,uBAAA,GAAA,OAAA,CAAA,GAAA,CAAA,UAAA,GAAA,gBAAA;;AAEA,YAAA,sBAAA,GAAA,cAAA,CAAA,UAAA,GAAA,eAAA,EAAA;AACA,UAAA,cAAA,CAAA,UAAA,GAAA,sBAAA,GAAA,eAAA;AACA,SAFA,MAEA,IAAA,uBAAA,GAAA,cAAA,CAAA,UAAA,EAAA;AACA,UAAA,cAAA,CAAA,UAAA,GAAA,uBAAA;AACA;AACA;AACA;AA3CA;AAZA,CAAA","sourcesContent":["<template>\r\n <el-scrollbar ref=\"scrollContainer\" :vertical=\"false\" class=\"scroll-container\" @wheel.native.prevent=\"handleScroll\">\r\n <slot />\r\n </el-scrollbar>\r\n</template>\r\n\r\n<script>\r\nconst tagAndTagSpacing = 4 // tagAndTagSpacing\r\n\r\nexport default {\r\n name: 'ScrollPane',\r\n data() {\r\n return {\r\n left: 0\r\n }\r\n },\r\n computed: {\r\n scrollWrapper() {\r\n return this.$refs.scrollContainer.$refs.wrap\r\n }\r\n },\r\n methods: {\r\n handleScroll(e) {\r\n const eventDelta = e.wheelDelta || -e.deltaY * 40\r\n const $scrollWrapper = this.scrollWrapper\r\n $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4\r\n },\r\n moveToTarget(currentTag) {\r\n const $container = this.$refs.scrollContainer.$el\r\n const $containerWidth = $container.offsetWidth\r\n const $scrollWrapper = this.scrollWrapper\r\n const tagList = this.$parent.$refs.tag\r\n\r\n let firstTag = null\r\n let lastTag = null\r\n\r\n // find first tag and last tag\r\n if (tagList.length > 0) {\r\n firstTag = tagList[0]\r\n lastTag = tagList[tagList.length - 1]\r\n }\r\n\r\n if (firstTag === currentTag) {\r\n $scrollWrapper.scrollLeft = 0\r\n } else if (lastTag === currentTag) {\r\n $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth\r\n } else {\r\n // find preTag and nextTag\r\n const currentIndex = tagList.findIndex(item => item === currentTag)\r\n const prevTag = tagList[currentIndex - 1]\r\n const nextTag = tagList[currentIndex + 1]\r\n\r\n // the tag's offsetLeft after of nextTag\r\n const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing\r\n\r\n // the tag's offsetLeft before of prevTag\r\n const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagAndTagSpacing\r\n\r\n if (afterNextTagOffsetLeft > $scrollWrapper.scrollLeft + $containerWidth) {\r\n $scrollWrapper.scrollLeft = afterNextTagOffsetLeft - $containerWidth\r\n } else if (beforePrevTagOffsetLeft < $scrollWrapper.scrollLeft) {\r\n $scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.scroll-container {\r\n white-space: nowrap;\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n /deep/ {\r\n .el-scrollbar__bar {\r\n bottom: 0px;\r\n }\r\n .el-scrollbar__wrap {\r\n height: 49px;\r\n }\r\n }\r\n}\r\n</style>\r\n"],"sourceRoot":"src/components/index/TagsView"}]} |