{"version":3,"file":"slider.mjs","sources":["../../src/slider/slider.tsx"],"sourcesContent":["import { ref, toRefs, computed, reactive, defineComponent, watch, onMounted } from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport config from '../config';\nimport props from './props';\nimport { useVModel } from '../shared/useVModel';\nimport { trimSingleValue, trimValue } from './tool';\nimport type { SliderValue } from './type';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\ntype dataType = {\n  initialLeft: number;\n  initialRight: number;\n  maxRange: number;\n  lineLeft: number;\n  lineRight: number;\n  dotTopValue: number[];\n  blockSize: number;\n  isScale: boolean;\n  scaleArray: any[];\n  scaleTextArray: any[];\n};\n\nexport interface TouchData {\n  startValue: number;\n  newValue: number;\n  startX: number;\n  deltaX: number;\n  offsetX: number;\n}\n\nexport default defineComponent({\n  name: `${prefix}-slider`,\n  props,\n  setup(props) {\n    const sliderClass = usePrefixClass('slider');\n    const isDisabled = useFormDisabled();\n    const sliderLine = ref<HTMLElement>();\n    const leftDot = ref<HTMLElement>();\n    const rightDot = ref<HTMLElement>();\n    const state: dataType = reactive({\n      initialLeft: 0,\n      initialRight: 0,\n      maxRange: 0,\n      lineLeft: 0,\n      lineRight: 0,\n      dotTopValue: [0, 0],\n      blockSize: 20,\n      isScale: false,\n      scaleArray: [],\n      scaleTextArray: [],\n    });\n    const defaultValue = props.defaultValue || props.min;\n    const { value, modelValue } = toRefs(props);\n    const [innerValue, setInnerValue] = useVModel(value, modelValue, defaultValue, props.onChange);\n    const scope = computed(() => Number(props.max) - Number(props.min));\n\n    watch(\n      () => innerValue.value,\n      (val) => {\n        if (props.range) {\n          const left = (state.maxRange * (val[0] - props.min)) / scope.value;\n          const right = (state.maxRange * (props.max - val[1])) / scope.value;\n          // 因为要计算点相对于线的绝对定位，所以要取整条线的长度而非可滑动的范围\n          setLineStyle(left, right);\n        } else {\n          setSingleBarWidth(val as number);\n        }\n      },\n    );\n    const rootRef = ref<HTMLDivElement>();\n\n    const classes = computed(() => [\n      `${sliderClass.value}`,\n      {\n        [`${sliderClass.value}--top`]: props.label || state.scaleTextArray.length,\n        [`${sliderClass.value}--disabled`]: isDisabled.value,\n        [`${sliderClass.value}--range`]: props.range,\n      },\n    ]);\n\n    const sliderLineClasses = computed(() => [\n      `${sliderClass.value}__bar`,\n      `${sliderClass.value}__bar--${props.theme}`,\n      {\n        [`${sliderClass.value}__bar--disabled`]: isDisabled.value,\n        [`${sliderClass.value}__bar--marks`]: state.isScale && props.theme === 'capsule',\n      },\n    ]);\n\n    const precision = computed(() => {\n      const precisions = [props.min, props.max, props.step].map((item) => {\n        const decimalArr = `${item}`.split('.');\n        return decimalArr[1] ? decimalArr[1].length : 0;\n      });\n      return Math.max.apply(null, precisions);\n    });\n\n    const lineBarWidth = ref<number>();\n    const setSingleBarWidth = (value: number) => {\n      const halfBlock = props.theme === 'capsule' ? Number(state.blockSize) / 2 : 0;\n      const percentage = (Number(value) - props.min) / scope.value;\n      lineBarWidth.value = percentage * state.maxRange + halfBlock;\n    };\n\n    const setLineStyle = (left: number, right: number) => {\n      const halfBlock = (props.theme as string) === 'capsule' ? Number(state.blockSize) / 2 : 0;\n      const [a, b] = innerValue.value as any;\n      const cut = (v: any) => parseInt(v, 10);\n\n      state.dotTopValue = [a, b];\n\n      if (left + right <= state.maxRange) {\n        state.lineLeft = cut(left + halfBlock);\n        state.lineRight = cut(right + halfBlock);\n      } else {\n        state.lineLeft = cut(state.maxRange + halfBlock - right);\n        state.lineRight = cut(state.maxRange - left + halfBlock * 1.5);\n      }\n    };\n\n    const getInitialStyle = () => {\n      const line = sliderLine.value?.getBoundingClientRect() as DOMRect;\n      const halfBlock = Number(state.blockSize) / 2;\n      const maxRange = line.right - line.left;\n\n      state.maxRange = maxRange;\n      state.initialLeft = line.left;\n      state.initialRight = line.right;\n      if (props.theme === 'capsule') {\n        state.maxRange = maxRange - Number(state.blockSize) - 6; // 6 是边框宽度\n        state.initialLeft -= halfBlock;\n        state.initialRight -= halfBlock;\n      }\n    };\n\n    const onTouchEnd = () => {};\n\n    const onSingleDotMove = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      const [{ pageX }] = e.changedTouches;\n      const value = convertPosToValue(pageX - state.initialLeft);\n      changeValue(calcByStep(value));\n    };\n\n    const changeValue = (value: SliderValue) => {\n      setInnerValue(trimValue(value, props));\n    };\n\n    const calcByStep = (value: number): number => {\n      if (props.step < 0 || props.step > scope.value) return Number(parseFloat(`${value}`).toFixed(precision.value));\n      const closestStep = trimSingleValue(Math.round(value / props.step) * props.step, props.min, props.max);\n\n      return Number(parseFloat(`${closestStep}`).toFixed(precision.value));\n    };\n\n    const getValue = (label: any, value: any) => {\n      const REGEXP = /[$][{value}]{7}/;\n      if (isFunction(label)) return label(value);\n      if (label && label === 'true') return value;\n      if (REGEXP.test(label)) return label.replace(REGEXP, value);\n    };\n\n    const handleMask = (marks: any) => {\n      const calcPos = (arr: number[]) => {\n        const margin = (props.theme as any) === 'capsule' ? state.blockSize / 2 : 0;\n        return arr.map((item) => ({\n          val: item,\n          left: Math.round(((item - props.min) / scope.value) * state.maxRange) + margin,\n        }));\n      };\n      if (marks?.length && Array.isArray(marks)) {\n        state.isScale = true;\n        state.scaleArray = calcPos(marks);\n        state.scaleTextArray = [];\n      }\n\n      if (Object.prototype.toString.call(marks) === '[object Object]') {\n        const scaleArray = Object.keys(marks).map((item) => Number(item));\n        const scaleTextArray = scaleArray.map((item) => marks[item]);\n        state.isScale = scaleArray.length > 0;\n        state.scaleArray = calcPos(scaleArray);\n        state.scaleTextArray = scaleTextArray;\n      }\n    };\n\n    const convertPosToValue = (posValue: number, isLeft = true) => {\n      const raw = isLeft\n        ? (posValue / state.maxRange) * scope.value + props.min\n        : props.max - (posValue / state.maxRange) * scope.value;\n\n      return raw;\n    };\n\n    const onTouchMoveLeft = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      const [{ pageX }] = e.changedTouches;\n      const currentLeft = pageX - state.initialLeft;\n      const newData = [...(innerValue.value as number[])];\n      const leftValue = convertPosToValue(currentLeft);\n      newData[0] = calcByStep(leftValue);\n      changeValue(newData);\n    };\n\n    const onTouchMoveRight = (e: TouchEvent) => {\n      if (isDisabled.value) return;\n      const [{ pageX }] = e.changedTouches;\n      const currentRight = -(pageX - state.initialRight);\n      const newData = [...(innerValue.value as number[])];\n      const rightValue = convertPosToValue(currentRight, false);\n      newData[1] = calcByStep(rightValue);\n      changeValue(newData);\n    };\n\n    const handleSingleClick = (e: MouseEvent) => {\n      e.stopPropagation();\n      if (isDisabled.value) return;\n      if (!sliderLine.value) return;\n      const currentLeft = e.clientX - state.initialLeft;\n      const value = convertPosToValue(currentLeft);\n      changeValue(calcByStep(value));\n    };\n\n    const handleRangeClick = (e: MouseEvent) => {\n      e.stopPropagation();\n      if (isDisabled.value) return;\n      const halfBlock = props.theme === 'capsule' ? Number(state.blockSize) / 2 : 0;\n      const currentLeft = e.clientX - state.initialLeft;\n      if (currentLeft < 0 || currentLeft > state.maxRange + Number(state.blockSize)) return;\n\n      const leftDotValue = leftDot.value?.getBoundingClientRect() as DOMRect;\n      const rightDotValue = rightDot.value?.getBoundingClientRect() as DOMRect;\n      // 点击处-halfblock 与 leftDot左侧的距离（绝对值）\n      const distanceLeft = Math.abs(e.clientX - leftDotValue.left - halfBlock);\n      // 点击处-halfblock 与 rightDot左侧的距离（绝对值）\n      const distanceRight = Math.abs(rightDotValue.left - e.clientX + halfBlock);\n      // 哪个绝对值小就移动哪个Dot\n      const isMoveLeft = distanceLeft < distanceRight;\n\n      if (isMoveLeft) {\n        // 当前leftdot中心 + 左侧偏移量 = 目标左侧中心距离\n        const left = e.clientX - state.initialLeft;\n        const leftValue = convertPosToValue(left);\n        changeValue([calcByStep(leftValue), innerValue.value?.[1]]);\n      } else {\n        const right = -(e.clientX - state.initialRight);\n        const rightValue = convertPosToValue(right, false);\n        changeValue([innerValue.value?.[0], calcByStep(rightValue)]);\n      }\n    };\n\n    onMounted(() => {\n      getInitialStyle();\n\n      if (props.range) {\n        const left = (state.maxRange * (innerValue.value?.[0] ?? 0 - props.min)) / scope.value;\n        const right = (state.maxRange * (props.max - innerValue.value[1])) / scope.value;\n        // 因为要计算点相对于线的绝对定位，所以要取整条线的长度而非可滑动的范围\n        setLineStyle(left, right);\n      } else {\n        setSingleBarWidth(innerValue.value as number);\n      }\n      if (props.marks) {\n        handleMask(props.marks);\n      }\n    });\n\n    const readerMinText = () => {\n      if (!props.showExtremeValue) {\n        return null;\n      }\n      const textClass = {\n        [`${sliderClass.value}__value`]: !props.range,\n        [`${sliderClass.value}__value--min`]: !props.range,\n        [`${sliderClass.value}__range-extreme`]: props.range,\n        [`${sliderClass.value}__range-extreme--min`]: props.range,\n      };\n      if (props.range) {\n        return <text class={textClass}>{props.min}</text>;\n      }\n      return <text class={textClass}>{props.label ? getValue(props.label, props.min) : props.min}</text>;\n    };\n    const readerMaxText = () => {\n      if (!props.showExtremeValue) {\n        return null;\n      }\n      const textClass = [`${sliderClass.value}__value`, `${sliderClass.value}__value--max`];\n      if (props.range) {\n        return <text class={textClass}>{props.max}</text>;\n      }\n      return <text class={textClass}>{props.label ? getValue(props.label, props.max) : props.max}</text>;\n    };\n\n    const readerScale = () => {\n      if (!state.isScale) {\n        return null;\n      }\n      return state.scaleArray.map((item, index) => {\n        return (\n          <div\n            style={`left: ${item.left}px; transform: translateX(-50%);`}\n            class={[\n              `${sliderClass.value}__scale-item`,\n              `${sliderClass.value}__scale-item--${props.theme}`,\n              {\n                [`${sliderClass.value}__scale-item--active`]: !props.range && Number(innerValue.value) >= item.val,\n                [`${sliderClass.value}__scale-item--active`]:\n                  props.range && state.dotTopValue[1] >= item.val && item.val >= state.dotTopValue[0],\n                [`${sliderClass.value}__scale-item--disabled`]: isDisabled.value,\n                [`${sliderClass.value}__scale-item--hidden`]:\n                  ((index === 0 || index === state.scaleArray.length - 1) && props.theme === 'capsule') ||\n                  innerValue.value === item.val,\n              },\n            ]}\n          >\n            {state.scaleTextArray.length && (\n              <div class={[`${sliderClass.value}__scale-desc`, `${sliderClass.value}__scale-desc--${props.theme}`]}>\n                {state.scaleTextArray[index]}\n              </div>\n            )}\n          </div>\n        );\n      });\n    };\n    const readerLineSingle = () => {\n      return (\n        <div\n          class={[\n            `${sliderClass.value}__line`,\n            `${sliderClass.value}__line--${props.theme}`,\n            `${sliderClass.value}__line--single`,\n            { [`${sliderClass.value}__line--disabled`]: isDisabled.value },\n          ]}\n          style={`width: ${lineBarWidth.value}px`}\n        >\n          <div\n            ref=\"singleDot\"\n            class={`${sliderClass.value}__dot`}\n            onTouchmove={onSingleDotMove}\n            onTouchend={onTouchEnd}\n            onTouchcancel={onTouchEnd}\n          >\n            {props.label && (\n              <div\n                class={[\n                  `${sliderClass.value}__dot-value`,\n                  { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n                ]}\n              >\n                {getValue(props.label, innerValue.value) || innerValue.value}\n              </div>\n            )}\n            <div class={`${sliderClass.value}__dot-slider`}></div>\n          </div>\n        </div>\n      );\n    };\n    const readerLineRange = () => {\n      return (\n        <div\n          class={[\n            `${sliderClass.value}__line`,\n            `${sliderClass.value}__line--${props.theme}`,\n            { [`${sliderClass.value}__line--disabled`]: isDisabled.value },\n          ]}\n          style={`left: ${state.lineLeft}px; right: ${state.lineRight}px`}\n        >\n          <div\n            ref={leftDot}\n            class={[`${sliderClass.value}__dot`, `${sliderClass.value}__dot--left`]}\n            onTouchmove={onTouchMoveLeft}\n            onTouchend={onTouchEnd}\n            onTouchcancel={onTouchEnd}\n          >\n            {props.label && (\n              <div\n                class={[\n                  `${sliderClass.value}__dot-value`,\n                  { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n                ]}\n              >\n                {getValue(props.label, state.dotTopValue[0]) || state.dotTopValue[0]}\n              </div>\n            )}\n            <div class={`${sliderClass.value}__dot-slider`}></div>\n          </div>\n          <div\n            ref={rightDot}\n            class={[`${sliderClass.value}__dot`, `${sliderClass.value}__dot--right`]}\n            onTouchmove={onTouchMoveRight}\n            onTouchend={onTouchEnd}\n            onTouchcancel={onTouchEnd}\n          >\n            {props.label && (\n              <div\n                class={[\n                  `${sliderClass.value}__dot-value`,\n                  { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n                ]}\n              >\n                {getValue(props.label, state.dotTopValue[1]) || state.dotTopValue[1]}\n              </div>\n            )}\n            <div class={`${sliderClass.value}__dot-slider`}></div>\n          </div>\n        </div>\n      );\n    };\n\n    return () => {\n      return (\n        <div ref={rootRef} class={classes.value}>\n          {readerMinText()}\n          <div\n            ref={sliderLine}\n            class={sliderLineClasses.value}\n            onClick={props.range ? handleRangeClick : handleSingleClick}\n          >\n            {readerScale()}\n            {props.range ? readerLineRange() : readerLineSingle()}\n          </div>\n          {readerMaxText()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","sliderClass","usePrefixClass","isDisabled","useFormDisabled","sliderLine","ref","leftDot","rightDot","state","reactive","initialLeft","initialRight","maxRange","lineLeft","lineRight","dotTopValue","blockSize","isScale","scaleArray","scaleTextArray","defaultValue","min","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","scope","computed","Number","max","watch","val","range","left","right","setLineStyle","setSingleBarWidth","rootRef","classes","concat","_defineProperty","label","length","sliderLineClasses","theme","precision","precisions","step","map","item","decimalArr","split","Math","apply","lineBarWidth","halfBlock","percentage","_innerValue$value","a","b","cut","v","parseInt","getInitialStyle","_sliderLine$value","line","getBoundingClientRect","onTouchEnd","onSingleDotMove","e","_e$changedTouches","changedTouches","pageX","convertPosToValue","changeValue","calcByStep","trimValue","parseFloat","toFixed","closestStep","trimSingleValue","round","getValue","REGEXP","isFunction","test","replace","handleMask","marks","calcPos","arr","margin","Array","isArray","Object","prototype","toString","call","keys","posValue","isLeft","arguments","undefined","raw","onTouchMoveLeft","_e$changedTouches2","currentLeft","newData","_toConsumableArray","leftValue","onTouchMoveRight","_e$changedTouches3","currentRight","rightValue","handleSingleClick","stopPropagation","clientX","handleRangeClick","_leftDot$value","_rightDot$value","leftDotValue","rightDotValue","distanceLeft","abs","distanceRight","isMoveLeft","_innerValue$value2","_innerValue$value3","onMounted","_innerValue$value$","_innerValue$value4","readerMinText","showExtremeValue","textClass","_createVNode","readerMaxText","readerScale","index","readerLineSingle","readerLineRange"],"mappings":"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"}