{"version":3,"file":"slider.vue2.mjs","sources":["../../../components/slider/slider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Renderer } from '@/components/renderer'\nimport { useFieldStore } from '@/components/form'\n\nimport { computed, reactive, ref, shallowReadonly, toRef, watch } from 'vue'\n\nimport SliderTrigger from './slider-trigger.vue'\nimport {\n  createStateProp,\n  emitEvent,\n  useHoverDelay,\n  useNameHelper,\n  useProps\n} from '@vexip-ui/config'\nimport { useMoving, useSetTimeout } from '@vexip-ui/hooks'\nimport { decimalLength, throttle, toFixed } from '@vexip-ui/utils'\nimport { sliderProps } from './props'\n\nimport type { SliderMarker, SliderSlots } from './symbol'\n\nconst enum TriggerType {\n  START = 0,\n  END = 1\n}\n\ndefineOptions({ name: 'Slider' })\n\nconst { idFor, state, labelId, disabled, loading, validateField, getFieldValue, setFieldValue } =\n  useFieldStore<number | number[]>(focus)\n\nconst _props = defineProps(sliderProps)\nconst props = useProps('slider', _props, {\n  state: createStateProp(state),\n  value: {\n    default: () => getFieldValue() ?? 0,\n    static: true\n  },\n  min: 0,\n  max: 100,\n  step: {\n    default: 1,\n    validator: value => value > 0\n  },\n  vertical: false,\n  hideTip: false,\n  tipTransfer: null,\n  disabled: () => disabled.value,\n  loading: () => loading.value,\n  loadingLock: false,\n  reverse: false,\n  range: false,\n  markers: null,\n  markerOnly: false,\n  tipHover: false,\n  flipMarker: false,\n  triggerFade: false,\n  tipProps: () => ({}),\n  sync: false,\n  rangeDraggable: false,\n  slots: () => ({})\n})\n\nconst emit = defineEmits(['update:value'])\n\nconst slots = defineSlots<SliderSlots>()\n\nconst nh = useNameHelper('slider')\nconst hoverDelay = useHoverDelay()\n\nconst { timer } = useSetTimeout()\n\nconst stepOneValue = ref([0, 0]) // 按每 step 为 1 的 value\nconst sliding = ref([false, false])\nconst triggerType = ref(TriggerType.END)\nconst hovered = ref(false)\nconst triggerShow = ref(false)\n\nconst track = ref<HTMLElement>()\nconst startTrigger = ref<InstanceType<typeof SliderTrigger>>()\nconst endTrigger = ref<InstanceType<typeof SliderTrigger>>()\n\nconst markerList = computed(() => {\n  const markers = props.markers\n  const list: { value: number, marker: SliderMarker }[] = []\n\n  if (!markers) return list\n\n  if (Array.isArray(markers)) {\n    for (const raw of markers) {\n      const { value, ...marker } = typeof raw === 'number' ? { value: raw } : raw\n\n      if (!Number.isNaN(value)) {\n        list.push({ value, marker })\n      }\n    }\n  } else {\n    for (const value of Object.keys(markers)) {\n      const number = parseFloat(value)\n      const marker = markers[value]\n\n      if (!Number.isNaN(number)) {\n        list.push({\n          value: number,\n          marker: typeof marker === 'string' ? { label: marker } : marker\n        })\n      }\n    }\n  }\n\n  return list.sort((prev, next) => prev.value - next.value)\n})\nconst hasMarkerLabel = computed(() => !!markerList.value.find(({ marker }) => marker.label))\nconst readonly = computed(() => props.loading && props.loadingLock)\nconst canDragRange = computed(() => props.range && props.rangeDraggable)\nconst className = computed(() => {\n  return {\n    [nh.b()]: true,\n    [nh.bs('vars')]: true,\n    [nh.bm('inherit')]: props.inherit,\n    [nh.bm(props.state)]: props.state !== 'default',\n    [nh.bm('vertical')]: props.vertical,\n    [nh.bm('sliding')]: sliding.value[1] || sliding.value[0],\n    [nh.bm('disabled')]: props.disabled,\n    [nh.bm('readonly')]: readonly.value,\n    [nh.bm('loading')]: props.loading,\n    [nh.bm('reverse')]: props.reverse,\n    [nh.bm('with-marker')]: hasMarkerLabel.value,\n    [nh.bm('flip-marker')]: props.flipMarker,\n    [nh.bm('hide-trigger')]: props.triggerFade && !triggerShow.value,\n    [nh.bm('range-draggable')]: canDragRange.value\n  }\n})\nconst stepDigit = computed(() => decimalLength(props.step))\n// 按每 step 为 1 算的最小值\nconst stepOneMin = computed(() => Math.ceil(Math.min(props.min, props.max) / props.step))\n// 按每 step 为 1 算的最大值\nconst stepOneMax = computed(() => Math.floor(Math.max(props.min, props.max) / props.step))\nconst truthValue = computed(() => {\n  return [\n    toFixed(stepOneValue.value[0] * props.step, stepDigit.value),\n    toFixed(stepOneValue.value[1] * props.step, stepDigit.value)\n  ]\n})\nconst stepOneTotal = computed(() => stepOneMax.value - stepOneMin.value || 1)\nconst triggerPercent = computed(() => {\n  return [toPercent(stepOneValue.value[0]), toPercent(stepOneValue.value[1])]\n})\nconst fillerStyle = computed(() => {\n  const { vertical, reverse } = props\n\n  return {\n    [vertical ? (reverse ? 'bottom' : 'top') : reverse ? 'right' : 'left']:\n      `${Math.min(triggerPercent.value[0], triggerPercent.value[1])}%`,\n    [vertical ? 'height' : 'width']:\n      `${Math.abs(triggerPercent.value[0] - triggerPercent.value[1])}%`\n  }\n})\nconst startTriggerStyle = computed(() => {\n  const { vertical, reverse } = props\n\n  return {\n    [reverse ? 'bottom' : 'top']: vertical ? `${triggerPercent.value[0]}%` : '50%',\n    [reverse ? 'right' : 'left']: vertical ? '50%' : `${triggerPercent.value[0]}%`,\n    zIndex: triggerType.value === TriggerType.START ? 1 : undefined,\n    transform: `translate(${reverse ? '' : '-'}50%, ${reverse ? '' : '-'}50%)`\n  }\n})\nconst endTriggerStyle = computed(() => {\n  const { vertical, reverse } = props\n\n  return {\n    [reverse ? 'bottom' : 'top']: vertical ? `${triggerPercent.value[1]}%` : '50%',\n    [reverse ? 'right' : 'left']: vertical ? '50%' : `${triggerPercent.value[1]}%`,\n    zIndex: triggerType.value === TriggerType.END ? 1 : undefined,\n    transform: `translate(${reverse ? '' : '-'}50%, ${reverse ? '' : '-'}50%)`\n  }\n})\nconst isDisabled = computed(() => props.disabled || readonly.value)\n\nconst commonSlotParams = shallowReadonly(\n  reactive({\n    values: truthValue,\n    sliding: sliding,\n    percent: triggerPercent,\n    disabled: toRef(props, 'disabled'),\n    loading: toRef(props, 'loading')\n  })\n)\n\nconst { target: filler } = useMoving({\n  disabled: computed(() => !canDragRange.value || isDisabled.value),\n  onStart: (state, event) => {\n    if (!track.value || event.button > 0) {\n      return false\n    }\n\n    clearTimeout(timer.sliding)\n    event.stopPropagation()\n    event.preventDefault()\n\n    trackRect = track.value.getBoundingClientRect()\n    state.startValue = stepOneValue.value[TriggerType.START]\n    state.endValue = stepOneValue.value[TriggerType.END]\n    state.valueDiff = (state.endValue as number) - (state.startValue as number)\n  },\n  onMove: (state, event) => {\n    if (!trackRect) {\n      return\n    }\n\n    event.preventDefault()\n\n    const vertical = props.vertical\n    const reverse = props.reverse\n    const delta = vertical ? state.deltaY : state.deltaX\n\n    for (let i = 0; i < 2; ++i) {\n      const type = i ? TriggerType.END : TriggerType.START\n      stepOneValue.value[type] =\n        (reverse ? -1 : 1) *\n          (delta / trackRect[vertical ? 'height' : 'width']) *\n          stepOneTotal.value +\n        Number(state[i ? 'endValue' : 'startValue'])\n    }\n\n    verifyValue()\n\n    if (stepOneValue.value[TriggerType.START] === stepOneMin.value) {\n      stepOneValue.value[TriggerType.END] =\n        stepOneValue.value[TriggerType.START] + (state.valueDiff as number)\n    } else if (stepOneValue.value[TriggerType.END] === stepOneMax.value) {\n      stepOneValue.value[TriggerType.START] =\n        stepOneValue.value[TriggerType.END] - (state.valueDiff as number)\n    }\n\n    emitChange('input')\n  },\n  onEnd: () => emitChange()\n})\n\nparseValue(props.value)\nverifyValue()\n\nlet lastValue: number | number[] = props.range\n  ? truthValue.value[0] > truthValue.value[1]\n    ? [truthValue.value[1], truthValue.value[0]]\n    : [truthValue.value[0], truthValue.value[1]]\n  : truthValue.value[1]\nlet lastInputValue: number | number[] = Array.isArray(lastValue) ? [...lastValue] : lastValue\n\nwatch(\n  () => props.value,\n  value => {\n    if (isEqualValue(lastValue, value)) {\n      return\n    }\n\n    parseValue(value)\n    verifyValue()\n  }\n)\nwatch(\n  () => props.step,\n  () => {\n    parseValue(props.value)\n    verifyValue()\n  }\n)\n\ndefineExpose({\n  idFor,\n  sliding,\n  track,\n  startTrigger,\n  endTrigger,\n  isValueInRange,\n  focus,\n  blur\n})\n\nfunction toPercent(value: string | number) {\n  return ((parseFloat(value as string) - stepOneMin.value) / stepOneTotal.value) * 100\n}\n\nfunction parseValue(value: number | number[]) {\n  if (props.range) {\n    const values = Array.isArray(value) ? value : [value, 100]\n\n    stepOneValue.value = [values[0] / props.step, values[1] / props.step]\n  } else {\n    stepOneValue.value = [stepOneMin.value, (Array.isArray(value) ? value[0] : value) / props.step]\n  }\n}\n\nfunction verifyValue() {\n  stepOneValue.value = stepOneValue.value.map(value => {\n    let computedValue = Math.max(stepOneMin.value, Math.min(stepOneMax.value, Math.round(value)))\n\n    if (props.markerOnly && markerList.value.length) {\n      let nearest = Infinity\n      let nearestMarker = 0\n\n      for (const { value } of markerList.value) {\n        const delta = Math.abs(computedValue * props.step - value)\n\n        if (nearest > delta) {\n          nearest = delta\n          nearestMarker = value\n        }\n      }\n\n      computedValue = nearestMarker / props.step\n    }\n\n    return computedValue\n  })\n}\n\nfunction setTriggerFade() {\n  if (hovered.value || sliding.value[0] || sliding.value[1]) return\n\n  triggerShow.value = false\n}\n\nfunction handlePointerEnter() {\n  clearTimeout(timer.hover)\n\n  timer.hover = setTimeout(() => {\n    hovered.value = true\n    triggerShow.value = true\n  }, hoverDelay.value)\n}\n\nfunction handlePointerLeave() {\n  clearTimeout(timer.hover)\n\n  timer.hover = setTimeout(() => {\n    hovered.value = false\n    setTriggerFade()\n  }, hoverDelay.value)\n}\n\nfunction emitChange(type: 'change' | 'input' = 'change', sync = props.sync) {\n  const [start, end] = truthValue.value\n  const value = props.range ? (start > end ? [end, start] : [start, end]) : end\n\n  if (type === 'change') {\n    if (isEqualValue(lastValue, value)) return\n\n    lastValue = value\n\n    if (!sync) {\n      lastInputValue = value\n\n      emit('update:value', value)\n      setFieldValue(value)\n    }\n\n    emitEvent(props.onChange, value)\n\n    if (!sync) {\n      validateField()\n    }\n  } else {\n    if (isEqualValue(lastInputValue, value)) return\n\n    lastInputValue = value\n\n    if (sync) {\n      emit('update:value', value)\n      setFieldValue(value)\n    }\n\n    emitEvent(props.onInput, value)\n\n    if (sync) {\n      validateField()\n    }\n  }\n}\n\nlet trackRect: DOMRect | null = null\n\nfunction computePointedValue(event: PointerEvent) {\n  if (!trackRect) return\n\n  const vertical = props.vertical\n  const reverse = props.reverse\n  const client = vertical ? event.clientY : event.clientX\n\n  stepOneValue.value[triggerType.value] =\n    (reverse ? -1 : 1) *\n      ((client - trackRect[vertical ? (reverse ? 'bottom' : 'top') : reverse ? 'right' : 'left']) /\n        trackRect[vertical ? 'height' : 'width']) *\n      stepOneTotal.value +\n    stepOneMin.value\n}\n\nfunction isEqualValue(prev: number | number[], current: number | number[]) {\n  if (Array.isArray(prev) && Array.isArray(current)) {\n    return prev[0] === current[0] && prev[1] === current[1]\n  }\n\n  return prev === current\n}\n\nconst throttleMove = throttle((event: PointerEvent) => {\n  if (!trackRect || props.disabled) return\n\n  event.preventDefault()\n\n  computePointedValue(event)\n  verifyValue()\n\n  if (startTrigger.value) {\n    startTrigger.value.updateTooltip()\n  }\n\n  if (endTrigger.value) {\n    endTrigger.value.updateTooltip()\n  }\n\n  // const [start, end] = truthValue.value\n  // const value = props.range ? (start > end ? [end, start] : [start, end]) : end\n\n  // if (!isEqualValue(lastValue, value)) {\n  //   lastValue = value\n  //   emitEvent(props.onInput, value)\n  // }\n  emitChange('input')\n})\n\nfunction handleTrackDown(event: PointerEvent) {\n  if (!track.value || isDisabled.value) return\n\n  clearTimeout(timer.sliding)\n  event.stopPropagation()\n  event.preventDefault()\n\n  trackRect = track.value.getBoundingClientRect()\n\n  if (props.range) {\n    const { vertical, reverse } = props\n    const client = vertical ? event.clientY : event.clientX\n    const downPercent =\n      ((reverse\n        ? trackRect[vertical ? 'bottom' : 'right'] - client\n        : client - trackRect[vertical ? 'top' : 'left']) /\n        trackRect[vertical ? 'height' : 'width']) *\n      100\n\n    triggerType.value =\n      Math.abs(downPercent - triggerPercent.value[0]) <\n      Math.abs(downPercent - triggerPercent.value[1])\n        ? TriggerType.START\n        : TriggerType.END\n  } else {\n    triggerType.value = TriggerType.END\n  }\n\n  sliding.value[triggerType.value] = true\n  triggerShow.value = true\n\n  computePointedValue(event)\n  verifyValue()\n  emitChange('input')\n\n  document.addEventListener('pointermove', handleMove)\n  document.addEventListener('pointerup', handleMoveEnd)\n}\n\nfunction handleMove(event: PointerEvent) {\n  throttleMove(event)\n}\n\nfunction handleMoveEnd() {\n  trackRect = null\n\n  document.removeEventListener('pointermove', handleMove)\n  document.removeEventListener('pointerup', handleMoveEnd)\n\n  emitChange()\n\n  timer.sliding = setTimeout(() => {\n    sliding.value[triggerType.value] = false\n    setTriggerFade()\n  }, 250)\n}\n\nfunction disableEvent<E extends Event>(event: E) {\n  if (event.cancelable) {\n    event.stopPropagation()\n    event.preventDefault()\n  }\n}\n\nfunction getPointStyle(value: number | string) {\n  const { vertical, reverse } = props\n  value = toPercent(value)\n\n  return {\n    [reverse ? 'bottom' : 'top']: vertical ? `${value}%` : '50%',\n    [reverse ? 'right' : 'left']: vertical ? '50%' : `${value}%`,\n    transform: `translate(${reverse ? '' : '-'}50%, ${reverse ? '' : '-'}50%)`\n  }\n}\n\nfunction getMarkerStyle(value: number | string) {\n  const { vertical, reverse } = props\n  value = toPercent(value)\n\n  return {\n    [reverse ? 'bottom' : 'top']: vertical ? `${value}%` : undefined,\n    [reverse ? 'right' : 'left']: vertical ? undefined : `${value}%`,\n    transform: `translate${vertical ? 'Y' : 'X'}(${reverse ? '' : '-'}50%)`\n  }\n}\n\nfunction isValueInRange(value: number | string) {\n  const number = parseFloat(value as string)\n\n  if (Number.isNaN(number)) return false\n\n  if (props.range) {\n    const min = Math.min(truthValue.value[0], truthValue.value[1])\n    const max = Math.max(truthValue.value[0], truthValue.value[1])\n\n    return number >= min && number <= max\n  } else {\n    return number <= truthValue.value[1]\n  }\n}\n\nfunction adjustValue(type: TriggerType, delta: number, emitEvent = false) {\n  stepOneValue.value[type] += delta\n\n  verifyValue()\n  emitEvent && emitChange()\n}\n\nfunction handlePlus(type: TriggerType, extra: 'ctrl' | 'shift' | 'alt') {\n  if (isDisabled.value) return\n\n  if (props.markerOnly || extra === 'alt') {\n    if (!markerList.value.length) return\n\n    const value = truthValue.value[type]\n\n    for (const { value: markerValue } of markerList.value) {\n      if (markerValue > value) {\n        stepOneValue.value[type] = markerValue\n        break\n      }\n    }\n\n    emitChange()\n  } else {\n    adjustValue(type, extra === 'shift' ? 5 : extra === 'ctrl' ? 20 : 1, true)\n  }\n}\n\nfunction handleMinus(type: TriggerType, extra: 'ctrl' | 'shift' | 'alt') {\n  if (isDisabled.value) return\n\n  if (props.markerOnly || extra === 'alt') {\n    if (!markerList.value.length) return\n\n    const value = truthValue.value[type]\n\n    for (let i = markerList.value.length - 1; i >= 0; --i) {\n      const { value: markerValue } = markerList.value[i]\n\n      if (markerValue < value) {\n        stepOneValue.value[type] = markerValue\n        break\n      }\n    }\n\n    emitChange()\n  } else {\n    adjustValue(type, extra === 'shift' ? -5 : extra === 'ctrl' ? -20 : -1)\n  }\n}\n\nfunction focus(options?: FocusOptions) {\n  ;(startTrigger.value || endTrigger.value)?.focus(options)\n}\n\nfunction blur() {\n  ;(startTrigger.value || endTrigger.value)?.blur()\n}\n</script>\n\n<template>\n  <div\n    :id=\"idFor\"\n    :class=\"className\"\n    tabindex=\"-1\"\n    role=\"group\"\n    :aria-labelledby=\"labelId\"\n    @pointerdown=\"handleTrackDown\"\n    @pointerenter=\"handlePointerEnter\"\n    @pointerleave=\"handlePointerLeave\"\n    @touchstart=\"disableEvent\"\n  >\n    <div :class=\"nh.be('container')\">\n      <div ref=\"track\" :class=\"nh.be('track')\"></div>\n      <slot name=\"filler\" v-bind=\"commonSlotParams\">\n        <Renderer :renderer=\"props.slots.filler\" :data=\"commonSlotParams\">\n          <div ref=\"filler\" :class=\"nh.be('filler')\" :style=\"fillerStyle\">\n            <div :class=\"nh.be('filler-inner')\"></div>\n          </div>\n        </Renderer>\n      </slot>\n      <template v-if=\"markerList.length\">\n        <div :class=\"nh.be('points')\">\n          <div\n            v-for=\"{ value, marker } in markerList\"\n            :key=\"value\"\n            :class=\"[nh.be('point'), isValueInRange(value) && nh.bem('point', 'in-range')]\"\n            :style=\"getPointStyle(value)\"\n          >\n            <slot\n              name=\"point\"\n              v-bind=\"commonSlotParams\"\n              :marker=\"marker\"\n              :marker-value=\"value\"\n              :in-range=\"isValueInRange(value)\"\n            >\n              <Renderer\n                :renderer=\"props.slots.point\"\n                :data=\"{\n                  ...commonSlotParams,\n                  marker,\n                  markerValue: value,\n                  inRange: isValueInRange(value)\n                }\"\n              >\n                <span :class=\"nh.be('dot')\"></span>\n              </Renderer>\n            </slot>\n          </div>\n        </div>\n        <div :class=\"nh.be('markers')\">\n          <template v-for=\"{ value, marker } in markerList\" :key=\"value\">\n            <div\n              v-bind=\"marker.attrs\"\n              :class=\"[nh.be('marker'), marker.class]\"\n              :style=\"[getMarkerStyle(value), marker.style as any]\"\n            >\n              <slot\n                name=\"marker\"\n                v-bind=\"commonSlotParams\"\n                :marker=\"marker\"\n                :marker-value=\"value\"\n                :in-range=\"isValueInRange(value)\"\n              >\n                <Renderer\n                  :renderer=\"props.slots.marker\"\n                  :data=\"{\n                    ...commonSlotParams,\n                    marker,\n                    markerValue: value,\n                    inRange: isValueInRange(value)\n                  }\"\n                >\n                  {{ marker.label }}\n                </Renderer>\n              </slot>\n            </div>\n          </template>\n        </div>\n      </template>\n      <SliderTrigger\n        v-if=\"props.range\"\n        ref=\"startTrigger\"\n        :value=\"truthValue[0]\"\n        :tip-transfer=\"props.tipTransfer\"\n        :hide-tip=\"props.hideTip\"\n        :vertical=\"props.vertical\"\n        :min=\"props.min\"\n        :max=\"props.max\"\n        :disabled=\"props.disabled\"\n        :loading=\"props.loading\"\n        :reverse=\"props.reverse\"\n        :sliding=\"sliding[0]\"\n        :tip-hover=\"props.tipHover\"\n        :style=\"startTriggerStyle\"\n        :tip-props=\"props.tipProps\"\n        @key-plus=\"handlePlus(0, $event)\"\n        @key-minus=\"handleMinus(0, $event)\"\n      >\n        <slot\n          v-if=\"slots.trigger || props.slots.trigger\"\n          name=\"trigger\"\n          type=\"start\"\n          :value=\"truthValue[0]\"\n          :sliding=\"sliding[0]\"\n          :percent=\"triggerPercent[0]\"\n          :disabled=\"props.disabled\"\n          :loading=\"props.loading\"\n        >\n          <Renderer\n            :renderer=\"props.slots.trigger\"\n            :data=\"{\n              type: 'start',\n              value: truthValue[0],\n              sliding: sliding[0],\n              percent: triggerPercent[0],\n              disabled: props.disabled,\n              loading: props.loading\n            }\"\n          ></Renderer>\n        </slot>\n        <template v-if=\"slots.tip || props.slots.tip\" #tip>\n          <slot\n            name=\"tip\"\n            type=\"start\"\n            :value=\"truthValue[0]\"\n            :sliding=\"sliding[0]\"\n            :percent=\"triggerPercent[0]\"\n            :disabled=\"props.disabled\"\n            :loading=\"props.loading\"\n          >\n            <Renderer\n              :renderer=\"props.slots.tip\"\n              :data=\"{\n                type: 'start',\n                value: truthValue[0],\n                sliding: sliding[0],\n                percent: triggerPercent[0],\n                disabled: props.disabled,\n                loading: props.loading\n              }\"\n            >\n              {{ truthValue[0] }}\n            </Renderer>\n          </slot>\n        </template>\n      </SliderTrigger>\n      <SliderTrigger\n        ref=\"endTrigger\"\n        :value=\"truthValue[1]\"\n        :tip-transfer=\"props.tipTransfer\"\n        :hide-tip=\"props.hideTip\"\n        :vertical=\"props.vertical\"\n        :min=\"props.min\"\n        :max=\"props.max\"\n        :disabled=\"props.disabled\"\n        :loading=\"props.loading\"\n        :reverse=\"props.reverse\"\n        :sliding=\"sliding[1]\"\n        :tip-hover=\"props.tipHover\"\n        :style=\"endTriggerStyle\"\n        :tip-props=\"props.tipProps\"\n        @key-plus=\"handlePlus(1, $event)\"\n        @key-minus=\"handleMinus(1, $event)\"\n      >\n        <slot\n          v-if=\"slots.trigger || props.slots.trigger\"\n          name=\"trigger\"\n          type=\"end\"\n          :value=\"truthValue[1]\"\n          :sliding=\"sliding[1]\"\n          :percent=\"triggerPercent[1]\"\n          :disabled=\"props.disabled\"\n          :loading=\"props.loading\"\n        >\n          <Renderer\n            :renderer=\"props.slots.trigger\"\n            :data=\"{\n              type: 'end',\n              value: truthValue[1],\n              sliding: sliding[1],\n              percent: triggerPercent[1],\n              disabled: props.disabled,\n              loading: props.loading\n            }\"\n          ></Renderer>\n        </slot>\n        <template v-if=\"slots.tip || props.slots.tip\" #tip>\n          <slot\n            name=\"tip\"\n            type=\"end\"\n            :value=\"truthValue[1]\"\n            :sliding=\"sliding[1]\"\n            :percent=\"triggerPercent[1]\"\n            :disabled=\"props.disabled\"\n            :loading=\"props.loading\"\n          >\n            <Renderer\n              :renderer=\"props.slots.tip\"\n              :data=\"{\n                type: 'end',\n                value: truthValue[1],\n                sliding: sliding[1],\n                percent: triggerPercent[1],\n                disabled: props.disabled,\n                loading: props.loading\n              }\"\n            >\n              {{ truthValue[1] }}\n            </Renderer>\n          </slot>\n        </template>\n      </SliderTrigger>\n    </div>\n  </div>\n</template>\n"],"names":["idFor","state","labelId","disabled","loading","validateField","getFieldValue","setFieldValue","useFieldStore","focus","props","useProps","__props","createStateProp","value","emit","__emit","slots","_useSlots","nh","useNameHelper","hoverDelay","useHoverDelay","timer","useSetTimeout","stepOneValue","ref","sliding","triggerType","hovered","triggerShow","track","startTrigger","endTrigger","markerList","computed","markers","list","raw","marker","number","prev","next","hasMarkerLabel","readonly","canDragRange","className","stepDigit","decimalLength","stepOneMin","stepOneMax","truthValue","toFixed","stepOneTotal","triggerPercent","toPercent","fillerStyle","vertical","reverse","startTriggerStyle","endTriggerStyle","isDisabled","commonSlotParams","shallowReadonly","reactive","toRef","filler","useMoving","event","trackRect","delta","i","type","verifyValue","emitChange","parseValue","lastValue","lastInputValue","watch","isEqualValue","__expose","isValueInRange","blur","values","computedValue","nearest","nearestMarker","setTriggerFade","handlePointerEnter","handlePointerLeave","sync","start","end","emitEvent","computePointedValue","client","current","throttleMove","throttle","handleTrackDown","downPercent","handleMove","handleMoveEnd","disableEvent","getPointStyle","getMarkerStyle","min","max","adjustValue","handlePlus","extra","markerValue","handleMinus","options","_a"],"mappings":"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"}