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.
Files changed (102) hide show
  1. package/dist/{chunk-CLO56ON2.js → chunk-EIEIT5PG.js} +82 -4
  2. package/dist/chunk-EIEIT5PG.js.map +1 -0
  3. package/dist/{chunk-BEGVH64U.js → chunk-GG32LZD3.js} +2 -2
  4. package/dist/{chunk-SULMNRMJ.cjs → chunk-JKDPK6L5.cjs} +23 -23
  5. package/dist/{chunk-XWRB6CEA.cjs → chunk-MAVMKFFL.cjs} +3 -3
  6. package/dist/{chunk-RZGFQTX6.js → chunk-PNKSHWZ3.js} +8 -8
  7. package/dist/{chunk-HXCW3WDT.cjs → chunk-T2JJIQUJ.cjs} +25 -25
  8. package/dist/{chunk-TGE3K3TR.cjs → chunk-TIS6PXSQ.cjs} +18 -18
  9. package/dist/{chunk-YSJ4FKGI.cjs → chunk-WCZKEWRM.cjs} +97 -19
  10. package/dist/chunk-WCZKEWRM.cjs.map +1 -0
  11. package/dist/{chunk-3PR3SWYZ.js → chunk-WWHNG5YP.js} +38 -3
  12. package/dist/chunk-WWHNG5YP.js.map +1 -0
  13. package/dist/{chunk-M6ACTSVB.js → chunk-XLGLCKZZ.js} +2 -2
  14. package/dist/{chunk-24LEEDHP.js → chunk-YKCU7RFM.js} +3 -3
  15. package/dist/{chunk-6PZEDIAK.cjs → chunk-ZPJ5J24T.cjs} +47 -12
  16. package/dist/chunk-ZPJ5J24T.cjs.map +1 -0
  17. package/dist/config/nextjs.cjs +10 -10
  18. package/dist/config/nextjs.js +7 -7
  19. package/dist/config/tailwind.cjs +53 -0
  20. package/dist/config/tailwind.cjs.map +1 -0
  21. package/dist/config/tailwind.d.ts +21 -0
  22. package/dist/config/tailwind.js +53 -0
  23. package/dist/config/tailwind.js.map +1 -0
  24. package/dist/host/html.cjs +20 -20
  25. package/dist/host/html.js +8 -8
  26. package/dist/host/nextjs/app/client-only.cjs +21 -12
  27. package/dist/host/nextjs/app/client-only.cjs.map +1 -1
  28. package/dist/host/nextjs/app/client-only.js +18 -9
  29. package/dist/host/nextjs/app/client-only.js.map +1 -1
  30. package/dist/host/nextjs/app.cjs +2 -0
  31. package/dist/host/nextjs/app.cjs.map +1 -1
  32. package/dist/host/nextjs/app.js +2 -0
  33. package/dist/host/nextjs/app.js.map +1 -1
  34. package/dist/host/nextjs/pages.cjs +14 -7
  35. package/dist/host/nextjs/pages.cjs.map +1 -1
  36. package/dist/host/nextjs/pages.d.ts +2 -0
  37. package/dist/host/nextjs/pages.js +14 -7
  38. package/dist/host/nextjs/pages.js.map +1 -1
  39. package/dist/host/react.cjs +8 -8
  40. package/dist/host/react.js +7 -7
  41. package/dist/internal/host/nextjs/app-client.cjs +15 -6
  42. package/dist/internal/host/nextjs/app-client.cjs.map +1 -1
  43. package/dist/internal/host/nextjs/app-client.d.ts +3 -2
  44. package/dist/internal/host/nextjs/app-client.js +15 -6
  45. package/dist/internal/host/nextjs/app-client.js.map +1 -1
  46. package/dist/internal/host/nextjs/dom-flight.cjs +1 -0
  47. package/dist/internal/host/nextjs/dom-flight.cjs.map +1 -1
  48. package/dist/internal/host/nextjs/dom-flight.d.ts +1 -0
  49. package/dist/internal/host/nextjs/dom-flight.js +1 -0
  50. package/dist/internal/host/nextjs/dom-flight.js.map +1 -1
  51. package/dist/internal/host/nextjs/image-shared.cjs +11 -2
  52. package/dist/internal/host/nextjs/image-shared.cjs.map +1 -1
  53. package/dist/internal/host/nextjs/image-shared.d.ts +3 -1
  54. package/dist/internal/host/nextjs/image-shared.js +11 -2
  55. package/dist/internal/host/nextjs/image-shared.js.map +1 -1
  56. package/dist/internal/host/server/fetch-remote-component.cjs +58 -3
  57. package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -1
  58. package/dist/internal/host/server/fetch-remote-component.d.ts +1 -0
  59. package/dist/internal/host/server/fetch-remote-component.js +61 -3
  60. package/dist/internal/host/server/fetch-remote-component.js.map +1 -1
  61. package/dist/internal/host/server/types.cjs.map +1 -1
  62. package/dist/internal/host/server/types.d.ts +2 -0
  63. package/dist/internal/host/shared/next-image-deployment-id.cjs +50 -0
  64. package/dist/internal/host/shared/next-image-deployment-id.cjs.map +1 -0
  65. package/dist/internal/host/shared/next-image-deployment-id.d.ts +14 -0
  66. package/dist/internal/host/shared/next-image-deployment-id.js +25 -0
  67. package/dist/internal/host/shared/next-image-deployment-id.js.map +1 -0
  68. package/dist/internal/host/shared/pipeline.d.ts +2 -1
  69. package/dist/internal/host/shared/remote-image-loader.cjs +16 -2
  70. package/dist/internal/host/shared/remote-image-loader.cjs.map +1 -1
  71. package/dist/internal/host/shared/remote-image-loader.d.ts +2 -1
  72. package/dist/internal/host/shared/remote-image-loader.js +19 -2
  73. package/dist/internal/host/shared/remote-image-loader.js.map +1 -1
  74. package/dist/internal/runtime/html/parse-remote-html.d.ts +1 -0
  75. package/dist/internal/runtime/loaders/component-loader.d.ts +2 -1
  76. package/dist/remote/react/utils/portal.cjs +58 -0
  77. package/dist/remote/react/utils/portal.cjs.map +1 -0
  78. package/dist/remote/react/utils/portal.d.ts +12 -0
  79. package/dist/remote/react/utils/portal.js +58 -0
  80. package/dist/remote/react/utils/portal.js.map +1 -0
  81. package/dist/{server-handoff-9e905049.d.ts → server-handoff-006f9cb5.d.ts} +2 -0
  82. package/dist/{turbopack-43N2UJNN.js → turbopack-HK7DVYUG.js} +4 -4
  83. package/dist/{turbopack-5VGMYUL4.cjs → turbopack-YZOIO55D.cjs} +11 -11
  84. package/dist/{webpack-LXE2UWTA.js → webpack-2HP73JL7.js} +4 -4
  85. package/dist/{webpack-FSN5UBA2.cjs → webpack-W2MODB73.cjs} +11 -11
  86. package/package.json +18 -1
  87. package/dist/chunk-3PR3SWYZ.js.map +0 -1
  88. package/dist/chunk-6PZEDIAK.cjs.map +0 -1
  89. package/dist/chunk-CLO56ON2.js.map +0 -1
  90. package/dist/chunk-YSJ4FKGI.cjs.map +0 -1
  91. /package/dist/{chunk-BEGVH64U.js.map → chunk-GG32LZD3.js.map} +0 -0
  92. /package/dist/{chunk-SULMNRMJ.cjs.map → chunk-JKDPK6L5.cjs.map} +0 -0
  93. /package/dist/{chunk-XWRB6CEA.cjs.map → chunk-MAVMKFFL.cjs.map} +0 -0
  94. /package/dist/{chunk-RZGFQTX6.js.map → chunk-PNKSHWZ3.js.map} +0 -0
  95. /package/dist/{chunk-HXCW3WDT.cjs.map → chunk-T2JJIQUJ.cjs.map} +0 -0
  96. /package/dist/{chunk-TGE3K3TR.cjs.map → chunk-TIS6PXSQ.cjs.map} +0 -0
  97. /package/dist/{chunk-M6ACTSVB.js.map → chunk-XLGLCKZZ.js.map} +0 -0
  98. /package/dist/{chunk-24LEEDHP.js.map → chunk-YKCU7RFM.js.map} +0 -0
  99. /package/dist/{turbopack-43N2UJNN.js.map → turbopack-HK7DVYUG.js.map} +0 -0
  100. /package/dist/{turbopack-5VGMYUL4.cjs.map → turbopack-YZOIO55D.cjs.map} +0 -0
  101. /package/dist/{webpack-LXE2UWTA.js.map → webpack-2HP73JL7.js.map} +0 -0
  102. /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-RZGFQTX6.js";
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-3PR3SWYZ.js";
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-CLO56ON2.js.map
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":"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","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-3PR3SWYZ.js";
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-BEGVH64U.js.map
1359
+ //# sourceMappingURL=chunk-GG32LZD3.js.map
@@ -9,7 +9,7 @@
9
9
 
