@absolutejs/absolute 0.20.0-beta.174 → 0.20.0-beta.176

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 (84) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/changelog.json +76 -0
  3. package/dist/angular/browser.js +13 -2
  4. package/dist/angular/browser.js.map +3 -3
  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 +67 -8
  8. package/dist/angular/index.js.map +10 -8
  9. package/dist/angular/server.js +67 -8
  10. package/dist/angular/server.js.map +10 -8
  11. package/dist/build.js +315 -120
  12. package/dist/build.js.map +21 -19
  13. package/dist/cli/{compile-n6fs2vmx.js → compile-w2z6c9vt.js} +1 -1
  14. package/dist/cli/{dev-6h1f0mzq.js → dev-8br5mr7t.js} +16 -2
  15. package/dist/cli/{index-mqevg32w.js → index-6522t968.js} +21 -2
  16. package/dist/cli/{index-bhyd3ejc.js → index-7z1hh3fg.js} +1 -1
  17. package/dist/cli/index.js +6 -6
  18. package/dist/cli/{islands-vk05sj6v.js → islands-bx67g15t.js} +4 -4
  19. package/dist/cli/{mobile-62b6j3j7.js → mobile-we5q51ey.js} +2 -2
  20. package/dist/cli/{start-jh6kyp92.js → start-srs11bm8.js} +2 -2
  21. package/dist/client/chunks/index-4j1snyh2.js +18 -0
  22. package/dist/client/chunks/index-4j1snyh2.js.map +10 -0
  23. package/dist/client/chunks/{index-6b66nzyf.js → index-a3rpg5kw.js} +6 -16
  24. package/dist/client/chunks/{index-6b66nzyf.js.map → index-a3rpg5kw.js.map} +3 -4
  25. package/dist/client/chunks/{islands-s2ta5ajb.js → islands-mfjmdwnb.js} +11 -4
  26. package/dist/client/chunks/{islands-s2ta5ajb.js.map → islands-mfjmdwnb.js.map} +3 -3
  27. package/dist/client/chunks/{react-dcvkaba2.js → react-sprprqzs.js} +20 -4
  28. package/dist/client/chunks/react-sprprqzs.js.map +10 -0
  29. package/dist/client/chunks/svelte-6ewphsvj.js +30 -0
  30. package/dist/client/chunks/svelte-6ewphsvj.js.map +10 -0
  31. package/dist/client/chunks/{vue-a84fzp3v.js → vue-db6ppn1f.js} +14 -4
  32. package/dist/client/chunks/vue-db6ppn1f.js.map +10 -0
  33. package/dist/client/index.js +65 -8
  34. package/dist/client/index.js.map +4 -4
  35. package/dist/client/navigation.js +5 -3
  36. package/dist/client/navigation.js.map +2 -2
  37. package/dist/client/prefetch.js +1 -1
  38. package/dist/dev/client/handlers/islands.ts +85 -0
  39. package/dist/dev/client/hmrClient.ts +6 -0
  40. package/dist/index.js +460 -244
  41. package/dist/index.js.map +23 -21
  42. package/dist/islands/index.js +57 -10
  43. package/dist/islands/index.js.map +9 -7
  44. package/dist/react/browser.js +15 -4
  45. package/dist/react/browser.js.map +5 -5
  46. package/dist/react/components/client.js +506 -0
  47. package/dist/react/components/index.js +14 -15
  48. package/dist/react/components/index.js.map +4 -4
  49. package/dist/react/components/server/index.js +728 -0
  50. package/dist/react/hooks/index.js +14 -15
  51. package/dist/react/hooks/index.js.map +4 -4
  52. package/dist/react/index.js +66 -6
  53. package/dist/react/index.js.map +11 -9
  54. package/dist/react/router/browser.js +7 -8
  55. package/dist/react/router/browser.js.map +4 -4
  56. package/dist/react/router/index.js +7 -8
  57. package/dist/react/router/index.js.map +4 -4
  58. package/dist/react/server.js +14 -1
  59. package/dist/react/server.js.map +4 -4
  60. package/dist/src/build/buildReactServerComponents.d.ts +4 -0
  61. package/dist/src/build/islandEntries.d.ts +5 -0
  62. package/dist/src/client/hydrators/react.d.ts +7 -0
  63. package/dist/src/client/hydrators/svelte.d.ts +3 -0
  64. package/dist/src/client/hydrators/vue.d.ts +3 -0
  65. package/dist/src/client/preserveIslandMarkup.d.ts +5 -0
  66. package/dist/src/core/islandServerGeneration.d.ts +3 -0
  67. package/dist/src/react/components/client.d.ts +4 -0
  68. package/dist/src/react/components/server/index.d.ts +8 -0
  69. package/dist/src/react/serverComponents/constants.d.ts +2 -1
  70. package/dist/svelte/index.js +66 -6
  71. package/dist/svelte/index.js.map +10 -8
  72. package/dist/svelte/server.js +38 -3
  73. package/dist/svelte/server.js.map +6 -5
  74. package/dist/types/build.d.ts +3 -2
  75. package/dist/types/globals.d.ts +15 -0
  76. package/dist/vue/browser.js +26 -16
  77. package/dist/vue/browser.js.map +5 -5
  78. package/dist/vue/index.js +65 -21
  79. package/dist/vue/index.js.map +10 -9
  80. package/package.json +1 -1
  81. package/dist/client/chunks/react-dcvkaba2.js.map +0 -10
  82. package/dist/client/chunks/svelte-4yfa5bxa.js +0 -17
  83. package/dist/client/chunks/svelte-4yfa5bxa.js.map +0 -10
  84. package/dist/client/chunks/vue-a84fzp3v.js.map +0 -10
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/react.ts"],
4
+ "sourcesContent": [
5
+ "import { type ComponentType, createElement, type ReactNode } from 'react';\nimport {\n\tcreateRoot,\n\thydrateRoot,\n\ttype Root as ReactRoot\n} from 'react-dom/client';\nimport { flushSync } from 'react-dom';\nimport { prepareBrowserTranslationHydration } from '../browserTranslation';\n\nconst reactIslandRoots = new WeakMap<HTMLElement, ReactRoot>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\n// The island marker is rendered by the host page's React tree as a\n// `dangerouslySetInnerHTML` boundary, so the host root tags it with internal\n// fiber expandos (`__reactFiber$…`, `__reactProps$…`). React refuses to create\n// a second root on a node it already manages that also sets\n// dangerouslySetInnerHTML (\"Cannot use a ref … as a container … if that element\n// also sets dangerouslySetInnerHTML\"). Detaching those expandos hands ownership\n// of the marker (and its opaque SSR children) to the island root before it\n// hydrates. The host root never recurses into the boundary, so it has no fibers\n// for the children and won't reconcile this subtree again.\nconst HOST_REACT_EXPANDO_PREFIXES = [\n\t'__reactFiber$',\n\t'__reactProps$',\n\t'__reactContainer$',\n\t'__reactEvents$',\n\t'__reactListeners$',\n\t'__reactHandles$'\n];\n\nconst detachFromHostReactRoot = (element: HTMLElement) => {\n\tfor (const key of Object.keys(element)) {\n\t\tconst isHostExpando = HOST_REACT_EXPANDO_PREFIXES.some((prefix) =>\n\t\t\tkey.startsWith(prefix)\n\t\t);\n\t\tif (!isHostExpando) continue;\n\t\tReflect.deleteProperty(element, key);\n\t}\n};\n\nexport const hydrateReactIsland = (\n\tcomponent: ComponentType<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst existingRoot = reactIslandRoots.get(element);\n\tif (existingRoot) {\n\t\texistingRoot.render(\n\t\t\tisPropsRecord(props)\n\t\t\t\t? createElement(component, props)\n\t\t\t\t: createElement(component)\n\t\t);\n\n\t\treturn;\n\t}\n\n\tdetachFromHostReactRoot(element);\n\tconst restoreTranslation = prepareBrowserTranslationHydration(element);\n\tconst hydrate = (elementToHydrate: ReactNode) => {\n\t\tlet root: ReactRoot | undefined;\n\t\tconst startHydration = () => {\n\t\t\troot = hydrateRoot(element, elementToHydrate);\n\t\t};\n\t\ttry {\n\t\t\tif (restoreTranslation.hasTranslation) flushSync(startHydration);\n\t\t\telse startHydration();\n\t\t} finally {\n\t\t\trestoreTranslation();\n\t\t}\n\t\tif (root !== undefined) reactIslandRoots.set(element, root);\n\t};\n\n\tif (!isPropsRecord(props)) {\n\t\thydrate(createElement(component));\n\n\t\treturn;\n\t}\n\n\thydrate(createElement(component, props));\n};\nexport const isReactComponent = (\n\tvalue: unknown\n): value is ComponentType<Record<string, unknown>> =>\n\ttypeof value === 'function';\n\n/** Dev HMR: replace a hydrated island with a fresh root rendering the\n * rebuilt component. Its local state starts over; island stores keep\n * theirs. A new root rather than `render()` on the old one: the host page\n * may have re-rendered the marker since, re-attaching its own React props\n * to it, and the old root's tree would then be reconciled against nodes\n * React no longer considers its own. */\nexport const remountReactIsland = (\n\tcomponent: ComponentType<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\ttry {\n\t\treactIslandRoots.get(element)?.unmount();\n\t} catch {\n\t\t// The old tree's nodes may already be gone; the marker is cleared\n\t\t// below either way.\n\t}\n\telement.replaceChildren();\n\tdetachFromHostReactRoot(element);\n\tconst root = createRoot(element);\n\t// Commit now, while the marker carries none of the host root's\n\t// expandos (see detachFromHostReactRoot): a host re-render in between\n\t// re-attaches them and React rejects the marker as a container.\n\tflushSync(() => {\n\t\troot.render(\n\t\t\tisPropsRecord(props)\n\t\t\t\t? createElement(component, props)\n\t\t\t\t: createElement(component)\n\t\t);\n\t});\n\treactIslandRoots.set(element, root);\n};\n"
6
+ ],
7
+ "mappings": ";;;;;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AAGA,IAAM,mBAAmB,IAAI;AAE7B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAWxC,IAAM,8BAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM,0BAA0B,CAAC,YAAyB;AAAA,EACzD,WAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAAA,IACvC,MAAM,gBAAgB,4BAA4B,KAAK,CAAC,WACvD,IAAI,WAAW,MAAM,CACtB;AAAA,IACA,IAAI,CAAC;AAAA,MAAe;AAAA,IACpB,QAAQ,eAAe,SAAS,GAAG;AAAA,EACpC;AAAA;AAGM,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,MAAM,eAAe,iBAAiB,IAAI,OAAO;AAAA,EACjD,IAAI,cAAc;AAAA,IACjB,aAAa,OACZ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,wBAAwB,OAAO;AAAA,EAC/B,MAAM,qBAAqB,oCAAmC,OAAO;AAAA,EACrE,MAAM,UAAU,CAAC,qBAAgC;AAAA,IAChD,IAAI;AAAA,IACJ,MAAM,iBAAiB,MAAM;AAAA,MAC5B,OAAO,YAAY,SAAS,gBAAgB;AAAA;AAAA,IAE7C,IAAI;AAAA,MACH,IAAI,mBAAmB;AAAA,QAAgB,UAAU,cAAc;AAAA,MAC1D;AAAA,uBAAe;AAAA,cACnB;AAAA,MACD,mBAAmB;AAAA;AAAA,IAEpB,IAAI,SAAS;AAAA,MAAW,iBAAiB,IAAI,SAAS,IAAI;AAAA;AAAA,EAG3D,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAC1B,QAAQ,cAAc,SAAS,CAAC;AAAA,IAEhC;AAAA,EACD;AAAA,EAEA,QAAQ,cAAc,WAAW,KAAK,CAAC;AAAA;AAEjC,IAAM,mBAAmB,CAC/B,UAEA,OAAO,UAAU;AAQX,IAAM,qBAAqB,CACjC,WACA,SACA,UACI;AAAA,EACJ,IAAI;AAAA,IACH,iBAAiB,IAAI,OAAO,GAAG,QAAQ;AAAA,IACtC,MAAM;AAAA,EAIR,QAAQ,gBAAgB;AAAA,EACxB,wBAAwB,OAAO;AAAA,EAC/B,MAAM,OAAO,WAAW,OAAO;AAAA,EAI/B,UAAU,MAAM;AAAA,IACf,KAAK,OACJ,cAAc,KAAK,IAChB,cAAc,WAAW,KAAK,IAC9B,cAAc,SAAS,CAC3B;AAAA,GACA;AAAA,EACD,iBAAiB,IAAI,SAAS,IAAI;AAAA;",
8
+ "debugId": "566183856C37B0E164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,30 @@
1
+ // src/client/hydrators/svelte.ts
2
+ import { hydrate as hydrateSvelte, mount, unmount } from "svelte";
3
+ var svelteIslandInstances = new WeakMap;
4
+ var isPropsRecord = (value) => typeof value === "object" && value !== null;
5
+ var hydrateSvelteIsland = (component, element, props) => {
6
+ const instance = hydrateSvelte(component, {
7
+ props: isPropsRecord(props) ? props : undefined,
8
+ target: element
9
+ });
10
+ svelteIslandInstances.set(element, instance);
11
+ };
12
+ var isSvelteComponent = (value) => typeof value === "function";
13
+ var remountSvelteIsland = async (component, element, props) => {
14
+ const instance = svelteIslandInstances.get(element);
15
+ if (instance)
16
+ await unmount(instance);
17
+ element.replaceChildren();
18
+ svelteIslandInstances.set(element, mount(component, {
19
+ props: isPropsRecord(props) ? props : undefined,
20
+ target: element
21
+ }));
22
+ };
23
+ export {
24
+ hydrateSvelteIsland,
25
+ isSvelteComponent,
26
+ remountSvelteIsland
27
+ };
28
+
29
+ //# debugId=2F4BCC650F3C092764756E2164756E21
30
+ //# sourceMappingURL=svelte-6ewphsvj.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/svelte.ts"],
4
+ "sourcesContent": [
5
+ "import { hydrate as hydrateSvelte, mount, unmount } from 'svelte';\n\nconst svelteIslandInstances = new WeakMap<\n\tHTMLElement,\n\tRecord<string, unknown>\n>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const hydrateSvelteIsland = (\n\tcomponent: import('svelte').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst instance = hydrateSvelte(component, {\n\t\tprops: isPropsRecord(props) ? props : undefined,\n\t\ttarget: element\n\t});\n\tsvelteIslandInstances.set(element, instance);\n};\n\nexport const isSvelteComponent = (\n\tvalue: unknown\n): value is import('svelte').Component<Record<string, unknown>> =>\n\ttypeof value === 'function';\n\n/** Dev HMR: replace a hydrated island with a fresh mount of the rebuilt\n * component. Its local state starts over; island stores keep theirs. */\nexport const remountSvelteIsland = async (\n\tcomponent: import('svelte').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tconst instance = svelteIslandInstances.get(element);\n\tif (instance) await unmount(instance);\n\telement.replaceChildren();\n\tsvelteIslandInstances.set(\n\t\telement,\n\t\tmount(component, {\n\t\t\tprops: isPropsRecord(props) ? props : undefined,\n\t\t\ttarget: element\n\t\t})\n\t);\n};\n"
6
+ ],
7
+ "mappings": ";AAAA,oBAAS;AAET,IAAM,wBAAwB,IAAI;AAKlC,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAEjC,IAAM,sBAAsB,CAClC,WACA,SACA,UACI;AAAA,EACJ,MAAM,WAAW,cAAc,WAAW;AAAA,IACzC,OAAO,cAAc,KAAK,IAAI,QAAQ;AAAA,IACtC,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,sBAAsB,IAAI,SAAS,QAAQ;AAAA;AAGrC,IAAM,oBAAoB,CAChC,UAEA,OAAO,UAAU;AAIX,IAAM,sBAAsB,OAClC,WACA,SACA,UACI;AAAA,EACJ,MAAM,WAAW,sBAAsB,IAAI,OAAO;AAAA,EAClD,IAAI;AAAA,IAAU,MAAM,QAAQ,QAAQ;AAAA,EACpC,QAAQ,gBAAgB;AAAA,EACxB,sBAAsB,IACrB,SACA,MAAM,WAAW;AAAA,IAChB,OAAO,cAAc,KAAK,IAAI,QAAQ;AAAA,IACtC,QAAQ;AAAA,EACT,CAAC,CACF;AAAA;",
8
+ "debugId": "2F4BCC650F3C092764756E2164756E21",
9
+ "names": []
10
+ }
@@ -1,5 +1,5 @@
1
1
  // src/client/hydrators/vue.ts
