UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.51 kB
{"version":3,"file":"use-watch.mjs","names":[],"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 { NOOP, 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(NOOP)\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(NOOP)\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"],"mappings":";;;;;;AASA,MAAa,YACX,OACA,UACA,UACA,UACA,MACA,eACG;CACH,MAAM,SAAS,QAA2B;EACxC,KAAK,oBAAoB,IAAI;EAC7B,KAAK,aAAa,IAAI;;CAGxB,MAAM,qBAAqB;EACzB,IAAI,MAAM,OACR,OAAO,CAAC,CAAC,SAAS,OAAO,SAAS,MAAM,CAAC,OACtC,MAAM,UAAU,SAAU,SAAS,SAAsB,OAC3D;OAED,OAAO,MAAM,eAAe,SAAS;;CAIzC,MAAM,kBAAkB;EACtB,IAAI,MAAM,MAAM,MAAM,KACpB,WAAW,UAAU,sCAAsC;EAE7D,MAAM,MAAM,MAAM;EAClB,IAAI,MAAM,SAAS,QAAQ,IAAI,EAC7B,IAAI,IAAI,KAAK,MAAM,KACjB,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC;OACxB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC;OACxB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC;OACrB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC;OACrB;GACL,SAAS,aAAa,IAAI;GAC1B,SAAS,cAAc,IAAI;GAC3B,IAAI,cAAc,EAAE;IAClB,IAAI,MAAM,eACR,YAAY,WAAW,SAAS,CAAC,MAAM,KAAK;IAE9C,SAAS,WAAW,IAAI,OAAO;;;OAG9B,IAAI,CAAC,MAAM,SAAS,SAAS,IAAI,IAAI,CAAC,OAAO,MAAM,IAAI,EAC5D,IAAI,MAAM,MAAM,KACd,MAAM,MAAM,IAAI;OACX,IAAI,MAAM,MAAM,KACrB,MAAM,MAAM,IAAI;OACX;GACL,SAAS,aAAa;GACtB,IAAI,cAAc,EAAE;IAClB,IAAI,MAAM,eACR,YAAY,WAAW,SAAS,CAAC,MAAM,KAAK;IAE9C,SAAS,WAAW;;;;CAM5B,WAAW;CAEX,YACQ,SAAS,WACd,QAAQ;EACP,IAAI,CAAC,KACH,WAAW;GAGhB;CAED,YACQ,MAAM,aACX,KAAK,WAAW;EACf,IACE,SAAS,YACR,QAAQ,IAAI,IACX,QAAQ,OAAO,IACf,IAAI,OAAO,MAAM,UAAU,SAAS,OAAO,OAAO,IAClD,SAAS,eAAe,IAAI,MAC5B,SAAS,gBAAgB,IAAI,IAE/B;EAEF,WAAW;IAEb,EACE,MAAM,MACP,CACF;CAED,YACQ,CAAC,MAAM,KAAK,MAAM,IAAI,QACtB;EACJ,WAAW;GAEd"}