'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;