{"version":3,"file":"VSlider.mjs","names":["filterInputProps","makeVInputProps","VInput","VLabel","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","makeSliderProps","useSlider","useProxiedModel","computed","ref","genericComponent","useRender","VSlider","name","props","modelValue","type","Number","String","default","emits","value","v","setup","slots","thumbContainerRef","min","max","mousePressed","roundValue","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","handleSliderMouseUp","newValue","model","handleMouseMove","getActiveThumb","$el","undefined","parseFloat","isFocused","focus","blur","trackStop","inputProps","_","hasPrepend","label","prepend","disabled","slotProps","id","messagesId","elevation"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { makeSliderProps, useSlider } from './slider'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { MakeSlots } from '@/util'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & MakeSlots<{\n  'tick-label': []\n  'thumb-label': []\n}>\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n  name: 'VSlider',\n\n  props: {\n    ...makeFocusProps(),\n    ...makeSliderProps(),\n    ...makeVInputProps(),\n\n    modelValue: {\n      type: [Number, String],\n      default: 0,\n    },\n  },\n\n  emits: {\n    'update:focused': (value: boolean) => true,\n    'update:modelValue': (v: number) => true,\n  },\n\n  setup (props, { slots }) {\n    const thumbContainerRef = ref()\n\n    const {\n      min,\n      max,\n      mousePressed,\n      roundValue,\n      onSliderMousedown,\n      onSliderTouchstart,\n      trackContainerRef,\n      position,\n      hasLabels,\n      readonly,\n    } = useSlider({\n      props,\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      handleSliderMouseUp: newValue => model.value = roundValue(newValue),\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      handleMouseMove: newValue => model.value = roundValue(newValue),\n      getActiveThumb: () => thumbContainerRef.value?.$el,\n    })\n\n    const model = useProxiedModel(\n      props,\n      'modelValue',\n      undefined,\n      v => {\n        const value = typeof v === 'string' ? parseFloat(v) : v == null ? min.value : v\n\n        return roundValue(value)\n      },\n    )\n\n    const { isFocused, focus, blur } = useFocus(props)\n    const trackStop = computed(() => position(model.value))\n\n    useRender(() => {\n      const [inputProps, _] = filterInputProps(props)\n      const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n      return (\n        <VInput\n          class={[\n            'v-slider',\n            {\n              'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n              'v-slider--focused': isFocused.value,\n              'v-slider--pressed': mousePressed.value,\n              'v-slider--disabled': props.disabled,\n            },\n          ]}\n          { ...inputProps }\n          focused={ isFocused.value }\n        >\n          {{\n            ...slots,\n            prepend: hasPrepend ? slotProps => (\n              <>\n                { slots.label?.(slotProps) ?? props.label\n                  ? (\n                    <VLabel\n                      id={ slotProps.id }\n                      class=\"v-slider__label\"\n                      text={ props.label }\n                    />\n                  ) : undefined\n                }\n\n                { slots.prepend?.(slotProps) }\n              </>\n            ) : undefined,\n            default: ({ id, messagesId }) => (\n              <div\n                class=\"v-slider__container\"\n                onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n                onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n              >\n                <input\n                  id={ id.value }\n                  name={ props.name || id.value }\n                  disabled={ props.disabled }\n                  readonly={ props.readonly }\n                  tabindex=\"-1\"\n                  value={ model.value }\n                />\n\n                <VSliderTrack\n                  ref={ trackContainerRef }\n                  start={ 0 }\n                  stop={ trackStop.value }\n                >\n                  {{ 'tick-label': slots['tick-label'] }}\n                </VSliderTrack>\n\n                <VSliderThumb\n                  ref={ thumbContainerRef }\n                  aria-describedby={ messagesId.value }\n                  focused={ isFocused.value }\n                  min={ min.value }\n                  max={ max.value }\n                  modelValue={ model.value }\n                  onUpdate:modelValue={ v => (model.value = v) }\n                  position={ trackStop.value }\n                  elevation={ props.elevation }\n                  onFocus={ focus }\n                  onBlur={ blur }\n                >\n                  {{ 'thumb-label': slots['thumb-label'] }}\n                </VSliderThumb>\n              </div>\n            ),\n          }}\n        </VInput>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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"}