tdesign-mobile-vue
Version:
tdesign-mobile-vue
84 lines (76 loc) • 2.67 kB
JavaScript
/**
* tdesign v1.7.0
* (c) 2024 TDesign Group
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var camelCase = require('lodash/camelCase');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var camelCase__default = /*#__PURE__*/_interopDefaultLegacy(camelCase);
function getDefaultName(key) {
var str = camelCase__default["default"](key);
return "default".concat(str[0].toLocaleUpperCase() + str.slice(1));
}
function getEventPropsName(eventName) {
var str = camelCase__default["default"](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 = vue.ref();
if (isUsedKey) {
innerValue.value = props[key];
} else if (isUsedModelValue) {
innerValue.value = props[modelValue];
} else {
innerValue.value = props[defaultName];
}
vue.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 = vue.computed({
get: function get() {
return innerValue.value;
},
set: function set(value) {
setInnerValue(value);
}
});
return [innerValueRef, setInnerValue];
}
exports.useDefault = useDefault;
//# sourceMappingURL=index.js.map