@elurjs/core 3.5.0

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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/lib/async.cjs +16 -0
  4. package/dist/lib/async.js +123 -0
  5. package/dist/lib/component.cjs +2 -0
  6. package/dist/lib/component.js +66 -0
  7. package/dist/lib/context.cjs +2 -0
  8. package/dist/lib/context.js +52 -0
  9. package/dist/lib/devtools.cjs +59 -0
  10. package/dist/lib/devtools.js +419 -0
  11. package/dist/lib/elur/async.cjs +16 -0
  12. package/dist/lib/elur/async.cjs.map +1 -0
  13. package/dist/lib/elur/async.d.cts +32 -0
  14. package/dist/lib/elur/async.d.ts +32 -0
  15. package/dist/lib/elur/async.js +123 -0
  16. package/dist/lib/elur/async.js.map +1 -0
  17. package/dist/lib/elur/component.cjs +2 -0
  18. package/dist/lib/elur/component.cjs.map +1 -0
  19. package/dist/lib/elur/component.d.cts +17 -0
  20. package/dist/lib/elur/component.d.ts +17 -0
  21. package/dist/lib/elur/component.js +66 -0
  22. package/dist/lib/elur/component.js.map +1 -0
  23. package/dist/lib/elur/context.cjs +2 -0
  24. package/dist/lib/elur/context.cjs.map +1 -0
  25. package/dist/lib/elur/context.d.cts +29 -0
  26. package/dist/lib/elur/context.d.ts +29 -0
  27. package/dist/lib/elur/context.js +52 -0
  28. package/dist/lib/elur/context.js.map +1 -0
  29. package/dist/lib/elur/devtools.cjs +59 -0
  30. package/dist/lib/elur/devtools.cjs.map +1 -0
  31. package/dist/lib/elur/devtools.d.cts +24 -0
  32. package/dist/lib/elur/devtools.d.ts +24 -0
  33. package/dist/lib/elur/devtools.js +419 -0
  34. package/dist/lib/elur/devtools.js.map +1 -0
  35. package/dist/lib/elur/form.cjs +2 -0
  36. package/dist/lib/elur/form.cjs.map +1 -0
  37. package/dist/lib/elur/form.d.cts +283 -0
  38. package/dist/lib/elur/form.d.ts +283 -0
  39. package/dist/lib/elur/form.js +315 -0
  40. package/dist/lib/elur/form.js.map +1 -0
  41. package/dist/lib/elur/hydrate/index.cjs +2 -0
  42. package/dist/lib/elur/hydrate/index.cjs.map +1 -0
  43. package/dist/lib/elur/hydrate/index.d.cts +13 -0
  44. package/dist/lib/elur/hydrate/index.d.ts +13 -0
  45. package/dist/lib/elur/hydrate/index.js +410 -0
  46. package/dist/lib/elur/hydrate/index.js.map +1 -0
  47. package/dist/lib/elur/index.d.cts +19 -0
  48. package/dist/lib/elur/index.d.ts +19 -0
  49. package/dist/lib/elur/lifecycle.cjs +2 -0
  50. package/dist/lib/elur/lifecycle.cjs.map +1 -0
  51. package/dist/lib/elur/lifecycle.d.cts +45 -0
  52. package/dist/lib/elur/lifecycle.d.ts +45 -0
  53. package/dist/lib/elur/lifecycle.js +39 -0
  54. package/dist/lib/elur/lifecycle.js.map +1 -0
  55. package/dist/lib/elur/plugins.cjs +2 -0
  56. package/dist/lib/elur/plugins.cjs.map +1 -0
  57. package/dist/lib/elur/plugins.d.cts +48 -0
  58. package/dist/lib/elur/plugins.d.ts +48 -0
  59. package/dist/lib/elur/plugins.js +59 -0
  60. package/dist/lib/elur/plugins.js.map +1 -0
  61. package/dist/lib/elur/reactivity.cjs +2 -0
  62. package/dist/lib/elur/reactivity.cjs.map +1 -0
  63. package/dist/lib/elur/reactivity.d.cts +60 -0
  64. package/dist/lib/elur/reactivity.d.ts +60 -0
  65. package/dist/lib/elur/reactivity.js +188 -0
  66. package/dist/lib/elur/reactivity.js.map +1 -0
  67. package/dist/lib/elur/router.cjs +12 -0
  68. package/dist/lib/elur/router.cjs.map +1 -0
  69. package/dist/lib/elur/router.d.cts +137 -0
  70. package/dist/lib/elur/router.d.ts +137 -0
  71. package/dist/lib/elur/router.js +513 -0
  72. package/dist/lib/elur/router.js.map +1 -0
  73. package/dist/lib/elur/server/index.cjs +2 -0
  74. package/dist/lib/elur/server/index.cjs.map +1 -0
  75. package/dist/lib/elur/server/index.d.cts +44 -0
  76. package/dist/lib/elur/server/index.d.ts +44 -0
  77. package/dist/lib/elur/server/index.js +307 -0
  78. package/dist/lib/elur/server/index.js.map +1 -0
  79. package/dist/lib/elur/store.cjs +2 -0
  80. package/dist/lib/elur/store.cjs.map +1 -0
  81. package/dist/lib/elur/store.d.cts +137 -0
  82. package/dist/lib/elur/store.d.ts +137 -0
  83. package/dist/lib/elur/store.js +143 -0
  84. package/dist/lib/elur/store.js.map +1 -0
  85. package/dist/lib/elur/template/bindings.cjs +2 -0
  86. package/dist/lib/elur/template/bindings.cjs.map +1 -0
  87. package/dist/lib/elur/template/bindings.d.cts +40 -0
  88. package/dist/lib/elur/template/bindings.d.ts +40 -0
  89. package/dist/lib/elur/template/bindings.js +214 -0
  90. package/dist/lib/elur/template/bindings.js.map +1 -0
  91. package/dist/lib/elur/template/dom-write.cjs +2 -0
  92. package/dist/lib/elur/template/dom-write.cjs.map +1 -0
  93. package/dist/lib/elur/template/dom-write.d.cts +5 -0
  94. package/dist/lib/elur/template/dom-write.d.ts +5 -0
  95. package/dist/lib/elur/template/dom-write.js +16 -0
  96. package/dist/lib/elur/template/dom-write.js.map +1 -0
  97. package/dist/lib/elur/template/error-boundary.cjs +2 -0
  98. package/dist/lib/elur/template/error-boundary.cjs.map +1 -0
  99. package/dist/lib/elur/template/error-boundary.d.cts +7 -0
  100. package/dist/lib/elur/template/error-boundary.d.ts +7 -0
  101. package/dist/lib/elur/template/error-boundary.js +90 -0
  102. package/dist/lib/elur/template/error-boundary.js.map +1 -0
  103. package/dist/lib/elur/template/html.cjs +2 -0
  104. package/dist/lib/elur/template/html.cjs.map +1 -0
  105. package/dist/lib/elur/template/html.d.cts +8 -0
  106. package/dist/lib/elur/template/html.d.ts +8 -0
  107. package/dist/lib/elur/template/html.js +104 -0
  108. package/dist/lib/elur/template/html.js.map +1 -0
  109. package/dist/lib/elur/template/index.cjs +1 -0
  110. package/dist/lib/elur/template/index.d.cts +15 -0
  111. package/dist/lib/elur/template/index.d.ts +15 -0
  112. package/dist/lib/elur/template/index.js +13 -0
  113. package/dist/lib/elur/template/keyed-diff.cjs +2 -0
  114. package/dist/lib/elur/template/keyed-diff.cjs.map +1 -0
  115. package/dist/lib/elur/template/keyed-diff.d.cts +32 -0
  116. package/dist/lib/elur/template/keyed-diff.d.ts +32 -0
  117. package/dist/lib/elur/template/keyed-diff.js +100 -0
  118. package/dist/lib/elur/template/keyed-diff.js.map +1 -0
  119. package/dist/lib/elur/template/keyed.cjs +2 -0
  120. package/dist/lib/elur/template/keyed.cjs.map +1 -0
  121. package/dist/lib/elur/template/keyed.d.cts +27 -0
  122. package/dist/lib/elur/template/keyed.d.ts +27 -0
  123. package/dist/lib/elur/template/keyed.js +52 -0
  124. package/dist/lib/elur/template/keyed.js.map +1 -0
  125. package/dist/lib/elur/template/mount-helpers.cjs +2 -0
  126. package/dist/lib/elur/template/mount-helpers.cjs.map +1 -0
  127. package/dist/lib/elur/template/mount-helpers.d.cts +29 -0
  128. package/dist/lib/elur/template/mount-helpers.d.ts +29 -0
  129. package/dist/lib/elur/template/mount-helpers.js +132 -0
  130. package/dist/lib/elur/template/mount-helpers.js.map +1 -0
  131. package/dist/lib/elur/template/node-binding.cjs +2 -0
  132. package/dist/lib/elur/template/node-binding.cjs.map +1 -0
  133. package/dist/lib/elur/template/node-binding.d.cts +6 -0
  134. package/dist/lib/elur/template/node-binding.d.ts +6 -0
  135. package/dist/lib/elur/template/node-binding.js +95 -0
  136. package/dist/lib/elur/template/node-binding.js.map +1 -0
  137. package/dist/lib/elur/template/portal.cjs +2 -0
  138. package/dist/lib/elur/template/portal.cjs.map +1 -0
  139. package/dist/lib/elur/template/portal.d.cts +19 -0
  140. package/dist/lib/elur/template/portal.d.ts +19 -0
  141. package/dist/lib/elur/template/portal.js +49 -0
  142. package/dist/lib/elur/template/portal.js.map +1 -0
  143. package/dist/lib/elur/template/raw.cjs +2 -0
  144. package/dist/lib/elur/template/raw.cjs.map +1 -0
  145. package/dist/lib/elur/template/raw.d.cts +9 -0
  146. package/dist/lib/elur/template/raw.d.ts +9 -0
  147. package/dist/lib/elur/template/raw.js +29 -0
  148. package/dist/lib/elur/template/raw.js.map +1 -0
  149. package/dist/lib/elur/template/sanitize.cjs +2 -0
  150. package/dist/lib/elur/template/sanitize.cjs.map +1 -0
  151. package/dist/lib/elur/template/sanitize.d.cts +16 -0
  152. package/dist/lib/elur/template/sanitize.d.ts +16 -0
  153. package/dist/lib/elur/template/sanitize.js +29 -0
  154. package/dist/lib/elur/template/sanitize.js.map +1 -0
  155. package/dist/lib/elur/template/transitions.cjs +2 -0
  156. package/dist/lib/elur/template/transitions.cjs.map +1 -0
  157. package/dist/lib/elur/template/transitions.d.cts +43 -0
  158. package/dist/lib/elur/template/transitions.d.ts +43 -0
  159. package/dist/lib/elur/template/transitions.js +96 -0
  160. package/dist/lib/elur/template/transitions.js.map +1 -0
  161. package/dist/lib/elur/template/types.cjs +2 -0
  162. package/dist/lib/elur/template/types.cjs.map +1 -0
  163. package/dist/lib/elur/template/types.d.cts +114 -0
  164. package/dist/lib/elur/template/types.d.ts +114 -0
  165. package/dist/lib/elur/template/types.js +23 -0
  166. package/dist/lib/elur/template/types.js.map +1 -0
  167. package/dist/lib/elur.cjs +1 -0
  168. package/dist/lib/elur.js +18 -0
  169. package/dist/lib/form.cjs +2 -0
  170. package/dist/lib/form.js +315 -0
  171. package/dist/lib/hydrate.cjs +2 -0
  172. package/dist/lib/hydrate.js +410 -0
  173. package/dist/lib/index.cjs +1 -0
  174. package/dist/lib/index.d.cts +2 -0
  175. package/dist/lib/index.d.ts +2 -0
  176. package/dist/lib/index.js +18 -0
  177. package/dist/lib/lifecycle.cjs +2 -0
  178. package/dist/lib/lifecycle.js +39 -0
  179. package/dist/lib/plugins.cjs +2 -0
  180. package/dist/lib/plugins.js +59 -0
  181. package/dist/lib/router.cjs +12 -0
  182. package/dist/lib/router.js +513 -0
  183. package/dist/lib/server.cjs +2 -0
  184. package/dist/lib/server.js +307 -0
  185. package/dist/lib/signals.cjs +2 -0
  186. package/dist/lib/signals.js +188 -0
  187. package/dist/lib/store.cjs +2 -0
  188. package/dist/lib/store.js +143 -0
  189. package/dist/lib/template.cjs +1 -0
  190. package/dist/lib/template.js +13 -0
  191. package/package.json +216 -0
