@cossackframework/renderer 0.6.0 → 0.7.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.
@@ -0,0 +1,993 @@
1
+ //#region src/component.ts
2
+ var e = (e) => typeof e == "object" && !!e && e._type === "COMPONENT", t = [], n = (e) => t.push(e), r = () => t.pop(), i = class {
3
+ static properties = {};
4
+ static _isCossackElement = !0;
5
+ static components = {};
6
+ children = null;
7
+ props = {};
8
+ __parent = null;
9
+ _id = "";
10
+ _childCounter = 0;
11
+ __providedContexts = /* @__PURE__ */ new Map();
12
+ __properties = /* @__PURE__ */ new Map();
13
+ __updatePromise = null;
14
+ __changedProperties = /* @__PURE__ */ new Map();
15
+ __renderListeners = /* @__PURE__ */ new Set();
16
+ __controllers = /* @__PURE__ */ new Set();
17
+ __hasConnected = !1;
18
+ __eventListeners = /* @__PURE__ */ new Map();
19
+ constructor() {
20
+ this.initialize();
21
+ }
22
+ static get currentRenderingInstance() {
23
+ return t.length > 0 ? t[t.length - 1] : null;
24
+ }
25
+ resetRenderState() {
26
+ this._childCounter = 0;
27
+ }
28
+ addController(e) {
29
+ this.__controllers.add(e), this.__hasConnected && e.hostConnected && e.hostConnected();
30
+ }
31
+ removeController(e) {
32
+ this.__controllers.delete(e);
33
+ }
34
+ get updateComplete() {
35
+ return this.__updatePromise || Promise.resolve(!0);
36
+ }
37
+ initialize() {
38
+ let e = this.constructor.properties;
39
+ if (e) for (let [t, n] of Object.entries(e)) this.createProperty(t, n);
40
+ }
41
+ createProperty(e, t) {
42
+ Object.prototype.hasOwnProperty.call(this, e) && this.__properties.set(e, this[e]), Object.defineProperty(this, e, {
43
+ get() {
44
+ return this.__properties.get(e);
45
+ },
46
+ set(t) {
47
+ let n = this.__properties.get(e);
48
+ n !== t && (this.__properties.set(e, t), this.requestUpdate(e, n));
49
+ },
50
+ configurable: !0,
51
+ enumerable: !0
52
+ });
53
+ }
54
+ provide(e, t) {
55
+ this.__providedContexts.set(e, t);
56
+ }
57
+ consume(e) {
58
+ let t = this.__parent;
59
+ for (; t;) {
60
+ if (t.__providedContexts.has(e)) return t.__providedContexts.get(e);
61
+ t = t.__parent;
62
+ }
63
+ return e.defaultValue;
64
+ }
65
+ requestUpdate(e, t) {
66
+ return e !== void 0 && (this.__changedProperties.has(e) || this.__changedProperties.set(e, t)), this.__updatePromise ||= this.performUpdate(), this.__updatePromise;
67
+ }
68
+ async performUpdate() {
69
+ await Promise.resolve();
70
+ let e = !1;
71
+ try {
72
+ if (e = this.shouldUpdate(this.__changedProperties), e) {
73
+ this.__controllers.forEach((e) => e.hostUpdate && e.hostUpdate()), this.willUpdate(this.__changedProperties), this.resetRenderState(), n(this);
74
+ let e = this.render();
75
+ this.__notifyListeners(e), r(), this.updated(this.__changedProperties), this.__controllers.forEach((e) => e.hostUpdated && e.hostUpdated());
76
+ }
77
+ } catch (e) {
78
+ console.error("Error during update:", e), t[t.length - 1] === this && r();
79
+ }
80
+ return this.__changedProperties = /* @__PURE__ */ new Map(), this.__updatePromise = null, e;
81
+ }
82
+ __notifyListeners(e) {
83
+ this.__renderListeners.forEach((t) => t(e));
84
+ }
85
+ addRenderListener(e) {
86
+ this.__renderListeners.add(e);
87
+ }
88
+ removeRenderListener(e) {
89
+ this.__renderListeners.delete(e);
90
+ }
91
+ mount(e, t = !1) {
92
+ let n = t;
93
+ this.addRenderListener((t) => {
94
+ if (t) {
95
+ let r = k(t) ? t : D`${t}`;
96
+ n ? (n = !1, $(r, e)) : q(r, e);
97
+ }
98
+ }), this.requestUpdate();
99
+ }
100
+ addEventListener(e, t, n) {
101
+ t && (this.__eventListeners.has(e) || this.__eventListeners.set(e, /* @__PURE__ */ new Set()), this.__eventListeners.get(e).add(t));
102
+ }
103
+ removeEventListener(e, t, n) {
104
+ if (!t) return;
105
+ let r = this.__eventListeners.get(e);
106
+ r && r.delete(t);
107
+ }
108
+ dispatchEvent(e) {
109
+ let t = this.__eventListeners.get(e.type);
110
+ return t && t.forEach((t) => {
111
+ typeof t == "function" ? t.call(this, e) : t.handleEvent(e);
112
+ }), !e.defaultPrevented;
113
+ }
114
+ shouldUpdate(e) {
115
+ return !0;
116
+ }
117
+ willUpdate(e) {}
118
+ render() {
119
+ return null;
120
+ }
121
+ updated(e) {}
122
+ connectedCallback() {
123
+ this.__hasConnected = !0, this.__controllers.forEach((e) => e.hostConnected && e.hostConnected());
124
+ }
125
+ disconnectedCallback() {
126
+ this.__hasConnected = !1, this.__controllers.forEach((e) => e.hostDisconnected && e.hostDisconnected());
127
+ }
128
+ }, a = class {
129
+ value;
130
+ constructor(e) {
131
+ this.value = e;
132
+ }
133
+ }, o = class {
134
+ items;
135
+ keyFn;
136
+ templateFn;
137
+ constructor(e, t, n) {
138
+ this.items = e, this.keyFn = t, this.templateFn = n;
139
+ }
140
+ }, s = class {
141
+ value;
142
+ template;
143
+ constructor(e, t) {
144
+ this.value = e, this.template = t;
145
+ }
146
+ }, c = class {
147
+ component;
148
+ fieldName;
149
+ constructor(e, t) {
150
+ this.component = e, this.fieldName = t;
151
+ }
152
+ }, l = class {
153
+ handler;
154
+ novalidate;
155
+ constructor(e, t) {
156
+ this.handler = e, this.novalidate = t;
157
+ }
158
+ }, u = class {
159
+ value;
160
+ constructor(e) {
161
+ this.value = e;
162
+ }
163
+ }, d = class {
164
+ deps;
165
+ factory;
166
+ constructor(e, t) {
167
+ this.deps = e, this.factory = t;
168
+ }
169
+ }, f = class {
170
+ value;
171
+ constructor(e) {
172
+ this.value = e;
173
+ }
174
+ }, p = (e) => new a(e), ee = (e, t, n) => n === void 0 ? new o(e, (e, t) => t, t) : new o(e, t, n), m = (e) => Object.keys(e).filter((t) => e[t]).join(" "), h = (e) => Object.keys(e).filter((t) => e[t] != null).map((t) => `${t}:${e[t]}`).join(";"), g = (e, t) => new s(e, t), _ = (e, t) => new c(e, t);
175
+ function v(e, t) {
176
+ let n = e;
177
+ if (!t.includes(".")) return n?.[t];
178
+ let r = t.split("."), i = n?.[r[0]];
179
+ for (let e = 1; e < r.length; e++) {
180
+ if (i == null) return;
181
+ i = i[r[e]];
182
+ }
183
+ return i;
184
+ }
185
+ function y(e, t, n) {
186
+ let r = e;
187
+ if (!r) return;
188
+ if (!t.includes(".")) {
189
+ r[t] = n;
190
+ return;
191
+ }
192
+ let i = t.split(".");
193
+ r[i[0]] ?? (r[i[0]] = {});
194
+ let a = r[i[0]];
195
+ for (let e = 1; e < i.length - 1; e++) {
196
+ if (typeof a != "object" || !a) return;
197
+ (a[i[e]] == null || typeof a[i[e]] != "object") && (a[i[e]] = {}), a = a[i[e]];
198
+ }
199
+ typeof a == "object" && a && (a[i[i.length - 1]] = n);
200
+ }
201
+ var b = (e, t) => new l(e, t?.novalidate ?? !0), te = (e) => new u(e), ne = (e, t) => new d(e, t), x = (e) => new f(e), re = (e, t, n) => e ? t(e) : n?.(e), S = (e, t, n) => {
202
+ for (let n = 0; n < t.length; n++) {
203
+ let [r, i] = t[n];
204
+ if (r === e) return i(e, n);
205
+ }
206
+ return n?.();
207
+ }, C = (e, t) => Array.from(e, t), w = (e, t, n) => {
208
+ let r = Array.from(e), i = [], a = typeof n == "function" ? n : () => n;
209
+ for (let e = 0; e < r.length; e++) i.push(t(r[e], e)), e < r.length - 1 && i.push(a(e));
210
+ return i;
211
+ }, T = (e, t, n = 1) => {
212
+ let r = t === void 0 ? 0 : e, i = t === void 0 ? e : t, a = [];
213
+ if (n === 0) return a;
214
+ if (n > 0) for (let e = r; e < i; e += n) a.push(e);
215
+ else for (let e = r; e > i; e += n) a.push(e);
216
+ return a;
217
+ }, E = class {
218
+ strings;
219
+ values;
220
+ _cossack_template_result = !0;
221
+ constructor(e, t) {
222
+ this.strings = e, this.values = t;
223
+ }
224
+ }, D = (e, ...t) => new E(e, t), O = (e, t, n) => D`${{
225
+ _type: "COMPONENT",
226
+ clazz: e,
227
+ props: t ?? {},
228
+ children: n
229
+ }}`, k = (e) => typeof e == "object" && !!e && e._cossack_template_result === !0, A = class {
230
+ value;
231
+ constructor(e) {
232
+ this.value = e;
233
+ }
234
+ }, j = (e) => new A(e), M = (e) => e instanceof A, N = (e) => String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"), P = (t, l = {}) => {
235
+ if (t == null || t === !1) return "";
236
+ if (Array.isArray(t)) return l.hydrate ? t.map((e) => `<!--CSA-S-->${P(e, l)}<!--CSA-E-->`).join("") : t.map((e) => P(e, l)).join("");
237
+ if (k(t)) return B(t, l);
238
+ if (t instanceof a) return P(t.value, l);
239
+ if (t instanceof o) return l.hydrate ? t.items.map((e, n) => `<!--CSA-S-->${P(t.templateFn(e, n), l)}<!--CSA-E-->`).join("") : t.items.map((e, n) => P(t.templateFn(e, n), l)).join("");
240
+ if (t instanceof s) return P(t.template, l);
241
+ if (t instanceof d) return P(t.factory(), l);
242
+ if (t instanceof f) return P(t.value, l);
243
+ if (t instanceof c) return P(v(t.component, t.fieldName), l);
244
+ if (e(t)) {
245
+ let e = new t.clazz();
246
+ Object.assign(e, t.props), "props" in e && (e.props = t.props), e.children = t.children, e.__parent = i.currentRenderingInstance, e.__parent && (e._id = `${e.__parent._id}:${e.__parent._childCounter++}`), e.connectedCallback(), n(e), e.willUpdate(/* @__PURE__ */ new Map());
247
+ let a = e.render(), o = "";
248
+ return a && (o = k(a) ? B(a, l) : B(D`${a}`, l)), r(), o;
249
+ }
250
+ return M(t) ? t.value : typeof t == "function" || typeof t == "object" && t && "value" in t ? "" : N(t);
251
+ }, F = /* @__PURE__ */ new Set([
252
+ "checked",
253
+ "disabled",
254
+ "readonly",
255
+ "required",
256
+ "hidden",
257
+ "selected",
258
+ "multiple",
259
+ "autofocus",
260
+ "open"
261
+ ]), I = (e, t) => {
262
+ if (!(typeof e != "object" || !e)) for (let [n, r] of Object.entries(e)) {
263
+ if (n.startsWith("@")) continue;
264
+ let e = n, i = r;
265
+ if (n.startsWith("?")) {
266
+ r && (t.result += ` ${n.slice(1)}`);
267
+ continue;
268
+ }
269
+ if (n.startsWith(".") && (e = n.slice(1), i instanceof c ? i = v(i.component, i.fieldName) : i instanceof a && (i = i.value), F.has(e))) {
270
+ i && (t.result += ` ${e}`);
271
+ continue;
272
+ }
273
+ if ((e === "class" || e === "className") && typeof i == "string" && i) {
274
+ let e = L(t.result, i);
275
+ if (e !== null) {
276
+ t.result = e;
277
+ continue;
278
+ }
279
+ }
280
+ i instanceof u ? i.value !== void 0 && (t.result += ` ${e}="${N(String(i.value))}"`) : typeof i == "boolean" ? i && (t.result += ` ${e}`) : typeof i == "function" || i != null && (t.result += ` ${e}="${N(i)}"`);
281
+ }
282
+ }, L = (e, t) => {
283
+ let n = e.lastIndexOf("<"), r = n >= 0 ? e.slice(n) : e, i = r.match(/(^|\s)class="([^"]*)"(\s|\/?>|$)/);
284
+ if (!i) return null;
285
+ let a = i[1], o = i[2], s = i[3], c = t.trim();
286
+ if (!c) return e;
287
+ let l = o ? `${o} ${c}` : c, u = r.replace(i[0], `${a}class="${l}"${s}`);
288
+ return e.slice(0, n) + u;
289
+ }, R = (e) => {
290
+ let t = [], n = !1, r = null, i = /(\.\.\.|[.@?]?[a-zA-Z0-9_-]+)=["']?$/;
291
+ for (let a = 0; a < e.length - 1; a++) {
292
+ let o = e[a];
293
+ for (let e = 0; e < o.length; e++) r ? o[e] === r && (r = null) : o[e] === "\"" || o[e] === "'" ? e > 0 && o[e - 1] === "=" && (r = o[e]) : o[e] === "<" && o[e + 1] !== "!" && o[e + 1] !== "/" ? n = !0 : o[e] === ">" && (n = !1);
294
+ let s = o.match(i);
295
+ t[a] = !(n && (s || r));
296
+ }
297
+ return t;
298
+ }, z = class {
299
+ resultObj;
300
+ opts;
301
+ result = "";
302
+ stringIdx = 0;
303
+ charIdxForNext = 0;
304
+ isNodePositions;
305
+ constructor(e, t = {}) {
306
+ this.resultObj = e, this.opts = t, this.isNodePositions = R(e.strings);
307
+ }
308
+ scan() {
309
+ let { strings: e, values: t } = this.resultObj;
310
+ for (; this.stringIdx < e.length;) {
311
+ let n = e[this.stringIdx].substring(this.charIdxForNext || 0), r = n.match(/(\.\.\.|[.@?]?[a-zA-Z0-9_-]+)=["']?$/);
312
+ if (this.result += n, this.charIdxForNext = 0, this.stringIdx < e.length - 1) {
313
+ let n = t[this.stringIdx];
314
+ if (r) {
315
+ let t = r[0], i = r[1];
316
+ this.result = this.result.substring(0, this.result.length - t.length);
317
+ let a = t.endsWith("\"") ? "\"" : t.endsWith("'") ? "'" : "", o = !0;
318
+ if (i === "...") {
319
+ this.result = this.result.trimEnd();
320
+ let e = { result: this.result };
321
+ I(n, e), this.result = e.result;
322
+ } else if (i === "ref") this.result = this.result.trimEnd();
323
+ else if (i.startsWith("@")) this.result = this.result.trimEnd();
324
+ else if (i.startsWith("?")) n ? (this.result = this.result.trimEnd(), this.result += ` ${i.slice(1)}`) : this.result = this.result.trimEnd();
325
+ else if (i.startsWith(".")) {
326
+ let e, t = n instanceof c;
327
+ e = t ? v(n.component, n.fieldName) : n;
328
+ let r = i.slice(1);
329
+ t && F.has(r) ? (this.result = this.result.trimEnd(), e && (this.result += ` ${r}`)) : e != null && e !== !1 ? (this.result = this.result.trimEnd(), this.result += ` ${r}="${P(e, this.opts)}"`) : this.result = this.result.trimEnd();
330
+ } else if (n instanceof u) n.value === void 0 ? this.result = this.result.trimEnd() : (this.result = this.result.trimEnd(), this.result += ` ${i}="${N(String(n.value))}"`);
331
+ else {
332
+ this.result += t;
333
+ let e = P(n, this.opts);
334
+ a ? (this.result += e, o = !1) : this.result += `"${e}"`;
335
+ }
336
+ if (a && o) {
337
+ let t = e[this.stringIdx + 1];
338
+ t && t.startsWith(a) && (this.charIdxForNext = 1);
339
+ }
340
+ } else this.opts.hydrate && this.isNodePositions[this.stringIdx] ? (this.result += `<!--CRP_${this.stringIdx}-->`, this.result += P(n, this.opts), this.result += "<!--/CRP-->") : this.result += P(n, this.opts);
341
+ }
342
+ this.stringIdx++;
343
+ }
344
+ return this.result;
345
+ }
346
+ }, B = (e, t = {}) => new z(e, t).scan(), V = class t {
347
+ startNode;
348
+ endNode;
349
+ componentInstance = null;
350
+ renderListener = null;
351
+ _childParts = [];
352
+ _partKeys = [];
353
+ _cachedTemplateStrings = null;
354
+ _cachedParts = null;
355
+ _key = void 0;
356
+ _keySet = !1;
357
+ _guardDeps = null;
358
+ _guardHasDeps = !1;
359
+ _guardValue = void 0;
360
+ _cacheMap = /* @__PURE__ */ new Map();
361
+ _cacheCurrent = null;
362
+ _hydrating = !1;
363
+ constructor(e, t) {
364
+ this.startNode = e, this.endNode = t;
365
+ }
366
+ _beginHydration() {
367
+ this._hydrating = !0;
368
+ }
369
+ update(t) {
370
+ if (this._hydrating) {
371
+ this._hydrating = !1, this._hydrateValue(t);
372
+ return;
373
+ }
374
+ t instanceof d && (t = this._resolveGuard(t));
375
+ let n = !1;
376
+ if (t instanceof f) {
377
+ let e = t.value;
378
+ if (k(e)) {
379
+ this.componentInstance && this.disposeComponent(), this._childParts.length > 0 && this.clearChildParts(), this.updateCache(e);
380
+ return;
381
+ }
382
+ t = e, n = !0;
383
+ } else if (this._cacheMap.size > 0 || this._cacheCurrent) {
384
+ for (let e of this._cacheMap.values()) for (let t of e.parts) t && typeof t.dispose == "function" && t.dispose();
385
+ this._cacheMap.clear(), this._cacheCurrent = null;
386
+ }
387
+ n && this._cacheCurrent && (this._stashCurrent(), this._cacheCurrent = null), this.componentInstance && (!e(t) || t.clazz !== this.componentInstance.constructor) && this.disposeComponent(), !(t instanceof o) && !Array.isArray(t) && this._childParts.length > 0 && this.clearChildParts(), e(t) ? this.updateComponent(t) : t instanceof o ? this.updateRepeat(t) : t instanceof s ? this.updateKey(t) : Array.isArray(t) ? this.updateArray(t) : this.updateNode(t);
388
+ }
389
+ _resolveGuard(e) {
390
+ let t = Array.isArray(e.deps) ? [...e.deps] : [e.deps];
391
+ return this._guardHasDeps && this._depsEqual(this._guardDeps, t) ? this._guardValue : (this._guardDeps = t, this._guardHasDeps = !0, this._guardValue = e.factory(), this._guardValue);
392
+ }
393
+ _depsEqual(e, t) {
394
+ if (e === null || e.length !== t.length) return !1;
395
+ for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
396
+ return !0;
397
+ }
398
+ _hydrateValue(t) {
399
+ if (e(t)) {
400
+ this._adoptComponent(t);
401
+ return;
402
+ }
403
+ if (k(t)) {
404
+ this._adoptTemplate(t);
405
+ return;
406
+ }
407
+ if (t instanceof o) {
408
+ this._adoptSequence(t.items.map((e, n) => t.templateFn(e, n)), t.items.map((e, n) => t.keyFn(e, n)));
409
+ return;
410
+ }
411
+ if (Array.isArray(t)) {
412
+ this._adoptSequence(t);
413
+ return;
414
+ }
415
+ if (t instanceof s) {
416
+ if (k(t.template)) {
417
+ this._keySet = !0, this._key = t.value, this._adoptTemplate(t.template);
418
+ return;
419
+ }
420
+ this.clear(), this._clearTemplateCache(), this.updateNode(t.template);
421
+ return;
422
+ }
423
+ if (t instanceof d) {
424
+ let e = this._resolveGuard(t);
425
+ this._hydrateValue(e);
426
+ return;
427
+ }
428
+ if (t instanceof f) {
429
+ let e = t.value;
430
+ k(e) ? this._cacheMap.has(e.strings) ? this.updateCache(e) : (this._adoptTemplate(e), this._cacheCurrent = e.strings) : this._hydrateValue(e);
431
+ return;
432
+ }
433
+ if (t == null || t === !1) {
434
+ this.clear();
435
+ return;
436
+ }
437
+ if (!(t instanceof Node)) {
438
+ if (M(t)) {
439
+ if (this.startNode.nextSibling !== this.endNode) return;
440
+ this.clear(), this._clearTemplateCache(), this.updateNode(t);
441
+ return;
442
+ }
443
+ if (typeof t != "object") {
444
+ let e = String(t), n = this.startNode.nextSibling;
445
+ n && n.nodeType === Node.TEXT_NODE && n.nextSibling === this.endNode ? n.nodeValue !== e && (n.nodeValue = e) : (this.clear(), this.startNode.parentNode.insertBefore(document.createTextNode(e), this.endNode));
446
+ return;
447
+ }
448
+ this.clear(), this._clearTemplateCache(), this.updateNode(t);
449
+ }
450
+ }
451
+ _adoptComponent(e) {
452
+ if (this.componentInstance && this.componentInstance.constructor !== e.clazz && this.disposeComponent(), !this.componentInstance) {
453
+ this.componentInstance = new e.clazz(), this.componentInstance.__parent = i.currentRenderingInstance, this.componentInstance.__parent && (this.componentInstance._id = `${this.componentInstance.__parent._id}:${this.componentInstance.__parent._childCounter++}`);
454
+ let t = !0;
455
+ this.renderListener = (e) => {
456
+ if (t) if (t = !1, k(e)) try {
457
+ this._adoptTemplate(e);
458
+ } catch (t) {
459
+ if (t instanceof J) this.clear(), this._clearTemplateCache(), this.updateNode(e);
460
+ else throw t;
461
+ }
462
+ else e == null ? this.clear() : this.updateNode(e);
463
+ else this.updateNode(e);
464
+ }, this.componentInstance.addRenderListener(this.renderListener), this.componentInstance.connectedCallback();
465
+ }
466
+ let t = this.componentInstance;
467
+ Object.assign(t, e.props), "props" in t && (t.props = e.props), t.children = e.children, t.requestUpdate();
468
+ }
469
+ _adoptSequence(e, n) {
470
+ let r = ie(this._nodesBetween());
471
+ if (r.length !== e.length) throw new J(`sequence length mismatch: SSR has ${r.length} items, client has ${e.length}`);
472
+ this._childParts = [], this._partKeys = n ? [] : this._partKeys;
473
+ for (let i = 0; i < e.length; i++) {
474
+ let [a, o] = r[i], s = new t(a, o);
475
+ s._beginHydration(), this._childParts.push(s), n && this._partKeys.push(n[i]), s.update(e[i]);
476
+ }
477
+ }
478
+ _adoptTemplate(e) {
479
+ let { fragment: t, parts: n } = K(e), r = this._nodesBetween(), i = /* @__PURE__ */ new Map();
480
+ Z(t.childNodes, r, i), Q(n, i);
481
+ for (let t = 0; t < e.values.length; t++) n[t] && n[t].update(e.values[t]);
482
+ this._cachedTemplateStrings = e.strings, this._cachedParts = n;
483
+ }
484
+ _nodesBetween() {
485
+ let e = [], t = this.startNode.nextSibling;
486
+ for (; t && t !== this.endNode;) e.push(t), t = t.nextSibling;
487
+ return e;
488
+ }
489
+ teardownComponent(e) {
490
+ if (this.renderListener &&= (e.removeRenderListener(this.renderListener), null), e.disconnectedCallback(), typeof e.destroy == "function") try {
491
+ e.destroy();
492
+ } catch {}
493
+ }
494
+ disposeComponent() {
495
+ this.componentInstance && (this.teardownComponent(this.componentInstance), this.componentInstance = null, this._clearTemplateCache());
496
+ }
497
+ updateComponent(e) {
498
+ this.componentInstance || (this.componentInstance = new e.clazz(), this.componentInstance.__parent = i.currentRenderingInstance, this.componentInstance.__parent && (this.componentInstance._id = `${this.componentInstance.__parent._id}:${this.componentInstance.__parent._childCounter++}`), this.renderListener = (e) => {
499
+ this.updateNode(e);
500
+ }, this.componentInstance.addRenderListener(this.renderListener), this.componentInstance.connectedCallback());
501
+ let t = this.componentInstance;
502
+ Object.assign(t, e.props), "props" in t && (t.props = e.props), t.children = e.children, t.requestUpdate();
503
+ }
504
+ updateRepeat(e) {
505
+ let { items: t, keyFn: n, templateFn: r } = e, i = /* @__PURE__ */ new Map();
506
+ this._childParts.forEach((e, t) => {
507
+ let n = this._partKeys[t];
508
+ n !== void 0 && i.set(n, e);
509
+ });
510
+ let a = [], o = [], s = this.startNode;
511
+ t.forEach((e, t) => {
512
+ let c = n(e, t);
513
+ o.push(c);
514
+ let l = i.get(c);
515
+ l ? (i.delete(c), l.startNode.previousSibling !== s && this.movePart(l, s), l.update(r(e, t))) : (l = this.createChildPart(s), l.update(r(e, t))), a.push(l), s = l.endNode;
516
+ }), i.forEach((e) => e.dispose()), this._childParts = a, this._partKeys = o;
517
+ }
518
+ updateKey(e) {
519
+ let t = !this._keySet || !Object.is(this._key, e.value);
520
+ this._keySet = !0, this._key = e.value, t && (this.componentInstance && this.disposeComponent(), this._clearTemplateCache(), this.clear()), this.updateNode(e.template);
521
+ }
522
+ updateCache(e) {
523
+ if (this._cacheCurrent === e.strings && this._cachedParts) {
524
+ this._cachedParts.forEach((t, n) => {
525
+ t.update(e.values[n]);
526
+ });
527
+ return;
528
+ }
529
+ (this._cacheCurrent || this._cachedParts) && this._stashCurrent();
530
+ let t = this._cacheMap.get(e.strings);
531
+ if (t) {
532
+ this.clear();
533
+ let n = this.startNode.parentNode;
534
+ if (!n) return;
535
+ for (let e of t.nodes) n.insertBefore(e, this.endNode);
536
+ this._cachedTemplateStrings = e.strings, this._cachedParts = t.parts;
537
+ for (let n = 0; n < e.values.length; n++) t.parts[n] && t.parts[n].update(e.values[n]);
538
+ } else this.clear(), this.updateNode(e);
539
+ this._cacheCurrent = e.strings;
540
+ }
541
+ _stashCurrent() {
542
+ if (!this._cachedParts) return;
543
+ let e = this._cacheCurrent ?? this._cachedTemplateStrings;
544
+ if (!e) {
545
+ this._clearTemplateCache(), this.clear();
546
+ return;
547
+ }
548
+ let t = this._nodesBetween(), n = document.createDocumentFragment();
549
+ for (let e of t) n.appendChild(e);
550
+ this._cacheMap.set(e, {
551
+ nodes: t,
552
+ parts: this._cachedParts
553
+ }), this._cachedTemplateStrings = null, this._cachedParts = null;
554
+ }
555
+ updateArray(e) {
556
+ this._partKeys = [];
557
+ let t = Math.min(e.length, this._childParts.length);
558
+ for (let n = 0; n < t; n++) this._childParts[n].update(e[n]);
559
+ if (e.length > this._childParts.length) {
560
+ let n = this._childParts.length > 0 ? this._childParts[this._childParts.length - 1].endNode : this.startNode;
561
+ for (let r = t; r < e.length; r++) {
562
+ let t = this.createChildPart(n);
563
+ this._childParts.push(t), t.update(e[r]), n = t.endNode;
564
+ }
565
+ }
566
+ if (e.length < this._childParts.length) for (let t = this._childParts.length - 1; t >= e.length; t--) this._childParts[t].dispose(), this._childParts.pop();
567
+ }
568
+ createChildPart(e) {
569
+ let n = document.createComment("CRP-Item"), r = document.createComment("/CRP-Item"), i = e.nextSibling;
570
+ return e.parentNode.insertBefore(n, i), e.parentNode.insertBefore(r, i), new t(n, r);
571
+ }
572
+ movePart(e, t) {
573
+ let n = t.parentNode, r = [], i = e.startNode;
574
+ for (; i && i !== e.endNode;) r.push(i), i = i.nextSibling;
575
+ r.push(e.endNode);
576
+ let a = t.nextSibling;
577
+ r.forEach((e) => n.insertBefore(e, a));
578
+ }
579
+ clearChildParts() {
580
+ this._childParts.forEach((e) => e.dispose()), this._childParts = [], this._partKeys = [];
581
+ }
582
+ dispose() {
583
+ if (this.clear(), this._clearTemplateCache(), this._cacheMap.size > 0) {
584
+ for (let e of this._cacheMap.values()) for (let t of e.parts) t && typeof t.dispose == "function" && t.dispose();
585
+ this._cacheMap.clear();
586
+ }
587
+ this._cacheCurrent = null, this.clearChildParts(), this.startNode.parentNode && this.startNode.parentNode.removeChild(this.startNode), this.endNode.parentNode && this.endNode.parentNode.removeChild(this.endNode), this.componentInstance &&= (this.teardownComponent(this.componentInstance), null);
588
+ }
589
+ updateNode(t) {
590
+ if (this.startNode.parentNode) if (k(t)) if (this._cachedTemplateStrings === t.strings && this._cachedParts) this._cachedParts.forEach((e, n) => {
591
+ e.update(t.values[n]);
592
+ });
593
+ else {
594
+ this._clearTemplateCache(), this.clear();
595
+ let e = document.createDocumentFragment();
596
+ q(t, e), this.startNode.parentNode.insertBefore(e, this.endNode);
597
+ let n = G.get(e.firstChild?.childNodes[0] || e);
598
+ n && (this._cachedTemplateStrings = n.strings, this._cachedParts = n.parts);
599
+ }
600
+ else if (M(t)) {
601
+ this._clearTemplateCache(), this.clear();
602
+ let e = document.createElement("template");
603
+ e.innerHTML = t.value, this.startNode.parentNode.insertBefore(e.content, this.endNode);
604
+ } else if (e(t) || typeof t == "object" && t && !(t instanceof Node) && !Array.isArray(t)) {
605
+ this._clearTemplateCache(), this.clear();
606
+ let e = document.createDocumentFragment();
607
+ q(D`${t}`, e), this.startNode.parentNode.insertBefore(e, this.endNode);
608
+ } else if (t instanceof Node) this._clearTemplateCache(), this.clear(), this.startNode.parentNode.insertBefore(t, this.endNode);
609
+ else if (t == null || t === !1) this._clearTemplateCache(), this.clear();
610
+ else {
611
+ let e = String(t), n = this.startNode.nextSibling;
612
+ if (n && n.nodeType === Node.TEXT_NODE && n.nextSibling === this.endNode) n.nodeValue !== e && (n.nodeValue = e);
613
+ else {
614
+ this._clearTemplateCache(), this.clear();
615
+ let t = document.createTextNode(e);
616
+ this.startNode.parentNode.insertBefore(t, this.endNode);
617
+ }
618
+ }
619
+ }
620
+ _clearTemplateCache() {
621
+ if (this._cachedParts) for (let e of this._cachedParts) e && typeof e.dispose == "function" && e.dispose();
622
+ this._cachedTemplateStrings = null, this._cachedParts = null;
623
+ }
624
+ clear() {
625
+ let e = this.startNode.nextSibling;
626
+ for (; e && e !== this.endNode;) {
627
+ let t = e.nextSibling;
628
+ e.parentNode.removeChild(e), e = t;
629
+ }
630
+ }
631
+ }, H = class {
632
+ element;
633
+ previousValues = {};
634
+ bindStates = /* @__PURE__ */ new Map();
635
+ spreadClasses = [];
636
+ constructor(e) {
637
+ this.element = e;
638
+ }
639
+ update(e) {
640
+ if (typeof e != "object" || !e) return;
641
+ let t = e;
642
+ for (let e of Object.keys(this.previousValues)) if (!(e in t)) if (e.startsWith("@")) {
643
+ let t = e.slice(1), n = `__crp_handler_${t}`, r = this.element[n];
644
+ r && this.element.removeEventListener(t, r);
645
+ } else if (e.startsWith(".")) {
646
+ let t = this.bindStates.get(e);
647
+ t && (this.element.removeEventListener(t.listener.__eventName, t.listener), this.bindStates.delete(e));
648
+ } else if (e.startsWith("?")) this.element.removeAttribute(e.slice(1));
649
+ else if (e === "class" || e === "className") {
650
+ for (let e of this.spreadClasses) this.element.classList.remove(e);
651
+ this.spreadClasses = [];
652
+ } else this.element.removeAttribute(e);
653
+ for (let [e, n] of Object.entries(t)) if (e.startsWith("@") && (typeof n == "function" || n instanceof l)) {
654
+ let t = e.slice(1), r = `__crp_handler_${t}`, i = this.element[r];
655
+ i && this.element.removeEventListener(t, i);
656
+ let a;
657
+ if (n instanceof l) {
658
+ let e = n.handler, t = this.element instanceof HTMLFormElement ? this.element : this.element.closest("form");
659
+ t instanceof HTMLFormElement && (n.novalidate ? t.setAttribute("novalidate", "") : t.removeAttribute("novalidate")), a = (t) => {
660
+ t.preventDefault(), e.call(t.currentTarget, t);
661
+ };
662
+ } else a = n;
663
+ this.element[r] = a, this.element.addEventListener(t, a);
664
+ } else if (e.startsWith(".")) {
665
+ let t = e.slice(1);
666
+ if (n instanceof c && (t === "value" || t === "checked")) this.applySpreadBind(e, t, n);
667
+ else if (n instanceof a && (t === "value" || t === "checked")) {
668
+ let e = this.element;
669
+ if (t === "checked") {
670
+ let t = !!n.value;
671
+ e.checked !== t && (e.checked = t);
672
+ } else {
673
+ let t = n.value == null ? "" : String(n.value);
674
+ e.value !== t && (e.value = t);
675
+ }
676
+ } else n instanceof c ? this.element[t] = v(n.component, n.fieldName) : n instanceof a ? this.element[t] = n.value : this.element[t] = n;
677
+ } else e.startsWith("?") ? n ? this.element.setAttribute(e.slice(1), "") : this.element.removeAttribute(e.slice(1)) : n instanceof u ? n.value === void 0 ? this.element.removeAttribute(e) : this.element.setAttribute(e, String(n.value)) : typeof n == "boolean" ? n ? this.element.setAttribute(e, "") : this.element.removeAttribute(e) : (e === "class" || e === "className") && typeof n == "string" ? this.applySpreadClass(n) : n != null && this.element.setAttribute(e, String(n));
678
+ this.previousValues = { ...t };
679
+ }
680
+ applySpreadClass(e) {
681
+ for (let e of this.spreadClasses) this.element.classList.remove(e);
682
+ let t = e.split(/\s+/).filter(Boolean);
683
+ for (let e of t) this.element.classList.add(e);
684
+ this.spreadClasses = t;
685
+ }
686
+ applySpreadBind(e, t, n) {
687
+ let r = this.element, i = n.component, a = v(i, n.fieldName), o = this.bindStates.get(e);
688
+ if (t === "checked") {
689
+ let e = !!a;
690
+ (!o || o.lastKind !== "checked" || o.lastValue !== e) && (r.checked = e);
691
+ } else {
692
+ let e = a == null ? "" : String(a);
693
+ (!o || o.lastKind !== "value" || String(o.lastValue) !== e) && (r.value = e);
694
+ }
695
+ let s = W(this.element, t), c = !!o && (o.boundComponent !== i || o.boundField !== n.fieldName || o.listener.__eventName !== s);
696
+ if (o && c && (this.element.removeEventListener(o.listener.__eventName, o.listener), this.bindStates.delete(e), o = void 0), o) o.lastKind = t, o.lastValue = t === "checked" ? !!a : a == null ? "" : String(a);
697
+ else {
698
+ let r = (e) => {
699
+ let r = e.currentTarget, a = t === "checked" ? !!r[t] : r[t];
700
+ i && y(i, n.fieldName, a);
701
+ };
702
+ r.__eventName = s, this.element.addEventListener(s, r), o = {
703
+ listener: r,
704
+ lastKind: t,
705
+ lastValue: t === "checked" ? !!a : a == null ? "" : String(a),
706
+ boundComponent: i,
707
+ boundField: n.fieldName
708
+ }, this.bindStates.set(e, o);
709
+ }
710
+ }
711
+ }, U = class {
712
+ element;
713
+ name;
714
+ segments;
715
+ isMulti;
716
+ multiState;
717
+ lastFormValue = void 0;
718
+ lastFormKind = null;
719
+ bindListener = null;
720
+ boundPropName = null;
721
+ boundComponent = null;
722
+ boundFieldName = null;
723
+ _detachBindListener() {
724
+ if (!this.bindListener) return;
725
+ let e = this.bindListener;
726
+ this.element.removeEventListener(e.__eventName, e), this.bindListener = null, this.boundPropName = null, this.boundComponent = null, this.boundFieldName = null;
727
+ }
728
+ constructor(e, t, n, r) {
729
+ this.element = e, this.name = t;
730
+ let i = [...n.matchAll(/__CRP_(\d+)__/g)];
731
+ this.segments = [];
732
+ let a = 0;
733
+ for (let e of i) {
734
+ let t = e.index;
735
+ this.segments.push(n.substring(a, t)), a = t + e[0].length;
736
+ }
737
+ this.segments.push(n.substring(a)), this.isMulti = i.length > 1, this.multiState = r ?? null;
738
+ }
739
+ update(e) {
740
+ let t = !1;
741
+ e instanceof a && (t = !0, e = e.value);
742
+ let n = !1;
743
+ if (e instanceof u && (n = !0, e = e.value), e instanceof c) {
744
+ this.updateBind(e);
745
+ return;
746
+ }
747
+ if (this.bindListener && this._detachBindListener(), this.name === "ref") {
748
+ typeof e == "function" ? e(this.element) : e && typeof e == "object" && "value" in e && (e.value = this.element), this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name);
749
+ return;
750
+ }
751
+ if (this.isMulti && this.multiState) {
752
+ let { currentValues: t, position: n } = this.multiState;
753
+ t[n] = e;
754
+ let r = this.segments[0];
755
+ for (let e = 0; e < t.length; e++) r += String(t[e]) + this.segments[e + 1];
756
+ this.element.setAttribute(this.name, r);
757
+ return;
758
+ }
759
+ if (this.name.startsWith("@")) {
760
+ let t = this.name.slice(1), n = `__crp_handler_${t}`, r = `__crp_wrapper_${t}`;
761
+ if (!this.element[r]) {
762
+ let e = (e) => {
763
+ let t = e.currentTarget?.[n];
764
+ typeof t == "function" && t.call(e.currentTarget, e);
765
+ };
766
+ this.element[r] = e, this.element.addEventListener(t, e);
767
+ }
768
+ let i = e;
769
+ if (i instanceof l) {
770
+ let e = i.handler, t = this.element instanceof HTMLFormElement ? this.element : this.element.closest("form");
771
+ t instanceof HTMLFormElement && (i.novalidate ? t.setAttribute("novalidate", "") : t.removeAttribute("novalidate")), i = (t) => {
772
+ t.preventDefault(), e.call(t.currentTarget, t);
773
+ };
774
+ }
775
+ this.element[n] = typeof i == "function" ? i : void 0, this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name);
776
+ } else if (this.name.startsWith(".")) {
777
+ let n = this.name.slice(1);
778
+ if ((n === "value" || n === "checked") && (this.element instanceof HTMLInputElement || this.element instanceof HTMLTextAreaElement || this.element instanceof HTMLSelectElement)) if (n === "checked") {
779
+ let n = !!e;
780
+ (t ? this.element.checked !== n : this.lastFormKind !== "checked" || this.lastFormValue !== n) && (this.element.checked = n, this.lastFormValue = n, this.lastFormKind = "checked");
781
+ } else {
782
+ let n = String(e);
783
+ (t ? this.element.value !== n : this.lastFormKind !== "value" || String(this.lastFormValue) !== n) && (this.element.value = n, this.lastFormValue = e, this.lastFormKind = "value");
784
+ }
785
+ else this.element[n] = e;
786
+ this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name);
787
+ } else if (this.name.startsWith("?")) {
788
+ let t = this.name.slice(1);
789
+ e ? this.element.setAttribute(t, "") : this.element.removeAttribute(t), this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name);
790
+ } else n ? e === void 0 ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, this.segments[0] + String(e) + this.segments[1]) : typeof e == "boolean" ? e ? this.element.setAttribute(this.name, "") : this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, this.segments[0] + String(e) + this.segments[1]);
791
+ }
792
+ updateBind(e) {
793
+ let t = this.name.startsWith(".") ? this.name.slice(1) : this.name;
794
+ if (t !== "value" && t !== "checked") {
795
+ this.element[t] = v(e.component, e.fieldName), this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name), this.bindListener && this._detachBindListener();
796
+ return;
797
+ }
798
+ let n = this.element, r = e.component, i = v(r, e.fieldName);
799
+ if (t === "checked") {
800
+ let e = !!i;
801
+ (this.lastFormKind !== "checked" || this.lastFormValue !== e) && (n.checked = e, this.lastFormValue = e, this.lastFormKind = "checked");
802
+ } else {
803
+ let e = i == null ? "" : String(i);
804
+ (this.lastFormKind !== "value" || String(this.lastFormValue) !== e) && (n.value = e, this.lastFormValue = e, this.lastFormKind = "value");
805
+ }
806
+ let a = W(this.element, t);
807
+ if (this.bindListener && (this.boundPropName !== t || this.boundComponent !== r || this.boundFieldName !== e.fieldName || this.bindListener.__eventName !== a) && this._detachBindListener(), !this.bindListener) {
808
+ let n = (n) => {
809
+ let i = n.currentTarget, a = t === "checked" ? !!i[t] : i[t];
810
+ r && y(r, e.fieldName, a);
811
+ };
812
+ n.__eventName = a, this.bindListener = n, this.boundPropName = t, this.boundComponent = r, this.boundFieldName = e.fieldName, this.element.addEventListener(a, n);
813
+ }
814
+ this.element.hasAttribute(this.name) && this.element.removeAttribute(this.name);
815
+ }
816
+ }, W = (e, t) => {
817
+ if (e instanceof HTMLSelectElement) return "change";
818
+ if (e instanceof HTMLTextAreaElement) return "input";
819
+ if (e instanceof HTMLInputElement) {
820
+ let n = e.type.toLowerCase();
821
+ return t === "checked" || n === "checkbox" || n === "radio" || n === "range" ? "change" : "input";
822
+ }
823
+ return "input";
824
+ }, G = /* @__PURE__ */ new WeakMap(), K = (e) => {
825
+ let t = [], n = "", r = !1, i = null, a = /(\.\.\.|[.@?]?[a-zA-Z0-9_-]+)=["']?$/;
826
+ for (let t = 0; t < e.strings.length - 1; t++) {
827
+ let o = e.strings[t];
828
+ for (let e = 0; e < o.length; e++) i ? o[e] === i && (i = null) : o[e] === "\"" || o[e] === "'" ? e > 0 && o[e - 1] === "=" && (i = o[e]) : o[e] === "<" && o[e + 1] !== "!" && o[e + 1] !== "/" ? r = !0 : o[e] === ">" && (r = !1);
829
+ n += o;
830
+ let s = o.match(a);
831
+ if (r && (s || i)) {
832
+ if (n += `__CRP_${t}__`, s && !i) {
833
+ let e = s[0].endsWith("\"") ? "\"" : s[0].endsWith("'") ? "'" : null;
834
+ e && (i = e);
835
+ }
836
+ } else n += `<!--CRP_${t}-->`;
837
+ }
838
+ let o = e.strings[e.strings.length - 1];
839
+ for (let e = 0; e < o.length; e++) i ? o[e] === i && (i = null) : o[e] === "<" && o[e + 1] !== "!" && o[e + 1] !== "/" ? r = !0 : o[e] === ">" && (r = !1);
840
+ n += o;
841
+ let s = document.createElement("template");
842
+ s.innerHTML = n;
843
+ let c = s.content.cloneNode(!0), l = document.createTreeWalker(c, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT), u, d = [];
844
+ for (; u = l.nextNode();) d.push(u);
845
+ return d.forEach((e) => {
846
+ if (e.nodeType === Node.COMMENT_NODE) {
847
+ let n = e.nodeValue?.match(/CRP_(\d+)/);
848
+ if (n) {
849
+ let r = parseInt(n[1]), i = document.createComment("/CRP");
850
+ e.parentNode.insertBefore(i, e.nextSibling);
851
+ let a = new V(e, i);
852
+ t[r] = a;
853
+ }
854
+ } else if (e.nodeType === Node.ELEMENT_NODE) {
855
+ let n = e;
856
+ Array.from(n.attributes).forEach((e) => {
857
+ let r = [...e.value.matchAll(/__CRP_(\d+)__/g)];
858
+ if (r.length === 0) return;
859
+ if (r.length === 1) {
860
+ let i = parseInt(r[0][1]);
861
+ if (!t[i]) if (e.name === "...") {
862
+ let e = new H(n);
863
+ t[i] = e, n.removeAttribute("...");
864
+ } else {
865
+ let r = new U(n, e.name, e.value);
866
+ t[i] = r;
867
+ }
868
+ return;
869
+ }
870
+ if (e.name === "...") return;
871
+ let i = r.map((e) => parseInt(e[1])), a = Array(r.length).fill(void 0);
872
+ for (let r = 0; r < i.length; r++) {
873
+ let o = i[r];
874
+ if (!t[o]) {
875
+ let i = new U(n, e.name, e.value, {
876
+ currentValues: a,
877
+ position: r
878
+ });
879
+ t[o] = i;
880
+ }
881
+ }
882
+ });
883
+ }
884
+ }), {
885
+ fragment: c,
886
+ parts: t
887
+ };
888
+ }, q = (e, t) => {
889
+ let n = G.get(t);
890
+ if (n && n.strings === e.strings) {
891
+ n.parts.forEach((t, n) => {
892
+ t.update(e.values[n]);
893
+ });
894
+ return;
895
+ }
896
+ if (n) for (let e of n.parts) e && typeof e.dispose == "function" && e.dispose();
897
+ let { fragment: r, parts: i } = K(e), a = e.values;
898
+ for (let e = 0; e < a.length; e++) i[e] && i[e].update(a[e]);
899
+ if (t instanceof HTMLElement) t.innerHTML = "", t.appendChild(r);
900
+ else if (t instanceof DocumentFragment) {
901
+ for (; t.firstChild;) t.removeChild(t.firstChild);
902
+ t.appendChild(r);
903
+ }
904
+ G.set(t, {
905
+ strings: e.strings,
906
+ parts: i
907
+ });
908
+ }, J = class extends Error {}, Y = (e) => e ? e.nodeType === Node.ELEMENT_NODE ? `<${e.nodeName.toLowerCase()}>` : e.nodeType === Node.COMMENT_NODE ? `<!--${e.nodeValue}-->` : e.nodeType === Node.TEXT_NODE ? `text"${(e.nodeValue || "").slice(0, 30)}"` : `nodeType:${e.nodeType}` : "<none>", X = (e) => {
909
+ if (e.nodeType === Node.TEXT_NODE) return (e.nodeValue || "").trim() === "";
910
+ if (e.nodeType === Node.COMMENT_NODE) {
911
+ let t = e.nodeValue || "";
912
+ return !/^CRP_\d+$/.test(t) && t !== "/CRP" && t !== "CSA-S" && t !== "CSA-E";
913
+ }
914
+ return !1;
915
+ }, ie = (e) => {
916
+ let t = [], n = [];
917
+ for (let r of e) {
918
+ if (r.nodeType !== Node.COMMENT_NODE) continue;
919
+ let e = r.nodeValue;
920
+ if (e === "CSA-S") n.push(r);
921
+ else if (e === "CSA-E") {
922
+ let e = n.pop();
923
+ e && n.length === 0 && t.push([e, r]);
924
+ }
925
+ }
926
+ return t;
927
+ }, Z = (e, t, n) => {
928
+ let r = 0;
929
+ for (let i = 0; i < e.length; i++) {
930
+ let a = e[i];
931
+ if (X(a)) continue;
932
+ for (; r < t.length && X(t[r]);) r++;
933
+ let o = t[r];
934
+ if (!o) throw new J(`existing shorter than blueprint (expected ${Y(a)})`);
935
+ if (a.nodeType === Node.ELEMENT_NODE) {
936
+ if (o.nodeType !== Node.ELEMENT_NODE || a.nodeName !== o.nodeName) throw new J(`tag mismatch: blueprint ${Y(a)} vs existing ${Y(o)}`);
937
+ n.set(a, o), Z(a.childNodes, Array.from(o.childNodes), n);
938
+ } else {
939
+ if (a.nodeType !== o.nodeType) throw new J(`type mismatch: blueprint ${Y(a)} vs existing ${Y(o)}`);
940
+ n.set(a, o);
941
+ }
942
+ if (r++, a.nodeType === Node.COMMENT_NODE && /^CRP_\d+$/.test(a.nodeValue || "")) {
943
+ let e = 1;
944
+ for (; r < t.length && e > 0;) {
945
+ let n = t[r];
946
+ if (n.nodeType === Node.COMMENT_NODE) {
947
+ if (/^CRP_\d+$/.test(n.nodeValue || "")) e++;
948
+ else if (n.nodeValue === "/CRP" && (e--, e === 0)) break;
949
+ }
950
+ r++;
951
+ }
952
+ }
953
+ }
954
+ for (; r < t.length && X(t[r]);) r++;
955
+ if (r < t.length) throw new J(`existing longer than blueprint (unexpected ${Y(t[r])})`);
956
+ }, Q = (e, t) => {
957
+ for (let n of e) if (n) {
958
+ if (n instanceof V) {
959
+ let e = t.get(n.startNode), r = t.get(n.endNode);
960
+ if (!e || !r) throw new J("node part anchors not found");
961
+ n.startNode = e, n.endNode = r, n._beginHydration();
962
+ } else if (n instanceof U || n instanceof H) {
963
+ let e = t.get(n.element);
964
+ if (!e) throw new J("attribute part element not found");
965
+ n.element = e;
966
+ }
967
+ }
968
+ }, $ = (e, t) => {
969
+ if (!t.hasChildNodes()) return q(e, t);
970
+ let n = G.get(t);
971
+ if (n && n.strings === e.strings) {
972
+ n.parts.forEach((t, n) => t.update(e.values[n]));
973
+ return;
974
+ }
975
+ if (n) for (let e of n.parts) e && typeof e.dispose == "function" && e.dispose();
976
+ let r;
977
+ try {
978
+ let { fragment: n, parts: i } = K(e);
979
+ r = i;
980
+ let a = /* @__PURE__ */ new Map();
981
+ Z(n.childNodes, Array.from(t.childNodes), a), Q(r, a);
982
+ for (let t = 0; t < e.values.length; t++) r[t] && r[t].update(e.values[t]);
983
+ } catch (n) {
984
+ if (n instanceof J) return console.warn("[cossack] hydration mismatch, falling back to render:", n.message), q(e, t);
985
+ throw n;
986
+ }
987
+ G.set(t, {
988
+ strings: e.strings,
989
+ parts: r
990
+ });
991
+ };
992
+ //#endregion
993
+ export { b as A, n as B, m as C, g as D, w as E, h as F, re as I, i as L, ee as M, v as N, p as O, y as P, t as R, S, te as T, e as V, a as _, D as a, _ as b, M as c, j as d, c as f, s as g, u as h, N as i, T as j, C as k, q as l, d as m, A as n, $ as o, f as p, O as r, k as s, E as t, B as u, l as v, ne as w, x, o as y, r as z };