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.
Files changed (110) hide show
  1. package/build_module/css/css-props.d.ts +8 -0
  2. package/build_module/css/css-props.js +40 -0
  3. package/build_module/css/css-props.js.map +1 -0
  4. package/build_module/css/css.js +1 -0
  5. package/build_module/css/css.js.map +1 -0
  6. package/build_module/css/format-css-type.d.ts +5 -0
  7. package/build_module/css/format-css-type.js +73 -0
  8. package/build_module/css/format-css-type.js.map +1 -0
  9. package/build_module/decoration/component.d.ts +9 -20
  10. package/build_module/decoration/component.js +20 -17
  11. package/build_module/decoration/component.js.map +1 -1
  12. package/build_module/decoration/use-styles.d.ts +14 -0
  13. package/build_module/decoration/use-styles.js +19 -0
  14. package/build_module/decoration/use-styles.js.map +1 -0
  15. package/build_module/dot.js +174 -349
  16. package/build_module/dot.js.map +1 -1
  17. package/build_module/helpers/render-css.d.ts +2 -0
  18. package/build_module/helpers/render-css.js +20 -0
  19. package/build_module/helpers/render-css.js.map +1 -0
  20. package/build_module/helpers/render-stylesheet.d.ts +2 -0
  21. package/build_module/helpers/render-stylesheet.js +27 -0
  22. package/build_module/helpers/render-stylesheet.js.map +1 -0
  23. package/build_module/helpers/tools.d.ts +3 -0
  24. package/build_module/helpers/tools.js +50 -0
  25. package/build_module/helpers/tools.js.map +1 -0
  26. package/build_module/helpers.d.ts +1 -0
  27. package/build_module/helpers.js +1 -0
  28. package/build_module/helpers.js.map +1 -1
  29. package/build_module/index.js +1 -0
  30. package/build_module/index.js.map +1 -1
  31. package/build_module/reactive.d.ts +10 -1
  32. package/build_module/reactive.js +34 -4
  33. package/build_module/reactive.js.map +1 -1
  34. package/build_module/reactivity/binding.d.ts +13 -0
  35. package/build_module/reactivity/binding.js +20 -0
  36. package/build_module/reactivity/binding.js.map +1 -0
  37. package/build_module/reactivity/bound-reactive.d.ts +13 -0
  38. package/build_module/reactivity/bound-reactive.js +20 -0
  39. package/build_module/reactivity/bound-reactive.js.map +1 -0
  40. package/build_module/reactivity/reactive-attr.d.ts +6 -0
  41. package/build_module/reactivity/reactive-attr.js +7 -0
  42. package/build_module/reactivity/reactive-attr.js.map +1 -0
  43. package/build_module/reactivity/reactive-style.d.ts +6 -0
  44. package/build_module/reactivity/reactive-style.js +7 -0
  45. package/build_module/reactivity/reactive-style.js.map +1 -0
  46. package/build_module/reactivity/reactive.d.ts +22 -0
  47. package/build_module/reactivity/reactive.js +54 -0
  48. package/build_module/reactivity/reactive.js.map +1 -0
  49. package/build_module/reactivity/subscription.d.ts +7 -0
  50. package/build_module/reactivity/subscription.js +41 -0
  51. package/build_module/reactivity/subscription.js.map +1 -0
  52. package/build_module/reactivity/watcher.d.ts +22 -0
  53. package/build_module/reactivity/watcher.js +61 -0
  54. package/build_module/reactivity/watcher.js.map +1 -0
  55. package/build_module/v-meta-nodes/attribute-v-node.d.ts +12 -0
  56. package/build_module/v-meta-nodes/attribute-v-node.js +53 -0
  57. package/build_module/v-meta-nodes/attribute-v-node.js.map +1 -0
  58. package/build_module/v-meta-nodes/style-v-node.d.ts +16 -0
  59. package/build_module/v-meta-nodes/style-v-node.js +135 -0
  60. package/build_module/v-meta-nodes/style-v-node.js.map +1 -0
  61. package/build_module/v-meta-nodes/v-meta-node.d.ts +5 -0
  62. package/build_module/v-meta-nodes/v-meta-node.js +3 -0
  63. package/build_module/v-meta-nodes/v-meta-node.js.map +1 -0
  64. package/build_module/v-style-nodes/base-v-style.d.ts +14 -0
  65. package/build_module/v-style-nodes/base-v-style.js +113 -0
  66. package/build_module/v-style-nodes/base-v-style.js.map +1 -0
  67. package/build_module/v-style-nodes/css-function-builder-v-style.d.ts +17 -0
  68. package/build_module/v-style-nodes/css-function-builder-v-style.js +28 -0
  69. package/build_module/v-style-nodes/css-function-builder-v-style.js.map +1 -0
  70. package/build_module/v-style-nodes/filter-v-style.d.ts +13 -0
  71. package/build_module/v-style-nodes/filter-v-style.js +35 -0
  72. package/build_module/v-style-nodes/filter-v-style.js.map +1 -0
  73. package/build_module/v-style-nodes/transform-v-style.d.ts +28 -0
  74. package/build_module/v-style-nodes/transform-v-style.js +76 -0
  75. package/build_module/v-style-nodes/transform-v-style.js.map +1 -0
  76. package/build_module/v-style-nodes/v-style.d.ts +6 -0
  77. package/build_module/v-style-nodes/v-style.js +6 -0
  78. package/build_module/v-style-nodes/v-style.js.map +1 -0
  79. package/build_module/vdom-nodes/collection-vdom.d.ts +3 -3
  80. package/build_module/vdom-nodes/collection-vdom.js +18 -15
  81. package/build_module/vdom-nodes/collection-vdom.js.map +1 -1
  82. package/build_module/vdom-nodes/component-vdom.d.ts +3 -4
  83. package/build_module/vdom-nodes/component-vdom.js +56 -15
  84. package/build_module/vdom-nodes/component-vdom.js.map +1 -1
  85. package/build_module/vdom-nodes/conditional-vdom.d.ts +4 -3
  86. package/build_module/vdom-nodes/conditional-vdom.js +35 -34
  87. package/build_module/vdom-nodes/conditional-vdom.js.map +1 -1
  88. package/build_module/vdom-nodes/container-vdom.d.ts +12 -8
  89. package/build_module/vdom-nodes/container-vdom.js +35 -11
  90. package/build_module/vdom-nodes/container-vdom.js.map +1 -1
  91. package/build_module/vdom-nodes/element-vdom.d.ts +10 -1
  92. package/build_module/vdom-nodes/element-vdom.js +71 -10
  93. package/build_module/vdom-nodes/element-vdom.js.map +1 -1
  94. package/build_module/vdom-nodes/html-vdom.d.ts +3 -3
  95. package/build_module/vdom-nodes/html-vdom.js +8 -8
  96. package/build_module/vdom-nodes/html-vdom.js.map +1 -1
  97. package/build_module/vdom-nodes/text-vdom.d.ts +3 -3
  98. package/build_module/vdom-nodes/text-vdom.js +7 -7
  99. package/build_module/vdom-nodes/text-vdom.js.map +1 -1
  100. package/build_module/vdom-nodes/vdom.d.ts +3 -0
  101. package/build_module/vdom-nodes/vdom.js +13 -0
  102. package/build_module/vdom-nodes/vdom.js.map +1 -1
  103. package/build_module/window-wrapper.d.ts +20 -0
  104. package/build_module/window-wrapper.js +39 -0
  105. package/build_module/window-wrapper.js.map +1 -0
  106. package/package.json +4 -3
  107. package/readme.md +1 -1
  108. package/build_module/decoration/style.js +0 -1
  109. package/build_module/decoration/style.js.map +0 -1
  110. /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,3 @@
