{"version":3,"file":"Range.mjs","sources":["../../../../../../packages/vue-components/vc-slider/src/Range.tsx"],"sourcesContent":["// eslint-disable-next-line ts/ban-ts-comment\n// @ts-nocheck\nimport {\n  BaseMixin,\n  classNames,\n  hasProp,\n  initDefaultProps,\n  PropTypes,\n  withUndefined,\n} from '@antdv/utils';\n\nimport { defineComponent } from 'vue';\nimport createSlider from './common/createSlider';\nimport Track from './common/Track';\nimport * as utils from './utils';\n\nfunction trimAlignValue({\n  value,\n  handle,\n  bounds,\n  props,\n}: {\n  value: number;\n  handle: number;\n  bounds?: number[];\n  props: any;\n}) {\n  const { allowCross, pushable } = props;\n  const thershold = Number(pushable);\n  const valInRange = utils.ensureValueInRange(value, props);\n  let valNotConflict = valInRange;\n  if (!allowCross && handle != null && bounds !== undefined) {\n    if (handle > 0 && valInRange <= bounds[handle - 1] + thershold)\n      valNotConflict = bounds[handle - 1] + thershold;\n\n    if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold)\n      valNotConflict = bounds[handle + 1] - thershold;\n  }\n  return utils.ensureValuePrecision(valNotConflict, props);\n}\n\nconst rangeProps = {\n  defaultValue: PropTypes.arrayOf(PropTypes.number),\n  value: PropTypes.arrayOf(PropTypes.number),\n  count: Number,\n  pushable: withUndefined(PropTypes.oneOfType([PropTypes.looseBool, PropTypes.number])),\n  allowCross: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  reverse: { type: Boolean, default: undefined },\n  tabindex: PropTypes.arrayOf(PropTypes.number),\n  prefixCls: String,\n  min: Number,\n  max: Number,\n  autofocus: { type: Boolean, default: undefined },\n  ariaLabelGroupForHandles: Array,\n  ariaLabelledByGroupForHandles: Array,\n  ariaValueTextFormatterGroupForHandles: Array,\n  draggableTrack: { type: Boolean, default: undefined },\n};\nconst Range = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'Range',\n  mixins: [BaseMixin],\n  inheritAttrs: false,\n  props: initDefaultProps(rangeProps, {\n    count: 1,\n    allowCross: true,\n    pushable: false,\n    tabindex: [],\n    draggableTrack: false,\n    ariaLabelGroupForHandles: [],\n    ariaLabelledByGroupForHandles: [],\n    ariaValueTextFormatterGroupForHandles: [],\n  }),\n  emits: ['beforeChange', 'afterChange', 'change'],\n  displayName: 'Range',\n  data() {\n    const { count, min, max } = this;\n    const initialValue = Array(...Array(count + 1)).map(() => min);\n    const defaultValue = hasProp(this, 'defaultValue') ? this.defaultValue : initialValue;\n    let { value } = this;\n    if (value === undefined)\n      value = defaultValue;\n\n    const bounds = value.map((v, i) => trimAlignValue({\n      value: v,\n      handle: i,\n      props: this.$props,\n    }),\n    );\n    const recent = bounds[0] === max ? 0 : bounds.length - 1;\n    return {\n      sHandle: null,\n      recent,\n      bounds,\n    };\n  },\n  watch: {\n    value: {\n      handler(val) {\n        const { bounds } = this;\n        this.setChangeValue(val || bounds);\n      },\n      deep: true,\n    },\n    min() {\n      const { value } = this;\n      this.setChangeValue(value || this.bounds);\n    },\n    max() {\n      const { value } = this;\n      this.setChangeValue(value || this.bounds);\n    },\n  },\n  methods: {\n    setChangeValue(value) {\n      const { bounds } = this;\n      let nextBounds = value.map((v, i) => trimAlignValue({\n        value: v,\n        handle: i,\n        bounds,\n        props: this.$props,\n      }),\n      );\n      if (bounds.length === nextBounds.length) {\n        if (nextBounds.every((v, i) => v === bounds[i]))\n          return null;\n      } else {\n        nextBounds = value.map((v, i) => trimAlignValue({\n          value: v,\n          handle: i,\n          props: this.$props,\n        }),\n        );\n      }\n\n      this.setState({ bounds: nextBounds });\n\n      if (value.some(v => utils.isValueOutOfRange(v, this.$props))) {\n        const newValues = value.map((v) => {\n          return utils.ensureValueInRange(v, this.$props);\n        });\n        this.$emit('change', newValues);\n      }\n    },\n    onChange(state) {\n      const isNotControlled = !hasProp(this, 'value');\n      if (isNotControlled) {\n        this.setState(state);\n      } else {\n        const controlledState = {};\n\n        ['sHandle', 'recent'].forEach((item) => {\n          if (state[item] !== undefined)\n            controlledState[item] = state[item];\n        });\n\n        if (Object.keys(controlledState).length)\n          this.setState(controlledState);\n      }\n\n      const data = { ...this.$data, ...state };\n      const changedValue = data.bounds;\n      this.$emit('change', changedValue);\n    },\n\n    positionGetValue(position) {\n      const bounds = this.getValue();\n      const value = this.calcValueByPos(position);\n      const closestBound = this.getClosestBound(value);\n      const index = this.getBoundNeedMoving(value, closestBound);\n      const prevValue = bounds[index];\n      if (value === prevValue) return null;\n\n      const nextBounds = [...bounds];\n      nextBounds[index] = value;\n      return nextBounds;\n    },\n    onStart(position) {\n      const { bounds } = this;\n      this.$emit('beforeChange', bounds);\n\n      const value = this.calcValueByPos(position);\n      this.startValue = value;\n      this.startPosition = position;\n\n      const closestBound = this.getClosestBound(value);\n      this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n\n      this.setState({\n        sHandle: this.prevMovedHandleIndex,\n        recent: this.prevMovedHandleIndex,\n      });\n\n      const prevValue = bounds[this.prevMovedHandleIndex];\n      if (value === prevValue) return;\n      const nextBounds = [...bounds];\n      nextBounds[this.prevMovedHandleIndex] = value;\n      this.onChange({ bounds: nextBounds });\n    },\n    onEnd(force) {\n      const { sHandle } = this;\n      this.removeDocumentEvents();\n      if (!sHandle)\n        this.dragTrack = false;\n\n      if (sHandle !== null || force)\n        this.$emit('afterChange', this.bounds);\n\n      this.setState({ sHandle: null });\n    },\n    onMove(e, position, dragTrack, startBounds) {\n      utils.pauseEvent(e);\n      const { $data: state, $props: props } = this;\n      const maxValue = props.max || 100;\n      const minValue = props.min || 0;\n      if (dragTrack) {\n        let pos = props.vertical ? -position : position;\n        pos = props.reverse ? -pos : pos;\n        const max = maxValue - Math.max(...startBounds);\n        const min = minValue - Math.min(...startBounds);\n        const ratio = Math.min(Math.max(pos / (this.getSliderLength() / 100), min), max);\n        const nextBounds = startBounds.map(v =>\n          Math.floor(Math.max(Math.min(v + ratio, maxValue), minValue)),\n        );\n        if (state.bounds.map((c, i) => c === nextBounds[i]).some(c => !c)) {\n          this.onChange({\n            bounds: nextBounds,\n          });\n        }\n        return;\n      }\n      const { bounds, sHandle } = this;\n      const value = this.calcValueByPos(position);\n      const oldValue = bounds[sHandle];\n      if (value === oldValue) return;\n\n      this.moveTo(value);\n    },\n    onKeyboard(e) {\n      const { reverse, vertical } = this.$props;\n      const valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n      if (valueMutator) {\n        utils.pauseEvent(e);\n        const { bounds, sHandle } = this;\n        const oldValue = bounds[sHandle === null ? this.recent : sHandle];\n        const mutatedValue = valueMutator(oldValue, this.$props);\n        const value = trimAlignValue({\n          value: mutatedValue,\n          handle: sHandle,\n          bounds,\n          props: this.$props,\n        });\n        if (value === oldValue) return;\n        const isFromKeyboardEvent = true;\n        this.moveTo(value, isFromKeyboardEvent);\n      }\n    },\n    getClosestBound(value) {\n      const { bounds } = this;\n      let closestBound = 0;\n      for (let i = 1; i < bounds.length - 1; i += 1) {\n        if (value >= bounds[i])\n          closestBound = i;\n      }\n      if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value))\n        closestBound += 1;\n\n      return closestBound;\n    },\n    getBoundNeedMoving(value, closestBound) {\n      const { bounds, recent } = this;\n      let boundNeedMoving = closestBound;\n      const isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n      if (isAtTheSamePoint && bounds[recent] === bounds[closestBound])\n        boundNeedMoving = recent;\n\n      if (isAtTheSamePoint && value !== bounds[closestBound + 1])\n        boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n\n      return boundNeedMoving;\n    },\n    getLowerBound() {\n      return this.bounds[0];\n    },\n    getUpperBound() {\n      const { bounds } = this;\n      return bounds[bounds.length - 1];\n    },\n    /**\n     * Returns an array of possible slider points, taking into account both\n     * `marks` and `step`. The result is cached.\n     */\n    getPoints() {\n      const { marks, step, min, max } = this;\n      const cache = this.internalPointsCache;\n      if (!cache || cache.marks !== marks || cache.step !== step) {\n        const pointsObject = { ...marks };\n        if (step !== null) {\n          for (let point = min; point <= max; point += step)\n            pointsObject[point] = point;\n        }\n        const points = Object.keys(pointsObject).map(Number.parseFloat);\n        points.sort((a, b) => a - b);\n        this.internalPointsCache = { marks, step, points };\n      }\n      return this.internalPointsCache.points;\n    },\n\n    moveTo(value, isFromKeyboardEvent) {\n      const nextBounds = [...this.bounds];\n      const { sHandle, recent } = this;\n      const handle = sHandle === null ? recent : sHandle;\n      nextBounds[handle] = value;\n      let nextHandle = handle;\n      if (this.$props.pushable !== false) {\n        this.pushSurroundingHandles(nextBounds, nextHandle);\n      } else if (this.$props.allowCross) {\n        nextBounds.sort((a, b) => a - b);\n        nextHandle = nextBounds.indexOf(value);\n      }\n      this.onChange({\n        recent: nextHandle,\n        sHandle: nextHandle,\n        bounds: nextBounds,\n      });\n      if (isFromKeyboardEvent) {\n        // known problem: because setState is async,\n        // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n        // cause onBeforeChange and onAfterChange receive wrong value.\n        // here use setState callback to hack，but not elegant\n        this.$emit('afterChange', nextBounds);\n        this.setState({}, () => {\n          this.handlesRefs[nextHandle].focus();\n        });\n        this.onEnd();\n      }\n    },\n\n    pushSurroundingHandles(bounds, handle) {\n      const value = bounds[handle];\n      const { pushable } = this;\n      const threshold = Number(pushable);\n\n      let direction = 0;\n      if (bounds[handle + 1] - value < threshold)\n        direction = +1; // push to right\n\n      if (value - bounds[handle - 1] < threshold)\n        direction = -1; // push to left\n\n      if (direction === 0)\n        return;\n\n      const nextHandle = handle + direction;\n      const diffToNext = direction * (bounds[nextHandle] - value);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // revert to original value if pushing is impossible\n        bounds[handle] = bounds[nextHandle] - direction * threshold;\n      }\n    },\n    pushHandle(bounds, handle, direction, amount) {\n      const originalValue = bounds[handle];\n      let currentValue = bounds[handle];\n      while (direction * (currentValue - originalValue) < amount) {\n        if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n          // can't push handle enough to create the needed `amount` gap, so we\n          // revert its position to the original value\n          bounds[handle] = originalValue;\n          return false;\n        }\n        currentValue = bounds[handle];\n      }\n      // the handle was pushed enough to create the needed `amount` gap\n      return true;\n    },\n    pushHandleOnePoint(bounds, handle, direction) {\n      const points = this.getPoints();\n      const pointIndex = points.indexOf(bounds[handle]);\n      const nextPointIndex = pointIndex + direction;\n      if (nextPointIndex >= points.length || nextPointIndex < 0) {\n        // reached the minimum or maximum available point, can't push anymore\n        return false;\n      }\n      const nextHandle = handle + direction;\n      const nextValue = points[nextPointIndex];\n      const { pushable } = this;\n      const threshold = Number(pushable);\n      const diffToNext = direction * (bounds[nextHandle] - nextValue);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // couldn't push next handle, so we won't push this one either\n        return false;\n      }\n      // push the handle\n      bounds[handle] = nextValue;\n      return true;\n    },\n    trimAlignValue(value) {\n      const { sHandle, bounds } = this;\n      return trimAlignValue({\n        value,\n        handle: sHandle,\n        bounds,\n        props: this.$props,\n      });\n    },\n    ensureValueNotConflict(handle, val, { allowCross, pushable: thershold }) {\n      const state = this.$data || {};\n      const { bounds } = state;\n      handle = handle === undefined ? state.sHandle : handle;\n      thershold = Number(thershold);\n\n      if (!allowCross && handle != null && bounds !== undefined) {\n        if (handle > 0 && val <= bounds[handle - 1] + thershold)\n          return bounds[handle - 1] + thershold;\n\n        if (handle < bounds.length - 1 && val >= bounds[handle + 1] - thershold)\n          return bounds[handle + 1] - thershold;\n      }\n\n      return val;\n    },\n    getTrack({ bounds, prefixCls, reverse, vertical, included, offsets, trackStyle }) {\n      return bounds.slice(0, -1).map((_, index) => {\n        const i = index + 1;\n        const trackClassName = classNames({\n          [`${prefixCls}-track`]: true,\n          [`${prefixCls}-track-${i}`]: true,\n        });\n        return (\n          <Track\n            class={trackClassName}\n            vertical={vertical}\n            reverse={reverse}\n            included={included}\n            offset={offsets[i - 1]}\n            length={offsets[i] - offsets[i - 1]}\n            style={trackStyle[index]}\n            key={i}\n          />\n        );\n      });\n    },\n    renderSlider() {\n      const {\n        sHandle,\n        bounds,\n        prefixCls,\n        vertical,\n        included,\n        disabled,\n        min,\n        max,\n        reverse,\n        handle,\n        defaultHandle,\n        trackStyle,\n        handleStyle,\n        tabindex,\n        ariaLabelGroupForHandles,\n        ariaLabelledByGroupForHandles,\n        ariaValueTextFormatterGroupForHandles,\n      } = this;\n      const handleGenerator = handle || defaultHandle;\n      const offsets = bounds.map(v => this.calcOffset(v));\n\n      const handleClassName = `${prefixCls}-handle`;\n      const handles = bounds.map((v, i) => {\n        let mergedTabIndex = tabindex[i] || 0;\n        if (disabled || tabindex[i] === null)\n          mergedTabIndex = null;\n\n        const dragging = sHandle === i;\n        return handleGenerator({\n          class: classNames({\n            [handleClassName]: true,\n            [`${handleClassName}-${i + 1}`]: true,\n            [`${handleClassName}-dragging`]: dragging,\n          }),\n          prefixCls,\n          vertical,\n          dragging,\n          offset: offsets[i],\n          value: v,\n          index: i,\n          tabindex: mergedTabIndex,\n          min,\n          max,\n          reverse,\n          disabled,\n          style: handleStyle[i],\n          // @ts-expect-error\n          ref: h => this.saveHandle(i, h),\n          onFocus: this.onFocus,\n          onBlur: this.onBlur,\n          ariaLabel: ariaLabelGroupForHandles[i],\n          ariaLabelledBy: ariaLabelledByGroupForHandles[i],\n          ariaValueTextFormatter: ariaValueTextFormatterGroupForHandles[i],\n        });\n      });\n\n      return {\n        tracks: this.getTrack({\n          bounds,\n          prefixCls,\n          reverse,\n          vertical,\n          included,\n          offsets,\n          trackStyle,\n        }),\n        handles,\n      };\n    },\n  },\n});\n\nexport default createSlider(Range);\n"],"names":["trimAlignValue","value","handle","bounds","props","allowCross","pushable","thershold","Number","valInRange","utils","valNotConflict","undefined","length","rangeProps","defaultValue","PropTypes","arrayOf","number","count","withUndefined","oneOfType","looseBool","type","Boolean","default","disabled","reverse","tabindex","prefixCls","String","min","max","autofocus","ariaLabelGroupForHandles","Array","ariaLabelledByGroupForHandles","ariaValueTextFormatterGroupForHandles","draggableTrack","Range","compatConfig","MODE","name","mixins","BaseMixin","inheritAttrs","initDefaultProps","emits","displayName","data","initialValue","map","hasProp","v","i","$props","recent","sHandle","watch","handler","val","setChangeValue","deep","methods","nextBounds","every","setState","some","newValues","ensureValueInRange","$emit","onChange","state","isNotControlled","controlledState","forEach","item","Object","keys","$data","changedValue","positionGetValue","position","getValue","calcValueByPos","closestBound","getClosestBound","index","getBoundNeedMoving","prevValue","onStart","startValue","startPosition","prevMovedHandleIndex","onEnd","force","removeDocumentEvents","dragTrack","onMove","e","startBounds","maxValue","minValue","pos","vertical","Math","ratio","getSliderLength","floor","c","oldValue","moveTo","onKeyboard","valueMutator","mutatedValue","isFromKeyboardEvent","abs","boundNeedMoving","isAtTheSamePoint","getLowerBound","getUpperBound","getPoints","marks","step","cache","internalPointsCache","pointsObject","point","points","parseFloat","sort","a","b","nextHandle","pushSurroundingHandles","indexOf","handlesRefs","focus","threshold","direction","diffToNext","pushHandle","amount","originalValue","currentValue","pushHandleOnePoint","pointIndex","nextPointIndex","nextValue","ensureValueNotConflict","getTrack","included","offsets","trackStyle","slice","_","trackClassName","classNames","_createVNode","Track","renderSlider","defaultHandle","handleStyle","handleGenerator","calcOffset","handleClassName","handles","mergedTabIndex","dragging","class","offset","style","ref","h","saveHandle","onFocus","onBlur","ariaLabel","ariaLabelledBy","ariaValueTextFormatter","tracks","createSlider"],"mappings":"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"}