433 lines
13 KiB
JavaScript
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;
|