NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/ant-design-vue/lib/_util/props-util.js
2023-09-14 14:47:11 +08:00

433 lines
13 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAllChildren = exports.getAllProps = exports.getSlot = exports.getSlots = exports.camelize = exports.isValidElement = exports.initDefaultProps = exports.parseStyleText = exports.getValueByProp = exports.getAttrs = exports.getKey = exports.getPropsData = exports.slotHasProp = exports.getSlotOptions = exports.getComponentFromProp = exports.getOptionProps = exports.filterProps = exports.hasProp = undefined;
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.getEvents = getEvents;
exports.getDataEvents = getDataEvents;
exports.getListeners = getListeners;
exports.getClass = getClass;
exports.getStyle = getStyle;
exports.getComponentName = getComponentName;
exports.isEmptyElement = isEmptyElement;
exports.isStringElement = isStringElement;
exports.filterEmpty = filterEmpty;
exports.mergeProps = mergeProps;
var _isPlainObject = require('lodash/isPlainObject');
var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getType(fn) {
var match = fn && fn.toString().match(/^\s*function (\w+)/);
return match ? match[1] : '';
}
var camelizeRE = /-(\w)/g;
var camelize = function camelize(str) {
return str.replace(camelizeRE, function (_, c) {
return c ? c.toUpperCase() : '';
});
};
var parseStyleText = function parseStyleText() {
var cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var camel = arguments[1];
var res = {};
var listDelimiter = /;(?![^(]*\))/g;
var propertyDelimiter = /:(.+)/;
cssText.split(listDelimiter).forEach(function (item) {
if (item) {
var tmp = item.split(propertyDelimiter);
if (tmp.length > 1) {
var k = camel ? camelize(tmp[0].trim()) : tmp[0].trim();
res[k] = tmp[1].trim();
}
}
});
return res;
};
var hasProp = function hasProp(instance, prop) {
var $options = instance.$options || {};
var propsData = $options.propsData || {};
return prop in propsData;
};
var slotHasProp = function slotHasProp(slot, prop) {
var $options = slot.componentOptions || {};
var propsData = $options.propsData || {};
return prop in propsData;
};
var filterProps = function filterProps(props) {
var propsData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var res = {};
Object.keys(props).forEach(function (k) {
if (k in propsData || props[k] !== undefined) {
res[k] = props[k];
}
});
return res;
};
var getScopedSlots = function getScopedSlots(ele) {
return ele.data && ele.data.scopedSlots || {};
};
var getSlots = function getSlots(ele) {
var componentOptions = ele.componentOptions || {};
if (ele.$vnode) {
componentOptions = ele.$vnode.componentOptions || {};
}
var children = ele.children || componentOptions.children || [];
var slots = {};
children.forEach(function (child) {
if (!isEmptyElement(child)) {
var name = child.data && child.data.slot || 'default';
slots[name] = slots[name] || [];
slots[name].push(child);
}
});
return (0, _extends3['default'])({}, slots, getScopedSlots(ele));
};
var getSlot = function getSlot(self) {
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return self.$scopedSlots && self.$scopedSlots[name] && self.$scopedSlots[name](options) || self.$slots[name] || [];
};
var getAllChildren = function getAllChildren(ele) {
var componentOptions = ele.componentOptions || {};
if (ele.$vnode) {
componentOptions = ele.$vnode.componentOptions || {};
}
return ele.children || componentOptions.children || [];
};
var getSlotOptions = function getSlotOptions(ele) {
if (ele.fnOptions) {
// 函数式组件
return ele.fnOptions;
}
var componentOptions = ele.componentOptions;
if (ele.$vnode) {
componentOptions = ele.$vnode.componentOptions;
}
return componentOptions ? componentOptions.Ctor.options || {} : {};
};
var getOptionProps = function getOptionProps(instance) {
if (instance.componentOptions) {
var componentOptions = instance.componentOptions;
var _componentOptions$pro = componentOptions.propsData,
propsData = _componentOptions$pro === undefined ? {} : _componentOptions$pro,
_componentOptions$Cto = componentOptions.Ctor,
Ctor = _componentOptions$Cto === undefined ? {} : _componentOptions$Cto;
var props = (Ctor.options || {}).props || {};
var res = {};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = Object.entries(props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _ref = _step.value;
var _ref2 = (0, _slicedToArray3['default'])(_ref, 2);
var k = _ref2[0];
var v = _ref2[1];
var def = v['default'];
if (def !== undefined) {
res[k] = typeof def === 'function' && getType(v.type) !== 'Function' ? def.call(instance) : def;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return (0, _extends3['default'])({}, res, propsData);
}
var _instance$$options = instance.$options,
$options = _instance$$options === undefined ? {} : _instance$$options,
_instance$$props = instance.$props,
$props = _instance$$props === undefined ? {} : _instance$$props;
return filterProps($props, $options.propsData);
};
var getComponentFromProp = function getComponentFromProp(instance, prop) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : instance;
var execute = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
if (instance.$createElement) {
var h = instance.$createElement;
var temp = instance[prop];
if (temp !== undefined) {
return typeof temp === 'function' && execute ? temp(h, options) : temp;
}
return instance.$scopedSlots[prop] && execute && instance.$scopedSlots[prop](options) || instance.$scopedSlots[prop] || instance.$slots[prop] || undefined;
} else {
var _h = instance.context.$createElement;
var _temp = getPropsData(instance)[prop];
if (_temp !== undefined) {
return typeof _temp === 'function' && execute ? _temp(_h, options) : _temp;
}
var slotScope = getScopedSlots(instance)[prop];
if (slotScope !== undefined) {
return typeof slotScope === 'function' && execute ? slotScope(_h, options) : slotScope;
}
var slotsProp = [];
var componentOptions = instance.componentOptions || {};
(componentOptions.children || []).forEach(function (child) {
if (child.data && child.data.slot === prop) {
if (child.data.attrs) {
delete child.data.attrs.slot;
}
if (child.tag === 'template') {
slotsProp.push(child.children);
} else {
slotsProp.push(child);
}
}
});
return slotsProp.length ? slotsProp : undefined;
}
};
var getAllProps = function getAllProps(ele) {
var data = ele.data || {};
var componentOptions = ele.componentOptions || {};
if (ele.$vnode) {
data = ele.$vnode.data || {};
componentOptions = ele.$vnode.componentOptions || {};
}
return (0, _extends3['default'])({}, data.props, data.attrs, componentOptions.propsData);
};
var getPropsData = function getPropsData(ele) {
var componentOptions = ele.componentOptions;
if (ele.$vnode) {
componentOptions = ele.$vnode.componentOptions;
}
return componentOptions ? componentOptions.propsData || {} : {};
};
var getValueByProp = function getValueByProp(ele, prop) {
return getPropsData(ele)[prop];
};
var getAttrs = function getAttrs(ele) {
var data = ele.data;
if (ele.$vnode) {
data = ele.$vnode.data;
}
return data ? data.attrs || {} : {};
};
var getKey = function getKey(ele) {
var key = ele.key;
if (ele.$vnode) {
key = ele.$vnode.key;
}
return key;
};
function getEvents(child) {
var events = {};
if (child.componentOptions && child.componentOptions.listeners) {
events = child.componentOptions.listeners;
} else if (child.data && child.data.on) {
events = child.data.on;
}
return (0, _extends3['default'])({}, events);
}
// 获取 xxx.native 或者 原生标签 事件
function getDataEvents(child) {
var events = {};
if (child.data && child.data.on) {
events = child.data.on;
}
return (0, _extends3['default'])({}, events);
}
// use getListeners instead this.$listeners
// https://github.com/vueComponent/ant-design-vue/issues/1705
function getListeners(context) {
return (context.$vnode ? context.$vnode.componentOptions.listeners : context.$listeners) || {};
}
function getClass(ele) {
var data = {};
if (ele.data) {
data = ele.data;
} else if (ele.$vnode && ele.$vnode.data) {
data = ele.$vnode.data;
}
var tempCls = data['class'] || {};
var staticClass = data.staticClass;
var cls = {};
staticClass && staticClass.split(' ').forEach(function (c) {
cls[c.trim()] = true;
});
if (typeof tempCls === 'string') {
tempCls.split(' ').forEach(function (c) {
cls[c.trim()] = true;
});
} else if (Array.isArray(tempCls)) {
(0, _classnames2['default'])(tempCls).split(' ').forEach(function (c) {
cls[c.trim()] = true;
});
} else {
cls = (0, _extends3['default'])({}, cls, tempCls);
}
return cls;
}
function getStyle(ele, camel) {
var data = {};
if (ele.data) {
data = ele.data;
} else if (ele.$vnode && ele.$vnode.data) {
data = ele.$vnode.data;
}
var style = data.style || data.staticStyle;
if (typeof style === 'string') {
style = parseStyleText(style, camel);
} else if (camel && style) {
// 驼峰化
var res = {};
Object.keys(style).forEach(function (k) {
return res[camelize(k)] = style[k];
});
return res;
}
return style;
}
function getComponentName(opts) {
return opts && (opts.Ctor.options.name || opts.tag);
}
function isEmptyElement(c) {
return !(c.tag || c.text && c.text.trim() !== '');
}
function isStringElement(c) {
return !c.tag;
}
function filterEmpty() {
var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return children.filter(function (c) {
return !isEmptyElement(c);
});
}
var initDefaultProps = function initDefaultProps(propTypes, defaultProps) {
Object.keys(defaultProps).forEach(function (k) {
if (propTypes[k]) {
propTypes[k].def && (propTypes[k] = propTypes[k].def(defaultProps[k]));
} else {
throw new Error('not have ' + k + ' prop');
}
});
return propTypes;
};
function mergeProps() {
var args = [].slice.call(arguments, 0);
var props = {};
args.forEach(function () {
var p = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = Object.entries(p)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _ref3 = _step2.value;
var _ref4 = (0, _slicedToArray3['default'])(_ref3, 2);
var k = _ref4[0];
var v = _ref4[1];
props[k] = props[k] || {};
if ((0, _isPlainObject2['default'])(v)) {
(0, _extends3['default'])(props[k], v);
} else {
props[k] = v;
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2['return']) {
_iterator2['return']();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
});
return props;
}
function isValidElement(element) {
return element && (typeof element === 'undefined' ? 'undefined' : (0, _typeof3['default'])(element)) === 'object' && 'componentOptions' in element && 'context' in element && element.tag !== undefined; // remove text node
}
exports.hasProp = hasProp;
exports.filterProps = filterProps;
exports.getOptionProps = getOptionProps;
exports.getComponentFromProp = getComponentFromProp;
exports.getSlotOptions = getSlotOptions;
exports.slotHasProp = slotHasProp;
exports.getPropsData = getPropsData;
exports.getKey = getKey;
exports.getAttrs = getAttrs;
exports.getValueByProp = getValueByProp;
exports.parseStyleText = parseStyleText;
exports.initDefaultProps = initDefaultProps;
exports.isValidElement = isValidElement;
exports.camelize = camelize;
exports.getSlots = getSlots;
exports.getSlot = getSlot;
exports.getAllProps = getAllProps;
exports.getAllChildren = getAllChildren;
exports['default'] = hasProp;