aberdeen 1.10.0 → 1.10.2

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 (145) hide show
  1. package/dist/src/aberdeen.d.ts +916 -0
  2. package/dist/src/aberdeen.js +1792 -0
  3. package/dist/src/aberdeen.js.map +11 -0
  4. package/dist/src/aberdeen.min.js +10 -0
  5. package/dist/src/aberdeen.min.js.map +10 -0
  6. package/dist/src/dispatcher.d.ts +57 -0
  7. package/dist/src/dispatcher.js +66 -0
  8. package/{dist-min → dist/src}/dispatcher.js.map +3 -3
  9. package/dist/src/dispatcher.min.js +4 -0
  10. package/dist/src/dispatcher.min.js.map +10 -0
  11. package/dist/src/helpers/reverseSortedSet.d.ts +96 -0
  12. package/dist/src/prediction.d.ts +33 -0
  13. package/dist/src/prediction.js +112 -0
  14. package/{dist-min → dist/src}/prediction.js.map +3 -3
  15. package/dist/src/prediction.min.js +4 -0
  16. package/dist/src/prediction.min.js.map +10 -0
  17. package/dist/src/route.d.ts +116 -0
  18. package/dist/src/route.js +252 -0
  19. package/dist/src/route.js.map +10 -0
  20. package/dist/src/route.min.js +4 -0
  21. package/dist/src/route.min.js.map +10 -0
  22. package/dist/src/transitions.d.ts +18 -0
  23. package/dist/src/transitions.js +47 -0
  24. package/{dist-min → dist/src}/transitions.js.map +3 -3
  25. package/dist/src/transitions.min.js +4 -0
  26. package/dist/src/transitions.min.js.map +10 -0
  27. package/dist/tests/fakedom.d.ts +9 -0
  28. package/dist/tests/fakedom.js +577 -0
  29. package/dist/tests/fakedom.js.map +10 -0
  30. package/dist/tests/helpers.d.ts +21 -0
  31. package/dist/tests/helpers.js +674 -0
  32. package/dist/tests/helpers.js.map +11 -0
  33. package/dist-docs/.nojekyll +1 -0
  34. package/dist-docs/Tutorial/index.html +296 -0
  35. package/dist-docs/aberdeen/A/index.html +115 -0
  36. package/dist-docs/aberdeen/NO_COPY/index.html +4 -0
  37. package/dist-docs/aberdeen/PromiseProxy/index.html +8 -0
  38. package/dist-docs/aberdeen/clean/index.html +11 -0
  39. package/dist-docs/aberdeen/clone/index.html +5 -0
  40. package/dist-docs/aberdeen/copy/index.html +22 -0
  41. package/dist-docs/aberdeen/count/index.html +7 -0
  42. package/dist-docs/aberdeen/cssVars/index.html +11 -0
  43. package/dist-docs/aberdeen/darkMode/index.html +9 -0
  44. package/dist-docs/aberdeen/default/index.html +328 -0
  45. package/dist-docs/aberdeen/derive/index.html +18 -0
  46. package/dist-docs/aberdeen/disableCreateDestroy/index.html +6 -0
  47. package/dist-docs/aberdeen/dump/index.html +11 -0
  48. package/dist-docs/aberdeen/index.html +52 -0
  49. package/dist-docs/aberdeen/insertCss/index.html +30 -0
  50. package/dist-docs/aberdeen/insertGlobalCss/index.html +13 -0
  51. package/dist-docs/aberdeen/invertString/index.html +13 -0
  52. package/dist-docs/aberdeen/isEmpty/index.html +12 -0
  53. package/dist-docs/aberdeen/map/index.html +26 -0
  54. package/dist-docs/aberdeen/merge/index.html +11 -0
  55. package/dist-docs/aberdeen/mount/index.html +17 -0
  56. package/dist-docs/aberdeen/multiMap/index.html +28 -0
  57. package/dist-docs/aberdeen/onEach/index.html +16 -0
  58. package/dist-docs/aberdeen/partition/index.html +36 -0
  59. package/dist-docs/aberdeen/peek/index.html +40 -0
  60. package/dist-docs/aberdeen/proxy/index.html +31 -0
  61. package/dist-docs/aberdeen/ref/index.html +13 -0
  62. package/dist-docs/aberdeen/runQueue/index.html +13 -0
  63. package/dist-docs/aberdeen/setErrorHandler/index.html +16 -0
  64. package/dist-docs/aberdeen/setSpacingCssVars/index.html +8 -0
  65. package/dist-docs/aberdeen/unmountAll/index.html +5 -0
  66. package/dist-docs/aberdeen/unproxy/index.html +11 -0
  67. package/{dist → dist-docs/assets/aberdeen}/aberdeen.d.ts +20 -20
  68. package/{dist → dist-docs/assets/aberdeen}/aberdeen.js +26 -25
  69. package/dist-docs/assets/aberdeen/aberdeen.js.map +11 -0
  70. package/dist-docs/assets/aberdeen/aberdeen.min.js +10 -0
  71. package/dist-docs/assets/aberdeen/aberdeen.min.js.map +10 -0
  72. package/{dist → dist-docs/assets/aberdeen}/dispatcher.js.map +1 -1
  73. package/dist-docs/assets/aberdeen/dispatcher.min.js +4 -0
  74. package/dist-docs/assets/aberdeen/dispatcher.min.js.map +10 -0
  75. package/{dist → dist-docs/assets/aberdeen}/prediction.js.map +1 -1
  76. package/dist-docs/assets/aberdeen/prediction.min.js +4 -0
  77. package/dist-docs/assets/aberdeen/prediction.min.js.map +10 -0
  78. package/{dist → dist-docs/assets/aberdeen}/route.js +24 -9
  79. package/dist-docs/assets/aberdeen/route.js.map +10 -0
  80. package/dist-docs/assets/aberdeen/route.min.js +4 -0
  81. package/dist-docs/assets/aberdeen/route.min.js.map +10 -0
  82. package/{dist → dist-docs/assets/aberdeen}/transitions.js.map +1 -1
  83. package/dist-docs/assets/aberdeen/transitions.min.js +4 -0
  84. package/dist-docs/assets/aberdeen/transitions.min.js.map +10 -0
  85. package/dist-docs/assets/custom.js +573 -0
  86. package/dist-docs/assets/favicon.png +0 -0
  87. package/dist-docs/assets/hierarchy.js +1 -0
  88. package/dist-docs/assets/highlight.css +134 -0
  89. package/dist-docs/assets/icons.js +18 -0
  90. package/dist-docs/assets/icons.svg +1 -0
  91. package/dist-docs/assets/main.js +60 -0
  92. package/dist-docs/assets/navigation.js +1 -0
  93. package/dist-docs/assets/search.js +1 -0
  94. package/dist-docs/assets/style.css +1640 -0
  95. package/dist-docs/dispatcher/Dispatcher/index.html +21 -0
  96. package/dist-docs/dispatcher/MATCH_FAILED/index.html +2 -0
  97. package/dist-docs/dispatcher/MATCH_REST/index.html +2 -0
  98. package/dist-docs/dispatcher/index.html +4 -0
  99. package/dist-docs/hierarchy.html +1 -0
  100. package/dist-docs/index.html +61 -0
  101. package/dist-docs/media/CHANGELOG.md +184 -0
  102. package/dist-docs/modules.html +1 -0
  103. package/dist-docs/prediction/applyCanon/index.html +13 -0
  104. package/dist-docs/prediction/applyPrediction/index.html +8 -0
  105. package/dist-docs/prediction/index.html +9 -0
  106. package/dist-docs/route/Route/index.html +23 -0
  107. package/dist-docs/route/back/index.html +4 -0
  108. package/dist-docs/route/current/index.html +2 -0
  109. package/dist-docs/route/go/index.html +14 -0
  110. package/dist-docs/route/index.html +14 -0
  111. package/dist-docs/route/interceptLinks/index.html +8 -0
  112. package/dist-docs/route/persistScroll/index.html +6 -0
  113. package/dist-docs/route/push/index.html +6 -0
  114. package/dist-docs/route/setLog/index.html +3 -0
  115. package/dist-docs/route/up/index.html +5 -0
  116. package/dist-docs/sitemap.xml +227 -0
  117. package/dist-docs/transitions/grow/index.html +6 -0
  118. package/dist-docs/transitions/index.html +5 -0
  119. package/dist-docs/transitions/shrink/index.html +6 -0
  120. package/package.json +33 -24
  121. package/skill/SKILL.md +11 -10
  122. package/skill/aberdeen.md +111 -111
  123. package/skill/dispatcher.md +6 -6
  124. package/skill/prediction.md +3 -3
  125. package/skill/route.md +17 -17
  126. package/skill/transitions.md +3 -3
  127. package/src/aberdeen.ts +41 -42
  128. package/src/route.ts +27 -8
  129. package/dist/aberdeen.js.map +0 -11
  130. package/dist/route.js.map +0 -10
  131. package/dist-min/aberdeen.js +0 -10
  132. package/dist-min/aberdeen.js.map +0 -11
  133. package/dist-min/dispatcher.js +0 -4
  134. package/dist-min/prediction.js +0 -4
  135. package/dist-min/route.js +0 -4
  136. package/dist-min/route.js.map +0 -10
  137. package/dist-min/transitions.js +0 -4
  138. /package/{dist → dist-docs/assets/aberdeen}/dispatcher.d.ts +0 -0
  139. /package/{dist → dist-docs/assets/aberdeen}/dispatcher.js +0 -0
  140. /package/{dist → dist-docs/assets/aberdeen}/helpers/reverseSortedSet.d.ts +0 -0
  141. /package/{dist → dist-docs/assets/aberdeen}/prediction.d.ts +0 -0
  142. /package/{dist → dist-docs/assets/aberdeen}/prediction.js +0 -0
  143. /package/{dist → dist-docs/assets/aberdeen}/route.d.ts +0 -0
  144. /package/{dist → dist-docs/assets/aberdeen}/transitions.d.ts +0 -0
  145. /package/{dist → dist-docs/assets/aberdeen}/transitions.js +0 -0
