diff --git a/src/lib/plugins/addSubRows.ts b/src/lib/plugins/addSubRows.ts index fa3e182..546c7af 100644 --- a/src/lib/plugins/addSubRows.ts +++ b/src/lib/plugins/addSubRows.ts @@ -35,8 +35,17 @@ export const addSubRows = NewTablePropSet > => () => { - const getChildren: ValidChildrenFn = - children instanceof Function ? children : (item) => item[children] as unknown as Item[]; + let getChildren: ValidChildrenFn; + if (children instanceof Function) { + getChildren = children; + } else { + getChildren = (item) => { + const unknownVal = item[children]; + return unknownVal instanceof Array && unknownVal.length > 0 + ? (unknownVal as unknown as Item[]) + : undefined; + }; + } const deriveRows: DeriveRowsFn = (rows) => { return derived(rows, ($rows) => { diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index bd41c2e..9e01450 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -32,7 +32,7 @@ import { getDistinct } from '../lib/utils/array.js'; import SelectIndicator from './_SelectIndicator.svelte'; - const data = readable(createSamples(2, 2)); + const data = readable(createSamples(5, 2)); let serverSide = false; diff --git a/src/routes/_createSamples.ts b/src/routes/_createSamples.ts index 63aeb2b..fa01e99 100644 --- a/src/routes/_createSamples.ts +++ b/src/routes/_createSamples.ts @@ -16,7 +16,9 @@ export const createSamples = (...lengths: number[]) => { return [...Array(length)].map(() => { return { ...getSample(), - ...(lengths[depth + 1] !== undefined ? { children: createSamplesLevel(depth + 1) } : {}), + ...(lengths[depth + 1] !== undefined && Math.random() >= 0.25 + ? { children: createSamplesLevel(depth + 1) } + : { children: [] }), }; }); };