dothtml 6.0.0-beta.4 → 6.0.0-beta.40
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.d.ts +8 -0
- package/build_module/css/css-props.js +40 -0
- package/build_module/css/css-props.js.map +1 -0
- package/build_module/css/css.js +1 -0
- package/build_module/css/css.js.map +1 -0
- package/build_module/css/format-css-type.d.ts +5 -0
- package/build_module/css/format-css-type.js +73 -0
- package/build_module/css/format-css-type.js.map +1 -0
- package/build_module/decoration/component.d.ts +9 -20
- package/build_module/decoration/component.js +20 -17
- package/build_module/decoration/component.js.map +1 -1
- package/build_module/decoration/use-styles.d.ts +14 -0
- package/build_module/decoration/use-styles.js +19 -0
- package/build_module/decoration/use-styles.js.map +1 -0
- package/build_module/dot.js +174 -349
- package/build_module/dot.js.map +1 -1
- package/build_module/helpers/render-css.d.ts +2 -0
- package/build_module/helpers/render-css.js +20 -0
- package/build_module/helpers/render-css.js.map +1 -0
- package/build_module/helpers/render-stylesheet.d.ts +2 -0
- package/build_module/helpers/render-stylesheet.js +27 -0
- package/build_module/helpers/render-stylesheet.js.map +1 -0
- package/build_module/helpers/tools.d.ts +3 -0
- package/build_module/helpers/tools.js +50 -0
- package/build_module/helpers/tools.js.map +1 -0
- package/build_module/helpers.d.ts +1 -0
- package/build_module/helpers.js +1 -0
- package/build_module/helpers.js.map +1 -1
- package/build_module/index.js +1 -0
- package/build_module/index.js.map +1 -1
- package/build_module/reactive.d.ts +10 -1
- package/build_module/reactive.js +34 -4
- package/build_module/reactive.js.map +1 -1
- package/build_module/reactivity/binding.d.ts +13 -0
- package/build_module/reactivity/binding.js +20 -0
- package/build_module/reactivity/binding.js.map +1 -0
- package/build_module/reactivity/bound-reactive.d.ts +13 -0
- package/build_module/reactivity/bound-reactive.js +20 -0
- package/build_module/reactivity/bound-reactive.js.map +1 -0
- package/build_module/reactivity/reactive-attr.d.ts +6 -0
- package/build_module/reactivity/reactive-attr.js +7 -0
- package/build_module/reactivity/reactive-attr.js.map +1 -0
- package/build_module/reactivity/reactive-style.d.ts +6 -0
- package/build_module/reactivity/reactive-style.js +7 -0
- package/build_module/reactivity/reactive-style.js.map +1 -0
- package/build_module/reactivity/reactive.d.ts +22 -0
- package/build_module/reactivity/reactive.js +54 -0
- package/build_module/reactivity/reactive.js.map +1 -0
- package/build_module/reactivity/subscription.d.ts +7 -0
- package/build_module/reactivity/subscription.js +41 -0
- package/build_module/reactivity/subscription.js.map +1 -0
- package/build_module/reactivity/watcher.d.ts +22 -0
- package/build_module/reactivity/watcher.js +61 -0
- package/build_module/reactivity/watcher.js.map +1 -0
- package/build_module/v-meta-nodes/attribute-v-node.d.ts +12 -0
- package/build_module/v-meta-nodes/attribute-v-node.js +53 -0
- package/build_module/v-meta-nodes/attribute-v-node.js.map +1 -0
- package/build_module/v-meta-nodes/style-v-node.d.ts +16 -0
- package/build_module/v-meta-nodes/style-v-node.js +135 -0
- package/build_module/v-meta-nodes/style-v-node.js.map +1 -0
- package/build_module/v-meta-nodes/v-meta-node.d.ts +5 -0
- package/build_module/v-meta-nodes/v-meta-node.js +3 -0
- package/build_module/v-meta-nodes/v-meta-node.js.map +1 -0
- package/build_module/v-style-nodes/base-v-style.d.ts +14 -0
- package/build_module/v-style-nodes/base-v-style.js +113 -0
- package/build_module/v-style-nodes/base-v-style.js.map +1 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.d.ts +17 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.js +28 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.js.map +1 -0
- package/build_module/v-style-nodes/filter-v-style.d.ts +13 -0
- package/build_module/v-style-nodes/filter-v-style.js +35 -0
- package/build_module/v-style-nodes/filter-v-style.js.map +1 -0
- package/build_module/v-style-nodes/transform-v-style.d.ts +28 -0
- package/build_module/v-style-nodes/transform-v-style.js +76 -0
- package/build_module/v-style-nodes/transform-v-style.js.map +1 -0
- package/build_module/v-style-nodes/v-style.d.ts +6 -0
- package/build_module/v-style-nodes/v-style.js +6 -0
- package/build_module/v-style-nodes/v-style.js.map +1 -0
- package/build_module/vdom-nodes/collection-vdom.d.ts +3 -3
- package/build_module/vdom-nodes/collection-vdom.js +18 -15
- package/build_module/vdom-nodes/collection-vdom.js.map +1 -1
- package/build_module/vdom-nodes/component-vdom.d.ts +3 -4
- package/build_module/vdom-nodes/component-vdom.js +56 -15
- package/build_module/vdom-nodes/component-vdom.js.map +1 -1
- package/build_module/vdom-nodes/conditional-vdom.d.ts +4 -3
- package/build_module/vdom-nodes/conditional-vdom.js +35 -34
- package/build_module/vdom-nodes/conditional-vdom.js.map +1 -1
- package/build_module/vdom-nodes/container-vdom.d.ts +12 -8
- package/build_module/vdom-nodes/container-vdom.js +35 -11
- package/build_module/vdom-nodes/container-vdom.js.map +1 -1
- package/build_module/vdom-nodes/element-vdom.d.ts +10 -1
- package/build_module/vdom-nodes/element-vdom.js +71 -10
- package/build_module/vdom-nodes/element-vdom.js.map +1 -1
- package/build_module/vdom-nodes/html-vdom.d.ts +3 -3
- package/build_module/vdom-nodes/html-vdom.js +8 -8
- package/build_module/vdom-nodes/html-vdom.js.map +1 -1
- package/build_module/vdom-nodes/text-vdom.d.ts +3 -3
- package/build_module/vdom-nodes/text-vdom.js +7 -7
- package/build_module/vdom-nodes/text-vdom.js.map +1 -1
- package/build_module/vdom-nodes/vdom.d.ts +3 -0
- package/build_module/vdom-nodes/vdom.js +13 -0
- package/build_module/vdom-nodes/vdom.js.map +1 -1
- package/build_module/window-wrapper.d.ts +20 -0
- package/build_module/window-wrapper.js +39 -0
- package/build_module/window-wrapper.js.map +1 -0
- package/package.json +4 -3
- package/readme.md +1 -1
- package/build_module/decoration/style.js +0 -1
- package/build_module/decoration/style.js.map +0 -1
- /package/build_module/{decoration/style.d.ts → css/css.d.ts} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default function renderStylesheet(styleCallback, document) {
|
|
2
|
+
let DocumentCSSStyleSheet = document.defaultView.CSSStyleSheet;
|
|
3
|
+
let sharedStyles = new DocumentCSSStyleSheet();
|
|
4
|
+
let finalStylesheet = "";
|
|
5
|
+
if (typeof styleCallback == "string") {
|
|
6
|
+
finalStylesheet = styleCallback;
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
let css = null;
|
|
10
|
+
let styles = styleCallback(css);
|
|
11
|
+
if (typeof styles == "string") {
|
|
12
|
+
finalStylesheet = styles;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (sharedStyles.replaceSync) {
|
|
18
|
+
sharedStyles.replaceSync(finalStylesheet);
|
|
19
|
+
return sharedStyles;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
let style = document.createElement("style");
|
|
23
|
+
style.innerHTML = finalStylesheet;
|
|
24
|
+
return style;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=render-stylesheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-stylesheet.js","sourceRoot":"","sources":["../../src/helpers/render-stylesheet.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,aAAoD,EAAE,QAAkB;IAEhH,IAAI,qBAAqB,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;IAE/D,IAAI,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC/C,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,IAAI,OAAO,aAAa,IAAI,QAAQ,EAAE;QACrC,eAAe,GAAG,aAAa,CAAC;KAChC;SACI;QACJ,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;YAE9B,eAAe,GAAG,MAAM,CAAC;SACzB;aACI;SAGJ;KAED;IAED,IAAG,YAAY,CAAC,WAAW,EAAC;QAC3B,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAE1C,OAAO,YAAY,CAAC;KACpB;SACG;QAEH,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;QAClC,OAAO,KAAK,CAAC;KACb;AACF,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { DOT_VDOM_PROP_NAME } from "../constants";
|
|
2
|
+
export function removeNodesBetween(start, end) {
|
|
3
|
+
if (start.parentNode !== end.parentNode) {
|
|
4
|
+
throw new Error("Start and end nodes must have the same parent.");
|
|
5
|
+
}
|
|
6
|
+
let current = start.nextSibling;
|
|
7
|
+
while (current && current !== end) {
|
|
8
|
+
const next = current.nextSibling;
|
|
9
|
+
if (current[DOT_VDOM_PROP_NAME]) {
|
|
10
|
+
current[DOT_VDOM_PROP_NAME]._unrender();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
current.parentNode?.removeChild(current);
|
|
14
|
+
}
|
|
15
|
+
current = next;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function deepEqual(obj1, obj2, visited = new Map()) {
|
|
19
|
+
if (obj1 === obj2) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (obj1 == null || obj2 == null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (visited.has(obj1)) {
|
|
26
|
+
return visited.get(obj1) === obj2;
|
|
27
|
+
}
|
|
28
|
+
visited.set(obj1, obj2);
|
|
29
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
30
|
+
if (obj1.length !== obj2.length) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const prop in obj1) {
|
|
35
|
+
if (!obj2.hasOwnProperty(prop)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (!deepEqual(obj1[prop], obj2[prop], visited)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const prop in obj2) {
|
|
43
|
+
if (!obj1.hasOwnProperty(prop)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
export const floatRegex = new RegExp("[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?", "g");
|
|
50
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/helpers/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,kBAAkB,CAAC,KAAW,EAAE,GAAS;IAExD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KAClE;IAED,IAAI,OAAO,GAAc,KAAK,CAAC,WAAW,CAAC;IAG3C,OAAO,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE;QAClC,MAAM,IAAI,GAAc,OAAO,CAAC,WAAW,CAAC;QAI5C,IAAG,OAAO,CAAC,kBAAkB,CAAC,EAAC;YAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;SACxC;aACG;YACH,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;SACzC;QACD,OAAO,GAAG,IAAI,CAAC;KACf;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAS,EAAE,IAAS,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE;IAC/D,IAAI,IAAI,KAAK,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACf;IAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACtF,OAAO,KAAK,CAAC;KAChB;IAGD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;KACrC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAExB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC7B,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;YAC7C,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC"}
|
package/build_module/helpers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,kBAAkB,CAAC,KAAW,EAAE,GAAS;IAExD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KAClE;IAED,IAAI,OAAO,GAAc,KAAK,CAAC,WAAW,CAAC;IAG3C,OAAO,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE;QAClC,MAAM,IAAI,GAAc,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,kBAAkB,CAAC,KAAW,EAAE,GAAS;IAExD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KAClE;IAED,IAAI,OAAO,GAAc,KAAK,CAAC,WAAW,CAAC;IAG3C,OAAO,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE;QAClC,MAAM,IAAI,GAAc,OAAO,CAAC,WAAW,CAAC;QAI5C,IAAG,OAAO,CAAC,kBAAkB,CAAC,EAAC;YAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;SACxC;aACG;YACH,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;SACzC;QACD,OAAO,GAAG,IAAI,CAAC;KACf;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAS,EAAE,IAAS,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE;IAC/D,IAAI,IAAI,KAAK,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACf;IAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACtF,OAAO,KAAK,CAAC;KAChB;IAGD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;KACrC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAExB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC7B,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;YAC7C,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,IAAI,UAAU,GAAG,IAAI,MAAM,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC"}
|
package/build_module/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AAUtB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AAUtB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -4,6 +4,8 @@ import { TextVdom } from "./vdom-nodes/text-vdom";
|
|
|
4
4
|
import { HtmlVdom } from "./vdom-nodes/html-vdom";
|
|
5
5
|
import { ConditionalVdom } from "./vdom-nodes/conditional-vdom";
|
|
6
6
|
import CollectionVdom from "./vdom-nodes/collection-vdom";
|
|
7
|
+
import VStyle from "./v-style-nodes/v-style";
|
|
8
|
+
import VMetaNode from "./v-meta-nodes/v-meta-node";
|
|
7
9
|
export default class Reactive<Ti = any, To = Ti> implements IReactive<Ti, To> {
|
|
8
10
|
_value: Ti;
|
|
9
11
|
private _cachedLastValue;
|
|
@@ -14,21 +16,28 @@ export default class Reactive<Ti = any, To = Ti> implements IReactive<Ti, To> {
|
|
|
14
16
|
element: ElementVdom;
|
|
15
17
|
attribute: string;
|
|
16
18
|
}>;
|
|
19
|
+
observingAttributeCollectionss: Record<number, VMetaNode>;
|
|
17
20
|
observingCollections: Record<number, {
|
|
18
21
|
collection: CollectionVdom;
|
|
19
22
|
key?: string;
|
|
20
23
|
}>;
|
|
21
24
|
observingConditionals: Record<number, ConditionalVdom>;
|
|
25
|
+
observingStyles: Record<number, {
|
|
26
|
+
prop: string;
|
|
27
|
+
vStyle: VStyle;
|
|
28
|
+
}>;
|
|
22
29
|
observingCallbacks: Record<number, (value: To) => void>;
|
|
23
30
|
constructor();
|
|
24
31
|
getValue(): To;
|
|
25
32
|
setValue(v: Ti): void;
|
|
26
33
|
private updater;
|
|
27
|
-
|
|
34
|
+
transform?: (input: Ti) => To;
|
|
28
35
|
nextId: number;
|
|
29
36
|
subscribeText(node: TextVdom): number;
|
|
30
37
|
subscribeHtml(node: HtmlVdom): number;
|
|
31
38
|
subscribeAttr(node: ElementVdom, attributeName: string): number;
|
|
39
|
+
subscribeAttrCollection(collection: VMetaNode): number;
|
|
40
|
+
subscribeStyle(vStyle: VStyle, propName: string): number;
|
|
32
41
|
subscribeCollection(node: CollectionVdom): number;
|
|
33
42
|
subscribeCond(node: ConditionalVdom): number;
|
|
34
43
|
subscribeCallback(callback: (value: To) => void): number;
|
package/build_module/reactive.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
const TEXT_OFFSET = 0;
|
|
2
2
|
const HTML_OFFSET = 1;
|
|
3
3
|
const ATTR_OFFSET = 2;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const ATTR_COLLECTION_OFFSET = 3;
|
|
5
|
+
const STYLE_OFFSET = 4;
|
|
6
|
+
const COND_OFFSET = 5;
|
|
7
|
+
const ARRAY_OFFSET = 6;
|
|
8
|
+
const CB_OFFSET = 7;
|
|
7
9
|
const CATEGORIES = CB_OFFSET + 1;
|
|
8
10
|
export default class Reactive {
|
|
9
11
|
constructor() {
|
|
10
12
|
this.observingTextNodes = {};
|
|
11
13
|
this.observingHtmlNodes = {};
|
|
12
14
|
this.observingAttributes = {};
|
|
15
|
+
this.observingAttributeCollectionss = {};
|
|
13
16
|
this.observingCollections = {};
|
|
14
17
|
this.observingConditionals = {};
|
|
18
|
+
this.observingStyles = {};
|
|
15
19
|
this.observingCallbacks = {};
|
|
16
20
|
this.nextId = 1;
|
|
17
21
|
}
|
|
18
22
|
getValue() {
|
|
19
|
-
return this.
|
|
23
|
+
return this.transform ? this.transform(this._value) : this._value;
|
|
20
24
|
}
|
|
21
25
|
setValue(v) {
|
|
22
26
|
this._value = v;
|
|
@@ -39,6 +43,14 @@ export default class Reactive {
|
|
|
39
43
|
let a = this.observingAttributes[o];
|
|
40
44
|
a.element.setAttr(a.attribute, this);
|
|
41
45
|
}
|
|
46
|
+
for (let o in this.observingAttributeCollectionss) {
|
|
47
|
+
let a = this.observingAttributeCollectionss[o];
|
|
48
|
+
a.update();
|
|
49
|
+
}
|
|
50
|
+
for (let o in this.observingStyles) {
|
|
51
|
+
let s = this.observingStyles[o];
|
|
52
|
+
s.vStyle.updateProp(s.prop, value);
|
|
53
|
+
}
|
|
42
54
|
for (let o in this.observingCollections) {
|
|
43
55
|
let c = this.observingCollections[o];
|
|
44
56
|
c.collection.updateList();
|
|
@@ -67,6 +79,16 @@ export default class Reactive {
|
|
|
67
79
|
this.observingAttributes[id] = { element: node, attribute: attributeName };
|
|
68
80
|
return id;
|
|
69
81
|
}
|
|
82
|
+
subscribeAttrCollection(collection) {
|
|
83
|
+
let id = ATTR_COLLECTION_OFFSET + CATEGORIES * this.nextId++;
|
|
84
|
+
this.observingAttributeCollectionss[id] = collection;
|
|
85
|
+
return id;
|
|
86
|
+
}
|
|
87
|
+
subscribeStyle(vStyle, propName) {
|
|
88
|
+
let id = STYLE_OFFSET + CATEGORIES * this.nextId++;
|
|
89
|
+
this.observingStyles[id] = { prop: propName, vStyle: vStyle };
|
|
90
|
+
return id;
|
|
91
|
+
}
|
|
70
92
|
subscribeCollection(node) {
|
|
71
93
|
let id = ARRAY_OFFSET + CATEGORIES * this.nextId++;
|
|
72
94
|
this.observingCollections[id] = { collection: node, key: null };
|
|
@@ -93,6 +115,14 @@ export default class Reactive {
|
|
|
93
115
|
delete this.observingAttributes[id];
|
|
94
116
|
break;
|
|
95
117
|
}
|
|
118
|
+
case ATTR_COLLECTION_OFFSET: {
|
|
119
|
+
delete this.observingAttributeCollectionss[id];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case STYLE_OFFSET: {
|
|
123
|
+
delete this.observingStyles[id];
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
96
126
|
case HTML_OFFSET: {
|
|
97
127
|
delete this.observingHtmlNodes[id];
|
|
98
128
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AAGtB,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,QAAQ;IAc5B;QATA,uBAAkB,GAA6B,EAAE,CAAC;QAClD,uBAAkB,GAA6B,EAAE,CAAC;QAClD,wBAAmB,GAA8D,EAAE,CAAC;QACpF,mCAA8B,GAA8B,EAAE,CAAC;QAC/D,yBAAoB,GAA+D,EAAE,CAAC;QACtF,0BAAqB,GAAoC,EAAE,CAAC;QAC5D,oBAAe,GAAmD,EAAE,CAAC;QACrE,uBAAkB,GAAsC,EAAE,CAAC;QA+D3D,WAAM,GAAG,CAAC,CAAC;IA5DX,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAuB,CAAC;IACpF,CAAC;IAED,QAAQ,CAAC,CAAK;QACb,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAG,IAAI,CAAC,gBAAgB,IAAI,QAAQ,EAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACvB;IACF,CAAC;IAEO,OAAO,CAAC,KAAS;QACxB,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAC;YACpC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAe,IAAI,EAAE,CAAC;SAC/C;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAC;YACpC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,UAAU,CAAC,KAAe,CAAC,CAAC;SAC9B;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAC;YACrC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACrC;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,8BAA8B,EAAC;YAChD,IAAI,CAAC,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,MAAM,EAAE,CAAC;SACX;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAC;YACjC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;SAC7C;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAC;YACtC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;SAC1B;QAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAC;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,gBAAgB,EAAE,CAAC;SACrB;QAGD,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAC;YACpC,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACpC,EAAE,CAAC,KAAK,CAAC,CAAC;SACV;IACF,CAAC;IAMD,aAAa,CAAC,IAAc;QAC3B,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACnC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,aAAa,CAAC,IAAc;QAC3B,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACnC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,aAAa,CAAC,IAAiB,EAAE,aAAqB;QACrD,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACX,CAAC;IACD,uBAAuB,CAAC,UAAqB;QAC5C,IAAI,EAAE,GAAG,sBAAsB,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7D,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;QACrD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,QAAgB;QAC9C,IAAI,EAAE,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;IACX,CAAC;IACD,mBAAmB,CAAC,IAAoB;QACvC,IAAI,EAAE,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;QAC9D,OAAO,EAAE,CAAC;IACX,CAAC;IACD,aAAa,CAAC,IAAqB;QAClC,IAAI,EAAE,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACtC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,iBAAiB,CAAC,QAA2B;QAC5C,IAAI,EAAE,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvC,OAAO,EAAE,CAAC;IACX,CAAC;IAED,aAAa,CAAC,EAAU;QACvB,IAAI,QAAQ,GAAG,EAAE,GAAG,UAAU,CAAC;QAC/B,QAAO,QAAQ,EAAC;YACf,KAAK,WAAW,CAAC,CAAC;gBACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM;aACN;YACD,KAAK,WAAW,CAAC,CAAC;gBACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM;aACN;YACD,KAAK,sBAAsB,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;gBAC/C,MAAM;aACN;YACD,KAAK,YAAY,CAAC,CAAC;gBAClB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBAChC,MAAM;aACN;YACD,KAAK,WAAW,CAAC,CAAC;gBACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM;aACN;YACD,KAAK,YAAY,CAAC,CAAC;gBAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;gBACrC,MAAM;aACN;YACD,KAAK,WAAW,CAAC,CAAC;gBACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBACtC,MAAM;aACN;YACD,KAAK,SAAS,CAAC,CAAC;gBACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM;aACN;SACD;IACF,CAAC;IAED,eAAe;QACd,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CAED"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IBinding, IWatcher } from "dothtml-interfaces";
|
|
2
|
+
export default class Binding<T = any, Td = T> implements IBinding<T, Td> {
|
|
3
|
+
_source: IWatcher<T>;
|
|
4
|
+
_transform: {
|
|
5
|
+
display?: (v: T) => Td;
|
|
6
|
+
read?: (v: string) => T;
|
|
7
|
+
};
|
|
8
|
+
_get(): Td;
|
|
9
|
+
_set(v: string | number | boolean): void;
|
|
10
|
+
_subscribe(subscriber: any): number;
|
|
11
|
+
_unsubscribe(id: number): void;
|
|
12
|
+
constructor(source: IWatcher<T>);
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export default class Binding {
|
|
2
|
+
_get() {
|
|
3
|
+
let v = this._transform?.display ? this._transform.display(this._source.value) : this._source.value;
|
|
4
|
+
return v;
|
|
5
|
+
}
|
|
6
|
+
_set(v) {
|
|
7
|
+
let value = this._transform?.read ? this._transform.read(v) : v;
|
|
8
|
+
this._source.value = value;
|
|
9
|
+
}
|
|
10
|
+
_subscribe(subscriber) {
|
|
11
|
+
return this._source._subscribe(this, subscriber);
|
|
12
|
+
}
|
|
13
|
+
_unsubscribe(id) {
|
|
14
|
+
this._source._detachBinding(id);
|
|
15
|
+
}
|
|
16
|
+
constructor(source) {
|
|
17
|
+
this._source = source;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/reactivity/binding.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,OAAO;IAQ3B,IAAI;QAEH,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAsB,CAAC;QAErH,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC,CAAwB;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;QAC1F,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,UAAe;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,EAAU;QACtB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,MAAmB;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;CACD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IBoundReactive, IReactive } from "dothtml-interfaces";
|
|
2
|
+
export default class BoundReactive<T = any, Td = T> implements IBoundReactive<T, Td> {
|
|
3
|
+
_source: IReactive<T>;
|
|
4
|
+
_transform: {
|
|
5
|
+
display?: (v: T) => Td;
|
|
6
|
+
read?: (v: string) => T;
|
|
7
|
+
};
|
|
8
|
+
_get(): Td;
|
|
9
|
+
_set(v: string | number | boolean): void;
|
|
10
|
+
_subscribe(subscriber: any): number;
|
|
11
|
+
_unsubscribe(id: number): void;
|
|
12
|
+
constructor(source: IReactive<T>);
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export default class BoundReactive {
|
|
2
|
+
_get() {
|
|
3
|
+
let v = this._transform?.display ? this._transform.display(this._source.value) : this._source.value;
|
|
4
|
+
return v;
|
|
5
|
+
}
|
|
6
|
+
_set(v) {
|
|
7
|
+
let value = this._transform?.read ? this._transform.read(v) : v;
|
|
8
|
+
this._source.value = value;
|
|
9
|
+
}
|
|
10
|
+
_subscribe(subscriber) {
|
|
11
|
+
return this._source._subscribe(this, subscriber);
|
|
12
|
+
}
|
|
13
|
+
_unsubscribe(id) {
|
|
14
|
+
this._source._detachBinding(id);
|
|
15
|
+
}
|
|
16
|
+
constructor(source) {
|
|
17
|
+
this._source = source;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=bound-reactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bound-reactive.js","sourceRoot":"","sources":["../../src/reactivity/bound-reactive.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,aAAa;IAQjC,IAAI;QAEH,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAsB,CAAC;QAErH,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC,CAAwB;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;QAC1F,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,UAAe;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,EAAU;QACtB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,MAAoB;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-attr.js","sourceRoot":"","sources":["../../src/reactivity/reactive-attr.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,YAAY;IAKhC,YAAY,WAAwB,EAAE,SAAiB;QACtD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-style.js","sourceRoot":"","sources":["../../src/reactivity/reactive-style.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,aAAa;IAKjC,YAAY,MAAc,EAAE,SAAiB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,CAAC;CACD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IBoundReactive, IReactive } from "dothtml-interfaces";
|
|
2
|
+
import BoundReactive from "./bound-reactive";
|
|
3
|
+
import Binding from "./binding";
|
|
4
|
+
export default class Reactive<T = any> implements IReactive<T> {
|
|
5
|
+
bindAs<Td>(transform: {
|
|
6
|
+
display?: (v: T) => Td;
|
|
7
|
+
read?: (v: string) => T;
|
|
8
|
+
}): IBoundReactive<T, Td>;
|
|
9
|
+
bind(): BoundReactive<T, T>;
|
|
10
|
+
_value: T;
|
|
11
|
+
key: string;
|
|
12
|
+
allBindings: Record<number, Binding>;
|
|
13
|
+
constructor();
|
|
14
|
+
get value(): T;
|
|
15
|
+
set value(v: T);
|
|
16
|
+
private updater;
|
|
17
|
+
nextId: number;
|
|
18
|
+
subscribe(callback: Function): any;
|
|
19
|
+
_subscribe(boundReactive: IBoundReactive, item: any): number;
|
|
20
|
+
_detachBinding(id: number): void;
|
|
21
|
+
updateObservers(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import BoundReactive from "./bound-reactive";
|
|
2
|
+
import Binding from "./binding";
|
|
3
|
+
const TEXT_OFFSET = 0;
|
|
4
|
+
const HTML_OFFSET = 1;
|
|
5
|
+
const ATTR_OFFSET = 2;
|
|
6
|
+
const ATTR_COLLECTION_OFFSET = 3;
|
|
7
|
+
const STYLE_OFFSET = 4;
|
|
8
|
+
const COND_OFFSET = 5;
|
|
9
|
+
const ARRAY_OFFSET = 6;
|
|
10
|
+
const CB_OFFSET = 7;
|
|
11
|
+
const CATEGORIES = CB_OFFSET + 1;
|
|
12
|
+
export default class Reactive {
|
|
13
|
+
bindAs(transform) {
|
|
14
|
+
let br = new BoundReactive(this);
|
|
15
|
+
br._transform = transform;
|
|
16
|
+
return br;
|
|
17
|
+
}
|
|
18
|
+
bind() {
|
|
19
|
+
return new BoundReactive(this);
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
this.allBindings = {};
|
|
23
|
+
this.nextId = 1;
|
|
24
|
+
}
|
|
25
|
+
get value() {
|
|
26
|
+
return this._value;
|
|
27
|
+
}
|
|
28
|
+
set value(v) {
|
|
29
|
+
this._value = v;
|
|
30
|
+
this.updater(this._value);
|
|
31
|
+
}
|
|
32
|
+
updater(value) {
|
|
33
|
+
for (let b in this.allBindings) {
|
|
34
|
+
this.allBindings[b].update();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
subscribe(callback) {
|
|
38
|
+
let br = new BoundReactive(this);
|
|
39
|
+
return br._subscribe(callback);
|
|
40
|
+
}
|
|
41
|
+
_subscribe(boundReactive, item) {
|
|
42
|
+
let id = this.nextId++;
|
|
43
|
+
this.allBindings[id] = new Binding(boundReactive, item);
|
|
44
|
+
return id;
|
|
45
|
+
}
|
|
46
|
+
_detachBinding(id) {
|
|
47
|
+
delete this.allBindings[id];
|
|
48
|
+
}
|
|
49
|
+
updateObservers() {
|
|
50
|
+
let updatedValue = this.value;
|
|
51
|
+
this.updater(updatedValue);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=reactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../src/reactivity/reactive.ts"],"names":[],"mappings":"AAUA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AAGtB,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,QAAQ;IAE5B,MAAM,CAAK,SAGV;QACA,IAAI,EAAE,GAAG,IAAI,aAAa,CAAQ,IAAI,CAA0B,CAAC;QAEjE,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC;QAE1B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI;QACH,OAAO,IAAI,aAAa,CAAO,IAAI,CAAC,CAAC;IACtC,CAAC;IAOD;QAFA,gBAAW,GAA4B,EAAE,CAAC;QAwB1C,WAAM,GAAG,CAAC,CAAC;IArBX,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,CAAI;QACb,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAKhB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEO,OAAO,CAAC,KAAQ;QACvB,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC7B;IACF,CAAC;IAID,SAAS,CAAC,QAAkB;QAC3B,IAAI,EAAE,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,aAA6B,EAAE,IAAS;QAClD,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAExD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAID,eAAe;QACd,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CAED"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import VMetaNode from "../v-meta-nodes/v-meta-node";
|
|
2
|
+
import CollectionVdom from "../vdom-nodes/collection-vdom";
|
|
3
|
+
import { ConditionalVdom } from "../vdom-nodes/conditional-vdom";
|
|
4
|
+
import { HtmlVdom } from "../vdom-nodes/html-vdom";
|
|
5
|
+
import { TextVdom } from "../vdom-nodes/text-vdom";
|
|
6
|
+
import ReactiveAttr from "./reactive-attr";
|
|
7
|
+
import ReactiveStyle from "./reactive-style";
|
|
8
|
+
export default class Subscription {
|
|
9
|
+
constructor(boundReactive, item) {
|
|
10
|
+
this.boundReactive = boundReactive;
|
|
11
|
+
this.item = item;
|
|
12
|
+
}
|
|
13
|
+
update() {
|
|
14
|
+
let value = this.boundReactive._get();
|
|
15
|
+
if (this.item instanceof TextVdom) {
|
|
16
|
+
this.item.textNode.textContent = value ?? "";
|
|
17
|
+
}
|
|
18
|
+
else if (this.item instanceof HtmlVdom) {
|
|
19
|
+
this.item.updateHtml(value);
|
|
20
|
+
}
|
|
21
|
+
else if (this.item instanceof ReactiveAttr) {
|
|
22
|
+
this.item.elementVdom.setAttr(this.item.attribute, this.boundReactive);
|
|
23
|
+
}
|
|
24
|
+
else if (this.item instanceof VMetaNode) {
|
|
25
|
+
this.item.update();
|
|
26
|
+
}
|
|
27
|
+
else if (this.item instanceof ReactiveStyle) {
|
|
28
|
+
this.item.vStyle.updateProp(this.item.prop, value);
|
|
29
|
+
}
|
|
30
|
+
else if (this.item instanceof CollectionVdom) {
|
|
31
|
+
this.item.updateList();
|
|
32
|
+
}
|
|
33
|
+
else if (this.item instanceof ConditionalVdom) {
|
|
34
|
+
this.item.updateConditions();
|
|
35
|
+
}
|
|
36
|
+
else if (this.item instanceof Function) {
|
|
37
|
+
this.item(value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/reactivity/subscription.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAM7C,MAAM,CAAC,OAAO,OAAO,YAAY;IAIhC,YAAY,aAAuB,EAAE,IAAS;QAC7C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAGD,MAAM;QACL,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAEtC,IAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAe,IAAI,EAAE,CAAC;SACvD;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC5B;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,YAAY,EAAC;YACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACvE;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,SAAS,EAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACnB;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,aAAa,EAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,cAAc,EAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;SACvB;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,eAAe,EAAC;YAE5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC7B;aACI,IAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjB;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IBinding, IWatcher } from "dothtml-interfaces";
|
|
2
|
+
import Binding from "./binding";
|
|
3
|
+
import Subscription from "./subscription";
|
|
4
|
+
export default class Watcher<T = any> implements IWatcher<T> {
|
|
5
|
+
bindAs<Td>(transform: ((v: T) => Td) | {
|
|
6
|
+
display?: (v: T) => Td;
|
|
7
|
+
read?: (v: string) => T;
|
|
8
|
+
}): IBinding<T, Td>;
|
|
9
|
+
bind(): Binding<T, T>;
|
|
10
|
+
_value: T;
|
|
11
|
+
key: string;
|
|
12
|
+
allBindings: Record<number, Subscription>;
|
|
13
|
+
constructor();
|
|
14
|
+
get value(): T;
|
|
15
|
+
set value(v: T);
|
|
16
|
+
private updater;
|
|
17
|
+
nextId: number;
|
|
18
|
+
subscribe(callback: Function): any;
|
|
19
|
+
_subscribe(boundReactive: IBinding, item: any): number;
|
|
20
|
+
_detachBinding(id: number): void;
|
|
21
|
+
updateObservers(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import Binding from "./binding";
|
|
2
|
+
import Subscription from "./subscription";
|
|
3
|
+
const TEXT_OFFSET = 0;
|
|
4
|
+
const HTML_OFFSET = 1;
|
|
5
|
+
const ATTR_OFFSET = 2;
|
|
6
|
+
const ATTR_COLLECTION_OFFSET = 3;
|
|
7
|
+
const STYLE_OFFSET = 4;
|
|
8
|
+
const COND_OFFSET = 5;
|
|
9
|
+
const ARRAY_OFFSET = 6;
|
|
10
|
+
const CB_OFFSET = 7;
|
|
11
|
+
const CATEGORIES = CB_OFFSET + 1;
|
|
12
|
+
export default class Watcher {
|
|
13
|
+
bindAs(transform) {
|
|
14
|
+
let br = new Binding(this);
|
|
15
|
+
if (transform["call"] && transform["apply"]) {
|
|
16
|
+
br._transform = {
|
|
17
|
+
display: transform
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
br._transform = transform;
|
|
22
|
+
}
|
|
23
|
+
return br;
|
|
24
|
+
}
|
|
25
|
+
bind() {
|
|
26
|
+
return new Binding(this);
|
|
27
|
+
}
|
|
28
|
+
constructor() {
|
|
29
|
+
this.allBindings = {};
|
|
30
|
+
this.nextId = 1;
|
|
31
|
+
}
|
|
32
|
+
get value() {
|
|
33
|
+
return this._value;
|
|
34
|
+
}
|
|
35
|
+
set value(v) {
|
|
36
|
+
this._value = v;
|
|
37
|
+
this.updater(this._value);
|
|
38
|
+
}
|
|
39
|
+
updater(value) {
|
|
40
|
+
for (let b in this.allBindings) {
|
|
41
|
+
this.allBindings[b].update();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
subscribe(callback) {
|
|
45
|
+
let br = new Binding(this);
|
|
46
|
+
return br._subscribe(callback);
|
|
47
|
+
}
|
|
48
|
+
_subscribe(boundReactive, item) {
|
|
49
|
+
let id = this.nextId++;
|
|
50
|
+
this.allBindings[id] = new Subscription(boundReactive, item);
|
|
51
|
+
return id;
|
|
52
|
+
}
|
|
53
|
+
_detachBinding(id) {
|
|
54
|
+
delete this.allBindings[id];
|
|
55
|
+
}
|
|
56
|
+
updateObservers() {
|
|
57
|
+
let updatedValue = this.value;
|
|
58
|
+
this.updater(updatedValue);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/reactivity/watcher.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AAGtB,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,OAAO;IAE3B,MAAM,CAAK,SAGV;QACA,IAAI,EAAE,GAAG,IAAI,OAAO,CAAQ,IAAI,CAAoB,CAAC;QAErD,IAAG,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAC;YAC1C,EAAE,CAAC,UAAU,GAAG;gBACf,OAAO,EAAE,SAAuB;aAChC,CAAC;SACF;aACG;YACH,EAAE,CAAC,UAAU,GAAG,SAAgB,CAAC;SACjC;QAED,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI;QACH,OAAO,IAAI,OAAO,CAAO,IAAI,CAAC,CAAC;IAChC,CAAC;IAOD;QAFA,gBAAW,GAAiC,EAAE,CAAC;QAwB/C,WAAM,GAAG,CAAC,CAAC;IArBX,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,CAAI;QACb,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAKhB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEO,OAAO,CAAC,KAAQ;QACvB,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC7B;IACF,CAAC;IAID,SAAS,CAAC,QAAkB;QAC3B,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,aAAuB,EAAE,IAAS;QAC5C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAE7D,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAID,eAAe;QACd,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CAED"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Binding from "../reactivity/binding";
|
|
2
|
+
import VMetaNode from "./v-meta-node";
|
|
3
|
+
export default class AttributeVNode extends VMetaNode {
|
|
4
|
+
attr: string;
|
|
5
|
+
value: Record<string, string | Binding>;
|
|
6
|
+
target: HTMLElement;
|
|
7
|
+
observables: Record<number, Binding>;
|
|
8
|
+
constructor(attrName: any, attrValue: any);
|
|
9
|
+
render(target: HTMLElement): void;
|
|
10
|
+
update(): void;
|
|
11
|
+
unrender(): void;
|
|
12
|
+
}
|