|
|
|
import { isNotNull, isArray, isFunction, isKey, extend } from "./2.base";
|
|
|
|
|
|
|
|
export function Fragment () {}
|
|
|
|
|
|
|
|
export function h (type, props, children) {
|
|
|
|
if (isNotNull(children)) {
|
|
|
|
if (!isArray(children)) {
|
|
|
|
children = [children];
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
children = [];
|
|
|
|
}
|
|
|
|
if (arguments.length > 3) {
|
|
|
|
for (let i = 3; i < arguments.length; i++) {
|
|
|
|
if (isArray(arguments[i])) {
|
|
|
|
children = children.concat(arguments[i]);
|
|
|
|
} else {
|
|
|
|
children.push(arguments[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (type === Fragment) {
|
|
|
|
return children;
|
|
|
|
}
|
|
|
|
if (isFunction(type)) {
|
|
|
|
type = type.xtype || type;
|
|
|
|
}
|
|
|
|
if (type === "el") {
|
|
|
|
return extend({
|
|
|
|
el: children[0],
|
|
|
|
}, props);
|
|
|
|
}
|
|
|
|
if (type === "left") {
|
|
|
|
return extend({
|
|
|
|
left: children,
|
|
|
|
}, props);
|
|
|
|
}
|
|
|
|
if (type === "right") {
|
|
|
|
return extend({
|
|
|
|
right: children,
|
|
|
|
}, props);
|
|
|
|
}
|
|
|
|
if (children.length === 1) {
|
|
|
|
if (isKey(children[0])) {
|
|
|
|
return extend({
|
|
|
|
type,
|
|
|
|
}, { text: children[0] }, props);
|
|
|
|
}
|
|
|
|
if (isFunction(children[0])) {
|
|
|
|
return extend({
|
|
|
|
type,
|
|
|
|
}, { items: children[0] }, props);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return extend({
|
|
|
|
type,
|
|
|
|
}, children.length > 0 ? { items: children } : {}, props);
|
|
|
|
}
|