{"version":3,"file":"index.DLkh6RlS.js","sources":["../../../../../../../src/utils/render/components/index.tsx"],"sourcesContent":["import { ErrorBoundary } from '@babylon/ui-kit-helpers/error-boundary';\nimport type { FC, ReactElement } from 'react';\nimport { Children } from 'react';\n\nimport type { ComponentMap, ComponentPropMap, MainHomeOrderComponents } from '../types';\n\nexport const combineProps = (props: string[], componentPropMapping: ComponentPropMap) => {\n\tconst componentProps = props.map(propKey => componentPropMapping[propKey]);\n\tconst combinedComponentProps = Object.assign({}, ...componentProps);\n\n\treturn combinedComponentProps;\n};\n\n/*\n\tRender same as \"Context.order\" from Alexandria model, everything is based on the mappings,\n\tif a component/prop does not exist in the mapping, it will not be rendered.:\n\n\t1. filter out components that does not exist in componentMapping.\n\t2. map over components and render them.\n\t\t2.1. if component has props, combine them.\n\t\t2.2. if component has props but does not exist in componentPropMapping return null.\n\t3. if component has children, render them recursively and start from step 1.\n*/\nexport const renderComponentsWithHierarchyAndOrder = (\n\trenderComponents: MainHomeOrderComponents[],\n\tcomponentMapping: ComponentMap,\n\tcomponentPropMapping: ComponentPropMap\n): ReactElement => (\n\t<>\n\t\t{Children.toArray(\n\t\t\trenderComponents\n\t\t\t\t// filter out components that does not exist in componentMapping\n\t\t\t\t.filter(({ component }) => component in componentMapping)\n\t\t\t\t.map(({ component, props, children }) => {\n\t\t\t\t\tcomponentMapping[component].displayName = component;\n\t\t\t\t\tconst Component = ErrorBoundary(componentMapping[component]);\n\t\t\t\t\tconst componentProperties = combineProps(props ?? [], componentPropMapping);\n\n\t\t\t\t\t// component has props but does not exist in componentPropMapping (props with items and componentProps as {}).\n\t\t\t\t\tif (Object.keys(componentProperties).length === 0 && (props ?? []).length !== 0) return null;\n\n\t\t\t\t\treturn children ? (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{renderComponentsWithHierarchyAndOrder(children, componentMapping, componentPropMapping)}\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t)}\n\t>\n);\n\n// TODO: change props: any type\nexport const renderComponentsWithOrder = (order: string[], props: any, componentMapping: { [x: string]: FC }) => {\n\t// filter out components that does not exist in component mapping\n\tconst componentsOrderOnlyInMapping = order.filter(component => component in componentMapping && props[component]);\n\n\treturn componentsOrderOnlyInMapping.map((component, index) => {\n\t\tcomponentMapping[component].displayName = component;\n\t\tconst Component = ErrorBoundary(componentMapping[component]);\n\t\tconst componentProps = props[component];\n\t\treturn ;\n\t});\n};\n\nexport const excludeComponentsByList = (inputList: string[], excludeList: string[]) =>\n\tinputList.filter(item => !excludeList.includes(item));\n"],"names":["renderComponentsWithOrder","order","props","componentMapping","component","index","Component","ErrorBoundary","componentProps","jsx"],"mappings":"+CAsDO,MAAMA,EAA4B,CAACC,EAAiBC,EAAYC,IAEjCF,EAAM,OAAOG,GAAaA,KAAaD,GAAoBD,EAAME,CAAS,CAAC,EAE5E,IAAI,CAACA,EAAWC,IAAU,CAC5CF,EAAAC,CAAS,EAAE,YAAcA,EAC1C,MAAME,EAAYC,EAAcJ,EAAiBC,CAAS,CAAC,EACrDI,EAAiBN,EAAME,CAAS,EACtC,OAAQK,EAAAA,IAAAH,EAAA,CAAuB,GAAGE,CAAA,EAAXH,CAA2B,CAAA,CAClD"}