{"version":3,"file":"slider.mjs","sources":["../../../components/slider/slider.tsx"],"sourcesContent":["import {\n  defineComponent,\n  VNode,\n  ref,\n  reactive,\n  provide,\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  watch,\n  toRefs,\n} from 'vue';\nimport { isNumber } from 'lodash-es';\nimport { isArray } from 'lodash-es';\nimport props from './props';\nimport TSliderButton from './slider-button';\nimport { SliderValue } from './type';\n\n// hooks\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { useSliderMark } from './hooks/useSliderMark';\nimport { useSliderInput } from './hooks/useSliderInput';\nimport { formatSliderValue, getStopStyle } from './utils';\nimport { sliderPropsInjectKey } from './consts';\nimport useVModel from '../hooks/useVModel';\nimport { useDisabled } from '../hooks/useDisabled';\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 disabled = useDisabled();\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]: disabled.value,\n        },\n      ];\n    });\n    const sliderRailClass = computed(() => [\n      `${COMPONENT_NAME.value}__rail`,\n      { 'show-input': props.inputNumberProps, disabled: disabled.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 = Math.max(props.min || 0, sliderValue.value[0]);\n          secondValue.value = Math.min(props.max || 100, sliderValue.value[1]);\n        } else {\n          firstValue.value = props.min || 0;\n          secondValue.value = props.max || 100;\n        }\n        valuetext = `${firstValue.value}-${secondValue.value}`;\n      } else {\n        if (!isNumber(sliderValue.value)) {\n          firstValue.value = props.min;\n        } else {\n          firstValue.value = Math.min(props.max, Math.max(props.min, sliderValue.value as number));\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 (disabled.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 (disabled.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    );\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: disabled.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,\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={disabled.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              disabled={disabled.value}\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                disabled={disabled.value}\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","disabled","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","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","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","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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"}