{"version":3,"file":"use-watch.mjs","sources":["../../../../../../../packages/components/slider/src/composables/use-watch.ts"],"sourcesContent":["import { watch } from 'vue'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { throwError } from '@bigin/utils'\nimport type { ComputedRef, SetupContext } from 'vue'\nimport type { Arrayable } from '@bigin/utils'\nimport type { SliderEmits, SliderInitData, SliderProps } from '../slider'\n\nexport const useWatch = (\n  props: SliderProps,\n  initData: SliderInitData,\n  minValue: ComputedRef<number>,\n  maxValue: ComputedRef<number>,\n  emit: SetupContext<SliderEmits>['emit']\n) => {\n  const _emit = (val: Arrayable<number>) => {\n    emit(UPDATE_MODEL_EVENT, val)\n    emit(INPUT_EVENT, val)\n  }\n\n  const valueChanged = () => {\n    if (props.range) {\n      return ![minValue.value, maxValue.value].every(\n        (item, index) => item === (initData.oldValue as number[])[index]\n      )\n    } else {\n      return props.modelValue !== initData.oldValue\n    }\n  }\n\n  const setValues = () => {\n    if (props.min > props.max) {\n      throwError('Slider', 'min should not be greater than max.')\n      return\n    }\n    const val = props.modelValue\n    if (props.range && Array.isArray(val)) {\n      if (val[1] < props.min) {\n        _emit([props.min, props.min])\n      } else if (val[0] > props.max) {\n        _emit([props.max, props.max])\n      } else if (val[0] < props.min) {\n        _emit([props.min, val[1]])\n      } else if (val[1] > props.max) {\n        _emit([val[0], props.max])\n      } else {\n        initData.firstValue = val[0]\n        initData.secondValue = val[1]\n        if (valueChanged()) {\n          initData.oldValue = val.slice()\n        }\n      }\n    } else if (!props.range && typeof val === 'number' && !Number.isNaN(val)) {\n      if (val < props.min) {\n        _emit(props.min)\n      } else if (val > props.max) {\n        _emit(props.max)\n      } else {\n        initData.firstValue = val\n        if (valueChanged()) {\n          initData.oldValue = val\n        }\n      }\n    }\n  }\n\n  setValues()\n\n  watch(\n    () => initData.dragging,\n    (val) => {\n      if (!val) {\n        setValues()\n      }\n    }\n  )\n\n  watch(\n    () => props.modelValue,\n    (val, oldVal) => {\n      if (\n        initData.dragging ||\n        (Array.isArray(val) &&\n          Array.isArray(oldVal) &&\n          val.every((item, index) => item === oldVal[index]) &&\n          initData.firstValue === val[0] &&\n          initData.secondValue === val[1])\n      ) {\n        return\n      }\n      setValues()\n    },\n    {\n      deep: true,\n    }\n  )\n\n  watch(\n    () => [props.min, props.max],\n    () => {\n      setValues()\n    }\n  )\n}\n"],"names":[],"mappings":"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"}