@absolutejs/absolute 0.20.0-beta.177 → 0.20.0-beta.178

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 (82) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/changelog.json +51 -0
  3. package/dist/angular/browser.js +17 -2
  4. package/dist/angular/browser.js.map +4 -4
  5. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  6. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  7. package/dist/angular/index.js +57 -33
  8. package/dist/angular/index.js.map +9 -8
  9. package/dist/angular/server.js +57 -33
  10. package/dist/angular/server.js.map +9 -8
  11. package/dist/build.js +532 -416
  12. package/dist/build.js.map +15 -15
  13. package/dist/cli/{compile-w2z6c9vt.js → compile-p5yv6ecp.js} +2 -2
  14. package/dist/cli/config/server.js +45 -12
  15. package/dist/cli/{dev-8br5mr7t.js → dev-2hbcsvkp.js} +1 -1
  16. package/dist/cli/{index-420h9hq7.js → index-1ewba8ye.js} +32 -3
  17. package/dist/cli/{index-7z1hh3fg.js → index-9dzdbbfc.js} +1 -1
  18. package/dist/cli/index.js +7 -7
  19. package/dist/cli/{islands-bx67g15t.js → islands-6zgb7501.js} +1 -1
  20. package/dist/cli/{mobile-we5q51ey.js → mobile-c92dh8s2.js} +2 -2
  21. package/dist/cli/{start-srs11bm8.js → start-asxb79rc.js} +2 -2
  22. package/dist/cli/{typecheck-7fvww3b7.js → typecheck-m2j4tkdk.js} +165 -35
  23. package/dist/client/chunks/{index-8m2qq61n.js → index-58svs66p.js} +13 -3
  24. package/dist/client/chunks/{index-8m2qq61n.js.map → index-58svs66p.js.map} +5 -4
  25. package/dist/client/chunks/{islands-mfjmdwnb.js → islands-tcadmgcx.js} +3 -6
  26. package/dist/client/chunks/{islands-mfjmdwnb.js.map → islands-tcadmgcx.js.map} +3 -4
  27. package/dist/client/chunks/{react-sprprqzs.js → react-khr6ewhr.js} +2 -2
  28. package/dist/client/index.js +82 -6
  29. package/dist/client/index.js.map +7 -6
  30. package/dist/dev/client/handlers/islands.ts +2 -0
  31. package/dist/dev/client/handlers/react.ts +92 -111
  32. package/dist/dev/client/handlers/reactUpdateQueue.ts +153 -0
  33. package/dist/index.js +505 -389
  34. package/dist/index.js.map +15 -15
  35. package/dist/islands/browser.js +2 -2
  36. package/dist/islands/browser.js.map +3 -3
  37. package/dist/islands/index.js +13 -6
  38. package/dist/islands/index.js.map +6 -5
  39. package/dist/react/browser.js +113 -12
  40. package/dist/react/browser.js.map +10 -7
  41. package/dist/react/components/index.js +31 -7
  42. package/dist/react/components/index.js.map +5 -4
  43. package/dist/react/components/server/index.js +22 -6
  44. package/dist/react/index.js +190 -46
  45. package/dist/react/index.js.map +15 -11
  46. package/dist/react/server.js +82 -23
  47. package/dist/react/server.js.map +11 -9
  48. package/dist/src/build/compileSvelte.d.ts +12 -1
  49. package/dist/src/build/compileVue.d.ts +1 -0
  50. package/dist/src/build/islandEntries.d.ts +3 -1
  51. package/dist/src/cli/scripts/typecheck.d.ts +8 -0
  52. package/dist/src/cli/scripts/typecheckDiagnostics.d.ts +17 -0
  53. package/dist/src/client/preserveIslandMarkup.d.ts +4 -0
  54. package/dist/src/core/islandManifest.d.ts +6 -0
  55. package/dist/src/core/islandStylesheet.d.ts +17 -0
  56. package/dist/src/react/Island.d.ts +9 -2
  57. package/dist/src/react/IslandStyleLink.d.ts +11 -0
  58. package/dist/src/react/createIsland.d.ts +1 -1
  59. package/dist/src/react/serverComponents/nodeRendererRef.d.ts +13 -0
  60. package/dist/src/utils/requestRenderUrl.d.ts +1 -0
  61. package/dist/src/utils/resolveConvention.d.ts +1 -0
  62. package/dist/src/vue/Island.browser.d.ts +3 -1
  63. package/dist/src/vue/Island.d.ts +2 -2
  64. package/dist/src/vue/createIsland.browser.d.ts +2 -2
  65. package/dist/src/vue/createIsland.d.ts +2 -2
  66. package/dist/src/vue/islandStyleLink.d.ts +30 -0
  67. package/dist/svelte/browser.js +2 -2
  68. package/dist/svelte/browser.js.map +3 -3
  69. package/dist/svelte/index.js +51 -49
  70. package/dist/svelte/index.js.map +9 -8
  71. package/dist/svelte/server.js +48 -45
  72. package/dist/svelte/server.js.map +8 -7
  73. package/dist/types/globals.d.ts +3 -0
  74. package/dist/vue/browser.js +105 -10
  75. package/dist/vue/browser.js.map +10 -7
  76. package/dist/vue/index.js +170 -47
  77. package/dist/vue/index.js.map +14 -11
  78. package/dist/vue/server.js +81 -22
  79. package/dist/vue/server.js.map +9 -7
  80. package/package.json +1 -1
  81. /package/dist/cli/{index-6522t968.js → index-yd672jyq.js} +0 -0
  82. /package/dist/client/chunks/{react-sprprqzs.js.map → react-khr6ewhr.js.map} +0 -0
