@elurjs/kit 2.4.10 → 2.5.1

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 (188) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/README.md +248 -15
  3. package/dist/lib/action/index.cjs +1 -1
  4. package/dist/lib/action/index.js +1 -1
  5. package/dist/lib/{action-DZHihU3Z.cjs → action-BiE4tEty.cjs} +2 -2
  6. package/dist/lib/{action-DZHihU3Z.cjs.map → action-BiE4tEty.cjs.map} +1 -1
  7. package/dist/lib/{action-BB6N5yD-.js → action-CXVk8rWt.js} +3 -3
  8. package/dist/lib/{action-BB6N5yD-.js.map → action-CXVk8rWt.js.map} +1 -1
  9. package/dist/lib/adapter-DNsjXvq5.js +160 -0
  10. package/dist/lib/adapter-DNsjXvq5.js.map +1 -0
  11. package/dist/lib/adapter-Dz2hzR36.cjs +3 -0
  12. package/dist/lib/adapter-Dz2hzR36.cjs.map +1 -0
  13. package/dist/lib/adapters/bun.cjs +2 -2
  14. package/dist/lib/adapters/bun.cjs.map +1 -1
  15. package/dist/lib/adapters/bun.js +17 -9
  16. package/dist/lib/adapters/bun.js.map +1 -1
  17. package/dist/lib/adapters/index.d.cts +34 -0
  18. package/dist/lib/adapters/index.d.ts +34 -0
  19. package/dist/lib/adapters/netlify.cjs +1 -1
  20. package/dist/lib/adapters/netlify.js +7 -7
  21. package/dist/lib/adapters/node.cjs +5 -5
  22. package/dist/lib/adapters/node.cjs.map +1 -1
  23. package/dist/lib/adapters/node.js +20 -12
  24. package/dist/lib/adapters/node.js.map +1 -1
  25. package/dist/lib/adapters/vercel.cjs +1 -1
  26. package/dist/lib/adapters/vercel.js +8 -8
  27. package/dist/lib/build/build.d.cts +40 -0
  28. package/dist/lib/build/build.d.ts +40 -0
  29. package/dist/lib/build/document-shell.d.cts +47 -1
  30. package/dist/lib/build/document-shell.d.ts +47 -1
  31. package/dist/lib/build/vite-build.d.cts +25 -2
  32. package/dist/lib/build/vite-build.d.ts +25 -2
  33. package/dist/lib/cache/adapter.d.cts +41 -0
  34. package/dist/lib/cache/adapter.d.ts +41 -0
  35. package/dist/lib/cache/index.cjs +2 -0
  36. package/dist/lib/cache/index.cjs.map +1 -0
  37. package/dist/lib/cache/index.d.cts +5 -0
  38. package/dist/lib/cache/index.d.ts +5 -0
  39. package/dist/lib/cache/index.js +113 -0
  40. package/dist/lib/cache/index.js.map +1 -0
  41. package/dist/lib/cache/invalidation.d.cts +36 -0
  42. package/dist/lib/cache/invalidation.d.ts +36 -0
  43. package/dist/lib/cache/redis-adapter.d.cts +49 -0
  44. package/dist/lib/cache/redis-adapter.d.ts +49 -0
  45. package/dist/lib/cache-DGhTYyqh.js +50 -0
  46. package/dist/lib/cache-DGhTYyqh.js.map +1 -0
  47. package/dist/lib/cache-X1n4Ossu.cjs +2 -0
  48. package/dist/lib/cache-X1n4Ossu.cjs.map +1 -0
  49. package/dist/lib/cli/output.d.cts +58 -0
  50. package/dist/lib/cli/output.d.ts +58 -0
  51. package/dist/lib/cli/ports.d.cts +20 -0
  52. package/dist/lib/cli/ports.d.ts +20 -0
  53. package/dist/lib/cli.cjs +2559 -1488
  54. package/dist/lib/cli.cjs.map +1 -1
  55. package/dist/lib/cli.d.cts +21 -0
  56. package/dist/lib/cli.d.ts +21 -0
  57. package/dist/lib/cli.js +2558 -1488
  58. package/dist/lib/cli.js.map +1 -1
  59. package/dist/lib/config/index.cjs +1 -1
  60. package/dist/lib/config/index.cjs.map +1 -1
  61. package/dist/lib/config/index.d.cts +79 -0
  62. package/dist/lib/config/index.d.ts +79 -0
  63. package/dist/lib/config/index.js +21 -14
  64. package/dist/lib/config/index.js.map +1 -1
  65. package/dist/lib/{errors-ePYxDlhU.js → errors-j4cg9VN3.js} +24 -30
  66. package/dist/lib/{errors-ePYxDlhU.js.map → errors-j4cg9VN3.js.map} +1 -1
  67. package/dist/lib/errors-kSl9yLkg.cjs +2 -0
  68. package/dist/lib/{errors-0X7pCFNU.cjs.map → errors-kSl9yLkg.cjs.map} +1 -1
  69. package/dist/lib/hydrate-BSLuI0Nh.cjs +2 -0
  70. package/dist/lib/hydrate-BSLuI0Nh.cjs.map +1 -0
  71. package/dist/lib/hydrate-BaS7-d8C.js +133 -0
  72. package/dist/lib/hydrate-BaS7-d8C.js.map +1 -0
  73. package/dist/lib/idiomorph.esm-BOOTOg1r.cjs +2 -0
  74. package/dist/lib/idiomorph.esm-BOOTOg1r.cjs.map +1 -0
  75. package/dist/lib/idiomorph.esm-CXuY-EHB.js +371 -0
  76. package/dist/lib/idiomorph.esm-CXuY-EHB.js.map +1 -0
  77. package/dist/lib/index.cjs +1 -1
  78. package/dist/lib/index.cjs.map +1 -1
  79. package/dist/lib/index.d.cts +8 -6
  80. package/dist/lib/index.d.ts +8 -6
  81. package/dist/lib/index.js +1 -1
  82. package/dist/lib/index.js.map +1 -1
  83. package/dist/lib/interpolation-plugin-C0dTd69H.cjs +58 -0
  84. package/dist/lib/interpolation-plugin-C0dTd69H.cjs.map +1 -0
  85. package/dist/lib/{interpolation-plugin-Wgb1j4pT.js → interpolation-plugin-K2qE69tF.js} +95 -126
  86. package/dist/lib/interpolation-plugin-K2qE69tF.js.map +1 -0
  87. package/dist/lib/invalidation-CFpNQUv6.cjs +2 -0
  88. package/dist/lib/invalidation-CFpNQUv6.cjs.map +1 -0
  89. package/dist/lib/invalidation-DXhdE9wj.js +64 -0
  90. package/dist/lib/invalidation-DXhdE9wj.js.map +1 -0
  91. package/dist/lib/island/generate-entry.d.cts +40 -2
  92. package/dist/lib/island/generate-entry.d.ts +40 -2
  93. package/dist/lib/island/hydrate.d.cts +19 -6
  94. package/dist/lib/island/hydrate.d.ts +19 -6
  95. package/dist/lib/island/index.cjs +1 -1
  96. package/dist/lib/island/index.d.cts +2 -1
  97. package/dist/lib/island/index.d.ts +2 -1
  98. package/dist/lib/island/index.js +1 -1
  99. package/dist/lib/island/island.d.cts +15 -0
  100. package/dist/lib/island/island.d.ts +15 -0
  101. package/dist/lib/island-CTBnsOhI.js +59 -0
  102. package/dist/lib/island-CTBnsOhI.js.map +1 -0
  103. package/dist/lib/island-kfQEKRe_.cjs +2 -0
  104. package/dist/lib/island-kfQEKRe_.cjs.map +1 -0
  105. package/dist/lib/node-http-DVFcYeBS.js +723 -0
  106. package/dist/lib/node-http-DVFcYeBS.js.map +1 -0
  107. package/dist/lib/node-http-Uct7DhmN.cjs +13 -0
  108. package/dist/lib/node-http-Uct7DhmN.cjs.map +1 -0
  109. package/dist/lib/rolldown-runtime-BIInC43l.cjs +1 -0
  110. package/dist/lib/rolldown-runtime-Dy4uBu1J.js +11 -0
  111. package/dist/lib/router/client.cjs +1 -1
  112. package/dist/lib/router/client.cjs.map +1 -1
  113. package/dist/lib/router/client.d.cts +55 -8
  114. package/dist/lib/router/client.d.ts +55 -8
  115. package/dist/lib/router/client.js +298 -97
  116. package/dist/lib/router/client.js.map +1 -1
  117. package/dist/lib/router/redirects.d.cts +34 -0
  118. package/dist/lib/router/redirects.d.ts +34 -0
  119. package/dist/lib/runtime/handler.d.cts +59 -0
  120. package/dist/lib/runtime/handler.d.ts +59 -0
  121. package/dist/lib/runtime/index.cjs +1 -1
  122. package/dist/lib/runtime/index.d.cts +2 -1
  123. package/dist/lib/runtime/index.d.ts +2 -1
  124. package/dist/lib/runtime/index.js +4 -4
  125. package/dist/lib/runtime/logger.d.cts +47 -0
  126. package/dist/lib/runtime/logger.d.ts +47 -0
  127. package/dist/lib/runtime/node-http.d.cts +11 -1
  128. package/dist/lib/runtime/node-http.d.ts +11 -1
  129. package/dist/lib/runtime-ChE4flX3.cjs +2 -0
  130. package/dist/lib/runtime-ChE4flX3.cjs.map +1 -0
  131. package/dist/lib/runtime-OMyz5yE-.js +905 -0
  132. package/dist/lib/runtime-OMyz5yE-.js.map +1 -0
  133. package/dist/lib/seo/index.cjs +1 -10
  134. package/dist/lib/seo/index.d.cts +1 -0
  135. package/dist/lib/seo/index.d.ts +1 -0
  136. package/dist/lib/seo/index.js +2 -41
  137. package/dist/lib/seo/sitemap-from-routes.d.cts +24 -0
  138. package/dist/lib/seo/sitemap-from-routes.d.ts +24 -0
  139. package/dist/lib/{shared-CfqOLsKj.cjs → shared-CP0Dc3cp.cjs} +72 -47
  140. package/dist/lib/shared-CP0Dc3cp.cjs.map +1 -0
  141. package/dist/lib/{shared-DU3iQgr7.js → shared-D8w-neq2.js} +87 -58
  142. package/dist/lib/shared-D8w-neq2.js.map +1 -0
  143. package/dist/lib/sitemap-from-routes-CaBoiGvE.js +77 -0
  144. package/dist/lib/sitemap-from-routes-CaBoiGvE.js.map +1 -0
  145. package/dist/lib/sitemap-from-routes-DbcLLL4G.cjs +13 -0
  146. package/dist/lib/sitemap-from-routes-DbcLLL4G.cjs.map +1 -0
  147. package/dist/lib/ssr/render.d.cts +8 -2
  148. package/dist/lib/ssr/render.d.ts +8 -2
  149. package/dist/lib/ssr/server.d.cts +7 -0
  150. package/dist/lib/ssr/server.d.ts +7 -0
  151. package/dist/lib/ssr/stream-response.d.cts +30 -0
  152. package/dist/lib/ssr/stream-response.d.ts +30 -0
  153. package/dist/lib/ssr/stream.d.cts +16 -1
  154. package/dist/lib/ssr/stream.d.ts +16 -1
  155. package/dist/lib/{stream-DmZjYqHm.cjs → stream-Cg-xYG82.cjs} +3 -3
  156. package/dist/lib/stream-Cg-xYG82.cjs.map +1 -0
  157. package/dist/lib/stream-D-ytogdu.js +106 -0
  158. package/dist/lib/stream-D-ytogdu.js.map +1 -0
  159. package/dist/lib/vite/index.cjs +1 -1
  160. package/dist/lib/vite/index.cjs.map +1 -1
  161. package/dist/lib/vite/index.d.cts +11 -0
  162. package/dist/lib/vite/index.d.ts +11 -0
  163. package/dist/lib/vite/index.js +101 -94
  164. package/dist/lib/vite/index.js.map +1 -1
  165. package/package.json +25 -8
  166. package/dist/lib/errors-0X7pCFNU.cjs +0 -2
  167. package/dist/lib/hydrate-CJbUWdXu.js +0 -126
  168. package/dist/lib/hydrate-CJbUWdXu.js.map +0 -1
  169. package/dist/lib/hydrate-D6MR24mz.cjs +0 -2
  170. package/dist/lib/hydrate-D6MR24mz.cjs.map +0 -1
  171. package/dist/lib/interpolation-plugin-TWDch8nn.cjs +0 -39
  172. package/dist/lib/interpolation-plugin-TWDch8nn.cjs.map +0 -1
  173. package/dist/lib/interpolation-plugin-Wgb1j4pT.js.map +0 -1
  174. package/dist/lib/node-http-DRAUhO0c.js +0 -617
  175. package/dist/lib/node-http-DRAUhO0c.js.map +0 -1
  176. package/dist/lib/node-http-DhxguYyz.cjs +0 -13
  177. package/dist/lib/node-http-DhxguYyz.cjs.map +0 -1
  178. package/dist/lib/runtime-CrH5X-Es.cjs +0 -2
  179. package/dist/lib/runtime-CrH5X-Es.cjs.map +0 -1
  180. package/dist/lib/runtime-Ds2-wH6P.js +0 -520
  181. package/dist/lib/runtime-Ds2-wH6P.js.map +0 -1
  182. package/dist/lib/seo/index.cjs.map +0 -1
  183. package/dist/lib/seo/index.js.map +0 -1
  184. package/dist/lib/shared-CfqOLsKj.cjs.map +0 -1
  185. package/dist/lib/shared-DU3iQgr7.js.map +0 -1
  186. package/dist/lib/stream-CpOG052V.js +0 -104
  187. package/dist/lib/stream-CpOG052V.js.map +0 -1
  188. package/dist/lib/stream-DmZjYqHm.cjs.map +0 -1
