Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /** * Async — dynamic async component loader with loading skeleton. */ import {ProgressBar} from '../../primereact/index.js'; import React, {Suspense, lazy, type ComponentType} from 'react'; interface IAsyncProps { component: () => Promise<ComponentType<Record<string, unknown>>>; params?: Record<string, unknown>; fallback?: React.ReactNode; } export function Async({component, params, fallback}: IAsyncProps) { // Use lazy + Suspense for proper streaming const LazyComponent = lazy(async () => { const Comp = await component(); return {default: Comp}; }); return ( <Suspense fallback={ fallback ?? ( <div className="blong-async-loading"> <ProgressBar mode="indeterminate" style={{height: '3px'}} /> </div> ) } > <LazyComponent {...(params ?? {})} /> </Suspense> ); } |