forked from enviPath/enviPy
Current Dev State
This commit is contained in:
60
static/js/ketcher2/node_modules/preact/src/h.js
generated
vendored
Normal file
60
static/js/ketcher2/node_modules/preact/src/h.js
generated
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
import { VNode } from './vnode';
|
||||
import options from './options';
|
||||
|
||||
|
||||
const stack = [];
|
||||
|
||||
const EMPTY_CHILDREN = [];
|
||||
|
||||
/** JSX/hyperscript reviver
|
||||
* Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0
|
||||
* @see http://jasonformat.com/wtf-is-jsx
|
||||
* @public
|
||||
*/
|
||||
export function h(nodeName, attributes) {
|
||||
let children=EMPTY_CHILDREN, lastSimple, child, simple, i;
|
||||
for (i=arguments.length; i-- > 2; ) {
|
||||
stack.push(arguments[i]);
|
||||
}
|
||||
if (attributes && attributes.children!=null) {
|
||||
if (!stack.length) stack.push(attributes.children);
|
||||
delete attributes.children;
|
||||
}
|
||||
while (stack.length) {
|
||||
if ((child = stack.pop()) && child.pop!==undefined) {
|
||||
for (i=child.length; i--; ) stack.push(child[i]);
|
||||
}
|
||||
else {
|
||||
if (child===true || child===false) child = null;
|
||||
|
||||
if ((simple = typeof nodeName!=='function')) {
|
||||
if (child==null) child = '';
|
||||
else if (typeof child==='number') child = String(child);
|
||||
else if (typeof child!=='string') simple = false;
|
||||
}
|
||||
|
||||
if (simple && lastSimple) {
|
||||
children[children.length-1] += child;
|
||||
}
|
||||
else if (children===EMPTY_CHILDREN) {
|
||||
children = [child];
|
||||
}
|
||||
else {
|
||||
children.push(child);
|
||||
}
|
||||
|
||||
lastSimple = simple;
|
||||
}
|
||||
}
|
||||
|
||||
let p = new VNode();
|
||||
p.nodeName = nodeName;
|
||||
p.children = children;
|
||||
p.attributes = attributes==null ? undefined : attributes;
|
||||
p.key = attributes==null ? undefined : attributes.key;
|
||||
|
||||
// if a "vnode hook" is defined, pass every created VNode to it
|
||||
if (options.vnode!==undefined) options.vnode(p);
|
||||
|
||||
return p;
|
||||
}
|
||||
Reference in New Issue
Block a user