@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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  prepareBrowserTranslationHydration2
3
- } from "./index-8m2qq61n.js";
3
+ } from "./index-58svs66p.js";
4
4
 
5
5
  // src/client/hydrators/react.ts
6
6
  import { createElement } from "react";
@@ -77,4 +77,4 @@ export {
77
77
  };
78
78
 
79
79
  //# debugId=566183856C37B0E164756E2164756E21
80
- //# sourceMappingURL=react-sprprqzs.js.map
80
+ //# sourceMappingURL=react-khr6ewhr.js.map
@@ -1,7 +1,8 @@
1
1
  import {
2
+ readCspNonce,
2
3
  captureSsrTextBaselines2,
3
4
  prepareBrowserTranslationHydration2
4
- } from "./chunks/index-8m2qq61n.js";
5
+ } from "./chunks/index-58svs66p.js";
5
6
  var __chunkGraphs;
6
7
  var __chunkSeen;
7
8
  var __chunkNonce;
@@ -32,7 +33,7 @@ var __chunks = (base, ids, nodes, entry) => {
32
33
  __chunkSeen ||= {};
33
34
  __preload(ids[entry], 1);
34
35
  };
35
- __chunks(import.meta.url,["50gqr4s4","sprprqzs","6ewphsvj","db6ppn1f","mfjmdwnb","8m2qq61n","4j1snyh2"],[["./index.js",5],["./chunks/react-sprprqzs.js",5],["./chunks/svelte-6ewphsvj.js"],["./chunks/vue-db6ppn1f.js"],["./chunks/islands-mfjmdwnb.js",5,6],["./chunks/index-8m2qq61n.js"],["./chunks/index-4j1snyh2.js"]],0);
36
+ __chunks(import.meta.url,["1d3d696r","khr6ewhr","6ewphsvj","db6ppn1f","tcadmgcx","58svs66p","4j1snyh2"],[["./index.js",5],["./chunks/react-khr6ewhr.js",5],["./chunks/svelte-6ewphsvj.js"],["./chunks/vue-db6ppn1f.js"],["./chunks/islands-tcadmgcx.js",5,6],["./chunks/index-58svs66p.js"],["./chunks/index-4j1snyh2.js"]],0);
36
37
 
37
38
  // src/core/islandManifest.ts
38
39
  var toIslandFrameworkSegment = (framework) => framework[0]?.toUpperCase() + framework.slice(1);
@@ -62,6 +63,8 @@ var getIslandManifestEntries = (manifest) => {
62
63
  return islands;
63
64
  };
64
65
  var getIslandManifestKey = (framework, component) => `Island${toIslandFrameworkSegment(framework)}${component}`;
66
+ var ISLAND_STYLE_PREFIX = "IslandStyle";
67
+ var getIslandStyleManifestKey = (framework, component) => `${ISLAND_STYLE_PREFIX}${toIslandFrameworkSegment(framework)}${component}`;
65
68
 
66
69
  // src/client/islandResolver.ts
67
70
  var isStringRecord = (value) => typeof value === "object" && value !== null && Object.values(value).every((entry) => typeof entry === "string");
@@ -316,6 +319,13 @@ var parseIslandProps = (rawProps) => {
316
319
  return JSON.parse(rawProps);
317
320
  };
318
321
 
322
+ // src/core/islandStylesheet.ts
323
+ var readIslandStyleNonce = () => {
324
+ if (typeof document === "undefined")
325
+ return readCspNonce() ?? "";
326
+ return Array.from(document.querySelectorAll("script[nonce]")).find((element) => element.nonce)?.nonce ?? "";
327
+ };
328
+
319
329
  // src/client/preserveIslandMarkup.ts
