|
1 | 1 | import { type ComponentChangeHandler } from "@/lib/types/state/event"; |
2 | 2 | import { |
3 | | - type ComponentItem, |
| 3 | + type ComponentNode, |
4 | 4 | isComponentState, |
5 | 5 | } from "@/lib/types/state/component"; |
6 | 6 | import { Component } from "./Component"; |
7 | 7 |
|
8 | 8 | export interface ComponentChildrenProps { |
9 | | - components?: ComponentItem[]; |
| 9 | + nodes?: ComponentNode[]; |
10 | 10 | onChange: ComponentChangeHandler; |
11 | 11 | } |
12 | 12 |
|
13 | | -export function ComponentChildren({ |
14 | | - components, |
15 | | - onChange, |
16 | | -}: ComponentChildrenProps) { |
17 | | - if (!components || components.length === 0) { |
| 13 | +export function ComponentChildren({ nodes, onChange }: ComponentChildrenProps) { |
| 14 | + if (!nodes || nodes.length === 0) { |
18 | 15 | return null; |
19 | 16 | } |
20 | 17 | return ( |
21 | 18 | <> |
22 | | - {components.map((item, index) => { |
23 | | - if (isComponentState(item)) { |
24 | | - const key = item.id || index; |
25 | | - return <Component key={key} {...item} onChange={onChange} />; |
| 19 | + {nodes.map((node, index) => { |
| 20 | + if (isComponentState(node)) { |
| 21 | + const key = node.id || index; |
| 22 | + return <Component key={key} {...node} onChange={onChange} />; |
| 23 | + } else if (typeof node === "string") { |
| 24 | + return node; |
| 25 | + } else if (!node) { |
| 26 | + // This is ok, just as with React, don't render |
26 | 27 | } else { |
27 | | - return item; |
| 28 | + console.warn("chartlets: invalid child node encountered:", node); |
28 | 29 | } |
29 | 30 | })} |
30 | 31 | </> |
|
0 commit comments