UNPKG

@opensig/opendesign

Version:

80 lines (79 loc) 2.14 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const is = require("../../_utils/is.js"); const useWatch = (props, initData, minValue, maxValue, emit) => { const handleEmit = (val) => { emit("update:modelValue", val); emit("input", val); }; const valueChanged = () => { if (props.range) { return ![minValue.value, maxValue.value].every((item, index) => item === initData.oldValue[index]); } else { return props.modelValue !== initData.oldValue; } }; const setValues = () => { if (props.min > props.max) { return; } const val = props.modelValue; if (props.range && is.isArray(val)) { if (val[1] < props.min) { handleEmit([props.min, props.min]); } else if (val[0] > props.max) { handleEmit([props.max, props.max]); } else if (val[0] < props.min) { handleEmit([props.min, val[1]]); } else if (val[1] > props.max) { handleEmit([val[0], props.max]); } else { initData.firstBtnVal = val[0]; initData.secondBtnVal = val[1]; if (valueChanged()) { initData.oldValue = val.slice(); } } } else if (!props.range && is.isNumber(val)) { if (val < props.min) { handleEmit(props.min); } else if (val > props.max) { handleEmit(props.max); } else { initData.firstBtnVal = val; if (valueChanged()) { initData.oldValue = val; } } } }; setValues(); vue.watch( () => initData.isDragging, (val) => { if (!val) { setValues(); } } ); vue.watch( () => props.modelValue, (val, oldVal) => { if (initData.isDragging || is.isArray(val) && is.isArray(oldVal) && val.every((item, index) => item === oldVal[index]) && initData.firstBtnVal === val[0] && initData.secondBtnVal === val[1]) { return; } setValues(); }, { deep: true } ); vue.watch( () => [props.min, props.max], () => { setValues(); } ); }; exports.useWatch = useWatch;