{"version":3,"file":"use-slider.mjs","sources":["../../../../../../packages/components/ui/slider/use-slider.ts"],"sourcesContent":["import { h, ref, computed, onBeforeUnmount, getCurrentInstance, PropType } from 'vue'\n\nimport { TouchPan } from '@vue-cesium/directives'\n\nimport useDark, { useDarkProps } from '@vue-cesium/composables/private/use-dark'\nimport { useFormProps, useFormInject } from '@vue-cesium/composables/private/use-form'\n\nimport { between } from '@vue-cesium/utils/private/format'\nimport { position } from '@vue-cesium/utils/private/event'\nimport { isNumber, isObject } from '@vue-cesium/utils/util'\nimport { hDir } from '@vue-cesium/utils/private/render'\n\nconst markerPrefixClass = 'vc-slider__marker-labels'\nconst defaultMarkerConvertFn = v => ({ value: v })\nconst defaultMarkerLabelRenderFn = ({ marker }) =>\n  h(\n    'div',\n    {\n      key: marker.value,\n      style: marker.style,\n      class: marker.classes\n    },\n    marker.label\n  )\n\n// PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP\nexport const keyCodes = [34, 37, 40, 33, 39, 38]\n\nexport const useSliderProps = {\n  ...useDarkProps,\n  ...useFormProps,\n\n  min: {\n    type: Number,\n    default: 0\n  },\n  max: {\n    type: Number,\n    default: 100\n  },\n  innerMin: Number,\n  innerMax: Number,\n\n  step: {\n    type: Number,\n    default: 1,\n    validator: v => v >= 0\n  },\n\n  snap: Boolean,\n\n  vertical: Boolean,\n  reverse: Boolean,\n\n  hideSelection: Boolean,\n\n  color: String,\n  markerLabelsClass: String,\n\n  label: Boolean,\n  labelColor: String,\n  labelTextColor: String,\n  labelAlways: Boolean,\n  switchLabelSide: Boolean,\n\n  markers: [Boolean, Number],\n  markerLabels: [Boolean, Array, Object, Function],\n  switchMarkerLabelsSide: Boolean,\n\n  trackImg: String,\n  trackColor: String,\n  innerTrackImg: String,\n  innerTrackColor: String,\n  selectionColor: String,\n  selectionImg: String,\n\n  thumbSize: {\n    type: String,\n    default: '20px'\n  },\n  trackSize: {\n    type: String,\n    default: '4px'\n  },\n\n  disable: Boolean,\n  readonly: Boolean,\n  dense: Boolean,\n\n  tabindex: [String, Number],\n\n  thumbColor: String,\n  thumbPath: {\n    type: String,\n    default: 'M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0'\n  }\n}\n\nexport const useSliderEmits = ['pan', 'update:modelValue', 'change']\n\nexport default function ({ updateValue, updatePosition, getDragging, formAttrs }) {\n  const { props, emit, slots, proxy } = getCurrentInstance() as any\n  const isDark = useDark(props)\n\n  const injectFormInput = useFormInject(formAttrs)\n\n  const active = ref(false)\n  const preventFocus = ref(false)\n  const focus = ref(false)\n  const dragging = ref(false)\n\n  const axis = computed(() => (props.vertical === true ? '--v' : '--h'))\n  const labelSide = computed(() => '-' + (props.switchLabelSide === true ? 'switched' : 'standard'))\n\n  const isReversed = computed(() => props.reverse === true)\n\n  const innerMin = computed(() => (isNaN(props.innerMin) === true || props.innerMin < props.min ? props.min : props.innerMin))\n  const innerMax = computed(() => (isNaN(props.innerMax) === true || props.innerMax > props.max ? props.max : props.innerMax))\n\n  const editable = computed(() => props.disable !== true && props.readonly !== true && innerMin.value < innerMax.value)\n\n  const decimals = computed(() => (String(props.step).trim().split('.')[1] || '').length)\n  const step = computed(() => (props.step === 0 ? 1 : props.step))\n  const tabindex = computed(() => (editable.value === true ? props.tabindex || 0 : -1))\n\n  const trackLen = computed(() => props.max - props.min)\n  const innerBarLen = computed(() => innerMax.value - innerMin.value)\n\n  const innerMinRatio = computed(() => convertModelToRatio(innerMin.value))\n  const innerMaxRatio = computed(() => convertModelToRatio(innerMax.value))\n\n  const positionProp = computed(() =>\n    props.vertical === true ? (isReversed.value === true ? 'bottom' : 'top') : isReversed.value === true ? 'right' : 'left'\n  )\n\n  const sizeProp = computed(() => (props.vertical === true ? 'height' : 'width'))\n  const thicknessProp = computed(() => (props.vertical === true ? 'width' : 'height'))\n  const orientation = computed(() => (props.vertical === true ? 'vertical' : 'horizontal'))\n\n  const attributes = computed(() => {\n    const acc = {\n      role: 'slider',\n      'aria-valuemin': innerMin.value,\n      'aria-valuemax': innerMax.value,\n      'aria-orientation': orientation.value,\n      'data-step': props.step\n    }\n\n    if (props.disable === true) {\n      acc['aria-disabled'] = 'true'\n    } else if (props.readonly === true) {\n      acc['aria-readonly'] = 'true'\n    }\n\n    return acc\n  })\n\n  const classes = computed(\n    () =>\n      `vc-slider vc-slider${axis.value} vc-slider--${active.value === true ? '' : 'in'}active inline no-wrap ` +\n      (props.vertical === true ? 'row' : 'column') +\n      (props.disable === true ? ' disabled' : ' vc-slider--enabled' + (editable.value === true ? ' vc-slider--editable' : '')) +\n      ((focus.value as any) === 'both' ? ' vc-slider--focus' : '') +\n      (props.label || props.labelAlways === true ? ' vc-slider--label' : '') +\n      (props.labelAlways === true ? ' vc-slider--label-always' : '') +\n      (isDark.value === true ? ' vc-slider--dark' : '') +\n      (props.dense === true ? ' vc-slider--dense vc-slider--dense' + axis.value : '')\n  )\n\n  function getPositionClass(name) {\n    const cls = 'vc-slider__' + name\n    return `${cls} ${cls}${axis.value} ${cls}${axis.value}${labelSide.value}`\n  }\n  function getAxisClass(name) {\n    const cls = 'vc-slider__' + name\n    return `${cls} ${cls}${axis.value}`\n  }\n\n  const selectionBarClass = computed(() => {\n    const color = props.selectionColor || props.color\n    return 'vc-slider__selection absolute' + (color !== void 0 ? ` text-${color}` : '')\n  })\n  const markerClass = computed(() => getAxisClass('markers') + ' absolute overflow-hidden')\n  const trackContainerClass = computed(() => getAxisClass('track-container'))\n  const pinClass = computed(() => getPositionClass('pin'))\n  const labelClass = computed(() => getPositionClass('label'))\n  const textContainerClass = computed(() => getPositionClass('text-container'))\n  const markerLabelsContainerClass = computed(\n    () => getPositionClass('marker-labels-container') + (props.markerLabelsClass !== void 0 ? ` ${props.markerLabelsClass}` : '')\n  )\n\n  const trackClass = computed(() => 'vc-slider__track relative-position no-outline' + (props.trackColor !== void 0 ? ` bg-${props.trackColor}` : ''))\n  const trackStyle = computed(() => {\n    const acc = { [thicknessProp.value]: props.trackSize }\n    if (props.trackImg !== void 0) {\n      acc.backgroundImage = `url(${props.trackImg}) !important`\n    }\n    return acc\n  })\n\n  const innerBarClass = computed(() => 'vc-slider__inner absolute' + (props.innerTrackColor !== void 0 ? ` bg-${props.innerTrackColor}` : ''))\n  const innerBarStyle = computed(() => {\n    const acc = {\n      [positionProp.value]: `${100 * innerMinRatio.value}%`,\n      [sizeProp.value]: `${100 * (innerMaxRatio.value - innerMinRatio.value)}%`\n    }\n    if (props.innerTrackImg !== void 0) {\n      acc.backgroundImage = `url(${props.innerTrackImg}) !important`\n    }\n    return acc\n  })\n\n  function convertRatioToModel(ratio) {\n    const { min, max, step } = props\n    let model = min + ratio * (max - min)\n\n    if (step > 0) {\n      const modulo = (model - min) % step\n      model += (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0) - modulo\n    }\n\n    if (decimals.value > 0) {\n      model = parseFloat(model.toFixed(decimals.value))\n    }\n\n    return between(model, innerMin.value, innerMax.value)\n  }\n\n  function convertModelToRatio(model) {\n    return trackLen.value === 0 ? 0 : (model - props.min) / trackLen.value\n  }\n\n  function getDraggingRatio(evt, dragging) {\n    const pos = position(evt),\n      val =\n        props.vertical === true\n          ? between((pos.top - dragging.top) / dragging.height, 0, 1)\n          : between((pos.left - dragging.left) / dragging.width, 0, 1)\n\n    return between(isReversed.value === true ? 1.0 - val : val, innerMinRatio.value, innerMaxRatio.value)\n  }\n\n  const markerStep = computed(() => (isNumber(props.markers) === true ? props.markers : step.value))\n\n  const markerTicks = computed(() => {\n    const acc = []\n    const step = markerStep.value\n    const max = props.max\n\n    let value = props.min\n    do {\n      acc.push(value)\n      value += step\n    } while (value < max)\n\n    acc.push(max)\n    return acc\n  })\n\n  const markerLabelClass = computed(() => {\n    const prefix = ` ${markerPrefixClass}${axis.value}-`\n    return (\n      markerPrefixClass +\n      `${prefix}${props.switchMarkerLabelsSide === true ? 'switched' : 'standard'}` +\n      `${prefix}${isReversed.value === true ? 'rtl' : 'ltr'}`\n    )\n  })\n\n  const markerLabelsList = computed(() => {\n    if (props.markerLabels === false) {\n      return null\n    }\n\n    return getMarkerList(props.markerLabels).map((entry, index) => ({\n      index,\n      value: entry.value,\n      label: entry.label || entry.value,\n      classes: markerLabelClass.value + (entry.classes !== void 0 ? ' ' + entry.classes : ''),\n      style: {\n        ...getMarkerLabelStyle(entry.value),\n        ...(entry.style || {})\n      }\n    }))\n  })\n\n  const markerScope = computed(() => ({\n    markerList: markerLabelsList.value,\n    markerMap: markerLabelsMap.value,\n    classes: markerLabelClass.value, // TODO ts definition\n    getStyle: getMarkerLabelStyle\n  }))\n\n  const markerStyle = computed(() => {\n    if (innerBarLen.value !== 0) {\n      const size = (100 * markerStep.value) / innerBarLen.value\n\n      return {\n        ...innerBarStyle.value,\n        backgroundSize: props.vertical === true ? `2px ${size}%` : `${size}% 2px`\n      }\n    }\n\n    return null\n  })\n\n  function getMarkerList(def) {\n    if (def === false) {\n      return null\n    }\n\n    if (def === true) {\n      return markerTicks.value.map(defaultMarkerConvertFn)\n    }\n\n    if (typeof def === 'function') {\n      return markerTicks.value.map(value => {\n        const item = def(value)\n        return isObject(item) === true ? { ...item, value } : { value, label: item }\n      })\n    }\n\n    const filterFn = ({ value }) => value >= props.min && value <= props.max\n\n    if (Array.isArray(def) === true) {\n      return def.map(item => (isObject(item) === true ? item : { value: item })).filter(filterFn)\n    }\n\n    return Object.keys(def)\n      .map(key => {\n        const item = def[key]\n        const value = Number(key)\n        return isObject(item) === true ? { ...item, value } : { value, label: item }\n      })\n      .filter(filterFn)\n  }\n\n  function getMarkerLabelStyle(val) {\n    return { [positionProp.value]: `${(100 * (val - props.min)) / trackLen.value}%` }\n  }\n\n  const markerLabelsMap = computed(() => {\n    if (props.markerLabels === false) {\n      return null\n    }\n\n    const acc = {}\n    markerLabelsList.value.forEach(entry => {\n      acc[entry.value] = entry\n    })\n    return acc\n  })\n\n  function getMarkerLabelsContent() {\n    if (slots['marker-label-group'] !== void 0) {\n      return slots['marker-label-group'](markerScope.value)\n    }\n\n    const fn = slots['marker-label'] || defaultMarkerLabelRenderFn\n    return markerLabelsList.value.map(marker =>\n      fn({\n        marker,\n        ...markerScope.value\n      })\n    )\n  }\n\n  const panDirective = computed(() => {\n    // if editable.value === true\n    return [\n      [\n        TouchPan,\n        onPan,\n        void 0,\n        {\n          [orientation.value]: true,\n          prevent: true,\n          stop: true,\n          mouse: true,\n          mouseAllDir: true\n        }\n      ]\n    ]\n  })\n\n  function onPan(event) {\n    if (event.isFinal === true) {\n      if (dragging.value !== void 0) {\n        updatePosition(event.evt)\n        // only if touch, because we also have mousedown/up:\n        event.touch === true && updateValue(true)\n        dragging.value = void 0\n        emit('pan', 'end')\n      }\n      active.value = false\n      focus.value = false\n    } else if (event.isFirst === true) {\n      dragging.value = getDragging(event.evt)\n      updatePosition(event.evt)\n      updateValue()\n      active.value = true\n      emit('pan', 'start')\n    } else {\n      updatePosition(event.evt)\n      updateValue()\n    }\n  }\n\n  function onBlur() {\n    focus.value = false\n  }\n\n  function onActivate(evt) {\n    updatePosition(evt, getDragging(evt))\n    updateValue()\n\n    preventFocus.value = true\n    active.value = true\n\n    document.addEventListener('mouseup', onDeactivate, true)\n  }\n\n  function onDeactivate() {\n    preventFocus.value = false\n    active.value = false\n\n    updateValue(true)\n    onBlur()\n\n    document.removeEventListener('mouseup', onDeactivate, true)\n  }\n\n  function onMobileClick(evt) {\n    updatePosition(evt, getDragging(evt))\n    updateValue(true)\n  }\n\n  function onKeyup(evt) {\n    if (keyCodes.includes(evt.keyCode)) {\n      updateValue(true)\n    }\n  }\n\n  function getTextContainerStyle(ratio) {\n    if (props.vertical === true) {\n      return null\n    }\n\n    // const p = $q.lang.rtl !== props.reverse ? 1 - ratio : ratio\n    const p = ratio\n    return {\n      transform: `translateX(calc(${2 * p - 1} * ${props.thumbSize} / 2 + ${50 - 100 * p}%))`\n    }\n  }\n\n  function getThumbRenderFn(thumb) {\n    const focusClass = computed(() =>\n      preventFocus.value === false && (focus.value === thumb.focusValue || (focus.value as any) === 'both') ? ' vc-slider--focus' : ''\n    )\n\n    const classes = computed(\n      () =>\n        `vc-slider__thumb vc-slider__thumb${axis.value} vc-slider__thumb${axis.value}-${\n          isReversed.value === true ? 'rtl' : 'ltr'\n        } absolute non-selectable` +\n        focusClass.value +\n        (thumb.thumbColor.value !== void 0 ? ` text-${thumb.thumbColor.value}` : '')\n    )\n\n    const style = computed(() => ({\n      width: props.thumbSize,\n      height: props.thumbSize,\n      [positionProp.value]: `${100 * thumb.ratio.value}%`,\n      zIndex: focus.value === thumb.focusValue ? 2 : void 0\n    }))\n\n    const pinColor = computed(() => (thumb.labelColor.value !== void 0 ? ` text-${thumb.labelColor.value}` : ''))\n\n    const textContainerStyle = computed(() => getTextContainerStyle(thumb.ratio.value))\n\n    const textClass = computed(() => 'vc-slider__text' + (thumb.labelTextColor.value !== void 0 ? ` text-${thumb.labelTextColor.value}` : ''))\n\n    return () => {\n      const thumbContent = [\n        h(\n          'svg',\n          {\n            class: 'vc-slider__thumb-shape absolute-full',\n            viewBox: '0 0 20 20',\n            'aria-hidden': 'true'\n          },\n          [h('path', { d: props.thumbPath })]\n        ),\n\n        h('div', { class: 'vc-slider__focus-ring fit' })\n      ]\n\n      if (props.label === true || props.labelAlways === true) {\n        thumbContent.push(\n          h(\n            'div',\n            {\n              class: pinClass.value + ' absolute fit no-pointer-events' + pinColor.value\n            },\n            [\n              h(\n                'div',\n                {\n                  class: labelClass.value,\n                  style: { minWidth: props.thumbSize }\n                },\n                [\n                  h(\n                    'div',\n                    {\n                      class: textContainerClass.value,\n                      style: textContainerStyle.value\n                    },\n                    [h('span', { class: textClass.value }, thumb.label.value)]\n                  )\n                ]\n              )\n            ]\n          )\n        )\n\n        if (props.name !== void 0 && props.disable !== true) {\n          injectFormInput(thumbContent, 'push')\n        }\n      }\n\n      return h(\n        'div',\n        {\n          class: classes.value,\n          style: style.value,\n          ...thumb.getNodeData()\n        },\n        thumbContent\n      )\n    }\n  }\n\n  function getContent(selectionBarStyle, trackContainerTabindex, trackContainerEvents, injectThumb) {\n    const trackContent = []\n\n    props.innerTrackColor !== 'transparent' &&\n      trackContent.push(\n        h('div', {\n          key: 'inner',\n          class: innerBarClass.value,\n          style: innerBarStyle.value\n        })\n      )\n\n    props.selectionColor !== 'transparent' &&\n      trackContent.push(\n        h('div', {\n          key: 'selection',\n          class: selectionBarClass.value,\n          style: selectionBarStyle.value\n        })\n      )\n\n    props.markers !== false &&\n      trackContent.push(\n        h('div', {\n          key: 'marker',\n          class: markerClass.value,\n          style: markerStyle.value\n        })\n      )\n\n    injectThumb(trackContent)\n\n    const content = [\n      hDir(\n        'div',\n        {\n          key: 'trackC',\n          class: trackContainerClass.value,\n          tabindex: trackContainerTabindex.value,\n          ...trackContainerEvents.value\n        },\n        [\n          h(\n            'div',\n            {\n              class: trackClass.value,\n              style: trackStyle.value\n            },\n            trackContent\n          )\n        ],\n        'slide',\n        editable.value,\n        () => panDirective.value\n      )\n    ]\n\n    if (props.markerLabels !== false) {\n      const action = props.switchMarkerLabelsSide === true ? 'unshift' : 'push'\n\n      content[action](\n        h(\n          'div',\n          {\n            key: 'markerL',\n            class: markerLabelsContainerClass.value\n          },\n          getMarkerLabelsContent()\n        )\n      )\n    }\n\n    return content\n  }\n\n  onBeforeUnmount(() => {\n    document.removeEventListener('mouseup', onDeactivate, true)\n  })\n\n  return {\n    state: {\n      active,\n      focus,\n      preventFocus,\n      dragging,\n\n      editable,\n      classes,\n      tabindex,\n      attributes,\n\n      step,\n      decimals,\n      trackLen,\n      innerMin,\n      innerMinRatio,\n      innerMax,\n      innerMaxRatio,\n      positionProp,\n      sizeProp,\n      isReversed\n    },\n\n    methods: {\n      onActivate,\n      onMobileClick,\n      onBlur,\n      onKeyup,\n      getContent,\n      getThumbRenderFn,\n      convertRatioToModel,\n      convertModelToRatio,\n      getDraggingRatio\n    }\n  }\n}\n"],"names":["step","dragging","classes"],"mappings":"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"}