1
+ export declare function removeNodesBetween(start: Node, end: Node): void;
2
+ export declare function deepEqual(obj1: any, obj2: any, visited?: Map<any, any>): boolean;
3
+ export declare const floatRegex: RegExp;
@@ -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"}
@@ -1,2 +1,3 @@
1
1
  export declare function removeNodesBetween(start: Node, end: Node): void;
2
2
  export declare function deepEqual(obj1: any, obj2: any, visited?: Map<any, any>): boolean;
3
+ export declare var floatRegex: RegExp;
@@ -46,4 +46,5 @@ export function deepEqual(obj1, obj2, visited = new Map()) {
46
46
  }
47
47
  return true;
48
48
  }
49
+ export var floatRegex = new RegExp("[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?", "g");
49
50
  //# sourceMappingURL=helpers.js.map
@@ -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;QAG5C,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"}
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"}
@@ -1,5 +1,6 @@
1
1
  import dot from "./dot";
2
2
  dot.version = "6.0.0";
3
3
  window.dot = dot;
4
+ document["_dotId"] = "default";
4
5
  export { dot };
5
6
  //# sourceMappingURL=index.js.map
@@ -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;AAEjB,OAAO,EAAE,GAAG,EAAE,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
- transformer?: (input: Ti) => To;
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;
@@ -1,22 +1,26 @@
1
1
  const TEXT_OFFSET = 0;
2
2
  const HTML_OFFSET = 1;
3
3
  const ATTR_OFFSET = 2;
4
- const COND_OFFSET = 3;
5
- const ARRAY_OFFSET = 4;
6
- const CB_OFFSET = 5;
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.transformer ? this.transformer(this._value) : this._value;
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":"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"}
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"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"}
@@ -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,6 @@
1
+ import ElementVdom from "../vdom-nodes/element-vdom";
2
+ export default class ReactiveAttr {
3
+ elementVdom: ElementVdom;
4
+ attribute: string;
5
+ constructor(elementVdom: ElementVdom, attribute: string);
6
+ }
@@ -0,0 +1,7 @@
1
+ export default class ReactiveAttr {
2
+ constructor(elementVdom, attribute) {
3
+ this.elementVdom = elementVdom;
4
+ this.attribute = attribute;
5
+ }
6
+ }
7
+ //# sourceMappingURL=reactive-attr.js.map
@@ -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,6 @@
1
+ import VStyle from "../v-style-nodes/v-style";
2
+ export default class ReactiveStyle {
3
+ vStyle: VStyle;
4
+ prop: string;
5
+ constructor(vStyle: VStyle, attribute: string);
6
+ }
@@ -0,0 +1,7 @@
1
+ export default class ReactiveStyle {
2
+ constructor(vStyle, attribute) {
3
+ this.vStyle = vStyle;
4
+ this.prop = attribute;
5
+ }
6
+ }
7
+ //# sourceMappingURL=reactive-style.js.map
@@ -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,7 @@
1
+ import { IBinding } from "dothtml-interfaces";
2
+ export default class Subscription {
3
+ boundReactive: IBinding;
4
+ item: any;
5
+ constructor(boundReactive: IBinding, item: any);
6
+ update(): void;
7
+ }
@@ -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
+ }