remote-components 0.4.12 → 0.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-CLO56ON2.js → chunk-EIEIT5PG.js} +82 -4
- package/dist/chunk-EIEIT5PG.js.map +1 -0
- package/dist/{chunk-BEGVH64U.js → chunk-GG32LZD3.js} +2 -2
- package/dist/{chunk-SULMNRMJ.cjs → chunk-JKDPK6L5.cjs} +23 -23
- package/dist/{chunk-XWRB6CEA.cjs → chunk-MAVMKFFL.cjs} +3 -3
- package/dist/{chunk-RZGFQTX6.js → chunk-PNKSHWZ3.js} +8 -8
- package/dist/{chunk-HXCW3WDT.cjs → chunk-T2JJIQUJ.cjs} +25 -25
- package/dist/{chunk-TGE3K3TR.cjs → chunk-TIS6PXSQ.cjs} +18 -18
- package/dist/{chunk-YSJ4FKGI.cjs → chunk-WCZKEWRM.cjs} +97 -19
- package/dist/chunk-WCZKEWRM.cjs.map +1 -0
- package/dist/{chunk-3PR3SWYZ.js → chunk-WWHNG5YP.js} +38 -3
- package/dist/chunk-WWHNG5YP.js.map +1 -0
- package/dist/{chunk-M6ACTSVB.js → chunk-XLGLCKZZ.js} +2 -2
- package/dist/{chunk-24LEEDHP.js → chunk-YKCU7RFM.js} +3 -3
- package/dist/{chunk-6PZEDIAK.cjs → chunk-ZPJ5J24T.cjs} +47 -12
- package/dist/chunk-ZPJ5J24T.cjs.map +1 -0
- package/dist/config/nextjs.cjs +10 -10
- package/dist/config/nextjs.js +7 -7
- package/dist/config/tailwind.cjs +53 -0
- package/dist/config/tailwind.cjs.map +1 -0
- package/dist/config/tailwind.d.ts +21 -0
- package/dist/config/tailwind.js +53 -0
- package/dist/config/tailwind.js.map +1 -0
- package/dist/host/html.cjs +20 -20
- package/dist/host/html.js +8 -8
- package/dist/host/nextjs/app/client-only.cjs +21 -12
- package/dist/host/nextjs/app/client-only.cjs.map +1 -1
- package/dist/host/nextjs/app/client-only.js +18 -9
- package/dist/host/nextjs/app/client-only.js.map +1 -1
- package/dist/host/nextjs/app.cjs +2 -0
- package/dist/host/nextjs/app.cjs.map +1 -1
- package/dist/host/nextjs/app.js +2 -0
- package/dist/host/nextjs/app.js.map +1 -1
- package/dist/host/nextjs/pages.cjs +14 -7
- package/dist/host/nextjs/pages.cjs.map +1 -1
- package/dist/host/nextjs/pages.d.ts +2 -0
- package/dist/host/nextjs/pages.js +14 -7
- package/dist/host/nextjs/pages.js.map +1 -1
- package/dist/host/react.cjs +8 -8
- package/dist/host/react.js +7 -7
- package/dist/internal/host/nextjs/app-client.cjs +15 -6
- package/dist/internal/host/nextjs/app-client.cjs.map +1 -1
- package/dist/internal/host/nextjs/app-client.d.ts +3 -2
- package/dist/internal/host/nextjs/app-client.js +15 -6
- package/dist/internal/host/nextjs/app-client.js.map +1 -1
- package/dist/internal/host/nextjs/dom-flight.cjs +1 -0
- package/dist/internal/host/nextjs/dom-flight.cjs.map +1 -1
- package/dist/internal/host/nextjs/dom-flight.d.ts +1 -0
- package/dist/internal/host/nextjs/dom-flight.js +1 -0
- package/dist/internal/host/nextjs/dom-flight.js.map +1 -1
- package/dist/internal/host/nextjs/image-shared.cjs +11 -2
- package/dist/internal/host/nextjs/image-shared.cjs.map +1 -1
- package/dist/internal/host/nextjs/image-shared.d.ts +3 -1
- package/dist/internal/host/nextjs/image-shared.js +11 -2
- package/dist/internal/host/nextjs/image-shared.js.map +1 -1
- package/dist/internal/host/server/fetch-remote-component.cjs +58 -3
- package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -1
- package/dist/internal/host/server/fetch-remote-component.d.ts +1 -0
- package/dist/internal/host/server/fetch-remote-component.js +61 -3
- package/dist/internal/host/server/fetch-remote-component.js.map +1 -1
- package/dist/internal/host/server/types.cjs.map +1 -1
- package/dist/internal/host/server/types.d.ts +2 -0
- package/dist/internal/host/shared/next-image-deployment-id.cjs +50 -0
- package/dist/internal/host/shared/next-image-deployment-id.cjs.map +1 -0
- package/dist/internal/host/shared/next-image-deployment-id.d.ts +14 -0
- package/dist/internal/host/shared/next-image-deployment-id.js +25 -0
- package/dist/internal/host/shared/next-image-deployment-id.js.map +1 -0
- package/dist/internal/host/shared/pipeline.d.ts +2 -1
- package/dist/internal/host/shared/remote-image-loader.cjs +16 -2
- package/dist/internal/host/shared/remote-image-loader.cjs.map +1 -1
- package/dist/internal/host/shared/remote-image-loader.d.ts +2 -1
- package/dist/internal/host/shared/remote-image-loader.js +19 -2
- package/dist/internal/host/shared/remote-image-loader.js.map +1 -1
- package/dist/internal/runtime/html/parse-remote-html.d.ts +1 -0
- package/dist/internal/runtime/loaders/component-loader.d.ts +2 -1
- package/dist/remote/react/utils/portal.cjs +58 -0
- package/dist/remote/react/utils/portal.cjs.map +1 -0
- package/dist/remote/react/utils/portal.d.ts +12 -0
- package/dist/remote/react/utils/portal.js +58 -0
- package/dist/remote/react/utils/portal.js.map +1 -0
- package/dist/{server-handoff-9e905049.d.ts → server-handoff-006f9cb5.d.ts} +2 -0
- package/dist/{turbopack-43N2UJNN.js → turbopack-HK7DVYUG.js} +4 -4
- package/dist/{turbopack-5VGMYUL4.cjs → turbopack-YZOIO55D.cjs} +11 -11
- package/dist/{webpack-LXE2UWTA.js → webpack-2HP73JL7.js} +4 -4
- package/dist/{webpack-FSN5UBA2.cjs → webpack-W2MODB73.cjs} +11 -11
- package/package.json +18 -1
- package/dist/chunk-3PR3SWYZ.js.map +0 -1
- package/dist/chunk-6PZEDIAK.cjs.map +0 -1
- package/dist/chunk-CLO56ON2.js.map +0 -1
- package/dist/chunk-YSJ4FKGI.cjs.map +0 -1
- /package/dist/{chunk-BEGVH64U.js.map → chunk-GG32LZD3.js.map} +0 -0
- /package/dist/{chunk-SULMNRMJ.cjs.map → chunk-JKDPK6L5.cjs.map} +0 -0
- /package/dist/{chunk-XWRB6CEA.cjs.map → chunk-MAVMKFFL.cjs.map} +0 -0
- /package/dist/{chunk-RZGFQTX6.js.map → chunk-PNKSHWZ3.js.map} +0 -0
- /package/dist/{chunk-HXCW3WDT.cjs.map → chunk-T2JJIQUJ.cjs.map} +0 -0
- /package/dist/{chunk-TGE3K3TR.cjs.map → chunk-TIS6PXSQ.cjs.map} +0 -0
- /package/dist/{chunk-M6ACTSVB.js.map → chunk-XLGLCKZZ.js.map} +0 -0
- /package/dist/{chunk-24LEEDHP.js.map → chunk-YKCU7RFM.js.map} +0 -0
- /package/dist/{turbopack-43N2UJNN.js.map → turbopack-HK7DVYUG.js.map} +0 -0
- /package/dist/{turbopack-5VGMYUL4.cjs.map → turbopack-YZOIO55D.cjs.map} +0 -0
- /package/dist/{webpack-LXE2UWTA.js.map → webpack-2HP73JL7.js.map} +0 -0
- /package/dist/{webpack-FSN5UBA2.cjs.map → webpack-W2MODB73.cjs.map} +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
makeReactEmitter,
|
|
8
8
|
preparePipeline,
|
|
9
9
|
resolveNameFromSrc
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PNKSHWZ3.js";
|
|
11
11
|
import {
|
|
12
12
|
loadStaticRemoteComponent
|
|
13
13
|
} from "./chunk-LEKG4YWI.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
RUNTIME_WEBPACK,
|
|
22
22
|
attrToProp,
|
|
23
23
|
escapeString
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-WWHNG5YP.js";
|
|
25
25
|
import {
|
|
26
26
|
getNamespace
|
|
27
27
|
} from "./chunk-D5GNZB6O.js";
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
useRef as useRef3,
|
|
42
42
|
useState as useState2
|
|
43
43
|
} from "react";
|
|
44
|
-
import { createPortal } from "react-dom";
|
|
44
|
+
import { createPortal, preload } from "react-dom";
|
|
45
45
|
import { useRemoteComponentsContext as useRemoteComponentsContext2 } from "#internal/host/react/context";
|
|
46
46
|
|
|
47
47
|
// src/runtime/html/set-attributes-from-props.ts
|
|
@@ -222,6 +222,10 @@ function ConsumeRemoteComponent({
|
|
|
222
222
|
`[data-remote-component-id="shadowroot_${keySuffix}"]`
|
|
223
223
|
)?.shadowRoot?.innerHTML ?? document.getElementById(`__REMOTE_COMPONENT${name}`)?.innerHTML ?? document.querySelector(`div[data-bundle][data-route][id^="${name}"]`)?.innerHTML ?? document.querySelector("div[data-bundle][data-route]")?.innerHTML : null
|
|
224
224
|
);
|
|
225
|
+
const initialSsrContentRef = useRef3(htmlRef.current != null);
|
|
226
|
+
const [stylesReady, setStylesReady] = useState2(
|
|
227
|
+
() => !(typeof document !== "undefined" && isolate !== false && Boolean(src) && !initialSsrContentRef.current)
|
|
228
|
+
);
|
|
225
229
|
const endTemplateRef = useRef3(null);
|
|
226
230
|
const childrenRef = useRef3(
|
|
227
231
|
typeof document !== "undefined" ? (() => {
|
|
@@ -276,6 +280,59 @@ function ConsumeRemoteComponent({
|
|
|
276
280
|
}
|
|
277
281
|
}
|
|
278
282
|
}, [shadowRoot, remoteComponent, name]);
|
|
283
|
+
useLayoutEffect2(() => {
|
|
284
|
+
const currentSrc = src ? typeof src === "string" ? src : src.href : null;
|
|
285
|
+
if (stylesReady || initialSsrContentRef.current || !shadowRoot || !data || data.src !== currentSrc) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const expectedStylesheets = (data.links ?? []).filter(
|
|
289
|
+
(link) => link.rel === "stylesheet"
|
|
290
|
+
);
|
|
291
|
+
if (expectedStylesheets.length === 0) {
|
|
292
|
+
setStylesReady(true);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const expectedHrefs = new Set(
|
|
296
|
+
expectedStylesheets.map((link) => new URL(link.href, url).href)
|
|
297
|
+
);
|
|
298
|
+
const links = Array.from(
|
|
299
|
+
shadowRoot.querySelectorAll('link[rel="stylesheet"]')
|
|
300
|
+
).filter((link) => expectedHrefs.has(link.href));
|
|
301
|
+
if (links.length < expectedHrefs.size) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
if (links.length === 0) {
|
|
305
|
+
setStylesReady(true);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
let pending = links.length;
|
|
309
|
+
let settled = false;
|
|
310
|
+
const onSettled = () => {
|
|
311
|
+
pending -= 1;
|
|
312
|
+
if (!settled && pending <= 0) {
|
|
313
|
+
settled = true;
|
|
314
|
+
setStylesReady(true);
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const cleanups = links.map((link) => {
|
|
318
|
+
if (link.sheet) {
|
|
319
|
+
onSettled();
|
|
320
|
+
return () => {
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
link.addEventListener("load", onSettled, { once: true });
|
|
324
|
+
link.addEventListener("error", onSettled, { once: true });
|
|
325
|
+
return () => {
|
|
326
|
+
link.removeEventListener("load", onSettled);
|
|
327
|
+
link.removeEventListener("error", onSettled);
|
|
328
|
+
};
|
|
329
|
+
});
|
|
330
|
+
return () => {
|
|
331
|
+
for (const cleanup of cleanups) {
|
|
332
|
+
cleanup();
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}, [shadowRoot, data, stylesReady, src, url]);
|
|
279
336
|
useEffect2(() => {
|
|
280
337
|
if (src && src !== hostStateRef.current.prevSrc) {
|
|
281
338
|
const previousSrc = hostStateRef.current.prevSrc;
|
|
@@ -289,6 +346,9 @@ function ConsumeRemoteComponent({
|
|
|
289
346
|
const { signal } = hostStateRef.current.abortController;
|
|
290
347
|
emitter.beforeLoad(src);
|
|
291
348
|
hostStateRef.current.stage = "loading";
|
|
349
|
+
if (isolate !== false && !initialSsrContentRef.current) {
|
|
350
|
+
setStylesReady(false);
|
|
351
|
+
}
|
|
292
352
|
startTransition(async () => {
|
|
293
353
|
try {
|
|
294
354
|
let html = getRemoteComponentHtml(
|
|
@@ -367,6 +427,20 @@ function ConsumeRemoteComponent({
|
|
|
367
427
|
return acc;
|
|
368
428
|
}, {})
|
|
369
429
|
}));
|
|
430
|
+
const stylesheetLinks = Array.from(linkElements).filter(
|
|
431
|
+
(link) => link.getAttribute("rel") === "stylesheet"
|
|
432
|
+
);
|
|
433
|
+
if (typeof preload === "function") {
|
|
434
|
+
for (const link of stylesheetLinks) {
|
|
435
|
+
preload(
|
|
436
|
+
new URL(link.getAttribute("href") ?? link.href, url).href,
|
|
437
|
+
{
|
|
438
|
+
as: "style",
|
|
439
|
+
fetchPriority: "high"
|
|
440
|
+
}
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
370
444
|
const inlineScripts = (isRemoteComponent ? component : doc).querySelectorAll(
|
|
371
445
|
"script:not([src]):not([data-src]):not([id*='_rsc']):not([id='__NEXT_DATA__']):not([id='__REMOTE_NEXT_DATA__'])"
|
|
372
446
|
);
|
|
@@ -495,6 +569,7 @@ function ConsumeRemoteComponent({
|
|
|
495
569
|
);
|
|
496
570
|
emitter.load(src);
|
|
497
571
|
}
|
|
572
|
+
setStylesReady(true);
|
|
498
573
|
hostStateRef.current.stage = "loaded";
|
|
499
574
|
} else {
|
|
500
575
|
const result = await loadPrepared({
|
|
@@ -616,14 +691,17 @@ function ConsumeRemoteComponent({
|
|
|
616
691
|
if (shadowRemoteComponentHtml) {
|
|
617
692
|
shadowRemoteComponentHtml.remove();
|
|
618
693
|
}
|
|
694
|
+
const hideForStyles = !initialSsrContentRef.current && !stylesReady;
|
|
619
695
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
620
696
|
metadataJson,
|
|
697
|
+
hideForStyles ? children : null,
|
|
621
698
|
/* @__PURE__ */ jsxs(
|
|
622
699
|
"div",
|
|
623
700
|
{
|
|
624
701
|
"data-remote-component-id": `shadowroot_${keySuffix}`,
|
|
625
702
|
id: `shadowroot_${data?.name ?? name}`,
|
|
626
703
|
ref: shadowRootContainerRef,
|
|
704
|
+
style: hideForStyles ? { display: "none" } : void 0,
|
|
627
705
|
children: [
|
|
628
706
|
typeof document === "undefined" ? (
|
|
629
707
|
// eslint-disable-next-line react/no-unknown-property
|
|
@@ -679,4 +757,4 @@ export {
|
|
|
679
757
|
useRemoteNavigate,
|
|
680
758
|
ConsumeRemoteComponent
|
|
681
759
|
};
|
|
682
|
-
//# sourceMappingURL=chunk-
|
|
760
|
+
//# sourceMappingURL=chunk-EIEIT5PG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/host/react/index.tsx","../src/runtime/html/set-attributes-from-props.ts","../src/host/react/hooks/use-resolve-client-url.ts","../src/host/react/hooks/use-shadow-root.ts","../src/host/react/utils/extract-remote-html.ts","../src/host/react/hooks/use-remote-navigate.ts"],"sourcesContent":["import {\n startTransition,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal, preload } from 'react-dom';\nimport { useRemoteComponentsContext } from '#internal/host/react/context';\nimport { fetchWithHooks } from '#internal/host/server/fetch-with-hooks';\nimport { getClientOrServerUrl } from '#internal/host/server/get-client-or-server-url';\nimport type { ConsumeRemoteComponentConfig } from '#internal/host/shared/config';\nimport { makeReactEmitter } from '#internal/host/shared/lifecycle';\nimport { loadPrepared, preparePipeline } from '#internal/host/shared/pipeline';\nimport type { ConsumeServerData } from '#internal/host/shared/server-handoff';\nimport { createHostState } from '#internal/host/shared/state';\nimport { resolveNameFromSrc } from '#internal/host/utils/resolve-name-from-src';\nimport {\n DEFAULT_COMPONENT_NAME,\n DEFAULT_ROUTE,\n RUNTIME_SCRIPT,\n RUNTIME_WEBPACK,\n} from '#internal/runtime/constants';\nimport { setAttributesFromProps } from '#internal/runtime/html/set-attributes-from-props';\nimport { loadStaticRemoteComponent } from '#internal/runtime/loaders/static-loader';\nimport { getNamespace } from '#internal/runtime/namespace';\nimport { attrToProp, escapeString } from '#internal/utils';\nimport { isAbortError } from '#internal/utils/abort';\nimport {\n errorFromFailedFetch,\n RemoteComponentsError,\n} from '#internal/utils/error';\nimport type { MountOrUnmountFunction } from '#remote-components/runtime/types';\nimport { useResolveClientUrl } from './hooks/use-resolve-client-url';\nimport { useShadowRoot } from './hooks/use-shadow-root';\nimport {\n DUMMY_FALLBACK,\n getRemoteComponentHtml,\n} from './utils/extract-remote-html';\n\n/**\n * Props for the React remote component host.\n *\n * Extends {@link ConsumeRemoteComponentConfig} with `children` for loading\n * fallback content.\n *\n * To react to navigations originating from embedded remote components, set up\n * a single top-level subscription with `onRemoteNavigate` from\n * `remote-components/host/navigation` and route the event to your host's\n * router.\n */\nexport interface ConsumeRemoteComponentProps\n extends ConsumeRemoteComponentConfig {\n /** Loading fallback content displayed while the remote component is being fetched. */\n children?: React.ReactNode;\n}\n\n/**\n * ConsumeRemoteComponent is a React component that fetches and renders a remote component.\n * It supports SSR and can isolate the remote component in a shadow DOM.\n *\n * @param props - The properties for the remote component.\n * @returns A React component that renders the remote component.\n *\n * @example\n *\n * Use the `<ConsumeRemoteComponent>` in your React application to consume a remote component from a remote application:\n *\n * ```tsx\n * import { ConsumeRemoteComponent } from 'remote-components/host/react';\n *\n * export default function App() {\n * return (\n * <>\n * <h1>Welcome to My App</h1>\n * <p>This page consumes a remote component from another application.</p>\n * <ConsumeRemoteComponent src=\"/nextjs-app-remote/components/header\" />\n * </>\n * );\n * }\n * ```\n *\n * To share modules, you can provide a shared module map with references to the shared modules:\n *\n * ```tsx\n * <ConsumeRemoteComponent\n * src=\"/nextjs-app-remote/components/header\"\n * shared={{\n * '@/components/provider': () => import('@/components/host-provider')\n * }}\n * />\n * ```\n */\nexport function ConsumeRemoteComponent({\n src,\n isolate,\n mode = 'open',\n reset,\n credentials: credentialsProp,\n name: nameProp = DEFAULT_COMPONENT_NAME,\n shared: sharedProp,\n children,\n onBeforeLoad,\n onLoad,\n onError,\n onChange,\n onRequest,\n onResponse,\n resolveClientUrl: resolveClientUrlProp,\n}: ConsumeRemoteComponentProps) {\n const instanceId = useId();\n\n const { credentials: contextCredentials, shared: contextShared } =\n useRemoteComponentsContext();\n const credentials = credentialsProp ?? contextCredentials ?? 'same-origin';\n const shared = sharedProp ?? contextShared ?? {};\n const emitter = useMemo(\n () => makeReactEmitter({ onBeforeLoad, onLoad, onError, onChange }),\n [onBeforeLoad, onLoad, onError, onChange],\n );\n\n const name = useMemo(\n () => resolveNameFromSrc(src, nameProp),\n [src, nameProp],\n );\n\n const [data, setData] = useState<Omit<ConsumeServerData, 'children'> | null>(\n null,\n );\n\n const url = useMemo(() => getClientOrServerUrl(src, DUMMY_FALLBACK), [src]);\n\n const resolveClientUrl = useResolveClientUrl(resolveClientUrlProp, url.href);\n\n // for relative src paths, use just the pathname as the unique id.\n // for static urls, use the full url as the unique id as the path may not be unique.\n // this id needs to be the same for server and client side rendering.\n // note that if this needs to be more unique, can pass through the bundle as an id prop and ammend it to this id.\n const id =\n url.origin ===\n (typeof location !== 'undefined' ? location.origin : DUMMY_FALLBACK)\n ? url.pathname\n : url.href;\n\n //instanceId prevents multiple components with the same src from sharing a shadow root\n const keySuffix = `${escapeString(id)}_${escapeString(\n data?.name ?? name,\n )}_${escapeString(instanceId)}`;\n\n const [remoteComponent, setRemoteComponent] = useState<\n React.ReactNode | Error\n >(null);\n\n const { shadowRoot, shadowRootContainerRef } = useShadowRoot({\n isolate,\n mode,\n keySuffix,\n });\n\n const htmlRef = useRef<string | null>(\n typeof document !== 'undefined'\n ? (document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n )?.shadowRoot?.innerHTML ??\n document.getElementById(`__REMOTE_COMPONENT${name}`)?.innerHTML ??\n document.querySelector(`div[data-bundle][data-route][id^=\"${name}\"]`)\n ?.innerHTML ??\n document.querySelector('div[data-bundle][data-route]')?.innerHTML)\n : null,\n );\n // True when the shadow root already had SSR/declarative-shadow-DOM content at\n // mount — its styles are already present, so the FOUC-hiding below stays off.\n const initialSsrContentRef = useRef(htmlRef.current != null);\n\n // False until the remote's forwarded stylesheets load. A client-only shadow\n // root has no SSR style baseline, so the component would paint unstyled (FOUC)\n // before its `<link>`s load; we hide the host and show the `children`\n // placeholder until then. Starts \"not ready\" for client isolated loads so the\n // placeholder covers the whole fetch + style load, from first paint.\n const [stylesReady, setStylesReady] = useState(\n () =>\n !(\n typeof document !== 'undefined' &&\n isolate !== false &&\n Boolean(src) &&\n !initialSsrContentRef.current\n ),\n );\n\n const endTemplateRef = useRef<HTMLTemplateElement | null>(null);\n // collect initial content that needs to be removed after remote component renders\n const childrenRef = useRef(\n typeof document !== 'undefined'\n ? (() => {\n let el = document.querySelector(`template[id=\"${name}_start\"]`);\n const elements = [];\n while (el && el.id !== `${name}_end`) {\n if (\n el.id !== `${name}_start` &&\n !el.getAttribute('data-remote-component')\n ) {\n elements.push(el);\n }\n el = el.nextElementSibling as HTMLTemplateElement | null;\n }\n return elements;\n })()\n : [],\n );\n const hostStateRef = useRef(createHostState());\n const componentHydrationHtml = useRef<string | null>(null);\n const prevRemoteComponentContainerRef = useRef<HTMLDivElement | null>(null);\n const unmountRef = useRef<Set<MountOrUnmountFunction> | null>(null);\n\n // Clean up the shadow root cache on unmount to prevent memory leaks\n useLayoutEffect(() => {\n return () => {\n delete getNamespace().shadowRoots[keySuffix];\n };\n }, [keySuffix]);\n\n useLayoutEffect(() => {\n // Clear initial content after remote component renders\n if (childrenRef.current.length > 0 && remoteComponent) {\n childrenRef.current.forEach((el) => {\n el.remove();\n });\n childrenRef.current = [];\n }\n }, [remoteComponent]);\n\n useLayoutEffect(() => {\n if (shadowRoot && remoteComponent) {\n const resetStyles = shadowRoot.querySelectorAll(\n 'style[data-remote-components-reset]',\n );\n // ensure we only have one reset style in the shadow root\n if (resetStyles.length > 1) {\n resetStyles.forEach((style, index) => {\n if (\n index > 0 &&\n style.getAttribute('data-remote-components-reset') !== 'react'\n ) {\n style.remove();\n }\n });\n }\n\n // clear the html ref after hydration\n htmlRef.current = null;\n\n // clear all nodes except links and styles until the start marker\n // the marker gets only rendered on hydration\n let el: ChildNode | null = shadowRoot.childNodes[0] ?? null;\n while (el && (!('id' in el) || el.id !== `${name}_start`)) {\n const nextEl = el.nextSibling;\n if (el.nodeName !== 'LINK' && el.nodeName !== 'STYLE') {\n el.parentNode?.removeChild(el);\n }\n el = nextEl;\n }\n }\n }, [shadowRoot, remoteComponent, name]);\n\n // Reveal the hidden host once the remote's stylesheets are loaded. This reads\n // each `<link>`'s actual state rather than relying solely on `onLoad`, because\n // a `load` event does NOT fire for a stylesheet the browser already has cached\n // (e.g. on back-navigation, which reuses the same `<link>`) — so an onLoad-only\n // gate would stay hidden forever. An already-loaded link has a non-null\n // `.sheet`; for the rest we wait for `load`/`error` (error too, so a failed\n // sheet can't pin the host hidden). Runs whenever a load produces new `data`.\n useLayoutEffect(() => {\n const currentSrc = src ? (typeof src === 'string' ? src : src.href) : null;\n if (\n stylesReady ||\n initialSsrContentRef.current ||\n !shadowRoot ||\n !data ||\n data.src !== currentSrc\n ) {\n return;\n }\n const expectedStylesheets = (data.links ?? []).filter(\n (link) => link.rel === 'stylesheet',\n );\n if (expectedStylesheets.length === 0) {\n setStylesReady(true);\n return;\n }\n const expectedHrefs = new Set(\n expectedStylesheets.map((link) => new URL(link.href as string, url).href),\n );\n const links = Array.from(\n shadowRoot.querySelectorAll<HTMLLinkElement>('link[rel=\"stylesheet\"]'),\n ).filter((link) => expectedHrefs.has(link.href));\n // The expected links may not have been portaled into the shadow root yet.\n if (links.length < expectedHrefs.size) {\n return;\n }\n // Defensive: if the expected set collapsed to nothing, reveal rather than\n // risk pinning the host hidden.\n if (links.length === 0) {\n setStylesReady(true);\n return;\n }\n let pending = links.length;\n let settled = false;\n const onSettled = () => {\n pending -= 1;\n if (!settled && pending <= 0) {\n settled = true;\n setStylesReady(true);\n }\n };\n const cleanups = links.map((link) => {\n if (link.sheet) {\n onSettled();\n return () => {};\n }\n link.addEventListener('load', onSettled, { once: true });\n link.addEventListener('error', onSettled, { once: true });\n return () => {\n link.removeEventListener('load', onSettled);\n link.removeEventListener('error', onSettled);\n };\n });\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }, [shadowRoot, data, stylesReady, src, url]);\n\n useEffect(() => {\n if (src && src !== hostStateRef.current.prevSrc) {\n const previousSrc = hostStateRef.current.prevSrc;\n const previousName = hostStateRef.current.prevName;\n hostStateRef.current.prevSrc = src;\n\n if (previousSrc !== null) {\n htmlRef.current = null;\n }\n\n // Abort any in-progress load so the latest src always wins.\n hostStateRef.current.abortController?.abort();\n hostStateRef.current.abortController = new AbortController();\n const { signal } = hostStateRef.current.abortController;\n\n emitter.beforeLoad(src);\n hostStateRef.current.stage = 'loading';\n\n // Re-show the placeholder for the whole of this load on client isolated renders.\n if (isolate !== false && !initialSsrContentRef.current) {\n setStylesReady(false);\n }\n\n startTransition(async () => {\n try {\n let html = getRemoteComponentHtml(\n htmlRef.current ??\n (endTemplateRef.current?.previousElementSibling?.tagName === 'div'\n ? endTemplateRef.current.previousElementSibling.innerHTML\n : ''),\n );\n\n if (!html && src) {\n // fetch the remote component\n const fetchInit = {\n credentials,\n } as RequestInit;\n\n const resolvedUrl = new URL(\n resolveClientUrl?.(url.href) ?? url.href,\n location.href,\n );\n const res = await fetchWithHooks(resolvedUrl, fetchInit, {\n onRequest,\n onResponse,\n abortController: hostStateRef.current.abortController,\n });\n\n if (!res || !res.ok) {\n throw await errorFromFailedFetch(url.href, resolvedUrl, res);\n }\n\n // get the full HTML content as a string\n const remoteHtml = await res.text();\n if (signal.aborted) return;\n htmlRef.current = remoteHtml;\n html = getRemoteComponentHtml(remoteHtml);\n }\n\n if (signal.aborted) return;\n\n const userShared = await shared;\n if (signal.aborted) return;\n\n const prepared = preparePipeline({\n html,\n name,\n url,\n shared: userShared,\n resolveClientUrl,\n });\n const { doc, parsed } = prepared;\n const {\n component,\n name: remoteName,\n isRemoteComponent,\n metadata,\n rsc,\n remoteShared,\n links: linkElements,\n } = parsed;\n\n if (hostStateRef.current.prevIsRemoteComponent) {\n if (shadowRoot) {\n shadowRoot.innerHTML = '';\n }\n const prevUrl = hostStateRef.current.prevUrl;\n if (prevUrl && getNamespace().unmountFns[prevUrl.href]) {\n const unmountPromises = Promise.all(\n Array.from(unmountRef.current ?? []).map(async (unmount) =>\n unmount(\n shadowRoot ?? prevRemoteComponentContainerRef.current,\n ),\n ),\n );\n unmountRef.current = null;\n await unmountPromises;\n }\n }\n hostStateRef.current.prevIsRemoteComponent = isRemoteComponent;\n hostStateRef.current.prevUrl = url;\n hostStateRef.current.prevName = remoteName;\n\n const links = linkElements.map((link) => ({\n href: new URL(link.getAttribute('href') ?? link.href, url).href,\n ...link\n .getAttributeNames()\n .reduce<Record<string, string>>((acc, key) => {\n if (key !== 'href') {\n acc[attrToProp[key] ?? key] = link.getAttribute(key) ?? '';\n }\n return acc;\n }, {}),\n }));\n\n const stylesheetLinks = Array.from(linkElements).filter(\n (link) => link.getAttribute('rel') === 'stylesheet',\n );\n\n // Preload the stylesheets now, before the remote's scripts are fetched\n // and evaluated below. The CSS download then overlaps that (much\n // larger) work instead of starting only when the shadow `<link>`s\n // render — so the reveal isn't waiting on CSS queued behind the JS.\n // The browser matches each preload to the later shadow `<link>` by\n // URL, so there's no double fetch. Matches the Next App Router host.\n if (typeof preload === 'function') {\n for (const link of stylesheetLinks) {\n preload(\n new URL(link.getAttribute('href') ?? link.href, url).href,\n {\n as: 'style',\n fetchPriority: 'high',\n },\n );\n }\n }\n\n // handle inline scripts in the remote component\n const inlineScripts = (\n isRemoteComponent ? component : doc\n ).querySelectorAll(\n \"script:not([src]):not([data-src]):not([id*='_rsc']):not([id='__NEXT_DATA__']):not([id='__REMOTE_NEXT_DATA__'])\",\n );\n\n if (!isRemoteComponent) {\n // Next.js Script support\n const self = globalThis as typeof globalThis & {\n __next_s: [string, Record<string, string>][];\n };\n const prevNextScripts = self.__next_s;\n const nextScripts = [] as [string, Record<string, string>][];\n // eslint-disable-next-line camelcase\n self.__next_s = nextScripts;\n\n // TODO: needs to be cancellable with a singular listener for the abort signal https://linear.app/vercel/issue/MFES-1253/handle-abortcontroller-clean-up-scenarios\n await Promise.all(\n Array.from(inlineScripts)\n .filter(\n (script) =>\n !(\n script.id.endsWith('_shared') &&\n script.getAttribute('type') === 'application/json' &&\n typeof script.getAttribute(\n 'data-remote-components-shared',\n ) === 'string'\n ),\n )\n .map((script) => {\n return new Promise((resolve) => {\n // only handle inline scripts with content, but not Next.js RSC scripts\n if (\n script.textContent &&\n !script.textContent.includes('self.__next_f=') &&\n !script.textContent.includes('self.__next_f.push')\n ) {\n // if script is inline javascript, then execute using blob\n if (\n !script.getAttribute('type') ||\n script.getAttribute('type') === 'text/javascript' ||\n script.getAttribute('type') === 'application/javascript'\n ) {\n const newScript = document.createElement('script');\n\n // scripts loaded from external sources needs this workaround\n const blob = new Blob([script.textContent], {\n type: 'application/javascript',\n });\n const blobUrl = URL.createObjectURL(blob);\n\n newScript.onload = () => {\n resolve(undefined);\n // script executed and safe to remove\n URL.revokeObjectURL(blobUrl);\n newScript.remove();\n };\n // on error we still want to resolve to not block the remote component loading\n newScript.onerror = () => {\n URL.revokeObjectURL(blobUrl);\n newScript.remove();\n resolve(undefined);\n };\n\n newScript.src = blobUrl;\n // TODO: needs to be cancellable https://linear.app/vercel/issue/MFES-1253/handle-abortcontroller-clean-up-scenarios\n document.body.appendChild(newScript);\n } else {\n resolve(undefined);\n document.body.appendChild(script);\n }\n } else {\n resolve(undefined);\n }\n });\n }),\n );\n // process the remote component Next.js Script container\n nextScripts.forEach(([scriptSrc, props]) => {\n const script = document.createElement('script');\n // when we have a script src, apply it (inline scripts have `0` as src)\n if (scriptSrc) {\n script.src = scriptSrc;\n }\n // apply Script props\n if (typeof props.children === 'string') {\n script.textContent = props.children;\n }\n setAttributesFromProps(script, props);\n document.head.appendChild(script);\n });\n // restore previous Next.js Script container\n // eslint-disable-next-line camelcase\n self.__next_s = prevNextScripts;\n }\n\n const rscName = rsc\n ? `__remote_component_rsc_${escapeString(id)}_${escapeString(\n remoteName,\n )}`\n : undefined;\n if (rsc) {\n rsc.textContent =\n rsc.textContent?.replace(\n new RegExp(`self\\\\[\"${remoteName}\"\\\\]`, 'g'),\n `self[\"${rscName}\"]`,\n ) ?? '';\n document.body.appendChild(rsc);\n }\n\n const newData = {\n ...metadata,\n links,\n remoteShared,\n src: typeof src === 'string' ? src : src.href,\n serverUrl: url.href,\n data: rsc\n ? (rsc.textContent || '').split('\\n').filter(Boolean)\n : [],\n };\n\n componentHydrationHtml.current = `${Array.from(\n doc.querySelectorAll('link,style'),\n )\n .map((link) => link.outerHTML)\n .join('')}${\n reset\n ? `<style data-remote-components-reset=\"\">:host { all: initial; }</style>`\n : ''\n }${component.innerHTML}`;\n\n if (isRemoteComponent) {\n // Only call onChange when not on first load (matching HTML implementation)\n if (previousSrc !== undefined) {\n emitter.change({\n previousSrc: previousSrc ?? null,\n nextSrc: src,\n previousName,\n nextName: remoteName,\n });\n }\n setData(newData);\n if (shadowRoot) {\n const shadowRootHtml = reset\n ? `<style data-remote-components-reset=\"\">:host { all: initial; }</style>${component.innerHTML}`\n : component.innerHTML;\n shadowRoot.innerHTML = shadowRootHtml;\n htmlRef.current = null;\n setRemoteComponent(null);\n const { mount, unmount } = await loadStaticRemoteComponent(\n Array.from(shadowRoot.querySelectorAll('script')),\n url,\n resolveClientUrl,\n );\n unmountRef.current = unmount;\n await Promise.all(\n Array.from(mount).map((mountFn) => mountFn(shadowRoot)),\n );\n emitter.load(src);\n } else if (isolate === false) {\n setRemoteComponent(\n // TODO: remove wrapper div by converting HTML to RSC or React tree\n <div\n dangerouslySetInnerHTML={{ __html: component.innerHTML }}\n ref={prevRemoteComponentContainerRef}\n />,\n );\n htmlRef.current = null;\n const { mount, unmount } = await loadStaticRemoteComponent(\n Array.from(component.querySelectorAll('script')),\n url,\n resolveClientUrl,\n );\n unmountRef.current = unmount;\n await Promise.all(\n Array.from(mount).map((mountFn) =>\n mountFn(prevRemoteComponentContainerRef.current),\n ),\n );\n emitter.load(src);\n }\n // Static remotes inject styles directly (no portal links → `onLoad`\n // never fires), so reveal now; the gate only covers the dynamic path.\n setStylesReady(true);\n hostStateRef.current.stage = 'loaded';\n } else {\n const result = await loadPrepared({\n prepared,\n url,\n signal,\n shared: userShared,\n resolveClientUrl,\n container: shadowRoot,\n rscName,\n });\n if (rsc) {\n rsc.remove();\n }\n\n setData(newData);\n // Only call onChange when not on first load (matching HTML implementation)\n if (previousSrc !== undefined) {\n emitter.change({\n previousSrc: previousSrc ?? null,\n nextSrc: src,\n previousName,\n nextName: remoteName,\n });\n }\n if (result.status === 'aborted') {\n return;\n }\n if (result.status === 'error') {\n hostStateRef.current.stage = 'error';\n setRemoteComponent(result.error);\n emitter.error(result.error);\n } else if (result.status === 'loaded') {\n hostStateRef.current.stage = 'loaded';\n setRemoteComponent(result.component);\n emitter.load(src);\n }\n }\n } catch (error) {\n // AbortError is expected when loading is cancelled - exit cleanly\n if (isAbortError(error)) {\n hostStateRef.current.stage = 'idle';\n return;\n }\n hostStateRef.current.stage = 'error';\n setRemoteComponent(error as Error);\n emitter.error(error);\n }\n });\n }\n }, [\n url,\n src,\n isolate,\n credentials,\n name,\n shared,\n shadowRoot,\n reset,\n id,\n emitter.beforeLoad,\n emitter.load,\n emitter.error,\n emitter.change,\n onRequest,\n onResponse,\n resolveClientUrl,\n ]);\n\n if (remoteComponent instanceof Error) {\n throw remoteComponent;\n }\n\n const metadataJson = (\n <script data-remote-component type=\"application/json\">\n {JSON.stringify({\n name: data?.name || name,\n bundle: data?.bundle || 'default',\n route: data?.route || DEFAULT_ROUTE,\n runtime: hostStateRef.current.prevIsRemoteComponent\n ? RUNTIME_SCRIPT\n : data?.runtime || RUNTIME_WEBPACK,\n })}\n </script>\n );\n const resetStyle = reset ? (\n <style data-remote-components-reset=\"react\">{`:host { all: initial; }`}</style>\n ) : null;\n const linksToRender: React.ReactNode[] | null =\n data?.links?.map((link) => (\n <link\n {...link}\n href={new URL(link.href as string, url).href}\n key={JSON.stringify(link)}\n />\n )) || null;\n const componentToRender = (\n <>\n {resetStyle}\n {linksToRender}\n {remoteComponent ?? children}\n </>\n );\n\n if (componentHydrationHtml.current && shadowRoot && !shadowRoot.innerHTML) {\n shadowRoot.innerHTML = componentHydrationHtml.current;\n componentHydrationHtml.current = null;\n\n if (hostStateRef.current.prevIsRemoteComponent) {\n // ensure we load static resources when hydrating a remote component in shadow DOM\n loadStaticRemoteComponent(\n Array.from(shadowRoot.querySelectorAll('script')),\n url,\n resolveClientUrl,\n )\n .then(({ mount }) => {\n return Promise.all(\n Array.from(mount).map((mountFn) => mountFn(shadowRoot)),\n );\n })\n .then(() => {\n if (src) {\n emitter.load(src);\n }\n })\n .catch((e) => {\n const error = new RemoteComponentsError(\n `Error mounting remote component from \"${url.href}\"`,\n {\n cause: e,\n },\n );\n setRemoteComponent(error);\n emitter.error(error);\n });\n }\n }\n\n if (isolate !== false) {\n const shadowRemoteComponentHtml =\n shadowRoot?.querySelector(`#__REMOTE_COMPONENT${name}`) ??\n shadowRoot?.querySelector('div[data-bundle][data-route]');\n if (shadowRemoteComponentHtml) {\n shadowRemoteComponentHtml.remove();\n }\n\n // While stylesheets are pending, `display: none` the shadow host (its\n // `<link>`s still load, so `onLoad` fires) and render the `children`\n // placeholder in the light DOM, where the host page styles it.\n const hideForStyles = !initialSsrContentRef.current && !stylesReady;\n\n return (\n <>\n {metadataJson}\n {hideForStyles ? children : null}\n <div\n data-remote-component-id={`shadowroot_${keySuffix}`}\n id={`shadowroot_${data?.name ?? name}`}\n ref={shadowRootContainerRef}\n style={hideForStyles ? { display: 'none' } : undefined}\n >\n {typeof document === 'undefined' ? (\n // eslint-disable-next-line react/no-unknown-property\n <template shadowrootmode={mode}>\n {typeof document === 'undefined' ? (\n <div\n dangerouslySetInnerHTML={{\n __html: `<img\n alt=\"\" decoding=\"async\" style=\"display:none\"\n src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==\"\n onload=\"(function(el){\n // Capture the shadow root during SSR hydration so the client-side\n // useShadowRoot hook can find it.\n const root = el.getRootNode();\n globalThis.__remote_components_shadowroot_${keySuffix}=root;\n el.parentElement.remove();\n })(this)\"\n />`,\n }}\n />\n ) : null}\n {resetStyle}\n {linksToRender}\n {children}\n </template>\n ) : null}\n {shadowRoot && remoteComponent\n ? createPortal(\n <>\n <template id={`${name}_start`} />\n {resetStyle}\n {linksToRender}\n {remoteComponent}\n <template id={`${name}_end`} ref={endTemplateRef} />\n </>,\n shadowRoot,\n )\n : null}\n </div>\n </>\n );\n }\n htmlRef.current = null;\n\n // render start/end markers for the remote component\n return (\n <>\n <template id={`${name}_start`} />\n {metadataJson}\n {componentToRender}\n <template id={`${name}_end`} ref={endTemplateRef} />\n </>\n );\n}\n\nexport type {\n HookOptions,\n OnRequestHook,\n OnResponseHook,\n} from '#internal/host/shared/fetch-interceptors';\nexport type { RemoteNavigateEvent } from '#internal/host/shared/navigate-event';\nexport { useRemoteNavigate } from './hooks/use-remote-navigate';\n","// extracted from Next.js source at https://github.com/vercel/next.js/blob/canary/packages/next/src/client/set-attributes-from-props.ts\n\nconst DOMAttributeNames: Record<string, string> = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule',\n};\n\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets',\n];\n\nfunction isBooleanScriptAttribute(\n attr: string,\n): attr is 'async' | 'defer' | 'noModule' {\n return ['async', 'defer', 'noModule'].includes(attr);\n}\n\nexport function setAttributesFromProps(el: HTMLElement, props: object) {\n for (const [p, value] of Object.entries(props)) {\n if (!Object.hasOwn(props, p)) continue;\n if (ignoreProps.includes(p)) continue;\n\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue;\n }\n\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n (el as HTMLScriptElement)[attr] = Boolean(value);\n } else {\n el.setAttribute(attr, String(value));\n }\n\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (\n value === false ||\n (el.tagName === 'SCRIPT' &&\n isBooleanScriptAttribute(attr) &&\n (!value || value === 'false'))\n ) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '');\n el.removeAttribute(attr);\n }\n }\n}\n","import { useMemo } from 'react';\nimport { useRemoteComponentsContext } from '#internal/host/react/context';\nimport { bindResolveClientUrl } from '#internal/runtime/url/default-resolve-client-url';\nimport type { ResolveClientUrl } from '#internal/runtime/url/resolve-client-url';\n\nexport function useResolveClientUrl(\n prop: ResolveClientUrl | undefined,\n urlHref: string,\n) {\n const { resolveClientUrl: contextValue } = useRemoteComponentsContext();\n const raw = prop ?? contextValue;\n return useMemo(() => bindResolveClientUrl(raw, urlHref), [raw, urlHref]);\n}\n","import { useLayoutEffect, useRef, useState } from 'react';\nimport { getNamespace } from '#internal/runtime/namespace';\n\ninterface UseShadowRootOptions {\n /** Whether CSS isolation is enabled */\n isolate: boolean | undefined;\n /** Shadow DOM mode */\n mode: 'open' | 'closed';\n /** Unique key suffix for identifying this shadow root */\n keySuffix: string;\n}\n\ninterface UseShadowRootResult {\n /** The shadow root element, or null if not isolated */\n shadowRoot: ShadowRoot | null;\n /** Ref to attach to the shadow host container element */\n shadowRootContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages shadow root lifecycle for CSS isolation.\n *\n * Handles:\n * - Initial shadow root discovery from SSR or declarative shadow DOM\n * - Creating shadow root as fallback for browsers without declarative shadow DOM support\n * - Cleanup when isolation is disabled\n * - Re-attachment when isolation is re-enabled\n */\nexport function useShadowRoot({\n isolate,\n mode,\n keySuffix,\n}: UseShadowRootOptions): UseShadowRootResult {\n const shadowRootContainerRef = useRef<HTMLDivElement | null>(null);\n\n const [shadowRoot, setShadowRoot] = useState<ShadowRoot | null>(() => {\n const shadowRoots = getNamespace().shadowRoots;\n const ssrShadowRoot =\n typeof document !== 'undefined'\n ? (document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n )?.shadowRoot ??\n shadowRoots[keySuffix] ??\n null)\n : null;\n // Clear the reference after reading it\n shadowRoots[keySuffix] = null;\n return ssrShadowRoot;\n });\n\n useLayoutEffect(() => {\n const shadowRoots = getNamespace().shadowRoots;\n if (\n isolate !== false &&\n typeof document !== 'undefined' &&\n (!shadowRoot || !shadowRoot.isConnected)\n ) {\n let shadowRootElement: ShadowRoot | null = null;\n const element = document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n );\n shadowRootElement = shadowRoots[keySuffix] ?? element?.shadowRoot ?? null;\n\n if (!shadowRootElement && element) {\n // Create a shadow root if it doesn't exist.\n // This is a fallback for browsers that don't support declarative shadow DOM.\n try {\n shadowRootElement = element.attachShadow({ mode });\n shadowRoots[keySuffix] = shadowRootElement;\n } catch {\n // Do nothing if attachShadow fails because of existing shadow root\n }\n }\n\n if (shadowRootElement) {\n // Remove all nodes from the shadow root except links (preserves stylesheets)\n shadowRootElement.querySelectorAll('*:not(link)').forEach((node) => {\n node.remove();\n });\n setShadowRoot(shadowRootElement);\n }\n } else if (isolate === false && shadowRoot) {\n shadowRoots[keySuffix] = null;\n setShadowRoot(null);\n }\n }, [isolate, shadowRoot, mode, keySuffix]);\n\n return { shadowRoot, shadowRootContainerRef };\n}\n","import { DEFAULT_COMPONENT_NAME } from '#internal/runtime/constants';\n\n/**\n * Dummy URL used as a fallback base for URL parsing when no real base URL is available.\n * This is used during SSR or when location is not defined.\n */\nexport const DUMMY_FALLBACK = 'http://remote-components-dummy-fallback';\n\n/**\n * Extracts the relevant HTML content from a remote component response.\n *\n * Handles multiple remote component formats:\n * - Next.js Pages Router SSR wrapper (`div[id^=\"__REMOTE_COMPONENT\"]`)\n * - App Router remote components (`div[data-bundle][data-route]`)\n * - Next.js pages (`div#__next`)\n * - Web component format (`remote-component:not([src])`)\n *\n * @param html - Raw HTML string from the remote component response\n * @returns Extracted HTML content with links and scripts, or empty string if not found\n */\nexport function getRemoteComponentHtml(html: string): string {\n if (typeof document === 'undefined') return html;\n\n const parser = new DOMParser();\n const temp = parser.parseFromString(html, 'text/html');\n\n // Used by the Next.js Pages Router remote as a wrapper\n const ssrRemoteComponentContainer = temp.querySelector(\n 'div[id^=\"__REMOTE_COMPONENT\"]',\n );\n if (ssrRemoteComponentContainer) {\n return ssrRemoteComponentContainer.innerHTML;\n }\n\n // Remote component content from various sources\n const remoteComponentContainer = temp.querySelectorAll(\n `div[data-bundle][data-route][data-runtime][id^=\"${DEFAULT_COMPONENT_NAME}\"],div[data-bundle][data-route],div#__next,remote-component:not([src])`,\n );\n if (remoteComponentContainer.length > 0) {\n return `${Array.from(temp.querySelectorAll('link,script'))\n .map((link) => link.outerHTML)\n .join('')}${Array.from(remoteComponentContainer)\n .map((container) => container.outerHTML)\n .join('')}`;\n }\n\n return '';\n}\n","import { useEffect, useRef } from 'react';\nimport { onRemoteNavigate } from '#internal/host/navigation';\nimport type { RemoteNavigateEvent } from '#internal/host/shared/navigate-event';\n\n/**\n * Subscribe to remote component navigations. The callback is captured in a ref\n * so the listener is registered once — no `useCallback` or dep array needed.\n *\n * @example React Router\n * ```tsx\n * const navigate = useNavigate();\n * // Always replace — the polyfill already pushed/replaced the browser history entry.\n * useRemoteNavigate((e) => navigate(e.pathname + e.search, { replace: true }));\n * ```\n */\nexport function useRemoteNavigate(\n callback: (event: RemoteNavigateEvent) => void,\n): void {\n const callbackRef = useRef(callback);\n // Written during render (not in an effect) — the standard useCallbackRef\n // pattern. Safe under concurrent rendering: navigation events are user-driven\n // and can't fire mid-render.\n callbackRef.current = callback;\n useEffect(() => onRemoteNavigate((event) => callbackRef.current(event)), []);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA,aAAAA;AAAA,EACA;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AACP,SAAS,cAAc,eAAe;AACtC,SAAS,8BAAAC,mCAAkC;;;ACR3C,IAAM,oBAA4C;AAAA,EAChD,eAAe;AAAA,EACf,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,yBACP,MACwC;AACxC,SAAO,CAAC,SAAS,SAAS,UAAU,EAAE,SAAS,IAAI;AACrD;AAEO,SAAS,uBAAuB,IAAiB,OAAe;AACrE,aAAW,CAAC,GAAG,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,QAAI,CAAC,OAAO,OAAO,OAAO,CAAC;AAAG;AAC9B,QAAI,YAAY,SAAS,CAAC;AAAG;AAG7B,QAAI,UAAU,QAAW;AACvB;AAAA,IACF;AAEA,UAAM,OAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY;AAEnD,QAAI,GAAG,YAAY,YAAY,yBAAyB,IAAI,GAAG;AAG7D,MAAC,GAAyB,IAAI,IAAI,QAAQ,KAAK;AAAA,IACjD,OAAO;AACL,SAAG,aAAa,MAAM,OAAO,KAAK,CAAC;AAAA,IACrC;AAIA,QACE,UAAU,SACT,GAAG,YAAY,YACd,yBAAyB,IAAI,MAC5B,CAAC,SAAS,UAAU,UACvB;AAGA,SAAG,aAAa,MAAM,EAAE;AACxB,SAAG,gBAAgB,IAAI;AAAA,IACzB;AAAA,EACF;AACF;;;AC5DA,SAAS,eAAe;AACxB,SAAS,kCAAkC;AAIpC,SAAS,oBACd,MACA,SACA;AACA,QAAM,EAAE,kBAAkB,aAAa,IAAI,2BAA2B;AACtE,QAAM,MAAM,QAAQ;AACpB,SAAO,QAAQ,MAAM,qBAAqB,KAAK,OAAO,GAAG,CAAC,KAAK,OAAO,CAAC;AACzE;;;ACZA,SAAS,iBAAiB,QAAQ,gBAAgB;AA4B3C,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,yBAAyB,OAA8B,IAAI;AAEjE,QAAM,CAAC,YAAY,aAAa,IAAI,SAA4B,MAAM;AACpE,UAAM,cAAc,aAAa,EAAE;AACnC,UAAM,gBACJ,OAAO,aAAa,cACf,SAAS;AAAA,MACR,yCAAyC;AAAA,IAC3C,GAAG,cACH,YAAY,SAAS,KACrB,OACA;AAEN,gBAAY,SAAS,IAAI;AACzB,WAAO;AAAA,EACT,CAAC;AAED,kBAAgB,MAAM;AACpB,UAAM,cAAc,aAAa,EAAE;AACnC,QACE,YAAY,SACZ,OAAO,aAAa,gBACnB,CAAC,cAAc,CAAC,WAAW,cAC5B;AACA,UAAI,oBAAuC;AAC3C,YAAM,UAAU,SAAS;AAAA,QACvB,yCAAyC;AAAA,MAC3C;AACA,0BAAoB,YAAY,SAAS,KAAK,SAAS,cAAc;AAErE,UAAI,CAAC,qBAAqB,SAAS;AAGjC,YAAI;AACF,8BAAoB,QAAQ,aAAa,EAAE,KAAK,CAAC;AACjD,sBAAY,SAAS,IAAI;AAAA,QAC3B,QAAE;AAAA,QAEF;AAAA,MACF;AAEA,UAAI,mBAAmB;AAErB,0BAAkB,iBAAiB,aAAa,EAAE,QAAQ,CAAC,SAAS;AAClE,eAAK,OAAO;AAAA,QACd,CAAC;AACD,sBAAc,iBAAiB;AAAA,MACjC;AAAA,IACF,WAAW,YAAY,SAAS,YAAY;AAC1C,kBAAY,SAAS,IAAI;AACzB,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,SAAS,YAAY,MAAM,SAAS,CAAC;AAEzC,SAAO,EAAE,YAAY,uBAAuB;AAC9C;;;AClFO,IAAM,iBAAiB;AAcvB,SAAS,uBAAuB,MAAsB;AAC3D,MAAI,OAAO,aAAa;AAAa,WAAO;AAE5C,QAAM,SAAS,IAAI,UAAU;AAC7B,QAAM,OAAO,OAAO,gBAAgB,MAAM,WAAW;AAGrD,QAAM,8BAA8B,KAAK;AAAA,IACvC;AAAA,EACF;AACA,MAAI,6BAA6B;AAC/B,WAAO,4BAA4B;AAAA,EACrC;AAGA,QAAM,2BAA2B,KAAK;AAAA,IACpC,mDAAmD;AAAA,EACrD;AACA,MAAI,yBAAyB,SAAS,GAAG;AACvC,WAAO,GAAG,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EACtD,IAAI,CAAC,SAAS,KAAK,SAAS,EAC5B,KAAK,EAAE,IAAI,MAAM,KAAK,wBAAwB,EAC9C,IAAI,CAAC,cAAc,UAAU,SAAS,EACtC,KAAK,EAAE;AAAA,EACZ;AAEA,SAAO;AACT;;;AC/CA,SAAS,WAAW,UAAAC,eAAc;AAe3B,SAAS,kBACd,UACM;AACN,QAAM,cAAcC,QAAO,QAAQ;AAInC,cAAY,UAAU;AACtB,YAAU,MAAM,iBAAiB,CAAC,UAAU,YAAY,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7E;;;ALmmBgB,SAuHZ,UAvHY,KAuHZ,YAvHY;AAgHV;AA5oBC,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,aAAa;AAAA,EACb,MAAM,WAAW;AAAA,EACjB,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AACpB,GAAgC;AAC9B,QAAM,aAAa,MAAM;AAEzB,QAAM,EAAE,aAAa,oBAAoB,QAAQ,cAAc,IAC7DC,4BAA2B;AAC7B,QAAM,cAAc,mBAAmB,sBAAsB;AAC7D,QAAM,SAAS,cAAc,iBAAiB,CAAC;AAC/C,QAAM,UAAUC;AAAA,IACd,MAAM,iBAAiB,EAAE,cAAc,QAAQ,SAAS,SAAS,CAAC;AAAA,IAClE,CAAC,cAAc,QAAQ,SAAS,QAAQ;AAAA,EAC1C;AAEA,QAAM,OAAOA;AAAA,IACX,MAAM,mBAAmB,KAAK,QAAQ;AAAA,IACtC,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,CAAC,MAAM,OAAO,IAAIC;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,MAAMD,SAAQ,MAAM,qBAAqB,KAAK,cAAc,GAAG,CAAC,GAAG,CAAC;AAE1E,QAAM,mBAAmB,oBAAoB,sBAAsB,IAAI,IAAI;AAM3E,QAAM,KACJ,IAAI,YACH,OAAO,aAAa,cAAc,SAAS,SAAS,kBACjD,IAAI,WACJ,IAAI;AAGV,QAAM,YAAY,GAAG,aAAa,EAAE,KAAK;AAAA,IACvC,MAAM,QAAQ;AAAA,EAChB,KAAK,aAAa,UAAU;AAE5B,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,UAE5C,IAAI;AAEN,QAAM,EAAE,YAAY,uBAAuB,IAAI,cAAc;AAAA,IAC3D;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,UAAUC;AAAA,IACd,OAAO,aAAa,cACf,SAAS;AAAA,MACR,yCAAyC;AAAA,IAC3C,GAAG,YAAY,aACb,SAAS,eAAe,qBAAqB,MAAM,GAAG,aACtD,SAAS,cAAc,qCAAqC,QAAQ,GAChE,aACJ,SAAS,cAAc,8BAA8B,GAAG,YAC1D;AAAA,EACN;AAGA,QAAM,uBAAuBA,QAAO,QAAQ,WAAW,IAAI;AAO3D,QAAM,CAAC,aAAa,cAAc,IAAID;AAAA,IACpC,MACE,EACE,OAAO,aAAa,eACpB,YAAY,SACZ,QAAQ,GAAG,KACX,CAAC,qBAAqB;AAAA,EAE5B;AAEA,QAAM,iBAAiBC,QAAmC,IAAI;AAE9D,QAAM,cAAcA;AAAA,IAClB,OAAO,aAAa,eACf,MAAM;AACL,UAAI,KAAK,SAAS,cAAc,gBAAgB,cAAc;AAC9D,YAAM,WAAW,CAAC;AAClB,aAAO,MAAM,GAAG,OAAO,GAAG,YAAY;AACpC,YACE,GAAG,OAAO,GAAG,gBACb,CAAC,GAAG,aAAa,uBAAuB,GACxC;AACA,mBAAS,KAAK,EAAE;AAAA,QAClB;AACA,aAAK,GAAG;AAAA,MACV;AACA,aAAO;AAAA,IACT,GAAG,IACH,CAAC;AAAA,EACP;AACA,QAAM,eAAeA,QAAO,gBAAgB,CAAC;AAC7C,QAAM,yBAAyBA,QAAsB,IAAI;AACzD,QAAM,kCAAkCA,QAA8B,IAAI;AAC1E,QAAM,aAAaA,QAA2C,IAAI;AAGlE,EAAAC,iBAAgB,MAAM;AACpB,WAAO,MAAM;AACX,aAAO,aAAa,EAAE,YAAY,SAAS;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,EAAAA,iBAAgB,MAAM;AAEpB,QAAI,YAAY,QAAQ,SAAS,KAAK,iBAAiB;AACrD,kBAAY,QAAQ,QAAQ,CAAC,OAAO;AAClC,WAAG,OAAO;AAAA,MACZ,CAAC;AACD,kBAAY,UAAU,CAAC;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAEpB,EAAAA,iBAAgB,MAAM;AACpB,QAAI,cAAc,iBAAiB;AACjC,YAAM,cAAc,WAAW;AAAA,QAC7B;AAAA,MACF;AAEA,UAAI,YAAY,SAAS,GAAG;AAC1B,oBAAY,QAAQ,CAAC,OAAO,UAAU;AACpC,cACE,QAAQ,KACR,MAAM,aAAa,8BAA8B,MAAM,SACvD;AACA,kBAAM,OAAO;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AAGA,cAAQ,UAAU;AAIlB,UAAI,KAAuB,WAAW,WAAW,CAAC,KAAK;AACvD,aAAO,OAAO,EAAE,QAAQ,OAAO,GAAG,OAAO,GAAG,eAAe;AACzD,cAAM,SAAS,GAAG;AAClB,YAAI,GAAG,aAAa,UAAU,GAAG,aAAa,SAAS;AACrD,aAAG,YAAY,YAAY,EAAE;AAAA,QAC/B;AACA,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,iBAAiB,IAAI,CAAC;AAStC,EAAAA,iBAAgB,MAAM;AACpB,UAAM,aAAa,MAAO,OAAO,QAAQ,WAAW,MAAM,IAAI,OAAQ;AACtE,QACE,eACA,qBAAqB,WACrB,CAAC,cACD,CAAC,QACD,KAAK,QAAQ,YACb;AACA;AAAA,IACF;AACA,UAAM,uBAAuB,KAAK,SAAS,CAAC,GAAG;AAAA,MAC7C,CAAC,SAAS,KAAK,QAAQ;AAAA,IACzB;AACA,QAAI,oBAAoB,WAAW,GAAG;AACpC,qBAAe,IAAI;AACnB;AAAA,IACF;AACA,UAAM,gBAAgB,IAAI;AAAA,MACxB,oBAAoB,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,MAAgB,GAAG,EAAE,IAAI;AAAA,IAC1E;AACA,UAAM,QAAQ,MAAM;AAAA,MAClB,WAAW,iBAAkC,wBAAwB;AAAA,IACvE,EAAE,OAAO,CAAC,SAAS,cAAc,IAAI,KAAK,IAAI,CAAC;AAE/C,QAAI,MAAM,SAAS,cAAc,MAAM;AACrC;AAAA,IACF;AAGA,QAAI,MAAM,WAAW,GAAG;AACtB,qBAAe,IAAI;AACnB;AAAA,IACF;AACA,QAAI,UAAU,MAAM;AACpB,QAAI,UAAU;AACd,UAAM,YAAY,MAAM;AACtB,iBAAW;AACX,UAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,kBAAU;AACV,uBAAe,IAAI;AAAA,MACrB;AAAA,IACF;AACA,UAAM,WAAW,MAAM,IAAI,CAAC,SAAS;AACnC,UAAI,KAAK,OAAO;AACd,kBAAU;AACV,eAAO,MAAM;AAAA,QAAC;AAAA,MAChB;AACA,WAAK,iBAAiB,QAAQ,WAAW,EAAE,MAAM,KAAK,CAAC;AACvD,WAAK,iBAAiB,SAAS,WAAW,EAAE,MAAM,KAAK,CAAC;AACxD,aAAO,MAAM;AACX,aAAK,oBAAoB,QAAQ,SAAS;AAC1C,aAAK,oBAAoB,SAAS,SAAS;AAAA,MAC7C;AAAA,IACF,CAAC;AACD,WAAO,MAAM;AACX,iBAAW,WAAW,UAAU;AAC9B,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,MAAM,aAAa,KAAK,GAAG,CAAC;AAE5C,EAAAC,WAAU,MAAM;AACd,QAAI,OAAO,QAAQ,aAAa,QAAQ,SAAS;AAC/C,YAAM,cAAc,aAAa,QAAQ;AACzC,YAAM,eAAe,aAAa,QAAQ;AAC1C,mBAAa,QAAQ,UAAU;AAE/B,UAAI,gBAAgB,MAAM;AACxB,gBAAQ,UAAU;AAAA,MACpB;AAGA,mBAAa,QAAQ,iBAAiB,MAAM;AAC5C,mBAAa,QAAQ,kBAAkB,IAAI,gBAAgB;AAC3D,YAAM,EAAE,OAAO,IAAI,aAAa,QAAQ;AAExC,cAAQ,WAAW,GAAG;AACtB,mBAAa,QAAQ,QAAQ;AAG7B,UAAI,YAAY,SAAS,CAAC,qBAAqB,SAAS;AACtD,uBAAe,KAAK;AAAA,MACtB;AAEA,sBAAgB,YAAY;AAC1B,YAAI;AACF,cAAI,OAAO;AAAA,YACT,QAAQ,YACL,eAAe,SAAS,wBAAwB,YAAY,QACzD,eAAe,QAAQ,uBAAuB,YAC9C;AAAA,UACR;AAEA,cAAI,CAAC,QAAQ,KAAK;AAEhB,kBAAM,YAAY;AAAA,cAChB;AAAA,YACF;AAEA,kBAAM,cAAc,IAAI;AAAA,cACtB,mBAAmB,IAAI,IAAI,KAAK,IAAI;AAAA,cACpC,SAAS;AAAA,YACX;AACA,kBAAM,MAAM,MAAM,eAAe,aAAa,WAAW;AAAA,cACvD;AAAA,cACA;AAAA,cACA,iBAAiB,aAAa,QAAQ;AAAA,YACxC,CAAC;AAED,gBAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AACnB,oBAAM,MAAM,qBAAqB,IAAI,MAAM,aAAa,GAAG;AAAA,YAC7D;AAGA,kBAAM,aAAa,MAAM,IAAI,KAAK;AAClC,gBAAI,OAAO;AAAS;AACpB,oBAAQ,UAAU;AAClB,mBAAO,uBAAuB,UAAU;AAAA,UAC1C;AAEA,cAAI,OAAO;AAAS;AAEpB,gBAAM,aAAa,MAAM;AACzB,cAAI,OAAO;AAAS;AAEpB,gBAAM,WAAW,gBAAgB;AAAA,YAC/B;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,UACF,CAAC;AACD,gBAAM,EAAE,KAAK,OAAO,IAAI;AACxB,gBAAM;AAAA,YACJ;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,UACT,IAAI;AAEJ,cAAI,aAAa,QAAQ,uBAAuB;AAC9C,gBAAI,YAAY;AACd,yBAAW,YAAY;AAAA,YACzB;AACA,kBAAM,UAAU,aAAa,QAAQ;AACrC,gBAAI,WAAW,aAAa,EAAE,WAAW,QAAQ,IAAI,GAAG;AACtD,oBAAM,kBAAkB,QAAQ;AAAA,gBAC9B,MAAM,KAAK,WAAW,WAAW,CAAC,CAAC,EAAE;AAAA,kBAAI,OAAO,YAC9C;AAAA,oBACE,cAAc,gCAAgC;AAAA,kBAChD;AAAA,gBACF;AAAA,cACF;AACA,yBAAW,UAAU;AACrB,oBAAM;AAAA,YACR;AAAA,UACF;AACA,uBAAa,QAAQ,wBAAwB;AAC7C,uBAAa,QAAQ,UAAU;AAC/B,uBAAa,QAAQ,WAAW;AAEhC,gBAAM,QAAQ,aAAa,IAAI,CAAC,UAAU;AAAA,YACxC,MAAM,IAAI,IAAI,KAAK,aAAa,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE;AAAA,YAC3D,GAAG,KACA,kBAAkB,EAClB,OAA+B,CAAC,KAAK,QAAQ;AAC5C,kBAAI,QAAQ,QAAQ;AAClB,oBAAI,WAAW,GAAG,KAAK,GAAG,IAAI,KAAK,aAAa,GAAG,KAAK;AAAA,cAC1D;AACA,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC;AAAA,UACT,EAAE;AAEF,gBAAM,kBAAkB,MAAM,KAAK,YAAY,EAAE;AAAA,YAC/C,CAAC,SAAS,KAAK,aAAa,KAAK,MAAM;AAAA,UACzC;AAQA,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW,QAAQ,iBAAiB;AAClC;AAAA,gBACE,IAAI,IAAI,KAAK,aAAa,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE;AAAA,gBACrD;AAAA,kBACE,IAAI;AAAA,kBACJ,eAAe;AAAA,gBACjB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAGA,gBAAM,iBACJ,oBAAoB,YAAY,KAChC;AAAA,YACA;AAAA,UACF;AAEA,cAAI,CAAC,mBAAmB;AAEtB,kBAAM,OAAO;AAGb,kBAAM,kBAAkB,KAAK;AAC7B,kBAAM,cAAc,CAAC;AAErB,iBAAK,WAAW;AAGhB,kBAAM,QAAQ;AAAA,cACZ,MAAM,KAAK,aAAa,EACrB;AAAA,gBACC,CAAC,WACC,EACE,OAAO,GAAG,SAAS,SAAS,KAC5B,OAAO,aAAa,MAAM,MAAM,sBAChC,OAAO,OAAO;AAAA,kBACZ;AAAA,gBACF,MAAM;AAAA,cAEZ,EACC,IAAI,CAAC,WAAW;AACf,uBAAO,IAAI,QAAQ,CAAC,YAAY;AAE9B,sBACE,OAAO,eACP,CAAC,OAAO,YAAY,SAAS,gBAAgB,KAC7C,CAAC,OAAO,YAAY,SAAS,oBAAoB,GACjD;AAEA,wBACE,CAAC,OAAO,aAAa,MAAM,KAC3B,OAAO,aAAa,MAAM,MAAM,qBAChC,OAAO,aAAa,MAAM,MAAM,0BAChC;AACA,4BAAM,YAAY,SAAS,cAAc,QAAQ;AAGjD,4BAAM,OAAO,IAAI,KAAK,CAAC,OAAO,WAAW,GAAG;AAAA,wBAC1C,MAAM;AAAA,sBACR,CAAC;AACD,4BAAM,UAAU,IAAI,gBAAgB,IAAI;AAExC,gCAAU,SAAS,MAAM;AACvB,gCAAQ,MAAS;AAEjB,4BAAI,gBAAgB,OAAO;AAC3B,kCAAU,OAAO;AAAA,sBACnB;AAEA,gCAAU,UAAU,MAAM;AACxB,4BAAI,gBAAgB,OAAO;AAC3B,kCAAU,OAAO;AACjB,gCAAQ,MAAS;AAAA,sBACnB;AAEA,gCAAU,MAAM;AAEhB,+BAAS,KAAK,YAAY,SAAS;AAAA,oBACrC,OAAO;AACL,8BAAQ,MAAS;AACjB,+BAAS,KAAK,YAAY,MAAM;AAAA,oBAClC;AAAA,kBACF,OAAO;AACL,4BAAQ,MAAS;AAAA,kBACnB;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAAA,YACL;AAEA,wBAAY,QAAQ,CAAC,CAAC,WAAW,KAAK,MAAM;AAC1C,oBAAM,SAAS,SAAS,cAAc,QAAQ;AAE9C,kBAAI,WAAW;AACb,uBAAO,MAAM;AAAA,cACf;AAEA,kBAAI,OAAO,MAAM,aAAa,UAAU;AACtC,uBAAO,cAAc,MAAM;AAAA,cAC7B;AACA,qCAAuB,QAAQ,KAAK;AACpC,uBAAS,KAAK,YAAY,MAAM;AAAA,YAClC,CAAC;AAGD,iBAAK,WAAW;AAAA,UAClB;AAEA,gBAAM,UAAU,MACZ,0BAA0B,aAAa,EAAE,KAAK;AAAA,YAC5C;AAAA,UACF,MACA;AACJ,cAAI,KAAK;AACP,gBAAI,cACF,IAAI,aAAa;AAAA,cACf,IAAI,OAAO,WAAW,kBAAkB,GAAG;AAAA,cAC3C,SAAS;AAAA,YACX,KAAK;AACP,qBAAS,KAAK,YAAY,GAAG;AAAA,UAC/B;AAEA,gBAAM,UAAU;AAAA,YACd,GAAG;AAAA,YACH;AAAA,YACA;AAAA,YACA,KAAK,OAAO,QAAQ,WAAW,MAAM,IAAI;AAAA,YACzC,WAAW,IAAI;AAAA,YACf,MAAM,OACD,IAAI,eAAe,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO,IAClD,CAAC;AAAA,UACP;AAEA,iCAAuB,UAAU,GAAG,MAAM;AAAA,YACxC,IAAI,iBAAiB,YAAY;AAAA,UACnC,EACG,IAAI,CAAC,SAAS,KAAK,SAAS,EAC5B,KAAK,EAAE,IACR,QACI,2EACA,KACH,UAAU;AAEb,cAAI,mBAAmB;AAErB,gBAAI,gBAAgB,QAAW;AAC7B,sBAAQ,OAAO;AAAA,gBACb,aAAa,eAAe;AAAA,gBAC5B,SAAS;AAAA,gBACT;AAAA,gBACA,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA,oBAAQ,OAAO;AACf,gBAAI,YAAY;AACd,oBAAM,iBAAiB,QACnB,yEAAyE,UAAU,cACnF,UAAU;AACd,yBAAW,YAAY;AACvB,sBAAQ,UAAU;AAClB,iCAAmB,IAAI;AACvB,oBAAM,EAAE,OAAO,QAAQ,IAAI,MAAM;AAAA,gBAC/B,MAAM,KAAK,WAAW,iBAAiB,QAAQ,CAAC;AAAA,gBAChD;AAAA,gBACA;AAAA,cACF;AACA,yBAAW,UAAU;AACrB,oBAAM,QAAQ;AAAA,gBACZ,MAAM,KAAK,KAAK,EAAE,IAAI,CAAC,YAAY,QAAQ,UAAU,CAAC;AAAA,cACxD;AACA,sBAAQ,KAAK,GAAG;AAAA,YAClB,WAAW,YAAY,OAAO;AAC5B;AAAA;AAAA,gBAEE;AAAA,kBAAC;AAAA;AAAA,oBACC,yBAAyB,EAAE,QAAQ,UAAU,UAAU;AAAA,oBACvD,KAAK;AAAA;AAAA,gBACP;AAAA,cACF;AACA,sBAAQ,UAAU;AAClB,oBAAM,EAAE,OAAO,QAAQ,IAAI,MAAM;AAAA,gBAC/B,MAAM,KAAK,UAAU,iBAAiB,QAAQ,CAAC;AAAA,gBAC/C;AAAA,gBACA;AAAA,cACF;AACA,yBAAW,UAAU;AACrB,oBAAM,QAAQ;AAAA,gBACZ,MAAM,KAAK,KAAK,EAAE;AAAA,kBAAI,CAAC,YACrB,QAAQ,gCAAgC,OAAO;AAAA,gBACjD;AAAA,cACF;AACA,sBAAQ,KAAK,GAAG;AAAA,YAClB;AAGA,2BAAe,IAAI;AACnB,yBAAa,QAAQ,QAAQ;AAAA,UAC/B,OAAO;AACL,kBAAM,SAAS,MAAM,aAAa;AAAA,cAChC;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,cACA,WAAW;AAAA,cACX;AAAA,YACF,CAAC;AACD,gBAAI,KAAK;AACP,kBAAI,OAAO;AAAA,YACb;AAEA,oBAAQ,OAAO;AAEf,gBAAI,gBAAgB,QAAW;AAC7B,sBAAQ,OAAO;AAAA,gBACb,aAAa,eAAe;AAAA,gBAC5B,SAAS;AAAA,gBACT;AAAA,gBACA,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA,gBAAI,OAAO,WAAW,WAAW;AAC/B;AAAA,YACF;AACA,gBAAI,OAAO,WAAW,SAAS;AAC7B,2BAAa,QAAQ,QAAQ;AAC7B,iCAAmB,OAAO,KAAK;AAC/B,sBAAQ,MAAM,OAAO,KAAK;AAAA,YAC5B,WAAW,OAAO,WAAW,UAAU;AACrC,2BAAa,QAAQ,QAAQ;AAC7B,iCAAmB,OAAO,SAAS;AACnC,sBAAQ,KAAK,GAAG;AAAA,YAClB;AAAA,UACF;AAAA,QACF,SAAS,OAAP;AAEA,cAAI,aAAa,KAAK,GAAG;AACvB,yBAAa,QAAQ,QAAQ;AAC7B;AAAA,UACF;AACA,uBAAa,QAAQ,QAAQ;AAC7B,6BAAmB,KAAc;AACjC,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,2BAA2B,OAAO;AACpC,UAAM;AAAA,EACR;AAEA,QAAM,eACJ,oBAAC,YAAO,yBAAqB,MAAC,MAAK,oBAChC,eAAK,UAAU;AAAA,IACd,MAAM,MAAM,QAAQ;AAAA,IACpB,QAAQ,MAAM,UAAU;AAAA,IACxB,OAAO,MAAM,SAAS;AAAA,IACtB,SAAS,aAAa,QAAQ,wBAC1B,iBACA,MAAM,WAAW;AAAA,EACvB,CAAC,GACH;AAEF,QAAM,aAAa,QACjB,oBAAC,WAAM,gCAA6B,SAAS,qCAA0B,IACrE;AACJ,QAAM,gBACJ,MAAM,OAAO,IAAI,CAAC,SAChB;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAM,IAAI,IAAI,KAAK,MAAgB,GAAG,EAAE;AAAA,MACxC,KAAK,KAAK,UAAU,IAAI;AAAA;AAAA,EAC1B,CACD,KAAK;AACR,QAAM,oBACJ,iCACG;AAAA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,KACtB;AAGF,MAAI,uBAAuB,WAAW,cAAc,CAAC,WAAW,WAAW;AACzE,eAAW,YAAY,uBAAuB;AAC9C,2BAAuB,UAAU;AAEjC,QAAI,aAAa,QAAQ,uBAAuB;AAE9C;AAAA,QACE,MAAM,KAAK,WAAW,iBAAiB,QAAQ,CAAC;AAAA,QAChD;AAAA,QACA;AAAA,MACF,EACG,KAAK,CAAC,EAAE,MAAM,MAAM;AACnB,eAAO,QAAQ;AAAA,UACb,MAAM,KAAK,KAAK,EAAE,IAAI,CAAC,YAAY,QAAQ,UAAU,CAAC;AAAA,QACxD;AAAA,MACF,CAAC,EACA,KAAK,MAAM;AACV,YAAI,KAAK;AACP,kBAAQ,KAAK,GAAG;AAAA,QAClB;AAAA,MACF,CAAC,EACA,MAAM,CAAC,MAAM;AACZ,cAAM,QAAQ,IAAI;AAAA,UAChB,yCAAyC,IAAI;AAAA,UAC7C;AAAA,YACE,OAAO;AAAA,UACT;AAAA,QACF;AACA,2BAAmB,KAAK;AACxB,gBAAQ,MAAM,KAAK;AAAA,MACrB,CAAC;AAAA,IACL;AAAA,EACF;AAEA,MAAI,YAAY,OAAO;AACrB,UAAM,4BACJ,YAAY,cAAc,sBAAsB,MAAM,KACtD,YAAY,cAAc,8BAA8B;AAC1D,QAAI,2BAA2B;AAC7B,gCAA0B,OAAO;AAAA,IACnC;AAKA,UAAM,gBAAgB,CAAC,qBAAqB,WAAW,CAAC;AAExD,WACE,iCACG;AAAA;AAAA,MACA,gBAAgB,WAAW;AAAA,MAC5B;AAAA,QAAC;AAAA;AAAA,UACC,4BAA0B,cAAc;AAAA,UACxC,IAAI,cAAc,MAAM,QAAQ;AAAA,UAChC,KAAK;AAAA,UACL,OAAO,gBAAgB,EAAE,SAAS,OAAO,IAAI;AAAA,UAE5C;AAAA,mBAAO,aAAa;AAAA;AAAA,cAEnB,qBAAC,cAAS,gBAAgB,MACvB;AAAA,uBAAO,aAAa,cACnB;AAAA,kBAAC;AAAA;AAAA,oBACC,yBAAyB;AAAA,sBACvB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oDAOwB;AAAA;AAAA;AAAA;AAAA,oBAIlC;AAAA;AAAA,gBACF,IACE;AAAA,gBACH;AAAA,gBACA;AAAA,gBACA;AAAA,iBACH;AAAA,gBACE;AAAA,YACH,cAAc,kBACX;AAAA,cACE,iCACE;AAAA,oCAAC,cAAS,IAAI,GAAG,cAAc;AAAA,gBAC9B;AAAA,gBACA;AAAA,gBACA;AAAA,gBACD,oBAAC,cAAS,IAAI,GAAG,YAAY,KAAK,gBAAgB;AAAA,iBACpD;AAAA,cACA;AAAA,YACF,IACA;AAAA;AAAA;AAAA,MACN;AAAA,OACF;AAAA,EAEJ;AACA,UAAQ,UAAU;AAGlB,SACE,iCACE;AAAA,wBAAC,cAAS,IAAI,GAAG,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACD,oBAAC,cAAS,IAAI,GAAG,YAAY,KAAK,gBAAgB;AAAA,KACpD;AAEJ;","names":["useEffect","useLayoutEffect","useMemo","useRef","useState","useRemoteComponentsContext","useRef","useRef","useRemoteComponentsContext","useMemo","useState","useRef","useLayoutEffect","useEffect"]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
isSharedModuleManifest,
|
|
10
10
|
parseRemoteId,
|
|
11
11
|
resolveSharedModulePlan
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WWHNG5YP.js";
|
|
13
13
|
import {
|
|
14
14
|
getNamespace
|
|
15
15
|
} from "./chunk-D5GNZB6O.js";
|
|
@@ -1356,4 +1356,4 @@ export {
|
|
|
1356
1356
|
requireModule,
|
|
1357
1357
|
nextClientPagesLoader
|
|
1358
1358
|
};
|
|
1359
|
-
//# sourceMappingURL=chunk-
|
|
1359
|
+
//# sourceMappingURL=chunk-GG32LZD3.js.map
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkZPJ5J24Tcjs = require('./chunk-ZPJ5J24T.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
var _chunkZ2SLBFQLcjs = require('./chunk-Z2SLBFQL.cjs');
|
|
@@ -81,14 +81,14 @@ async function buildSharedProviderPlan({
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
const sharedModulePlan =
|
|
84
|
+
const sharedModulePlan = _chunkZPJ5J24Tcjs.createSharedModulePlan.call(void 0, {
|
|
85
85
|
bundle,
|
|
86
86
|
hostShared: hostSharedForPlan,
|
|
87
87
|
remoteShared,
|
|
88
88
|
scope,
|
|
89
89
|
callerTag
|
|
90
90
|
});
|
|
91
|
-
const resolved = await
|
|
91
|
+
const resolved = await _chunkZPJ5J24Tcjs.resolveSharedModulePlan.call(void 0, sharedModulePlan);
|
|
92
92
|
const entriesByIdAndSpecifier = /* @__PURE__ */ new Map();
|
|
93
93
|
const addEntry = (entry) => {
|
|
94
94
|
entriesByIdAndSpecifier.set(`${entry.id}\0${entry.specifier}`, entry);
|
|
@@ -103,7 +103,7 @@ async function buildSharedProviderPlan({
|
|
|
103
103
|
}
|
|
104
104
|
for (const entry of sharedModulePlan.entries) {
|
|
105
105
|
if (entry.status !== "resolved") {
|
|
106
|
-
if (onMissing && !(sharedModulePlan.protocol ===
|
|
106
|
+
if (onMissing && !(sharedModulePlan.protocol === _chunkZPJ5J24Tcjs.SHARED_MODULE_MANIFEST_PROTOCOL && entry.required)) {
|
|
107
107
|
onMissing(entry);
|
|
108
108
|
}
|
|
109
109
|
continue;
|
|
@@ -191,7 +191,7 @@ async function buildWebpackResolve(hostShared, remoteShared, bundle, reactModule
|
|
|
191
191
|
remoteShared,
|
|
192
192
|
callerTag,
|
|
193
193
|
normalizeId: normalizeWebpackSharedId,
|
|
194
|
-
additionalEntries: Object.entries(
|
|
194
|
+
additionalEntries: Object.entries(_chunkZPJ5J24Tcjs.CORE_REACT_SHARED_MODULE_IDS).map(
|
|
195
195
|
([specifier, id]) => ({
|
|
196
196
|
id,
|
|
197
197
|
specifier,
|
|
@@ -227,7 +227,7 @@ function applyWebpackSharedProviderModules(bundle, entries) {
|
|
|
227
227
|
`applyWebpackSharedProviderModules called for bundle: "${bundle}"`
|
|
228
228
|
);
|
|
229
229
|
const self = globalThis;
|
|
230
|
-
const scope =
|
|
230
|
+
const scope = _chunkZPJ5J24Tcjs.getScope.call(void 0, bundle);
|
|
231
231
|
const webpackBundle = _nullishCoalesce(_optionalChain([scope, 'optionalAccess', _4 => _4.webpackRequire]), () => ( _optionalChain([self, 'access', _5 => _5.__remote_webpack_require__, 'optionalAccess', _6 => _6[bundle]])));
|
|
232
232
|
if (!webpackBundle) {
|
|
233
233
|
throw new (0, _chunkBBXVML3Dcjs.RemoteComponentsError)(
|
|
@@ -287,12 +287,12 @@ function applySharedModules(bundle, resolve) {
|
|
|
287
287
|
`Shared modules to resolve: ${Object.keys(resolve)}`
|
|
288
288
|
);
|
|
289
289
|
const metadata = resolve[WEBPACK_SHARED_RESOLVE_METADATA];
|
|
290
|
-
if (_optionalChain([metadata, 'optionalAccess', _12 => _12.protocol]) ===
|
|
290
|
+
if (_optionalChain([metadata, 'optionalAccess', _12 => _12.protocol]) === _chunkZPJ5J24Tcjs.SHARED_MODULE_MANIFEST_PROTOCOL) {
|
|
291
291
|
applyWebpackSharedProviderModules(bundle, metadata.entries);
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
294
|
const self = globalThis;
|
|
295
|
-
const scope =
|
|
295
|
+
const scope = _chunkZPJ5J24Tcjs.getScope.call(void 0, bundle);
|
|
296
296
|
const webpackBundle = _nullishCoalesce(_optionalChain([scope, 'optionalAccess', _13 => _13.webpackRequire]), () => ( _optionalChain([self, 'access', _14 => _14.__remote_webpack_require__, 'optionalAccess', _15 => _15[bundle]])));
|
|
297
297
|
if (webpackBundle) {
|
|
298
298
|
const modulePaths = Object.keys(
|
|
@@ -383,12 +383,12 @@ function loadChunkWithScope(scope, chunkId) {
|
|
|
383
383
|
);
|
|
384
384
|
const self = globalThis;
|
|
385
385
|
const ns = _chunkZ2SLBFQLcjs.getNamespace.call(void 0, );
|
|
386
|
-
const { bundle, path, prefix } =
|
|
386
|
+
const { bundle, path, prefix } = _chunkZPJ5J24Tcjs.parseRemoteId.call(void 0, chunkId);
|
|
387
387
|
const remoteRuntime = _optionalChain([self, 'access', _25 => _25.__remote_webpack_require__, 'optionalAccess', _26 => _26[_nullishCoalesce(bundle, () => ( "default"))]]) ? _optionalChain([self, 'access', _27 => _27.__remote_webpack_require__, 'access', _28 => _28[_nullishCoalesce(bundle, () => ( "default"))], 'optionalAccess', _29 => _29.type]) || "webpack" : scope.runtime;
|
|
388
|
-
if (remoteRuntime ===
|
|
388
|
+
if (remoteRuntime === _chunkZPJ5J24Tcjs.RUNTIME_WEBPACK) {
|
|
389
389
|
return Promise.resolve(void 0);
|
|
390
390
|
}
|
|
391
|
-
const rawPath = path ?
|
|
391
|
+
const rawPath = path ? _chunkZPJ5J24Tcjs.collapseDoubleSlashes.call(void 0, `${prefix}${path}`) : "/";
|
|
392
392
|
const url = new URL(rawPath, scope.url).href;
|
|
393
393
|
if (url.endsWith(".css")) {
|
|
394
394
|
return;
|
|
@@ -441,9 +441,9 @@ function loadChunkWithScope(scope, chunkId) {
|
|
|
441
441
|
function createChunkDispatcher() {
|
|
442
442
|
return function __chunk_dispatcher__(chunkId, scriptBundle) {
|
|
443
443
|
_chunkBBXVML3Dcjs.logDebug.call(void 0, "ChunkDispatcher", `Dispatching chunk: "${chunkId}"`);
|
|
444
|
-
const { bundle } =
|
|
444
|
+
const { bundle } = _chunkZPJ5J24Tcjs.parseRemoteId.call(void 0, chunkId);
|
|
445
445
|
const bundleName = bundle || scriptBundle || "default";
|
|
446
|
-
const scope =
|
|
446
|
+
const scope = _chunkZPJ5J24Tcjs.getScope.call(void 0, bundleName);
|
|
447
447
|
_chunkBBXVML3Dcjs.logDebug.call(void 0,
|
|
448
448
|
"ChunkDispatcher",
|
|
449
449
|
`Scope resolution: bundle="${bundleName}", scope=${_nullishCoalesce(_optionalChain([scope, 'optionalAccess', _32 => _32.scopedName]), () => ( "null"))}`
|
|
@@ -550,7 +550,7 @@ async function handleTurbopackChunk(code, scope, url, renameTurbopackGlobal) {
|
|
|
550
550
|
const baseUrl = url.slice(0, url.indexOf("/_next"));
|
|
551
551
|
const chunkLoadResult = loadChunkWithScope(
|
|
552
552
|
scope,
|
|
553
|
-
|
|
553
|
+
_chunkZPJ5J24Tcjs.formatRemoteId.call(void 0, scope, `${baseUrl}/_next/${id}`)
|
|
554
554
|
);
|
|
555
555
|
if (chunkLoadResult) {
|
|
556
556
|
loadChunkPromises.push(chunkLoadResult);
|
|
@@ -602,7 +602,7 @@ function requireModule(scope, moduleId, fullId) {
|
|
|
602
602
|
return handleTurbopackModule(
|
|
603
603
|
scope,
|
|
604
604
|
idStr,
|
|
605
|
-
_nullishCoalesce(fullId, () => (
|
|
605
|
+
_nullishCoalesce(fullId, () => ( _chunkZPJ5J24Tcjs.formatRemoteId.call(void 0, scope, idStr)))
|
|
606
606
|
);
|
|
607
607
|
}
|
|
608
608
|
function handleTurbopackModule(scope, moduleId, id) {
|
|
@@ -675,7 +675,7 @@ function findModuleInit(modules, moduleId) {
|
|
|
675
675
|
return void 0;
|
|
676
676
|
}
|
|
677
677
|
function createTurbopackContext(scope, exports, moduleExports, modules, moduleInit, id) {
|
|
678
|
-
const scopedRequire = (moduleId) => requireModule(scope, moduleId,
|
|
678
|
+
const scopedRequire = (moduleId) => requireModule(scope, moduleId, _chunkZPJ5J24Tcjs.formatRemoteId.call(void 0, scope, String(moduleId)));
|
|
679
679
|
return {
|
|
680
680
|
// HMR not implemented for Remote Components
|
|
681
681
|
k: {
|
|
@@ -847,7 +847,7 @@ function createTurbopackContext(scope, exports, moduleExports, modules, moduleIn
|
|
|
847
847
|
const nextIndex = scriptSrc.indexOf("/_next");
|
|
848
848
|
const baseUrl = nextIndex !== -1 ? scriptSrc.slice(0, nextIndex) : "";
|
|
849
849
|
const chunkUrl = `${baseUrl}/_next/${url}`;
|
|
850
|
-
return loadChunkWithScope(scope,
|
|
850
|
+
return loadChunkWithScope(scope, _chunkZPJ5J24Tcjs.formatRemoteId.call(void 0, scope, chunkUrl));
|
|
851
851
|
}
|
|
852
852
|
}
|
|
853
853
|
throw new Error(
|
|
@@ -926,7 +926,7 @@ async function initializeSharedModules(scope, hostShared = {}, remoteShared = {}
|
|
|
926
926
|
const moduleExports = handleTurbopackModule(
|
|
927
927
|
scope,
|
|
928
928
|
sharedModuleId,
|
|
929
|
-
|
|
929
|
+
_chunkZPJ5J24Tcjs.formatRemoteId.call(void 0, scope, String(sharedModuleInitializerId))
|
|
930
930
|
);
|
|
931
931
|
const loaderCandidate = typeof moduleExports === "function" ? moduleExports : _optionalChain([moduleExports, 'optionalAccess', _38 => _38.default]);
|
|
932
932
|
if (typeof loaderCandidate === "function") {
|
|
@@ -1075,13 +1075,13 @@ function installSharedModules(scope, hostShared, sharedModuleIds, missingMessage
|
|
|
1075
1075
|
);
|
|
1076
1076
|
}
|
|
1077
1077
|
function preferSharedManifest(sharedModuleIds, remoteShared) {
|
|
1078
|
-
if (!
|
|
1078
|
+
if (!_chunkZPJ5J24Tcjs.isSharedModuleManifest.call(void 0, remoteShared))
|
|
1079
1079
|
return sharedModuleIds;
|
|
1080
1080
|
const extractedIdBySpecifier = new Map(
|
|
1081
1081
|
Object.entries(sharedModuleIds).map(([id, specifier]) => [specifier, id])
|
|
1082
1082
|
);
|
|
1083
1083
|
return {
|
|
1084
|
-
protocol:
|
|
1084
|
+
protocol: _chunkZPJ5J24Tcjs.SHARED_MODULE_MANIFEST_PROTOCOL,
|
|
1085
1085
|
requirements: remoteShared.requirements.map((requirement) => {
|
|
1086
1086
|
return {
|
|
1087
1087
|
...requirement,
|
|
@@ -1091,7 +1091,7 @@ function preferSharedManifest(sharedModuleIds, remoteShared) {
|
|
|
1091
1091
|
};
|
|
1092
1092
|
}
|
|
1093
1093
|
function normalizeRemoteSharedForTurbopackFallback(remoteShared) {
|
|
1094
|
-
if (
|
|
1094
|
+
if (_chunkZPJ5J24Tcjs.isSharedModuleManifest.call(void 0, remoteShared)) {
|
|
1095
1095
|
return {
|
|
1096
1096
|
...remoteShared,
|
|
1097
1097
|
requirements: remoteShared.requirements.map((requirement) => ({
|
|
@@ -1138,7 +1138,7 @@ function nextClientPagesLoader(bundle, route, styleContainer = document.head) {
|
|
|
1138
1138
|
ns.pageComponentCache ??= {};
|
|
1139
1139
|
const cacheKey = `${bundle}:${route}`;
|
|
1140
1140
|
const remoteRequire = _optionalChain([self, 'access', _45 => _45.__remote_webpack_require__, 'optionalAccess', _46 => _46[bundle]]);
|
|
1141
|
-
const turbopackScope = _optionalChain([remoteRequire, 'optionalAccess', _47 => _47.type]) === "turbopack" ?
|
|
1141
|
+
const turbopackScope = _optionalChain([remoteRequire, 'optionalAccess', _47 => _47.type]) === "turbopack" ? _chunkZPJ5J24Tcjs.getScope.call(void 0, bundle) : void 0;
|
|
1142
1142
|
const applyBundleCss = () => {
|
|
1143
1143
|
const elements = _nullishCoalesce(ns.cssCache[bundle], () => ( []));
|
|
1144
1144
|
if (styleContainer) {
|
|
@@ -1356,4 +1356,4 @@ function findPreviousModuleId(entries, factoryIndex) {
|
|
|
1356
1356
|
|
|
1357
1357
|
|
|
1358
1358
|
exports.buildWebpackResolve = buildWebpackResolve; exports.applySharedModules = applySharedModules; exports.loadChunkWithScope = loadChunkWithScope; exports.createChunkDispatcher = createChunkDispatcher; exports.initializeSharedModules = initializeSharedModules; exports.requireModule = requireModule; exports.nextClientPagesLoader = nextClientPagesLoader;
|
|
1359
|
-
//# sourceMappingURL=chunk-
|
|
1359
|
+
//# sourceMappingURL=chunk-JKDPK6L5.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkZPJ5J24Tcjs = require('./chunk-ZPJ5J24T.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -17,7 +17,7 @@ async function loadScripts(scripts, resolveClientUrl) {
|
|
|
17
17
|
return new Promise((resolve, reject) => {
|
|
18
18
|
const newSrc = new URL(
|
|
19
19
|
// remove the remote component bundle name identifier from the script src
|
|
20
|
-
script.src.replace(
|
|
20
|
+
script.src.replace(_chunkZPJ5J24Tcjs.NEXT_BUNDLE_PATH_RE, "/_next/"),
|
|
21
21
|
location.origin
|
|
22
22
|
).href;
|
|
23
23
|
const rawResolved = _nullishCoalesce(_optionalChain([resolveClientUrl, 'optionalCall', _ => _(newSrc)]), () => ( newSrc));
|
|
@@ -55,4 +55,4 @@ async function loadScripts(scripts, resolveClientUrl) {
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
exports.loadScripts = loadScripts;
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-MAVMKFFL.cjs.map
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
remoteFetchHeaders
|
|
3
|
+
} from "./chunk-GAXJTFBV.js";
|
|
1
4
|
import {
|
|
2
5
|
loadScripts
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XLGLCKZZ.js";
|
|
4
7
|
import {
|
|
5
8
|
setupRemoteScope
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YKCU7RFM.js";
|
|
7
10
|
import {
|
|
8
11
|
applySharedModules,
|
|
9
12
|
buildWebpackResolve,
|
|
10
13
|
initializeSharedModules,
|
|
11
14
|
nextClientPagesLoader
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-GG32LZD3.js";
|
|
13
16
|
import {
|
|
14
17
|
loadStaticRemoteComponent
|
|
15
18
|
} from "./chunk-LEKG4YWI.js";
|
|
@@ -24,7 +27,7 @@ import {
|
|
|
24
27
|
collapseDoubleSlashes,
|
|
25
28
|
escapeString,
|
|
26
29
|
getMissingSharedModulesMessage
|
|
27
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-WWHNG5YP.js";
|
|
28
31
|
import {
|
|
29
32
|
RemoteComponentsError,
|
|
30
33
|
logDebug,
|
|
@@ -32,9 +35,6 @@ import {
|
|
|
32
35
|
multipleRemoteComponentsError,
|
|
33
36
|
warnCrossOriginFetchError
|
|
34
37
|
} from "./chunk-ULXU6XWH.js";
|
|
35
|
-
import {
|
|
36
|
-
remoteFetchHeaders
|
|
37
|
-
} from "./chunk-GAXJTFBV.js";
|
|
38
38
|
|
|
39
39
|
// src/host/server/fetch-with-hooks.ts
|
|
40
40
|
async function fetchWithWarning(url, init) {
|
|
@@ -709,4 +709,4 @@ export {
|
|
|
709
709
|
resolveNameFromSrc,
|
|
710
710
|
bindResolveClientUrl
|
|
711
711
|
};
|
|
712
|
-
//# sourceMappingURL=chunk-
|
|
712
|
+
//# sourceMappingURL=chunk-PNKSHWZ3.js.map
|