{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-BZFW3FOF.cjs","../src/embed-shims/next-dynamic.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACqBA,8BAAyD;AAsBzD,IAAM,SAAA,EAAsB,CAAC,MAAA,EAAQ,QAAA,EAAA,GAAa;AAGhD,EAAA,MAAM,QAAA,EAAU,CAAA,EAAA,GACd,MAAA,CAAO,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,EAAA,GAAc,UAAA,GAAa,IAAA,EAAM,IAAA,EAAM,EAAE,OAAA,EAAS,IAAI,CAAE,CAAA;AACzE,EAAA,OAAO,yBAAA,OAAY,CAAA;AACrB,CAAA;AAEA,IAAI,KAAA,EAAkB,QAAA;AAOf,SAAS,eAAA,CAAgB,EAAA,EAAqB;AACnD,EAAA,KAAA,EAAO,EAAA;AACT;AAEe,SAAR,OAAA,CACL,MAAA,EACA,OAAA,EACkB;AAClB,EAAA,OAAO,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAC7B;ADtDA;AACA;AACE;AACA;AACF,qEAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-BZFW3FOF.cjs","sourcesContent":[null,"'use client'\n\n/**\n * `next/dynamic` shim — environment-aware lazy loader.\n *\n * Defaults to `React.lazy` so non-Next hosts (Vite, CRA, esbuild) work\n * out of the box. Callers MUST be wrapped in a `<Suspense>` boundary\n * somewhere up the tree (Next.js's runtime provides one automatically;\n * non-Next embedders provide their own).\n *\n * Next.js hosts can opt into the REAL `next/dynamic` (with SSR support,\n * loading components, prefetch hints) by calling {@link registerDynamic}\n * ONCE at app init:\n *\n *   // hub: lib/embed-shim-registration.ts\n *   import nextDynamic from 'next/dynamic'\n *   import { registerDynamic } from '@flamingo-stack/openframe-frontend-core/embed-shims'\n *   registerDynamic(nextDynamic)\n *\n * After registration, every lib call to this shim's default export\n * delegates to `next/dynamic`. Without registration, `ssr` / `loading`\n * options are ignored (React.lazy doesn't support them).\n */\nimport { lazy, type ComponentType, type ReactNode } from 'react'\n\ninterface DynamicOptions {\n  loading?: (props: {\n    error?: Error | null\n    isLoading?: boolean\n    pastDelay?: boolean\n    retry?: () => void\n    timedOut?: boolean\n  }) => ReactNode | null\n  ssr?: boolean\n  suspense?: boolean\n}\n\ntype DynamicLoader<P> = () => Promise<{ default: ComponentType<P> } | ComponentType<P>>\n\n/** Matches `next/dynamic`'s exported signature. */\ntype DynamicFn = <P extends Record<string, any> = Record<string, never>>(\n  loader: DynamicLoader<P>,\n  options?: DynamicOptions,\n) => ComponentType<P>\n\nconst fallback: DynamicFn = (loader, _options) => {\n  // React.lazy expects a loader returning { default }. Wrap loaders\n  // that return a bare component (legacy next/dynamic shape).\n  const wrapped = () =>\n    loader().then((mod: any) => ('default' in mod ? mod : { default: mod }))\n  return lazy(wrapped) as unknown as ComponentType<any>\n}\n\nlet impl: DynamicFn = fallback\n\n/**\n * Register the real `next/dynamic` so this shim delegates to it instead\n * of `React.lazy`. Call ONCE at app init in a Next.js host. The function\n * signature must match `next/dynamic`'s default export.\n */\nexport function registerDynamic(fn: DynamicFn): void {\n  impl = fn\n}\n\nexport default function dynamic<P extends Record<string, any> = Record<string, never>>(\n  loader: DynamicLoader<P>,\n  options?: DynamicOptions,\n): ComponentType<P> {\n  return impl(loader, options)\n}\n"]}