{"version":3,"file":"createSlider.cjs","sources":["../../../../../../../packages/vue-components/vc-slider/src/common/createSlider.tsx"],"sourcesContent":["// eslint-disable-next-line ts/ban-ts-comment\n// @ts-nocheck\nimport {\n  addEventListenerWrap,\n  BaseMixin,\n  classNames,\n  devWarning,\n  getSlot,\n  initDefaultProps,\n  PropTypes,\n  supportsPassive,\n} from '@antdv/utils';\n\nimport { defineComponent } from 'vue';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\nimport Marks from './Marks';\nimport Steps from './Steps';\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n  // const displayName = `ComponentEnhancer(${Component.displayName})`\n  const propTypes = {\n    id: String,\n    min: Number,\n    max: Number,\n    step: Number,\n    marks: PropTypes.object,\n    included: { type: Boolean, default: undefined },\n    prefixCls: String,\n    disabled: { type: Boolean, default: undefined },\n    handle: Function,\n    dots: { type: Boolean, default: undefined },\n    vertical: { type: Boolean, default: undefined },\n    reverse: { type: Boolean, default: undefined },\n    minimumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n    maximumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n    handleStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n    trackStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n    railStyle: PropTypes.object,\n    dotStyle: PropTypes.object,\n    activeDotStyle: PropTypes.object,\n    autofocus: { type: Boolean, default: undefined },\n    draggableTrack: { type: Boolean, default: undefined },\n  };\n  return defineComponent({\n    compatConfig: { MODE: 3 },\n    name: 'CreateSlider',\n    mixins: [BaseMixin, Component],\n    inheritAttrs: false,\n    props: initDefaultProps(propTypes, {\n      prefixCls: 'rc-slider',\n      min: 0,\n      max: 100,\n      step: 1,\n      marks: {},\n      included: true,\n      disabled: false,\n      dots: false,\n      vertical: false,\n      reverse: false,\n      trackStyle: [{}],\n      handleStyle: [{}],\n      railStyle: {},\n      dotStyle: {},\n      activeDotStyle: {},\n    }),\n    emits: ['change', 'blur', 'focus'],\n    data() {\n      const { step, max, min } = this;\n      const isPointDiffEven = Number.isFinite(max - min) ? (max - min) % step === 0 : true;\n      devWarning(\n        step && Math.floor(step) === step ? isPointDiffEven : true,\n        `Slider[max] - Slider[min] (${max - min}) should be a multiple of Slider[step] (${step})`,\n      );\n      (this as any).handlesRefs = {};\n      return {};\n    },\n    mounted() {\n      this.$nextTick(() => {\n        // Snapshot testing cannot handle refs, so be sure to null-check this.\n        this.document = this.sliderRef && this.sliderRef.ownerDocument;\n        // this.setHandleRefs()\n        const { autofocus, disabled } = this;\n        if (autofocus && !disabled)\n          this.focus();\n      });\n    },\n    beforeUnmount() {\n      this.$nextTick(() => {\n        // if (super.componentWillUnmount) super.componentWillUnmount()\n        this.removeDocumentEvents();\n      });\n    },\n    methods: {\n      defaultHandle({ index, directives, className, style, ...restProps }) {\n        delete restProps.dragging;\n        if (restProps.value === null)\n          return null;\n\n        const handleProps = {\n          ...restProps,\n          class: className,\n          style,\n          key: index,\n        };\n        return <Handle {...handleProps} />;\n      },\n      onDown(e, position) {\n        let p = position;\n        const { draggableTrack, vertical: isVertical } = this.$props;\n        const { bounds } = this.$data;\n\n        const value = draggableTrack && this.positionGetValue ? this.positionGetValue(p) || [] : [];\n\n        const inPoint = utils.isEventFromHandle(e, this.handlesRefs);\n        this.dragTrack\n          = draggableTrack\n          && bounds.length >= 2\n          && !inPoint\n          && !value\n            .map((n, i) => {\n              const v = !i ? n >= bounds[i] : true;\n              return i === value.length - 1 ? n <= bounds[i] : v;\n            })\n            .some(c => !c);\n\n        if (this.dragTrack) {\n          this.dragOffset = p;\n          this.startBounds = [...bounds];\n        } else {\n          if (!inPoint) {\n            this.dragOffset = 0;\n          } else {\n            const handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n            this.dragOffset = p - handlePosition;\n            p = handlePosition;\n          }\n          this.onStart(p);\n        }\n      },\n      onMouseDown(e) {\n        if (e.button !== 0)\n          return;\n\n        this.removeDocumentEvents();\n        const isVertical = this.$props.vertical;\n        const position = utils.getMousePosition(isVertical, e);\n        this.onDown(e, position);\n        this.addDocumentMouseEvents();\n      },\n      onTouchStart(e) {\n        if (utils.isNotTouchEvent(e)) return;\n\n        const isVertical = this.vertical;\n        const position = utils.getTouchPosition(isVertical, e);\n        this.onDown(e, position);\n        this.addDocumentTouchEvents();\n        utils.pauseEvent(e);\n      },\n      onFocus(e) {\n        const { vertical } = this;\n        if (utils.isEventFromHandle(e, this.handlesRefs) && !this.dragTrack) {\n          const handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n          this.dragOffset = 0;\n          this.onStart(handlePosition);\n          utils.pauseEvent(e);\n          this.$emit('focus', e);\n        }\n      },\n      onBlur(e) {\n        // Prevent triggering blur when focus shifts from the slider handle to the slider container.\n        // This avoids ending the drag operation if the user clicks within the slider area.\n        if (this.sliderRef === e.relatedTarget) {\n          return;\n        }\n\n        if (!this.dragTrack)\n          this.onEnd();\n\n        this.$emit('blur', e);\n      },\n      onMouseUp() {\n        if (this.handlesRefs[this.prevMovedHandleIndex])\n          this.handlesRefs[this.prevMovedHandleIndex].clickFocus();\n      },\n      onMouseMove(e) {\n        if (!this.sliderRef) {\n          this.onEnd();\n          return;\n        }\n        const position = utils.getMousePosition(this.vertical, e);\n        this.onMove(e, position - this.dragOffset, this.dragTrack, this.startBounds);\n      },\n      onTouchMove(e) {\n        if (utils.isNotTouchEvent(e) || !this.sliderRef) {\n          this.onEnd();\n          return;\n        }\n\n        const position = utils.getTouchPosition(this.vertical, e);\n        this.onMove(e, position - this.dragOffset, this.dragTrack, this.startBounds);\n      },\n      onKeyDown(e) {\n        if (this.sliderRef && utils.isEventFromHandle(e, this.handlesRefs))\n          this.onKeyboard(e);\n      },\n      onClickMarkLabel(e, value) {\n        e.stopPropagation();\n        this.onChange({ sValue: value });\n        this.setState({ sValue: value }, () => this.onEnd(true));\n      },\n      getSliderStart() {\n        const slider = this.sliderRef;\n        const { vertical, reverse } = this;\n        const rect = slider.getBoundingClientRect();\n        if (vertical)\n          return reverse ? rect.bottom : rect.top;\n\n        return window.scrollX + (reverse ? rect.right : rect.left);\n      },\n      getSliderLength() {\n        const slider = this.sliderRef;\n        if (!slider)\n          return 0;\n\n        const coords = slider.getBoundingClientRect();\n        return this.vertical ? coords.height : coords.width;\n      },\n      addDocumentTouchEvents() {\n        // just work for Chrome iOS Safari and Android Browser\n        this.onTouchMoveListener = addEventListenerWrap(this.document, 'touchmove', this.onTouchMove);\n        this.onTouchUpListener = addEventListenerWrap(this.document, 'touchend', this.onEnd);\n      },\n      addDocumentMouseEvents() {\n        this.onMouseMoveListener = addEventListenerWrap(this.document, 'mousemove', this.onMouseMove);\n        this.onMouseUpListener = addEventListenerWrap(this.document, 'mouseup', this.onEnd);\n      },\n      removeDocumentEvents() {\n        this.onTouchMoveListener && this.onTouchMoveListener.remove();\n        this.onTouchUpListener && this.onTouchUpListener.remove();\n\n        this.onMouseMoveListener && this.onMouseMoveListener.remove();\n        this.onMouseUpListener && this.onMouseUpListener.remove();\n      },\n      focus() {\n        if (this.$props.disabled)\n          return;\n\n        this.handlesRefs[0]?.focus();\n      },\n\n      blur() {\n        if (this.$props.disabled)\n          return;\n\n        Object.keys(this.handlesRefs).forEach((key) => {\n          this.handlesRefs[key]?.blur?.();\n        });\n      },\n      calcValue(offset) {\n        const { vertical, min, max } = this;\n        const ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n        const value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n        return value;\n      },\n      calcValueByPos(position) {\n        const sign = this.reverse ? -1 : +1;\n        const pixelOffset = sign * (position - this.getSliderStart());\n        const nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n        return nextValue;\n      },\n      calcOffset(value) {\n        const { min, max } = this;\n        const ratio = (value - min) / (max - min);\n        return Math.max(0, ratio * 100);\n      },\n      saveSlider(slider) {\n        this.sliderRef = slider;\n      },\n      saveHandle(index, handle) {\n        this.handlesRefs[index] = handle;\n      },\n    },\n    render() {\n      const {\n        prefixCls,\n        marks,\n        dots,\n        step,\n        included,\n        disabled,\n        vertical,\n        reverse,\n        min,\n        max,\n        maximumTrackStyle,\n        railStyle,\n        dotStyle,\n        activeDotStyle,\n        id,\n      } = this;\n      const { class: className, style } = this.$attrs;\n      const { tracks, handles } = this.renderSlider();\n\n      const sliderClassName = classNames(prefixCls, className, {\n        [`${prefixCls}-with-marks`]: Object.keys(marks).length,\n        [`${prefixCls}-disabled`]: disabled,\n        [`${prefixCls}-vertical`]: vertical,\n        [`${prefixCls}-horizontal`]: !vertical,\n      });\n      const markProps = {\n        vertical,\n        marks,\n        included,\n        lowerBound: this.getLowerBound(),\n        upperBound: this.getUpperBound(),\n        max,\n        min,\n        reverse,\n        class: `${prefixCls}-mark`,\n        onClickLabel: disabled ? noop : this.onClickMarkLabel,\n      };\n      const touchEvents = {\n        [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: disabled\n          ? noop\n          : this.onTouchStart,\n      };\n      return (\n        <div\n          id={id}\n          ref={this.saveSlider}\n          tabindex=\"-1\"\n          class={sliderClassName}\n          {...touchEvents}\n          onMousedown={disabled ? noop : this.onMouseDown}\n          onMouseup={disabled ? noop : this.onMouseUp}\n          onKeydown={disabled ? noop : this.onKeyDown}\n          onFocus={disabled ? noop : this.onFocus}\n          onBlur={disabled ? noop : this.onBlur}\n          style={style}\n        >\n          <div\n            class={`${prefixCls}-rail`}\n            style={{\n              ...maximumTrackStyle,\n              ...railStyle,\n            }}\n          />\n          {tracks}\n          <Steps\n            prefixCls={prefixCls}\n            vertical={vertical}\n            reverse={reverse}\n            marks={marks}\n            dots={dots}\n            step={step}\n            included={included}\n            lowerBound={this.getLowerBound()}\n            upperBound={this.getUpperBound()}\n            max={max}\n            min={min}\n            dotStyle={dotStyle}\n            activeDotStyle={activeDotStyle}\n          />\n          {handles}\n          <Marks {...markProps} v-slots={{ mark: this.$slots.mark }} />\n          {getSlot(this)}\n        </div>\n      );\n    },\n  });\n}\n"],"names":["noop","createSlider","Component","propTypes","id","String","min","Number","max","step","marks","PropTypes","object","included","type","Boolean","default","undefined","prefixCls","disabled","handle","Function","dots","vertical","reverse","minimumTrackStyle","maximumTrackStyle","handleStyle","oneOfType","arrayOf","trackStyle","railStyle","dotStyle","activeDotStyle","autofocus","draggableTrack","defineComponent","compatConfig","MODE","name","mixins","BaseMixin","inheritAttrs","props","initDefaultProps","emits","data","isPointDiffEven","isFinite","devWarning","Math","floor","handlesRefs","mounted","$nextTick","document","sliderRef","ownerDocument","focus","beforeUnmount","removeDocumentEvents","methods","defaultHandle","index","directives","className","style","restProps","dragging","value","handleProps","class","key","_createVNode","Handle","onDown","e","position","p","isVertical","$props","bounds","$data","positionGetValue","inPoint","utils","dragTrack","length","map","n","i","v","some","c","dragOffset","startBounds","handlePosition","target","onStart","onMouseDown","button","addDocumentMouseEvents","onTouchStart","addDocumentTouchEvents","onFocus","$emit","onBlur","relatedTarget","onEnd","onMouseUp","prevMovedHandleIndex","clickFocus","onMouseMove","onMove","onTouchMove","onKeyDown","onKeyboard","onClickMarkLabel","stopPropagation","onChange","sValue","setState","getSliderStart","slider","rect","getBoundingClientRect","bottom","top","window","scrollX","right","left","getSliderLength","coords","height","width","onTouchMoveListener","addEventListenerWrap","onTouchUpListener","onMouseMoveListener","onMouseUpListener","remove","blur","Object","keys","forEach","calcValue","offset","ratio","abs","calcValueByPos","sign","pixelOffset","nextValue","trimAlignValue","calcOffset","saveSlider","saveHandle","render","$attrs","tracks","handles","renderSlider","sliderClassName","classNames","markProps","lowerBound","getLowerBound","upperBound","getUpperBound","onClickLabel","touchEvents","supportsPassive","Steps","Marks","mark","$slots","getSlot"],"mappings":"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"}