element-plus
Version:
A Component Library for Vue 3
1 lines • 6.33 kB
Source Map (JSON)
{"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 '@element-plus/constants'\nimport { debugWarn, isArray, isNumber, throwError } from '@element-plus/utils'\n\nimport type { ComputedRef, SetupContext } from 'vue'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { FormItemContext } from '@element-plus/components/form'\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 elFormItem: FormItemContext\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 }\n const val = props.modelValue\n if (props.range && 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 if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n initData.oldValue = val.slice()\n }\n }\n } else if (!props.range && isNumber(val) && !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 if (props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\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 (isArray(val) &&\n 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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"}