{"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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"}