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 lines
21 KiB
1 lines
21 KiB
{"ast":null,"code":"import { defineComponent, computed, ref, reactive, unref, watch, onBeforeUnmount, h, withModifiers } from 'vue';\nimport { HORIZONTAL, ScrollbarDirKey, SCROLLBAR_MIN_SIZE } from '../defaults.mjs';\nimport { virtualizedScrollbarProps } from '../props.mjs';\nimport { renderThumbStyle } from '../utils.mjs';\nimport { BAR_MAP } from '../../../scrollbar/src/util.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { cAF, rAF } from '../../../../utils/raf.mjs';\nconst ScrollBar = defineComponent({\n name: \"ElVirtualScrollBar\",\n props: virtualizedScrollbarProps,\n emits: [\"scroll\", \"start-move\", \"stop-move\"],\n setup(props, {\n emit\n }) {\n const GAP = computed(() => props.startGap + props.endGap);\n const nsVirtualScrollbar = useNamespace(\"virtual-scrollbar\");\n const nsScrollbar = useNamespace(\"scrollbar\");\n const trackRef = ref();\n const thumbRef = ref();\n let frameHandle = null;\n let onselectstartStore = null;\n const state = reactive({\n isDragging: false,\n traveled: 0\n });\n const bar = computed(() => BAR_MAP[props.layout]);\n const trackSize = computed(() => props.clientSize - unref(GAP));\n const trackStyle = computed(() => ({\n position: \"absolute\",\n width: `${HORIZONTAL === props.layout ? trackSize.value : props.scrollbarSize}px`,\n height: `${HORIZONTAL === props.layout ? props.scrollbarSize : trackSize.value}px`,\n [ScrollbarDirKey[props.layout]]: \"2px\",\n right: \"2px\",\n bottom: \"2px\",\n borderRadius: \"4px\"\n }));\n const thumbSize = computed(() => {\n const ratio = props.ratio;\n const clientSize = props.clientSize;\n if (ratio >= 100) {\n return Number.POSITIVE_INFINITY;\n }\n if (ratio >= 50) {\n return ratio * clientSize / 100;\n }\n const SCROLLBAR_MAX_SIZE = clientSize / 3;\n return Math.floor(Math.min(Math.max(ratio * clientSize, SCROLLBAR_MIN_SIZE), SCROLLBAR_MAX_SIZE));\n });\n const thumbStyle = computed(() => {\n if (!Number.isFinite(thumbSize.value)) {\n return {\n display: \"none\"\n };\n }\n const thumb = `${thumbSize.value}px`;\n const style = renderThumbStyle({\n bar: bar.value,\n size: thumb,\n move: state.traveled\n }, props.layout);\n return style;\n });\n const totalSteps = computed(() => Math.floor(props.clientSize - thumbSize.value - unref(GAP)));\n const attachEvents = () => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n const thumbEl = unref(thumbRef);\n if (!thumbEl) return;\n onselectstartStore = document.onselectstart;\n document.onselectstart = () => false;\n thumbEl.addEventListener(\"touchmove\", onMouseMove, {\n passive: true\n });\n thumbEl.addEventListener(\"touchend\", onMouseUp);\n };\n const detachEvents = () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n document.onselectstart = onselectstartStore;\n onselectstartStore = null;\n const thumbEl = unref(thumbRef);\n if (!thumbEl) return;\n thumbEl.removeEventListener(\"touchmove\", onMouseMove);\n thumbEl.removeEventListener(\"touchend\", onMouseUp);\n };\n const onThumbMouseDown = e => {\n e.stopImmediatePropagation();\n if (e.ctrlKey || [1, 2].includes(e.button)) {\n return;\n }\n state.isDragging = true;\n state[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]);\n emit(\"start-move\");\n attachEvents();\n };\n const onMouseUp = () => {\n state.isDragging = false;\n state[bar.value.axis] = 0;\n emit(\"stop-move\");\n detachEvents();\n };\n const onMouseMove = e => {\n const {\n isDragging\n } = state;\n if (!isDragging) return;\n if (!thumbRef.value || !trackRef.value) return;\n const prevPage = state[bar.value.axis];\n if (!prevPage) return;\n cAF(frameHandle);\n const offset = (trackRef.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;\n const thumbClickPosition = thumbRef.value[bar.value.offset] - prevPage;\n const distance = offset - thumbClickPosition;\n frameHandle = rAF(() => {\n state.traveled = Math.max(props.startGap, Math.min(distance, totalSteps.value));\n emit(\"scroll\", distance, totalSteps.value);\n });\n };\n const clickTrackHandler = e => {\n const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]);\n const thumbHalf = thumbRef.value[bar.value.offset] / 2;\n const distance = offset - thumbHalf;\n state.traveled = Math.max(0, Math.min(distance, totalSteps.value));\n emit(\"scroll\", distance, totalSteps.value);\n };\n watch(() => props.scrollFrom, v => {\n if (state.isDragging) return;\n state.traveled = Math.ceil(v * totalSteps.value);\n });\n onBeforeUnmount(() => {\n detachEvents();\n });\n return () => {\n return h(\"div\", {\n role: \"presentation\",\n ref: trackRef,\n class: [nsVirtualScrollbar.b(), props.class, (props.alwaysOn || state.isDragging) && \"always-on\"],\n style: trackStyle.value,\n onMousedown: withModifiers(clickTrackHandler, [\"stop\", \"prevent\"]),\n onTouchstartPrevent: onThumbMouseDown\n }, h(\"div\", {\n ref: thumbRef,\n class: nsScrollbar.e(\"thumb\"),\n style: thumbStyle.value,\n onMousedown: onThumbMouseDown\n }, []));\n };\n }\n});\nexport { ScrollBar as default };","map":{"version":3,"names":["ScrollBar","defineComponent","name","props","virtualizedScrollbarProps","emits","setup","emit","GAP","computed","startGap","endGap","nsVirtualScrollbar","useNamespace","nsScrollbar","trackRef","ref","thumbRef","frameHandle","onselectstartStore","state","reactive","isDragging","traveled","bar","BAR_MAP","layout","trackSize","clientSize","unref","trackStyle","position","width","HORIZONTAL","value","scrollbarSize","height","ScrollbarDirKey","right","bottom","borderRadius","thumbSize","ratio","Number","POSITIVE_INFINITY","SCROLLBAR_MAX_SIZE","Math","floor","min","max","SCROLLBAR_MIN_SIZE","thumbStyle","isFinite","display","thumb","style","renderThumbStyle","size","move","totalSteps","attachEvents","window","addEventListener","onMouseMove","onMouseUp","thumbEl","document","onselectstart","passive","detachEvents","removeEventListener","onThumbMouseDown","e","stopImmediatePropagation","ctrlKey","includes","button","axis","currentTarget","offset","client","getBoundingClientRect","direction","prevPage","cAF","thumbClickPosition","distance","rAF","clickTrackHandler","abs","target","thumbHalf","watch","scrollFrom","v","ceil","onBeforeUnmount","h","role","class","b","alwaysOn","onMousedown","withModifiers","onTouchstartPrevent"],"sources":["../../../../../../../packages/components/virtual-list/src/components/scrollbar.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n reactive,\n ref,\n unref,\n watch,\n withModifiers,\n} from 'vue'\nimport { BAR_MAP } from '@element-plus/components/scrollbar'\nimport { cAF, rAF } from '@element-plus/utils'\n\nimport { useNamespace } from '@element-plus/hooks'\nimport { HORIZONTAL, SCROLLBAR_MIN_SIZE, ScrollbarDirKey } from '../defaults'\nimport { virtualizedScrollbarProps } from '../props'\nimport { renderThumbStyle } from '../utils'\n\nimport type { CSSProperties } from 'vue'\n\nconst ScrollBar = defineComponent({\n name: 'ElVirtualScrollBar',\n props: virtualizedScrollbarProps,\n emits: ['scroll', 'start-move', 'stop-move'],\n setup(props, { emit }) {\n const GAP = computed(() => props.startGap + props.endGap) // top 2 + bottom 2 | left 2 + right 2\n\n const nsVirtualScrollbar = useNamespace('virtual-scrollbar')\n const nsScrollbar = useNamespace('scrollbar')\n // DOM refs\n const trackRef = ref<HTMLElement>()\n const thumbRef = ref<HTMLElement>()\n\n // local variables\n let frameHandle: null | number = null\n let onselectstartStore: null | typeof document.onselectstart = null\n\n // data\n const state = reactive({\n isDragging: false,\n traveled: 0,\n })\n\n const bar = computed(() => BAR_MAP[props.layout])\n\n const trackSize = computed(() => props.clientSize! - unref(GAP))\n\n const trackStyle = computed<CSSProperties>(() => ({\n position: 'absolute',\n width: `${\n HORIZONTAL === props.layout ? trackSize.value : props.scrollbarSize\n }px`,\n height: `${\n HORIZONTAL === props.layout ? props.scrollbarSize : trackSize.value\n }px`,\n [ScrollbarDirKey[props.layout]]: '2px',\n right: '2px',\n bottom: '2px',\n borderRadius: '4px',\n }))\n\n const thumbSize = computed(() => {\n const ratio = props.ratio!\n const clientSize = props.clientSize!\n if (ratio >= 100) {\n return Number.POSITIVE_INFINITY\n }\n\n if (ratio >= 50) {\n return (ratio * clientSize) / 100\n }\n\n const SCROLLBAR_MAX_SIZE = clientSize / 3\n return Math.floor(\n Math.min(\n Math.max(ratio * clientSize, SCROLLBAR_MIN_SIZE),\n SCROLLBAR_MAX_SIZE\n )\n )\n })\n\n // const sizeRange = computed(() => props.size - thumbSize.value)\n\n const thumbStyle = computed<CSSProperties>(() => {\n if (!Number.isFinite(thumbSize.value)) {\n return {\n display: 'none',\n }\n }\n\n const thumb = `${thumbSize.value}px`\n\n const style: CSSProperties = renderThumbStyle(\n {\n bar: bar.value,\n size: thumb,\n move: state.traveled,\n },\n props.layout\n )\n\n return style\n })\n\n const totalSteps = computed(() =>\n Math.floor(props.clientSize! - thumbSize.value - unref(GAP))\n )\n\n const attachEvents = () => {\n window.addEventListener('mousemove', onMouseMove)\n window.addEventListener('mouseup', onMouseUp)\n\n const thumbEl = unref(thumbRef)\n\n if (!thumbEl) return\n\n onselectstartStore = document.onselectstart\n document.onselectstart = () => false\n\n thumbEl.addEventListener('touchmove', onMouseMove, { passive: true })\n thumbEl.addEventListener('touchend', onMouseUp)\n }\n\n const detachEvents = () => {\n window.removeEventListener('mousemove', onMouseMove)\n window.removeEventListener('mouseup', onMouseUp)\n\n document.onselectstart = onselectstartStore\n onselectstartStore = null\n\n const thumbEl = unref(thumbRef)\n if (!thumbEl) return\n\n thumbEl.removeEventListener('touchmove', onMouseMove)\n thumbEl.removeEventListener('touchend', onMouseUp)\n }\n\n const onThumbMouseDown = (e: Event) => {\n e.stopImmediatePropagation()\n if (\n (e as KeyboardEvent).ctrlKey ||\n [1, 2].includes((e as MouseEvent).button)\n ) {\n return\n }\n\n state.isDragging = true\n state[bar.value.axis] =\n e.currentTarget![bar.value.offset] -\n (e[bar.value.client] -\n (e.currentTarget as HTMLElement).getBoundingClientRect()[\n bar.value.direction\n ])\n\n emit('start-move')\n attachEvents()\n }\n\n const onMouseUp = () => {\n state.isDragging = false\n state[bar.value.axis] = 0\n emit('stop-move')\n detachEvents()\n }\n\n const onMouseMove = (e: Event) => {\n const { isDragging } = state\n if (!isDragging) return\n if (!thumbRef.value || !trackRef.value) return\n\n const prevPage = state[bar.value.axis]\n if (!prevPage) return\n\n cAF(frameHandle!)\n // using the current track's offset top/left - the current pointer's clientY/clientX\n // to get the relative position of the pointer to the track.\n const offset =\n (trackRef.value.getBoundingClientRect()[bar.value.direction] -\n e[bar.value.client]) *\n -1\n\n // find where the thumb was clicked on.\n const thumbClickPosition = thumbRef.value[bar.value.offset] - prevPage\n /**\n * +--------------+ +--------------+\n * | - <--------- thumb.offsetTop | |\n * | |+| <--+ | |\n * | - | | |\n * | Content | | | |\n * | | | | |\n * | | | | |\n * | | | | -\n * | | +--> | |+|\n * | | | -\n * +--------------+ +--------------+\n */\n\n // using the current position - prev position to\n\n const distance = offset - thumbClickPosition\n // get how many steps in total.\n // gap of 2 on top, 2 on bottom, in total 4.\n // using totalSteps ÷ totalSize getting each step's size * distance to get the new\n // scroll offset to scrollTo\n frameHandle = rAF(() => {\n state.traveled = Math.max(\n props.startGap,\n Math.min(\n distance,\n totalSteps.value // 2 is the top value\n )\n )\n emit('scroll', distance, totalSteps.value)\n })\n }\n\n const clickTrackHandler = (e: MouseEvent) => {\n const offset = Math.abs(\n (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] -\n e[bar.value.client]\n )\n const thumbHalf = thumbRef.value![bar.value.offset] / 2\n const distance = offset - thumbHalf\n\n state.traveled = Math.max(0, Math.min(distance, totalSteps.value))\n emit('scroll', distance, totalSteps.value)\n }\n\n watch(\n () => props.scrollFrom,\n (v) => {\n if (state.isDragging) return\n /**\n * this is simply mapping the current scrollbar offset\n *\n * formula 1:\n * v = scrollOffset / (estimatedTotalSize - clientSize)\n * traveled = v * (clientSize - thumbSize - GAP) --> v * totalSteps\n *\n * formula 2:\n * traveled = (v * clientSize) / (clientSize / totalSteps) --> (v * clientSize) * (totalSteps / clientSize) --> v * totalSteps\n */\n state.traveled = Math.ceil(v! * totalSteps.value)\n }\n )\n\n onBeforeUnmount(() => {\n detachEvents()\n })\n\n return () => {\n return h(\n 'div',\n {\n role: 'presentation',\n ref: trackRef,\n class: [\n nsVirtualScrollbar.b(),\n props.class,\n (props.alwaysOn || state.isDragging) && 'always-on',\n ],\n style: trackStyle.value,\n onMousedown: withModifiers(clickTrackHandler, ['stop', 'prevent']),\n onTouchstartPrevent: onThumbMouseDown,\n },\n h(\n 'div',\n {\n ref: thumbRef,\n class: nsScrollbar.e('thumb'),\n style: thumbStyle.value,\n onMousedown: onThumbMouseDown,\n },\n []\n )\n )\n }\n },\n})\n\nexport default ScrollBar\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|