{"version":3,"file":"slider.mjs","sources":["../../../components/slider/slider.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  VNode,\n  watch,\n  ComputedRef,\n} from 'vue';\nimport { isArray, isNumber } from 'lodash-es';\n\nimport { formatPrecision, formatSliderValue, getStopStyle } from '@tdesign/common-js/slider/utils';\nimport { useCommonClassName, useDisabled, usePrefixClass, useVModel } from '@tdesign/shared-hooks';\n\nimport { sliderPropsInjectKey } from './constants';\nimport { useSliderInput } from './hooks/useSliderInput';\nimport { useSliderMark } from './hooks/useSliderMark';\nimport props from './props';\nimport TSliderButton from './slider-button';\n\nimport type { SliderValue } from './type';\n\ninterface SliderButtonType {\n  setPosition: (param: number) => {};\n}\nexport default defineComponent({\n  name: 'TSlider',\n  model: {\n    prop: 'value',\n    event: 'change',\n  },\n  props,\n  setup(props) {\n    const isDisabled = useDisabled() as ComputedRef<boolean>;\n    const COMPONENT_NAME = usePrefixClass('slider');\n    const { STATUS } = useCommonClassName();\n    const { value, modelValue } = toRefs(props) as any;\n    const [sliderValue, setSliderValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n    const sliderContainerRef = ref<HTMLDivElement>();\n    const sliderRef = ref<HTMLDivElement>();\n    const firstButtonRef = ref<SliderButtonType>();\n    const secondButtonRef = ref<SliderButtonType>();\n\n    const firstValue = ref(formatSliderValue(sliderValue.value, 'first'));\n    const secondValue = ref(formatSliderValue(sliderValue.value, 'second'));\n    const dragging = ref(false);\n    const sliderSize = ref(1);\n\n    const vertical = computed(() => {\n      return props.layout === 'vertical';\n    });\n\n    /** ----------------- 样式计算 start ------------- */\n    const containerClass = computed(() => [`${COMPONENT_NAME.value}__container`, { 'is-vertical': vertical.value }]);\n    const sliderClass = computed(() => {\n      return [\n        `${COMPONENT_NAME.value}`,\n        {\n          'is-vertical': vertical.value,\n          [`${COMPONENT_NAME.value}--with-input`]: props.inputNumberProps,\n          [`${COMPONENT_NAME.value}--vertical`]: vertical.value,\n          [STATUS.value.disabled]: isDisabled.value,\n        },\n      ];\n    });\n    const sliderRailClass = computed(() => [\n      `${COMPONENT_NAME.value}__rail`,\n      { 'show-input': props.inputNumberProps, disabled: isDisabled.value },\n    ]);\n    const runwayStyle = computed(() => {\n      return vertical.value ? { height: '100%' } : {};\n    });\n    const barStyle = computed(() => {\n      const barStart = props.range ? `${(100 * (minValue.value - props.min)) / rangeDiff.value}%` : '0%';\n      const currentDiff = props.range ? maxValue.value - minValue.value : firstValue.value - props.min;\n      const barSize = `${(100 * currentDiff) / rangeDiff.value}%`;\n      return vertical.value\n        ? {\n            height: barSize,\n            bottom: barStart,\n          }\n        : {\n            width: barSize,\n            left: barStart,\n          };\n    });\n    /** ----------------- 样式计算 end ------------- */\n\n    // 差值范围\n    const rangeDiff = computed(() => {\n      return props.max - props.min;\n    });\n    const minValue = computed(() => {\n      return Math.min(firstValue.value, secondValue.value);\n    });\n    const maxValue = computed(() => {\n      return Math.max(firstValue.value, secondValue.value);\n    });\n    const steps = computed(() => {\n      if (!props.showStep || props.min > props.max) return [];\n      if (props.step === 0) {\n        console.warn('[Element Warn][Slider]step should not be 0.');\n        return [];\n      }\n      const stepCount = rangeDiff.value / props.step;\n      const stepWidth = (100 * props.step) / rangeDiff.value;\n      const result = [];\n      for (let i = 1; i < stepCount; i++) {\n        result.push(i * stepWidth);\n      }\n      if (props.range) {\n        const r = result.filter(\n          (step) =>\n            step < (100 * (minValue.value - props.min)) / rangeDiff.value ||\n            props.step > (100 * (maxValue.value - props.max)) / rangeDiff.value,\n        );\n        return r;\n      }\n      return result.filter((step) => step > (100 * (firstValue.value - props.min)) / rangeDiff.value);\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 setValues = (value: SliderValue): SliderValue => {\n      const [min, max] = [props.min, props.max];\n      if (min > max) {\n        console.warn('[Slider] max should be greater than min.');\n        return;\n      }\n      // 双向滑块\n      if (props.range && isArray(value)) {\n        let [maxLimit, minLimit] = [Math.min(...value), Math.max(...value)];\n        if (maxLimit > max) {\n          maxLimit = firstValue.value;\n        }\n        if (maxLimit < min) {\n          maxLimit = min;\n        }\n        if (minLimit < min) {\n          minLimit = secondValue.value;\n        }\n        if (minLimit > max) {\n          minLimit = max;\n        }\n        [firstValue.value, secondValue.value] = [maxLimit, minLimit];\n        return [maxLimit, minLimit];\n      }\n      let preValue = value as number;\n      if (preValue < min) {\n        preValue = min;\n      }\n      if (preValue > max) {\n        preValue = max;\n      }\n      return preValue;\n    };\n    // 只要触发修改就要有这个方法抛出change事件\n    const emitChange = (value: SliderValue) => {\n      let changeValue = value;\n      if (changeValue === undefined) {\n        if (props.range) {\n          changeValue = [firstValue.value, secondValue.value];\n        } else {\n          changeValue = firstValue.value;\n        }\n      }\n      const fixValue: SliderValue = setValues(changeValue);\n      setSliderValue(fixValue);\n    };\n\n    const resetSize = () => {\n      if (sliderRef.value) {\n        sliderSize.value = sliderRef.value[`client${vertical.value ? 'Height' : 'Width'}`];\n      }\n    };\n\n    // 是否以完成挂载（部分组合组件如inputNumber依赖于首次init后的状态值进行渲染）\n    const isAlreadyMount = ref(false);\n    // 初始化传入的value\n    const init = () => {\n      let valuetext: string | number;\n      if (props.range) {\n        if (isArray(sliderValue.value)) {\n          firstValue.value = formatPrecision(Math.max(props.min || 0, sliderValue.value[0]), precision.value);\n          secondValue.value = formatPrecision(Math.min(props.max || 100, sliderValue.value[1]), precision.value);\n        } else {\n          firstValue.value = formatPrecision(props.min || 0, precision.value);\n          secondValue.value = formatPrecision(props.max || 100, precision.value);\n        }\n        valuetext = `${firstValue.value}-${secondValue.value}`;\n      } else {\n        if (!isNumber(sliderValue.value)) {\n          firstValue.value = props.min;\n        } else {\n          const value = Math.min(props.max, Math.max(props.min, sliderValue.value as number));\n          firstValue.value = formatPrecision(value, precision.value);\n        }\n        valuetext = String(firstValue.value);\n      }\n      if (sliderContainerRef.value) {\n        sliderContainerRef.value.setAttribute('aria-valuetext', valuetext);\n      }\n      resetSize();\n      window.addEventListener('resize', resetSize);\n    };\n    // 相应button的位置\n    const setPosition = (percent: number): void => {\n      let targetValue = (percent * rangeDiff.value) / 100;\n      targetValue = props.min + targetValue;\n      if (!props.range && firstButtonRef.value) {\n        firstButtonRef.value.setPosition(percent);\n        return;\n      }\n      let button;\n      if (Math.abs(minValue.value - targetValue) < Math.abs(maxValue.value - targetValue)) {\n        button = firstValue.value < secondValue.value ? 'button1' : 'button2';\n      } else {\n        button = firstValue.value > secondValue.value ? 'button1' : 'button2';\n      }\n      if (button === 'button1' && firstButtonRef.value) {\n        firstButtonRef.value.setPosition(percent);\n      }\n      if (button === 'button2' && secondButtonRef.value) {\n        secondButtonRef.value.setPosition(percent);\n      }\n    };\n\n    const getFixValue = () => {\n      const changeValue = props.range ? [firstValue.value, secondValue.value] : firstValue.value;\n      return setValues(changeValue);\n    };\n\n    // 全局点击\n    const onSliderClick = (event: MouseEvent): void => {\n      if (isDisabled.value || dragging.value) {\n        return;\n      }\n      if (!sliderRef.value) return;\n      resetSize();\n      let value = 0;\n      if (vertical.value) {\n        const sliderOffsetBottom = sliderRef.value.getBoundingClientRect().bottom;\n        value = ((sliderOffsetBottom - event.clientY) / sliderSize.value) * 100;\n        setPosition(value);\n      } else {\n        const sliderOffsetLeft = sliderRef.value.getBoundingClientRect().left;\n        value = ((event.clientX - sliderOffsetLeft) / sliderSize.value) * 100;\n        setPosition(value);\n      }\n      const fixValue = getFixValue();\n      props.onChangeEnd?.(fixValue);\n    };\n\n    // mark 点击触发修改事件\n    const changeValue = (point: number) => {\n      if (isDisabled.value || dragging.value) {\n        return;\n      }\n      resetSize();\n      const value = Number((point / rangeDiff.value) * 100);\n      setPosition(value);\n      emitChange(point);\n      const fixValue = getFixValue();\n      props.onChangeEnd?.(fixValue);\n    };\n\n    /** 副作用监听 */\n    watch(\n      () => sliderValue.value,\n      (newVal) => {\n        if (dragging.value === true) return;\n        if (isArray(newVal) && props.range) {\n          [firstValue.value, secondValue.value] = newVal;\n        } else {\n          firstValue.value = newVal as number;\n        }\n      },\n      { deep: true },\n    );\n\n    watch([firstValue, secondValue, dragging], (newStates, prevStates) => {\n      if (newStates[0] !== prevStates[0]) {\n        if (props.range) {\n          emitChange([minValue.value, maxValue.value]);\n        } else {\n          emitChange(firstValue.value);\n        }\n      }\n      if (newStates[1] !== prevStates[1]) {\n        if (props.range) {\n          emitChange([minValue.value, maxValue.value]);\n        }\n      }\n      if (newStates[2] !== prevStates[2] && newStates[2] === false) {\n        init();\n      }\n    });\n\n    /** 挂载&卸载 */\n    onMounted(() => {\n      init();\n      isAlreadyMount.value = true;\n    });\n    onBeforeUnmount(() => {\n      window.removeEventListener('resize', resetSize);\n    });\n\n    /** -------------------------- 渲染相关逻辑 start --------------------------  */\n    const markConfig = computed(() => ({\n      max: props.max,\n      min: props.min,\n      marks: props.marks,\n      vertical: vertical.value,\n      prefixName: COMPONENT_NAME.value,\n    }));\n    const renderMask = useSliderMark(markConfig);\n\n    const inputConfig = computed(() => ({\n      max: props.max,\n      min: props.min,\n      inputNumberProps: props.inputNumberProps,\n      step: props.step,\n      prefixName: COMPONENT_NAME.value,\n      vertical: vertical.value,\n      disabled: isDisabled.value,\n    }));\n    const renderInputNumber = useSliderInput(inputConfig);\n\n    const renderInputButton = (): VNode => {\n      const firstInputVal = setValues(firstValue.value) as number;\n      const firstInputOnChange = (v: number) => {\n        firstValue.value = setValues(v) as number;\n      };\n      const secondInputVal = setValues(secondValue.value) as number;\n      const secondInputOnChange = (v: number) => {\n        secondValue.value = setValues(v) as number;\n      };\n      return (\n        <div\n          class={[\n            `${COMPONENT_NAME.value}__input-container`,\n            {\n              'is-vertical': vertical.value,\n            },\n          ]}\n        >\n          {renderInputNumber(firstInputVal, firstInputOnChange)}\n          {props.range && <div class={`${COMPONENT_NAME.value}__center-line`} />}\n          {props.range && renderInputNumber(secondInputVal, secondInputOnChange)}\n        </div>\n      );\n    };\n    /** -------------------------- 渲染相关逻辑 end --------------------------  */\n\n    /** 父子共用状态&方法 */\n    const toggleDragging = (toState: boolean) => {\n      dragging.value = toState;\n    };\n\n    const { min, max, step } = toRefs(props);\n    provide(\n      sliderPropsInjectKey,\n      reactive({\n        min,\n        max,\n        step,\n        dragging,\n        toggleDragging,\n        precision,\n        disabled: isDisabled,\n        resetSize,\n        sliderSize,\n      }),\n    );\n\n    return () => (\n      <div class={containerClass.value} ref={sliderContainerRef}>\n        <div\n          class={sliderClass.value}\n          role=\"slider\"\n          aria-valuemin={props.min}\n          aria-valuemax={props.max}\n          aria-orientation={props.layout}\n          aria-disabled={isDisabled.value}\n          tooltip-props={props.tooltipProps}\n        >\n          <div class={sliderRailClass.value} style={runwayStyle.value} onClick={onSliderClick} ref={sliderRef}>\n            <div class={`${COMPONENT_NAME.value}__track`} style={barStyle.value} />\n            <TSliderButton\n              vertical={vertical.value}\n              value={firstValue.value}\n              ref={firstButtonRef}\n              range={props.range}\n              position=\"start\"\n              tooltip-props={props.tooltipProps}\n              label={props.label}\n              onInput={(v: number) => {\n                firstValue.value = v;\n              }}\n              onMouseup={() => {\n                const fixValue = getFixValue();\n                props.onChangeEnd?.(fixValue);\n              }}\n            />\n            {props.range && (\n              <TSliderButton\n                vertical={vertical.value}\n                value={secondValue.value}\n                ref={secondButtonRef}\n                label={props.label}\n                range={props.range}\n                position=\"end\"\n                tooltip-props={props.tooltipProps}\n                onInput={(v: number) => {\n                  secondValue.value = v;\n                }}\n                onMouseup={() => {\n                  const fixValue = getFixValue();\n                  props.onChangeEnd?.(fixValue);\n                }}\n              />\n            )}\n            {props.showStep && (\n              <div class={`${COMPONENT_NAME.value}__stops`}>\n                {steps.value.map((item: any, key) => {\n                  if (item.position === 0 || item.position === 100) return null;\n                  return (\n                    <div class={`${COMPONENT_NAME.value}__stop`} key={key} style={getStopStyle(item, vertical.value)} />\n                  );\n                })}\n              </div>\n            )}\n            {renderMask(changeValue)}\n          </div>\n        </div>\n        {isAlreadyMount.value && props.inputNumberProps && renderInputButton()}\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","model","prop","event","props","setup","isDisabled","useDisabled","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","sliderValue","setSliderValue","sliderContainerRef","ref","sliderRef","firstButtonRef","secondButtonRef","firstValue","formatSliderValue","secondValue","dragging","sliderSize","vertical","computed","layout","containerClass","concat","sliderClass","_defineProperty","inputNumberProps","disabled","sliderRailClass","runwayStyle","height","barStyle","barStart","range","minValue","min","rangeDiff","currentDiff","maxValue","barSize","bottom","width","left","max","Math","steps","showStep","step","console","warn","stepCount","stepWidth","result","i","push","r","filter","precision","precisions","map","item","decimalArr","split","length","apply","setValues","_ref2","isArray","_ref3","_toConsumableArray","maxLimit","minLimit","_ref4","preValue","emitChange","changeValue","fixValue","resetSize","isAlreadyMount","init","valuetext","formatPrecision","isNumber","String","setAttribute","window","addEventListener","setPosition","percent","targetValue","button","abs","getFixValue","onSliderClick","_props2$onChangeEnd","sliderOffsetBottom","getBoundingClientRect","clientY","sliderOffsetLeft","clientX","onChangeEnd","point","_props2$onChangeEnd2","Number","watch","newVal","_newVal","deep","newStates","prevStates","onMounted","onBeforeUnmount","removeEventListener","markConfig","marks","prefixName","renderMask","useSliderMark","inputConfig","renderInputNumber","useSliderInput","renderInputButton","firstInputVal","firstInputOnChange","v","secondInputVal","secondInputOnChange","_createVNode","toggleDragging","toState","_toRefs2","provide","sliderPropsInjectKey","reactive","tooltipProps","TSliderButton","label","onInput","onMouseup","_props2$onChangeEnd3","_props2$onChangeEnd4","key","position","getStopStyle"],"mappings":"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"}