320
330
  var getSnapshotMap = () => {
321
331
  if (typeof window === "undefined") {
@@ -353,6 +363,7 @@ var initializeIslandMarkupSnapshot = () => {
353
363
  snapshotIslandElement(element, snapshotMap);
354
364
  }
355
365
  };
366
+ var claimedServerIslands = new WeakSet;
356
367
  var innerHtmlObjects = new Map;
357
368
 
358
369
  // src/client/islandRuntime.ts
@@ -366,6 +377,68 @@ var isPropsRecord = (value) => typeof value === "object" && value !== null;
366
377
  var isIslandElement = (value) => value instanceof HTMLElement && value.dataset.island === "true";
367
378
  var observedRoots = new WeakSet;
368
379
  var hydratingIslands = new WeakSet;
380
+ var ISLAND_FRAMEWORKS = [
381
+ "react",
382
+ "svelte",
383
+ "vue",
384
+ "angular"
385
+ ];
386
+ var toIslandFramework = (value) => ISLAND_FRAMEWORKS.find((framework) => framework === value);
387
+ var readInjectedManifest2 = () => {
388
+ const manifest = Reflect.get(window, "__ABSOLUTE_MANIFEST__");
389
+ return typeof manifest === "object" && manifest !== null ? manifest : undefined;
390
+ };
391
+ var findIslandStyleLinks = (key) => Array.from(document.querySelectorAll('link[rel="stylesheet"][data-island-style]')).filter((link) => link.dataset.islandStyle === key);
392
+ var hasStylesheet = (href) => {
393
+ const target = new URL(href, document.baseURI).href;
394
+ return Array.from(document.querySelectorAll('link[rel="stylesheet"]')).some((link) => link.href === target);
395
+ };
396
+ var createIslandStyleLink = (key, href) => {
397
+ const link = document.createElement("link");
398
+ link.rel = "stylesheet";
399
+ link.href = href;
400
+ link.dataset.islandStyle = key;
401
+ const nonce = readIslandStyleNonce();
402
+ if (nonce)
403
+ link.nonce = nonce;
404
+ return link;
405
+ };
406
+ var ensureIslandStylesheet = (framework, component) => {
407
+ const islandFramework = toIslandFramework(framework);
408
+ const manifest = readInjectedManifest2();
409
+ if (!islandFramework || !manifest)
410
+ return;
411
+ const key = getIslandStyleManifestKey(islandFramework, component);
412
+ const href = Reflect.get(manifest, key);
413
+ if (typeof href !== "string" || hasStylesheet(href))
414
+ return;
415
+ document.head.appendChild(createIslandStyleLink(key, href));
416
+ };
417
+ var swapIslandStylesheet = (framework, component, href) => {
418
+ const islandFramework = toIslandFramework(framework);
419
+ if (!islandFramework || hasStylesheet(href))
420
+ return;
421
+ const key = getIslandStyleManifestKey(islandFramework, component);
422
+ const previous = findIslandStyleLinks(key);
423
+ const anchor = previous[previous.length - 1];
424
+ const next = createIslandStyleLink(key, href);
425
+ if (anchor) {
426
+ for (const { name, value } of Array.from(anchor.attributes))
427
+ if (name !== "href" && name !== "nonce")
428
+ next.setAttribute(name, value);
429
+ anchor.after(next);
430
+ } else
431
+ document.head.appendChild(next);
432
+ const removePrevious = () => {
433
+ for (const link of previous)
434
+ link.remove();
435
+ };
436
+ next.addEventListener("load", removePrevious, { once: true });
437
+ next.addEventListener("error", removePrevious, { once: true });
438
+ const manifest = readInjectedManifest2();
439
+ if (manifest)
440
+ Reflect.set(manifest, key, href);
441
+ };
369
442
  var hydratePreservingBrowserTranslation = async (element, hydrate) => {
370
443
  const restoreTranslation = prepareBrowserTranslationHydration2(element);
371
444
  try {
@@ -377,7 +450,7 @@ var hydratePreservingBrowserTranslation = async (element, hydrate) => {
377
450
  var hydrateByFramework = async (registry, framework, componentName, element, props, resolveComponent) => {
378
451
  const propsRecord = isPropsRecord(props) ? props : undefined;
379
452
  if (framework === "react") {
380
- const { hydrateReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
453
+ const { hydrateReactIsland, isReactComponent } = await (__preload("khr6ewhr"), import("./chunks/react-khr6ewhr.js"));
381
454
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.react?.[componentName]);
382
455
  if (!isReactComponent(resolvedComponent))
383
456
  return;
@@ -404,7 +477,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
404
477
  return;
405
478
  }
406
479
  if (framework === "angular") {
407
- const { mountAngularIsland, isAngularComponent } = await (__preload("mfjmdwnb"), import("./chunks/islands-mfjmdwnb.js"));
480
+ const { mountAngularIsland, isAngularComponent } = await (__preload("tcadmgcx"), import("./chunks/islands-tcadmgcx.js"));
408
481
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.angular?.[componentName]);
409
482
  const { islandId } = element.dataset;
410
483
  if (!isAngularComponent(resolvedComponent) || !islandId)
@@ -423,6 +496,7 @@ var hydrateIsland = async (registry, element, resolveComponent) => {
423
496
  return;
424
497
  const props = parseIslandProps(element.getAttribute("data-props"));
425
498
  hydratingIslands.add(element);
499
+ ensureIslandStylesheet(framework, componentName);
426
500
  try {
427
501
  await hydrateByFramework(registry, framework, componentName, element, props, resolveComponent);
428
502
  } catch (error) {
@@ -465,7 +539,7 @@ var collectIslandElements = (node) => {
465
539
  };
466
540
  var remountByFramework = async (framework, component, element, props) => {
467
541
  if (framework === "react") {
468
- const { remountReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
542
+ const { remountReactIsland, isReactComponent } = await (__preload("khr6ewhr"), import("./chunks/react-khr6ewhr.js"));
469
543
  if (!isReactComponent(component))
470
544
  return false;
471
545
  remountReactIsland(component, element, props);
@@ -502,6 +576,8 @@ var applyIslandHotUpdate = async (update) => {
502
576
  const elements = findIslandElements(update.framework, update.component);
503
577
  if (elements.length === 0)
504
578
  return true;
579
+ if (update.stylePath)
580
+ swapIslandStylesheet(update.framework, update.component, update.stylePath);
505
581
  const loadedModule = await import(update.modulePath);
506
582
  const results = await Promise.all(elements.map((element) => remountIslandElement(update, loadedModule.default, element)));
507
583
  return results.every(Boolean);
@@ -724,5 +800,5 @@ export {
724
800
  subscribeIslandStore
725
801
  };
726
802
 
727
- //# debugId=DB5A54DCE17303CA64756E2164756E21
803
+ //# debugId=598BD8F9E704CD7A64756E2164756E21
728
804
  //# sourceMappingURL=index.js.map
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/core/islandManifest.ts", "../src/client/islandResolver.ts", "../src/client/streamSwap.ts", "../node_modules/zustand/esm/vanilla.mjs", "../node_modules/zustand/esm/middleware.mjs", "../src/client/islandStore.ts", "../src/core/islands.ts", "../src/client/preserveIslandMarkup.ts", "../src/client/islandRuntime.ts", "../src/utils/formActionProtocol.ts", "../src/client/formActions.ts"],
3
+ "sources": ["../src/core/islandManifest.ts", "../src/client/islandResolver.ts", "../src/client/streamSwap.ts", "../node_modules/zustand/esm/vanilla.mjs", "../node_modules/zustand/esm/middleware.mjs", "../src/client/islandStore.ts", "../src/core/islands.ts", "../src/core/islandStylesheet.ts", "../src/client/preserveIslandMarkup.ts", "../src/client/islandRuntime.ts", "../src/utils/formActionProtocol.ts", "../src/client/formActions.ts"],
4
4
  "sourcesContent": [
5
- "import type { IslandFramework } from '../../types/island';\n\n/** Manifest key the server injects as the islands bootstrap script on any\n * page with island markers. The build records the configured\n * `islands.bootstrap` (whatever its file name) or a generated default under\n * it — see build/islandBootstrap.ts. */\nexport const ISLAND_BOOTSTRAP_MANIFEST_KEY = 'AbsoluteIslandBootstrap';\n\n/** Key a bootstrap file named `bootstrapClient.*` gets naturally, which is\n * all the server used to look for. Still honored for manifests built\n * before the reserved key existed. */\nexport const LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY = 'BootstrapClient';\n\nconst toIslandFrameworkSegment = (framework: IslandFramework) =>\n\tframework[0]?.toUpperCase() + framework.slice(1);\n\nconst collectFrameworkIslands = (\n\tmanifest: Record<string, string>,\n\tprefix: string\n) => {\n\tconst entries: Record<string, string> = {};\n\tlet found = false;\n\n\tfor (const [key, value] of Object.entries(manifest)) {\n\t\tif (!key.startsWith(prefix)) continue;\n\n\t\tconst component = key.slice(prefix.length);\n\t\tif (!component) continue;\n\n\t\tentries[component] = value;\n\t\tfound = true;\n\t}\n\n\treturn found ? entries : undefined;\n};\n\nexport const getIslandBootstrapPath = (manifest: Record<string, string>) =>\n\tmanifest[ISLAND_BOOTSTRAP_MANIFEST_KEY] ??\n\tmanifest[LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY];\nexport const getIslandManifestEntries = (manifest: Record<string, string>) => {\n\tconst islands: Partial<Record<IslandFramework, Record<string, string>>> =\n\t\t{};\n\tconst frameworks: IslandFramework[] = ['react', 'svelte', 'vue', 'angular'];\n\n\tfor (const framework of frameworks) {\n\t\tconst prefix = `Island${toIslandFrameworkSegment(framework)}`;\n\t\tconst entries = collectFrameworkIslands(manifest, prefix);\n\t\tif (entries) islands[framework] = entries;\n\t}\n\n\treturn islands;\n};\nexport const getIslandManifestKey = (\n\tframework: IslandFramework,\n\tcomponent: string\n) => `Island${toIslandFrameworkSegment(framework)}${component}`;\n",
5
+ "import type { IslandFramework } from '../../types/island';\n\n/** Manifest key the server injects as the islands bootstrap script on any\n * page with island markers. The build records the configured\n * `islands.bootstrap` (whatever its file name) or a generated default under\n * it — see build/islandBootstrap.ts. */\nexport const ISLAND_BOOTSTRAP_MANIFEST_KEY = 'AbsoluteIslandBootstrap';\n\n/** Key a bootstrap file named `bootstrapClient.*` gets naturally, which is\n * all the server used to look for. Still honored for manifests built\n * before the reserved key existed. */\nexport const LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY = 'BootstrapClient';\n\nconst toIslandFrameworkSegment = (framework: IslandFramework) =>\n\tframework[0]?.toUpperCase() + framework.slice(1);\n\nconst collectFrameworkIslands = (\n\tmanifest: Record<string, string>,\n\tprefix: string\n) => {\n\tconst entries: Record<string, string> = {};\n\tlet found = false;\n\n\tfor (const [key, value] of Object.entries(manifest)) {\n\t\tif (!key.startsWith(prefix)) continue;\n\n\t\tconst component = key.slice(prefix.length);\n\t\tif (!component) continue;\n\n\t\tentries[component] = value;\n\t\tfound = true;\n\t}\n\n\treturn found ? entries : undefined;\n};\n\nexport const getIslandBootstrapPath = (manifest: Record<string, string>) =>\n\tmanifest[ISLAND_BOOTSTRAP_MANIFEST_KEY] ??\n\tmanifest[LEGACY_ISLAND_BOOTSTRAP_MANIFEST_KEY];\nexport const getIslandManifestEntries = (manifest: Record<string, string>) => {\n\tconst islands: Partial<Record<IslandFramework, Record<string, string>>> =\n\t\t{};\n\tconst frameworks: IslandFramework[] = ['react', 'svelte', 'vue', 'angular'];\n\n\tfor (const framework of frameworks) {\n\t\tconst prefix = `Island${toIslandFrameworkSegment(framework)}`;\n\t\tconst entries = collectFrameworkIslands(manifest, prefix);\n\t\tif (entries) islands[framework] = entries;\n\t}\n\n\treturn islands;\n};\nexport const getIslandManifestKey = (\n\tframework: IslandFramework,\n\tcomponent: string\n) => `Island${toIslandFrameworkSegment(framework)}${component}`;\n\nconst ISLAND_STYLE_PREFIX = 'IslandStyle';\n\n/** Every island stylesheet in the manifest, by manifest key. */\nexport const getIslandStyleManifestEntries = (\n\tmanifest: Record<string, string>\n) =>\n\tObject.entries(manifest).filter(([key]) =>\n\t\tkey.startsWith(ISLAND_STYLE_PREFIX)\n\t);\n\n/** Manifest key of the stylesheet the island client pass emits for an\n * island (its Svelte/Vue component styles and any CSS it imports). The\n * server links it from every page that renders the island. */\nexport const getIslandStyleManifestKey = (\n\tframework: IslandFramework,\n\tcomponent: string\n) => `${ISLAND_STYLE_PREFIX}${toIslandFrameworkSegment(framework)}${component}`;\n",
6
6
  "import type { IslandFramework } from '../../types/island';\nimport {\n\tgetIslandManifestEntries,\n\tgetIslandManifestKey\n} from '../core/islandManifest';\n\nconst isStringRecord = (value: unknown): value is Record<string, string> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\n/** The manifest the server injects as `window.__ABSOLUTE_MANIFEST__` on any\n * page with islands (core/islandPageContext.ts). */\nconst readInjectedManifest = () => {\n\tconst injected: unknown = Reflect.get(globalThis, '__ABSOLUTE_MANIFEST__');\n\n\treturn isStringRecord(injected) ? injected : {};\n};\n\n/** Resolves island components from the build manifest's per-island chunks.\n * Defaults to the manifest the server injected into the page. */\nexport const createIslandManifestResolver = (\n\tmanifest: Record<string, string> = readInjectedManifest()\n) => {\n\tconst islandManifest = getIslandManifestEntries(manifest);\n\n\treturn async (framework: IslandFramework, component: string) => {\n\t\tconst modulePath =\n\t\t\tislandManifest[framework]?.[component] ??\n\t\t\tmanifest[getIslandManifestKey(framework, component)];\n\t\tif (!modulePath) return undefined;\n\n\t\tconst loadedModule = await import(modulePath);\n\n\t\treturn loadedModule.default;\n\t};\n};\n",
7
7
  "type AbsoluteSlotWindow = Window & {\n\t__ABS_SLOT_ENQUEUE__?: (id: string, payload: unknown) => void;\n\t__ABS_SLOT_FLUSH__?: () => void;\n\t__ABS_SLOT_CONSUMERS__?: Record<\n\t\tstring,\n\t\t((payload: unknown) => boolean | void) | undefined\n\t>;\n\t__ABS_SLOT_HYDRATION_PENDING__?: boolean;\n\t__ABS_SLOT_PENDING__?: Record<string, unknown>;\n\t__ABS_SLOT_RUNTIME__?: boolean;\n};\n\nconst streamSwapRuntime = () => {\n\tconst absoluteWindow: AbsoluteSlotWindow = window;\n\tconst SLOT_PATCH_EVENT = 'absolutejs:slot-patch';\n\tif (absoluteWindow.__ABS_SLOT_RUNTIME__ === true) return;\n\tabsoluteWindow.__ABS_SLOT_RUNTIME__ = true;\n\tabsoluteWindow.__ABS_SLOT_CONSUMERS__ =\n\t\tabsoluteWindow.__ABS_SLOT_CONSUMERS__ ?? {};\n\tabsoluteWindow.__ABS_SLOT_PENDING__ =\n\t\tabsoluteWindow.__ABS_SLOT_PENDING__ ?? {};\n\tconst consumers = absoluteWindow.__ABS_SLOT_CONSUMERS__;\n\tconst pending = absoluteWindow.__ABS_SLOT_PENDING__;\n\tconst isObjectRecord = (value: unknown): value is Record<string, unknown> =>\n\t\tBoolean(value) && typeof value === 'object';\n\tconst isPatchedPendingEntry = (\n\t\tvalue: unknown\n\t): value is {\n\t\tdomPatched: true;\n\t\tpayload: unknown;\n\t} => {\n\t\tif (!isObjectRecord(value)) return false;\n\n\t\treturn value.domPatched === true && 'payload' in value;\n\t};\n\tconst unwrapPendingPayload = (value: unknown) =>\n\t\tisPatchedPendingEntry(value) ? value.payload : value;\n\tconst canApplyImmediately = () =>\n\t\tabsoluteWindow.__ABS_SLOT_HYDRATION_PENDING__ !== true;\n\tconst isAngularDeferPayload = (payload: unknown) => {\n\t\tif (!isObjectRecord(payload)) return false;\n\n\t\treturn payload.kind === 'angular-defer';\n\t};\n\tconst isVueSuspensePayload = (payload: unknown) => {\n\t\tif (!isObjectRecord(payload)) return false;\n\n\t\treturn payload.kind === 'vue-suspense';\n\t};\n\tconst resolveHtml = (payload: unknown) => {\n\t\tif (!isObjectRecord(payload)) {\n\t\t\treturn typeof payload === 'string' ? payload : '';\n\t\t}\n\t\tif (typeof payload.html === 'string') {\n\t\t\treturn payload.html;\n\t\t}\n\n\t\treturn '';\n\t};\n\n\tconst apply = (id: string, pendingEntry: unknown) => {\n\t\tconst payload = unwrapPendingPayload(pendingEntry);\n\t\tif (!canApplyImmediately()) {\n\t\t\tpending[id] = payload;\n\n\t\t\treturn;\n\t\t}\n\t\tconst consumer = consumers[id];\n\t\tif (typeof consumer !== 'function') {\n\t\t\tapplyToDom(id, payload, pendingEntry);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst handled = consumer(payload);\n\t\tif (handled !== false) {\n\t\t\tdelete pending[id];\n\n\t\t\treturn;\n\t\t}\n\n\t\tapplyToDom(id, payload, pendingEntry);\n\t};\n\tconst applyToDom = (\n\t\tid: string,\n\t\tpayload: unknown,\n\t\tpendingEntry: unknown\n\t) => {\n\t\tif (isAngularDeferPayload(payload)) {\n\t\t\tpending[id] = payload;\n\n\t\t\treturn;\n\t\t}\n\t\tconst node = document.getElementById(id);\n\t\tif (!node) {\n\t\t\tpending[id] = payload;\n\n\t\t\treturn;\n\t\t}\n\t\tconst html = resolveHtml(payload);\n\t\tif (\n\t\t\tisVueSuspensePayload(payload) &&\n\t\t\tisPatchedPendingEntry(pendingEntry)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tnode.innerHTML = html;\n\t\tnode.setAttribute('data-absolute-slot-state', 'resolved');\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(SLOT_PATCH_EVENT, {\n\t\t\t\tdetail: { html, id, payload }\n\t\t\t})\n\t\t);\n\t\tif (isVueSuspensePayload(payload)) {\n\t\t\tpending[id] = { domPatched: true, payload };\n\n\t\t\treturn;\n\t\t}\n\t\tdelete pending[id];\n\t};\n\n\tconst flush = () => {\n\t\tfor (const id in pending) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(pending, id)) continue;\n\t\t\tapply(id, pending[id] ?? '');\n\t\t}\n\t};\n\n\tabsoluteWindow.__ABS_SLOT_FLUSH__ = flush;\n\tabsoluteWindow.__ABS_SLOT_ENQUEUE__ = (id: string, payload: unknown) => {\n\t\tapply(id, payload);\n\t};\n\n\tif (typeof MutationObserver === 'function') {\n\t\tconst observer = new MutationObserver(flush);\n\t\tconst root = document.documentElement ?? document.body ?? document;\n\t\tobserver.observe(root, { childList: true, subtree: true });\n\t}\n\n\tif (document.readyState === 'loading') {\n\t\tdocument.addEventListener('DOMContentLoaded', flush, { once: true });\n\t}\n\tflush();\n};\n\nconst stripFunctionWrapper = (value: string) => {\n\tconst start = value.indexOf('{');\n\tconst end = value.lastIndexOf('}');\n\tif (start < 0 || end <= start) return '';\n\n\treturn value.slice(start + 1, end);\n};\n\nexport const getStreamSwapRuntimeScript = () =>\n\t`(function(){${stripFunctionWrapper(streamSwapRuntime.toString())}})();`;\n",
8
8
  "const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n",
9
9
  "const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n",
10
10
  "import { createStore, type StateCreator, type StoreApi } from 'zustand/vanilla';\nimport { combine } from 'zustand/middleware';\n\nexport type IslandStoreState = object;\ntype IslandStoreSnapshot = Record<string, unknown>;\ntype IslandStoreShape<\n\tTState extends IslandStoreState,\n\tTActions extends object\n> = Omit<TState, keyof TActions> & TActions;\nexport type IslandStateSnapshot = Record<string, IslandStoreSnapshot>;\ntype AnyIslandStore = StoreApi<object>;\ntype IslandStoreInstance = {\n\tapplyExternalSnapshot: (snapshot: IslandStoreSnapshot) => void;\n\tstore: AnyIslandStore;\n};\n\nexport const ABSOLUTE_ISLAND_STATE = '__ABS_ISLAND_STATE__';\nexport const ABSOLUTE_ISLAND_STORES = '__ABS_ISLAND_STORES__';\n\ndeclare global {\n\tvar __ABS_ISLAND_STATE__: IslandStateSnapshot | undefined;\n\tvar __ABS_ISLAND_STORES__:\n\t\tMap<string, Set<IslandStoreInstance>> | undefined;\n}\n\nconst getIslandStoreSnapshot = () => {\n\tglobalThis.__ABS_ISLAND_STATE__ ??= {};\n\n\treturn globalThis.__ABS_ISLAND_STATE__;\n};\n\nconst getIslandStores = () => {\n\tglobalThis.__ABS_ISLAND_STORES__ ??= new Map();\n\n\treturn globalThis.__ABS_ISLAND_STORES__;\n};\n\nconst isSerializableValue = (value: unknown) =>\n\ttypeof value !== 'function' && value !== undefined;\n\nconst toSerializableState = <T extends object>(state: T) =>\n\tObject.fromEntries(\n\t\tObject.entries(state).filter(([, value]) => isSerializableValue(value))\n\t);\n\nconst applySnapshot = <T extends object>(\n\tstore: StoreApi<T>,\n\tsnapshot: IslandStoreSnapshot | undefined\n) => {\n\tif (!snapshot) {\n\t\treturn;\n\t}\n\n\tstore.setState({\n\t\t...store.getState(),\n\t\t...snapshot\n\t});\n};\n\nconst getPeerStores = (\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => [...storeInstances].filter((peer) => peer.store !== ownerStore);\n\nconst syncIslandSnapshot = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tstate: IslandStoreShape<TState, TActions>,\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => {\n\tconst nextSnapshot = toSerializableState(state);\n\tgetIslandStoreSnapshot()[storeId] = nextSnapshot;\n\n\tfor (const peerStore of getPeerStores(storeInstances, ownerStore)) {\n\t\tpeerStore.applyExternalSnapshot(nextSnapshot);\n\t}\n};\n\nexport const createIslandStore = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tinitialState: TState,\n\tcreateState: StateCreator<TState, [], [], TActions>\n) => {\n\tconst store = createStore(combine(initialState, createState));\n\tconst stores = getIslandStores();\n\tconst storeInstances =\n\t\tstores.get(storeId) ?? new Set<IslandStoreInstance>();\n\tconst initialSnapshot = getIslandStoreSnapshot()[storeId];\n\tapplySnapshot(store, initialSnapshot);\n\tlet isApplyingExternalSnapshot = false;\n\n\tconst applyExternalSnapshot = (snapshot: IslandStoreSnapshot) => {\n\t\tisApplyingExternalSnapshot = true;\n\t\tapplySnapshot(store, snapshot);\n\t};\n\n\tstoreInstances.add({\n\t\tapplyExternalSnapshot,\n\t\tstore\n\t});\n\tstores.set(storeId, storeInstances);\n\n\tsyncIslandSnapshot(storeId, store.getState(), storeInstances, store);\n\tstore.subscribe((state) => {\n\t\tif (isApplyingExternalSnapshot) {\n\t\t\tisApplyingExternalSnapshot = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tsyncIslandSnapshot(storeId, state, storeInstances, store);\n\t});\n\n\treturn store;\n};\nexport const getIslandStoreServerSnapshot = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getInitialState());\nconst applySnapshotToStoreInstances = (\n\tstoreId: string,\n\tinstances: Set<IslandStoreInstance>,\n\tsnapshot: IslandStateSnapshot\n) => {\n\tfor (const instance of instances) {\n\t\tinstance.applyExternalSnapshot(snapshot[storeId] ?? {});\n\t}\n};\n\nexport const initializeIslandStores = (state: IslandStateSnapshot) => {\n\tconst currentSnapshot = getIslandStoreSnapshot();\n\tconst nextSnapshot: IslandStateSnapshot = {\n\t\t...state,\n\t\t...currentSnapshot\n\t};\n\n\tglobalThis.__ABS_ISLAND_STATE__ = nextSnapshot;\n\n\tfor (const [storeId, store] of getIslandStores()) {\n\t\tapplySnapshotToStoreInstances(storeId, store, nextSnapshot);\n\t}\n};\nexport const readIslandStore = <TState extends IslandStoreState, TSelected>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getState());\nexport const resetIslandStoreForTesting = () => {\n\tdelete globalThis.__ABS_ISLAND_STATE__;\n\tdelete globalThis.__ABS_ISLAND_STORES__;\n};\nexport const subscribeIslandStore = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected,\n\tlistener: (value: TSelected) => void\n) => {\n\tlet currentSelection = selector(store.getState());\n\n\treturn store.subscribe((state) => {\n\t\tconst nextSelection = selector(state);\n\t\tif (Object.is(nextSelection, currentSelection)) {\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentSelection = nextSelection;\n\t\tlistener(nextSelection);\n\t});\n};\n",
11
11
  "import type {\n\tIslandComponentDefinition,\n\tIslandRegistry,\n\tIslandRegistryInput\n} from '../../types/island';\n\nexport const defineIslandComponent = <Component>(\n\tcomponent: Component,\n\toptions: {\n\t\texport?: string;\n\t\tsource: string;\n\t}\n): IslandComponentDefinition<Component> => ({\n\tcomponent,\n\texport: options.export,\n\tsource: options.source\n});\nexport const defineIslandRegistry = <T extends IslandRegistryInput>(\n\tregistry: IslandRegistry<T>\n) => registry;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const getIslandBuildReference = <Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) => {\n\tif (!isIslandComponentDefinition(component)) return null;\n\n\treturn {\n\t\texport: component.export,\n\t\tsource: component.source\n\t};\n};\nexport const isIslandComponentDefinition = <Component>(\n\tvalue: Component | IslandComponentDefinition<Component>\n): value is IslandComponentDefinition<Component> =>\n\tisRecord(value) &&\n\t'component' in value &&\n\t'source' in value &&\n\ttypeof value.source === 'string';\n\nexport function getIslandComponent<Component>(component: Component): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: IslandComponentDefinition<Component>\n): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) {\n\tif (isIslandComponentDefinition(component)) {\n\t\treturn component.component;\n\t}\n\n\treturn component;\n}\nexport const parseIslandProps = (rawProps: string | null) => {\n\tif (!rawProps) return {};\n\n\treturn JSON.parse(rawProps);\n};\nexport const serializeIslandProps = (props: unknown) =>\n\tJSON.stringify(props ?? {});\n\nexport {\n\tgetIslandManifestEntries,\n\tgetIslandManifestKey\n} from './islandManifest';\n",
12
- "import type { RuntimeIslandRenderProps } from '../../types/island';\nimport { getIslandMarkerAttributes } from '../core/islandMarkupAttributes';\n\ntype PreservedIslandMarkup = {\n\tattributes: Record<string, string>;\n\tinnerHTML: string;\n};\n\ntype IslandMarkerElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\tframework?: string;\n\t\thydrate?: string;\n\t\tisland?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst getSnapshotMap = () => {\n\tif (typeof window === 'undefined') {\n\t\treturn null;\n\t}\n\n\twindow.__ABS_SERVER_ISLAND_HTML__ ??= new Map<\n\t\tstring,\n\t\tPreservedIslandMarkup[]\n\t>();\n\n\treturn window.__ABS_SERVER_ISLAND_HTML__;\n};\n\nconst getIslandSignature = (props: RuntimeIslandRenderProps) => {\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn [\n\t\tattributes['data-component'],\n\t\tattributes['data-framework'],\n\t\tattributes['data-hydrate'],\n\t\tattributes['data-props']\n\t].join('::');\n};\n\nconst isMatchingIslandElement = (\n\telement: Element,\n\tprops: RuntimeIslandRenderProps\n): element is IslandMarkerElement => {\n\tif (!(element instanceof HTMLElement)) {\n\t\treturn false;\n\t}\n\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn (\n\t\telement.dataset.island === 'true' &&\n\t\telement.dataset.component === attributes['data-component'] &&\n\t\telement.dataset.framework === attributes['data-framework'] &&\n\t\t(element.dataset.hydrate ?? 'load') === attributes['data-hydrate'] &&\n\t\t(element.dataset.props ?? '{}') === attributes['data-props']\n\t);\n};\n\n/* Attributes the island runtime adds while hydrating. A host framework that\n * re-creates the marker (a remount, an HMR update) must not copy them, or the\n * runtime takes the new, unhydrated marker for a hydrated one and leaves it\n * dead. */\nconst RUNTIME_ISLAND_ATTRIBUTES = new Set(['data-error', 'data-hydrated']);\n\nconst readMarkerAttributes = (element: Element) =>\n\tObject.fromEntries(\n\t\telement\n\t\t\t.getAttributeNames()\n\t\t\t.filter((name) => !RUNTIME_ISLAND_ATTRIBUTES.has(name))\n\t\t\t.map((name) => [name, element.getAttribute(name) ?? ''])\n\t);\n\nconst snapshotIslandElement = (\n\telement: HTMLElement,\n\tsnapshotMap: Map<string, PreservedIslandMarkup[]>\n) => {\n\tconst signature = [\n\t\telement.dataset.component,\n\t\telement.dataset.framework,\n\t\telement.dataset.hydrate ?? 'load',\n\t\telement.dataset.props ?? '{}'\n\t].join('::');\n\tconst existing = snapshotMap.get(signature) ?? [];\n\texisting.push({\n\t\tattributes: readMarkerAttributes(element),\n\t\tinnerHTML: element.innerHTML\n\t});\n\tsnapshotMap.set(signature, existing);\n};\n\nexport const initializeIslandMarkupSnapshot = () => {\n\tif (typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tif (!snapshotMap || snapshotMap.size > 0) {\n\t\treturn;\n\t}\n\n\tconst elements = Array.from(\n\t\tdocument.querySelectorAll<HTMLElement>('[data-island=\"true\"]')\n\t);\n\tfor (const element of elements) {\n\t\tsnapshotIslandElement(element, snapshotMap);\n\t}\n};\n\nexport const preserveIslandMarkup = (props: RuntimeIslandRenderProps) => {\n\tif (typeof document === 'undefined') {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tconst signature = getIslandSignature(props);\n\t// Islands that share a signature (same component, framework, hydrate mode\n\t// and serialized props) produce byte-identical SSR markup, so the first\n\t// captured snapshot is correct for every instance. Returning it\n\t// unconditionally keeps this stateless: React may call the component many\n\t// times during a single hydration (StrictMode double-render, hydration\n\t// retries, mismatch regeneration), and a per-call claim counter would run\n\t// past the snapshot list and yield empty markup — making the host render\n\t// `dangerouslySetInnerHTML={{ __html: '' }}` and wipe the island's\n\t// server-rendered DOM before the island runtime can hydrate it.\n\tconst snapshotCandidate = snapshotMap?.get(signature)?.[0];\n\tif (snapshotCandidate) {\n\t\treturn snapshotCandidate;\n\t}\n\n\t// Snapshot not captured yet (the island runtime module hasn't evaluated):\n\t// fall back to reading the live SSR DOM directly.\n\tconst liveCandidate = Array.from(\n\t\tdocument.querySelectorAll('[data-island=\"true\"]')\n\t).find((element) => isMatchingIslandElement(element, props));\n\tif (!liveCandidate) {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tattributes: readMarkerAttributes(liveCandidate),\n\t\tinnerHTML: liveCandidate.innerHTML\n\t};\n};\n\n/* React 19 compares `dangerouslySetInnerHTML` by object identity and rewrites\n * `innerHTML` whenever the object changes. A fresh `{ __html }` per render\n * made every host re-render (state change, Fast Refresh) replace the island's\n * hydrated DOM with its server markup, leaving a dead copy on screen. One\n * object per markup string keeps the boundary untouched. */\ntype InnerHtml = { __html: string };\n\nconst innerHtmlObjects = new Map<string, InnerHtml>();\n\nexport const getStableInnerHtml = (html: string) => {\n\tconst existing = innerHtmlObjects.get(html);\n\tif (existing) return existing;\n\tconst created: InnerHtml = { __html: html };\n\tinnerHtmlObjects.set(html, created);\n\n\treturn created;\n};\n",
13
- "import type { IslandFramework } from '../../types/island';\nimport { getIslandComponent, parseIslandProps } from '../core/islands';\nimport { initializeIslandMarkupSnapshot } from './preserveIslandMarkup';\nimport { prepareBrowserTranslationHydration } from './browserTranslation';\n\ninitializeIslandMarkupSnapshot();\n\ntype RuntimeIslandRegistry = Partial<\n\tRecord<IslandFramework, Record<string, unknown>>\n>;\n\ntype StartIslandsOptions = {\n\tregistry: RuntimeIslandRegistry;\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>;\n\troot?: ParentNode & Node;\n};\n\ntype IslandElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\terror?: string;\n\t\tframework?: IslandFramework;\n\t\thydrate?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst idleDeadline: IdleDeadline = {\n\tdidTimeout: false,\n\ttimeRemaining: () => 0\n};\n\nconst requestIdle =\n\ttypeof window !== 'undefined' && 'requestIdleCallback' in window\n\t\t? window.requestIdleCallback.bind(window)\n\t\t: (callback: IdleRequestCallback) =>\n\t\t\t\twindow.setTimeout(() => callback(idleDeadline), 1);\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isIslandElement = (value: EventTarget | null): value is IslandElement =>\n\tvalue instanceof HTMLElement && value.dataset.island === 'true';\n\nconst observedRoots = new WeakSet<Node>();\nconst hydratingIslands = new WeakSet<HTMLElement>();\n\nconst hydratePreservingBrowserTranslation = async (\n\telement: HTMLElement,\n\thydrate: () => unknown | Promise<unknown>\n) => {\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\ttry {\n\t\tawait hydrate();\n\t} finally {\n\t\trestoreTranslation();\n\t}\n};\n\n// Framework-specific hydrators are dynamic-imported on first use so the\n// island runtime never statically pulls in a framework's runtime (and its\n// transitive deps) the consumer doesn't actually use. Without this, a\n// React-only project loading `@absolutejs/absolute/client` would resolve\n// every framework's peer deps — including `@angular/core` — and fail at\n// module load if any of them weren't installed.\nconst hydrateByFramework = async (\n\tregistry: RuntimeIslandRegistry,\n\tframework: IslandFramework,\n\tcomponentName: string,\n\telement: IslandElement,\n\tprops: unknown,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst propsRecord = isPropsRecord(props) ? props : undefined;\n\n\tif (framework === 'react') {\n\t\tconst { hydrateReactIsland, isReactComponent } =\n\t\t\tawait import('./hydrators/react');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.react?.[componentName]);\n\t\tif (!isReactComponent(resolvedComponent)) return;\n\n\t\thydrateReactIsland(resolvedComponent, element, propsRecord);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'svelte') {\n\t\tconst { hydrateSvelteIsland, isSvelteComponent } =\n\t\t\tawait import('./hydrators/svelte');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.svelte?.[componentName]);\n\t\tif (!isSvelteComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateSvelteIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'vue') {\n\t\tconst { hydrateVueIsland, isVueComponent } =\n\t\t\tawait import('./hydrators/vue');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.vue?.[componentName]);\n\t\tif (!isVueComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateVueIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'angular') {\n\t\tconst { mountAngularIsland, isAngularComponent } =\n\t\t\tawait import('../angular/islands');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.angular?.[componentName]);\n\t\tconst { islandId } = element.dataset;\n\t\tif (!isAngularComponent(resolvedComponent) || !islandId) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\tmountAngularIsland(\n\t\t\t\tresolvedComponent,\n\t\t\t\telement,\n\t\t\t\tpropsRecord ?? {},\n\t\t\t\tislandId\n\t\t\t)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\t}\n};\n\nconst hydrateIsland = async (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tif (element.dataset.hydrated === 'true' || hydratingIslands.has(element)) {\n\t\treturn;\n\t}\n\n\tconst { framework } = element.dataset;\n\tconst componentName = element.dataset.component;\n\tif (!framework || !componentName) return;\n\n\tconst props = parseIslandProps(element.getAttribute('data-props'));\n\thydratingIslands.add(element);\n\n\ttry {\n\t\tawait hydrateByFramework(\n\t\t\tregistry,\n\t\t\tframework,\n\t\t\tcomponentName,\n\t\t\telement,\n\t\t\tprops,\n\t\t\tresolveComponent\n\t\t);\n\t} catch (error) {\n\t\tconst message =\n\t\t\terror instanceof Error ? error.message : 'Unknown island error';\n\t\telement.dataset.error = message;\n\t\tconsole.error(\n\t\t\t`[islands] Failed to hydrate ${framework}:${componentName}`,\n\t\t\terror\n\t\t);\n\t} finally {\n\t\thydratingIslands.delete(element);\n\t}\n};\n\nconst scheduleIsland = (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tobserver: IntersectionObserver | null,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst mode = element.dataset.hydrate ?? 'load';\n\tif (mode === 'none') return;\n\tif (mode === 'load') {\n\t\tvoid hydrateIsland(registry, element, resolveComponent);\n\n\t\treturn;\n\t}\n\tif (mode === 'idle') {\n\t\trequestIdle(\n\t\t\t() => void hydrateIsland(registry, element, resolveComponent)\n\t\t);\n\n\t\treturn;\n\t}\n\tif (mode === 'visible' && observer) {\n\t\tobserver.observe(element);\n\n\t\treturn;\n\t}\n\n\tvoid hydrateIsland(registry, element, resolveComponent);\n};\n\nconst collectIslandElements = (node: Node) => {\n\tconst islands: IslandElement[] = [];\n\tif (isIslandElement(node)) islands.push(node);\n\tif (!(node instanceof Element)) return islands;\n\n\tconst nested = node.querySelectorAll<IslandElement>('[data-island=\"true\"]');\n\tfor (const island of nested) {\n\t\tislands.push(island);\n\t}\n\n\treturn islands;\n};\n\ntype IslandHotUpdate = {\n\tcomponent: string;\n\tframework: string;\n\tmodulePath: string;\n};\n\nconst remountByFramework = async (\n\tframework: string,\n\tcomponent: unknown,\n\telement: IslandElement,\n\tprops: unknown\n) => {\n\tif (framework === 'react') {\n\t\tconst { remountReactIsland, isReactComponent } =\n\t\t\tawait import('./hydrators/react');\n\t\tif (!isReactComponent(component)) return false;\n\t\tremountReactIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'svelte') {\n\t\tconst { remountSvelteIsland, isSvelteComponent } =\n\t\t\tawait import('./hydrators/svelte');\n\t\tif (!isSvelteComponent(component)) return false;\n\t\tawait remountSvelteIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'vue') {\n\t\tconst { remountVueIsland, isVueComponent } =\n\t\t\tawait import('./hydrators/vue');\n\t\tif (!isVueComponent(component)) return false;\n\t\tremountVueIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\n\t// Angular islands are bootstrapped applications; reload instead.\n\treturn false;\n};\n\nconst findIslandElements = (framework: string, component: string) =>\n\tArray.from(\n\t\tdocument.querySelectorAll<IslandElement>('[data-island=\"true\"]')\n\t).filter(\n\t\t(element) =>\n\t\t\telement.dataset.framework === framework &&\n\t\t\telement.dataset.component === component\n\t);\n\nconst remountIslandElement = async (\n\tupdate: IslandHotUpdate,\n\tcomponent: unknown,\n\telement: IslandElement\n) => {\n\t// Not hydrated yet (`visible`/`idle`/`none`): its first hydration\n\t// happens later; nothing on screen runs the old code.\n\tif (element.dataset.hydrated !== 'true') return true;\n\ttry {\n\t\treturn await remountByFramework(\n\t\t\tupdate.framework,\n\t\t\tcomponent,\n\t\t\telement,\n\t\t\tparseIslandProps(element.getAttribute('data-props'))\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[islands] Failed to update ${update.framework}:${update.component}`,\n\t\t\terror\n\t\t);\n\n\t\treturn false;\n\t}\n};\n\nconst applyIslandHotUpdate = async (update: IslandHotUpdate) => {\n\tconst elements = findIslandElements(update.framework, update.component);\n\tif (elements.length === 0) return true;\n\n\tconst loadedModule: { default?: unknown } = await import(update.modulePath);\n\tconst results = await Promise.all(\n\t\telements.map((element) =>\n\t\t\tremountIslandElement(update, loadedModule.default, element)\n\t\t)\n\t);\n\n\treturn results.every(Boolean);\n};\n\n/* Dev HMR entry point (see Window['__ABS_ISLAND_HMR__']): re-mount every\n * island on this page that renders one of the rebuilt components. */\nconst applyIslandHotUpdates = async (updates: IslandHotUpdate[]) => {\n\ttry {\n\t\tconst results = await Promise.all(updates.map(applyIslandHotUpdate));\n\n\t\treturn results.every(Boolean);\n\t} catch (error) {\n\t\tconsole.error('[islands] Failed to load an updated island', error);\n\n\t\treturn false;\n\t}\n};\n\nexport const startIslands = ({\n\tregistry,\n\tresolveComponent,\n\troot = document.documentElement\n}: StartIslandsOptions) => {\n\tconst targetRoot = root instanceof Document ? root.documentElement : root;\n\tif (typeof window !== 'undefined') {\n\t\twindow.__ABS_ISLAND_HMR__ = applyIslandHotUpdates;\n\t}\n\n\tconst observer =\n\t\ttypeof IntersectionObserver === 'undefined'\n\t\t\t? null\n\t\t\t: new IntersectionObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tif (!entry.isIntersecting) continue;\n\t\t\t\t\t\tif (!isIslandElement(entry.target)) continue;\n\n\t\t\t\t\t\tobserver?.unobserve(entry.target);\n\t\t\t\t\t\tvoid hydrateIsland(\n\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\tentry.target,\n\t\t\t\t\t\t\tresolveComponent\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\tconst islands = targetRoot.querySelectorAll<IslandElement>(\n\t\t'[data-island=\"true\"]'\n\t);\n\tfor (const island of islands) {\n\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t}\n\n\tif (typeof MutationObserver === 'undefined') return;\n\tif (observedRoots.has(targetRoot)) return;\n\n\tconst mutationObserver = new MutationObserver((records) => {\n\t\tconst addedIslands = records.flatMap((record) =>\n\t\t\tArray.from(record.addedNodes).flatMap(collectIslandElements)\n\t\t);\n\t\tfor (const island of addedIslands) {\n\t\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t\t}\n\t});\n\n\tobservedRoots.add(targetRoot);\n\tmutationObserver.observe(targetRoot, {\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n};\n",
12
+ "import type { IslandFramework } from '../../types/island';\nimport { readCspNonce } from '../utils/cspNonceRef';\nimport { getIslandStyleManifestKey } from './islandManifest';\n\n/* An island's built stylesheet, looked up where the host-side Island\n * components can see it: on the server the build manifest prepare()\n * recorded, in the browser the one the server injected into the page.\n * Shared by server and browser code, so nothing here imports server-only\n * modules. */\n\n/** Vue SSR context key under which a streamed Vue page render collects the\n * stylesheets its Islands have linked inline (see vue/islandStyleLink.ts). */\nexport const INLINE_ISLAND_STYLES_CONTEXT_KEY = '__absoluteInlineIslandStyles';\n\n/** React 19 stylesheet precedence for island stylesheets: React hoists\n * `<link rel=\"stylesheet\" precedence>` into the head and renders each href\n * once, however many islands ask for it. */\nexport const ISLAND_STYLE_PRECEDENCE = 'absolute-islands';\n\nconst ISLAND_FRAMEWORKS: readonly IslandFramework[] = [\n\t'react',\n\t'svelte',\n\t'vue',\n\t'angular'\n];\n\nconst toIslandFramework = (value: string) =>\n\tISLAND_FRAMEWORKS.find((framework) => framework === value);\n\nconst readIslandManifest = () => {\n\tconst manifest: unknown =\n\t\ttypeof window === 'undefined'\n\t\t\t? Reflect.get(globalThis, '__absoluteManifest')\n\t\t\t: Reflect.get(window, '__ABSOLUTE_MANIFEST__');\n\n\treturn typeof manifest === 'object' && manifest !== null\n\t\t? manifest\n\t\t: undefined;\n};\n\n/** The stylesheet the build emitted for an island, if it has one. */\nexport const findIslandStylesheet = (framework: string, component: string) => {\n\tconst islandFramework = toIslandFramework(framework);\n\tconst manifest = readIslandManifest();\n\tif (!islandFramework || !manifest) return undefined;\n\n\tconst key = getIslandStyleManifestKey(islandFramework, component);\n\tconst href: unknown = Reflect.get(manifest, key);\n\n\treturn typeof href === 'string' ? { href, key } : undefined;\n};\n\n/** The page's CSP nonce, for a stylesheet link a policy without 'self'\n * would otherwise refuse. On the server, the request's; in the browser,\n * read from a tag the server nonced (`.nonce`: browsers hide the\n * attribute once applied). '' when there is none. */\nexport const readIslandStyleNonce = () => {\n\tif (typeof document === 'undefined') return readCspNonce() ?? '';\n\n\treturn (\n\t\tArray.from(\n\t\t\tdocument.querySelectorAll<HTMLElement>('script[nonce]')\n\t\t).find((element) => element.nonce)?.nonce ?? ''\n\t);\n};\n",
13
+ "import type { RuntimeIslandRenderProps } from '../../types/island';\nimport { getIslandMarkerAttributes } from '../core/islandMarkupAttributes';\n\ntype PreservedIslandMarkup = {\n\tattributes: Record<string, string>;\n\tinnerHTML: string;\n};\n\ntype IslandMarkerElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\tframework?: string;\n\t\thydrate?: string;\n\t\tisland?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst getSnapshotMap = () => {\n\tif (typeof window === 'undefined') {\n\t\treturn null;\n\t}\n\n\twindow.__ABS_SERVER_ISLAND_HTML__ ??= new Map<\n\t\tstring,\n\t\tPreservedIslandMarkup[]\n\t>();\n\n\treturn window.__ABS_SERVER_ISLAND_HTML__;\n};\n\nconst getIslandSignature = (props: RuntimeIslandRenderProps) => {\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn [\n\t\tattributes['data-component'],\n\t\tattributes['data-framework'],\n\t\tattributes['data-hydrate'],\n\t\tattributes['data-props']\n\t].join('::');\n};\n\nconst isMatchingIslandElement = (\n\telement: Element,\n\tprops: RuntimeIslandRenderProps\n): element is IslandMarkerElement => {\n\tif (!(element instanceof HTMLElement)) {\n\t\treturn false;\n\t}\n\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\treturn (\n\t\telement.dataset.island === 'true' &&\n\t\telement.dataset.component === attributes['data-component'] &&\n\t\telement.dataset.framework === attributes['data-framework'] &&\n\t\t(element.dataset.hydrate ?? 'load') === attributes['data-hydrate'] &&\n\t\t(element.dataset.props ?? '{}') === attributes['data-props']\n\t);\n};\n\n/* Attributes the island runtime adds while hydrating. A host framework that\n * re-creates the marker (a remount, an HMR update) must not copy them, or the\n * runtime takes the new, unhydrated marker for a hydrated one and leaves it\n * dead. */\nconst RUNTIME_ISLAND_ATTRIBUTES = new Set(['data-error', 'data-hydrated']);\n\nconst readMarkerAttributes = (element: Element) =>\n\tObject.fromEntries(\n\t\telement\n\t\t\t.getAttributeNames()\n\t\t\t.filter((name) => !RUNTIME_ISLAND_ATTRIBUTES.has(name))\n\t\t\t.map((name) => [name, element.getAttribute(name) ?? ''])\n\t);\n\nconst snapshotIslandElement = (\n\telement: HTMLElement,\n\tsnapshotMap: Map<string, PreservedIslandMarkup[]>\n) => {\n\tconst signature = [\n\t\telement.dataset.component,\n\t\telement.dataset.framework,\n\t\telement.dataset.hydrate ?? 'load',\n\t\telement.dataset.props ?? '{}'\n\t].join('::');\n\tconst existing = snapshotMap.get(signature) ?? [];\n\texisting.push({\n\t\tattributes: readMarkerAttributes(element),\n\t\tinnerHTML: element.innerHTML\n\t});\n\tsnapshotMap.set(signature, existing);\n};\n\nexport const initializeIslandMarkupSnapshot = () => {\n\tif (typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tif (!snapshotMap || snapshotMap.size > 0) {\n\t\treturn;\n\t}\n\n\tconst elements = Array.from(\n\t\tdocument.querySelectorAll<HTMLElement>('[data-island=\"true\"]')\n\t);\n\tfor (const element of elements) {\n\t\tsnapshotIslandElement(element, snapshotMap);\n\t}\n};\n\nexport const preserveIslandMarkup = (props: RuntimeIslandRenderProps) => {\n\tif (typeof document === 'undefined') {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\tconst snapshotMap = getSnapshotMap();\n\tconst signature = getIslandSignature(props);\n\t// Islands that share a signature (same component, framework, hydrate mode\n\t// and serialized props) produce byte-identical SSR markup, so the first\n\t// captured snapshot is correct for every instance. Returning it\n\t// unconditionally keeps this stateless: React may call the component many\n\t// times during a single hydration (StrictMode double-render, hydration\n\t// retries, mismatch regeneration), and a per-call claim counter would run\n\t// past the snapshot list and yield empty markup — making the host render\n\t// `dangerouslySetInnerHTML={{ __html: '' }}` and wipe the island's\n\t// server-rendered DOM before the island runtime can hydrate it.\n\tconst snapshotCandidate = snapshotMap?.get(signature)?.[0];\n\tif (snapshotCandidate) {\n\t\treturn snapshotCandidate;\n\t}\n\n\t// Snapshot not captured yet (the island runtime module hasn't evaluated):\n\t// fall back to reading the live SSR DOM directly.\n\tconst liveCandidate = Array.from(\n\t\tdocument.querySelectorAll('[data-island=\"true\"]')\n\t).find((element) => isMatchingIslandElement(element, props));\n\tif (!liveCandidate) {\n\t\treturn {\n\t\t\tattributes: getIslandMarkerAttributes(props),\n\t\t\tinnerHTML: ''\n\t\t};\n\t}\n\n\treturn {\n\t\tattributes: readMarkerAttributes(liveCandidate),\n\t\tinnerHTML: liveCandidate.innerHTML\n\t};\n};\n\nconst claimedServerIslands = new WeakSet<Element>();\n\n/* A host framework whose render must reproduce a stylesheet link the server\n * streamed right before an island (Vue, see vue/islandStyleLink.ts) asks\n * here whether its island has one. Each browser-side Island instance takes\n * the first server island element with its signature that no instance has\n * taken yet (instances set up in document order while hydrating), and gets\n * the `<link data-island-style>` just before it, if any. Reading the DOM\n * keeps hydration exact whatever order the server rendered the islands in.\n * Null on a browser-only render: no server element is left to take. */\nexport const claimServerIslandStyleLink = (props: RuntimeIslandRenderProps) => {\n\tif (typeof document === 'undefined') return null;\n\n\tconst element = Array.from(\n\t\tdocument.querySelectorAll('[data-island=\"true\"]')\n\t).find(\n\t\t(candidate) =>\n\t\t\t!claimedServerIslands.has(candidate) &&\n\t\t\tisMatchingIslandElement(candidate, props)\n\t);\n\tif (!element) return null;\n\tclaimedServerIslands.add(element);\n\n\tconst previous = element.previousSibling;\n\tif (!(previous instanceof HTMLLinkElement)) return null;\n\tconst key = previous.dataset.islandStyle;\n\tconst href = previous.getAttribute('href');\n\n\treturn key && href ? { href, key } : null;\n};\n\n/* React 19 compares `dangerouslySetInnerHTML` by object identity and rewrites\n * `innerHTML` whenever the object changes. A fresh `{ __html }` per render\n * made every host re-render (state change, Fast Refresh) replace the island's\n * hydrated DOM with its server markup, leaving a dead copy on screen. One\n * object per markup string keeps the boundary untouched. */\ntype InnerHtml = { __html: string };\n\nconst innerHtmlObjects = new Map<string, InnerHtml>();\n\nexport const getStableInnerHtml = (html: string) => {\n\tconst existing = innerHtmlObjects.get(html);\n\tif (existing) return existing;\n\tconst created: InnerHtml = { __html: html };\n\tinnerHtmlObjects.set(html, created);\n\n\treturn created;\n};\n",
14
+ "import type { IslandFramework } from '../../types/island';\nimport { getIslandComponent, parseIslandProps } from '../core/islands';\nimport { getIslandStyleManifestKey } from '../core/islandManifest';\nimport { readIslandStyleNonce } from '../core/islandStylesheet';\nimport { initializeIslandMarkupSnapshot } from './preserveIslandMarkup';\nimport { prepareBrowserTranslationHydration } from './browserTranslation';\n\ninitializeIslandMarkupSnapshot();\n\ntype RuntimeIslandRegistry = Partial<\n\tRecord<IslandFramework, Record<string, unknown>>\n>;\n\ntype StartIslandsOptions = {\n\tregistry: RuntimeIslandRegistry;\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>;\n\troot?: ParentNode & Node;\n};\n\ntype IslandElement = HTMLElement & {\n\tdataset: DOMStringMap & {\n\t\tcomponent?: string;\n\t\terror?: string;\n\t\tframework?: IslandFramework;\n\t\thydrate?: string;\n\t\tislandId?: string;\n\t\tprops?: string;\n\t};\n};\n\nconst idleDeadline: IdleDeadline = {\n\tdidTimeout: false,\n\ttimeRemaining: () => 0\n};\n\nconst requestIdle =\n\ttypeof window !== 'undefined' && 'requestIdleCallback' in window\n\t\t? window.requestIdleCallback.bind(window)\n\t\t: (callback: IdleRequestCallback) =>\n\t\t\t\twindow.setTimeout(() => callback(idleDeadline), 1);\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isIslandElement = (value: EventTarget | null): value is IslandElement =>\n\tvalue instanceof HTMLElement && value.dataset.island === 'true';\n\nconst observedRoots = new WeakSet<Node>();\nconst hydratingIslands = new WeakSet<HTMLElement>();\n\nconst ISLAND_FRAMEWORKS: readonly IslandFramework[] = [\n\t'react',\n\t'svelte',\n\t'vue',\n\t'angular'\n];\n\nconst toIslandFramework = (value: string | undefined) =>\n\tISLAND_FRAMEWORKS.find((framework) => framework === value);\n\nconst readInjectedManifest = () => {\n\tconst manifest: unknown = Reflect.get(window, '__ABSOLUTE_MANIFEST__');\n\n\treturn typeof manifest === 'object' && manifest !== null\n\t\t? manifest\n\t\t: undefined;\n};\n\nconst findIslandStyleLinks = (key: string) =>\n\tArray.from(\n\t\tdocument.querySelectorAll<HTMLLinkElement>(\n\t\t\t'link[rel=\"stylesheet\"][data-island-style]'\n\t\t)\n\t).filter((link) => link.dataset.islandStyle === key);\n\nconst hasStylesheet = (href: string) => {\n\tconst target = new URL(href, document.baseURI).href;\n\n\treturn Array.from(\n\t\tdocument.querySelectorAll<HTMLLinkElement>('link[rel=\"stylesheet\"]')\n\t).some((link) => link.href === target);\n};\n\nconst createIslandStyleLink = (key: string, href: string) => {\n\tconst link = document.createElement('link');\n\tlink.rel = 'stylesheet';\n\tlink.href = href;\n\tlink.dataset.islandStyle = key;\n\tconst nonce = readIslandStyleNonce();\n\tif (nonce) link.nonce = nonce;\n\n\treturn link;\n};\n\n/* The server links the stylesheet of every island a page renders: in the\n * head of a whole document, next to the island on a streamed page (see\n * core/islandPageContext.ts). An island that arrives some other way (an\n * HTMX swap, a client-rendered fragment) links its own before it mounts:\n * a stylesheet, never an inline <style> a nonce-based CSP would block. */\nconst ensureIslandStylesheet = (framework: string, component: string) => {\n\tconst islandFramework = toIslandFramework(framework);\n\tconst manifest = readInjectedManifest();\n\tif (!islandFramework || !manifest) return;\n\n\tconst key = getIslandStyleManifestKey(islandFramework, component);\n\tconst href: unknown = Reflect.get(manifest, key);\n\tif (typeof href !== 'string' || hasStylesheet(href)) return;\n\n\tdocument.head.appendChild(createIslandStyleLink(key, href));\n};\n\n/* Dev HMR: point an island's stylesheet at its rebuilt file, wherever the\n * server put the link (the head, or next to the island on a streamed\n * page). The new link goes in right after the old one, keeping its place\n * in the cascade and its attributes (React's data-precedence), and the old\n * one leaves once the new one loads, so the island never shows unstyled. */\nconst swapIslandStylesheet = (\n\tframework: string,\n\tcomponent: string,\n\thref: string\n) => {\n\tconst islandFramework = toIslandFramework(framework);\n\tif (!islandFramework || hasStylesheet(href)) return;\n\n\tconst key = getIslandStyleManifestKey(islandFramework, component);\n\tconst previous = findIslandStyleLinks(key);\n\tconst anchor = previous[previous.length - 1];\n\tconst next = createIslandStyleLink(key, href);\n\tif (anchor) {\n\t\tfor (const { name, value } of Array.from(anchor.attributes))\n\t\t\tif (name !== 'href' && name !== 'nonce')\n\t\t\t\tnext.setAttribute(name, value);\n\t\tanchor.after(next);\n\t} else document.head.appendChild(next);\n\tconst removePrevious = () => {\n\t\tfor (const link of previous) link.remove();\n\t};\n\tnext.addEventListener('load', removePrevious, { once: true });\n\tnext.addEventListener('error', removePrevious, { once: true });\n\tconst manifest = readInjectedManifest();\n\tif (manifest) Reflect.set(manifest, key, href);\n};\n\nconst hydratePreservingBrowserTranslation = async (\n\telement: HTMLElement,\n\thydrate: () => unknown | Promise<unknown>\n) => {\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\ttry {\n\t\tawait hydrate();\n\t} finally {\n\t\trestoreTranslation();\n\t}\n};\n\n// Framework-specific hydrators are dynamic-imported on first use so the\n// island runtime never statically pulls in a framework's runtime (and its\n// transitive deps) the consumer doesn't actually use. Without this, a\n// React-only project loading `@absolutejs/absolute/client` would resolve\n// every framework's peer deps — including `@angular/core` — and fail at\n// module load if any of them weren't installed.\nconst hydrateByFramework = async (\n\tregistry: RuntimeIslandRegistry,\n\tframework: IslandFramework,\n\tcomponentName: string,\n\telement: IslandElement,\n\tprops: unknown,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst propsRecord = isPropsRecord(props) ? props : undefined;\n\n\tif (framework === 'react') {\n\t\tconst { hydrateReactIsland, isReactComponent } =\n\t\t\tawait import('./hydrators/react');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.react?.[componentName]);\n\t\tif (!isReactComponent(resolvedComponent)) return;\n\n\t\thydrateReactIsland(resolvedComponent, element, propsRecord);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'svelte') {\n\t\tconst { hydrateSvelteIsland, isSvelteComponent } =\n\t\t\tawait import('./hydrators/svelte');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.svelte?.[componentName]);\n\t\tif (!isSvelteComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateSvelteIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'vue') {\n\t\tconst { hydrateVueIsland, isVueComponent } =\n\t\t\tawait import('./hydrators/vue');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.vue?.[componentName]);\n\t\tif (!isVueComponent(resolvedComponent)) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\thydrateVueIsland(resolvedComponent, element, propsRecord)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\n\t\treturn;\n\t}\n\n\tif (framework === 'angular') {\n\t\tconst { mountAngularIsland, isAngularComponent } =\n\t\t\tawait import('../angular/islands');\n\t\tconst resolvedComponent =\n\t\t\t(await resolveComponent?.(framework, componentName)) ??\n\t\t\tgetIslandComponent(registry.angular?.[componentName]);\n\t\tconst { islandId } = element.dataset;\n\t\tif (!isAngularComponent(resolvedComponent) || !islandId) return;\n\n\t\tawait hydratePreservingBrowserTranslation(element, () =>\n\t\t\tmountAngularIsland(\n\t\t\t\tresolvedComponent,\n\t\t\t\telement,\n\t\t\t\tpropsRecord ?? {},\n\t\t\t\tislandId\n\t\t\t)\n\t\t);\n\t\telement.dataset.hydrated = 'true';\n\t}\n};\n\nconst hydrateIsland = async (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tif (element.dataset.hydrated === 'true' || hydratingIslands.has(element)) {\n\t\treturn;\n\t}\n\n\tconst { framework } = element.dataset;\n\tconst componentName = element.dataset.component;\n\tif (!framework || !componentName) return;\n\n\tconst props = parseIslandProps(element.getAttribute('data-props'));\n\thydratingIslands.add(element);\n\tensureIslandStylesheet(framework, componentName);\n\n\ttry {\n\t\tawait hydrateByFramework(\n\t\t\tregistry,\n\t\t\tframework,\n\t\t\tcomponentName,\n\t\t\telement,\n\t\t\tprops,\n\t\t\tresolveComponent\n\t\t);\n\t} catch (error) {\n\t\tconst message =\n\t\t\terror instanceof Error ? error.message : 'Unknown island error';\n\t\telement.dataset.error = message;\n\t\tconsole.error(\n\t\t\t`[islands] Failed to hydrate ${framework}:${componentName}`,\n\t\t\terror\n\t\t);\n\t} finally {\n\t\thydratingIslands.delete(element);\n\t}\n};\n\nconst scheduleIsland = (\n\tregistry: RuntimeIslandRegistry,\n\telement: IslandElement,\n\tobserver: IntersectionObserver | null,\n\tresolveComponent?: (\n\t\tframework: IslandFramework,\n\t\tcomponent: string\n\t) => Promise<unknown>\n) => {\n\tconst mode = element.dataset.hydrate ?? 'load';\n\tif (mode === 'none') return;\n\tif (mode === 'load') {\n\t\tvoid hydrateIsland(registry, element, resolveComponent);\n\n\t\treturn;\n\t}\n\tif (mode === 'idle') {\n\t\trequestIdle(\n\t\t\t() => void hydrateIsland(registry, element, resolveComponent)\n\t\t);\n\n\t\treturn;\n\t}\n\tif (mode === 'visible' && observer) {\n\t\tobserver.observe(element);\n\n\t\treturn;\n\t}\n\n\tvoid hydrateIsland(registry, element, resolveComponent);\n};\n\nconst collectIslandElements = (node: Node) => {\n\tconst islands: IslandElement[] = [];\n\tif (isIslandElement(node)) islands.push(node);\n\tif (!(node instanceof Element)) return islands;\n\n\tconst nested = node.querySelectorAll<IslandElement>('[data-island=\"true\"]');\n\tfor (const island of nested) {\n\t\tislands.push(island);\n\t}\n\n\treturn islands;\n};\n\ntype IslandHotUpdate = {\n\tcomponent: string;\n\tframework: string;\n\tmodulePath: string;\n\t/** The island's rebuilt stylesheet, when it has one. */\n\tstylePath?: string;\n};\n\nconst remountByFramework = async (\n\tframework: string,\n\tcomponent: unknown,\n\telement: IslandElement,\n\tprops: unknown\n) => {\n\tif (framework === 'react') {\n\t\tconst { remountReactIsland, isReactComponent } =\n\t\t\tawait import('./hydrators/react');\n\t\tif (!isReactComponent(component)) return false;\n\t\tremountReactIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'svelte') {\n\t\tconst { remountSvelteIsland, isSvelteComponent } =\n\t\t\tawait import('./hydrators/svelte');\n\t\tif (!isSvelteComponent(component)) return false;\n\t\tawait remountSvelteIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\tif (framework === 'vue') {\n\t\tconst { remountVueIsland, isVueComponent } =\n\t\t\tawait import('./hydrators/vue');\n\t\tif (!isVueComponent(component)) return false;\n\t\tremountVueIsland(component, element, props);\n\n\t\treturn true;\n\t}\n\n\t// Angular islands are bootstrapped applications; reload instead.\n\treturn false;\n};\n\nconst findIslandElements = (framework: string, component: string) =>\n\tArray.from(\n\t\tdocument.querySelectorAll<IslandElement>('[data-island=\"true\"]')\n\t).filter(\n\t\t(element) =>\n\t\t\telement.dataset.framework === framework &&\n\t\t\telement.dataset.component === component\n\t);\n\nconst remountIslandElement = async (\n\tupdate: IslandHotUpdate,\n\tcomponent: unknown,\n\telement: IslandElement\n) => {\n\t// Not hydrated yet (`visible`/`idle`/`none`): its first hydration\n\t// happens later; nothing on screen runs the old code.\n\tif (element.dataset.hydrated !== 'true') return true;\n\ttry {\n\t\treturn await remountByFramework(\n\t\t\tupdate.framework,\n\t\t\tcomponent,\n\t\t\telement,\n\t\t\tparseIslandProps(element.getAttribute('data-props'))\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[islands] Failed to update ${update.framework}:${update.component}`,\n\t\t\terror\n\t\t);\n\n\t\treturn false;\n\t}\n};\n\nconst applyIslandHotUpdate = async (update: IslandHotUpdate) => {\n\tconst elements = findIslandElements(update.framework, update.component);\n\tif (elements.length === 0) return true;\n\n\tif (update.stylePath)\n\t\tswapIslandStylesheet(\n\t\t\tupdate.framework,\n\t\t\tupdate.component,\n\t\t\tupdate.stylePath\n\t\t);\n\tconst loadedModule: { default?: unknown } = await import(update.modulePath);\n\tconst results = await Promise.all(\n\t\telements.map((element) =>\n\t\t\tremountIslandElement(update, loadedModule.default, element)\n\t\t)\n\t);\n\n\treturn results.every(Boolean);\n};\n\n/* Dev HMR entry point (see Window['__ABS_ISLAND_HMR__']): re-mount every\n * island on this page that renders one of the rebuilt components. */\nconst applyIslandHotUpdates = async (updates: IslandHotUpdate[]) => {\n\ttry {\n\t\tconst results = await Promise.all(updates.map(applyIslandHotUpdate));\n\n\t\treturn results.every(Boolean);\n\t} catch (error) {\n\t\tconsole.error('[islands] Failed to load an updated island', error);\n\n\t\treturn false;\n\t}\n};\n\nexport const startIslands = ({\n\tregistry,\n\tresolveComponent,\n\troot = document.documentElement\n}: StartIslandsOptions) => {\n\tconst targetRoot = root instanceof Document ? root.documentElement : root;\n\tif (typeof window !== 'undefined') {\n\t\twindow.__ABS_ISLAND_HMR__ = applyIslandHotUpdates;\n\t}\n\n\tconst observer =\n\t\ttypeof IntersectionObserver === 'undefined'\n\t\t\t? null\n\t\t\t: new IntersectionObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tif (!entry.isIntersecting) continue;\n\t\t\t\t\t\tif (!isIslandElement(entry.target)) continue;\n\n\t\t\t\t\t\tobserver?.unobserve(entry.target);\n\t\t\t\t\t\tvoid hydrateIsland(\n\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\tentry.target,\n\t\t\t\t\t\t\tresolveComponent\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\tconst islands = targetRoot.querySelectorAll<IslandElement>(\n\t\t'[data-island=\"true\"]'\n\t);\n\tfor (const island of islands) {\n\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t}\n\n\tif (typeof MutationObserver === 'undefined') return;\n\tif (observedRoots.has(targetRoot)) return;\n\n\tconst mutationObserver = new MutationObserver((records) => {\n\t\tconst addedIslands = records.flatMap((record) =>\n\t\t\tArray.from(record.addedNodes).flatMap(collectIslandElements)\n\t\t);\n\t\tfor (const island of addedIslands) {\n\t\t\tscheduleIsland(registry, island, observer, resolveComponent);\n\t\t}\n\t});\n\n\tobservedRoots.add(targetRoot);\n\tmutationObserver.observe(targetRoot, {\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n};\n",
14
15
  "import type { ActionResult } from '../../types/formAction';\n\n/* The wire contract between `defineAction` (server) and the browser\n * helpers (`submitFormAction`, `enhanceForms`, `useFormAction`). Browser\n * safe: no server imports. */\n\n/* - ACTION_ERROR_ATTRIBUTE: element whose text becomes the named field's\n * error (`data-action-error=\"email\"`).\n * - ACTION_FORM_ATTRIBUTE: marks a plain <form> for `enhanceForms()` and\n * for the server's no-JS result rendering.\n * - ACTION_MESSAGE_ATTRIBUTE: element whose text becomes the form-level\n * error message.\n * - ACTION_REQUEST_HEADER: sent by the browser helpers so the action\n * answers with JSON instead of redirecting.\n * - ACTION_STATUS_ATTRIBUTE: set on the form, `success` or `error`.\n * - ACTION_SUCCESS_ATTRIBUTE: element shown (its `hidden` removed) after\n * a successful submission. */\nexport const ACTION_ERROR_ATTRIBUTE = 'data-action-error';\nexport const ACTION_FORM_ATTRIBUTE = 'data-absolute-action';\nexport const ACTION_MESSAGE_ATTRIBUTE = 'data-action-message';\nexport const ACTION_REQUEST_HEADER = 'x-absolute-action';\nexport const ACTION_STATUS_ATTRIBUTE = 'data-action-status';\nexport const ACTION_SUCCESS_ATTRIBUTE = 'data-action-success';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isStringRecord = (value: unknown) =>\n\tisRecord(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst isOptionalString = (value: unknown) =>\n\tvalue === undefined || typeof value === 'string';\n\n/** True for a well-formed action result. The type parameters let callers\n * name the action's data and fields; only the shape is checked. */\nexport const isActionResult = <Data = unknown, Fields extends string = string>(\n\tvalue: unknown\n): value is ActionResult<Data, Fields> => {\n\tif (!isRecord(value)) return false;\n\tif (value.status === 'success') return isOptionalString(value.redirect);\n\n\treturn (\n\t\tvalue.status === 'error' &&\n\t\tisStringRecord(value.errors) &&\n\t\tisOptionalString(value.message)\n\t);\n};\n",
15
16
  "import type {\n\tActionData,\n\tActionErrorState,\n\tActionFields,\n\tActionPath,\n\tActionResult,\n\tAnyFormAction\n} from '../../types/formAction';\nimport {\n\tACTION_ERROR_ATTRIBUTE,\n\tACTION_FORM_ATTRIBUTE,\n\tACTION_MESSAGE_ATTRIBUTE,\n\tACTION_REQUEST_HEADER,\n\tACTION_STATUS_ATTRIBUTE,\n\tACTION_SUCCESS_ATTRIBUTE,\n\tisActionResult\n} from '../utils/formActionProtocol';\n\n/* Browser side of form actions. `submitFormAction` posts a FormData and\n * returns the typed result; `enhanceForms` upgrades plain\n * `<form data-absolute-action>` markup (static HTML and HTMX pages) so it\n * submits without a reload. Without JavaScript the same forms post\n * normally and the server renders the result. */\n\nexport type SubmitFormActionOptions = {\n\tsignal?: AbortSignal;\n};\n\nconst failure = (message: string): ActionErrorState => ({\n\terrors: {},\n\tmessage,\n\tstatus: 'error'\n});\n\nconst readPayload = async (response: Response) => {\n\ttry {\n\t\tconst payload: unknown = await response.json();\n\n\t\treturn payload;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\n/** A reducer for React 19's `useActionState` (JavaScript-only: React\n * renders function form actions as `javascript:` URLs on the server; use\n * `useFormAction` for forms that also work without JavaScript). */\nexport const formActionReducer =\n\t<Action extends AnyFormAction = AnyFormAction>(path: ActionPath<Action>) =>\n\tasync (_previous: unknown, body: FormData) =>\n\t\tsubmitFormAction<Action>(path, body);\n\n/** Posts `body` to the action at `path` and returns its result. Network\n * and unexpected server failures come back as an error state with a\n * `message`; an aborted request rejects with the abort error. */\nexport const submitFormAction = async <\n\tAction extends AnyFormAction = AnyFormAction\n>(\n\tpath: ActionPath<Action>,\n\tbody: FormData,\n\toptions: SubmitFormActionOptions = {}\n) => {\n\ttype Result = ActionResult<ActionData<Action>, ActionFields<Action>>;\n\tconst response = await fetch(path, {\n\t\tbody,\n\t\tcredentials: 'same-origin',\n\t\theaders: { accept: 'application/json', [ACTION_REQUEST_HEADER]: '1' },\n\t\tmethod: 'POST',\n\t\tsignal: options.signal\n\t}).catch((error: unknown) => {\n\t\tif (options.signal?.aborted) throw error;\n\n\t\treturn undefined;\n\t});\n\tif (!response) {\n\t\tconst result: Result = failure('Network error: the form was not sent.');\n\n\t\treturn result;\n\t}\n\tconst payload = await readPayload(response);\n\tif (isActionResult<ActionData<Action>, ActionFields<Action>>(payload))\n\t\treturn payload;\n\tconst result: Result = failure(\n\t\t`The server could not handle the form (HTTP ${response.status}).`\n\t);\n\n\treturn result;\n};\n\n/* ---------------------------------------------------------------- *\n * Plain <form data-absolute-action> enhancement\n * ---------------------------------------------------------------- */\n\nexport type FormActionEventDetail = { result: ActionResult };\n\n/** Fired on the form after every enhanced submission. */\nexport const FORM_ACTION_EVENT = 'absolute:form-action';\n\nconst namedControls = (form: HTMLFormElement) =>\n\tArray.from(form.elements).filter(\n\t\t(element): element is HTMLElement & { name: string } =>\n\t\t\telement instanceof HTMLElement &&\n\t\t\t'name' in element &&\n\t\t\ttypeof element.name === 'string' &&\n\t\t\telement.name !== ''\n\t);\n\nconst markControls = (form: HTMLFormElement, result: ActionResult) => {\n\tconst errors = result.status === 'error' ? result.errors : {};\n\tconst invalid = namedControls(form).filter((control) => {\n\t\tconst message = errors[control.name];\n\t\tif (message) control.setAttribute('aria-invalid', 'true');\n\t\telse control.removeAttribute('aria-invalid');\n\n\t\treturn Boolean(message);\n\t});\n\n\treturn invalid[0];\n};\n\nconst fillErrors = (form: HTMLFormElement, result: ActionResult) => {\n\tconst errors = result.status === 'error' ? result.errors : {};\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_ERROR_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\tconst name = element.getAttribute(ACTION_ERROR_ATTRIBUTE) ?? '';\n\t\t\tconst message = errors[name] ?? '';\n\t\t\telement.textContent = message;\n\t\t\telement.hidden = message === '';\n\t\t}\n\t);\n};\n\nconst fillMessages = (form: HTMLFormElement, result: ActionResult) => {\n\tconst message = result.status === 'error' ? (result.message ?? '') : '';\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_MESSAGE_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\telement.textContent = message;\n\t\t\telement.hidden = message === '';\n\t\t}\n\t);\n\tform.querySelectorAll<HTMLElement>(`[${ACTION_SUCCESS_ATTRIBUTE}]`).forEach(\n\t\t(element) => {\n\t\t\telement.hidden = result.status !== 'success';\n\t\t}\n\t);\n};\n\n/** Writes `result` into a plain form: field errors into\n * `[data-action-error=\"field\"]`, the message into `[data-action-message]`,\n * `[data-action-success]` shown on success, `aria-invalid` on the fields\n * and `data-action-status` on the form. Focuses the first invalid field. */\nexport const applyActionResult = (\n\tform: HTMLFormElement,\n\tresult: ActionResult\n) => {\n\tform.setAttribute(ACTION_STATUS_ATTRIBUTE, result.status);\n\tfillErrors(form, result);\n\tfillMessages(form, result);\n\tconst firstInvalid = markControls(form, result);\n\tfirstInvalid?.focus();\n};\n\nconst setPending = (form: HTMLFormElement, pending: boolean) => {\n\tform.toggleAttribute('aria-busy', pending);\n\tform.toggleAttribute('data-action-pending', pending);\n\tform.querySelectorAll<HTMLButtonElement | HTMLInputElement>(\n\t\t'button[type=\"submit\"], button:not([type]), input[type=\"submit\"]'\n\t).forEach((button) => {\n\t\tbutton.disabled = pending;\n\t});\n};\n\nconst finishSubmission = (form: HTMLFormElement, result: ActionResult) => {\n\tapplyActionResult(form, result);\n\tconst detail: FormActionEventDetail = { result };\n\tform.dispatchEvent(\n\t\tnew CustomEvent(FORM_ACTION_EVENT, { bubbles: true, detail })\n\t);\n\tif (result.status !== 'success') return;\n\tif (result.redirect) window.location.assign(result.redirect);\n\telse form.reset();\n};\n\nconst formActionUrl = (form: HTMLFormElement) => {\n\tconst url = new URL(form.action, window.location.href);\n\n\treturn `${url.pathname}${url.search}`;\n};\n\n/** Submits `form` with fetch instead of a page load. Returns a function\n * that removes the enhancement. */\nexport const enhanceForm = (form: HTMLFormElement) => {\n\tlet controller: AbortController | undefined;\n\tconst submit = async (event: SubmitEvent) => {\n\t\tevent.preventDefault();\n\t\tcontroller?.abort();\n\t\tconst current = new AbortController();\n\t\tcontroller = current;\n\t\tconst body = new FormData(form, event.submitter);\n\t\tsetPending(form, true);\n\t\tconst result = await submitFormAction(formActionUrl(form), body, {\n\t\t\tsignal: current.signal\n\t\t}).catch(() => undefined);\n\t\tif (controller !== current) return;\n\t\tsetPending(form, false);\n\t\tif (result) finishSubmission(form, result);\n\t};\n\tconst listener = (event: SubmitEvent) => {\n\t\tvoid submit(event);\n\t};\n\tform.addEventListener('submit', listener);\n\n\treturn () => {\n\t\tcontroller?.abort();\n\t\tform.removeEventListener('submit', listener);\n\t};\n};\n\n/* HTMX already submits these; enhancing them too would post twice. */\nconst isHtmxForm = (form: HTMLFormElement) =>\n\tform.hasAttribute('hx-post') || form.hasAttribute('data-hx-post');\n\n/** Enhances every `<form data-absolute-action>` under `root` (except\n * `hx-post` forms, which HTMX submits). Returns a function that removes\n * the enhancements. */\nexport const enhanceForms = (root: ParentNode = document) => {\n\tconst cleanups = Array.from(\n\t\troot.querySelectorAll<HTMLFormElement>(`form[${ACTION_FORM_ATTRIBUTE}]`)\n\t)\n\t\t.filter((form) => !isHtmxForm(form))\n\t\t.map((form) => enhanceForm(form));\n\n\treturn () => cleanups.forEach((cleanup) => cleanup());\n};\n"
16
17
  ],
17
- "mappings": "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",
18
- "debugId": "DB5A54DCE17303CA64756E2164756E21",
18
+ "mappings": "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",
19
+ "debugId": "598BD8F9E704CD7A64756E2164756E21",
19
20
  "names": []
20
21
  }
@@ -12,6 +12,8 @@ type IslandUpdate = {
12
12
  component: string;
13
13
  framework: string;
14
14
  modulePath: string;
15
+ /** The island's rebuilt stylesheet; the island runtime swaps it in. */
16
+ stylePath?: string;
15
17
  };
16
18
 
17
19
  const isIslandUpdate = (value: unknown): value is IslandUpdate =>