@@ -313,7 +313,7 @@ var ISLAND_BOOTSTRAP_MANIFEST_KEY = "AbsoluteIslandBootstrap", LEGACY_ISLAND_BOO
313
313
  islands[framework] = entries;
314
314
  }
315
315
  return islands;
316
- }, getIslandManifestKey = (framework, component) => `Island${toIslandFrameworkSegment(framework)}${component}`;
316
+ }, getIslandManifestKey = (framework, component) => `Island${toIslandFrameworkSegment(framework)}${component}`, ISLAND_STYLE_PREFIX = "IslandStyle", getIslandStyleManifestEntries = (manifest) => Object.entries(manifest).filter(([key]) => key.startsWith(ISLAND_STYLE_PREFIX)), getIslandStyleManifestKey = (framework, component) => `${ISLAND_STYLE_PREFIX}${toIslandFrameworkSegment(framework)}${component}`;
317
317
 
318
318
  // src/core/islandPageContext.ts
319
319
  var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST__", ISLAND_STATE_MARKER = "__ABS_ISLAND_STATE__", CLOSING_HEAD_TAG = "</head>", warnedMissingBootstrap = false, warnIfBootstrapMissing = (manifest) => {
@@ -350,12 +350,27 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
350
350
  browserManifest[key] = value;
351
351
  }
352
352
  return browserManifest;
