import { useLazyModules } from '@websolutespa/bom-mixer-hooks'; import { ILazyComponent, ILazyModules } from '@websolutespa/bom-mixer-models'; import React from 'react'; import { Skeleton } from '../../components'; import { LAZY_MODULES } from '../lazy'; export type LazyLoaderProps = { components?: ILazyComponent[], modules?: ILazyModules, initialIndex?: number; }; const lazyLoadComponent = (component: ILazyComponent, modules: ILazyModules, index: number = 0): React.JSX.Element => { const key = (component.blockType || component.schema || 'unkown_type') as keyof typeof modules; const Component = modules[key] || modules['not-found' as keyof typeof modules]; return (); }; export const LazyLoader = ({ components, modules, initialIndex = 0 }: LazyLoaderProps) => { const lazyModules = useLazyModules(); if (!components) { return null; } const subModules = modules || { ...LAZY_MODULES, ...lazyModules }; return ( <> {components.map((component, index: number) => ( )}> {lazyLoadComponent(component, subModules, initialIndex + index)} ))} ); };