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 line
24 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"ast":null,"code":"import { ref, computed, inject, nextTick, watch } from 'vue';\nimport { debounce } from 'lodash-unified';\nimport { useEventListener } from '@vueuse/core';\nimport '../../../../constants/index.mjs';\nimport { sliderContextKey } from '../constants.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../../constants/event.mjs';\nconst {\n left,\n down,\n right,\n up,\n home,\n end,\n pageUp,\n pageDown\n} = EVENT_CODE;\nconst useTooltip = (props, formatTooltip, showTooltip) => {\n const tooltip = ref();\n const tooltipVisible = ref(false);\n const enableFormat = computed(() => {\n return formatTooltip.value instanceof Function;\n });\n const formatValue = computed(() => {\n return enableFormat.value && formatTooltip.value(props.modelValue) || props.modelValue;\n });\n const displayTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = true);\n }, 50);\n const hideTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = false);\n }, 50);\n return {\n tooltip,\n tooltipVisible,\n formatValue,\n displayTooltip,\n hideTooltip\n };\n};\nconst useSliderButton = (props, initData, emit) => {\n const {\n disabled,\n min,\n max,\n step,\n showTooltip,\n precision,\n sliderSize,\n formatTooltip,\n emitChange,\n resetSize,\n updateDragging\n } = inject(sliderContextKey);\n const {\n tooltip,\n tooltipVisible,\n formatValue,\n displayTooltip,\n hideTooltip\n } = useTooltip(props, formatTooltip, showTooltip);\n const button = ref();\n const currentPosition = computed(() => {\n return `${(props.modelValue - min.value) / (max.value - min.value) * 100}%`;\n });\n const wrapperStyle = computed(() => {\n return props.vertical ? {\n bottom: currentPosition.value\n } : {\n left: currentPosition.value\n };\n });\n const handleMouseEnter = () => {\n initData.hovering = true;\n displayTooltip();\n };\n const handleMouseLeave = () => {\n initData.hovering = false;\n if (!initData.dragging) {\n hideTooltip();\n }\n };\n const onButtonDown = event => {\n if (disabled.value) return;\n event.preventDefault();\n onDragStart(event);\n window.addEventListener(\"mousemove\", onDragging);\n window.addEventListener(\"touchmove\", onDragging);\n window.addEventListener(\"mouseup\", onDragEnd);\n window.addEventListener(\"touchend\", onDragEnd);\n window.addEventListener(\"contextmenu\", onDragEnd);\n button.value.focus();\n };\n const incrementPosition = amount => {\n if (disabled.value) return;\n initData.newPosition = Number.parseFloat(currentPosition.value) + amount / (max.value - min.value) * 100;\n setPosition(initData.newPosition);\n emitChange();\n };\n const onLeftKeyDown = () => {\n incrementPosition(-step.value);\n };\n const onRightKeyDown = () => {\n incrementPosition(step.value);\n };\n const onPageDownKeyDown = () => {\n incrementPosition(-step.value * 4);\n };\n const onPageUpKeyDown = () => {\n incrementPosition(step.value * 4);\n };\n const onHomeKeyDown = () => {\n if (disabled.value) return;\n setPosition(0);\n emitChange();\n };\n const onEndKeyDown = () => {\n if (disabled.value) return;\n setPosition(100);\n emitChange();\n };\n const onKeyDown = event => {\n let isPreventDefault = true;\n if ([left, down].includes(event.key)) {\n onLeftKeyDown();\n } else if ([right, up].includes(event.key)) {\n onRightKeyDown();\n } else if (event.key === home) {\n onHomeKeyDown();\n } else if (event.key === end) {\n onEndKeyDown();\n } else if (event.key === pageDown) {\n onPageDownKeyDown();\n } else if (event.key === pageUp) {\n onPageUpKeyDown();\n } else {\n isPreventDefault = false;\n }\n isPreventDefault && event.preventDefault();\n };\n const getClientXY = event => {\n let clientX;\n let clientY;\n if (event.type.startsWith(\"touch\")) {\n clientY = event.touches[0].clientY;\n clientX = event.touches[0].clientX;\n } else {\n clientY = event.clientY;\n clientX = event.clientX;\n }\n return {\n clientX,\n clientY\n };\n };\n const onDragStart = event => {\n initData.dragging = true;\n initData.isClick = true;\n const {\n clientX,\n clientY\n } = getClientXY(event);\n if (props.vertical) {\n initData.startY = clientY;\n } else {\n initData.startX = clientX;\n }\n initData.startPosition = Number.parseFloat(currentPosition.value);\n initData.newPosition = initData.startPosition;\n };\n const onDragging = event => {\n if (initData.dragging) {\n initData.isClick = false;\n displayTooltip();\n resetSize();\n let diff;\n const {\n clientX,\n clientY\n } = getClientXY(event);\n if (props.vertical) {\n initData.currentY = clientY;\n diff = (initData.startY - initData.currentY) / sliderSize.value * 100;\n } else {\n initData.currentX = clientX;\n diff = (initData.currentX - initData.startX) / sliderSize.value * 100;\n }\n initData.newPosition = initData.startPosition + diff;\n setPosition(initData.newPosition);\n }\n };\n const onDragEnd = () => {\n if (initData.dragging) {\n setTimeout(() => {\n initData.dragging = false;\n if (!initData.hovering) {\n hideTooltip();\n }\n if (!initData.isClick) {\n setPosition(initData.newPosition);\n }\n emitChange();\n }, 0);\n window.removeEventListener(\"mousemove\", onDragging);\n window.removeEventListener(\"touchmove\", onDragging);\n window.removeEventListener(\"mouseup\", onDragEnd);\n window.removeEventListener(\"touchend\", onDragEnd);\n window.removeEventListener(\"contextmenu\", onDragEnd);\n }\n };\n const setPosition = async newPosition => {\n if (newPosition === null || Number.isNaN(+newPosition)) return;\n if (newPosition < 0) {\n newPosition = 0;\n } else if (newPosition > 100) {\n newPosition = 100;\n }\n const lengthPerStep = 100 / ((max.value - min.value) / step.value);\n const steps = Math.round(newPosition / lengthPerStep);\n let value = steps * lengthPerStep * (max.value - min.value) * 0.01 + min.value;\n value = Number.parseFloat(value.toFixed(precision.value));\n if (value !== props.modelValue) {\n emit(UPDATE_MODEL_EVENT, value);\n }\n if (!initData.dragging && props.modelValue !== initData.oldValue) {\n initData.oldValue = props.modelValue;\n }\n await nextTick();\n initData.dragging && displayTooltip();\n tooltip.value.updatePopper();\n };\n watch(() => initData.dragging, val => {\n updateDragging(val);\n });\n useEventListener(button, \"touchstart\", onButtonDown, {\n passive: false\n });\n return {\n disabled,\n button,\n tooltip,\n tooltipVisible,\n showTooltip,\n wrapperStyle,\n formatValue,\n handleMouseEnter,\n handleMouseLeave,\n onButtonDown,\n onKeyDown,\n setPosition\n };\n};\nexport { useSliderButton };","map":{"version":3,"names":["left","down","right","up","home","end","pageUp","pageDown","EVENT_CODE","useTooltip","props","formatTooltip","showTooltip","tooltip","ref","tooltipVisible","enableFormat","computed","value","Function","formatValue","modelValue","displayTooltip","debounce","hideTooltip","useSliderButton","initData","emit","disabled","min","max","step","precision","sliderSize","emitChange","resetSize","updateDragging","inject","sliderContextKey","button","currentPosition","wrapperStyle","vertical","bottom","handleMouseEnter","hovering","handleMouseLeave","dragging","onButtonDown","event","preventDefault","onDragStart","window","addEventListener","onDragging","onDragEnd","focus","incrementPosition","amount","newPosition","Number","parseFloat","setPosition","onLeftKeyDown","onRightKeyDown","onPageDownKeyDown","onPageUpKeyDown","onHomeKeyDown","onEndKeyDown","onKeyDown","isPreventDefault","includes","key","getClientXY","clientX","clientY","type","startsWith","touches","isClick","startY","startX","startPosition","diff","currentY","currentX","setTimeout","removeEventListener","isNaN","lengthPerStep","steps","Math","round","toFixed","UPDATE_MODEL_EVENT","oldValue","nextTick","updatePopper","watch","val","useEventListener","passive"],"sources":["../../../../../../../packages/components/slider/src/composables/use-slider-button.ts"],"sourcesContent":["import { computed, inject, nextTick, ref, watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { useEventListener } from '@vueuse/core'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { sliderContextKey } from '../constants'\n\nimport type { CSSProperties, ComputedRef, Ref, SetupContext } from 'vue'\nimport type { SliderProps } from '../slider'\nimport type {\n SliderButtonEmits,\n SliderButtonInitData,\n SliderButtonProps,\n} from '../button'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\n\nconst { left, down, right, up, home, end, pageUp, pageDown } = EVENT_CODE\n\nconst useTooltip = (\n props: SliderButtonProps,\n formatTooltip: Ref<SliderProps['formatTooltip']>,\n showTooltip: Ref<SliderProps['showTooltip']>\n) => {\n const tooltip = ref<TooltipInstance>()\n\n const tooltipVisible = ref(false)\n\n const enableFormat = computed(() => {\n return formatTooltip.value instanceof Function\n })\n\n const formatValue = computed(() => {\n return (\n (enableFormat.value && formatTooltip.value!(props.modelValue)) ||\n props.modelValue\n )\n })\n\n const displayTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = true)\n }, 50)\n\n const hideTooltip = debounce(() => {\n showTooltip.value && (tooltipVisible.value = false)\n }, 50)\n\n return {\n tooltip,\n tooltipVisible,\n formatValue,\n displayTooltip,\n hideTooltip,\n }\n}\n\nexport const useSliderButton = (\n props: SliderButtonProps,\n initData: SliderButtonInitData,\n emit: SetupContext<SliderButtonEmits>['emit']\n) => {\n const {\n disabled,\n min,\n max,\n step,\n showTooltip,\n precision,\n sliderSize,\n formatTooltip,\n emitChange,\n resetSize,\n updateDragging,\n } = inject(sliderContextKey)!\n\n const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } =\n useTooltip(props, formatTooltip!, showTooltip)\n\n const button = ref<HTMLDivElement>()\n\n const currentPosition = computed(() => {\n return `${\n ((props.modelValue - min.value) / (max.value - min.value)) * 100\n }%`\n })\n\n const wrapperStyle: ComputedRef<CSSProperties> = computed(() => {\n return props.vertical\n ? { bottom: currentPosition.value }\n : { left: currentPosition.value }\n })\n\n const handleMouseEnter = () => {\n initData.hovering = true\n displayTooltip()\n }\n\n const handleMouseLeave = () => {\n initData.hovering = false\n if (!initData.dragging) {\n hideTooltip()\n }\n }\n\n const onButtonDown = (event: MouseEvent | TouchEvent) => {\n if (disabled.value) return\n event.preventDefault()\n onDragStart(event)\n window.addEventListener('mousemove', onDragging)\n window.addEventListener('touchmove', onDragging)\n window.addEventListener('mouseup', onDragEnd)\n window.addEventListener('touchend', onDragEnd)\n window.addEventListener('contextmenu', onDragEnd)\n button.value!.focus()\n }\n\n const incrementPosition = (amount: number) => {\n if (disabled.value) return\n initData.newPosition =\n Number.parseFloat(currentPosition.value) +\n (amount / (max.value - min.value)) * 100\n setPosition(initData.newPosition)\n emitChange()\n }\n\n const onLeftKeyDown = () => {\n incrementPosition(-step.value)\n }\n\n const onRightKeyDown = () => {\n incrementPosition(step.value)\n }\n\n const onPageDownKeyDown = () => {\n incrementPosition(-step.value * 4)\n }\n\n const onPageUpKeyDown = () => {\n incrementPosition(step.value * 4)\n }\n\n const onHomeKeyDown = () => {\n if (disabled.value) return\n setPosition(0)\n emitChange()\n }\n\n const onEndKeyDown = () => {\n if (disabled.value) return\n setPosition(100)\n emitChange()\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n let isPreventDefault = true\n if ([left, down].includes(event.key)) {\n onLeftKeyDown()\n } else if ([right, up].includes(event.key)) {\n onRightKeyDown()\n } else if (event.key === home) {\n onHomeKeyDown()\n } else if (event.key === end) {\n onEndKeyDown()\n } else if (event.key === pageDown) {\n onPageDownKeyDown()\n } else if (event.key === pageUp) {\n onPageUpKeyDown()\n } else {\n isPreventDefault = false\n }\n isPreventDefault && event.preventDefault()\n }\n\n const getClientXY = (event: MouseEvent | TouchEvent) => {\n let clientX: number\n let clientY: number\n if (event.type.startsWith('touch')) {\n clientY = (event as TouchEvent).touches[0].clientY\n clientX = (event as TouchEvent).touches[0].clientX\n } else {\n clientY = (event as MouseEvent).clientY\n clientX = (event as MouseEvent).clientX\n }\n return {\n clientX,\n clientY,\n }\n }\n\n const onDragStart = (event: MouseEvent | TouchEvent) => {\n initData.dragging = true\n initData.isClick = true\n const { clientX, clientY } = getClientXY(event)\n if (props.vertical) {\n initData.startY = clientY\n } else {\n initData.startX = clientX\n }\n initData.startPosition = Number.parseFloat(currentPosition.value)\n initData.newPosition = initData.startPosition\n }\n\n const onDragging = (event: MouseEvent | TouchEvent) => {\n if (initData.dragging) {\n initData.isClick = false\n displayTooltip()\n resetSize()\n let diff: number\n const { clientX, clientY } = getClientXY(event)\n if (props.vertical) {\n initData.currentY = clientY\n diff = ((initData.startY - initData.currentY) / sliderSize.value) * 100\n } else {\n initData.currentX = clientX\n diff = ((initData.currentX - initData.startX) / sliderSize.value) * 100\n }\n initData.newPosition = initData.startPosition + diff\n setPosition(initData.newPosition)\n }\n }\n\n const onDragEnd = () => {\n if (initData.dragging) {\n /*\n * 防止在 mouseup 后立即触发 click导致滑块有几率产生一小段位移\n * 不使用 preventDefault 是因为 mouseup 和 click 没有注册在同一个 DOM 上\n */\n setTimeout(() => {\n initData.dragging = false\n if (!initData.hovering) {\n hideTooltip()\n }\n if (!initData.isClick) {\n setPosition(initData.newPosition)\n }\n emitChange()\n }, 0)\n window.removeEventListener('mousemove', onDragging)\n window.removeEventListener('touchmove', onDragging)\n window.removeEventListener('mouseup', onDragEnd)\n window.removeEventListener('touchend', onDragEnd)\n window.removeEventListener('contextmenu', onDragEnd)\n }\n }\n\n const setPosition = async (newPosition: number) => {\n if (newPosition === null || Number.isNaN(+newPosition)) return\n if (newPosition < 0) {\n newPosition = 0\n } else if (newPosition > 100) {\n newPosition = 100\n }\n const lengthPerStep = 100 / ((max.value - min.value) / step.value)\n const steps = Math.round(newPosition / lengthPerStep)\n let value =\n steps * lengthPerStep * (max.value - min.value) * 0.01 + min.value\n value = Number.parseFloat(value.toFixed(precision.value))\n\n if (value !== props.modelValue) {\n emit(UPDATE_MODEL_EVENT, value)\n }\n\n if (!initData.dragging && props.modelValue !== initData.oldValue) {\n initData.oldValue = props.modelValue\n }\n\n await nextTick()\n initData.dragging && displayTooltip()\n tooltip.value!.updatePopper()\n }\n\n watch(\n () => initData.dragging,\n (val) => {\n updateDragging(val)\n }\n )\n\n useEventListener(button, 'touchstart', onButtonDown, { passive: false })\n\n return {\n disabled,\n button,\n tooltip,\n tooltipVisible,\n showTooltip,\n wrapperStyle,\n formatValue,\n handleMouseEnter,\n handleMouseLeave,\n onButtonDown,\n onKeyDown,\n setPosition,\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}