UNPKG

tav-ui

Version:
1 lines 6.84 kB
{"version":3,"file":"bar2.mjs","sources":["../../../../../../../packages/components/scrollbar/src/bar.tsx"],"sourcesContent":["import { computed, defineComponent, getCurrentInstance, h, inject, onUnmounted, ref } from 'vue'\nimport { off, on } from '@tav-ui/utils/domUtils'\nimport { BAR_MAP, renderThumbStyle } from './util'\nimport type { Ref } from 'vue'\n\nexport default defineComponent({\n name: 'Bar',\n props: {\n vertical: Boolean,\n size: String,\n move: Number,\n },\n\n setup(props) {\n const instance = getCurrentInstance()\n const thumb = ref()\n const wrap = inject('scroll-bar-wrap', {} as Ref<any>) as any\n const bar = computed(() => {\n return BAR_MAP[props.vertical ? 'vertical' : 'horizontal'] as any\n })\n const barStore = ref<any>({})\n const cursorDown = ref<boolean>(false)\n const clickThumbHandler = (e: any) => {\n // prevent click event of right button\n if (e.ctrlKey || e.button === 2) return\n\n window.getSelection()?.removeAllRanges()\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n startDrag(e)\n barStore.value[bar.value.axis] =\n e.currentTarget[bar.value.offset] -\n (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction])\n }\n\n const clickTrackHandler = (e: any) => {\n const offset = Math.abs(\n e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]\n )\n const thumbHalf = thumb.value[bar.value.offset] / 2\n const thumbPositionPercentage =\n ((offset - thumbHalf) * 100) / instance?.vnode.el?.[bar.value.offset]\n\n wrap.value[bar.value.scroll] =\n (thumbPositionPercentage * wrap.value[bar.value.scrollSize]) / 100\n }\n const startDrag = (e: any) => {\n e.stopImmediatePropagation()\n cursorDown.value = true\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n on(document, 'mousemove', mouseMoveDocumentHandler)\n on(document, 'mouseup', mouseUpDocumentHandler)\n document.onselectstart = () => false\n }\n\n const mouseMoveDocumentHandler = (e: any) => {\n if (cursorDown.value === false) return\n const prevPage = barStore.value[bar.value.axis]\n\n if (!prevPage) return\n\n const offset =\n (instance?.vnode.el?.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) *\n -1\n const thumbClickPosition = thumb.value[bar.value.offset] - prevPage\n const thumbPositionPercentage =\n ((offset - thumbClickPosition) * 100) / instance?.vnode.el?.[bar.value.offset]\n wrap.value[bar.value.scroll] =\n (thumbPositionPercentage * wrap.value[bar.value.scrollSize]) / 100\n }\n\n function mouseUpDocumentHandler() {\n cursorDown.value = false\n barStore.value[bar.value.axis] = 0\n off(document, 'mousemove', mouseMoveDocumentHandler)\n document.onselectstart = null\n }\n\n onUnmounted(() => {\n off(document, 'mouseup', mouseUpDocumentHandler)\n })\n\n return () =>\n h(\n 'div',\n {\n class: ['scrollbar__bar', `is-${bar.value.key}`],\n onMousedown: clickTrackHandler,\n },\n h('div', {\n ref: thumb,\n class: 'scrollbar__thumb',\n onMousedown: clickThumbHandler,\n style: renderThumbStyle({\n size: props.size,\n move: props.move,\n bar: bar.value,\n }),\n })\n )\n },\n})\n"],"names":["defineComponent","name","props","vertical","Boolean","size","String","move","Number","instance","getCurrentInstance","thumb","ref","wrap","inject","BAR_MAP","barStore","cursorDown","clickThumbHandler","window","getSelection","removeAllRanges","bar","value","axis","e","client","currentTarget","clickTrackHandler","thumbPositionPercentage","startDrag","on","document","onselectstart","mouseMoveDocumentHandler","offset","off","onUnmounted","h","onMousedown","class"],"mappings":"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"}