dothtml 6.0.0-beta.44 → 6.0.0-beta.46
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/build_module/css/css-props.js +38 -1
- package/build_module/css/css-props.js.map +1 -1
- package/build_module/css/format-css-type.d.ts +4 -3
- package/build_module/css/format-css-type.js +7 -0
- package/build_module/css/format-css-type.js.map +1 -1
- package/build_module/decoration/component.d.ts +4 -14
- package/build_module/decoration/component.js +29 -29
- package/build_module/decoration/component.js.map +1 -1
- package/build_module/dot.js +130 -68
- package/build_module/dot.js.map +1 -1
- package/build_module/events/event-manager.d.ts +14 -0
- package/build_module/events/event-manager.js +98 -0
- package/build_module/events/event-manager.js.map +1 -0
- package/build_module/events/synthetic-event.d.ts +17 -0
- package/build_module/events/synthetic-event.js +33 -0
- package/build_module/events/synthetic-event.js.map +1 -0
- package/build_module/helpers/render-stylesheet.js +18 -9
- package/build_module/helpers/render-stylesheet.js.map +1 -1
- package/build_module/index.d.ts +3 -1
- package/build_module/index.js +14 -1
- package/build_module/index.js.map +1 -1
- package/build_module/reactivity/binding.d.ts +3 -1
- package/build_module/reactivity/binding.js +8 -2
- package/build_module/reactivity/binding.js.map +1 -1
- package/build_module/reactivity/computed.d.ts +18 -0
- package/build_module/reactivity/computed.js +106 -0
- package/build_module/reactivity/computed.js.map +1 -0
- package/build_module/reactivity/priority.d.ts +6 -0
- package/build_module/reactivity/priority.js +8 -0
- package/build_module/reactivity/priority.js.map +1 -0
- package/build_module/reactivity/ref-collection.d.ts +8 -0
- package/build_module/reactivity/ref-collection.js +32 -0
- package/build_module/reactivity/ref-collection.js.map +1 -0
- package/build_module/reactivity/ref.d.ts +5 -3
- package/build_module/reactivity/ref.js +31 -2
- package/build_module/reactivity/ref.js.map +1 -1
- package/build_module/reactivity/scheduler.d.ts +22 -0
- package/build_module/reactivity/scheduler.js +124 -0
- package/build_module/reactivity/scheduler.js.map +1 -0
- package/build_module/reactivity/store.d.ts +14 -0
- package/build_module/reactivity/store.js +91 -0
- package/build_module/reactivity/store.js.map +1 -0
- package/build_module/reactivity/subscription.d.ts +2 -1
- package/build_module/reactivity/subscription.js +4 -5
- package/build_module/reactivity/subscription.js.map +1 -1
- package/build_module/reactivity/watcher.d.ts +6 -3
- package/build_module/reactivity/watcher.js +31 -10
- package/build_module/reactivity/watcher.js.map +1 -1
- package/build_module/routing/helpers.d.ts +2 -0
- package/build_module/routing/helpers.js +21 -0
- package/build_module/routing/helpers.js.map +1 -0
- package/build_module/routing/index.d.ts +5 -0
- package/build_module/routing/index.js +6 -0
- package/build_module/routing/index.js.map +1 -0
- package/build_module/routing/link.d.ts +2 -0
- package/build_module/routing/link.js +45 -0
- package/build_module/routing/link.js.map +1 -0
- package/build_module/routing/router.d.ts +23 -0
- package/build_module/routing/router.js +209 -0
- package/build_module/routing/router.js.map +1 -0
- package/build_module/routing/scroll-manager.d.ts +1 -0
- package/build_module/routing/scroll-manager.js +33 -0
- package/build_module/routing/scroll-manager.js.map +1 -0
- package/build_module/routing/state.d.ts +7 -0
- package/build_module/routing/state.js +45 -0
- package/build_module/routing/state.js.map +1 -0
- package/build_module/v-meta-nodes/style-v-node.d.ts +17 -7
- package/build_module/v-meta-nodes/style-v-node.js +181 -85
- package/build_module/v-meta-nodes/style-v-node.js.map +1 -1
- package/build_module/v-style-nodes/base-v-style.d.ts +10 -11
- package/build_module/v-style-nodes/base-v-style.js +23 -95
- package/build_module/v-style-nodes/base-v-style.js.map +1 -1
- package/build_module/v-style-nodes/css-function-builder-v-style.d.ts +0 -3
- package/build_module/v-style-nodes/css-function-builder-v-style.js +10 -5
- package/build_module/v-style-nodes/css-function-builder-v-style.js.map +1 -1
- package/build_module/v-style-nodes/style-sheet-builder.d.ts +9 -0
- package/build_module/v-style-nodes/style-sheet-builder.js +51 -0
- package/build_module/v-style-nodes/style-sheet-builder.js.map +1 -0
- package/build_module/v-style-nodes/transform-v-style.js.map +1 -1
- package/build_module/vdom-nodes/collection-vdom.d.ts +3 -1
- package/build_module/vdom-nodes/collection-vdom.js +114 -97
- package/build_module/vdom-nodes/collection-vdom.js.map +1 -1
- package/build_module/vdom-nodes/component-context.d.ts +5 -0
- package/build_module/vdom-nodes/component-context.js +5 -0
- package/build_module/vdom-nodes/component-context.js.map +1 -0
- package/build_module/vdom-nodes/component-vdom.d.ts +22 -0
- package/build_module/vdom-nodes/component-vdom.js +250 -12
- package/build_module/vdom-nodes/component-vdom.js.map +1 -1
- package/build_module/vdom-nodes/conditional-vdom.d.ts +1 -0
- package/build_module/vdom-nodes/conditional-vdom.js +14 -0
- package/build_module/vdom-nodes/conditional-vdom.js.map +1 -1
- package/build_module/vdom-nodes/container-vdom.d.ts +6 -2
- package/build_module/vdom-nodes/container-vdom.js +54 -1
- package/build_module/vdom-nodes/container-vdom.js.map +1 -1
- package/build_module/vdom-nodes/element-vdom.d.ts +2 -1
- package/build_module/vdom-nodes/element-vdom.js +72 -18
- package/build_module/vdom-nodes/element-vdom.js.map +1 -1
- package/build_module/vdom-nodes/html-vdom.d.ts +1 -0
- package/build_module/vdom-nodes/html-vdom.js +12 -0
- package/build_module/vdom-nodes/html-vdom.js.map +1 -1
- package/build_module/vdom-nodes/text-vdom.d.ts +1 -0
- package/build_module/vdom-nodes/text-vdom.js +3 -0
- package/build_module/vdom-nodes/text-vdom.js.map +1 -1
- package/build_module/vdom-nodes/vdom.d.ts +2 -0
- package/build_module/vdom-nodes/vdom.js +17 -0
- package/build_module/vdom-nodes/vdom.js.map +1 -1
- package/package.json +58 -57
- package/readme.md +32 -26
- package/build_module/css/css.d.ts +0 -0
- package/build_module/css/css.js +0 -1
- package/build_module/css/css.js.map +0 -1
- package/build_module/decoration/use-styles.d.ts +0 -14
- package/build_module/decoration/use-styles.js +0 -19
- package/build_module/decoration/use-styles.js.map +0 -1
- package/build_module/helpers/render-css.d.ts +0 -2
- package/build_module/helpers/render-css.js +0 -20
- package/build_module/helpers/render-css.js.map +0 -1
- package/build_module/helpers.d.ts +0 -3
- package/build_module/helpers.js +0 -50
- package/build_module/helpers.js.map +0 -1
- package/build_module/reactive.d.ts +0 -46
- package/build_module/reactive.js +0 -150
- package/build_module/reactive.js.map +0 -1
- package/build_module/reactivity/bound-reactive.d.ts +0 -13
- package/build_module/reactivity/bound-reactive.js +0 -20
- package/build_module/reactivity/bound-reactive.js.map +0 -1
- package/build_module/reactivity/reactive.d.ts +0 -22
- package/build_module/reactivity/reactive.js +0 -54
- package/build_module/reactivity/reactive.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import BaseVStyle from "./base-v-style";
|
|
2
|
+
import cssProps from "../css/css-props";
|
|
3
|
+
import { formatCssLength } from "../css/format-css-type";
|
|
4
|
+
import Watcher from "../reactivity/watcher";
|
|
5
|
+
import Binding from "../reactivity/binding";
|
|
6
|
+
export default class StyleSheetBuilder {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.rules = [];
|
|
9
|
+
}
|
|
10
|
+
class(name, callback) {
|
|
11
|
+
return this.rule(`.${name}`, callback);
|
|
12
|
+
}
|
|
13
|
+
rule(selector, callback) {
|
|
14
|
+
const style = new BaseVStyle();
|
|
15
|
+
callback(style);
|
|
16
|
+
this.rules.push({ selector, style });
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
v(name) {
|
|
20
|
+
if (!name.startsWith("--"))
|
|
21
|
+
name = "--" + name;
|
|
22
|
+
return `var(${name})`;
|
|
23
|
+
}
|
|
24
|
+
toString() {
|
|
25
|
+
return this.rules.map(r => {
|
|
26
|
+
const props = r.style.getProps().map(p => {
|
|
27
|
+
const registered = cssProps[p.prop];
|
|
28
|
+
let cssProp = p.prop;
|
|
29
|
+
let cssValue = p.value;
|
|
30
|
+
if (cssValue instanceof Watcher || cssValue instanceof Binding) {
|
|
31
|
+
throw new Error(`[DOThtml] Reactive values (Watchers/Bindings) cannot be used directly in stylize(). Use CSS variables instead. Prop: "${p.prop}" in selector: "${r.selector}"`);
|
|
32
|
+
}
|
|
33
|
+
if (registered) {
|
|
34
|
+
cssProp = registered.cssName;
|
|
35
|
+
if (registered.type === "length" && typeof p.value === "number") {
|
|
36
|
+
cssValue = formatCssLength(p.value, registered.unit);
|
|
37
|
+
}
|
|
38
|
+
else if (registered.unit && typeof p.value === "number") {
|
|
39
|
+
cssValue = `${p.value}${registered.unit}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return `${cssProp}: ${cssValue};`;
|
|
43
|
+
}).join(" ");
|
|
44
|
+
return `${r.selector} { ${props} }`;
|
|
45
|
+
}).join("\n");
|
|
46
|
+
}
|
|
47
|
+
hasRules() {
|
|
48
|
+
return this.rules.length > 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=style-sheet-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-sheet-builder.js","sourceRoot":"","sources":["../../src/v-style-nodes/style-sheet-builder.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAAtC;QACS,UAAK,GAAmD,EAAE,CAAC;IAmDpE,CAAC;IAjDA,KAAK,CAAC,IAAY,EAAE,QAAiC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,QAAgB,EAAE,QAAiC;QACvD,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAOD,CAAC,CAAC,IAAY;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/C,OAAO,OAAO,IAAI,GAAG,CAAC;IACvB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;gBACrB,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;gBAEvB,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,YAAY,OAAO,EAAE;oBAC/D,MAAM,IAAI,KAAK,CAAC,yHAAyH,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;iBACjL;gBAED,IAAI,UAAU,EAAE;oBACf,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC7B,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;wBAChE,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;qBACrD;yBAAM,IAAI,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;wBAC1D,QAAQ,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;qBAC1C;iBACD;gBACD,OAAO,GAAG,OAAO,KAAK,QAAQ,GAAG,CAAC;YACnC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,GAAG,CAAC,CAAC,QAAQ,MAAM,KAAK,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/transform-v-style.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzE,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,wBAAwB;IAEpE,QAAQ,CAAC,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS;QACtL,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,CAAC,EAAC,CAAE;QACb,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,EAAC,CAAC,EAAC,eAAe,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"transform-v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/transform-v-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,12 @@ export default class CollectionVdom extends Vdom {
|
|
|
15
15
|
endNode: Node;
|
|
16
16
|
observerId: number;
|
|
17
17
|
mappedItems: Array<DatumMap>;
|
|
18
|
+
private updateState;
|
|
18
19
|
constructor(value: ObservableCollection, renderCallback: (x: any, i: number | string, k: string) => Vdom);
|
|
19
20
|
_render(target: HTMLElement): void;
|
|
20
21
|
_unrender(): void;
|
|
22
|
+
_getNodes(): Node[];
|
|
21
23
|
private removeItem;
|
|
22
|
-
updateList():
|
|
24
|
+
updateList(): boolean;
|
|
23
25
|
}
|
|
24
26
|
export {};
|
|
@@ -3,11 +3,13 @@ import Binding from "../reactivity/binding";
|
|
|
3
3
|
import Watcher from "../reactivity/watcher";
|
|
4
4
|
import { TextVdom } from "./text-vdom";
|
|
5
5
|
import { Vdom } from "./vdom";
|
|
6
|
+
import { scheduler } from "../reactivity/scheduler";
|
|
6
7
|
export default class CollectionVdom extends Vdom {
|
|
7
8
|
constructor(value, renderCallback) {
|
|
8
9
|
super();
|
|
9
10
|
this.observerId = 0;
|
|
10
11
|
this.mappedItems = [];
|
|
12
|
+
this.updateState = null;
|
|
11
13
|
this.value = value;
|
|
12
14
|
this.renderCallback = renderCallback;
|
|
13
15
|
}
|
|
@@ -19,7 +21,14 @@ export default class CollectionVdom extends Vdom {
|
|
|
19
21
|
this.endNode = target.ownerDocument.createTextNode("");
|
|
20
22
|
target.appendChild(this.startNode);
|
|
21
23
|
target.appendChild(this.endNode);
|
|
22
|
-
|
|
24
|
+
const originalShouldYield = scheduler.shouldYield;
|
|
25
|
+
scheduler.shouldYield = () => false;
|
|
26
|
+
try {
|
|
27
|
+
this.updateList();
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
scheduler.shouldYield = originalShouldYield;
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
_unrender() {
|
|
25
34
|
if (this.observerId && this.value instanceof Binding) {
|
|
@@ -37,121 +46,129 @@ export default class CollectionVdom extends Vdom {
|
|
|
37
46
|
this.startNode = null;
|
|
38
47
|
this.endNode = null;
|
|
39
48
|
}
|
|
49
|
+
_getNodes() {
|
|
50
|
+
if (!this.startNode)
|
|
51
|
+
return [];
|
|
52
|
+
let nodes = [this.startNode];
|
|
53
|
+
for (let i = 0; i < this.mappedItems.length; i++) {
|
|
54
|
+
nodes.push(...this.mappedItems[i].vdom._getNodes());
|
|
55
|
+
nodes.push(this.mappedItems[i].afterNode);
|
|
56
|
+
}
|
|
57
|
+
nodes.push(this.endNode);
|
|
58
|
+
return nodes;
|
|
59
|
+
}
|
|
40
60
|
removeItem(item) {
|
|
41
61
|
item.vdom._unrender();
|
|
42
|
-
item.afterNode.parentElement
|
|
62
|
+
if (item.afterNode.parentElement) {
|
|
63
|
+
item.afterNode.parentElement.removeChild(item.afterNode);
|
|
64
|
+
}
|
|
43
65
|
}
|
|
44
66
|
updateList() {
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
67
|
+
let unmappedCollection = null;
|
|
68
|
+
if (this.value instanceof Binding) {
|
|
69
|
+
unmappedCollection = this.value._get();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
unmappedCollection = this.value;
|
|
73
|
+
}
|
|
74
|
+
const currentItems = Array.isArray(unmappedCollection)
|
|
75
|
+
? unmappedCollection
|
|
76
|
+
: Object.values(unmappedCollection);
|
|
77
|
+
if (this.updateState) {
|
|
78
|
+
if (!deepEqual(this.updateState.newItems, currentItems)) {
|
|
79
|
+
this.updateState = null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!this.updateState) {
|
|
83
|
+
let key = null;
|
|
49
84
|
if (this.value instanceof Binding) {
|
|
50
|
-
unmappedCollection = this.value._get();
|
|
51
85
|
key = this.value._source.key ?? null;
|
|
52
86
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
vdom: null,
|
|
62
|
-
value: v,
|
|
63
|
-
keyValue: kv,
|
|
64
|
-
afterNode: null,
|
|
65
|
-
observableIndex: reactive.bind()
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
mappedData = [];
|
|
71
|
-
for (let k in unmappedCollection) {
|
|
72
|
-
let v = unmappedCollection[k];
|
|
73
|
-
let kv = !!key ? v[key] : k;
|
|
74
|
-
let reactive = new Watcher();
|
|
75
|
-
mappedData.push({
|
|
76
|
-
vdom: null,
|
|
77
|
-
value: v,
|
|
78
|
-
keyValue: kv,
|
|
79
|
-
afterNode: null,
|
|
80
|
-
observableIndex: reactive.bind()
|
|
81
|
-
});
|
|
82
|
-
}
|
|
87
|
+
const newItems = currentItems;
|
|
88
|
+
const newKeys = Array.isArray(unmappedCollection)
|
|
89
|
+
? newItems.map((v, i) => key ? v[key] : i)
|
|
90
|
+
: Object.keys(unmappedCollection).map((k, i) => key ? unmappedCollection[k][key] : k);
|
|
91
|
+
const oldMap = new Map();
|
|
92
|
+
for (const item of this.mappedItems) {
|
|
93
|
+
oldMap.set(item.keyValue, item);
|
|
83
94
|
}
|
|
95
|
+
this.updateState = {
|
|
96
|
+
newItems,
|
|
97
|
+
newKeys,
|
|
98
|
+
oldMap,
|
|
99
|
+
nextMappedItems: [],
|
|
100
|
+
currentIndex: 0,
|
|
101
|
+
lastNode: this.startNode,
|
|
102
|
+
step: "diff"
|
|
103
|
+
};
|
|
84
104
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
let existing =
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
105
|
+
const state = this.updateState;
|
|
106
|
+
if (state.step === "diff") {
|
|
107
|
+
while (state.currentIndex < state.newItems.length) {
|
|
108
|
+
const value = state.newItems[state.currentIndex];
|
|
109
|
+
const keyValue = state.newKeys[state.currentIndex];
|
|
110
|
+
let existing = state.oldMap.get(keyValue);
|
|
111
|
+
if (existing) {
|
|
112
|
+
state.oldMap.delete(keyValue);
|
|
113
|
+
if (!deepEqual(existing.value, value)) {
|
|
114
|
+
existing.vdom._unrender();
|
|
115
|
+
existing.value = value;
|
|
116
|
+
let vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? existing.observableIndex : state.currentIndex, keyValue);
|
|
117
|
+
existing.vdom = vdomOrContent instanceof Vdom ? vdomOrContent : new TextVdom(vdomOrContent);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
existing.observableIndex._set(state.currentIndex);
|
|
121
|
+
}
|
|
122
|
+
state.nextMappedItems.push(existing);
|
|
103
123
|
}
|
|
104
124
|
else {
|
|
105
|
-
|
|
125
|
+
const reactive = new Watcher();
|
|
126
|
+
const observableIndex = reactive.bind();
|
|
127
|
+
observableIndex._set(state.currentIndex);
|
|
128
|
+
const vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? observableIndex : state.currentIndex, keyValue);
|
|
129
|
+
const vdom = vdomOrContent instanceof Vdom ? vdomOrContent : new TextVdom(vdomOrContent);
|
|
130
|
+
const afterNode = this.startNode.ownerDocument.createTextNode("");
|
|
131
|
+
state.nextMappedItems.push({
|
|
132
|
+
vdom, value, keyValue, afterNode, observableIndex
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
state.currentIndex++;
|
|
136
|
+
if (scheduler.shouldYield()) {
|
|
137
|
+
return true;
|
|
106
138
|
}
|
|
107
139
|
}
|
|
140
|
+
state.step = "cleanup";
|
|
108
141
|
}
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
existing.observableIndex._set(ni);
|
|
125
|
-
}
|
|
126
|
-
afterTarget = existing.afterNode;
|
|
127
|
-
ni++;
|
|
128
|
-
oi++;
|
|
129
|
-
continue;
|
|
142
|
+
if (state.step === "cleanup") {
|
|
143
|
+
const oldItems = Array.from(state.oldMap.values());
|
|
144
|
+
for (const item of oldItems) {
|
|
145
|
+
this.removeItem(item);
|
|
146
|
+
}
|
|
147
|
+
state.step = "reorder";
|
|
148
|
+
state.currentIndex = 0;
|
|
149
|
+
this.mappedItems = [];
|
|
150
|
+
}
|
|
151
|
+
if (state.step === "reorder") {
|
|
152
|
+
while (state.currentIndex < state.nextMappedItems.length) {
|
|
153
|
+
const item = state.nextMappedItems[state.currentIndex];
|
|
154
|
+
if (!item.vdom._isRendered) {
|
|
155
|
+
item.vdom._renderAfter(state.lastNode);
|
|
156
|
+
state.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);
|
|
130
157
|
}
|
|
131
158
|
else {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
candidate.afterNode = beforeTarget;
|
|
141
|
-
candidate.observableIndex._set(ni);
|
|
142
|
-
let content = this.renderCallback(candidate.value, this.value instanceof Binding ? candidate.observableIndex : ni, candidate.keyValue);
|
|
143
|
-
if (content instanceof Vdom) {
|
|
144
|
-
candidate.vdom = content;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
candidate.vdom = new TextVdom(content);
|
|
148
|
-
}
|
|
149
|
-
candidate.vdom._renderBefore(candidate.afterNode);
|
|
150
|
-
this.mappedItems.splice(ni, 0, candidate);
|
|
151
|
-
ni++;
|
|
159
|
+
item.vdom._moveBefore(state.lastNode.nextSibling, state.lastNode.parentElement);
|
|
160
|
+
state.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);
|
|
161
|
+
}
|
|
162
|
+
state.lastNode = item.afterNode;
|
|
163
|
+
this.mappedItems.push(item);
|
|
164
|
+
state.currentIndex++;
|
|
165
|
+
if (scheduler.shouldYield()) {
|
|
166
|
+
return true;
|
|
152
167
|
}
|
|
153
168
|
}
|
|
154
169
|
}
|
|
170
|
+
this.updateState = null;
|
|
171
|
+
return false;
|
|
155
172
|
}
|
|
156
173
|
}
|
|
157
174
|
//# sourceMappingURL=collection-vdom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/collection-vdom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACjE,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/collection-vdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ComponentVdom } from "./component-vdom";
|
|
2
|
+
export declare const componentStack: ComponentVdom[];
|
|
3
|
+
export declare const getCurrentComponent: () => ComponentVdom;
|
|
4
|
+
export declare const pushComponent: (component: ComponentVdom) => number;
|
|
5
|
+
export declare const popComponent: () => ComponentVdom;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const componentStack = [];
|
|
2
|
+
export const getCurrentComponent = () => componentStack[componentStack.length - 1] || null;
|
|
3
|
+
export const pushComponent = (component) => componentStack.push(component);
|
|
4
|
+
export const popComponent = () => componentStack.pop();
|
|
5
|
+
//# sourceMappingURL=component-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-context.js","sourceRoot":"","sources":["../../src/vdom-nodes/component-context.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAoB,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AAC3F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAwB,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
import { IDotComponent, IDotCore } from "dothtml-interfaces";
|
|
2
2
|
import { Vdom } from "./vdom";
|
|
3
3
|
import { ContainerVdom } from "./container-vdom";
|
|
4
|
+
import Computed from "../reactivity/computed";
|
|
5
|
+
import Ref from "../reactivity/ref";
|
|
4
6
|
export declare class ComponentVdom extends Vdom {
|
|
5
7
|
component: IDotComponent;
|
|
6
8
|
shadowEl: HTMLElement;
|
|
7
9
|
childShadowVdom: ContainerVdom;
|
|
10
|
+
private dot;
|
|
11
|
+
private events;
|
|
12
|
+
private styleVNodes;
|
|
13
|
+
private isQueued;
|
|
14
|
+
private computedWatchers;
|
|
15
|
+
private disposables;
|
|
16
|
+
private ref;
|
|
17
|
+
private updateSubscription;
|
|
8
18
|
constructor(dot: IDotCore, component: IDotComponent);
|
|
19
|
+
registerComputed(watcher: Computed<any>): void;
|
|
20
|
+
registerDisposable(disposable: () => void): void;
|
|
21
|
+
setRef(ref: Ref<any> | ((comp: IDotComponent | null) => void)): void;
|
|
22
|
+
init(): void;
|
|
23
|
+
private subscribeToProps;
|
|
24
|
+
private requestUpdate;
|
|
25
|
+
private rebuild;
|
|
26
|
+
private validateProps;
|
|
9
27
|
private setupCustomElement;
|
|
10
28
|
_render(node: HTMLElement): void;
|
|
11
29
|
_unrender(): void;
|
|
30
|
+
_getNodes(): Node[];
|
|
31
|
+
addEventListener(event: string, callback: (e: any) => void, modifiers?: string[]): void;
|
|
32
|
+
private renderEvent;
|
|
33
|
+
on(event: string, callback: (e: any) => void): this;
|
|
12
34
|
toString(): string;
|
|
13
35
|
}
|