@@ -1,57 +1,78 @@
1
1
  //#region src/router/client.ts
2
- var e = !0, t = null;
3
- function n() {
4
- return e ? (t ||= (async () => {
5
- let t = new URL("/__elur-js/render", location.origin);
6
- t.searchParams.set("page", "/");
2
+ var e = "data-elur-persist";
3
+ function t(e, t) {
4
+ document.dispatchEvent(new CustomEvent(e, { detail: t }));
5
+ }
6
+ var n = !0, r = null;
7
+ function i() {
8
+ return n ? (r ||= (async () => {
9
+ let e = new URL("/__elur-js/render", location.origin);
10
+ e.searchParams.set("page", "/");
7
11
  try {
8
- let n = await fetch(t.toString(), { headers: {
12
+ let t = await fetch(e.toString(), { headers: {
9
13
  Accept: "application/json",
10
14
  "X-Elur-Probe": "1"
11
15
  } });
12
- return e = n.ok, n.ok;
16
+ return n = t.ok, t.ok;
13
17
  } catch {
14
- return e = !1, !1;
18
+ return n = !1, !1;
15
19
  }
16
- })(), t) : Promise.resolve(!1);
20
+ })(), r) : Promise.resolve(!1);
17
21
  }
18
- function r(e) {
22
+ function a(e) {
19
23
  return e.tagName === "A" && e.hostname === location.hostname && e.target === "" && !e.getAttribute("download") && !e.hasAttribute("data-no-router");
20
24
  }
21
- function i(e) {
25
+ function o(e) {
22
26
  return e.metaKey || e.ctrlKey || e.shiftKey || e.altKey;
23
27
  }
24
- var a = 3e4, o = /* @__PURE__ */ new Map();
25
- function s(e, t) {
28
+ var s = 3e4, c = 32, l = /* @__PURE__ */ new Map();
29
+ function u(e, t) {
26
30
  return e + t;
27
31
  }
28
- function c(e) {
29
- let t = o.get(e);
32
+ function d(e) {
33
+ let t = l.get(e);
30
34
  if (t) {
31
- if (Date.now() - t.ts > a) {
32
- o.delete(e);
35
+ if (Date.now() - t.ts > s) {
36
+ l.delete(e);
33
37
  return;
34
38
  }
35
- return t.payload;
39
+ return l.delete(e), l.set(e, t), t.payload;
36
40
  }
37
41
  }
38
- function l(e, t) {
39
- o.set(e, {
42
+ function f(e, t) {
43
+ for (l.delete(e), l.set(e, {
40
44
  payload: t,
41
45
  ts: Date.now()
42
- });
46
+ }); l.size > c;) {
47
+ let e = l.keys().next().value;
48
+ if (e === void 0) break;
49
+ l.delete(e);
50
+ }
43
51
  }
44
- async function u(t, r, i) {
45
- let a = s(t, r), o = c(a);
46
- if (o) return o;
47
- if (e && await n()) {
48
- let e = await d(t, r, i);
49
- if (e) return l(a, e), e;
52
+ function p() {
53
+ let e = globalThis.navigator?.connection;
54
+ return !(e?.saveData || e?.effectiveType === "slow-2g" || e?.effectiveType === "2g");
55
+ }
56
+ async function m(e, t, r) {
57
+ let a = u(e, t), o = d(a);
58
+ if (o) return {
59
+ payload: o,
60
+ fromCache: !0
61
+ };
62
+ if (n && await i()) {
63
+ let n = await h(e, t, r);
64
+ if (n) return f(a, n), {
65
+ payload: n,
66
+ fromCache: !1
67
+ };
50
68
  }
51
- let u = await f(t, r, i);
52
- return u && l(a, u), u;
69
+ let s = await g(e, t, r);
70
+ if (s) return f(a, s), {
71
+ payload: s,
72
+ fromCache: !1
73
+ };
53
74
  }
54
- async function d(e, t, n) {
75
+ async function h(e, t, n) {
55
76
  let r = new URL("/__elur-js/render", location.origin);
56
77
  r.searchParams.set("page", e);
57
78
  let i = new URL(location.href);
@@ -75,7 +96,7 @@ async function d(e, t, n) {
75
96
  }
76
97
  return o;
77
98
  }
78
- async function f(e, t, n) {
99
+ async function g(e, t, n) {
79
100
  let r = e + (t || ""), i;
80
101
  try {
81
102
  i = await fetch(r, {
@@ -102,32 +123,35 @@ async function f(e, t, n) {
102
123
  let t = e.getAttribute("href");
103
124
  t && document.head.querySelector(`link[href="${t}"]`) || (u += e.outerHTML);
104
125
  }
105
- let f = o.querySelector("title")?.textContent ?? void 0;
126
+ let f = o.querySelector("title")?.textContent ?? void 0, p = o.getElementById("elur-data"), m = o.getElementById("elur-actions");
106
127
  return {
107
128
  body: c,
108
129
  head: u,
109
- title: f
130
+ title: f,
131
+ data: p?.textContent ?? void 0,
132
+ actions: m?.textContent ?? void 0
110
133
  };
111
134
  }
112
- async function p(e, t = "") {
113
- let n = s(e, t);
114
- if (o.has(n)) {
115
- let e = o.get(n);
116
- if (Date.now() - e.ts <= a) return;
135
+ async function _(e, t = "", n) {
136
+ if (n?.force !== !0 && !p()) return;
137
+ let r = u(e, t);
138
+ if (l.has(r)) {
139
+ let e = l.get(r);
140
+ if (Date.now() - e.ts <= s) return;
117
141
  }
118
- await u(e, t);
142
+ await m(e, t);
119
143
  }
120
- function m() {
144
+ function v() {
121
145
  return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? !1;
122
146
  }
123
- function h() {
147
+ function y() {
124
148
  return typeof document.startViewTransition == "function";
125
149
  }
126
- var g = null;
127
- function _() {
128
- g &&= (g.controller.abort(), null);
150
+ var b = null;
151
+ function x() {
152
+ b &&= (b.controller.abort(), null);
129
153
  }
130
- function v(e) {
154
+ function S(e) {
131
155
  let t = e.querySelectorAll("link[rel=\"stylesheet\"]");
132
156
  for (let e of t) {
133
157
  let t = e.getAttribute("href");
@@ -151,7 +175,7 @@ function v(e) {
151
175
  }
152
176
  }
153
177
  }
154
- function y(e) {
178
+ function C(e) {
155
179
  let t = document.getElementById("elur-route-announcer");
156
180
  t || (t = document.createElement("div"), t.id = "elur-route-announcer", t.setAttribute("aria-live", "assertive"), t.setAttribute("aria-atomic", "true"), t.setAttribute("role", "status"), t.setAttribute("style", "position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;"), document.body.appendChild(t)), t.textContent = "";
157
181
  let n = t, r = setTimeout(() => {
@@ -162,61 +186,201 @@ function y(e) {
162
186
  }, 50);
163
187
  typeof r == "object" && r && "unref" in r && r.unref();
164
188
  }
165
- function b() {
189
+ function w() {
166
190
  let e = document.getElementById("app");
167
191
  e && (e.hasAttribute("tabindex") || e.setAttribute("tabindex", "-1"), e.focus({ preventScroll: !1 }));
168
192
  }
169
- function x(e, t) {
193
+ function T(e, t) {
170
194
  let n = location.origin + e + (t || ""), r = document.querySelector("link[rel=\"canonical\"]");
171
195
  r || (r = document.createElement("link"), r.rel = "canonical", document.head.appendChild(r)), r.href = n;
172
196
  let i = document.querySelector("meta[property=\"og:url\"]");
173
197
  i || (i = document.createElement("meta"), i.setAttribute("property", "og:url"), document.head.appendChild(i)), i.content = n;
174
198
  }
175
- async function S(e, t = "", n = !0) {
176
- _();
177
- let r = new AbortController();
178
- g = {
179
- controller: r,
180
- pathname: e
199
+ function E(t, n) {
200
+ let r = t.querySelectorAll(`[${e}]`);
201
+ if (r.length === 0) return [];
202
+ let i = [];
203
+ for (let t of r) {
204
+ let r = t.getAttribute(e);
205
+ if (!r || i.some((e) => e.oldEl.contains(t))) continue;
206
+ let a = n.querySelector(`[${e}="${D(r)}"]`);
207
+ a && i.push({
208
+ oldEl: t,
209
+ newEl: a
210
+ });
211
+ }
212
+ return i;
213
+ }
214
+ function D(e) {
215
+ let t = globalThis.CSS?.escape;
216
+ return t ? t(e) : e.replace(/["\\\]]/g, "\\$&");
217
+ }
218
+ function O(e) {
219
+ for (let { oldEl: t, newEl: n } of e) {
220
+ k(t, n);
221
+ let e = n.parentNode;
222
+ e && typeof e.moveBefore == "function" ? (e.moveBefore(t, n), n.remove()) : n.replaceWith(t);
223
+ }
224
+ }
225
+ function k(e, t) {
226
+ let n = (e) => (e.matches?.("[data-elur-island]") ? [e] : []).concat(Array.from(e.querySelectorAll("[data-elur-island]"))), r = /* @__PURE__ */ new Map();
227
+ for (let e of n(t)) {
228
+ let t = e.getAttribute("data-elur-island");
229
+ t && r.set(t, e.getAttribute("data-props"));
230
+ }
231
+ for (let t of n(e)) {
232
+ let e = t.getAttribute("data-elur-island");
233
+ if (!e) continue;
234
+ let n = r.get(e), i = t.getAttribute("data-props");
235
+ n !== void 0 && n !== i && t.dispatchEvent(new CustomEvent("elur:persist-props-changed", {
236
+ bubbles: !0,
237
+ detail: {
238
+ name: e,
239
+ props: n,
240
+ previousProps: i
241
+ }
242
+ }));
243
+ }
244
+ }
245
+ var A = null, j = /* @__PURE__ */ new Set([
246
+ "",
247
+ "text/javascript",
248
+ "application/javascript",
249
+ "module"
250
+ ]);
251
+ function M(e) {
252
+ A ||= new Set(Array.from(document.querySelectorAll("script[src]")).map((e) => e.getAttribute("src")).filter((e) => !!e).map((e) => new URL(e, location.href).href));
253
+ for (let t of Array.from(e.querySelectorAll("script"))) {
254
+ if (t.hasAttribute("data-elur-no-reload") || !j.has(t.type)) continue;
255
+ let e = t.getAttribute("src");
256
+ if (e) {
257
+ let t = new URL(e, location.href).href;
258
+ if (A.has(t)) continue;
259
+ A.add(t);
260
+ }
261
+ let n = document.createElement("script");
262
+ for (let e of Array.from(t.attributes)) n.setAttribute(e.name, e.value);
263
+ n.textContent = t.textContent, t.replaceWith(n);
264
+ }
265
+ }
266
+ function N(e, t) {
267
+ let n = document.getElementById(e);
268
+ if (t === void 0) {
269
+ n?.remove();
270
+ return;
271
+ }
272
+ if (n) {
273
+ n.textContent = t;
274
+ return;
275
+ }
276
+ let r = document.createElement("script");
277
+ r.type = "application/json", r.id = e, r.textContent = t, document.body.appendChild(r);
278
+ }
279
+ var P = !1;
280
+ function F(t) {
281
+ return !!(t instanceof Element && (t.hasAttribute(e) || typeof t.__elur_js_island_dispose == "function"));
282
+ }
283
+ async function I(e, t) {
284
+ let { Idiomorph: n } = await import("../idiomorph.esm-CXuY-EHB.js"), r = document.createElement("div");
285
+ r.appendChild(t), n.morph(e, r, {
286
+ morphStyle: "innerHTML",
287
+ callbacks: { beforeNodeMorphed: (e) => !F(e) && void 0 }
288
+ });
289
+ }
290
+ async function L(n, r = "", i = !0) {
291
+ let a = !i;
292
+ x();
293
+ let o = new AbortController();
294
+ b = {
295
+ controller: o,
296
+ pathname: n
297
+ };
298
+ let s = {
299
+ pathname: n,
300
+ search: r,
301
+ popstate: a
181
302
  };
182
- let i;
303
+ t("elur:navigate-start", {
304
+ ...s,
305
+ fromCache: d(u(n, r)) !== void 0
306
+ });
307
+ let c;
183
308
  try {
184
- i = await u(e, t, r.signal);
309
+ c = await m(n, r, o.signal);
185
310
  } catch (e) {
186
- if (r.signal.aborted) return !1;
187
- throw e;
311
+ if (o.signal.aborted) return !1;
312
+ throw t("elur:navigate-error", {
313
+ ...s,
314
+ fromCache: !1
315
+ }), e;
188
316
  }
189
- if (g && g.controller !== r && r.signal.aborted || (g = null, !i)) return !1;
190
- let a = document.getElementById("app");
191
- if (!a) return !1;
192
- n && history.replaceState({
317
+ if (b && b.controller !== o && o.signal.aborted) return !1;
318
+ if (b = null, !c) return t("elur:navigate-error", {
319
+ ...s,
320
+ fromCache: !1
321
+ }), !1;
322
+ let { payload: l, fromCache: f } = c, p = document.getElementById("app");
323
+ if (!p) return t("elur:navigate-error", {
324
+ ...s,
325
+ fromCache: f
326
+ }), !1;
327
+ i && history.replaceState({
193
328
  n: location.pathname,
194
329
  scroll: window.scrollY
195
330
  }, "", location.href);
196
- let o = new URL(location.href), s = () => {
197
- let r = [];
198
- a.querySelectorAll("[data-scroll-preserve]").forEach((e) => {
199
- r.push({
331
+ let h = new URL(location.href), g = async () => {
332
+ let t = [];
333
+ p.querySelectorAll("[data-scroll-preserve]").forEach((e) => {
334
+ t.push({
200
335
  el: e,
201
336
  top: e.scrollTop
202
337
  });
203
- }), v(a);
204
- let s = document.createElement("template");
205
- s.innerHTML = i.body, v(s.content), a.innerHTML = s.innerHTML, C(i.head, i.title), i.clearActionErrorCookie && (document.cookie = i.clearActionErrorCookie), n && history.pushState({
206
- n: e,
338
+ }), S(p);
339
+ let a = () => {
340
+ let e = document.createElement("template");
341
+ return e.innerHTML = l.body, S(e.content), e.content;
342
+ }, o = a(), c = E(p, o);
343
+ if (document.dispatchEvent(new CustomEvent("elur:before-render", { detail: {
344
+ ...s,
345
+ persisted: c.map((e) => e.oldEl)
346
+ } })), O(c), P) try {
347
+ await I(p, o);
348
+ } catch {
349
+ let t = a(), n = [];
350
+ for (let r of t.querySelectorAll(`[${e}]`)) {
351
+ let t = r.getAttribute(e), i = c.find((n) => n.oldEl.getAttribute(e) === t)?.oldEl;
352
+ i && n.push({
353
+ oldEl: i,
354
+ newEl: r
355
+ });
356
+ }
357
+ O(n), p.replaceChildren(t);
358
+ }
359
+ else p.replaceChildren(o);
360
+ R(l.head, l.title), l.clearActionErrorCookie && (document.cookie = l.clearActionErrorCookie), i && history.pushState({
361
+ n,
207
362
  scroll: 0
208
- }, "", e + (t || o.search));
209
- let c = n ? 0 : history.state?.scroll ?? 0;
210
- window.scrollTo(0, c);
211
- for (let e of r) {
212
- let t = a.querySelector(`[data-scroll-preserve="${e.el.getAttribute("data-scroll-preserve")}"]`);
363
+ }, "", n + (r || h.search));
364
+ let u = i ? 0 : history.state?.scroll ?? 0;
365
+ window.scrollTo(0, u);
366
+ for (let e of t) {
367
+ let t = p.querySelector(`[data-scroll-preserve="${e.el.getAttribute("data-scroll-preserve")}"]`);
213
368
  t && (t.scrollTop = e.top);
214
369
  }
215
- x(e, t), y(e), n && b(), document.dispatchEvent(new CustomEvent("elur:rendered"));
370
+ T(n, r), N("elur-data", l.data ?? void 0), N("elur-actions", l.actions ?? void 0), M(p), C(n), i && w(), document.dispatchEvent(new CustomEvent("elur:rendered", { detail: s }));
216
371
  };
217
- return h() && !m() ? document.startViewTransition(() => s()) : s(), !0;
372
+ if (y() && !v()) {
373
+ let e = document.startViewTransition(() => g());
374
+ try {
375
+ await e.updateCallbackDone;
376
+ } catch {}
377
+ } else await g();
378
+ return t("elur:navigate-end", {
379
+ ...s,
380
+ fromCache: f
381
+ }), !0;
218
382
  }
219
- function C(e, t) {
383
+ function R(e, t) {
220
384
  if (document.querySelectorAll("[data-elur-head]").forEach((e) => e.remove()), e && e.trim().length > 0) {
221
385
  let t = document.createElement("template");
222
386
  t.innerHTML = e;
@@ -224,8 +388,8 @@ function C(e, t) {
224
388
  r && (document.title = r.textContent ?? "", r.remove()), document.head.appendChild(n);
225
389
  } else t && (document.title = t);
226
390
  }
227
- var w = /* @__PURE__ */ new WeakSet();
228
- function T() {
391
+ var z = /* @__PURE__ */ new WeakSet();
392
+ function B() {
229
393
  let e = (e) => {
230
394
  let t = e.getAttribute("href");
231
395
  if (!t || t.startsWith("#") || t.startsWith("mailto:") || t.startsWith("javascript:")) return null;
@@ -235,18 +399,18 @@ function T() {
235
399
  search: n === -1 ? "" : t.slice(n)
236
400
  };
237
401
  }, t = (t) => {
238
- if (w.has(t) || !r(t) || t.hasAttribute("data-no-prefetch")) return;
239
- w.add(t);
402
+ if (z.has(t) || !a(t) || t.hasAttribute("data-no-prefetch")) return;
403
+ z.add(t);
240
404
  let n = () => {
241
405
  let n = e(t);
242
- n && p(n.path, n.search);
406
+ n && _(n.path, n.search, { force: t.dataset.prefetch === "always" });
243
407
  };
244
- if (t.addEventListener("pointerenter", n, { once: !0 }), t.addEventListener("focus", n, { once: !0 }), t.dataset.prefetch === "viewport" && "IntersectionObserver" in window) {
408
+ if (t.addEventListener("pointerenter", n, { once: !0 }), t.addEventListener("focus", n, { once: !0 }), t.addEventListener("pointerdown", n, { once: !0 }), t.dataset.prefetch === "viewport" && "IntersectionObserver" in window) {
245
409
  let n = new IntersectionObserver((t) => {
246
410
  for (let r of t) {
247
411
  if (!r.isIntersecting) continue;
248
412
  let t = e(r.target);
249
- t && p(t.path, t.search), n.disconnect();
413
+ t && _(t.path, t.search), n.disconnect();
250
414
  }
251
415
  }, {
252
416
  rootMargin: "200px",
@@ -263,13 +427,50 @@ function T() {
263
427
  subtree: !0
264
428
  }), document.addEventListener("elur:rendered", n);
265
429
  }
266
- function E() {
267
- document.querySelector("meta[name=\"elur:render-endpoint\"]")?.getAttribute("content") === "off" && (e = !1);
430
+ var V = 200, H = "elur-loading-indicator";
431
+ function U() {
432
+ if (typeof document > "u") return;
433
+ let e = null, t = null, n = null, r = 0, i = () => v(), a = () => {
434
+ e && (e.style.transform = `scaleX(${Math.min(r, 100) / 100})`);
435
+ }, o = () => {
436
+ e || (e = document.createElement("div"), e.id = H, e.setAttribute("aria-hidden", "true"), Object.assign(e.style, {
437
+ position: "fixed",
438
+ top: "0",
439
+ left: "0",
440
+ right: "0",
441
+ height: "2px",
442
+ background: "currentColor",
443
+ color: "var(--elur-loading-color, #4f7cff)",
444
+ transform: "scaleX(0)",
445
+ transformOrigin: "0 50%",
446
+ transition: i() ? "none" : "transform 150ms ease-out, opacity 200ms ease-in",
447
+ zIndex: "2147483647",
448
+ pointerEvents: "none",
449
+ opacity: "1"
450
+ }), document.body.appendChild(e), r = 10, a(), i() || (n = setInterval(() => {
451
+ r += (80 - r) * .12, a();
452
+ }, 150)));
453
+ }, s = () => {
454
+ if (t &&= (clearTimeout(t), null), n &&= (clearInterval(n), null), !e) return;
455
+ r = 100, a();
456
+ let o = e;
457
+ e = null, setTimeout(() => {
458
+ o.style.opacity = "0", setTimeout(() => o.remove(), i() ? 0 : 200);
459
+ }, 120);
460
+ };
461
+ document.addEventListener("elur:navigate-start", (e) => {
462
+ e.detail?.fromCache || (s(), t = setTimeout(o, V));
463
+ }), document.addEventListener("elur:navigate-end", s), document.addEventListener("elur:navigate-error", s);
464
+ }
465
+ var W = !1;
466
+ function G(e = {}) {
467
+ if (P = e.morph === !0, W) return;
468
+ W = !0, "scrollRestoration" in history && (history.scrollRestoration = "manual"), document.querySelector("meta[name=\"elur:render-endpoint\"]")?.getAttribute("content") === "off" && (n = !1);
268
469
  let t = document.getElementById("app");
269
- t && v(t), document.addEventListener("click", async (e) => {
270
- if (!(e instanceof MouseEvent) || i(e) || e.defaultPrevented) return;
470
+ t && S(t), document.addEventListener("click", async (e) => {
471
+ if (!(e instanceof MouseEvent) || o(e) || e.defaultPrevented) return;
271
472
  let t = e.target.closest("a");
272
- if (!t || !r(t)) return;
473
+ if (!t || !a(t)) return;
273
474
  let n = t.getAttribute("href");
274
475
  if (!n || n.startsWith("mailto:") || n.startsWith("javascript:")) return;
275
476
  if (n.startsWith("#")) {
@@ -283,16 +484,16 @@ function E() {
283
484
  return;
284
485
  }
285
486
  e.preventDefault();
286
- let a = n.indexOf("?");
287
- await S(a === -1 ? n : n.slice(0, a), a === -1 ? "" : n.slice(a)) || location.assign(n);
487
+ let r = n.indexOf("?");
488
+ await L(r === -1 ? n : n.slice(0, r), r === -1 ? "" : n.slice(r)) || location.assign(n);
288
489
  }), window.addEventListener("popstate", (e) => {
289
- S(e.state?.n ?? location.pathname, location.search, !1);
290
- }), T();
490
+ L(e.state?.n ?? location.pathname, location.search, !1);
491
+ }), e.prefetch !== !1 && B(), e.loadingIndicator === !0 && U();
291
492
  }
292
- function D() {
293
- o.clear(), g = null, e = !0, t = null;
493
+ function K() {
494
+ l.clear(), b = null, n = !0, r = null, A = null, P = !1, W = !1;
294
495
  }
295
496
  //#endregion
296
- export { D as __resetRouterState, v as hoistStyles, S as navigateTo, p as prefetch, E as startClientRouter };
497
+ export { K as __resetRouterState, S as hoistStyles, L as navigateTo, _ as prefetch, G as startClientRouter };
297
498
 
298
499
  //# sourceMappingURL=client.js.map