{"version":3,"file":"index.BkFR1le1.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 renderComponentsWithOrderAndCarouselsOrder = (\n\torder: string[],\n\tprops: any,\n\tcomponentMapping: { [x: string]: FC }\n) => {\n\tconst updatedOrder = [...order];\n\n\t// Insert the carousels placeholders in the order\n\tif (props?.carouselsOrder?.props?.order) {\n\t\tconst index = updatedOrder.findIndex(x => x === 'carouselsOrder');\n\t\tif (index !== -1) {\n\t\t\tconst carouselsOrder = props.carouselsOrder.props.order.map((x: string) => x.toLowerCase());\n\t\t\tupdatedOrder.splice(index, 1, ...carouselsOrder);\n\t\t}\n\t}\n\n\t// Filter out components that do not exist in the mapping\n\tconst componentsOrderOnlyInMapping = updatedOrder.filter(component => {\n\t\tconst componentProps = props[component];\n\n\t\tif (component.includes('component')) {\n\t\t\tconst nameComponentX = componentProps?.name;\n\t\t\treturn !!componentMapping[nameComponentX];\n\t\t}\n\t\treturn component in componentMapping && (componentProps ?? componentMapping[component]);\n\t});\n\n\t// Render components based on the updated order\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,EAAA,IAAAH,EAAA,CAAuB,GAAGE,CAAA,EAAXH,CAA2B,CAAA,CAClD"}