10
10
 
11
11
 
12
- var _chunk6PZEDIAKcjs = require('./chunk-6PZEDIAK.cjs');
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 = _chunk6PZEDIAKcjs.createSharedModulePlan.call(void 0, {
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 _chunk6PZEDIAKcjs.resolveSharedModulePlan.call(void 0, sharedModulePlan);
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 === _chunk6PZEDIAKcjs.SHARED_MODULE_MANIFEST_PROTOCOL && entry.required)) {
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(_chunk6PZEDIAKcjs.CORE_REACT_SHARED_MODULE_IDS).map(
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 = _chunk6PZEDIAKcjs.getScope.call(void 0, bundle);
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]) === _chunk6PZEDIAKcjs.SHARED_MODULE_MANIFEST_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 = _chunk6PZEDIAKcjs.getScope.call(void 0, bundle);
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 } = _chunk6PZEDIAKcjs.parseRemoteId.call(void 0, chunkId);
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 === _chunk6PZEDIAKcjs.RUNTIME_WEBPACK) {
388
+ if (remoteRuntime === _chunkZPJ5J24Tcjs.RUNTIME_WEBPACK) {
389
389
  return Promise.resolve(void 0);
390
390
  }
391
- const rawPath = path ? _chunk6PZEDIAKcjs.collapseDoubleSlashes.call(void 0, `${prefix}${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 } = _chunk6PZEDIAKcjs.parseRemoteId.call(void 0, chunkId);
444
+ const { bundle } = _chunkZPJ5J24Tcjs.parseRemoteId.call(void 0, chunkId);
445
445
  const bundleName = bundle || scriptBundle || "default";
446
- const scope = _chunk6PZEDIAKcjs.getScope.call(void 0, bundleName);
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
- _chunk6PZEDIAKcjs.formatRemoteId.call(void 0, scope, `${baseUrl}/_next/${id}`)
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, () => ( _chunk6PZEDIAKcjs.formatRemoteId.call(void 0, scope, idStr)))
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, _chunk6PZEDIAKcjs.formatRemoteId.call(void 0, scope, String(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, _chunk6PZEDIAKcjs.formatRemoteId.call(void 0, scope, chunkUrl));
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
- _chunk6PZEDIAKcjs.formatRemoteId.call(void 0, scope, String(sharedModuleInitializerId))
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 (!_chunk6PZEDIAKcjs.isSharedModuleManifest.call(void 0, remoteShared))
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: _chunk6PZEDIAKcjs.SHARED_MODULE_MANIFEST_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 (_chunk6PZEDIAKcjs.isSharedModuleManifest.call(void 0, remoteShared)) {
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" ? _chunk6PZEDIAKcjs.getScope.call(void 0, bundle) : void 0;
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-SULMNRMJ.cjs.map
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 _chunk6PZEDIAKcjs = require('./chunk-6PZEDIAK.cjs');
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(_chunk6PZEDIAKcjs.NEXT_BUNDLE_PATH_RE, "/_next/"),
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-XWRB6CEA.cjs.map
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-M6ACTSVB.js";
6
+ } from "./chunk-XLGLCKZZ.js";
4
7
  import {
5
8
  setupRemoteScope
6
- } from "./chunk-24LEEDHP.js";
9
+ } from "./chunk-YKCU7RFM.js";
7
10
  import {
8
11
  applySharedModules,
9
12
  buildWebpackResolve,
10
13
  initializeSharedModules,
11
14
  nextClientPagesLoader
12
- } from "./chunk-BEGVH64U.js";
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-3PR3SWYZ.js";
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-RZGFQTX6.js.map
712
+ //# sourceMappingURL=chunk-PNKSHWZ3.js.map