MCPcopy Create free account
hub / github.com/MainframeOS/react-json-renderer / renderFromObject

Function renderFromObject

src/renderer.js:19–64  ·  view source on GitHub ↗
(
  tree: ConvertedElement,
  params?: RenderParams,
)

Source from the content-addressed store, hash-verified

17const Fallback = () => null
18
19export const renderFromObject = (
20 tree: ConvertedElement,
21 params?: RenderParams,
22) => {
23 const components = (params && params.components) || {}
24 components.Fragment = Fragment
25
26 const fallback = (params && params.fallback) || Fallback
27
28 const createChild = c => {
29 if (c == null) {
30 return null
31 }
32 if (Array.isArray(c)) {
33 return c.map(createChild)
34 }
35 if (
36 typeof c === 'boolean' ||
37 typeof c === 'number' ||
38 typeof c === 'string'
39 ) {
40 return c
41 }
42 if (c.type) {
43 return createFromObject(c)
44 }
45 return null
46 }
47
48 const createFromObject = (converted: ConvertedElement) => {
49 const component = components[converted.type] || fallback
50
51 if (!converted.props) {
52 return createElement(component)
53 }
54
55 const { children, ...props } = converted.props
56 if (children != null) {
57 // flowlint-next-line unclear-type:off
58 ;(props: Object).children = createChild(children)
59 }
60 return createElement(component, props)
61 }
62
63 return createFromObject(tree)
64}
65
66type RendererProps = {
67 json?: string,

Callers 2

renderer.jsFile · 0.90
renderMethod · 0.85

Calls 1

createFromObjectFunction · 0.85

Tested by

no test coverage detected