nice-ui
Version:
React design system, components, and utilities
34 lines (33 loc) • 1.72 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const PlaceholderLazy_1 = require("../placeholders/PlaceholderLazy");
const PlaceholderContainer_1 = require("../placeholders/PlaceholderContainer");
const { createElement, Fragment } = React;
const renderChildren = (renderers, flat, idx, props, context) => {
const node = flat.nodes[idx];
if (!node || !node.children)
return null;
const areChildrenOfRootNode = node.idx === 0;
const needToRenderPlaceholders = context.placeholdersAfter && node.children.length > context.placeholdersAfter;
let renderLimit = node.children.length;
if (areChildrenOfRootNode && needToRenderPlaceholders) {
renderLimit = Math.min(context.placeholdersAfter, renderLimit);
}
const elements = [];
for (let i = 0; i < renderLimit; i++) {
const idx = node.children[i];
elements.push(createElement(Fragment, { key: idx }, renderers.node(renderers, flat, idx, props, context)));
}
if (areChildrenOfRootNode && needToRenderPlaceholders) {
const lastPlaceholderIndex = Math.min(node.children.length, renderLimit + (props.maxPlaceholders || 20));
const placeholders = [];
for (let i = renderLimit; i < lastPlaceholderIndex; i++) {
const idx = node.children[i];
placeholders.push(React.createElement(PlaceholderLazy_1.default, { key: idx, idx: idx }));
}
elements.push(props.to ? (React.createElement(PlaceholderContainer_1.default, { key: "placeholders", to: props.to }, placeholders)) : (React.createElement("div", null, placeholders)));
}
return elements;
};
exports.default = renderChildren;
;