2
- import { createSSRApp, h } from "vue";
2
+ import { createApp, createSSRApp, h } from "vue";
3
3
  var vueIslandApps = new WeakMap;
4
4
  var isPropsRecord = (value) => typeof value === "object" && value !== null;
5
5
  var hydrateVueIsland = (component, element, props) => {
@@ -13,10 +13,20 @@ var hydrateVueIsland = (component, element, props) => {
13
13
  vueIslandApps.set(element, app);
14
14
  };
15
15
  var isVueComponent = (value) => typeof value === "function" || isPropsRecord(value);
16
+ var remountVueIsland = (component, element, props) => {
17
+ vueIslandApps.get(element)?.unmount();
18
+ element.replaceChildren();
19
+ const app = createApp({
20
+ render: () => h(component, isPropsRecord(props) ? props : undefined)
21
+ });
22
+ app.mount(element);
23
+ vueIslandApps.set(element, app);
24
+ };
16
25
  export {
17
26
  hydrateVueIsland,
18
- isVueComponent
27
+ isVueComponent,
28
+ remountVueIsland
19
29
  };
20
30
 
21
- //# debugId=D16652A9383C3DC964756E2164756E21
22
- //# sourceMappingURL=vue-a84fzp3v.js.map
31
+ //# debugId=E472E1F9DB7F66A864756E2164756E21
32
+ //# sourceMappingURL=vue-db6ppn1f.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/hydrators/vue.ts"],
4
+ "sourcesContent": [
5
+ "import { createApp, createSSRApp, h, type App as VueApp } from 'vue';\n\nconst vueIslandApps = new WeakMap<HTMLElement, VueApp>();\n\nconst isPropsRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const hydrateVueIsland = (\n\tcomponent: import('vue').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tif (vueIslandApps.has(element)) {\n\t\treturn;\n\t}\n\n\tconst app = createSSRApp({\n\t\trender: () => h(component, isPropsRecord(props) ? props : undefined)\n\t});\n\tapp.mount(element);\n\tvueIslandApps.set(element, app);\n};\nexport const isVueComponent = (\n\tvalue: unknown\n): value is import('vue').Component<Record<string, unknown>> =>\n\ttypeof value === 'function' || isPropsRecord(value);\n\n/** Dev HMR: replace a hydrated island with a fresh mount of the rebuilt\n * component. Its local state starts over; island stores keep theirs. */\nexport const remountVueIsland = (\n\tcomponent: import('vue').Component<Record<string, unknown>>,\n\telement: HTMLElement,\n\tprops: unknown\n) => {\n\tvueIslandApps.get(element)?.unmount();\n\telement.replaceChildren();\n\tconst app = createApp({\n\t\trender: () => h(component, isPropsRecord(props) ? props : undefined)\n\t});\n\tapp.mount(element);\n\tvueIslandApps.set(element, app);\n};\n"
6
+ ],
7
+ "mappings": ";AAAA;AAEA,IAAM,gBAAgB,IAAI;AAE1B,IAAM,gBAAgB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU;AAEjC,IAAM,mBAAmB,CAC/B,WACA,SACA,UACI;AAAA,EACJ,IAAI,cAAc,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACD;AAAA,EAEA,MAAM,MAAM,aAAa;AAAA,IACxB,QAAQ,MAAM,EAAE,WAAW,cAAc,KAAK,IAAI,QAAQ,SAAS;AAAA,EACpE,CAAC;AAAA,EACD,IAAI,MAAM,OAAO;AAAA,EACjB,cAAc,IAAI,SAAS,GAAG;AAAA;AAExB,IAAM,iBAAiB,CAC7B,UAEA,OAAO,UAAU,cAAc,cAAc,KAAK;AAI5C,IAAM,mBAAmB,CAC/B,WACA,SACA,UACI;AAAA,EACJ,cAAc,IAAI,OAAO,GAAG,QAAQ;AAAA,EACpC,QAAQ,gBAAgB;AAAA,EACxB,MAAM,MAAM,UAAU;AAAA,IACrB,QAAQ,MAAM,EAAE,WAAW,cAAc,KAAK,IAAI,QAAQ,SAAS;AAAA,EACpE,CAAC;AAAA,EACD,IAAI,MAAM,OAAO;AAAA,EACjB,cAAc,IAAI,SAAS,GAAG;AAAA;",
8
+ "debugId": "E472E1F9DB7F66A864756E2164756E21",
9
+ "names": []
10
+ }
@@ -32,7 +32,7 @@ var __chunks = (base, ids, nodes, entry) => {
32
32
  __chunkSeen ||= {};
33
33
  __preload(ids[entry], 1);
34
34
  };
