执行过npm install命令的vue-element-admin源码
康凯
2022-05-20 aa4c235a8ca67ea8b731f90c951a465e92c0a865
1
{"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"]}]}