{"version":3,"file":"index.mjs","sources":["../../../../src/components/RangeSlider/index.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"slider\"\n    class=\"base-slider relative\"\n    role=\"slider\"\n    :aria-valuemax=\"moderatedMax()\"\n    :aria-valuemin=\"moderatedMin()\"\n    :aria-valuenow=\"localValue[0]\"\n    :class=\"classes\"\n    :tabindex=\"disabled ? null : tabindex || '0'\"\n    @blur=\"onBlur\"\n    @focus=\"onFocus\"\n    @keydown.down.prevent=\"decrementValue\"\n    @keydown.left.prevent=\"decrementValue\"\n    @keydown.right.prevent=\"incrementValue\"\n    @keydown.up.prevent=\"incrementValue\"\n  >\n    <input\n      v-if=\"name\"\n      class=\"base-slider__hidden-input\"\n      type=\"hidden\"\n      :name=\"name\"\n      :value=\"modelValue[0]\"\n    />\n\n    <div\n      ref=\"track\"\n      class=\"base-slider__track relative w-full\"\n      @mousedown=\"onDragStart\"\n      @touchstart=\"onDragStart\"\n    >\n      <div class=\"base-slider__track-background bg-gray-300 dark:bg-gray-400\">\n        <div v-if=\"snapToSteps\">\n          <span\n            v-for=\"(point, idx) in snapPoints\"\n            :key=\"idx\"\n            class=\"base-slider__snap-point\"\n            :style=\"{ left: 100 * relativeValue(point) + '%' }\"\n          ></span>\n        </div>\n      </div>\n\n      <div\n        class=\"base-slider__track-fill bg-primary-400\"\n        :style=\"fillStyle\"\n      ></div>\n\n      <div\n        ref=\"firstThumb\"\n        class=\"base-slider__thumb bg-primary-400\"\n        :style=\"firstThumbStyle\"\n      >\n        <div v-if=\"showMarker\" class=\"base-slider__marker text-xs\">\n          <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"36\" -->\n          <!--   height=\"36\"> -->\n          <!--   <path -->\n          <!--     d=\"M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z\" /> -->\n          <!-- </svg> -->\n\n          <span class=\"text-sm text-gray-400\">{{ markerText() }}</span>\n        </div>\n      </div>\n      <div\n        ref=\"secondThumb\"\n        class=\"base-slider__thumb bg-primary-400\"\n        :style=\"secondThumbStyle\"\n      >\n        <div v-if=\"showMarker\" class=\"base-slider__marker text-xs\">\n          <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"36\" -->\n          <!--   height=\"36\"> -->\n          <!--   <path -->\n          <!--     d=\"M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z\" /> -->\n          <!-- </svg> -->\n\n          <span class=\"text-sm text-gray-400\">{{ markerText(1) }}</span>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  PropType,\n  ref,\n  toRefs,\n} from 'vue';\n\nconst props = defineProps({\n  name: {\n    type: String,\n    default: undefined,\n  },\n  tabindex: {\n    type: [String, Number],\n    default: undefined,\n  },\n  modelValue: {\n    type: Array as PropType<number[]>,\n    required: true,\n  },\n  min: {\n    type: Number,\n    default: 0,\n  },\n  max: {\n    type: Number,\n    default: 100,\n  },\n  step: {\n    type: Number,\n    default: 10,\n  },\n  snapToSteps: {\n    type: Boolean,\n    default: false,\n  },\n  showMarker: {\n    type: Boolean,\n    default: false,\n  },\n  markerValue: {\n    type: [String, Number],\n    default: undefined,\n  },\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n  alwaysActive: {\n    type: Boolean,\n    default: false,\n  },\n});\n\nconst emit = defineEmits([\n  'focus',\n  'blur',\n  'update:modelValue',\n  'change',\n  'dragstart',\n  'dragend',\n]);\n\nconst {\n  min,\n  max,\n  markerValue,\n  disabled,\n  showMarker,\n  step,\n  snapToSteps,\n  modelValue,\n  alwaysActive,\n} = toRefs(props);\n\nconst initialValue = ref(modelValue.value);\nconst isActive = ref(false);\nconst isDragging = ref(false);\nconst localValue = ref<number[]>(modelValue.value);\nconst slider = ref();\nconst track = ref();\nconst firstThumb = ref();\nconst secondThumb = ref();\nconst handleIndex = ref(0);\n\nif (\n  Array.isArray(modelValue.value) &&\n  (modelValue.value.length > 2 || modelValue.value.length < 2)\n) {\n  throw Error('modelValue must be number or array of 2 numbers');\n}\n\nconst classes = computed(() => {\n  return [\n    { 'is-dragging': isDragging.value },\n    { 'is-disabled': disabled.value },\n    { 'is-active': isActive.value },\n    { 'has-marker': showMarker.value },\n  ];\n});\n\nconst fillStyle = computed(() => {\n  const scaleX =\n    relativeValue(localValue.value[1]) - relativeValue(localValue.value[0]);\n  return {\n    transform: 'scaleX(' + scaleX + ')',\n    left: firstThumbStyle.value.left,\n  };\n});\n\nconst firstThumbStyle = computed(() => {\n  return {\n    left: relativeValue(localValue.value[0]) * 100 + '%',\n  };\n});\n\nconst secondThumbStyle = computed(() => {\n  return {\n    left: relativeValue(localValue.value[1]) * 100 + '%',\n  };\n});\n\nconst markerText = (index = 0) => {\n  return markerValue.value ?? localValue.value[index];\n};\n\nconst snapPoints = computed(() => {\n  const points = [];\n  let point = step.value * Math.ceil(moderatedMin() / step.value);\n\n  while (point <= moderatedMax()) {\n    points.push(point);\n    point += step.value;\n  }\n\n  return points;\n});\n\nconst moderatedMin = () => {\n  return max.value > min.value ? min.value : 0;\n};\n\nconst moderatedMax = () => {\n  return max.value > min.value ? max.value : 100;\n};\n\nconst focus = () => {\n  slider.value.focus();\n};\n\nconst reset = () => {\n  for (let i = 0; i < 2; i++) {\n    handleIndex.value = i;\n    setValue(initialValue.value[i]);\n  }\n};\n\nconst onFocus = () => {\n  isActive.value = true;\n  emit('focus');\n};\n\nconst onBlur = () => {\n  if (alwaysActive) return;\n  isActive.value = false;\n  emit('blur');\n};\n\nconst onExternalClick = (e) => {\n  if (!slider.value?.contains(e.target)) {\n    onBlur();\n  }\n};\n\nconst setValueWithSnap = (value) => {\n  value = moderateValue(value);\n\n  if (snapToSteps.value) {\n    value = getNearestSnapPoint(value);\n  }\n\n  setValue(value);\n};\n\nconst setValue = (value: number) => {\n  value = moderateValue(value);\n\n  if (value === localValue.value[handleIndex.value]) {\n    return;\n  }\n\n  if (handleIndex.value === 0 && value >= localValue.value[1]) {\n    value = localValue.value[1];\n  }\n  if (handleIndex.value === 1 && value <= localValue.value[0]) {\n    value = localValue.value[0];\n  }\n\n  localValue.value[handleIndex.value] = value;\n  emit('update:modelValue', localValue.value);\n  emit('change', localValue.value);\n};\n\nconst incrementValue = () => {\n  setValueWithSnap(localValue.value[handleIndex.value] + step.value);\n};\n\nconst decrementValue = () => {\n  setValueWithSnap(localValue.value[handleIndex.value] - step.value);\n};\n\nconst getPointStyle = (point) => {\n  return {\n    left: point + '%',\n  };\n};\n\nconst initializeSlider = () => {\n  document.addEventListener('touchend', onDragStop);\n  document.addEventListener('mouseup', onDragStop);\n  document.addEventListener('click', onExternalClick);\n  document.addEventListener('touchstart', onExternalClick);\n  initializeDrag();\n};\n\nconst teardownSlider = () => {\n  document.removeEventListener('touchend', onDragStop);\n  document.removeEventListener('mouseup', onDragStop);\n  document.removeEventListener('click', onExternalClick);\n};\n\nconst initializeDrag = () => {\n  // const value = moderateValue(localValue.value ? localValue.value : 0)\n  // setValue(value)\n  alwaysActive.value && (isActive.value = true);\n  reset();\n};\n\nconst onDragStart = (e) => {\n  if (disabled.value) {\n    return;\n  }\n\n  if (!isActive.value) {\n    onFocus();\n  }\n\n  const value = getDragValue(e);\n  handleIndex.value = closestHandle(value);\n\n  console.log(handleIndex.value);\n\n  isDragging.value = true;\n  dragUpdate(e);\n\n  document.addEventListener('touchmove', onDragMove);\n  document.addEventListener('mousemove', onDragMove);\n\n  emit('dragstart', localValue.value, e);\n};\n\nconst onDragMove = (e) => {\n  dragUpdate(e);\n};\n\nconst closestHandle = (value: number) => {\n  let tempHandleIndex = 0;\n  if (localValue.value[0] === localValue.value[1]) {\n    const avg = localValue.value[0];\n    if (value > avg) {\n      return 1;\n    }\n    return 0;\n  }\n\n  const firstHandleDiff = Math.abs(localValue.value[0] - value);\n  const secondHandleDiff = Math.abs(localValue.value[1] - value);\n\n  if (secondHandleDiff < firstHandleDiff) {\n    tempHandleIndex = 1;\n  }\n  return tempHandleIndex;\n};\n\nconst getDragValue = (e) => {\n  const sliderOffsetLeft = track.value!.getBoundingClientRect().left;\n  const position = e.touches ? e.touches[0].pageX : e.pageX;\n  const trackLength = track.value.offsetWidth;\n  const relativeValue = (position - sliderOffsetLeft) / trackLength;\n\n  const value = moderateValue(\n    moderatedMin() + relativeValue * (moderatedMax() - moderatedMin())\n  );\n  return Math.round(value);\n};\n\nconst dragUpdate = (e) => {\n  const value = getDragValue(e);\n\n  if (isDragging.value) {\n    setValue(Math.round(value));\n  }\n};\n\nconst onDragStop = (e) => {\n  if (isDragging.value) {\n    isDragging.value = false;\n\n    if (\n      snapToSteps.value &&\n      modelValue.value[handleIndex.value] % step.value !== 0\n    ) {\n      setValueWithSnap(modelValue.value[handleIndex.value]);\n    }\n\n    document.removeEventListener('touchmove', onDragMove);\n    document.removeEventListener('mousemove', onDragMove);\n\n    emit('dragend', localValue.value, e);\n  }\n};\n\nconst getNearestSnapPoint = (value) => {\n  const previousSnapPoint = Math.floor(value / step.value) * step.value;\n  const nextSnapPoint = previousSnapPoint + step.value;\n  const midpoint = (previousSnapPoint + nextSnapPoint) / 2;\n\n  if (previousSnapPoint < moderatedMin()) {\n    if (nextSnapPoint > moderatedMax()) {\n      return value;\n    }\n    return nextSnapPoint;\n  }\n  if (value >= midpoint && nextSnapPoint <= moderatedMax()) {\n    return nextSnapPoint;\n  }\n  return previousSnapPoint;\n};\n\nconst relativeValue = (value) => {\n  return (value - moderatedMin()) / (moderatedMax() - moderatedMin());\n};\n\nconst moderateValue = (value) => {\n  if (value < moderatedMin()) {\n    return moderatedMin();\n  }\n\n  if (value > moderatedMax()) {\n    return moderatedMax();\n  }\n\n  //if(handleIndex.value === 0 && value >= localValue.value[1]) return localValue.value[1]\n  //if(handleIndex.value === 1 && value <= localValue.value[0]) return localValue.value[0]\n\n  return value;\n};\n\nonMounted(() => {\n  initializeSlider();\n});\n\nonBeforeUnmount(() => {\n  teardownSlider();\n});\n\ndefineExpose({\n  getPointStyle,\n  focus,\n});\n</script>\n\n<style>\n.base-slider {\n  align-items: center;\n  display: flex;\n  outline: none;\n}\n\n.base-slider:not(.is-disabled).is-active .base-slider__marker,\n.base-slider:not(.is-disabled).is-dragging .base-slider__marker {\n  opacity: 1;\n  transform: scale(1) translateY(-26px);\n}\n\n/* .base-slider:not(.is-disabled).is-active .base-slider__marker-text, */\n/* .base-slider:not(.is-disabled).is-dragging .base-slider__marker-text { */\n/*   color: white; */\n/* } */\n\n.base-slider:not(.is-disabled).is-active .base-slider__snap-point,\n.base-slider:not(.is-disabled).is-dragging .base-slider__snap-point {\n  opacity: 1;\n}\n\n.base-slider.is-disabled .base-slider__track {\n  cursor: default;\n}\n\n.base-slider.is-disabled .base-slider__track-fill {\n  background-color: transparent;\n}\n\n.base-slider.is-disabled .base-slider__thumb {\n  background-color: #ddd;\n  border: 2px solid white;\n}\n\n.base-slider__track {\n  align-items: center;\n  cursor: default;\n  display: flex;\n  height: 18px;\n  margin: 0 auto;\n  position: relative;\n  width: 100%;\n}\n\n.base-slider__track-background,\n.base-slider__track-fill {\n  content: '';\n  display: block;\n  height: 3px;\n  left: 0;\n  position: absolute;\n  top: 7px;\n}\n\n.base-slider__track-background {\n  width: 100%;\n}\n\n.base-slider__snap-point {\n  background-color: rgba(0, 0, 0, 0.75);\n  height: 3px;\n  opacity: 0;\n  position: absolute;\n  transition: opacity 0.2s ease;\n  width: 2px;\n  z-index: 1;\n}\n\n.base-slider__track-fill {\n  transform-origin: left;\n  width: 100%;\n}\n\n.base-slider__thumb {\n  border-radius: 50%;\n  cursor: inherit;\n  display: block;\n  height: 14px;\n  left: 0;\n  position: absolute;\n  width: 14px;\n  z-index: 1;\n  margin-left: -7px;\n}\n\n.base-slider__thumb::before {\n  background-color: #93c5fd;\n  opacity: 0.3;\n  border-radius: 50%;\n  content: '';\n  display: block;\n  height: 36px;\n  margin-left: -12px;\n  margin-top: -12px;\n  position: absolute;\n  transform-origin: center;\n  transform: scale(0);\n  transition: transform 0.2s ease;\n  width: 36px;\n}\n\n.base-slider__marker {\n  height: 24px;\n  opacity: 0;\n  position: absolute;\n  transform: scale(0) translateY(0);\n  transition: all 0.2s ease;\n  margin-left: -5px;\n  width: 24px;\n  user-select: none;\n}\n\n.base-slider__marker svg {\n  fill: #7f97ee;\n  height: 24px;\n  width: 24px;\n}\n\n.base-slider__marker-text {\n  color: white;\n  font-size: 13px;\n  font-weight: 600;\n  left: 4.5px;\n  position: absolute;\n  text-align: center;\n  top: 1px;\n  transition: color 0.2s ease;\n  width: 14px;\n}\n\n.base-slider--is-dragging {\n  user-select: none;\n}\n</style>\n"],"names":["props","__props","emit","__emit","min","max","markerValue","disabled","showMarker","step","snapToSteps","modelValue","alwaysActive","toRefs","initialValue","ref","isActive","isDragging","localValue","slider","track","firstThumb","secondThumb","handleIndex","classes","computed","fillStyle","relativeValue","firstThumbStyle","secondThumbStyle","markerText","index","snapPoints","points","point","moderatedMin","moderatedMax","focus","reset","i","setValue","onFocus","onBlur","onExternalClick","_a","setValueWithSnap","value","moderateValue","getNearestSnapPoint","incrementValue","decrementValue","getPointStyle","initializeSlider","onDragStop","initializeDrag","teardownSlider","onDragStart","getDragValue","closestHandle","dragUpdate","onDragMove","tempHandleIndex","avg","firstHandleDiff","sliderOffsetLeft","position","trackLength","previousSnapPoint","nextSnapPoint","midpoint","onMounted","onBeforeUnmount","__expose"],"mappings":"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"}