label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 6.54 kB
Source Map (JSON)
{"version":3,"file":"my-scrollbar.vue2.mjs","sources":["../../../../../../src/components/my/scrollbar/my-scrollbar.vue"],"sourcesContent":["<template>\n <component :is=\"tag\" ref=\"scrollbar\" :class=\"{\n 'hover-non-blod': !hoverBlod, 'disabled-scroll-bar': disabledScrollBar\n }\" :style=\"{maxHeight : height}\" class=\"ps\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onBeforeUnmount, nextTick } from 'vue-demi';\nimport type { Ref } from 'vue-demi';\nimport PerfectScrollbar from 'perfect-scrollbar';\n\nexport type PerfectScrollbarEmitsKeys =\n | 'scroll'\n | 'ps-scroll-y'\n | 'ps-scroll-x'\n | 'ps-scroll-up'\n | 'ps-scroll-down'\n | 'ps-scroll-left'\n | 'ps-scroll-right'\n | 'ps-y-reach-start'\n | 'ps-y-reach-end'\n | 'ps-x-reach-start'\n | 'ps-x-reach-end'\n\nexport type PerfectScrollbarEmits = {\n [EventName in PerfectScrollbarEmitsKeys]: [value: Event]\n}\n\nconst props = withDefaults(defineProps<{\n tag?: string\n height?: string\n options?: any,\n hoverBlod?: boolean,\n disabledScrollBar?: boolean\n }>(),\n {\n tag: 'div',\n height: '100%',\n options: () => ({}),\n hoverBlod: true,\n disabledScrollBar: false\n }\n);\n\nconst emit = defineEmits<PerfectScrollbarEmits>();\nconst scrollbar = ref<HTMLElement>()!;\nconst ps: Ref = ref()!;\n\nconst resizeObserver = new ResizeObserver(_entries => {\n if (ps.value) {\n ps.value.update();\n }\n});\n\nwatch(\n () => props.options,\n () => {\n destroyInstance();\n createInstance();\n },\n { deep: true }\n);\n\nonMounted(() => {\n if (scrollbar.value) {\n createInstance();\n }\n});\n\nonBeforeUnmount(() => {\n destroyInstance();\n});\n\nfunction createInstance() {\n nextTick(() => {\n if (scrollbar.value) {\n // @ts-ignore\n ps.value = new PerfectScrollbar(scrollbar.value, {\n wheelPropagation: false,\n ...props.options\n });\n \n resizeObserver.observe(scrollbar.value);\n \n toggleListeners();\n setTimeout(() => {\n if (ps.value != null) {\n ps.value.update();\n }\n }, 100);\n }\n });\n}\n\nfunction destroyInstance() {\n resizeObserver.disconnect();\n if (ps.value) {\n toggleListeners(false);\n ps.value.destroy();\n ps.value = null!;\n }\n}\n\nconst eventListeners: Record<\n PerfectScrollbarEmitsKeys,\n (event: Event) => void\n> = {\n scroll: createEventListener('scroll'),\n 'ps-scroll-y': createEventListener('ps-scroll-y'),\n 'ps-scroll-x': createEventListener('ps-scroll-x'),\n 'ps-scroll-up': createEventListener('ps-scroll-up'),\n 'ps-scroll-down': createEventListener('ps-scroll-down'),\n 'ps-scroll-left': createEventListener('ps-scroll-left'),\n 'ps-scroll-right': createEventListener('ps-scroll-right'),\n 'ps-y-reach-start': createEventListener('ps-y-reach-start'),\n 'ps-y-reach-end': createEventListener('ps-y-reach-end'),\n 'ps-x-reach-start': createEventListener('ps-x-reach-start'),\n 'ps-x-reach-end': createEventListener('ps-x-reach-end')\n};\n\nfunction createEventListener(eventName: PerfectScrollbarEmitsKeys) {\n return function(event: Event) {\n emit(eventName as any, event);\n };\n}\n\nfunction toggleListeners(addListeners: boolean = true) {\n if (!ps.value?.element) {\n return;\n }\n \n Object.entries(eventListeners).forEach(([eventName, listener]) => {\n if (addListeners) {\n ps.value?.element.addEventListener(eventName, listener);\n } else {\n ps.value?.element.removeEventListener(eventName, listener);\n }\n });\n}\n\ndefineExpose({\n ps\n});\n</script>\n"],"names":[],"mappings":"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"}