@@ -0,0 +1,307 @@
1
+ import { ELUR_RENDER_PROTOCOL as e, ELUR_TEMPLATE_DESCRIPTOR as t, isElurTemplate as n, isKeyedList as r } from "./elur/template/types.js";
2
+ import { isElurComponent as i } from "./lifecycle.js";
3
+ import { _popComponentContext as a, _pushComponentContext as o, _setContextScopeResolver as s } from "./context.js";
4
+ import { normalizeRepeatKey as c, serializeRepeatKey as l } from "./elur/template/keyed.js";
5
+ import { sanitizeUrl as u } from "./elur/template/sanitize.js";
6
+ import { AsyncLocalStorage as d } from "node:async_hooks";
7
+ //#region src/elur/server/index.ts
8
+ var f = n, p = r, m = new d();
9
+ s(() => m.getStore());
10
+ function h(e = {}) {
11
+ let t = new AbortController(), n = {
12
+ markers: e.markers === "hydration",
13
+ context: e.context,
14
+ onError: e.onError
15
+ }, r = (e) => Promise.resolve(m.run([], e));
16
+ return {
17
+ signal: t.signal,
18
+ async render(e, i) {
19
+ let a = {
20
+ ...n,
21
+ markers: i?.markers ?? n.markers,
22
+ signal: t.signal
23
+ }, o = "";
24
+ return await r(() => (async () => {
25
+ for await (let t of y(e, a)) o += t.value;
26
+ })()), o;
27
+ },
28
+ renderToChunks(e, r) {
29
+ return g(e, {
30
+ ...n,
31
+ markers: r?.markers ?? n.markers,
32
+ signal: t.signal
33
+ });
34
+ },
35
+ abort(e) {
36
+ t.abort(e);
37
+ }
38
+ };
39
+ }
40
+ function g(e, t) {
41
+ return { async *[Symbol.asyncIterator]() {
42
+ let n = [], r = [], i = !1, a, o = () => {
43
+ r.shift()?.();
44
+ }, s = m.run([], async () => {
45
+ try {
46
+ for await (let r of y(e, t)) n.push(r), o();
47
+ } catch (e) {
48
+ a = e;
49
+ } finally {
50
+ i = !0, o();
51
+ }
52
+ });
53
+ for (;;) {
54
+ for (; n.length === 0 && !i;) await new Promise((e) => r.push(e));
55
+ if (n.length === 0) break;
56
+ let e = n.shift();
57
+ e && (yield e);
58
+ }
59
+ if (a) throw a;
60
+ yield {
61
+ type: "done",
62
+ value: "",
63
+ index: -1
64
+ }, await s;
65
+ } };
66
+ }
67
+ async function _(e, t = {}) {
68
+ let n = {
69
+ markers: t.markers === "hydration",
70
+ signal: t.signal,
71
+ context: t.context,
72
+ onError: t.onError
73
+ }, r = "";
74
+ return await Promise.resolve(m.run([], async () => {
75
+ for await (let t of y(e, n)) r += t.value;
76
+ })), r;
77
+ }
78
+ function v(e, t = {}) {
79
+ return g(e, {
80
+ markers: t.markers === "hydration",
81
+ signal: t.signal,
82
+ context: t.context,
83
+ onError: t.onError
84
+ });
85
+ }
86
+ async function* y(n, r) {
87
+ if (C(r), n instanceof Promise) {
88
+ yield* y(await n, r);
89
+ return;
90
+ }
91
+ if (!(n == null || n === !1 || n === !0)) {
92
+ if (typeof n == "string" || typeof n == "number" || typeof n == "bigint") {
93
+ yield {
94
+ type: "markup",
95
+ value: E(String(n)),
96
+ index: -1
97
+ };
98
+ return;
99
+ }
100
+ if (Array.isArray(n)) {
101
+ let e = await Promise.all(n.map((e) => w(e)));
102
+ C(r);
103
+ for (let t of e) r.markers && (yield {
104
+ type: "markup",
105
+ value: "<!--elur-ai-->",
106
+ index: -1
107
+ }), yield* y(t, r), r.markers && (yield {
108
+ type: "markup",
109
+ value: "<!--elur-aiend-->",
110
+ index: -1
111
+ });
112
+ return;
113
+ }
114
+ if ((typeof n == "object" || typeof n == "function") && n !== null) {
115
+ let t = n[e];
116
+ if (t?.renderServer) {
117
+ let e = await t.renderServer({
118
+ markers: r.markers,
119
+ signal: r.signal,
120
+ context: r.context,
121
+ render: (e, t) => S(e, {
122
+ ...r,
123
+ markers: t?.markers ?? r.markers
124
+ })
125
+ });
126
+ C(r), yield {
127
+ type: "markup",
128
+ value: e,
129
+ index: -1
130
+ };
131
+ return;
132
+ }
133
+ }
134
+ if (i(n)) {
135
+ yield* b(n, r);
136
+ return;
137
+ }
138
+ if (p(n)) {
139
+ if (!r.markers) {
140
+ yield {
141
+ type: "markup",
142
+ value: (await Promise.all(n.items.map((e, t) => S(n.renderFn(e, t), r)))).join(""),
143
+ index: -1
144
+ };
145
+ return;
146
+ }
147
+ let e = /* @__PURE__ */ new Set();
148
+ for (let t = 0; t < n.items.length; t++) {
149
+ let i = n.items[t], a = c(n.keyFn(i, t), t), o = l(a);
150
+ e.has(o) && console.warn(`[elur] repeat(): duplicate key "${a}" during server render. Keys must be unique; entries after the first will leak during hydration.`), e.add(o), yield {
151
+ type: "markup",
152
+ value: `<!--elur-ki:${o}-->`,
153
+ index: -1
154
+ }, yield* y(n.renderFn(i, t), r), yield {
155
+ type: "markup",
156
+ value: "<!--elur-ke-->",
157
+ index: -1
158
+ };
159
+ }
160
+ return;
161
+ }
162
+ if (f(n)) {
163
+ let e = n[t];
164
+ if (!e) throw TypeError("[elur] Template does not support server rendering");
165
+ yield* x(e, r);
166
+ return;
167
+ }
168
+ yield {
169
+ type: "markup",
170
+ value: E(String(n)),
171
+ index: -1
172
+ };
173
+ }
174
+ }
175
+ async function* b(e, t) {
176
+ o();
177
+ let n = {
178
+ index: -1,
179
+ context: "component",
180
+ cause: void 0,
181
+ component: e._debugName
182
+ };
183
+ try {
184
+ try {
185
+ e.onInit?.(), e.onServerRender?.();
186
+ } catch (t) {
187
+ if (e.onError) e.onError(t);
188
+ else throw t;
189
+ }
190
+ try {
191
+ yield* y(e.render(), t);
192
+ } catch (t) {
193
+ if (e.onError) {
194
+ e.onError(t);
195
+ return;
196
+ }
197
+ throw t;
198
+ }
199
+ } catch (e) {
200
+ throw t.onError?.(e, {
201
+ ...n,
202
+ cause: e
203
+ }), e;
204
+ } finally {
205
+ a();
206
+ }
207
+ }
208
+ async function* x(e, t) {
209
+ let n = new Uint8Array(e.strings.length);
210
+ for (let r = 0; r < e.strings.length; r++) {
211
+ if (t.signal?.aborted) throw t.signal.reason ?? new DOMException("Render aborted", "AbortError");
212
+ let i = e.strings[r];
213
+ if (n[r] === 1 && (i[0] === "\"" || i[0] === "'") && (i = i.slice(1)), r >= e.contexts.length) {
214
+ yield {
215
+ type: "markup",
216
+ value: i,
217
+ index: r
218
+ };
219
+ continue;
220
+ }
221
+ let a = e.contexts[r], o = e.values[r];
222
+ if (a.type === "node") {
223
+ yield {
224
+ type: "markup",
225
+ value: i,
226
+ index: r
227
+ }, t.markers && (yield {
228
+ type: "boundary-start",
229
+ value: `<!--elur-${r}-->`,
230
+ index: r
231
+ });
232
+ try {
233
+ let e = await w(o);
234
+ C(t), yield* y(e, t);
235
+ } catch (e) {
236
+ throw t.onError?.(e, {
237
+ index: r,
238
+ context: "node",
239
+ cause: e
240
+ }), e;
241
+ }
242
+ t.markers && (yield {
243
+ type: "boundary-end",
244
+ value: `<!--elur-end-${r}-->`,
245
+ index: r
246
+ });
247
+ continue;
248
+ }
249
+ let s = T(a), c = i.slice(0, -s);
250
+ if (a.hadOpenQuote && (n[r + 1] = 1), a.type === "event") {
251
+ t.markers ? yield {
252
+ type: "markup",
253
+ value: `${c}${/\s$/.test(c) ? "" : " "}data-elur-e-${r}="${D(a.eventName)}"`,
254
+ index: r
255
+ } : yield {
256
+ type: "markup",
257
+ value: c.replace(/\s+$/, ""),
258
+ index: r
259
+ };
260
+ continue;
261
+ }
262
+ yield {
263
+ type: "markup",
264
+ value: c,
265
+ index: r
266
+ };
267
+ let l = await w(o);
268
+ if (C(t), a.attrName !== "ref" && l != null && l !== !1) {
269
+ let e = a.url ? u(String(l)) : String(l);
270
+ yield {
271
+ type: "markup",
272
+ value: `${/\s$/.test(c) ? "" : " "}${a.attrName}="${D(e)}"`,
273
+ index: r
274
+ };
275
+ }
276
+ t.markers && (yield {
277
+ type: "markup",
278
+ value: ` data-elur-a-${r}="${D(a.attrName)}"`,
279
+ index: r
280
+ });
281
+ }
282
+ }
283
+ async function S(e, t) {
284
+ let n = "";
285
+ for await (let r of y(e, t)) n += r.value;
286
+ return n;
287
+ }
288
+ function C(e) {
289
+ if (e.signal?.aborted) throw e.signal.reason ?? new DOMException("Render aborted", "AbortError");
290
+ }
291
+ async function w(e) {
292
+ let t = typeof e == "function" ? e() : e;
293
+ return t instanceof Promise ? await t : t;
294
+ }
295
+ function T(e) {
296
+ return e.type === "event" ? `@${e.modifiers.length ? `${e.eventName}.${e.modifiers.join(".")}` : e.eventName}=`.length + +!!e.hadOpenQuote : `${e.attrName}=`.length + +!!e.hadOpenQuote;
297
+ }
298
+ function E(e) {
299
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
300
+ }
301
+ function D(e) {
302
+ return E(e).replace(/"/g, "&quot;");
303
+ }
304
+ //#endregion
305
+ export { h as createServerRenderScope, v as renderToChunks, _ as renderToString };
306
+
307
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){return{ctxPool:[],ctxStack:[],activeEffect:null,activeDeps:null,activeErrorHandler:null,errorHandlerStack:[],batchLevel:0,pendingEffectsSet:new Set,pendingEffectsArr:[],effectDepth:0,notifyBuf:[],notifyBase:0,signalDebugHooks:null}}var t=Symbol.for(`elur/reactivity-state`),n=globalThis,r=(()=>{let r=n[t];if(r)return r;let i=e();return n[t]=i,i})();function i(e){r.errorHandlerStack.push(r.activeErrorHandler),r.activeErrorHandler=e}function a(){r.activeErrorHandler=r.errorHandlerStack.pop()??null}var o=100,s=64,c=16,l=32;function u(e){r.signalDebugHooks=e}function d(){return r.notifyBuf.length}var f=class{_value;_subs=new Set;constructor(e){this._value=e,r.signalDebugHooks?.onCreate?.(this,e)}get value(){return r.activeEffect&&(this._subs.add(r.activeEffect),r.activeDeps?.add(this)),this._value}set value(e){Object.is(this._value,e)||(this._value=e,r.signalDebugHooks?.onWrite?.(this,e),this._notify())}update(e){this.value=e(this._value)}peek(){return this._value}_removeSub(e){this._subs.delete(e)}_notify(){if(r.batchLevel>0){for(let e of this._subs)r.pendingEffectsSet.has(e)||(r.pendingEffectsSet.add(e),r.pendingEffectsArr.push(e));return}let e=r.notifyBase,t=0;for(let n of this._subs)r.notifyBuf[e+ t++]=n;r.notifyBase=e+t;try{for(let n=0;n<t;n++){let t=r.notifyBuf[e+n];r.notifyBuf[e+n]=null,t?.()}}finally{r.notifyBase=e,e===0&&r.notifyBuf.length>s&&t<c&&(r.notifyBuf.length=l)}}dispose(){this._subs.clear()}};function p(e){return new f(e)}function m(e){let t=!1,n,i=new Set,a=new Set,s=r.activeErrorHandler,c=()=>{if(t)return;typeof n==`function`&&n();let l=i;i=a,a=l,a.clear();let u=r.ctxPool.length>0?r.ctxPool.pop():{effect:null,deps:null};if(u.effect=r.activeEffect,u.deps=r.activeDeps,r.ctxStack.push(u),r.activeEffect=c,r.activeDeps=a,r.effectDepth++,r.effectDepth>o){r.effectDepth=0;let e=r.ctxStack.pop();throw r.activeEffect=e.effect,r.activeDeps=e.deps,e.effect=null,e.deps=null,r.ctxPool.push(e),Error(`[elur] Maximum effect re-execution depth exceeded (possible infinite loop).`)}try{n=e()}catch(e){if(s)s(e);else throw e}finally{r.effectDepth--;let e=r.ctxStack.pop();r.activeEffect=e.effect,r.activeDeps=e.deps,e.effect=null,e.deps=null,r.ctxPool.push(e);for(let e of i)a.has(e)||e._removeSub(c)}};return c(),()=>{t=!0,typeof n==`function`&&n();for(let e of a)e._removeSub(c);a.clear(),i.clear()}}var h=Symbol(`elur-computed-uninitialized`);function g(e,t=Object.is){let n=new f(h),r=null,i=!1,a=!1,o=()=>{i||a||(i=!0,v(()=>{r=m(()=>{let r=e(),i=n.peek();(i===h||!t(r,i))&&(n.value=r)})}))},s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n),`value`);if(!s?.get||!s?.set)throw Error(`[elur] Internal error: Signal.value descriptor not found.`);Object.defineProperty(n,`value`,{get(){return o(),s.get.call(this)},set(e){s.set.call(this,e)},configurable:!0});let c=n.dispose;return n.dispose=()=>{a=!0,r?.(),r=null,c.call(n)},n}function _(e){r.batchLevel++;try{e()}finally{if(r.batchLevel--,r.batchLevel===0&&r.pendingEffectsArr.length>0){let e=r.pendingEffectsArr.length;for(let t=0;t<e;t++)r.pendingEffectsArr[t]();r.pendingEffectsArr.length=0,r.pendingEffectsSet.clear()}}}function v(e){let t=r.activeEffect,n=r.activeDeps;r.activeEffect=null,r.activeDeps=null;try{return e()}finally{r.activeEffect=t,r.activeDeps=n}}function y(e,t,n={}){let{immediate:r=!1,once:i=!1}=n,a=e instanceof f?()=>e.value:e,o,s=!0,c=!1,l=m(()=>{let e=a();if(s){if(s=!1,r&&!c){let n=e;v(()=>t(n,void 0)),i&&(c=!0,Promise.resolve().then(l))}o=e;return}if(!c){let n=e,r=o;o=e,v(()=>t(n,r)),i&&(c=!0,Promise.resolve().then(l))}});return()=>{c=!0,l()}}function b(e){return e?Promise.resolve().then(e):Promise.resolve()}exports.Signal=f,exports._getNotifyBufSize=d,exports._popErrorHandler=a,exports._pushErrorHandler=i,exports._setSignalDebugHooks=u,exports.batch=_,exports.computed=g,exports.effect=m,exports.nextTick=b,exports.signal=p,exports.untrack=v,exports.watch=y;
2
+ //# sourceMappingURL=signals.cjs.map
@@ -0,0 +1,188 @@
1
+ //#region src/elur/reactivity.ts
2
+ function e() {
3
+ return {
4
+ ctxPool: [],
5
+ ctxStack: [],
6
+ activeEffect: null,
7
+ activeDeps: null,
8
+ activeErrorHandler: null,
9
+ errorHandlerStack: [],
10
+ batchLevel: 0,
11
+ pendingEffectsSet: /* @__PURE__ */ new Set(),
12
+ pendingEffectsArr: [],
13
+ effectDepth: 0,
14
+ notifyBuf: [],
15
+ notifyBase: 0,
16
+ signalDebugHooks: null
17
+ };
18
+ }
19
+ var t = Symbol.for("elur/reactivity-state"), n = globalThis, r = (() => {
20
+ let r = n[t];
21
+ if (r) return r;
22
+ let i = e();
23
+ return n[t] = i, i;
24
+ })();
25
+ function i(e) {
26
+ r.errorHandlerStack.push(r.activeErrorHandler), r.activeErrorHandler = e;
27
+ }
28
+ function a() {
29
+ r.activeErrorHandler = r.errorHandlerStack.pop() ?? null;
30
+ }
31
+ var o = 100, s = 64, c = 16, l = 32;
32
+ function u(e) {
33
+ r.signalDebugHooks = e;
34
+ }
35
+ function d() {
36
+ return r.notifyBuf.length;
37
+ }
38
+ var f = class {
39
+ _value;
40
+ _subs = /* @__PURE__ */ new Set();
41
+ constructor(e) {
42
+ this._value = e, r.signalDebugHooks?.onCreate?.(this, e);
43
+ }
44
+ get value() {
45
+ return r.activeEffect && (this._subs.add(r.activeEffect), r.activeDeps?.add(this)), this._value;
46
+ }
47
+ set value(e) {
48
+ Object.is(this._value, e) || (this._value = e, r.signalDebugHooks?.onWrite?.(this, e), this._notify());
49
+ }
50
+ update(e) {
51
+ this.value = e(this._value);
52
+ }
53
+ peek() {
54
+ return this._value;
55
+ }
56
+ _removeSub(e) {
57
+ this._subs.delete(e);
58
+ }
59
+ _notify() {
60
+ if (r.batchLevel > 0) {
61
+ for (let e of this._subs) r.pendingEffectsSet.has(e) || (r.pendingEffectsSet.add(e), r.pendingEffectsArr.push(e));
62
+ return;
63
+ }
64
+ let e = r.notifyBase, t = 0;
65
+ for (let n of this._subs) r.notifyBuf[e + t++] = n;
66
+ r.notifyBase = e + t;
67
+ try {
68
+ for (let n = 0; n < t; n++) {
69
+ let t = r.notifyBuf[e + n];
70
+ r.notifyBuf[e + n] = null, t?.();
71
+ }
72
+ } finally {
73
+ r.notifyBase = e, e === 0 && r.notifyBuf.length > s && t < c && (r.notifyBuf.length = l);
74
+ }
75
+ }
76
+ dispose() {
77
+ this._subs.clear();
78
+ }
79
+ };
80
+ function p(e) {
81
+ return new f(e);
82
+ }
83
+ function m(e) {
84
+ let t = !1, n, i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), s = r.activeErrorHandler, c = () => {
85
+ if (t) return;
86
+ typeof n == "function" && n();
87
+ let l = i;
88
+ i = a, a = l, a.clear();
89
+ let u = r.ctxPool.length > 0 ? r.ctxPool.pop() : {
90
+ effect: null,
91
+ deps: null
92
+ };
93
+ if (u.effect = r.activeEffect, u.deps = r.activeDeps, r.ctxStack.push(u), r.activeEffect = c, r.activeDeps = a, r.effectDepth++, r.effectDepth > o) {
94
+ r.effectDepth = 0;
95
+ let e = r.ctxStack.pop();
96
+ throw r.activeEffect = e.effect, r.activeDeps = e.deps, e.effect = null, e.deps = null, r.ctxPool.push(e), Error("[elur] Maximum effect re-execution depth exceeded (possible infinite loop).");
97
+ }
98
+ try {
99
+ n = e();
100
+ } catch (e) {
101
+ if (s) s(e);
102
+ else throw e;
103
+ } finally {
104
+ r.effectDepth--;
105
+ let e = r.ctxStack.pop();
106
+ r.activeEffect = e.effect, r.activeDeps = e.deps, e.effect = null, e.deps = null, r.ctxPool.push(e);
107
+ for (let e of i) a.has(e) || e._removeSub(c);
108
+ }
109
+ };
110
+ return c(), () => {
111
+ t = !0, typeof n == "function" && n();
112
+ for (let e of a) e._removeSub(c);
113
+ a.clear(), i.clear();
114
+ };
115
+ }
116
+ var h = Symbol("elur-computed-uninitialized");
117
+ function g(e, t = Object.is) {
118
+ let n = new f(h), r = null, i = !1, a = !1, o = () => {
119
+ i || a || (i = !0, v(() => {
120
+ r = m(() => {
121
+ let r = e(), i = n.peek();
122
+ (i === h || !t(r, i)) && (n.value = r);
123
+ });
124
+ }));
125
+ }, s = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n), "value");
126
+ if (!s?.get || !s?.set) throw Error("[elur] Internal error: Signal.value descriptor not found.");
127
+ Object.defineProperty(n, "value", {
128
+ get() {
129
+ return o(), s.get.call(this);
130
+ },
131
+ set(e) {
132
+ s.set.call(this, e);
133
+ },
134
+ configurable: !0
135
+ });
136
+ let c = n.dispose;
137
+ return n.dispose = () => {
138
+ a = !0, r?.(), r = null, c.call(n);
139
+ }, n;
140
+ }
141
+ function _(e) {
142
+ r.batchLevel++;
143
+ try {
144
+ e();
145
+ } finally {
146
+ if (r.batchLevel--, r.batchLevel === 0 && r.pendingEffectsArr.length > 0) {
147
+ let e = r.pendingEffectsArr.length;
148
+ for (let t = 0; t < e; t++) r.pendingEffectsArr[t]();
149
+ r.pendingEffectsArr.length = 0, r.pendingEffectsSet.clear();
150
+ }
151
+ }
152
+ }
153
+ function v(e) {
154
+ let t = r.activeEffect, n = r.activeDeps;
155
+ r.activeEffect = null, r.activeDeps = null;
156
+ try {
157
+ return e();
158
+ } finally {
159
+ r.activeEffect = t, r.activeDeps = n;
160
+ }
161
+ }
162
+ function y(e, t, n = {}) {
163
+ let { immediate: r = !1, once: i = !1 } = n, a = e instanceof f ? () => e.value : e, o, s = !0, c = !1, l = m(() => {
164
+ let e = a();
165
+ if (s) {
166
+ if (s = !1, r && !c) {
167
+ let n = e;
168
+ v(() => t(n, void 0)), i && (c = !0, Promise.resolve().then(l));
169
+ }
170
+ o = e;
171
+ return;
172
+ }
173
+ if (!c) {
174
+ let n = e, r = o;
175
+ o = e, v(() => t(n, r)), i && (c = !0, Promise.resolve().then(l));
176
+ }
177
+ });
178
+ return () => {
179
+ c = !0, l();
180
+ };
181
+ }
182
+ function b(e) {
183
+ return e ? Promise.resolve().then(e) : Promise.resolve();
184
+ }
185
+ //#endregion
186
+ export { f as Signal, d as _getNotifyBufSize, a as _popErrorHandler, i as _pushErrorHandler, u as _setSignalDebugHooks, _ as batch, g as computed, m as effect, b as nextTick, p as signal, v as untrack, y as watch };
187
+
188
+ //# sourceMappingURL=signals.js.map
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./signals.cjs`);var t=class extends e.Signal{label;constructor(e,t=`ReadonlySignal`){super(e.peek()),this.label=t,Object.defineProperty(this,`value`,{get:()=>e.value,set:()=>{throw Error(`[elur] "${this.label}" is read-only.`)},configurable:!1}),this.update=()=>{throw Error(`[elur] "${this.label}" is read-only.`)},this.dispose=()=>{throw Error(`[elur] Cannot dispose "${this.label}" directly.`)}}},n=new Set([`$id`,`$state`,`$stateSignal`,`$snapshot`,`$reset`,`$patch`,`$watch`,`$dispose`]);function r(e){if(e===`__proto__`||e===`constructor`||e===`prototype`)throw Error(`[elur] Store key "${e}" is not allowed for security reasons.`);if(n.has(e))throw Error(`[elur] Store key "${e}" is reserved.`)}function i(e,t){return n.has(e)?(console.warn(`[elur] Store ${t} "${e}" is reserved and will be ignored.`),!1):!0}function a(e,n){return new t(e,n)}function o(t,o){let{name:s=`store`,actions:c,getters:l,plugins:u=[],serialize:d}=o??{},f=Object.keys(t),p={};for(let n of f)r(n),p[n]=e.signal(t[n]);let m=p,h=e.computed(()=>{let e={};for(let t of f)e[t]=p[t].value;return e}),g=a(h,`store "${s}".$stateSignal`),_;try{_=d?d(t):structuredClone(t)}catch(e){throw Error(`[elur] Store "${s}" initialState contains non-serializable data (functions, DOM nodes, Symbols, or WeakRefs). Provide a custom \`serialize\` option or remove these before creating the store. Original error: ${e}`)}let v=[];function y(){let t=x();for(let e of v)e(t,t);e.batch(()=>{for(let e of f)p[e].value=_[e]})}function b(t){let n=t,r=x();for(let e of v){let t=e(n,r);t!==void 0&&(n=t)}e.batch(()=>{for(let e of Object.keys(n))Object.prototype.hasOwnProperty.call(p,e)&&(p[e].value=n[e])})}function x(){let e={};for(let t of f)e[t]=p[t].peek();return e}function S(t,n){return e.watch(h,t,n)}let C=Object.assign(Object.create(null),m,{$reset:y,$patch:b,$watch:S,$snapshot:x});Object.defineProperty(C,`$id`,{value:s,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(C,`$state`,{get(){return h.value},enumerable:!0,configurable:!1}),Object.defineProperty(C,`$stateSignal`,{value:g,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(C,`_guardFns`,{value:v,writable:!1,enumerable:!1,configurable:!1});let w=new Set([...f,...Array.from(n)]);if(c){let e=c(m);for(let t of Object.keys(e))if(i(t,`action`)){if(w.has(t)){console.warn(`[elur] Store "${s}": action "${t}" collides with an existing signal or getter and will be ignored.`);continue}w.add(t),C[t]=e[t]}}if(l){let t=l(m);for(let n of Object.keys(t)){if(!i(n,`getter`))continue;if(w.has(n)){console.warn(`[elur] Store "${s}": getter "${n}" collides with an existing signal or action and will be ignored.`);continue}let r=t[n];if(!(r instanceof e.Signal))throw TypeError(`[elur] Store "${s}": getter "${n}" must return a Signal (wrap it with computed()). Got: ${typeof r}`);w.add(n),C[n]=a(r,`getter "${n}" in store "${s}"`)}}let T=[()=>h.dispose()];for(let e of u)try{let t=e(C);typeof t==`function`&&T.push(t)}catch(e){console.error(`[elur] Plugin initialization failed for store "${s}":`,e)}return C.$dispose=()=>{for(let e of T)e()},C}exports.ReadonlySignal=t,exports.createStore=o;
2
+ //# sourceMappingURL=store.cjs.map
@@ -0,0 +1,143 @@
1
+ import { Signal as e, batch as t, computed as n, signal as r, watch as i } from "./signals.js";
2
+ //#region src/elur/store.ts
3
+ var a = class extends e {
4
+ label;
5
+ constructor(e, t = "ReadonlySignal") {
6
+ super(e.peek()), this.label = t, Object.defineProperty(this, "value", {
7
+ get: () => e.value,
8
+ set: () => {
9
+ throw Error(`[elur] "${this.label}" is read-only.`);
10
+ },
11
+ configurable: !1
12
+ }), this.update = () => {
13
+ throw Error(`[elur] "${this.label}" is read-only.`);
14
+ }, this.dispose = () => {
15
+ throw Error(`[elur] Cannot dispose "${this.label}" directly.`);
16
+ };
17
+ }
18
+ }, o = new Set([
19
+ "$id",
20
+ "$state",
21
+ "$stateSignal",
22
+ "$snapshot",
23
+ "$reset",
24
+ "$patch",
25
+ "$watch",
26
+ "$dispose"
27
+ ]);
28
+ function s(e) {
29
+ if (e === "__proto__" || e === "constructor" || e === "prototype") throw Error(`[elur] Store key "${e}" is not allowed for security reasons.`);
30
+ if (o.has(e)) throw Error(`[elur] Store key "${e}" is reserved.`);
31
+ }
32
+ function c(e, t) {
33
+ return o.has(e) ? (console.warn(`[elur] Store ${t} "${e}" is reserved and will be ignored.`), !1) : !0;
34
+ }
35
+ function l(e, t) {
36
+ return new a(e, t);
37
+ }
38
+ function u(a, u) {
39
+ let { name: d = "store", actions: f, getters: p, plugins: m = [], serialize: h } = u ?? {}, g = Object.keys(a), _ = {};
40
+ for (let e of g) s(e), _[e] = r(a[e]);
41
+ let v = _, y = n(() => {
42
+ let e = {};
43
+ for (let t of g) e[t] = _[t].value;
44
+ return e;
45
+ }), b = l(y, `store "${d}".$stateSignal`), x;
46
+ try {
47
+ x = h ? h(a) : structuredClone(a);
48
+ } catch (e) {
49
+ throw Error(`[elur] Store "${d}" initialState contains non-serializable data (functions, DOM nodes, Symbols, or WeakRefs). Provide a custom \`serialize\` option or remove these before creating the store. Original error: ${e}`);
50
+ }
51
+ let S = [];
52
+ function C() {
53
+ let e = T();
54
+ for (let t of S) t(e, e);
55
+ t(() => {
56
+ for (let e of g) _[e].value = x[e];
57
+ });
58
+ }
59
+ function w(e) {
60
+ let n = e, r = T();
61
+ for (let e of S) {
62
+ let t = e(n, r);
63
+ t !== void 0 && (n = t);
64
+ }
65
+ t(() => {
66
+ for (let e of Object.keys(n)) Object.prototype.hasOwnProperty.call(_, e) && (_[e].value = n[e]);
67
+ });
68
+ }
69
+ function T() {
70
+ let e = {};
71
+ for (let t of g) e[t] = _[t].peek();
72
+ return e;
73
+ }
74
+ function E(e, t) {
75
+ return i(y, e, t);
76
+ }
77
+ let D = Object.assign(Object.create(null), v, {
78
+ $reset: C,
79
+ $patch: w,
80
+ $watch: E,
81
+ $snapshot: T
82
+ });
83
+ Object.defineProperty(D, "$id", {
84
+ value: d,
85
+ writable: !1,
86
+ enumerable: !1,
87
+ configurable: !1
88
+ }), Object.defineProperty(D, "$state", {
89
+ get() {
90
+ return y.value;
91
+ },
92
+ enumerable: !0,
93
+ configurable: !1
94
+ }), Object.defineProperty(D, "$stateSignal", {
95
+ value: b,
96
+ writable: !1,
97
+ enumerable: !1,
98
+ configurable: !1
99
+ }), Object.defineProperty(D, "_guardFns", {
100
+ value: S,
101
+ writable: !1,
102
+ enumerable: !1,
103
+ configurable: !1
104
+ });
105
+ let O = new Set([...g, ...Array.from(o)]);
106
+ if (f) {
107
+ let e = f(v);
108
+ for (let t of Object.keys(e)) if (c(t, "action")) {
109
+ if (O.has(t)) {
110
+ console.warn(`[elur] Store "${d}": action "${t}" collides with an existing signal or getter and will be ignored.`);
111
+ continue;
112
+ }
113
+ O.add(t), D[t] = e[t];
114
+ }
115
+ }
116
+ if (p) {
117
+ let t = p(v);
118
+ for (let n of Object.keys(t)) {
119
+ if (!c(n, "getter")) continue;
120
+ if (O.has(n)) {
121
+ console.warn(`[elur] Store "${d}": getter "${n}" collides with an existing signal or action and will be ignored.`);
122
+ continue;
123
+ }
124
+ let r = t[n];
125
+ if (!(r instanceof e)) throw TypeError(`[elur] Store "${d}": getter "${n}" must return a Signal (wrap it with computed()). Got: ${typeof r}`);
126
+ O.add(n), D[n] = l(r, `getter "${n}" in store "${d}"`);
127
+ }
128
+ }
129
+ let k = [() => y.dispose()];
130
+ for (let e of m) try {
131
+ let t = e(D);
132
+ typeof t == "function" && k.push(t);
133
+ } catch (e) {
134
+ console.error(`[elur] Plugin initialization failed for store "${d}":`, e);
135
+ }
136
+ return D.$dispose = () => {
137
+ for (let e of k) e();
138
+ }, D;
139
+ }
140
+ //#endregion
141
+ export { a as ReadonlySignal, u as createStore };
142
+
143
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./elur/template/types.cjs`),t=require(`./elur/template/keyed.cjs`),n=require(`./elur/template/keyed-diff.cjs`),r=require(`./elur/template/dom-write.cjs`),i=require(`./elur/template/node-binding.cjs`),a=require(`./elur/template/sanitize.cjs`),o=require(`./elur/template/bindings.cjs`),s=require(`./elur/template/html.cjs`),c=require(`./elur/template/raw.cjs`),l=require(`./elur/template/transitions.cjs`),u=require(`./elur/template/portal.cjs`),d=require(`./elur/template/error-boundary.cjs`);exports.COMMENT=e.COMMENT,exports.ELUR_RENDER_PROTOCOL=e.ELUR_RENDER_PROTOCOL,exports.ELUR_TEMPLATE_DESCRIPTOR=e.ELUR_TEMPLATE_DESCRIPTOR,exports._activateBindingsWithNodes=o._activateBindingsWithNodes,exports._activateDelegatedEvent=o.activateDelegatedEvent,exports._activateNodeBinding=i.activateNodeBinding,exports._createKeyedMount=n.createKeyedMount,exports._ensureDelegatedEvent=o._ensureDelegatedEvent,exports._getKeyedSequence=t.getSequence,exports._queueDOMWrite=r.queueDOMWrite,exports._reconcileKeyedList=n.reconcileKeyedList,exports._setDelegatedEvent=o._setDelegatedEvent,exports.buildHTML=s.buildHTML,exports.createErrorBoundary=d.createErrorBoundary,exports.createPortalOutlet=u.createPortalOutlet,exports.html=s.html,exports.injectOutlet=u.injectOutlet,exports.isElurTemplate=e.isElurTemplate,exports.isExecutableAttrName=a.isExecutableAttrName,exports.isKeyedList=e.isKeyedList,exports.isUrlAttrName=a.isUrlAttrName,exports.portal=u.portal,exports.portalOutlet=u.portalOutlet,exports.provideOutlet=u.provideOutlet,exports.raw=c.raw,exports.ref=e.ref,exports.repeat=t.repeat,exports.sanitizeUrl=a.sanitizeUrl,exports.showWhen=o.showWhen,exports.templateFeatures=e.templateFeatures,exports.transition=l.transition;
@@ -0,0 +1,13 @@
1
+ import { COMMENT as e, ELUR_RENDER_PROTOCOL as t, ELUR_TEMPLATE_DESCRIPTOR as n, isElurTemplate as r, isKeyedList as i, ref as a, templateFeatures as o } from "./elur/template/types.js";
2
+ import { getSequence as s, repeat as c } from "./elur/template/keyed.js";
3
+ import { createKeyedMount as l, reconcileKeyedList as u } from "./elur/template/keyed-diff.js";
4
+ import { queueDOMWrite as d } from "./elur/template/dom-write.js";
5
+ import { activateNodeBinding as f } from "./elur/template/node-binding.js";
6
+ import { isExecutableAttrName as p, isUrlAttrName as m, sanitizeUrl as h } from "./elur/template/sanitize.js";
7
+ import { _activateBindingsWithNodes as g, _ensureDelegatedEvent as _, _setDelegatedEvent as v, activateDelegatedEvent as y, showWhen as b } from "./elur/template/bindings.js";
8
+ import { buildHTML as x, html as S } from "./elur/template/html.js";
9
+ import { raw as C } from "./elur/template/raw.js";
10
+ import { transition as w } from "./elur/template/transitions.js";
11
+ import { createPortalOutlet as T, injectOutlet as E, portal as D, portalOutlet as O, provideOutlet as k } from "./elur/template/portal.js";
12
+ import { createErrorBoundary as A } from "./elur/template/error-boundary.js";
13
+ export { e as COMMENT, t as ELUR_RENDER_PROTOCOL, n as ELUR_TEMPLATE_DESCRIPTOR, g as _activateBindingsWithNodes, y as _activateDelegatedEvent, f as _activateNodeBinding, l as _createKeyedMount, _ as _ensureDelegatedEvent, s as _getKeyedSequence, d as _queueDOMWrite, u as _reconcileKeyedList, v as _setDelegatedEvent, x as buildHTML, A as createErrorBoundary, T as createPortalOutlet, S as html, E as injectOutlet, r as isElurTemplate, p as isExecutableAttrName, i as isKeyedList, m as isUrlAttrName, D as portal, O as portalOutlet, k as provideOutlet, C as raw, a as ref, c as repeat, h as sanitizeUrl, b as showWhen, o as templateFeatures, w as transition };