353
- }, buildIslandsHeadMarkup = (manifest) => {
353
+ }, ISLAND_MARKER_TAG, ISLAND_FRAMEWORKS, readMarkerAttribute = (tag, name) => new RegExp(`\\b${name}="([^"]*)"`).exec(tag)?.[1]?.replaceAll("&quot;", '"').replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&"), toIslandFramework = (value) => ISLAND_FRAMEWORKS.find((framework) => framework === value), collectRenderedIslandStyleKeys = (html) => {
354
+ const keys = new Set;
355
+ for (const [tag] of html.matchAll(ISLAND_MARKER_TAG)) {
356
+ const framework = toIslandFramework(readMarkerAttribute(tag, "data-framework"));
357
+ const component = readMarkerAttribute(tag, "data-component");
358
+ if (framework && component)
359
+ keys.add(getIslandStyleManifestKey(framework, component));
360
+ }
361
+ return keys;
362
+ }, buildIslandStyleLinks = (manifest, html) => {
363
+ if (html === undefined)
364
+ return "";
365
+ const renderedKeys = collectRenderedIslandStyleKeys(html);
366
+ return getIslandStyleManifestEntries(manifest).filter(([key]) => renderedKeys.has(key)).filter(([, href]) => !html.includes(`href="${href}"`)).map(([key, href]) => `<link rel="stylesheet" href="${href}" data-island-style="${key}"${nonceAttr()}>`).join("");
367
+ }, buildIslandsHeadMarkup = (manifest, html) => {
368
+ const styleLinks = buildIslandStyleLinks(manifest, html);
354
369
  const manifestScript = `<script${nonceAttr()}>window.__ABSOLUTE_MANIFEST__ = ${escapeScriptContent(JSON.stringify(toBrowserManifest(manifest)))}</script>`;
355
370
  const islandStateScript = `<script${nonceAttr()}>window.__ABS_ISLAND_STATE__ = ${escapeScriptContent(JSON.stringify(globalThis.__ABS_ISLAND_STATE__ ?? {}))}</script>`;
356
371
  const bootstrapPath = getIslandBootstrapPath(manifest);
357
372
  const bootstrapScript = bootstrapPath ? `<script${nonceAttr()} type="module" src="${bootstrapPath}"></script>` : "";
358
- return `${manifestScript}${islandStateScript}${bootstrapScript}`;
373
+ return `${styleLinks}${manifestScript}${islandStateScript}${bootstrapScript}`;
359
374
  }, injectHeadMarkup = (html, markup) => {
360
375
  const closingHeadIndex = html.indexOf("</head>");
361
376
  if (closingHeadIndex >= 0) {
@@ -537,7 +552,7 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
537
552
  return html;
538
553
  }
539
554
  warnIfBootstrapMissing(manifest);
540
- return injectHeadMarkup(html, buildIslandsHeadMarkup(manifest));
555
+ return injectHeadMarkup(html, buildIslandsHeadMarkup(manifest, html));
541
556
  }, injectIslandPageContextStream = (stream, options) => {
542
557
  const manifest = globalThis.__absoluteManifest;
543
558
  if (!manifest)
@@ -561,6 +576,13 @@ var init_islandPageContext = __esm(() => {
561
576
  init_logger();
562
577
  MANIFEST_BUILD_DIR_KEY = Symbol.for("absolutejs.islandManifestBuildDir");
563
578
  WINDOWS_ABSOLUTE_PATH = /^[A-Za-z]:[\\/]|^\\\\/;
579
+ ISLAND_MARKER_TAG = /<[^>]*\bdata-island="true"[^>]*>/g;
580
+ ISLAND_FRAMEWORKS = [
581
+ "react",
582
+ "svelte",
583
+ "vue",
584
+ "angular"
585
+ ];
564
586
  });
565
587
 
566
588
  // src/core/devRouteRegistrationCallsite.ts
@@ -2128,6 +2150,12 @@ var CONVENTIONS_KEY = "__absoluteConventions", isConventionsMap = (value) => Boo
2128
2150
  logConventionRenderError(framework, "error", renderError);
2129
2151
  }
2130
2152
  return null;
2153
+ }, isPageRequest = (request) => {
2154
+ if (request.headers.get("hx-request") === "true")
2155
+ return true;
2156
+ if (request.headers.get("sec-fetch-dest") === "document")
2157
+ return true;
2158
+ return (request.headers.get("accept") ?? "").includes("text/html");
2131
2159
  }, renderConventionError = async (framework, pageName, error) => {
2132
2160
  const errorProps = buildErrorProps(error);
2133
2161
  const frameworkResponse = await tryFrameworkErrorConvention(framework, pageName, errorProps, error);
@@ -2139,12 +2167,6 @@ var CONVENTIONS_KEY = "__absoluteConventions", isConventionsMap = (value) => Boo
2139
2167
  return htmlResponse;
2140
2168
  }