@@ -0,0 +1,1792 @@
1
+ // src/helpers/reverseSortedSet.ts
2
+ class ReverseSortedSet {
3
+ keyProp;
4
+ tail;
5
+ symbols;
6
+ constructor(keyProp) {
7
+ this.keyProp = keyProp;
8
+ this.tail = {};
9
+ this.symbols = [Symbol(0)];
10
+ }
11
+ add(item) {
12
+ if (this.symbols[0] in item)
13
+ return false;
14
+ const level = 1 + (Math.clz32(Math.random() * 4294967295) >> 2);
15
+ for (let l = this.symbols.length;l < level; l++)
16
+ this.symbols.push(Symbol(l));
17
+ const keyProp = this.keyProp;
18
+ const key = item[keyProp];
19
+ let prev;
20
+ let current = this.tail;
21
+ for (let l = this.symbols.length - 1;l >= 0; l--) {
22
+ const symbol = this.symbols[l];
23
+ while ((prev = current[symbol]) && prev[keyProp] > key)
24
+ current = prev;
25
+ if (l < level) {
26
+ item[symbol] = current[symbol];
27
+ current[symbol] = item;
28
+ }
29
+ }
30
+ return true;
31
+ }
32
+ has(item) {
33
+ return this.symbols[0] in item;
34
+ }
35
+ fetchLast() {
36
+ const item = this.tail[this.symbols[0]];
37
+ if (item) {
38
+ this.remove(item);
39
+ return item;
40
+ }
41
+ }
42
+ isEmpty() {
43
+ return this.tail[this.symbols[0]] === undefined;
44
+ }
45
+ get(indexValue) {
46
+ const keyProp = this.keyProp;
47
+ let prev;
48
+ let current = this.tail;
49
+ for (let l = this.symbols.length - 1;l >= 0; l--) {
50
+ const symbol = this.symbols[l];
51
+ while ((prev = current[symbol]) && prev[keyProp] > indexValue)
52
+ current = prev;
53
+ }
54
+ return current[this.symbols[0]]?.[keyProp] === indexValue ? current[this.symbols[0]] : undefined;
55
+ }
56
+ *[Symbol.iterator]() {
57
+ const symbol = this.symbols[0];
58
+ let node = this.tail[symbol];
59
+ while (node) {
60
+ yield node;
61
+ node = node[symbol];
62
+ }
63
+ }
64
+ prev(item) {
65
+ return item[this.symbols[0]];
66
+ }
67
+ remove(item) {
68
+ if (!(this.symbols[0] in item))
69
+ return false;
70
+ const keyProp = this.keyProp;
71
+ const prop = item[keyProp];
72
+ let prev;
73
+ let current = this.tail;
74
+ for (let l = this.symbols.length - 1;l >= 0; l--) {
75
+ const symbol = this.symbols[l];
76
+ while ((prev = current[symbol]) && prev[keyProp] >= prop && prev !== item)
77
+ current = prev;
78
+ if (prev === item) {
79
+ current[symbol] = prev[symbol];
80
+ delete prev[symbol];
81
+ }
82
+ }
83
+ return prev === item;
84
+ }
85
+ clear() {
86
+ const symbol = this.symbols[0];
87
+ let current = this.tail;
88
+ while (current) {
89
+ const prev = current[symbol];
90
+ for (const symbol2 of this.symbols) {
91
+ if (!(symbol2 in current))
92
+ break;
93
+ delete current[symbol2];
94
+ }
95
+ current = prev;
96
+ }
97
+ this.tail = {};
98
+ }
99
+ }
100
+
101
+ // src/aberdeen.ts
102
+ var sortedQueue;
103
+ var runQueueDepth = 0;
104
+ var topRedrawScope;
105
+ function queue(runner) {
106
+ if (!sortedQueue) {
107
+ sortedQueue = new ReverseSortedSet("prio");
108
+ queueMicrotask(runQueue);
109
+ } else if (!(runQueueDepth & 1)) {
110
+ runQueueDepth++;
111
+ if (runQueueDepth > 98) {
112
+ throw new Error("Too many recursive updates from observes");
113
+ }
114
+ }
115
+ sortedQueue.add(runner);
116
+ }
117
+ function runQueue() {
118
+ let time = Date.now();
119
+ while (sortedQueue) {
120
+ const runner = sortedQueue.fetchLast();
121
+ if (!runner)
122
+ break;
123
+ if (runQueueDepth & 1)
124
+ runQueueDepth++;
125
+ runner.queueRun();
126
+ }
127
+ sortedQueue = undefined;
128
+ runQueueDepth = 0;
129
+ time = Date.now() - time;
130
+ if (time > 9)
131
+ console.debug(`Aberdeen queue took ${time}ms`);
132
+ }
133
+ function partToStr(part) {
134
+ if (typeof part === "string") {
135
+ return `${part}\x01`;
136
+ }
137
+ let result = "";
138
+ let num = Math.abs(Math.round(part));
139
+ const negative = part < 0;
140
+ while (num > 0) {
141
+ result = String.fromCharCode(negative ? 65534 - num % 65533 : 2 + num % 65533) + result;
142
+ num = Math.floor(num / 65533);
143
+ }
144
+ return String.fromCharCode(128 + (negative ? -result.length : result.length)) + result;
145
+ }
146
+ function invertString(input) {
147
+ let result = "";
148
+ for (let i = 0;i < input.length; i++) {
149
+ result += String.fromCodePoint(65535 - input.charCodeAt(i));
150
+ }
151
+ return result;
152
+ }
153
+ var lastPrio = 0;
154
+
155
+ class Scope {
156
+ prio = --lastPrio;
157
+ remove() {
158
+ const lastNode = this.getLastNode();
159
+ if (lastNode)
160
+ removeNodes(lastNode, this.getPrecedingNode());
161
+ this.delete();
162
+ }
163
+ }
164
+
165
+ class DelayedOneTimeRunner {
166
+ queueRun;
167
+ prio = --lastPrio;
168
+ constructor(queueRun) {
169
+ this.queueRun = queueRun;
170
+ queue(this);
171
+ }
172
+ }
173
+
174
+ class ContentScope extends Scope {
175
+ cleaners;
176
+ changes;
177
+ constructor(cleaners = []) {
178
+ super();
179
+ this.cleaners = cleaners;
180
+ }
181
+ lastChild;
182
+ redraw() {}
183
+ getLastNode() {
184
+ return findLastNodeInPrevSiblings(this.lastChild);
185
+ }
186
+ delete() {
187
+ for (const cleaner of this.cleaners) {
188
+ if (typeof cleaner === "function")
189
+ cleaner();
190
+ else
191
+ cleaner.delete(this);
192
+ }
193
+ this.cleaners.length = 0;
194
+ sortedQueue?.remove(this);
195
+ this.lastChild = undefined;
196
+ }
197
+ onChange(target, index, newData, oldData) {
198
+ if (!this.changes) {
199
+ this.changes = new Map;
200
+ queue(this);
201
+ }
202
+ let targetDelta = this.changes.get(target);
203
+ if (!targetDelta) {
204
+ targetDelta = new Map;
205
+ this.changes.set(target, targetDelta);
206
+ }
207
+ if (targetDelta.has(index)) {
208
+ if (targetDelta.get(index) === newData)
209
+ targetDelta.delete(index);
210
+ } else {
211
+ targetDelta.set(index, oldData);
212
+ }
213
+ }
214
+ fetchHasChanges() {
215
+ if (!this.changes)
216
+ return false;
217
+ for (const targetDelta of this.changes.values()) {
218
+ if (targetDelta.size > 0) {
219
+ delete this.changes;
220
+ return true;
221
+ }
222
+ }
223
+ delete this.changes;
224
+ return false;
225
+ }
226
+ queueRun() {
227
+ if (!this.fetchHasChanges())
228
+ return;
229
+ this.remove();
230
+ topRedrawScope = this;
231
+ this.redraw();
232
+ topRedrawScope = undefined;
233
+ }
234
+ getInsertAfterNode() {
235
+ return this.getLastNode() || this.getPrecedingNode();
236
+ }
237
+ getChildPrevSibling() {
238
+ return this.lastChild;
239
+ }
240
+ }
241
+
242
+ class ChainedScope extends ContentScope {
243
+ el;
244
+ svg;
245
+ prevSibling;
246
+ constructor(el, svg, useParentCleaners = false) {
247
+ super(useParentCleaners ? currentScope.cleaners : []);
248
+ this.el = el;
249
+ this.svg = svg;
250
+ if (el === currentScope.el) {
251
+ this.prevSibling = currentScope.getChildPrevSibling();
252
+ currentScope.lastChild = this;
253
+ } else {
254
+ this.prevSibling = el.lastChild || undefined;
255
+ }
256
+ if (!useParentCleaners)
257
+ currentScope.cleaners.push(this);
258
+ }
259
+ getPrecedingNode() {
260
+ return findLastNodeInPrevSiblings(this.prevSibling);
261
+ }
262
+ getChildPrevSibling() {
263
+ return this.lastChild || this.prevSibling;
264
+ }
265
+ }
266
+
267
+ class RegularScope extends ChainedScope {
268
+ renderer;
269
+ constructor(el, svg, renderer) {
270
+ super(el, svg);
271
+ this.renderer = renderer;
272
+ this.redraw();
273
+ }
274
+ redraw() {
275
+ const savedScope = currentScope;
276
+ currentScope = this;
277
+ try {
278
+ this.renderer();
279
+ } catch (e) {
280
+ handleError(e, true);
281
+ }
282
+ currentScope = savedScope;
283
+ }
284
+ }
285
+
286
+ class RootScope extends ContentScope {
287
+ el = document.body;
288
+ svg = false;
289
+ getPrecedingNode() {
290
+ return;
291
+ }
292
+ }
293
+
294
+ class MountScope extends ContentScope {
295
+ el;
296
+ renderer;
297
+ svg;
298
+ constructor(el, renderer) {
299
+ super();
300
+ this.el = el;
301
+ this.renderer = renderer;
302
+ this.svg = el.namespaceURI === "http://www.w3.org/2000/svg";
303
+ this.redraw();
304
+ currentScope.cleaners.push(this);
305
+ }
306
+ redraw() {
307
+ RegularScope.prototype.redraw.call(this);
308
+ }
309
+ getPrecedingNode() {
310
+ return;
311
+ }
312
+ delete() {
313
+ removeNodes(this.getLastNode(), this.getPrecedingNode());
314
+ super.delete();
315
+ }
316
+ remove() {
317
+ this.delete();
318
+ }
319
+ }
320
+ function removeNodes(node, preNode) {
321
+ while (node && node !== preNode) {
322
+ const prevNode = node.previousSibling;
323
+ const onDestroy = onDestroyMap.get(node);
324
+ if (onDestroy && node instanceof Element) {
325
+ if (onDestroy !== true) {
326
+ if (typeof onDestroy === "function") {
327
+ onDestroy(node);
328
+ } else {
329
+ destroyWithClass(node, onDestroy);
330
+ }
331
+ onDestroyMap.set(node, true);
332
+ }
333
+ } else {
334
+ node.remove();
335
+ }
336
+ node = prevNode;
337
+ }
338
+ }
339
+ function findLastNodeInPrevSiblings(sibling) {
340
+ if (!sibling || sibling instanceof Node)
341
+ return sibling;
342
+ return sibling.getLastNode() || sibling.getPrecedingNode();
343
+ }
344
+
345
+ class ResultScope extends ChainedScope {
346
+ renderer;
347
+ result = optProxy({ value: undefined });
348
+ constructor(renderer) {
349
+ super(currentScope.el, currentScope.svg);
350
+ this.renderer = renderer;
351
+ this.redraw();
352
+ }
353
+ redraw() {
354
+ const savedScope = currentScope;
355
+ currentScope = this;
356
+ try {
357
+ this.result.value = this.renderer();
358
+ } catch (e) {
359
+ handleError(e, true);
360
+ }
361
+ currentScope = savedScope;
362
+ }
363
+ }
364
+
365
+ class SetArgScope extends ChainedScope {
366
+ key;
367
+ target;
368
+ svg = false;
369
+ constructor(el, key, target) {
370
+ super(el, el.namespaceURI === "http://www.w3.org/2000/svg");
371
+ this.key = key;
372
+ this.target = target;
373
+ this.redraw();
374
+ }
375
+ redraw() {
376
+ const savedScope = currentScope;
377
+ currentScope = this;
378
+ applyArg(this.el, this.key, this.target.value);
379
+ currentScope = savedScope;
380
+ }
381
+ }
382
+
383
+ class OnEachScope extends Scope {
384
+ renderer;
385
+ makeSortKey;
386
+ parentElement = currentScope.el;
387
+ prevSibling;
388
+ target;
389
+ byIndex = new Map;
390
+ sortedSet = new ReverseSortedSet("sortKey");
391
+ changedIndexes = new Map;
392
+ constructor(proxy, renderer, makeSortKey) {
393
+ super();
394
+ this.renderer = renderer;
395
+ this.makeSortKey = makeSortKey;
396
+ const target = this.target = proxy[TARGET_SYMBOL] || proxy;
397
+ subscribe(target, ANY_SYMBOL, this);
398
+ this.prevSibling = currentScope.getChildPrevSibling();
399
+ currentScope.lastChild = this;
400
+ currentScope.cleaners.push(this);
401
+ if (target instanceof Array) {
402
+ for (let i = 0;i < target.length; i++) {
403
+ new OnEachItemScope(this, i, false);
404
+ }
405
+ } else {
406
+ for (const key of target instanceof Map ? target.keys() : Object.keys(target)) {
407
+ new OnEachItemScope(this, key, false);
408
+ }
409
+ }
410
+ }
411
+ getPrecedingNode() {
412
+ return findLastNodeInPrevSiblings(this.prevSibling);
413
+ }
414
+ onChange(target, index, newData, oldData) {
415
+ if (!(target instanceof Array) || typeof index === "number") {
416
+ if (this.changedIndexes.has(index)) {
417
+ if (this.changedIndexes.get(index) === newData) {
418
+ this.changedIndexes.delete(index);
419
+ }
420
+ } else {
421
+ this.changedIndexes.set(index, oldData);
422
+ queue(this);
423
+ }
424
+ }
425
+ }
426
+ queueRun() {
427
+ const indexes = this.changedIndexes;
428
+ this.changedIndexes = new Map;
429
+ for (const index of indexes.keys()) {
430
+ const oldScope = this.byIndex.get(index);
431
+ if (oldScope)
432
+ oldScope.remove();
433
+ if (this.target instanceof Map ? this.target.has(index) : (index in this.target)) {
434
+ new OnEachItemScope(this, index, true);
435
+ } else {
436
+ this.byIndex.delete(index);
437
+ }
438
+ }
439
+ topRedrawScope = undefined;
440
+ }
441
+ delete() {
442
+ for (const scope of this.byIndex.values()) {
443
+ scope.delete();
444
+ }
445
+ sortedQueue?.remove(this);
446
+ this.byIndex.clear();
447
+ setTimeout(() => {
448
+ this.sortedSet.clear();
449
+ }, 1);
450
+ }
451
+ getLastNode() {
452
+ for (const scope of this.sortedSet) {
453
+ const node = scope.getActualLastNode();
454
+ if (node)
455
+ return node;
456
+ }
457
+ }
458
+ }
459
+
460
+ class OnEachItemScope extends ContentScope {
461
+ parent;
462
+ itemIndex;
463
+ sortKey;
464
+ el;
465
+ svg;
466
+ constructor(parent, itemIndex, topRedraw) {
467
+ super();
468
+ this.parent = parent;
469
+ this.itemIndex = itemIndex;
470
+ this.el = parent.parentElement;
471
+ this.svg = currentScope.svg;
472
+ this.parent.byIndex.set(this.itemIndex, this);
473
+ this.lastChild = this;
474
+ if (topRedraw)
475
+ topRedrawScope = this;
476
+ this.redraw();
477
+ }
478
+ getPrecedingNode() {
479
+ this.parent.sortedSet.add(this);
480
+ const preScope = this.parent.sortedSet.prev(this);
481
+ if (preScope)
482
+ return findLastNodeInPrevSiblings(preScope.lastChild);
483
+ return this.parent.getPrecedingNode();
484
+ }
485
+ getLastNode() {
486
+ return this.getPrecedingNode();
487
+ }
488
+ getActualLastNode() {
489
+ let child = this.lastChild;
490
+ while (child && child !== this) {
491
+ if (child instanceof Node)
492
+ return child;
493
+ const node = child.getLastNode();
494
+ if (node)
495
+ return node;
496
+ child = child.getPrecedingNode();
497
+ }
498
+ }
499
+ queueRun() {
500
+ if (currentScope !== ROOT_SCOPE)
501
+ internalError(4);
502
+ if (!this.fetchHasChanges())
503
+ return;
504
+ if (this.sortKey !== undefined) {
505
+ const lastNode = this.getActualLastNode();
506
+ if (lastNode)
507
+ removeNodes(lastNode, this.getPrecedingNode());
508
+ }
509
+ this.delete();
510
+ this.lastChild = this;
511
+ topRedrawScope = this;
512
+ this.redraw();
513
+ topRedrawScope = undefined;
514
+ }
515
+ redraw() {
516
+ let value;
517
+ const target = this.parent.target;
518
+ let itemIndex = this.itemIndex;
519
+ if (target instanceof Map) {
520
+ value = optProxy(target.get(itemIndex));
521
+ itemIndex = optProxy(itemIndex);
522
+ } else {
523
+ value = optProxy(target[itemIndex]);
524
+ }
525
+ const savedScope = currentScope;
526
+ currentScope = this;
527
+ let sortKey;
528
+ try {
529
+ if (this.parent.makeSortKey) {
530
+ const rawSortKey = this.parent.makeSortKey(value, itemIndex);
531
+ if (rawSortKey != null)
532
+ sortKey = rawSortKey instanceof Array ? rawSortKey.map(partToStr).join("") : rawSortKey;
533
+ } else {
534
+ sortKey = itemIndex;
535
+ }
536
+ if (typeof sortKey === "number")
537
+ sortKey = partToStr(sortKey);
538
+ if (this.sortKey !== sortKey) {
539
+ this.parent.sortedSet.remove(this);
540
+ this.sortKey = sortKey;
541
+ }
542
+ if (sortKey != null)
543
+ this.parent.renderer(value, itemIndex);
544
+ } catch (e) {
545
+ handleError(e, sortKey != null);
546
+ }
547
+ currentScope = savedScope;
548
+ }
549
+ getInsertAfterNode() {
550
+ if (this.sortKey == null)
551
+ internalError(1);
552
+ return findLastNodeInPrevSiblings(this.lastChild);
553
+ }
554
+ remove() {
555
+ if (this.sortKey !== undefined) {
556
+ const lastNode = this.getActualLastNode();
557
+ if (lastNode)
558
+ removeNodes(lastNode, this.getPrecedingNode());
559
+ this.parent.sortedSet.remove(this);
560
+ this.sortKey = undefined;
561
+ }
562
+ this.delete();
563
+ }
564
+ }
565
+ function addNode(el, node) {
566
+ if (el !== currentScope.el) {
567
+ el.appendChild(node);
568
+ return;
569
+ }
570
+ const parentEl = currentScope.el;
571
+ const prevNode = currentScope.getInsertAfterNode();
572
+ parentEl.insertBefore(node, prevNode ? prevNode.nextSibling : parentEl.firstChild);
573
+ currentScope.lastChild = node;
574
+ }
575
+ var ROOT_SCOPE = new RootScope;
576
+ var currentScope = ROOT_SCOPE;
577
+ function leakScope(func) {
578
+ const savedScope = currentScope;
579
+ currentScope = new RootScope;
580
+ try {
581
+ return func();
582
+ } finally {
583
+ currentScope = savedScope;
584
+ }
585
+ }
586
+ var ANY_SYMBOL = Symbol("any");
587
+ var TARGET_SYMBOL = Symbol("target");
588
+ var MAP_SIZE_SYMBOL = Symbol("mapSize");
589
+ var subscribers = new WeakMap;
590
+ var peeking = 0;
591
+ function subscribe(target, index, observer = currentScope) {
592
+ if (observer === ROOT_SCOPE || peeking)
593
+ return;
594
+ let byTarget = subscribers.get(target);
595
+ if (!byTarget)
596
+ subscribers.set(target, byTarget = new Map);
597
+ if (index !== ANY_SYMBOL && byTarget.get(ANY_SYMBOL)?.has(observer))
598
+ return;
599
+ let byIndex = byTarget.get(index);
600
+ if (!byIndex)
601
+ byTarget.set(index, byIndex = new Set);
602
+ if (byIndex.has(observer))
603
+ return;
604
+ byIndex.add(observer);
605
+ if (observer === currentScope) {
606
+ currentScope.cleaners.push(byIndex);
607
+ } else {
608
+ currentScope.cleaners.push(() => {
609
+ byIndex.delete(observer);
610
+ });
611
+ }
612
+ }
613
+ function onEach(target, render, makeKey) {
614
+ if (!target || typeof target !== "object")
615
+ throw new Error("A.onEach requires an object");
616
+ target = target[TARGET_SYMBOL] || target;
617
+ new OnEachScope(target, render, makeKey);
618
+ }
619
+ function isObjEmpty(obj) {
620
+ for (const k of Object.keys(obj))
621
+ return false;
622
+ return true;
623
+ }
624
+ var EMPTY = Symbol("empty");
625
+ function isEmpty(proxied) {
626
+ const target = proxied[TARGET_SYMBOL] || proxied;
627
+ const scope = currentScope;
628
+ if (target instanceof Array) {
629
+ subscribe(target, "length", (index, newData, oldData) => {
630
+ if (!newData !== !oldData)
631
+ scope.onChange(target, EMPTY, !newData, !oldData);
632
+ });
633
+ return !target.length;
634
+ }
635
+ if (target instanceof Map) {
636
+ subscribe(target, MAP_SIZE_SYMBOL, (index, newData, oldData) => {
637
+ if (!newData !== !oldData)
638
+ scope.onChange(target, EMPTY, !newData, !oldData);
639
+ });
640
+ return !target.size;
641
+ }
642
+ let oldEmpty = isObjEmpty(target);
643
+ subscribe(target, ANY_SYMBOL, (index, newData, oldData) => {
644
+ if (newData === EMPTY !== (oldData === EMPTY)) {
645
+ const newEmpty = isObjEmpty(target);
646
+ scope.onChange(target, EMPTY, newEmpty, oldEmpty);
647
+ oldEmpty = newEmpty;
648
+ }
649
+ });
650
+ return oldEmpty;
651
+ }
652
+ function count(proxied) {
653
+ if (proxied instanceof Array)
654
+ return ref(proxied, "length");
655
+ if (proxied instanceof Map)
656
+ return ref(proxied, "size");
657
+ const target = proxied[TARGET_SYMBOL] || proxied;
658
+ let cnt = 0;
659
+ for (const k of Object.keys(target))
660
+ if (target[k] !== undefined)
661
+ cnt++;
662
+ const result = proxy(cnt);
663
+ subscribe(target, ANY_SYMBOL, (index, newData, oldData) => {
664
+ if (oldData === newData) {} else if (oldData === EMPTY)
665
+ result.value = ++cnt;
666
+ else if (newData === EMPTY)
667
+ result.value = --cnt;
668
+ });
669
+ return result;
670
+ }
671
+ function defaultEmitHandler(target, index, newData, oldData) {
672
+ if (newData === oldData && newData !== undefined)
673
+ return;
674
+ const byTarget = subscribers.get(target);
675
+ if (byTarget === undefined)
676
+ return;
677
+ for (const what of [index, ANY_SYMBOL]) {
678
+ const byIndex = byTarget.get(what);
679
+ if (byIndex) {
680
+ for (const observer of byIndex) {
681
+ if (typeof observer === "function")
682
+ observer(index, newData, oldData);
683
+ else
684
+ observer.onChange(target, index, newData, oldData);
685
+ }
686
+ }
687
+ }
688
+ }
689
+ var emit = defaultEmitHandler;
690
+ var objectHandler = {
691
+ get(target, prop) {
692
+ if (prop === TARGET_SYMBOL)
693
+ return target;
694
+ subscribe(target, prop);
695
+ return optProxy(target[prop]);
696
+ },
697
+ set(target, prop, newData) {
698
+ if (typeof newData === "object" && newData)
699
+ newData = newData[TARGET_SYMBOL] || newData;
700
+ const oldData = target.hasOwnProperty(prop) ? target[prop] : EMPTY;
701
+ if (newData !== oldData) {
702
+ target[prop] = newData;
703
+ emit(target, prop, newData, oldData);
704
+ }
705
+ return true;
706
+ },
707
+ deleteProperty(target, prop) {
708
+ const old = target.hasOwnProperty(prop) ? target[prop] : EMPTY;
709
+ delete target[prop];
710
+ emit(target, prop, EMPTY, old);
711
+ return true;
712
+ },
713
+ has(target, prop) {
714
+ subscribe(target, prop);
715
+ return target.hasOwnProperty(prop);
716
+ },
717
+ ownKeys(target) {
718
+ subscribe(target, ANY_SYMBOL);
719
+ return Reflect.ownKeys(target);
720
+ }
721
+ };
722
+ function arraySet(target, prop, newData) {
723
+ if (typeof newData === "object" && newData) {
724
+ newData = newData[TARGET_SYMBOL] || newData;
725
+ }
726
+ let oldData = target[prop];
727
+ if (oldData === undefined && !target.hasOwnProperty(prop))
728
+ oldData = EMPTY;
729
+ if (newData !== oldData) {
730
+ const oldLength = target.length;
731
+ if (prop === "length") {
732
+ target.length = newData;
733
+ for (let i = newData;i < oldLength; i++) {
734
+ emit(target, i, EMPTY, target[i]);
735
+ }
736
+ } else {
737
+ if (typeof prop === "string") {
738
+ const n = 0 | prop;
739
+ if (String(n) === prop && n >= 0)
740
+ prop = n;
741
+ }
742
+ target[prop] = newData;
743
+ emit(target, prop, newData, oldData);
744
+ }
745
+ if (target.length !== oldLength) {
746
+ emit(target, "length", target.length, oldLength);
747
+ }
748
+ }
749
+ return true;
750
+ }
751
+ var arrayHandler = {
752
+ get(target, prop) {
753
+ if (prop === TARGET_SYMBOL)
754
+ return target;
755
+ if (typeof prop === "string") {
756
+ const n = 0 | prop;
757
+ if (String(n) === prop && n >= 0)
758
+ prop = n;
759
+ }
760
+ subscribe(target, prop);
761
+ return optProxy(target[prop]);
762
+ },
763
+ set: arraySet,
764
+ deleteProperty(target, prop) {
765
+ if (typeof prop === "string") {
766
+ const n = 0 | prop;
767
+ if (String(n) === prop && n >= 0)
768
+ prop = n;
769
+ }
770
+ let oldData = target[prop];
771
+ if (oldData === undefined && !target.hasOwnProperty(prop))
772
+ oldData = EMPTY;
773
+ delete target[prop];
774
+ emit(target, prop, EMPTY, oldData);
775
+ return true;
776
+ }
777
+ };
778
+ function wrapIteratorSingle(iterator) {
779
+ return {
780
+ [Symbol.iterator]() {
781
+ return this;
782
+ },
783
+ next() {
784
+ const result = iterator.next();
785
+ if (result.done)
786
+ return result;
787
+ return {
788
+ done: false,
789
+ value: optProxy(result.value)
790
+ };
791
+ }
792
+ };
793
+ }
794
+ function wrapIteratorPair(iterator) {
795
+ return {
796
+ [Symbol.iterator]() {
797
+ return this;
798
+ },
799
+ next() {
800
+ const result = iterator.next();
801
+ if (result.done)
802
+ return result;
803
+ return {
804
+ done: false,
805
+ value: [optProxy(result.value[0]), optProxy(result.value[1])]
806
+ };
807
+ }
808
+ };
809
+ }
810
+ var mapMethodHandlers = {
811
+ get(key) {
812
+ const target = this[TARGET_SYMBOL];
813
+ if (typeof key === "object" && key)
814
+ key = key[TARGET_SYMBOL] || key;
815
+ subscribe(target, key);
816
+ return optProxy(target.get(key));
817
+ },
818
+ set(key, newData) {
819
+ const target = this[TARGET_SYMBOL];
820
+ if (typeof key === "object" && key) {
821
+ key = key[TARGET_SYMBOL] || key;
822
+ }
823
+ if (typeof newData === "object" && newData) {
824
+ newData = newData[TARGET_SYMBOL] || newData;
825
+ }
826
+ let oldData = target.get(key);
827
+ if (oldData === undefined && !target.has(key))
828
+ oldData = EMPTY;
829
+ if (newData !== oldData) {
830
+ const oldSize = target.size;
831
+ target.set(key, newData);
832
+ emit(target, key, newData, oldData);
833
+ emit(target, MAP_SIZE_SYMBOL, target.size, oldSize);
834
+ }
835
+ return this;
836
+ },
837
+ delete(key) {
838
+ const target = this[TARGET_SYMBOL];
839
+ if (typeof key === "object" && key) {
840
+ key = key[TARGET_SYMBOL] || key;
841
+ }
842
+ let oldData = target.get(key);
843
+ if (oldData === undefined && !target.has(key))
844
+ oldData = EMPTY;
845
+ const result = target.delete(key);
846
+ if (result) {
847
+ emit(target, key, EMPTY, oldData);
848
+ emit(target, MAP_SIZE_SYMBOL, target.size, target.size + 1);
849
+ }
850
+ return result;
851
+ },
852
+ clear() {
853
+ const target = this[TARGET_SYMBOL];
854
+ const oldSize = target.size;
855
+ for (const key of target.keys()) {
856
+ emit(target, key, undefined, target.get(key));
857
+ }
858
+ target.clear();
859
+ emit(target, MAP_SIZE_SYMBOL, 0, oldSize);
860
+ },
861
+ has(key) {
862
+ const target = this[TARGET_SYMBOL];
863
+ if (typeof key === "object" && key) {
864
+ key = key[TARGET_SYMBOL] || key;
865
+ }
866
+ subscribe(target, key);
867
+ return target.has(key);
868
+ },
869
+ keys() {
870
+ const target = this[TARGET_SYMBOL];
871
+ subscribe(target, ANY_SYMBOL);
872
+ return wrapIteratorSingle(target.keys());
873
+ },
874
+ values() {
875
+ const target = this[TARGET_SYMBOL];
876
+ subscribe(target, ANY_SYMBOL);
877
+ return wrapIteratorSingle(target.values());
878
+ },
879
+ entries() {
880
+ const target = this[TARGET_SYMBOL];
881
+ subscribe(target, ANY_SYMBOL);
882
+ return wrapIteratorPair(target.entries());
883
+ },
884
+ [Symbol.iterator]() {
885
+ const target = this[TARGET_SYMBOL];
886
+ subscribe(target, ANY_SYMBOL);
887
+ return wrapIteratorPair(target[Symbol.iterator]());
888
+ }
889
+ };
890
+ var mapHandler = {
891
+ get(target, prop) {
892
+ if (prop === TARGET_SYMBOL)
893
+ return target;
894
+ if (mapMethodHandlers.hasOwnProperty(prop)) {
895
+ return mapMethodHandlers[prop];
896
+ }
897
+ if (prop === "size") {
898
+ subscribe(target, MAP_SIZE_SYMBOL);
899
+ return target.size;
900
+ }
901
+ return target[prop];
902
+ }
903
+ };
904
+ var proxyMap = new WeakMap;
905
+ function optProxy(value) {
906
+ if (typeof value !== "object" || !value || value[TARGET_SYMBOL] !== undefined || NO_COPY in value) {
907
+ return value;
908
+ }
909
+ let proxied = proxyMap.get(value);
910
+ if (proxied)
911
+ return proxied;
912
+ let handler;
913
+ if (value instanceof Array) {
914
+ handler = arrayHandler;
915
+ } else if (value instanceof Map) {
916
+ handler = mapHandler;
917
+ } else {
918
+ handler = objectHandler;
919
+ }
920
+ proxied = new Proxy(value, handler);
921
+ proxyMap.set(value, proxied);
922
+ return proxied;
923
+ }
924
+ function proxy(target) {
925
+ if (target instanceof Promise) {
926
+ const result = optProxy({
927
+ busy: true
928
+ });
929
+ target.then((value) => {
930
+ result.value = value;
931
+ result.busy = false;
932
+ }).catch((err) => {
933
+ result.error = err;
934
+ result.busy = false;
935
+ });
936
+ return result;
937
+ }
938
+ return optProxy(typeof target === "object" && target !== null ? target : { value: target });
939
+ }
940
+ function unproxy(target) {
941
+ return target ? target[TARGET_SYMBOL] || target : target;
942
+ }
943
+ var onDestroyMap = new WeakMap;
944
+ function destroyWithClass(element, cls) {
945
+ const classes = cls.split(".").filter((c) => c);
946
+ element.classList.add(...classes);
947
+ setTimeout(() => element.remove(), 2000);
948
+ }
949
+ function copy(a, b, c) {
950
+ if (arguments.length > 2)
951
+ return copySet(a, b, c, 0);
952
+ return copyImpl(a, b, 0);
953
+ }
954
+ function copySet(dst, dstKey, src, flags) {
955
+ let dstVal = peek(dst, dstKey);
956
+ if (src === dstVal)
957
+ return false;
958
+ if (typeof dstVal === "object" && dstVal !== null && typeof src === "object" && src !== null && dstVal.constructor === src.constructor) {
959
+ return copyImpl(dstVal, src, flags);
960
+ }
961
+ src = clone(src);
962
+ if (dst instanceof Map)
963
+ dst.set(dstKey, src);
964
+ else
965
+ dst[dstKey] = clone(src);
966
+ return true;
967
+ }
968
+ function merge(a, b, c) {
969
+ if (arguments.length > 2)
970
+ return copySet(a, b, c, MERGE);
971
+ return copyImpl(a, b, MERGE);
972
+ }
973
+ function copyImpl(dst, src, flags) {
974
+ let unproxied = dst[TARGET_SYMBOL];
975
+ if (unproxied) {
976
+ dst = unproxied;
977
+ flags |= COPY_EMIT;
978
+ }
979
+ unproxied = src[TARGET_SYMBOL];
980
+ if (unproxied) {
981
+ src = unproxied;
982
+ if (currentScope !== ROOT_SCOPE && !peeking)
983
+ flags |= COPY_SUBSCRIBE;
984
+ }
985
+ return copyRecursive(dst, src, flags);
986
+ }
987
+ function copyRecursive(dst, src, flags) {
988
+ if (flags & COPY_SUBSCRIBE)
989
+ subscribe(src, ANY_SYMBOL);
990
+ let changed = false;
991
+ if (src instanceof Array && dst instanceof Array) {
992
+ const dstLen = dst.length;
993
+ const srcLen = src.length;
994
+ for (let index = 0;index < srcLen; index++) {
995
+ let dstValue = dst[index];
996
+ if (dstValue === undefined && !dst.hasOwnProperty(index))
997
+ dstValue = EMPTY;
998
+ let srcValue = src[index];
999
+ if (srcValue === undefined && !src.hasOwnProperty(index)) {
1000
+ delete dst[index];
1001
+ if (flags & COPY_EMIT)
1002
+ emit(dst, index, EMPTY, dstValue);
1003
+ changed = true;
1004
+ } else if (dstValue !== srcValue) {
1005
+ if (typeof srcValue === "object" && srcValue !== null) {
1006
+ if (typeof dstValue === "object" && dstValue !== null && srcValue.constructor === dstValue.constructor && !(NO_COPY in srcValue)) {
1007
+ changed = copyRecursive(dstValue, srcValue, flags) || changed;
1008
+ continue;
1009
+ }
1010
+ srcValue = cloneRecursive(srcValue, flags & COPY_SUBSCRIBE);
1011
+ }
1012
+ dst[index] = srcValue;
1013
+ if (flags & COPY_EMIT)
1014
+ emit(dst, index, srcValue, dstValue);
1015
+ changed = true;
1016
+ }
1017
+ }
1018
+ if (srcLen !== dstLen) {
1019
+ if (flags & COPY_EMIT) {
1020
+ for (let i = srcLen;i < dstLen; i++) {
1021
+ const old = dst[i];
1022
+ delete dst[i];
1023
+ emit(dst, i, EMPTY, old);
1024
+ }
1025
+ dst.length = srcLen;
1026
+ emit(dst, "length", srcLen, dstLen);
1027
+ } else {
1028
+ dst.length = srcLen;
1029
+ }
1030
+ changed = true;
1031
+ }
1032
+ } else if (src instanceof Map && dst instanceof Map) {
1033
+ for (const key of src.keys()) {
1034
+ let srcValue = src.get(key);
1035
+ let dstValue = dst.get(key);
1036
+ if (dstValue === undefined && !dst.has(key))
1037
+ dstValue = EMPTY;
1038
+ if (dstValue !== srcValue) {
1039
+ if (typeof srcValue === "object" && srcValue !== null) {
1040
+ if (typeof dstValue === "object" && dstValue !== null && srcValue.constructor === dstValue.constructor && !(NO_COPY in srcValue)) {
1041
+ changed = copyRecursive(dstValue, srcValue, flags) || changed;
1042
+ continue;
1043
+ }
1044
+ srcValue = cloneRecursive(srcValue, flags & COPY_SUBSCRIBE);
1045
+ }
1046
+ dst.set(key, srcValue);
1047
+ if (flags & COPY_EMIT)
1048
+ emit(dst, key, srcValue, dstValue);
1049
+ changed = true;
1050
+ }
1051
+ }
1052
+ if (!(flags & MERGE)) {
1053
+ for (const k of dst.keys()) {
1054
+ if (!src.has(k)) {
1055
+ const old = dst.get(k);
1056
+ dst.delete(k);
1057
+ if (flags & COPY_EMIT) {
1058
+ emit(dst, k, EMPTY, old);
1059
+ }
1060
+ changed = true;
1061
+ }
1062
+ }
1063
+ }
1064
+ } else if (src.constructor === dst.constructor) {
1065
+ for (const key of Object.keys(src)) {
1066
+ let srcValue = src[key];
1067
+ const dstValue = dst.hasOwnProperty(key) ? dst[key] : EMPTY;
1068
+ if (dstValue !== srcValue) {
1069
+ if (typeof srcValue === "object" && srcValue !== null) {
1070
+ if (typeof dstValue === "object" && dstValue !== null && srcValue.constructor === dstValue.constructor && !(NO_COPY in srcValue)) {
1071
+ changed = copyRecursive(dstValue, srcValue, flags) || changed;
1072
+ continue;
1073
+ }
1074
+ srcValue = cloneRecursive(srcValue, flags & COPY_SUBSCRIBE);
1075
+ }
1076
+ dst[key] = srcValue;
1077
+ if (flags & COPY_EMIT)
1078
+ emit(dst, key, srcValue, dstValue);
1079
+ changed = true;
1080
+ }
1081
+ }
1082
+ if (!(flags & MERGE)) {
1083
+ for (const k of Object.keys(dst)) {
1084
+ if (!src.hasOwnProperty(k)) {
1085
+ const old = dst[k];
1086
+ delete dst[k];
1087
+ if (flags & COPY_EMIT && old !== undefined) {
1088
+ emit(dst, k, EMPTY, old);
1089
+ }
1090
+ changed = true;
1091
+ }
1092
+ }
1093
+ }
1094
+ } else {
1095
+ throw new Error(`Incompatible or non-object types: ${src?.constructor?.name || typeof src} vs ${dst?.constructor?.name || typeof dst}`);
1096
+ }
1097
+ return changed;
1098
+ }
1099
+ var MERGE = 1;
1100
+ var COPY_SUBSCRIBE = 32;
1101
+ var COPY_EMIT = 64;
1102
+ var NO_COPY = Symbol("NO_COPY");
1103
+ Promise.prototype[NO_COPY] = true;
1104
+ var cssVars = optProxy({});
1105
+ function setSpacingCssVars(base = 1, unit = "rem") {
1106
+ for (let i = 0;i <= 12; i++) {
1107
+ cssVars[i] = 2 ** (i - 3) * base + unit;
1108
+ }
1109
+ }
1110
+ var CSS_VAR_PATTERN = /(\burl\([^)]*\))|("[^"]*")|(^| )\$(\w+)/g;
1111
+ var DIGIT_FIRST = /^\d/;
1112
+ function cssVarRef(value) {
1113
+ if (value.indexOf("$") < 0)
1114
+ return value;
1115
+ return value.replace(CSS_VAR_PATTERN, (match, parens, quoted, prefix, name) => {
1116
+ if (parens || quoted)
1117
+ return match;
1118
+ const varName = DIGIT_FIRST.test(name) ? `m${name}` : name;
1119
+ return `${prefix}var(--${varName})`;
1120
+ });
1121
+ }
1122
+ var darkModeState;
1123
+ function darkMode() {
1124
+ if (!darkModeState) {
1125
+ if (typeof window === "undefined" || !window.matchMedia)
1126
+ return false;
1127
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
1128
+ darkModeState = proxy({ value: mediaQuery.matches });
1129
+ mediaQuery.addEventListener("change", () => darkModeState.value = mediaQuery.matches);
1130
+ }
1131
+ return darkModeState.value;
1132
+ }
1133
+ function cloneRecursive(src, flags) {
1134
+ if (NO_COPY in src)
1135
+ return src;
1136
+ if (flags & COPY_SUBSCRIBE)
1137
+ subscribe(src, ANY_SYMBOL);
1138
+ if (src instanceof Array) {
1139
+ return src.map((v) => cloneValue(v, flags));
1140
+ }
1141
+ if (src instanceof Map) {
1142
+ const dst2 = new Map;
1143
+ for (const [k, v] of src)
1144
+ dst2.set(k, cloneValue(v, flags));
1145
+ return dst2;
1146
+ }
1147
+ const dst = Object.create(Object.getPrototypeOf(src));
1148
+ for (const k of Object.keys(src))
1149
+ dst[k] = cloneValue(src[k], flags);
1150
+ return dst;
1151
+ }
1152
+ function cloneValue(v, flags) {
1153
+ return typeof v === "object" && v !== null ? cloneRecursive(v, flags) : v;
1154
+ }
1155
+ function clone(src) {
1156
+ if (typeof src !== "object" || src === null)
1157
+ return src;
1158
+ let flags = 0;
1159
+ const unproxied = src[TARGET_SYMBOL];
1160
+ if (unproxied) {
1161
+ src = unproxied;
1162
+ if (currentScope !== ROOT_SCOPE && !peeking)
1163
+ flags = COPY_SUBSCRIBE;
1164
+ }
1165
+ return cloneRecursive(src, flags);
1166
+ }
1167
+ var refHandler = {
1168
+ get(target, prop) {
1169
+ if (prop === TARGET_SYMBOL) {
1170
+ return ref(unproxy(target.proxy), target.index);
1171
+ }
1172
+ if (prop === "value") {
1173
+ return target.proxy[target.index];
1174
+ }
1175
+ },
1176
+ set(target, prop, value) {
1177
+ if (prop === "value") {
1178
+ target.proxy[target.index] = value;
1179
+ return true;
1180
+ }
1181
+ return false;
1182
+ }
1183
+ };
1184
+ function ref(target, index) {
1185
+ return new Proxy({ proxy: target, index }, refHandler);
1186
+ }
1187
+ function applyBind(el, target) {
1188
+ let onProxyChange;
1189
+ let onInputChange;
1190
+ const type = el.getAttribute("type");
1191
+ const value = unproxy(target).value;
1192
+ if (type === "checkbox") {
1193
+ if (value === undefined)
1194
+ target.value = el.checked;
1195
+ onProxyChange = () => {
1196
+ el.checked = target.value;
1197
+ };
1198
+ onInputChange = () => {
1199
+ target.value = el.checked;
1200
+ };
1201
+ } else if (type === "radio") {
1202
+ if (value === undefined && el.checked)
1203
+ target.value = el.value;
1204
+ onProxyChange = () => {
1205
+ el.checked = target.value === el.value;
1206
+ };
1207
+ onInputChange = () => {
1208
+ if (el.checked)
1209
+ target.value = el.value;
1210
+ };
1211
+ } else {
1212
+ onInputChange = () => {
1213
+ target.value = type === "number" || type === "range" ? el.value === "" ? null : +el.value : el.value;
1214
+ };
1215
+ if (value === undefined)
1216
+ onInputChange();
1217
+ onProxyChange = () => {
1218
+ el.value = target.value;
1219
+ if (el.tagName === "SELECT" && el.value != target.value) {
1220
+ new DelayedOneTimeRunner(() => el.value = target.value);
1221
+ }
1222
+ };
1223
+ }
1224
+ derive(onProxyChange);
1225
+ el.addEventListener("input", onInputChange);
1226
+ clean(() => {
1227
+ el.removeEventListener("input", onInputChange);
1228
+ });
1229
+ }
1230
+ var RICH_PATTERN = /\*\*(.+?)\*\*|\*(.+?)\*|`(.+?)`|\[(.+?)\]\((.+?)\)/g;
1231
+ var SPECIAL_PROPS = {
1232
+ create: (el, value) => {
1233
+ if (currentScope !== topRedrawScope)
1234
+ return;
1235
+ if (typeof value === "function") {
1236
+ value(el);
1237
+ } else {
1238
+ const classes = value.split(".").filter((c) => c);
1239
+ el.classList.add(...classes);
1240
+ (async () => {
1241
+ el.offsetHeight;
1242
+ el.classList.remove(...classes);
1243
+ })();
1244
+ }
1245
+ },
1246
+ destroy: (el, value) => {
1247
+ onDestroyMap.set(el, value);
1248
+ },
1249
+ html: (el, value) => {
1250
+ if (el === currentScope.el && !el.firstChild) {
1251
+ el.innerHTML = `${value}`;
1252
+ } else {
1253
+ const tmpParent = document.createElement(currentScope.el.tagName);
1254
+ tmpParent.innerHTML = `${value}`;
1255
+ while (tmpParent.firstChild)
1256
+ addNode(el, tmpParent.firstChild);
1257
+ }
1258
+ },
1259
+ text: (el, value) => {
1260
+ addNode(el, document.createTextNode(value));
1261
+ },
1262
+ rich: (el, value) => {
1263
+ let lastIndex = 0;
1264
+ let match;
1265
+ const str = String(value);
1266
+ RICH_PATTERN.lastIndex = 0;
1267
+ while ((match = RICH_PATTERN.exec(str)) !== null) {
1268
+ if (match.index > lastIndex) {
1269
+ addNode(el, document.createTextNode(str.slice(lastIndex, match.index)));
1270
+ }
1271
+ let node;
1272
+ if (match[1] !== undefined) {
1273
+ node = document.createElement("strong");
1274
+ node.textContent = match[1];
1275
+ } else if (match[2] !== undefined) {
1276
+ node = document.createElement("em");
1277
+ node.textContent = match[2];
1278
+ } else if (match[3] !== undefined) {
1279
+ node = document.createElement("code");
1280
+ node.textContent = match[3];
1281
+ } else {
1282
+ const a = document.createElement("a");
1283
+ a.textContent = match[4];
1284
+ a.href = match[5];
1285
+ node = a;
1286
+ }
1287
+ addNode(el, node);
1288
+ lastIndex = RICH_PATTERN.lastIndex;
1289
+ }
1290
+ if (lastIndex < str.length) {
1291
+ addNode(el, document.createTextNode(str.slice(lastIndex)));
1292
+ }
1293
+ }
1294
+ };
1295
+ function disableCreateDestroy() {
1296
+ SPECIAL_PROPS.create = SPECIAL_PROPS.destroy = () => {};
1297
+ }
1298
+ function A(...args) {
1299
+ let el = currentScope.el;
1300
+ let svg = currentScope.svg;
1301
+ const argCount = args.length;
1302
+ for (let argIndex = 0;argIndex < argCount; argIndex++) {
1303
+ const arg = args[argIndex];
1304
+ if (arg == null || arg === false) {} else if (typeof arg === "string") {
1305
+ let argLen = arg.length;
1306
+ let nextPos = 0;
1307
+ for (let pos = 0;pos < argLen; pos = nextPos + 1) {
1308
+ nextPos = findFirst(arg, " .=:#", pos);
1309
+ const next = arg[nextPos];
1310
+ if (next === ":") {
1311
+ const key = "$" + arg.substring(pos, nextPos);
1312
+ if (nextPos + 1 >= argLen) {
1313
+ applyArg(el, key, args[++argIndex]);
1314
+ break;
1315
+ }
1316
+ if (arg[nextPos + 1] === " ") {
1317
+ const endIndex = findFirst(arg, ";", nextPos + 2);
1318
+ const value = arg.substring(nextPos + 2, endIndex).trim();
1319
+ applyArg(el, key, value);
1320
+ nextPos = endIndex;
1321
+ } else {
1322
+ const endIndex = findFirst(arg, " ", nextPos + 1);
1323
+ const value = arg.substring(nextPos + 1, endIndex);
1324
+ applyArg(el, key, value);
1325
+ nextPos = endIndex;
1326
+ }
1327
+ } else if (next === "=") {
1328
+ const key = arg.substring(pos, nextPos);
1329
+ if (nextPos + 1 >= argLen) {
1330
+ applyArg(el, key, args[++argIndex]);
1331
+ break;
1332
+ }
1333
+ const afterEquals = arg[nextPos + 1];
1334
+ if (afterEquals === '"' || afterEquals === "'" || afterEquals === "`") {
1335
+ const endIndex = findFirst(arg, afterEquals, nextPos + 2);
1336
+ const value = arg.substring(nextPos + 2, endIndex);
1337
+ applyArg(el, key, value);
1338
+ nextPos = endIndex;
1339
+ } else {
1340
+ const endIndex = findFirst(arg, " ", nextPos + 1);
1341
+ const value = arg.substring(nextPos + 1, endIndex);
1342
+ applyArg(el, key, value);
1343
+ nextPos = endIndex;
1344
+ }
1345
+ } else {
1346
+ if (nextPos > pos) {
1347
+ const tag = arg.substring(pos, nextPos);
1348
+ svg ||= tag === "svg";
1349
+ let newEl = svg ? document.createElementNS("http://www.w3.org/2000/svg", tag) : document.createElement(tag);
1350
+ addNode(el, newEl);
1351
+ el = newEl;
1352
+ }
1353
+ if (next === "#") {
1354
+ const text = nextPos + 1 < argLen ? arg.substring(nextPos + 1) : args[++argIndex];
1355
+ applyArg(el, "text", text);
1356
+ break;
1357
+ }
1358
+ if (next === ".") {
1359
+ let classEnd = findFirst(arg, " #=.", nextPos + 1);
1360
+ if (arg[classEnd] === "=" && classEnd + 1 >= argLen) {
1361
+ applyArg(el, arg.substring(nextPos, classEnd), args[++argIndex]);
1362
+ nextPos = classEnd;
1363
+ } else {
1364
+ let className = arg.substring(nextPos + 1, classEnd);
1365
+ el.classList.add(className || args[++argIndex]);
1366
+ nextPos = classEnd - 1;
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ } else if (typeof arg === "object") {
1372
+ if (arg.constructor !== Object) {
1373
+ if (arg instanceof Node) {
1374
+ addNode(el, arg);
1375
+ if (arg instanceof Element) {
1376
+ el = arg;
1377
+ svg = arg.namespaceURI === "http://www.w3.org/2000/svg";
1378
+ }
1379
+ } else {
1380
+ throw new Error(`Unexpected argument: ${arg}`);
1381
+ }
1382
+ } else {
1383
+ for (const key of Object.keys(arg)) {
1384
+ applyArg(el, key, arg[key]);
1385
+ }
1386
+ }
1387
+ } else if (typeof arg === "function") {
1388
+ new RegularScope(el, svg, arg);
1389
+ } else {
1390
+ throw new Error(`Unexpected argument: ${arg}`);
1391
+ }
1392
+ }
1393
+ return el;
1394
+ }
1395
+ function findFirst(str, chars, startPos) {
1396
+ if (chars.length === 1) {
1397
+ const idx = str.indexOf(chars, startPos);
1398
+ return idx >= 0 ? idx : str.length;
1399
+ }
1400
+ const strLen = str.length;
1401
+ for (let i = startPos;i < strLen; i++) {
1402
+ if (chars.indexOf(str[i]) >= 0)
1403
+ return i;
1404
+ }
1405
+ return strLen;
1406
+ }
1407
+ var cssCount = 0;
1408
+ function insertCss(style) {
1409
+ const prefix = `.AbdStl${++cssCount}`;
1410
+ const css = typeof style === "string" ? styleStringToCss(style, prefix) : objectToCss(style, prefix);
1411
+ if (css) {
1412
+ let cnt = cssSnippetCount++;
1413
+ cssSnippets[cnt] = css;
1414
+ clean(() => delete cssSnippets[cnt]);
1415
+ }
1416
+ return prefix;
1417
+ }
1418
+ var cssSnippets = proxy({});
1419
+ var cssSnippetCount = 0;
1420
+ function combinePrefixSelector(prefix, key) {
1421
+ const sel = [];
1422
+ for (const p of prefix.split(",")) {
1423
+ for (const k of key.split(",")) {
1424
+ sel.push(k.includes("&") ? k.trim().replace(/&/g, p) : `${p} ${k.trim()}`.trim());
1425
+ }
1426
+ }
1427
+ return sel.join(",");
1428
+ }
1429
+ function objectToCss(style, prefix) {
1430
+ let css = "";
1431
+ for (const [key, val] of Object.entries(style)) {
1432
+ if (val && typeof val === "object") {
1433
+ if (key.startsWith("@")) {
1434
+ css += `${key}{
1435
+ ${objectToCss(val, prefix)}}
1436
+ `;
1437
+ } else {
1438
+ css += objectToCss(val, combinePrefixSelector(prefix, key));
1439
+ }
1440
+ } else if (typeof val === "string") {
1441
+ if (key.startsWith("@")) {
1442
+ css += `${key}{
1443
+ ${styleStringToCss(val, prefix)}}
1444
+ `;
1445
+ } else {
1446
+ css += styleStringToCss(val, combinePrefixSelector(prefix, key));
1447
+ }
1448
+ }
1449
+ }
1450
+ return css;
1451
+ }
1452
+ var KEBAB_SEGMENT = /-([a-z])/g;
1453
+ function toCamel(p) {
1454
+ return p.replace(KEBAB_SEGMENT, (_, l) => l.toUpperCase());
1455
+ }
1456
+ function styleStringToCss(styleStr, selector) {
1457
+ let props = "";
1458
+ for (let pos = 0, len = styleStr.length;pos < len; ) {
1459
+ while (styleStr[pos] === " ")
1460
+ pos++;
1461
+ if (pos >= len)
1462
+ break;
1463
+ const colon = styleStr.indexOf(":", pos);
1464
+ if (colon === -1)
1465
+ break;
1466
+ const key = styleStr.substring(pos, colon);
1467
+ pos = colon + 1;
1468
+ let val;
1469
+ if (styleStr[pos] === " ") {
1470
+ pos++;
1471
+ const semi = styleStr.indexOf(";", pos);
1472
+ val = styleStr.substring(pos, semi === -1 ? len : semi).trim();
1473
+ pos = semi === -1 ? len : semi + 1;
1474
+ } else {
1475
+ const space = styleStr.indexOf(" ", pos);
1476
+ val = styleStr.substring(pos, space === -1 ? len : space);
1477
+ pos = space === -1 ? len : space;
1478
+ }
1479
+ const v = cssVarRef(val);
1480
+ const exp = CSS_SHORT[key] || key;
1481
+ props += typeof exp === "string" ? `${exp}:${v};` : exp.map((p) => `${p}:${v};`).join("");
1482
+ }
1483
+ return props ? `${selector}{${props}}
1484
+ ` : "";
1485
+ }
1486
+ function insertGlobalCss(style) {
1487
+ const css = objectToCss(style, "");
1488
+ if (css) {
1489
+ let cnt = cssSnippetCount++;
1490
+ cssSnippets[cnt] = css;
1491
+ clean(() => delete cssSnippets[cnt]);
1492
+ }
1493
+ }
1494
+ var CSS_SHORT = {
1495
+ m: "margin",
1496
+ mt: "margin-top",
1497
+ mb: "margin-bottom",
1498
+ ml: "margin-left",
1499
+ mr: "margin-right",
1500
+ mh: ["margin-left", "margin-right"],
1501
+ mv: ["margin-top", "margin-bottom"],
1502
+ p: "padding",
1503
+ pt: "padding-top",
1504
+ pb: "padding-bottom",
1505
+ pl: "padding-left",
1506
+ pr: "padding-right",
1507
+ ph: ["padding-left", "padding-right"],
1508
+ pv: ["padding-top", "padding-bottom"],
1509
+ w: "width",
1510
+ h: "height",
1511
+ bg: "background",
1512
+ fg: "color",
1513
+ r: "border-radius"
1514
+ };
1515
+ function applyArg(el, key, value) {
1516
+ if (typeof value === "object" && value !== null && value[TARGET_SYMBOL]) {
1517
+ if (key === "bind") {
1518
+ applyBind(el, value);
1519
+ } else {
1520
+ new SetArgScope(el, key, value);
1521
+ }
1522
+ } else if (key[0] === ".") {
1523
+ const classes = key.substring(1).split(".");
1524
+ if (value)
1525
+ el.classList.add(...classes);
1526
+ else
1527
+ el.classList.remove(...classes);
1528
+ } else if (key[0] === "$") {
1529
+ key = key.substring(1);
1530
+ const val = value == null || value === false ? "" : typeof value === "string" ? cssVarRef(value) : String(value);
1531
+ const expanded = CSS_SHORT[key] || key;
1532
+ if (typeof expanded === "string") {
1533
+ el.style[toCamel(expanded)] = val;
1534
+ } else {
1535
+ for (const prop of expanded)
1536
+ el.style[toCamel(prop)] = val;
1537
+ }
1538
+ } else if (value == null) {} else if (key in SPECIAL_PROPS) {
1539
+ SPECIAL_PROPS[key](el, value);
1540
+ } else if (typeof value === "function") {
1541
+ el.addEventListener(key, value);
1542
+ if (el === currentScope.el)
1543
+ clean(() => el.removeEventListener(key, value));
1544
+ } else if (value === true || value === false || key === "value" || key === "selectedIndex") {
1545
+ el[key] = value;
1546
+ } else {
1547
+ el.setAttribute(key, value);
1548
+ }
1549
+ }
1550
+ function defaultOnError(error) {
1551
+ console.error("Error while in Aberdeen render:", error);
1552
+ return true;
1553
+ }
1554
+ var onError = defaultOnError;
1555
+ function setErrorHandler(handler) {
1556
+ onError = handler || defaultOnError;
1557
+ }
1558
+ function clean(cleaner) {
1559
+ currentScope.cleaners.push(cleaner);
1560
+ }
1561
+ function derive(func) {
1562
+ return new ResultScope(func).result;
1563
+ }
1564
+ function mount(parentElement, func) {
1565
+ new MountScope(parentElement, func);
1566
+ }
1567
+ function unmountAll() {
1568
+ ROOT_SCOPE.remove();
1569
+ cssCount = 0;
1570
+ }
1571
+ function peek(target, key) {
1572
+ peeking++;
1573
+ try {
1574
+ if (arguments.length === 1) {
1575
+ return target();
1576
+ } else {
1577
+ return target instanceof Map ? target.get(key) : target[key];
1578
+ }
1579
+ } finally {
1580
+ peeking--;
1581
+ }
1582
+ }
1583
+ function map(source, func) {
1584
+ let out;
1585
+ if (source instanceof Array) {
1586
+ out = optProxy([]);
1587
+ } else if (source instanceof Map) {
1588
+ out = optProxy(new Map);
1589
+ } else {
1590
+ out = optProxy({});
1591
+ }
1592
+ onEach(source, (item, key) => {
1593
+ const value = func(item, key);
1594
+ if (value !== undefined) {
1595
+ if (out instanceof Map) {
1596
+ out.set(key, value);
1597
+ clean(() => {
1598
+ out.delete(key);
1599
+ });
1600
+ } else {
1601
+ out[key] = value;
1602
+ clean(() => {
1603
+ delete out[key];
1604
+ });
1605
+ }
1606
+ }
1607
+ });
1608
+ return out;
1609
+ }
1610
+ function multiMap(source, func) {
1611
+ const out = optProxy({});
1612
+ onEach(source, (item, key) => {
1613
+ const pairs = func(item, key);
1614
+ if (pairs) {
1615
+ for (const key2 of Object.keys(pairs))
1616
+ out[key2] = pairs[key2];
1617
+ clean(() => {
1618
+ for (const key2 of Object.keys(pairs))
1619
+ delete out[key2];
1620
+ });
1621
+ }
1622
+ });
1623
+ return out;
1624
+ }
1625
+ function partition(source, func) {
1626
+ const unproxiedOut = {};
1627
+ const out = optProxy(unproxiedOut);
1628
+ onEach(source, (item, key) => {
1629
+ const rsp = func(item, key);
1630
+ if (rsp != null) {
1631
+ const buckets = rsp instanceof Array ? rsp : [rsp];
1632
+ if (buckets.length) {
1633
+ for (const bucket of buckets) {
1634
+ if (unproxiedOut[bucket])
1635
+ out[bucket][key] = item;
1636
+ else
1637
+ out[bucket] = { [key]: item };
1638
+ }
1639
+ clean(() => {
1640
+ for (const bucket of buckets) {
1641
+ delete out[bucket][key];
1642
+ if (isObjEmpty(unproxiedOut[bucket]))
1643
+ delete out[bucket];
1644
+ }
1645
+ });
1646
+ }
1647
+ }
1648
+ });
1649
+ return out;
1650
+ }
1651
+ function dump(data) {
1652
+ if (data && typeof data === "object") {
1653
+ const name = data.constructor.name.toLowerCase() || "unknown object";
1654
+ A(`#<${name}>`);
1655
+ if (NO_COPY in data) {
1656
+ A("# [NO_COPY]");
1657
+ } else {
1658
+ A("ul", () => {
1659
+ onEach(data, (value, key) => {
1660
+ A("li", () => {
1661
+ A(`#${JSON.stringify(key)}: `);
1662
+ dump(value);
1663
+ });
1664
+ });
1665
+ });
1666
+ }
1667
+ } else if (data !== undefined) {
1668
+ A("#" + JSON.stringify(data));
1669
+ }
1670
+ return data;
1671
+ }
1672
+ function internalError(code) {
1673
+ throw new Error(`Aberdeen internal error ${code}`);
1674
+ }
1675
+ function handleError(e, showMessage) {
1676
+ try {
1677
+ if (onError(e) === false)
1678
+ showMessage = false;
1679
+ } catch (e2) {
1680
+ console.error(e2);
1681
+ }
1682
+ try {
1683
+ if (showMessage)
1684
+ A("div.aberdeen-error#Error");
1685
+ } catch {}
1686
+ }
1687
+ function withEmitHandler(handler, func) {
1688
+ const oldEmitHandler = emit;
1689
+ emit = handler;
1690
+ try {
1691
+ func();
1692
+ } finally {
1693
+ emit = oldEmitHandler;
1694
+ }
1695
+ }
1696
+ if (typeof document !== "undefined") {
1697
+ leakScope(() => {
1698
+ A(() => {
1699
+ if (isEmpty(cssSnippets) && isEmpty(cssVars))
1700
+ return;
1701
+ mount(document.head, () => {
1702
+ A("style.abd", () => {
1703
+ onEach(cssSnippets, (value) => {
1704
+ A("#", value);
1705
+ });
1706
+ A(() => {
1707
+ if (isEmpty(cssVars))
1708
+ return;
1709
+ let css = ":root{";
1710
+ for (const [key, value] of Object.entries(cssVars)) {
1711
+ const varName = DIGIT_FIRST.test(String(key)) ? `m${key}` : key;
1712
+ css += `--${varName}:${value};`;
1713
+ }
1714
+ css += `}
1715
+ `;
1716
+ A("#", css);
1717
+ });
1718
+ });
1719
+ });
1720
+ });
1721
+ });
1722
+ }
1723
+ var aberdeen_default = Object.assign(A, {
1724
+ clean,
1725
+ clone,
1726
+ copy,
1727
+ count,
1728
+ cssVars,
1729
+ darkMode,
1730
+ derive,
1731
+ disableCreateDestroy,
1732
+ dump,
1733
+ insertCss,
1734
+ insertGlobalCss,
1735
+ invertString,
1736
+ isEmpty,
1737
+ map,
1738
+ merge,
1739
+ mount,
1740
+ multiMap,
1741
+ NO_COPY,
1742
+ onEach,
1743
+ partition,
1744
+ peek,
1745
+ proxy,
1746
+ ref,
1747
+ runQueue,
1748
+ setErrorHandler,
1749
+ setSpacingCssVars,
1750
+ unmountAll,
1751
+ unproxy
1752
+ });
1753
+ export {
1754
+ withEmitHandler,
1755
+ unproxy,
1756
+ unmountAll,
1757
+ setSpacingCssVars,
1758
+ setErrorHandler,
1759
+ runQueue,
1760
+ ref,
1761
+ proxy,
1762
+ peek,
1763
+ partition,
1764
+ onEach,
1765
+ multiMap,
1766
+ mount,
1767
+ merge,
1768
+ map,
1769
+ leakScope,
1770
+ isEmpty,
1771
+ invertString,
1772
+ insertGlobalCss,
1773
+ insertCss,
1774
+ dump,
1775
+ disableCreateDestroy,
1776
+ derive,
1777
+ defaultEmitHandler,
1778
+ aberdeen_default as default,
1779
+ darkMode,
1780
+ cssVars,
1781
+ count,
1782
+ copy,
1783
+ clone,
1784
+ clean,
1785
+ NO_COPY,
1786
+ MAP_SIZE_SYMBOL,
1787
+ EMPTY,
1788
+ A
1789
+ };
1790
+
1791
+ //# debugId=3B0B71E6E017014564756E2164756E21
1792
+ //# sourceMappingURL=aberdeen.js.map