35
- __chunks(import.meta.url,["9eq0n6ma","dcvkaba2","4yfa5bxa","a84fzp3v","s2ta5ajb","8m2qq61n"],[["./index.js",5],["./chunks/react-dcvkaba2.js",5],["./chunks/svelte-4yfa5bxa.js"],["./chunks/vue-a84fzp3v.js"],["./chunks/islands-s2ta5ajb.js",5],["./chunks/index-8m2qq61n.js"]],0);
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
36
 
37
37
  // src/core/islandManifest.ts
38
38
  var toIslandFrameworkSegment = (framework) => framework[0]?.toUpperCase() + framework.slice(1);
@@ -324,6 +324,8 @@ var getSnapshotMap = () => {
324
324
  window.__ABS_SERVER_ISLAND_HTML__ ??= new Map;
325
325
  return window.__ABS_SERVER_ISLAND_HTML__;
326
326
  };
327
+ var RUNTIME_ISLAND_ATTRIBUTES = new Set(["data-error", "data-hydrated"]);
328
+ var readMarkerAttributes = (element) => Object.fromEntries(element.getAttributeNames().filter((name) => !RUNTIME_ISLAND_ATTRIBUTES.has(name)).map((name) => [name, element.getAttribute(name) ?? ""]));
327
329
  var snapshotIslandElement = (element, snapshotMap) => {
328
330
  const signature = [
329
331
  element.dataset.component,
@@ -332,9 +334,8 @@ var snapshotIslandElement = (element, snapshotMap) => {
332
334
  element.dataset.props ?? "{}"
333
335
  ].join("::");
334
336
  const existing = snapshotMap.get(signature) ?? [];
335
- const attributes = Object.fromEntries(element.getAttributeNames().map((name) => [name, element.getAttribute(name) ?? ""]));
336
337
  existing.push({
337
- attributes,
338
+ attributes: readMarkerAttributes(element),
338
339
  innerHTML: element.innerHTML
339
340
  });
340
341
  snapshotMap.set(signature, existing);
@@ -352,6 +353,7 @@ var initializeIslandMarkupSnapshot = () => {
352
353
  snapshotIslandElement(element, snapshotMap);
353
354
  }
354
355
  };
356
+ var innerHtmlObjects = new Map;
355
357
 
356
358
  // src/client/islandRuntime.ts
357
359
  initializeIslandMarkupSnapshot();
@@ -375,7 +377,7 @@ var hydratePreservingBrowserTranslation = async (element, hydrate) => {
375
377
  var hydrateByFramework = async (registry, framework, componentName, element, props, resolveComponent) => {
376
378
  const propsRecord = isPropsRecord(props) ? props : undefined;
377
379
  if (framework === "react") {
378
- const { hydrateReactIsland, isReactComponent } = await (__preload("dcvkaba2"), import("./chunks/react-dcvkaba2.js"));
380
+ const { hydrateReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
379
381
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.react?.[componentName]);
380
382
  if (!isReactComponent(resolvedComponent))
381
383
  return;
@@ -384,7 +386,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
384
386
  return;
385
387
  }
386
388
  if (framework === "svelte") {
387
- const { hydrateSvelteIsland, isSvelteComponent } = await (__preload("4yfa5bxa"), import("./chunks/svelte-4yfa5bxa.js"));
389
+ const { hydrateSvelteIsland, isSvelteComponent } = await (__preload("6ewphsvj"), import("./chunks/svelte-6ewphsvj.js"));
388
390
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.svelte?.[componentName]);
389
391
  if (!isSvelteComponent(resolvedComponent))
390
392
  return;
@@ -393,7 +395,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
393
395
  return;
394
396
  }
395
397
  if (framework === "vue") {
396
- const { hydrateVueIsland, isVueComponent } = await (__preload("a84fzp3v"), import("./chunks/vue-a84fzp3v.js"));
398
+ const { hydrateVueIsland, isVueComponent } = await (__preload("db6ppn1f"), import("./chunks/vue-db6ppn1f.js"));
397
399
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.vue?.[componentName]);
398
400
  if (!isVueComponent(resolvedComponent))
399
401
  return;
@@ -402,7 +404,7 @@ var hydrateByFramework = async (registry, framework, componentName, element, pro
402
404
  return;
403
405
  }
404
406
  if (framework === "angular") {
405
- const { mountAngularIsland, isAngularComponent } = await (__preload("s2ta5ajb"), import("./chunks/islands-s2ta5ajb.js"));
407
+ const { mountAngularIsland, isAngularComponent } = await (__preload("mfjmdwnb"), import("./chunks/islands-mfjmdwnb.js"));
406
408
  const resolvedComponent = await resolveComponent?.(framework, componentName) ?? getIslandComponent(registry.angular?.[componentName]);
407
409
  const { islandId } = element.dataset;
408
410
  if (!isAngularComponent(resolvedComponent) || !islandId)
@@ -461,12 +463,67 @@ var collectIslandElements = (node) => {
461
463
  }
462
464
  return islands;
463
465
  };
466
+ var remountByFramework = async (framework, component, element, props) => {
467
+ if (framework === "react") {
468
+ const { remountReactIsland, isReactComponent } = await (__preload("sprprqzs"), import("./chunks/react-sprprqzs.js"));
469
+ if (!isReactComponent(component))
470
+ return false;
471
+ remountReactIsland(component, element, props);
472
+ return true;
473
+ }
474
+ if (framework === "svelte") {
475
+ const { remountSvelteIsland, isSvelteComponent } = await (__preload("6ewphsvj"), import("./chunks/svelte-6ewphsvj.js"));
476
+ if (!isSvelteComponent(component))
477
+ return false;
478
+ await remountSvelteIsland(component, element, props);
479
+ return true;
480
+ }
481
+ if (framework === "vue") {
482
+ const { remountVueIsland, isVueComponent } = await (__preload("db6ppn1f"), import("./chunks/vue-db6ppn1f.js"));
483
+ if (!isVueComponent(component))
484
+ return false;
485
+ remountVueIsland(component, element, props);
486
+ return true;
487
+ }
488
+ return false;
489
+ };
490
+ var findIslandElements = (framework, component) => Array.from(document.querySelectorAll('[data-island="true"]')).filter((element) => element.dataset.framework === framework && element.dataset.component === component);
491
+ var remountIslandElement = async (update, component, element) => {
492
+ if (element.dataset.hydrated !== "true")
493
+ return true;
494
+ try {
495
+ return await remountByFramework(update.framework, component, element, parseIslandProps(element.getAttribute("data-props")));
496
+ } catch (error) {
497
+ console.error(`[islands] Failed to update ${update.framework}:${update.component}`, error);
498
+ return false;
499
+ }
500
+ };
501
+ var applyIslandHotUpdate = async (update) => {
502
+ const elements = findIslandElements(update.framework, update.component);
503
+ if (elements.length === 0)
504
+ return true;
505
+ const loadedModule = await import(update.modulePath);
506
+ const results = await Promise.all(elements.map((element) => remountIslandElement(update, loadedModule.default, element)));
507
+ return results.every(Boolean);
508
+ };
509
+ var applyIslandHotUpdates = async (updates) => {
510
+ try {
511
+ const results = await Promise.all(updates.map(applyIslandHotUpdate));
512
+ return results.every(Boolean);
513
+ } catch (error) {
514
+ console.error("[islands] Failed to load an updated island", error);
515
+ return false;
516
+ }
517
+ };
464
518
  var startIslands = ({
465
519
  registry,
466
520
  resolveComponent,
467
521
  root = document.documentElement
468
522
  }) => {
469
523
  const targetRoot = root instanceof Document ? root.documentElement : root;
524
+ if (typeof window !== "undefined") {
525
+ window.__ABS_ISLAND_HMR__ = applyIslandHotUpdates;
526
+ }
470
527
  const observer = typeof IntersectionObserver === "undefined" ? null : new IntersectionObserver((entries) => {
471
528
  for (const entry of entries) {
472
529
  if (!entry.isIntersecting)
@@ -667,5 +724,5 @@ export {
667
724
  subscribeIslandStore
668
725
  };
669
726
 
670
- //# debugId=F1F7A19F311E674864756E2164756E21
727
+ //# debugId=DB5A54DCE17303CA64756E2164756E21
671
728
  //# sourceMappingURL=index.js.map
@@ -9,12 +9,12 @@
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\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\tconst attributes = Object.fromEntries(\n\t\telement\n\t\t\t.getAttributeNames()\n\t\t\t.map((name) => [name, element.getAttribute(name) ?? ''])\n\t);\n\texisting.push({\n\t\tattributes,\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: Object.fromEntries(\n\t\t\tliveCandidate\n\t\t\t\t.getAttributeNames()\n\t\t\t\t.map((name) => [name, liveCandidate.getAttribute(name) ?? ''])\n\t\t),\n\t\tinnerHTML: liveCandidate.innerHTML\n\t};\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\nexport const startIslands = ({\n\tregistry,\n\tresolveComponent,\n\troot = document.documentElement\n}: StartIslandsOptions) => {\n\tconst targetRoot = root instanceof Document ? root.documentElement : root;\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 { 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",
14
14
  "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
15
  "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
16
  ],
17
- "mappings": "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",
18
- "debugId": "F1F7A19F311E674864756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "DB5A54DCE17303CA64756E2164756E21",
19
19
  "names": []
20
20
  }
@@ -1,7 +1,9 @@
1
1
  import {
2
- readPageNonce,
3
2
  consumePrefetch2
4
- } from "./chunks/index-6b66nzyf.js";
3
+ } from "./chunks/index-a3rpg5kw.js";
4
+ import {
5
+ readPageNonce
6
+ } from "./chunks/index-4j1snyh2.js";
5
7
 
6
8
  // src/client/navigation.ts
7
9
  var RUNTIME_KEY = Symbol.for("absolutejs.navigation");
@@ -761,5 +763,5 @@ export {
761
763
  navigateDocument
762
764
  };
763
765
 
764
- //# debugId=1B604181BCFC6A6964756E2164756E21
766
+ //# debugId=54F3B2294F73732864756E2164756E21
765
767
  //# sourceMappingURL=navigation.js.map