2141
2169
  return null;
2142
- }, isPageRequest = (request) => {
2143
- if (request.headers.get("hx-request") === "true")
2144
- return true;
2145
- if (request.headers.get("sec-fetch-dest") === "document")
2146
- return true;
2147
- return (request.headers.get("accept") ?? "").includes("text/html");
2148
2170
  }, renderStaticRouteError = async (request, error) => {
2149
2171
  if (!isPageRequest(request))
2150
2172
  return null;
@@ -4674,9 +4696,9 @@ var createVueCompiler = async () => {
4674
4696
  // src/core/vueServerModule.ts
4675
4697
  import { readFileSync as readFileSync5, realpathSync } from "fs";
4676
4698
  import { mkdir as mkdir3 } from "fs/promises";
4677
- import { dirname as dirname5, join as join8, relative as relative4, resolve as resolve5 } from "path";
4699
+ import { basename as basename4, dirname as dirname5, join as join8, relative as relative4, resolve as resolve5 } from "path";
4678
4700
  var {Transpiler } = globalThis.Bun;
4679
- var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, syncIslandGeneration2, transpiler2, ensureRelativeImportPath2 = (from, target) => {
4701
+ var serverCacheRoot3, compiledModuleCache3, syncIslandGeneration2, transpiler2, ensureRelativeImportPath2 = (from, target) => {
4680
4702
  const importPath = relative4(dirname5(from), target).replace(/\\/g, "/");
4681
4703
  return importPath.startsWith(".") ? importPath : `./${importPath}`;
4682
4704
  }, getCachedModulePath3 = (sourcePath) => {
@@ -4718,7 +4740,7 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, sync
4718
4740
  const compiler = await loadVueCompiler();
4719
4741
  const source = await Bun.file(sourcePath).text();
4720
4742
  const { descriptor } = compiler.parse(source, { filename: sourcePath });
4721
- const componentId = Bun.hash(sourcePath).toString(BASE_36_RADIX).slice(0, ISLAND_COMPONENT_ID_LENGTH);
4743
+ const componentId = toKebab(basename4(sourcePath, ".vue"));
4722
4744
  const hasScript = descriptor.script || descriptor.scriptSetup;
4723
4745
  const compiledScript = hasScript ? compiler.compileScript(descriptor, {
4724
4746
  fs: {
@@ -4768,7 +4790,6 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, sync
4768
4790
  return compiledModulePath;
4769
4791
  };
4770
4792
  var init_vueServerModule = __esm(() => {
4771
- init_constants();
4772
4793
  init_isFile();
4773
4794
  serverCacheRoot3 = join8(process.cwd(), ".absolutejs", "islands", "vue");
4774
4795
  compiledModuleCache3 = new Map;
@@ -4937,6 +4958,18 @@ var init_renderIslandMarkup = __esm(() => {
4937
4958
  });
4938
4959
  });
4939
4960
 
4961
+ // src/utils/requestRenderUrl.ts
4962
+ var requestRenderUrl = (request) => {
4963
+ if (!request)
4964
+ return;
4965
+ try {
4966
+ const parsed = new URL(request.url);
4967
+ return `${parsed.pathname.replace(/\/{2,}/g, "/")}${parsed.search}`;
4968
+ } catch {
4969
+ return;
4970
+ }
4971
+ };
4972
+
4940
4973
  // src/react/pageHandler.ts
4941
4974
  init_cspNonceRef();
4942
4975
  init_islandPageContext();
@@ -5222,16 +5255,7 @@ init_spaRouteManifest();
5222
5255
  init_resolveConvention();
5223
5256
  init_browserTranslation();
5224
5257
  var withRequestUrl = (props, url) => Object.assign(Object.create(null), props, { url });
5225
- var resolveRequestPathname = (request) => {
5226
- if (!request)
5227
- return;
5228
- try {
5229
- const parsed = new URL(request.url);
5230
- return `${parsed.pathname}${parsed.search}`;
5231
- } catch {
5232
- return;
5233
- }
5234
- };
5258
+ var resolveRequestPathname = (request) => requestRenderUrl(request);
5235
5259
  var buildRefreshSetup = () => {
5236
5260
  if (isProductionRuntime()) {
5237
5261
  return "";
@@ -5407,6 +5431,7 @@ var reactFileRoute = (route) => defineFileRouteWith("react", route, async ({ man
5407
5431
  init_cspNonceRef();
5408
5432
  init_requestContext();
5409
5433
  init_pageResponseCache();
5434
+ import { AsyncLocalStorage as AsyncLocalStorage5 } from "async_hooks";
5410
5435
  import { readFile } from "fs/promises";
5411
5436
  import { dirname, join } from "path";
5412
5437
  init_devRouteRegistrationCallsite();
@@ -5479,6 +5504,27 @@ var injectFlightPayload = (html, flight, nonce) => {
5479
5504
  });
5480
5505
  };
5481
5506
 
5507
+ // src/react/serverComponents/nodeRendererRef.ts
5508
+ var STORAGE_KEY = Symbol.for("absolutejs.reactServerNodeRendererStorage");
5509
+ var isRendererStorage = (value) => typeof value === "object" && value !== null && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
5510
+ var isRenderer = (value) => typeof value === "function";
5511
+ var readStorage = () => {
5512
+ const storage = Reflect.get(globalThis, STORAGE_KEY);
5513
+ return isRendererStorage(storage) ? storage : undefined;
5514
+ };
5515
+ var getReactServerNodeRenderer = () => {
5516
+ const store = readStorage()?.getStore();
5517
+ return isRenderer(store) ? store : undefined;
5518
+ };
5519
+ var runWithReactServerNodeRenderer = (renderer, createStorage, render) => {
5520
+ let storage = readStorage();
5521
+ if (!storage) {
5522
+ storage = createStorage();
5523
+ Reflect.set(globalThis, STORAGE_KEY, storage);
5524
+ }
5525
+ return storage.run(renderer, render);
5526
+ };
5527
+
5482
5528
  // src/react/serverComponents/pageHandler.ts
5483
5529
  var isRecord4 = (value) => typeof value === "object" && value !== null;
5484
5530
  var isPageModule = (value) => isRecord4(value) && typeof value.Page === "function" && isRecord4(value.clientManifest) && typeof value.createElement === "function" && typeof value.renderToReadableStream === "function";
@@ -5521,6 +5567,16 @@ var loadRenderer = async (rendererPath) => {
5521
5567
  var logRenderError = (error) => {
5522
5568
  console.error("[SSR] React Server Components error:", error);
5523
5569
  };
5570
+ var createNodeRenderer = (pageModule, renderer) => {
5571
+ const { renderStaticHtml } = renderer;
5572
+ if (!renderStaticHtml)
5573
+ return;
5574
+ const render = (node) => renderStaticHtml(pageModule.renderToReadableStream(node, pageModule.clientManifest, {
5575
+ onError: logRenderError
5576
+ }));
5577
+ return render;
5578
+ };
5579
+ var createRendererStorage = () => new AsyncLocalStorage5;
5524
5580
  var handleReactServerPageRequest = async (input) => {
5525
5581
  const request = input.request ?? getCurrentAbsoluteRequest();
5526
5582
  if (input.page === "") {
@@ -5536,11 +5592,13 @@ var handleReactServerPageRequest = async (input) => {
5536
5592
  ]);
5537
5593
  const renderer = await loadRenderer(runtime.ssr);
5538
5594
  const nonce = readCspNonce();
5539
- const flight = pageModule.renderToReadableStream(pageModule.createElement(pageModule.Page, input.props ?? {}), pageModule.clientManifest, { onError: logRenderError });
5595
+ const renderFlight = () => pageModule.renderToReadableStream(pageModule.createElement(pageModule.Page, input.props ?? {}), pageModule.clientManifest, { onError: logRenderError });
5596
+ const nodeRenderer = createNodeRenderer(pageModule, renderer);
5597
+ const flight = nodeRenderer ? runWithReactServerNodeRenderer(nodeRenderer, createRendererStorage, renderFlight) : renderFlight();
5540
5598
  const [forHtml, forPayload] = flight.tee();
5541
5599
  const html = await renderer.renderHtml(forHtml, {
5542
5600
  bootstrapModules: [runtime.client],
5543
- bootstrapScriptContent: BROWSER_TRANSLATION_BASELINE_SCRIPT,
5601
+ bootstrapScriptContent: `${BROWSER_TRANSLATION_BASELINE_SCRIPT}window.__ABS_SLOT_HYDRATION_PENDING__=true;`,
5544
5602
  nonce,
5545
5603
  onError: logRenderError
5546
5604
  });
@@ -5563,36 +5621,122 @@ var handleReactServerPageRequest = async (input) => {
5563
5621
  // src/react/Island.tsx
5564
5622
  init_islandMarkupAttributes();
5565
5623
  init_renderIslandMarkup();
5566
- import { jsx } from "react/jsx-runtime";
5567
- var Island = async (props) => {
5624
+
5625
+ // src/core/islandStylesheet.ts
5626
+ init_cspNonceRef();
5627
+ var INLINE_ISLAND_STYLES_CONTEXT_KEY = "__absoluteInlineIslandStyles";
5628
+ var ISLAND_STYLE_PRECEDENCE = "absolute-islands";
5629
+ var ISLAND_FRAMEWORKS2 = [
5630
+ "react",
5631
+ "svelte",
5632
+ "vue",
5633
+ "angular"
5634
+ ];
5635
+ var toIslandFramework2 = (value) => ISLAND_FRAMEWORKS2.find((framework) => framework === value);
5636
+ var readIslandManifest = () => {
5637
+ const manifest = typeof window === "undefined" ? Reflect.get(globalThis, "__absoluteManifest") : Reflect.get(window, "__ABSOLUTE_MANIFEST__");
5638
+ return typeof manifest === "object" && manifest !== null ? manifest : undefined;
5639
+ };
5640
+ var findIslandStylesheet = (framework, component) => {
5641
+ const islandFramework = toIslandFramework2(framework);
5642
+ const manifest = readIslandManifest();
5643
+ if (!islandFramework || !manifest)
5644
+ return;
5645
+ const key = getIslandStyleManifestKey(islandFramework, component);
5646
+ const href = Reflect.get(manifest, key);
5647
+ return typeof href === "string" ? { href, key } : undefined;
5648
+ };
5649
+ var readIslandStyleNonce = () => {
5650
+ if (typeof document === "undefined")
5651
+ return readCspNonce() ?? "";
5652
+ return Array.from(document.querySelectorAll("script[nonce]")).find((element) => element.nonce)?.nonce ?? "";
5653
+ };
5654
+
5655
+ // src/react/IslandStyleLink.tsx
5656
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
5657
+ var IslandStyleLink = ({
5658
+ component,
5659
+ framework
5660
+ }) => {
5661
+ const stylesheet = findIslandStylesheet(framework, component);
5662
+ if (!stylesheet)
5663
+ return null;
5664
+ const nonce = readIslandStyleNonce();
5665
+ return /* @__PURE__ */ jsx("link", {
5666
+ "data-island-style": stylesheet.key,
5667
+ href: stylesheet.href,
5668
+ nonce: nonce || undefined,
5669
+ precedence: ISLAND_STYLE_PRECEDENCE,
5670
+ rel: "stylesheet"
5671
+ });
5672
+ };
5673
+ var IslandWithStylesheet = ({
5674
+ component,
5675
+ framework,
5676
+ marker
5677
+ }) => /* @__PURE__ */ jsxs(Fragment, {
5678
+ children: [
5679
+ /* @__PURE__ */ jsx(IslandStyleLink, {
5680
+ component,
5681
+ framework
5682
+ }),
5683
+ /* @__PURE__ */ jsx("div", {
5684
+ ...marker
5685
+ })
5686
+ ]
5687
+ });
5688
+
5689
+ // src/react/Island.tsx
5690
+ import { jsx as jsx2, jsxs as jsxs2, Fragment as Fragment2 } from "react/jsx-runtime";
5691
+ var Island = (props) => {
5568
5692
  if (typeof window !== "undefined") {
5569
- return /* @__PURE__ */ jsx("div", {
5570
- ...getIslandMarkerAttributes(props),
5571
- suppressHydrationWarning: true
5693
+ return /* @__PURE__ */ jsx2(IslandWithStylesheet, {
5694
+ component: props.component,
5695
+ framework: props.framework,
5696
+ marker: {
5697
+ ...getIslandMarkerAttributes(props),
5698
+ suppressHydrationWarning: true
5699
+ }
5572
5700
  });
5573
5701
  }
5574
- const result = await renderIslandResult(requireCurrentIslandRegistry(), props);
5575
- return /* @__PURE__ */ jsx("div", {
5576
- ...result.attributes,
5577
- dangerouslySetInnerHTML: { __html: result.html }
5702
+ return /* @__PURE__ */ jsx2(ServerIsland, {
5703
+ island: props,
5704
+ registry: requireCurrentIslandRegistry()
5705
+ });
5706
+ };
5707
+ var ServerIsland = async ({ island, registry }) => {
5708
+ const { attributes, html } = await renderIslandResult(registry, island);
5709
+ return /* @__PURE__ */ jsxs2(Fragment2, {
5710
+ children: [
5711
+ /* @__PURE__ */ jsx2(IslandStyleLink, {
5712
+ component: island.component,
5713
+ framework: island.framework
5714
+ }),
5715
+ /* @__PURE__ */ jsx2("div", {
5716
+ ...attributes,
5717
+ dangerouslySetInnerHTML: { __html: html }
5718
+ })
5719
+ ]
5578
5720
  });
5579
5721
  };
5580
5722
  // src/react/createIsland.tsx
5581
5723
  init_islandMarkupAttributes();
5582
- init_renderIslandMarkup();
5583
- import { jsx as jsx2 } from "react/jsx-runtime";
5724
+ import { jsx as jsx3 } from "react/jsx-runtime";
5584
5725
  var createTypedIsland = (registry) => {
5585
- const Island = async (props) => {
5726
+ const Island = (props) => {
5586
5727
  if (typeof window !== "undefined") {
5587
- return /* @__PURE__ */ jsx2("div", {
5588
- ...getIslandMarkerAttributes(props),
5589
- suppressHydrationWarning: true
5728
+ return /* @__PURE__ */ jsx3(IslandWithStylesheet, {
5729
+ component: props.component,
5730
+ framework: props.framework,
5731
+ marker: {
5732
+ ...getIslandMarkerAttributes(props),
5733
+ suppressHydrationWarning: true
5734
+ }
5590
5735
  });
5591
5736
  }
5592
- const result = await renderIslandResult(registry, props);
5593
- return /* @__PURE__ */ jsx2("div", {
5594
- ...result.attributes,
5595
- dangerouslySetInnerHTML: { __html: result.html }
5737
+ return /* @__PURE__ */ jsx3(ServerIsland, {
5738
+ island: props,
5739
+ registry
5596
5740
  });
5597
5741
  };
5598
5742
  return Island;
@@ -5710,5 +5854,5 @@ export {
5710
5854
  useIslandStore
5711
5855
  };
5712
5856
 
5713
- //# debugId=76F279FE64B890CE64756E2164756E21
5857
+ //# debugId=7998F139E6F8E34364756E2164756E21
5714
5858
  //# sourceMappingURL=index.js.map