@virtualstate/examples
Version:
43 lines • 1.44 kB
JavaScript
import { ChildrenSource, isVNode } from "@virtualstate/fringe";
export function Sync(o, node) {
if (!node)
return undefined;
return createStaticSyncNode(node);
}
export function createStaticSyncNode(node) {
const children = node.children?.[ChildrenSource];
const staticChildren = {
[Symbol.asyncIterator]() {
let yielded = false;
return {
next() {
return {
then(resolve) {
if (yielded) {
return resolve({ done: true });
}
if (!Array.isArray(children)) {
return resolve({ done: true });
}
const nodes = children.filter(isVNode);
if (!nodes.length) {
return resolve({ done: true });
}
yielded = true;
return resolve({ done: false, value: nodes });
}
};
}
};
}
};
return new Proxy(node, {
get(target, p) {
if (p !== "children") {
return target[p];
}
return staticChildren;
}
});
}
//# sourceMappingURL=static.js.map