Skip to content

Commit

Permalink
feat: treat emtpy array children as undefined and one element array c…
Browse files Browse the repository at this point in the history
…hildren as child, close ksc-fe/kpc#357
  • Loading branch information
Javey committed Oct 24, 2019
1 parent 60b36ad commit 47b904c
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 60 deletions.
49 changes: 31 additions & 18 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,18 +148,26 @@ Vue.mixin({
});

function normalizeChildren(vNodes) {
if (isArray(vNodes)) {
var ret = [];
vNodes.forEach(function (vNode) {
if (isArray(vNode)) {
ret.push.apply(ret, normalizeChildren(vNode));
} else {
ret.push(normalize(vNode));
}
});
return ret;
var loop = function loop(vNodes) {
if (isArray(vNodes)) {
var _ret = [];
vNodes.forEach(function (vNode) {
if (isArray(vNode)) {
_ret.push.apply(_ret, loop(vNode));
} else {
_ret.push(normalize(vNode));
}
});
return _ret;
}
return normalize(vNodes);
};
var ret = loop(vNodes);
if (Array.isArray(ret)) {
var l = ret.length;
return l === 0 ? undefined : l === 1 ? ret[0] : ret;
}
return normalize(vNodes);
return ret;
}

function normalize(vNode) {
Expand Down Expand Up @@ -378,24 +386,29 @@ function getChildrenAndBlocks(slots) {
function toVueVNode(h, vNode, props) {
var attrs = {};
var __props = { attrs: attrs };
for (var key in vNode.props) {
var vNodeProps = vNode.props;
for (var key in vNodeProps) {
if (~['children', '_context', 'className', 'style', 'ref', 'key'].indexOf(key)) continue;
attrs[key] = vNode.props[key];
attrs[key] = vNodeProps[key];
}
if (vNode.ref) {
__props.ref = props.data.ref;
}
if (vNode.props.className) {
__props.staticClass = vNode.props.className;
if (vNodeProps.className) {
__props.staticClass = vNodeProps.className;
}
if (vNode.props.style) {
__props.staticStyle = vNode.props.style;
__props.staticStyle = vNodeProps.style;
}
if (vNode.key != null) {
__props.key = vNode.props.key;
__props.key = vNodeProps.key;
}
var children = vNodeProps.children;
if (children && !Array.isArray(children)) {
children = [children];
}

return h(vNode.tag, __props, vNode.props.children);
return h(vNode.tag, __props, children);
}

function functionalWrapper(Component) {
Expand Down
49 changes: 31 additions & 18 deletions dist/intact.vue.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,18 +150,26 @@ Vue.mixin({
});

function normalizeChildren(vNodes) {
if (isArray(vNodes)) {
var ret = [];
vNodes.forEach(function (vNode) {
if (isArray(vNode)) {
ret.push.apply(ret, normalizeChildren(vNode));
} else {
ret.push(normalize(vNode));
}
});
return ret;
var loop = function loop(vNodes) {
if (isArray(vNodes)) {
var _ret = [];
vNodes.forEach(function (vNode) {
if (isArray(vNode)) {
_ret.push.apply(_ret, loop(vNode));
} else {
_ret.push(normalize(vNode));
}
});
return _ret;
}
return normalize(vNodes);
};
var ret = loop(vNodes);
if (Array.isArray(ret)) {
var l = ret.length;
return l === 0 ? undefined : l === 1 ? ret[0] : ret;
}
return normalize(vNodes);
return ret;
}

function normalize(vNode) {
Expand Down Expand Up @@ -380,24 +388,29 @@ function getChildrenAndBlocks(slots) {
function toVueVNode(h, vNode, props) {
var attrs = {};
var __props = { attrs: attrs };
for (var key in vNode.props) {
var vNodeProps = vNode.props;
for (var key in vNodeProps) {
if (~['children', '_context', 'className', 'style', 'ref', 'key'].indexOf(key)) continue;
attrs[key] = vNode.props[key];
attrs[key] = vNodeProps[key];
}
if (vNode.ref) {
__props.ref = props.data.ref;
}
if (vNode.props.className) {
__props.staticClass = vNode.props.className;
if (vNodeProps.className) {
__props.staticClass = vNodeProps.className;
}
if (vNode.props.style) {
__props.staticStyle = vNode.props.style;
__props.staticStyle = vNodeProps.style;
}
if (vNode.key != null) {
__props.key = vNode.props.key;
__props.key = vNodeProps.key;
}
var children = vNodeProps.children;
if (children && !Array.isArray(children)) {
children = [children];
}

return h(vNode.tag, __props, vNode.props.children);
return h(vNode.tag, __props, children);
}

function functionalWrapper(Component) {
Expand Down
Loading

0 comments on commit 47b904c

Please sign in to comment.