function callFunctions(d: (() => void)[]) {
for (let i = 0; i < d.length; i++) d[i]();
}
function Repeat(props: {
count: number;
children: (index: number) => JSX.Element;
fallback?: JSX.Element
}) {
let disposes: (() => void)[] = [];
const disposeAll = () => callFunctions(disposes)
onCleanup(disposeAll)
return createMemo<JSX.Element[] | JSX.Element>((arr) => {
const count = Number(props.count) || 0;
if (count <= 0) {
disposeAll();
return props.fallback || null;
}
if (!Array.isArray(arr)) arr = [];
const prev = arr.length;
if (count < prev) {
arr.length = count;
callFunctions(disposes.splice(count))
} else {
for (let i = prev; i < count; i++) {
arr.push(createRoot((dispose) => {
disposes.push(dispose);
return props.children(i)
}));
}
}
return [...arr];
}, []) as unknown as JSX.Element;
}
function callFunctions(d: (() => void)[]) {
for (let i = 0; i < d.length; i++) d[i]();
}
function Repeat(props: {
count: number;
children: (index: number) => JSX.Element;
fallback?: JSX.Element
}) {
let disposes: (() => void)[] = [];
const disposeAll = () => callFunctions(disposes)
onCleanup(disposeAll)
return createMemo<JSX.Element[] | JSX.Element>((arr) => {
const count = Number(props.count) || 0;
if (count <= 0) {
disposeAll();
return props.fallback || null;
}
if (!Array.isArray(arr)) arr = [];
const prev = arr.length;
if (count < prev) {
arr.length = count;
callFunctions(disposes.splice(count))
} else {
for (let i = prev; i < count; i++) {
arr.push(createRoot((dispose) => {
disposes.push(dispose);
return props.children(i)
}));
}
}
return [...arr];
}, []) as unknown as JSX.Element;
}