aberdeen 1.16.1 → 1.17.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.
- package/dist/src/aberdeen.js +81 -12
- package/dist/src/aberdeen.js.map +3 -3
- package/dist/tests/fakedom.js +3 -2
- package/dist/tests/fakedom.js.map +3 -3
- package/dist/tests/helpers.js +3 -2
- package/dist/tests/helpers.js.map +3 -3
- package/dist-docs/Tutorial/index.html +2 -2
- package/dist-docs/aberdeen/A/index.html +2 -2
- package/dist-docs/aberdeen/CUSTOM_DUMP/index.html +2 -2
- package/dist-docs/aberdeen/NO_COPY/index.html +2 -2
- package/dist-docs/aberdeen/OPAQUE/index.html +2 -2
- package/dist-docs/aberdeen/PromiseProxy/index.html +5 -5
- package/dist-docs/aberdeen/clean/index.html +2 -2
- package/dist-docs/aberdeen/clone/index.html +2 -2
- package/dist-docs/aberdeen/copy/index.html +3 -3
- package/dist-docs/aberdeen/count/index.html +2 -2
- package/dist-docs/aberdeen/cssVars/index.html +2 -2
- package/dist-docs/aberdeen/darkMode/index.html +2 -2
- package/dist-docs/aberdeen/default/index.html +2 -2
- package/dist-docs/aberdeen/derive/index.html +2 -2
- package/dist-docs/aberdeen/disableCreateDestroy/index.html +2 -2
- package/dist-docs/aberdeen/dump/index.html +2 -2
- package/dist-docs/aberdeen/index.html +2 -2
- package/dist-docs/aberdeen/insertCss/index.html +2 -2
- package/dist-docs/aberdeen/insertGlobalCss/index.html +2 -2
- package/dist-docs/aberdeen/invertString/index.html +2 -2
- package/dist-docs/aberdeen/isEmpty/index.html +2 -2
- package/dist-docs/aberdeen/map/index.html +4 -4
- package/dist-docs/aberdeen/merge/index.html +3 -3
- package/dist-docs/aberdeen/mount/index.html +2 -2
- package/dist-docs/aberdeen/multiMap/index.html +4 -4
- package/dist-docs/aberdeen/onEach/index.html +2 -2
- package/dist-docs/aberdeen/partition/index.html +4 -4
- package/dist-docs/aberdeen/peek/index.html +5 -5
- package/dist-docs/aberdeen/proxy/index.html +2 -2
- package/dist-docs/aberdeen/ref/index.html +2 -2
- package/dist-docs/aberdeen/runQueue/index.html +2 -2
- package/dist-docs/aberdeen/setErrorHandler/index.html +2 -2
- package/dist-docs/aberdeen/setSpacingCssVars/index.html +2 -2
- package/dist-docs/aberdeen/unmountAll/index.html +2 -2
- package/dist-docs/aberdeen/unproxy/index.html +2 -2
- package/dist-docs/assets/aberdeen/aberdeen.js +81 -12
- package/dist-docs/assets/aberdeen/aberdeen.js.map +3 -3
- package/dist-docs/dispatcher/Dispatcher/index.html +4 -4
- package/dist-docs/dispatcher/MATCH_FAILED/index.html +2 -2
- package/dist-docs/dispatcher/MATCH_REST/index.html +2 -2
- package/dist-docs/dispatcher/index.html +2 -2
- package/dist-docs/hierarchy.html +1 -1
- package/dist-docs/index.html +2 -2
- package/dist-docs/media/CHANGELOG.md +5 -0
- package/dist-docs/modules.html +1 -1
- package/dist-docs/prediction/applyCanon/index.html +2 -2
- package/dist-docs/prediction/applyPrediction/index.html +2 -2
- package/dist-docs/prediction/index.html +2 -2
- package/dist-docs/route/Route/index.html +9 -9
- package/dist-docs/route/back/index.html +2 -2
- package/dist-docs/route/current/index.html +2 -2
- package/dist-docs/route/go/index.html +2 -2
- package/dist-docs/route/index.html +2 -2
- package/dist-docs/route/interceptLinks/index.html +2 -2
- package/dist-docs/route/matchCurrent/index.html +2 -2
- package/dist-docs/route/persistScroll/index.html +2 -2
- package/dist-docs/route/push/index.html +2 -2
- package/dist-docs/route/setLog/index.html +2 -2
- package/dist-docs/route/up/index.html +2 -2
- package/dist-docs/sitemap.xml +59 -59
- package/dist-docs/transitions/grow/index.html +2 -2
- package/dist-docs/transitions/index.html +2 -2
- package/dist-docs/transitions/shrink/index.html +2 -2
- package/package.json +1 -1
- package/skill/aberdeen.md +54 -54
- package/skill/dispatcher.md +6 -6
- package/skill/prediction.md +3 -3
- package/skill/route.md +18 -18
- package/skill/transitions.md +3 -3
- package/src/aberdeen.ts +101 -10
package/dist/src/aberdeen.js
CHANGED
|
@@ -102,6 +102,33 @@ class ReverseSortedSet {
|
|
|
102
102
|
var sortedQueue;
|
|
103
103
|
var runQueueDepth = 0;
|
|
104
104
|
var topRedrawScope;
|
|
105
|
+
var survivingEl;
|
|
106
|
+
function recordSideEffect(scope, type, key, value) {
|
|
107
|
+
(scope.sideEffects ||= []).push(type, key, value);
|
|
108
|
+
}
|
|
109
|
+
function undoSideEffects(el, se) {
|
|
110
|
+
for (let i = se.length - 3;i >= 0; i -= 3) {
|
|
111
|
+
const key = se[i + 1];
|
|
112
|
+
const value = se[i + 2];
|
|
113
|
+
switch (se[i]) {
|
|
114
|
+
case 0 /* Class */:
|
|
115
|
+
value ? el.classList.add(key) : el.classList.remove(key);
|
|
116
|
+
break;
|
|
117
|
+
case 1 /* Style */:
|
|
118
|
+
el.style[key] = value == null ? "" : value;
|
|
119
|
+
break;
|
|
120
|
+
case 2 /* Prop */:
|
|
121
|
+
el[key] = value;
|
|
122
|
+
break;
|
|
123
|
+
case 3 /* Attr */:
|
|
124
|
+
value == null ? el.removeAttribute(key) : el.setAttribute(key, value);
|
|
125
|
+
break;
|
|
126
|
+
case 4 /* Event */:
|
|
127
|
+
el.removeEventListener(key, value);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
105
132
|
function queue(runner) {
|
|
106
133
|
if (!sortedQueue) {
|
|
107
134
|
sortedQueue = new ReverseSortedSet("prio");
|
|
@@ -166,7 +193,10 @@ class Scope {
|
|
|
166
193
|
const lastNode = this.getLastNode();
|
|
167
194
|
if (lastNode)
|
|
168
195
|
removeNodes(lastNode, this.getPrecedingNode());
|
|
196
|
+
const savedSurvivingEl = survivingEl;
|
|
197
|
+
survivingEl = this.el;
|
|
169
198
|
this.delete();
|
|
199
|
+
survivingEl = savedSurvivingEl;
|
|
170
200
|
}
|
|
171
201
|
}
|
|
172
202
|
|
|
@@ -181,6 +211,7 @@ class DelayedOneTimeRunner {
|
|
|
181
211
|
|
|
182
212
|
class ContentScope extends Scope {
|
|
183
213
|
cleaners;
|
|
214
|
+
sideEffects;
|
|
184
215
|
changes;
|
|
185
216
|
constructor(cleaners = []) {
|
|
186
217
|
super();
|
|
@@ -192,13 +223,21 @@ class ContentScope extends Scope {
|
|
|
192
223
|
return findLastNodeInPrevSiblings(this.lastChild);
|
|
193
224
|
}
|
|
194
225
|
delete() {
|
|
195
|
-
|
|
226
|
+
const cleaners = this.cleaners;
|
|
227
|
+
for (let i = cleaners.length - 1;i >= 0; i--) {
|
|
228
|
+
const cleaner = cleaners[i];
|
|
196
229
|
if (typeof cleaner === "function")
|
|
197
230
|
cleaner();
|
|
198
231
|
else
|
|
199
232
|
cleaner.delete(this);
|
|
200
233
|
}
|
|
201
234
|
this.cleaners.length = 0;
|
|
235
|
+
const se = this.sideEffects;
|
|
236
|
+
if (se) {
|
|
237
|
+
if (this.el === survivingEl)
|
|
238
|
+
undoSideEffects(this.el, se);
|
|
239
|
+
this.sideEffects = undefined;
|
|
240
|
+
}
|
|
202
241
|
sortedQueue?.remove(this);
|
|
203
242
|
this.lastChild = undefined;
|
|
204
243
|
}
|
|
@@ -322,7 +361,10 @@ class MountScope extends ContentScope {
|
|
|
322
361
|
}
|
|
323
362
|
delete() {
|
|
324
363
|
removeNodes(this.getLastNode(), this.getPrecedingNode());
|
|
364
|
+
const savedSurvivingEl = survivingEl;
|
|
365
|
+
survivingEl = this.el;
|
|
325
366
|
super.delete();
|
|
367
|
+
survivingEl = savedSurvivingEl;
|
|
326
368
|
}
|
|
327
369
|
remove() {
|
|
328
370
|
this.delete();
|
|
@@ -517,7 +559,10 @@ class OnEachItemScope extends ContentScope {
|
|
|
517
559
|
if (lastNode)
|
|
518
560
|
removeNodes(lastNode, this.getPrecedingNode());
|
|
519
561
|
}
|
|
562
|
+
const savedSurvivingEl = survivingEl;
|
|
563
|
+
survivingEl = this.el;
|
|
520
564
|
this.delete();
|
|
565
|
+
survivingEl = savedSurvivingEl;
|
|
521
566
|
this.lastChild = this;
|
|
522
567
|
topRedrawScope = this;
|
|
523
568
|
this.redraw();
|
|
@@ -572,7 +617,10 @@ class OnEachItemScope extends ContentScope {
|
|
|
572
617
|
this.parent.sortedSet.remove(this);
|
|
573
618
|
this.sortKey = undefined;
|
|
574
619
|
}
|
|
620
|
+
const savedSurvivingEl = survivingEl;
|
|
621
|
+
survivingEl = this.el;
|
|
575
622
|
this.delete();
|
|
623
|
+
survivingEl = savedSurvivingEl;
|
|
576
624
|
}
|
|
577
625
|
}
|
|
578
626
|
function addNode(el, node) {
|
|
@@ -1446,7 +1494,12 @@ function A(...args) {
|
|
|
1446
1494
|
nextPos = classEnd;
|
|
1447
1495
|
} else {
|
|
1448
1496
|
let className = arg.substring(nextPos + 1, classEnd);
|
|
1449
|
-
|
|
1497
|
+
const cls = className || args[++argIndex];
|
|
1498
|
+
if (!el.classList.contains(cls)) {
|
|
1499
|
+
if (el === currentScope.el)
|
|
1500
|
+
recordSideEffect(currentScope, 0 /* Class */, cls, false);
|
|
1501
|
+
el.classList.add(cls);
|
|
1502
|
+
}
|
|
1450
1503
|
nextPos = classEnd - 1;
|
|
1451
1504
|
}
|
|
1452
1505
|
}
|
|
@@ -1608,29 +1661,45 @@ function applyArg(el, key, value) {
|
|
|
1608
1661
|
}
|
|
1609
1662
|
} else if (key[0] === ".") {
|
|
1610
1663
|
const classes = key.substring(1).split(".");
|
|
1611
|
-
|
|
1612
|
-
|
|
1664
|
+
const list = el.classList;
|
|
1665
|
+
const desired = !!value;
|
|
1666
|
+
if (el === currentScope.el) {
|
|
1667
|
+
for (const cls of classes) {
|
|
1668
|
+
const had = list.contains(cls);
|
|
1669
|
+
if (had !== desired)
|
|
1670
|
+
recordSideEffect(currentScope, 0 /* Class */, cls, had);
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
if (desired)
|
|
1674
|
+
list.add(...classes);
|
|
1613
1675
|
else
|
|
1614
|
-
|
|
1676
|
+
list.remove(...classes);
|
|
1615
1677
|
} else if (key[0] === "$") {
|
|
1616
1678
|
key = key.substring(1);
|
|
1617
1679
|
const val = value == null || value === false ? "" : typeof value === "string" ? cssVarRef(value) : String(value);
|
|
1618
1680
|
const expanded = CSS_SHORT[key] || key;
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1681
|
+
const style = el.style;
|
|
1682
|
+
const setOwn = el === currentScope.el;
|
|
1683
|
+
const props = typeof expanded === "string" ? [expanded] : expanded;
|
|
1684
|
+
for (const prop of props) {
|
|
1685
|
+
const cm = toCamel(prop);
|
|
1686
|
+
if (setOwn)
|
|
1687
|
+
recordSideEffect(currentScope, 1 /* Style */, cm, style[cm]);
|
|
1688
|
+
style[cm] = val;
|
|
1624
1689
|
}
|
|
1625
1690
|
} else if (value == null) {} else if (key in SPECIAL_PROPS) {
|
|
1626
1691
|
SPECIAL_PROPS[key](el, value);
|
|
1627
1692
|
} else if (typeof value === "function") {
|
|
1628
1693
|
el.addEventListener(key, value);
|
|
1629
1694
|
if (el === currentScope.el)
|
|
1630
|
-
|
|
1695
|
+
recordSideEffect(currentScope, 4 /* Event */, key, value);
|
|
1631
1696
|
} else if (value === true || value === false || key === "value" || key === "selectedIndex") {
|
|
1697
|
+
if (el === currentScope.el)
|
|
1698
|
+
recordSideEffect(currentScope, 2 /* Prop */, key, el[key]);
|
|
1632
1699
|
el[key] = value;
|
|
1633
1700
|
} else {
|
|
1701
|
+
if (el === currentScope.el)
|
|
1702
|
+
recordSideEffect(currentScope, 3 /* Attr */, key, el.getAttribute(key));
|
|
1634
1703
|
el.setAttribute(key, value);
|
|
1635
1704
|
}
|
|
1636
1705
|
}
|
|
@@ -1905,5 +1974,5 @@ export {
|
|
|
1905
1974
|
A
|
|
1906
1975
|
};
|
|
1907
1976
|
|
|
1908
|
-
//# debugId=
|
|
1977
|
+
//# debugId=28BFF8A898B656A464756E2164756E21
|
|
1909
1978
|
//# sourceMappingURL=aberdeen.js.map
|