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
@@ -1,17 +1,27 @@
1
1
  import { DOT_VDOM_PROP_NAME } from "../constants";
2
- import Reactive from "../reactive";
2
+ import Watcher from "../reactivity/watcher";
3
+ import AttributeVNode from "../v-meta-nodes/attribute-v-node";
4
+ import StyleVNode from "../v-meta-nodes/style-v-node";
3
5
  import { ContainerVdom } from "./container-vdom";
4
6
  import { Vdom } from "./vdom";
7
+ import Binding from "../reactivity/binding";
8
+ import ReactiveAttr from "../reactivity/reactive-attr";
9
+ export class AttributeItem {
10
+ }
11
+ let manualInputAllowed = true;
5
12
  export default class ElementVdom extends Vdom {
6
- constructor(tag) {
13
+ constructor(dot, tag) {
7
14
  super();
8
15
  this.children = null;
9
16
  this.tag = null;
10
17
  this.attributes = {};
11
18
  this.events = [];
12
19
  this.attributeObserverIds = [];
20
+ this.childBuilders = [];
21
+ this.attrVNodes = [];
22
+ this.styleVNodes = [];
13
23
  this.tag = tag;
14
- this.children = new ContainerVdom();
24
+ this.children = new ContainerVdom(dot);
15
25
  this.children._parent = this;
16
26
  }
17
27
  _render(node) {
@@ -33,9 +43,25 @@ export default class ElementVdom extends Vdom {
33
43
  this.children._unrender();
34
44
  this.element.parentNode?.removeChild(this.element);
35
45
  this.element = null;
46
+ if (this.inputListener) {
47
+ this.element.removeEventListener("input", this.inputListener);
48
+ this.inputListener = null;
49
+ }
50
+ for (let i = 0; i < this.childBuilders.length; i++) {
51
+ this.childBuilders[i]._unrender();
52
+ }
53
+ this.childBuilders.length = 0;
54
+ for (let i = 0; i < this.attrVNodes.length; i++) {
55
+ this.attrVNodes[i].unrender();
56
+ }
57
+ this.attrVNodes.length = 0;
58
+ for (let i = 0; i < this.styleVNodes.length; i++) {
59
+ this.styleVNodes[i].unrender();
60
+ }
61
+ this.styleVNodes.length = 0;
36
62
  for (let i = 0; i < this.attributeObserverIds.length; i++) {
37
63
  let item = this.attributeObserverIds[i];
38
- item.observable.detachBinding(item.id);
64
+ item.observable._unsubscribe(item.id);
39
65
  }
40
66
  this.attributeObserverIds.length = 0;
41
67
  }
@@ -48,6 +74,19 @@ export default class ElementVdom extends Vdom {
48
74
  }
49
75
  }
50
76
  setAttr(attr, value) {
77
+ attr = (attr ?? "").toLowerCase();
78
+ if (value && typeof value === "object" && !(value instanceof Array || value instanceof Binding || value instanceof Watcher)) {
79
+ switch (attr) {
80
+ case "style": {
81
+ value = new StyleVNode(value);
82
+ break;
83
+ }
84
+ default: {
85
+ value = new AttributeVNode(attr, value);
86
+ break;
87
+ }
88
+ }
89
+ }
51
90
  this.attributes[attr] = value;
52
91
  if (this.element) {
53
92
  this.renderAttr(attr, value, this.element);
@@ -63,16 +102,38 @@ export default class ElementVdom extends Vdom {
63
102
  else
64
103
  node.removeAttribute(attr);
65
104
  }
66
- else if (value instanceof Reactive) {
67
- this.renderAttr(attr, value.getValue(), node);
68
- let id = value.subscribeAttr(this, attr);
105
+ else if (value instanceof Array) {
106
+ node.setAttribute(attr, value.join(" "));
107
+ }
108
+ else if (value instanceof Binding) {
109
+ this.renderAttr(attr, value._get(), node);
110
+ let id = value._subscribe(new ReactiveAttr(this, attr));
69
111
  this.attributeObserverIds.push({ id: id, observable: value });
70
112
  if (attr == "value" || attr == "checked") {
71
- this.element.addEventListener("input", (e) => {
72
- value.setValue(this.element[attr]);
73
- });
113
+ let timeout = null;
114
+ if (!this.inputListener) {
115
+ this.inputListener = (e) => {
116
+ if (!manualInputAllowed)
117
+ return;
118
+ if (timeout)
119
+ clearTimeout(timeout);
120
+ timeout = setTimeout(() => {
121
+ manualInputAllowed = false;
122
+ value._set(this.element[attr]);
123
+ manualInputAllowed = true;
124
+ timeout = null;
125
+ }, 200);
126
+ };
127
+ this.element.addEventListener("input", this.inputListener);
128
+ }
74
129
  }
75
130
  }
131
+ else if (value instanceof AttributeVNode) {
132
+ value.render(node);
133
+ }
134
+ else if (value instanceof StyleVNode) {
135
+ value.render(node);
136
+ }
76
137
  else {
77
138
  }
78
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"element-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/element-vdom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/element-vdom.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import Reactive from "../reactive";
1
+ import Binding from "../reactivity/binding";
2
2
  import { Vdom } from "./vdom";
3
3
  export declare class HtmlVdom extends Vdom {
4
4
  beforeNode: Node;
5
5
  afterNode: Node;
6
- html: string | Reactive;
6
+ html: string | Binding;
7
7
  observerId: number;
8
- constructor(html: string | Reactive);
8
+ constructor(html: string | Binding);
9
9
  updateHtml(html: any): void;
10
10
  _render(target: HTMLElement): void;
11
11
  _unrender(): void;
@@ -1,5 +1,5 @@
1
- import { removeNodesBetween } from "../helpers";
2
- import Reactive from "../reactive";
1
+ import { removeNodesBetween } from "../helpers/tools";
2
+ import Binding from "../reactivity/binding";
3
3
  import { Vdom } from "./vdom";
4
4
  export class HtmlVdom extends Vdom {
5
5
  constructor(html) {
@@ -19,9 +19,9 @@ export class HtmlVdom extends Vdom {
19
19
  }
20
20
  _render(target) {
21
21
  let html = "";
22
- if (this.html instanceof Reactive) {
23
- html = this.html.getValue();
24
- this.observerId = this.html.subscribeHtml(this);
22
+ if (this.html instanceof Binding) {
23
+ html = this.html._get() ?? "";
24
+ this.observerId = this.html._subscribe(this);
25
25
  }
26
26
  else {
27
27
  html = this.html;
@@ -41,13 +41,13 @@ export class HtmlVdom extends Vdom {
41
41
  this.beforeNode = null;
42
42
  this.afterNode = null;
43
43
  }
44
- if (this.observerId && this.html instanceof Reactive) {
45
- this.html.detachBinding(this.observerId);
44
+ if (this.observerId && this.html instanceof Binding) {
45
+ this.html._unsubscribe(this.observerId);
46
46
  this.observerId = 0;
47
47
  }
48
48
  }
49
49
  toString() {
50
- return this.html instanceof Reactive ? this.html.getValue() : this.html;
50
+ return this.html instanceof Binding ? this.html._get() : this.html;
51
51
  }
52
52
  }
53
53
  //# sourceMappingURL=html-vdom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/html-vdom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,OAAO,QAAS,SAAQ,IAAI;IAQjC,YAAY,IAAqB;QAChC,KAAK,EAAE,CAAC;QAHT,eAAU,GAAW,CAAC,CAAC;QAItB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,IAAI;QACd,IAAG,IAAI,CAAC,UAAU,EAAC;YAClB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAGpD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,OAAO,IAAI,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aAC3E;SACD;IACF,CAAC;IAED,OAAO,CAAC,MAAmB;QAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YAChC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAChD;aACG;YACH,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACjB;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACR,IAAG,IAAI,CAAC,UAAU,EAAC;YAClB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAG3C,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACtB;QAED,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACpB;IACF,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzE,CAAC;CACD"}
1
+ {"version":3,"file":"html-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/html-vdom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,OAAO,QAAS,SAAQ,IAAI;IAQjC,YAAY,IAAoB;QAC/B,KAAK,EAAE,CAAC;QAHT,eAAU,GAAW,CAAC,CAAC;QAItB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,IAAI;QACd,IAAG,IAAI,CAAC,UAAU,EAAC;YAClB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAGpD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,OAAO,IAAI,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aAC3E;SACD;IACF,CAAC;IAED,OAAO,CAAC,MAAmB;QAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAG,IAAI,CAAC,IAAI,YAAY,OAAO,EAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7C;aACG;YACH,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACjB;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS;QACR,IAAG,IAAI,CAAC,UAAU,EAAC;YAClB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAG3C,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACtB;QAED,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,YAAY,OAAO,EAAC;YAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACpB;IACF,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpE,CAAC;CACD"}
@@ -1,10 +1,10 @@
1
- import Reactive from "../reactive";
1
+ import Binding from "../reactivity/binding";
2
2
  import { Vdom } from "./vdom";
3
3
  export declare class TextVdom extends Vdom {
4
- text: string | boolean | number | Reactive;
4
+ text: string | boolean | number | Binding;
5
5
  textNode: Node;
6
6
  observerId: number;
7
- constructor(text: string | boolean | number | Reactive);
7
+ constructor(text: string | boolean | number | Binding);
8
8
  _render(node: HTMLElement): void;
9
9
  _unrender(): void;
10
10
  toString(): string;
@@ -1,4 +1,4 @@
1
- import Reactive from "../reactive";
1
+ import Binding from "../reactivity/binding";
2
2
  import { Vdom } from "./vdom";
3
3
  export class TextVdom extends Vdom {
4
4
  constructor(text) {
@@ -8,9 +8,9 @@ export class TextVdom extends Vdom {
8
8
  this.text = text;
9
9
  }
10
10
  _render(node) {
11
- if (this.text instanceof Reactive) {
12
- this.textNode = node.ownerDocument.createTextNode(this.text.getValue() ?? "");
13
- this.observerId = this.text.subscribeText(this);
11
+ if (this.text instanceof Binding) {
12
+ this.textNode = node.ownerDocument.createTextNode(this.text._get() ?? "");
13
+ this.observerId = this.text._subscribe(this);
14
14
  }
15
15
  else {
16
16
  this.textNode = node.ownerDocument.createTextNode(`${this.text ?? ""}`);
@@ -22,13 +22,13 @@ export class TextVdom extends Vdom {
22
22
  this.textNode.parentElement.removeChild(this.textNode);
23
23
  this.textNode = null;
24
24
  }
25
- if (this.observerId && this.text instanceof Reactive) {
26
- this.text.detachBinding(this.observerId);
25
+ if (this.observerId && this.text instanceof Binding) {
26
+ this.text._unsubscribe(this.observerId);
27
27
  this.observerId = 0;
28
28
  }
29
29
  }
30
30
  toString() {
31
- let temp = document.createTextNode((this.text instanceof Reactive ? this.text.getValue() : this.text) ?? "");
31
+ let temp = document.createTextNode((this.text instanceof Binding ? this.text._get() : this.text) ?? "");
32
32
  let div = document.createElement("div");
33
33
  div.appendChild(temp);
34
34
  return div.innerHTML;
@@ -1 +1 @@
1
- {"version":3,"file":"text-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/text-vdom.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,MAAM,OAAO,QAAS,SAAQ,IAAI;IAMjC,YAAY,IAAoC;QAC/C,KAAK,EAAE,CAAC;QAJT,aAAQ,GAAS,IAAI,CAAC;QACtB,eAAU,GAAG,CAAC,CAAC;QAId,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAiB;QACxB,IAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAChD;aACG;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;QACR,IAAG,IAAI,CAAC,QAAQ,EAAC;YAEhB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACrB;QAED,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAC;YACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACpB;IACF,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7G,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC,SAAS,CAAC;IACtB,CAAC;CACD"}
1
+ {"version":3,"file":"text-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/text-vdom.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,MAAM,OAAO,QAAS,SAAQ,IAAI;IAMjC,YAAY,IAAmC;QAC9C,KAAK,EAAE,CAAC;QAJT,aAAQ,GAAS,IAAI,CAAC;QACtB,eAAU,GAAG,CAAC,CAAC;QAId,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAiB;QACxB,IAAG,IAAI,CAAC,IAAI,YAAY,OAAO,EAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7C;aACG;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;QACR,IAAG,IAAI,CAAC,QAAQ,EAAC;YAEhB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACrB;QAED,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,YAAY,OAAO,EAAC;YAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACpB;IACF,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxG,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC,SAAS,CAAC;IACtB,CAAC;CACD"}
@@ -1,6 +1,9 @@
1
1
  export declare abstract class Vdom {
2
2
  abstract _render(target: HTMLElement): any;
3
3
  abstract _unrender(): any;
4
+ __isRendered: boolean;
5
+ get _isRendered(): boolean;
6
+ set _isRendered(value: boolean);
4
7
  toString(): string;
5
8
  _renderBefore(reference: Node): void;
6
9
  _renderAfter(reference: Node): void;
@@ -1,4 +1,17 @@
1
1
  export class Vdom {
2
+ constructor() {
3
+ this.__isRendered = false;
4
+ }
5
+ get _isRendered() {
6
+ return this.__isRendered;
7
+ }
8
+ set _isRendered(value) {
9
+ if (value && this.__isRendered)
10
+ throw new Error("Internal Error: Node is already rendered.");
11
+ if (!value && !this.__isRendered)
12
+ throw new Error("Internal Error: Node is not rendered.");
13
+ this.__isRendered = value;
14
+ }
2
15
  toString() {
3
16
  let el = document.createElement("div");
4
17
  this._render(el);
@@ -1 +1 @@
1
- {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/vdom.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAMzB,QAAQ;QACP,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC,SAAS,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,SAAe;QAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,OAAM,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAC;YACjC,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACjC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACpD;IACF,CAAC;IACD,YAAY,CAAC,SAAe;QAC3B,IAAG,SAAS,CAAC,WAAW,EAAC;YACxB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC1C;aACG;YACH,IAAI,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACtD,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACrC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/vdom.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAA1B;QAMC,iBAAY,GAAG,KAAK,CAAC;IAoCtB,CAAC;IAnCA,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAA;IACzB,CAAC;IACD,IAAI,WAAW,CAAC,KAAc;QAC7B,IAAG,KAAK,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5F,IAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,QAAQ;QACP,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC,SAAS,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,SAAe;QAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,OAAM,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAC;YACjC,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACjC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACpD;IACF,CAAC;IACD,YAAY,CAAC,SAAe;QAC3B,IAAG,SAAS,CAAC,WAAW,EAAC;YACxB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC1C;aACG;YACH,IAAI,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACtD,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACrC;IACF,CAAC;CACD"}
@@ -0,0 +1,20 @@
1
+ import { IDotComponent, IDotWindowWrapper } from "dothtml-interfaces";
2
+ import { ContainerVdom } from "./vdom-nodes/container-vdom";
3
+ export default class WindowWrapper implements IDotWindowWrapper {
4
+ window: Window;
5
+ document: Document;
6
+ title: string;
7
+ root: IDotComponent;
8
+ _vdom: ContainerVdom;
9
+ width: number;
10
+ height: number;
11
+ isOpen: boolean;
12
+ constructor(options: {
13
+ content: IDotComponent;
14
+ width?: number;
15
+ height?: number;
16
+ title?: string;
17
+ });
18
+ open(): void;
19
+ close(): void;
20
+ }
@@ -0,0 +1,39 @@
1
+ import dot from "./dot";
2
+ let documentId = 1;
3
+ export default class WindowWrapper {
4
+ constructor(options) {
5
+ this.isOpen = false;
6
+ this.root = options.content;
7
+ this.width = options.width || options.height || 600;
8
+ this.height = options.height || options.width || 400;
9
+ this.title = options.title || "Window";
10
+ }
11
+ open() {
12
+ if (this.isOpen) {
13
+ console.warn("Window is already open.");
14
+ return;
15
+ }
16
+ this.window = window.open("", this.title, `width=${this.width},height=${this.height}`);
17
+ this.document = this.window.document;
18
+ this.document["_dotId"] = `${documentId++}`;
19
+ let tempElement = document.createElement("div");
20
+ tempElement.textContent = this.title;
21
+ let encodedTitle = tempElement.innerHTML;
22
+ this.document.write(`<!DOCTYPE html><html><head><title>${encodedTitle}</title></head><body></body></html>`);
23
+ this._vdom = dot(this.document.body, this.window).mount(this.root);
24
+ if (this.window) {
25
+ this.isOpen = true;
26
+ }
27
+ }
28
+ close() {
29
+ if (this.window) {
30
+ this._vdom._unrender();
31
+ this._vdom = null;
32
+ this.window.close();
33
+ this.window = null;
34
+ this.document = null;
35
+ this.isOpen = false;
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=window-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-wrapper.js","sourceRoot":"","sources":["../src/window-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,MAAM,CAAC,OAAO,OAAO,aAAa;IAUjC,YAAY,OAAkF;QAF9F,WAAM,GAAG,KAAK,CAAC;QAGd,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IAExC,CAAC;IAED,IAAI;QACH,IAAG,IAAI,CAAC,MAAM,EAAC;YACd,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO;SACP;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,CAAC;QAE5C,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,IAAI,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,qCAAqC,YAAY,qCAAqC,CAAC,CAAC;QAI5G,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC;QAE/F,IAAG,IAAI,CAAC,MAAM,EAAC;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACnB;IACF,CAAC;IAED,KAAK;QACJ,IAAG,IAAI,CAAC,MAAM,EAAC;YACd,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACpB;IACF,CAAC;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dothtml",
3
- "version": "6.0.0-beta.4",
3
+ "version": "6.0.0-beta.40",
4
4
  "description": "DOThtml is a client-side web building framework written in TypeScript.",
5
5
  "main": "./build_module/index.js",
6
6
  "exports": "./build_module/index.js",
@@ -11,7 +11,8 @@
11
11
  "scripts": {
12
12
  "test": "npm run build & jest",
13
13
  "build": "tsc --declaration",
14
- "buildumd": "webpack"
14
+ "buildumd": "webpack",
15
+ "publish-beta": "npm run build & npm publish --tag beta"
15
16
  },
16
17
  "repository": {
17
18
  "type": "git",
@@ -52,6 +53,6 @@
52
53
  "webpack-cli": "^5.1.4"
53
54
  },
54
55
  "dependencies": {
55
- "dothtml-interfaces": "^0.1.33"
56
+ "dothtml-interfaces": "^0.4.4"
56
57
  }
57
58
  }
package/readme.md CHANGED
@@ -23,4 +23,4 @@ The Style builder is powerful and useful, but still not fully developed. Conside
23
23
  - A lot of CSS properties don't enforce proper typing and will allow any string. This is a WIP and will naturally get better over time.
24
24
  - CSS @ rules like @keyframes, @media, @font-face, etc are currently not supported because they are currently not configurable in JavaScript. A workaround that generates dynamic CSS is planned.
25
25
 
26
- - Support for header elements (including stylesheets) is planned.
26
+ - Support for header elements (including stylesheets) is planned.
@@ -1 +0,0 @@
1
- //# sourceMappingURL=style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/decoration/style.ts"],"names":[],"mappings":""}