UNPKG

tdesign-mobile-vue

Version:
76 lines (72 loc) 2.36 kB
/** * tdesign v1.7.0 * (c) 2024 TDesign Group * @license MIT */ import { ref, watchEffect, computed } from 'vue'; import camelCase from 'lodash/camelCase'; function getDefaultName(key) { var str = camelCase(key); return "default".concat(str[0].toLocaleUpperCase() + str.slice(1)); } function getEventPropsName(eventName) { var str = camelCase(eventName); return "on".concat(str[0].toLocaleUpperCase()).concat(str.slice(1)); } function useDefault(props, emit, key, eventName) { var modelValue = "modelValue"; var defaultName = getDefaultName(String(key)); var isUsedModelValue = props[modelValue] !== void 0; var isUsedKey = props[key] !== void 0; var innerValue = ref(); if (isUsedKey) { innerValue.value = props[key]; } else if (isUsedModelValue) { innerValue.value = props[modelValue]; } else { innerValue.value = props[defaultName]; } watchEffect(function () { if (isUsedModelValue) { innerValue.value = props[modelValue]; } if (isUsedKey) { innerValue.value = props[key]; } }); function emitEvents(value) { var _props$propsEventName; for (var _len = arguments.length, arg = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { arg[_key - 1] = arguments[_key]; } var updateKeys = ["update:".concat(key)]; if (isUsedModelValue) { updateKeys.push("update:modelValue"); } updateKeys.forEach(function (updateKey) { emit.apply(void 0, [updateKey, value].concat(arg)); }); var propsEventName = getEventPropsName(eventName); (_props$propsEventName = props[propsEventName]) === null || _props$propsEventName === void 0 || _props$propsEventName.call.apply(_props$propsEventName, [props, value].concat(arg)); } function setInnerValue(value) { if (!isUsedKey && !isUsedModelValue) { innerValue.value = value; } for (var _len2 = arguments.length, arg = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { arg[_key2 - 1] = arguments[_key2]; } emitEvents.apply(void 0, [value].concat(arg)); } var innerValueRef = computed({ get: function get() { return innerValue.value; }, set: function set(value) { setInnerValue(value); } }); return [innerValueRef, setInnerValue]; } export { useDefault }; //# sourceMappingURL=index.js.map