{"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,GAAG;EAC5B,KAAK,aAAa,GAAG;CACvB;CAEA,MAAM,qBAAqB;EACzB,IAAI,MAAM,OACR,OAAO,CAAC,CAAC,SAAS,OAAO,SAAS,KAAK,CAAC,CAAC,OACtC,MAAM,UAAU,SAAU,SAAS,SAAsB,MAC5D;OAEA,OAAO,MAAM,eAAe,SAAS;CAEzC;CAEA,MAAM,kBAAkB;EACtB,IAAI,MAAM,MAAM,MAAM,KACpB,WAAW,UAAU,qCAAqC;EAE5D,MAAM,MAAM,MAAM;EAClB,IAAI,MAAM,SAAS,QAAQ,GAAG,GAAG;GAC/B,IAAI,IAAI,KAAK,MAAM,KACjB,MAAM,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC;QACvB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC;QACvB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,KAAK,MAAM,KACxB,MAAM,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;QACpB;IACL,SAAS,aAAa,IAAI;IAC1B,SAAS,cAAc,IAAI;IAC3B,IAAI,aAAa,GAAG;KAClB,IAAI,MAAM,eACR,YAAY,WAAW,QAAQ,CAAC,CAAC,MAAM,IAAI;KAE7C,SAAS,WAAW,IAAI,MAAM;IAChC;GACF;EACF,OAAO,IAAI,CAAC,MAAM,SAAS,SAAS,GAAG,KAAK,CAAC,OAAO,MAAM,GAAG,GAAG;GAC9D,IAAI,MAAM,MAAM,KACd,MAAM,MAAM,GAAG;QACV,IAAI,MAAM,MAAM,KACrB,MAAM,MAAM,GAAG;QACV;IACL,SAAS,aAAa;IACtB,IAAI,aAAa,GAAG;KAClB,IAAI,MAAM,eACR,YAAY,WAAW,QAAQ,CAAC,CAAC,MAAM,IAAI;KAE7C,SAAS,WAAW;IACtB;GACF;EACF;CACF;CAEA,UAAU;CAEV,YACQ,SAAS,WACd,QAAQ;EACP,IAAI,CAAC,KACH,UAAU;CAEd,CACF;CAEA,YACQ,MAAM,aACX,KAAK,WAAW;EACf,IACE,SAAS,YACR,QAAQ,GAAG,KACV,QAAQ,MAAM,KACd,IAAI,OAAO,MAAM,UAAU,SAAS,OAAO,MAAM,KACjD,SAAS,eAAe,IAAI,MAC5B,SAAS,gBAAgB,IAAI,IAE/B;EAEF,UAAU;CACZ,GACA,EACE,MAAM,KACR,CACF;CAEA,YACQ,CAAC,MAAM,KAAK,MAAM,GAAG,SACrB;EACJ,UAAU;CACZ,CACF;AACF"}