dothtml 6.0.0-beta.44 → 6.0.0-beta.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/build_module/css/css-props.js +38 -1
  2. package/build_module/css/css-props.js.map +1 -1
  3. package/build_module/css/format-css-type.d.ts +4 -3
  4. package/build_module/css/format-css-type.js +7 -0
  5. package/build_module/css/format-css-type.js.map +1 -1
  6. package/build_module/decoration/component.d.ts +4 -14
  7. package/build_module/decoration/component.js +29 -29
  8. package/build_module/decoration/component.js.map +1 -1
  9. package/build_module/dot.js +130 -68
  10. package/build_module/dot.js.map +1 -1
  11. package/build_module/events/event-manager.d.ts +14 -0
  12. package/build_module/events/event-manager.js +98 -0
  13. package/build_module/events/event-manager.js.map +1 -0
  14. package/build_module/events/synthetic-event.d.ts +17 -0
  15. package/build_module/events/synthetic-event.js +33 -0
  16. package/build_module/events/synthetic-event.js.map +1 -0
  17. package/build_module/helpers/render-stylesheet.js +18 -9
  18. package/build_module/helpers/render-stylesheet.js.map +1 -1
  19. package/build_module/index.d.ts +3 -1
  20. package/build_module/index.js +14 -1
  21. package/build_module/index.js.map +1 -1
  22. package/build_module/reactivity/binding.d.ts +3 -1
  23. package/build_module/reactivity/binding.js +8 -2
  24. package/build_module/reactivity/binding.js.map +1 -1
  25. package/build_module/reactivity/computed.d.ts +18 -0
  26. package/build_module/reactivity/computed.js +106 -0
  27. package/build_module/reactivity/computed.js.map +1 -0
  28. package/build_module/reactivity/priority.d.ts +6 -0
  29. package/build_module/reactivity/priority.js +8 -0
  30. package/build_module/reactivity/priority.js.map +1 -0
  31. package/build_module/reactivity/ref-collection.d.ts +8 -0
  32. package/build_module/reactivity/ref-collection.js +32 -0
  33. package/build_module/reactivity/ref-collection.js.map +1 -0
  34. package/build_module/reactivity/ref.d.ts +5 -3
  35. package/build_module/reactivity/ref.js +31 -2
  36. package/build_module/reactivity/ref.js.map +1 -1
  37. package/build_module/reactivity/scheduler.d.ts +22 -0
  38. package/build_module/reactivity/scheduler.js +124 -0
  39. package/build_module/reactivity/scheduler.js.map +1 -0
  40. package/build_module/reactivity/store.d.ts +14 -0
  41. package/build_module/reactivity/store.js +91 -0
  42. package/build_module/reactivity/store.js.map +1 -0
  43. package/build_module/reactivity/subscription.d.ts +2 -1
  44. package/build_module/reactivity/subscription.js +4 -5
  45. package/build_module/reactivity/subscription.js.map +1 -1
  46. package/build_module/reactivity/watcher.d.ts +6 -3
  47. package/build_module/reactivity/watcher.js +31 -10
  48. package/build_module/reactivity/watcher.js.map +1 -1
  49. package/build_module/routing/helpers.d.ts +2 -0
  50. package/build_module/routing/helpers.js +21 -0
  51. package/build_module/routing/helpers.js.map +1 -0
  52. package/build_module/routing/index.d.ts +5 -0
  53. package/build_module/routing/index.js +6 -0
  54. package/build_module/routing/index.js.map +1 -0
  55. package/build_module/routing/link.d.ts +2 -0
  56. package/build_module/routing/link.js +45 -0
  57. package/build_module/routing/link.js.map +1 -0
  58. package/build_module/routing/router.d.ts +23 -0
  59. package/build_module/routing/router.js +209 -0
  60. package/build_module/routing/router.js.map +1 -0
  61. package/build_module/routing/scroll-manager.d.ts +1 -0
  62. package/build_module/routing/scroll-manager.js +33 -0
  63. package/build_module/routing/scroll-manager.js.map +1 -0
  64. package/build_module/routing/state.d.ts +7 -0
  65. package/build_module/routing/state.js +45 -0
  66. package/build_module/routing/state.js.map +1 -0
  67. package/build_module/v-meta-nodes/style-v-node.d.ts +17 -7
  68. package/build_module/v-meta-nodes/style-v-node.js +181 -85
  69. package/build_module/v-meta-nodes/style-v-node.js.map +1 -1
  70. package/build_module/v-style-nodes/base-v-style.d.ts +10 -11
  71. package/build_module/v-style-nodes/base-v-style.js +23 -95
  72. package/build_module/v-style-nodes/base-v-style.js.map +1 -1
  73. package/build_module/v-style-nodes/css-function-builder-v-style.d.ts +0 -3
  74. package/build_module/v-style-nodes/css-function-builder-v-style.js +10 -5
  75. package/build_module/v-style-nodes/css-function-builder-v-style.js.map +1 -1
  76. package/build_module/v-style-nodes/style-sheet-builder.d.ts +9 -0
  77. package/build_module/v-style-nodes/style-sheet-builder.js +51 -0
  78. package/build_module/v-style-nodes/style-sheet-builder.js.map +1 -0
  79. package/build_module/v-style-nodes/transform-v-style.js.map +1 -1
  80. package/build_module/vdom-nodes/collection-vdom.d.ts +3 -1
  81. package/build_module/vdom-nodes/collection-vdom.js +114 -97
  82. package/build_module/vdom-nodes/collection-vdom.js.map +1 -1
  83. package/build_module/vdom-nodes/component-context.d.ts +5 -0
  84. package/build_module/vdom-nodes/component-context.js +5 -0
  85. package/build_module/vdom-nodes/component-context.js.map +1 -0
  86. package/build_module/vdom-nodes/component-vdom.d.ts +22 -0
  87. package/build_module/vdom-nodes/component-vdom.js +250 -12
  88. package/build_module/vdom-nodes/component-vdom.js.map +1 -1
  89. package/build_module/vdom-nodes/conditional-vdom.d.ts +1 -0
  90. package/build_module/vdom-nodes/conditional-vdom.js +14 -0
  91. package/build_module/vdom-nodes/conditional-vdom.js.map +1 -1
  92. package/build_module/vdom-nodes/container-vdom.d.ts +6 -2
  93. package/build_module/vdom-nodes/container-vdom.js +54 -1
  94. package/build_module/vdom-nodes/container-vdom.js.map +1 -1
  95. package/build_module/vdom-nodes/element-vdom.d.ts +2 -1
  96. package/build_module/vdom-nodes/element-vdom.js +72 -18
  97. package/build_module/vdom-nodes/element-vdom.js.map +1 -1
  98. package/build_module/vdom-nodes/html-vdom.d.ts +1 -0
  99. package/build_module/vdom-nodes/html-vdom.js +12 -0
  100. package/build_module/vdom-nodes/html-vdom.js.map +1 -1
  101. package/build_module/vdom-nodes/text-vdom.d.ts +1 -0
  102. package/build_module/vdom-nodes/text-vdom.js +3 -0
  103. package/build_module/vdom-nodes/text-vdom.js.map +1 -1
  104. package/build_module/vdom-nodes/vdom.d.ts +2 -0
  105. package/build_module/vdom-nodes/vdom.js +17 -0
  106. package/build_module/vdom-nodes/vdom.js.map +1 -1
  107. package/package.json +58 -57
  108. package/readme.md +32 -26
  109. package/build_module/css/css.d.ts +0 -0
  110. package/build_module/css/css.js +0 -1
  111. package/build_module/css/css.js.map +0 -1
  112. package/build_module/decoration/use-styles.d.ts +0 -14
  113. package/build_module/decoration/use-styles.js +0 -19
  114. package/build_module/decoration/use-styles.js.map +0 -1
  115. package/build_module/helpers/render-css.d.ts +0 -2
  116. package/build_module/helpers/render-css.js +0 -20
  117. package/build_module/helpers/render-css.js.map +0 -1
  118. package/build_module/helpers.d.ts +0 -3
  119. package/build_module/helpers.js +0 -50
  120. package/build_module/helpers.js.map +0 -1
  121. package/build_module/reactive.d.ts +0 -46
  122. package/build_module/reactive.js +0 -150
  123. package/build_module/reactive.js.map +0 -1
  124. package/build_module/reactivity/bound-reactive.d.ts +0 -13
  125. package/build_module/reactivity/bound-reactive.js +0 -20
  126. package/build_module/reactivity/bound-reactive.js.map +0 -1
  127. package/build_module/reactivity/reactive.d.ts +0 -22
  128. package/build_module/reactivity/reactive.js +0 -54
  129. package/build_module/reactivity/reactive.js.map +0 -1
@@ -6,6 +6,8 @@ import { ContainerVdom } from "./container-vdom";
6
6
  import { Vdom } from "./vdom";
7
7
  import Binding from "../reactivity/binding";
8
8
  import ReactiveAttr from "../reactivity/reactive-attr";
9
+ import BaseVStyle from "../v-style-nodes/base-v-style";
10
+ import { EventManager } from "../events/event-manager";
9
11
  export class AttributeItem {
10
12
  }
11
13
  let manualInputAllowed = true;
@@ -28,31 +30,37 @@ export default class ElementVdom extends Vdom {
28
30
  this.element = node.ownerDocument.createElement(this.tag);
29
31
  this.element[DOT_VDOM_PROP_NAME] = this;
30
32
  if (this.ref) {
31
- this.ref["_element"] = this.element;
33
+ if (typeof this.ref === "function") {
34
+ this.ref(this.element);
35
+ }
36
+ else {
37
+ this.ref.value = this.element;
38
+ }
39
+ }
40
+ node.appendChild(this.element);
41
+ if (this.children) {
42
+ this.children._render(this.element);
32
43
  }
33
44
  for (let a in this.attributes) {
34
45
  this.renderAttr(a, this.attributes[a], this.element);
35
46
  }
36
- node.appendChild(this.element);
37
47
  for (let i = 0; i < this.events.length; i++) {
38
48
  let e = this.events[i];
39
- this.renderEvent(e.name, e.callback);
40
- }
41
- if (this.children) {
42
- this.children._render(this.element);
49
+ this.renderEvent(e.name, e.callback, e.modifiers);
43
50
  }
44
51
  }
45
52
  _unrender() {
46
- if (this.ref) {
47
- this.ref["_element"] = null;
48
- }
49
53
  this.children._unrender();
50
54
  if (this.inputListener) {
51
55
  this.element.removeEventListener("input", this.inputListener);
52
56
  this.inputListener = null;
53
57
  }
58
+ const eventManager = EventManager.getForDocument(this.element.ownerDocument);
59
+ for (let i = 0; i < this.events.length; i++) {
60
+ let e = this.events[i];
61
+ eventManager.removeListener(this.element, e.name.toLowerCase(), e.callback);
62
+ }
54
63
  this.element.parentNode?.removeChild(this.element);
55
- this.element = null;
56
64
  for (let i = 0; i < this.childBuilders.length; i++) {
57
65
  this.childBuilders[i]._unrender();
58
66
  }
@@ -70,6 +78,18 @@ export default class ElementVdom extends Vdom {
70
78
  item.observable._unsubscribe(item.id);
71
79
  }
72
80
  this.attributeObserverIds.length = 0;
81
+ if (this.ref) {
82
+ if (typeof this.ref === "function") {
83
+ this.ref(null);
84
+ }
85
+ else {
86
+ this.ref.value = null;
87
+ }
88
+ }
89
+ this.element = null;
90
+ }
91
+ _getNodes() {
92
+ return this.element ? [this.element] : [];
73
93
  }
74
94
  toString() {
75
95
  if (this.element) {
@@ -81,7 +101,20 @@ export default class ElementVdom extends Vdom {
81
101
  }
82
102
  setAttr(attr, value) {
83
103
  attr = (attr ?? "").toLowerCase();
84
- if (value && typeof value === "object" && !(value instanceof Array || value instanceof Binding || value instanceof Watcher)) {
104
+ const oldVal = this.attributes[attr];
105
+ if (oldVal instanceof StyleVNode) {
106
+ oldVal.unrender();
107
+ const idx = this.styleVNodes.indexOf(oldVal);
108
+ if (idx !== -1)
109
+ this.styleVNodes.splice(idx, 1);
110
+ }
111
+ if (oldVal instanceof AttributeVNode) {
112
+ oldVal.unrender();
113
+ const idx = this.attrVNodes.indexOf(oldVal);
114
+ if (idx !== -1)
115
+ this.attrVNodes.splice(idx, 1);
116
+ }
117
+ if (value && typeof value === "object" && !(value instanceof Array || value instanceof Binding || value instanceof Watcher || value instanceof BaseVStyle)) {
85
118
  switch (attr) {
86
119
  case "style": {
87
120
  value = new StyleVNode(value);
@@ -96,6 +129,9 @@ export default class ElementVdom extends Vdom {
96
129
  }
97
130
  }
98
131
  }
132
+ if (value instanceof BaseVStyle && attr === "style") {
133
+ value = new StyleVNode(value);
134
+ }
99
135
  this.attributes[attr] = value;
100
136
  if (this.element) {
101
137
  this.renderAttr(attr, value, this.element);
@@ -105,13 +141,29 @@ export default class ElementVdom extends Vdom {
105
141
  if (attr == "ref") {
106
142
  this.ref = value;
107
143
  if (this.element) {
108
- this.ref["_element"] = this.element;
144
+ if (typeof this.ref === "function") {
145
+ this.ref(this.element);
146
+ }
147
+ else {
148
+ this.ref.value = this.element;
149
+ }
109
150
  }
110
151
  }
111
152
  else if (typeof value === "string" || typeof value === "number") {
112
- node.setAttribute(attr, `${value}`);
153
+ if (attr == "value" && (this.tag.toLowerCase() == "input" || this.tag.toLowerCase() == "textarea" || this.tag.toLowerCase() == "select")) {
154
+ node.value = value ?? "";
155
+ }
156
+ else {
157
+ node.setAttribute(attr, `${value}`);
158
+ }
113
159
  }
114
160
  else if (typeof value === "boolean" || value == null || value == undefined) {
161
+ if (attr == "checked" && this.tag.toLowerCase() == "input") {
162
+ node.checked = !!value;
163
+ }
164
+ else if (attr == "selected" && this.tag.toLowerCase() == "option") {
165
+ node.selected = !!value;
166
+ }
115
167
  if (value)
116
168
  node.setAttribute(attr, `${value}`);
117
169
  else
@@ -145,20 +197,22 @@ export default class ElementVdom extends Vdom {
145
197
  }
146
198
  else if (value instanceof AttributeVNode) {
147
199
  value.render(node);
200
+ this.attrVNodes.push(value);
148
201
  }
149
202
  else if (value instanceof StyleVNode) {
150
203
  value.render(node);
204
+ this.styleVNodes.push(value);
151
205
  }
152
206
  else {
153
207
  }
154
208
  }
155
- addEventListener(event, callback) {
156
- this.events.push({ name: event, callback: callback });
209
+ addEventListener(event, callback, modifiers = []) {
210
+ this.events.push({ name: event, callback: callback, modifiers: modifiers });
157
211
  if (this.element)
158
- this.renderEvent(event, callback);
212
+ this.renderEvent(event, callback, modifiers);
159
213
  }
160
- renderEvent(e, callback) {
161
- this.element.addEventListener(e.toLowerCase(), callback);
214
+ renderEvent(e, callback, modifiers = []) {
215
+ EventManager.getForDocument(this.element.ownerDocument).addListener(this.element, e.toLowerCase(), callback, modifiers);
162
216
  }
163
217
  }
164
218
  //# sourceMappingURL=element-vdom.js.map
@@ -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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"}
@@ -9,5 +9,6 @@ export declare class HtmlVdom extends Vdom {
9
9
  updateHtml(html: any): void;
10
10
  _render(target: HTMLElement): void;
11
11
  _unrender(): void;
12
+ _getNodes(): Node[];
12
13
  toString(): any;
13
14
  }
@@ -46,6 +46,18 @@ export class HtmlVdom extends Vdom {
46
46
  this.observerId = 0;
47
47
  }
48
48
  }
49
+ _getNodes() {
50
+ if (!this.beforeNode)
51
+ return [];
52
+ let nodes = [this.beforeNode];
53
+ let curr = this.beforeNode.nextSibling;
54
+ while (curr && curr !== this.afterNode) {
55
+ nodes.push(curr);
56
+ curr = curr.nextSibling;
57
+ }
58
+ nodes.push(this.afterNode);
59
+ return nodes;
60
+ }
49
61
  toString() {
50
62
  return this.html instanceof Binding ? this.html._get() : this.html;
51
63
  }
@@ -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,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
+ {"version":3,"file":"html-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/html-vdom.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,6 @@ export declare class TextVdom extends Vdom {
7
7
  constructor(text: string | boolean | number | Binding);
8
8
  _render(node: HTMLElement): void;
9
9
  _unrender(): void;
10
+ _getNodes(): Node[];
10
11
  toString(): string;
11
12
  }
@@ -27,6 +27,9 @@ export class TextVdom extends Vdom {
27
27
  this.observerId = 0;
28
28
  }
29
29
  }
30
+ _getNodes() {
31
+ return this.textNode ? [this.textNode] : [];
32
+ }
30
33
  toString() {
31
34
  let temp = document.createTextNode((this.text instanceof Binding ? this.text._get() : this.text) ?? "");
32
35
  let div = document.createElement("div");
@@ -1 +1 @@
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
+ {"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,SAAS;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,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,8 @@
1
1
  export declare abstract class Vdom {
2
2
  abstract _render(target: HTMLElement): any;
3
3
  abstract _unrender(): any;
4
+ abstract _getNodes(): Node[];
5
+ _moveBefore(reference: Node, parent?: Node): void;
4
6
  __isRendered: boolean;
5
7
  get _isRendered(): boolean;
6
8
  set _isRendered(value: boolean);
@@ -2,6 +2,23 @@ export class Vdom {
2
2
  constructor() {
3
3
  this.__isRendered = false;
4
4
  }
5
+ _moveBefore(reference, parent) {
6
+ let nodes = this._getNodes();
7
+ if (nodes.length === 0)
8
+ return;
9
+ let p = reference?.parentElement || parent;
10
+ if (!p)
11
+ throw new Error("Internal Error: Cannot move nodes without a parent.");
12
+ for (let i = 0; i < nodes.length; i++) {
13
+ if (nodes[i] === reference)
14
+ return;
15
+ }
16
+ let fragment = (reference?.ownerDocument || p.ownerDocument || document).createDocumentFragment();
17
+ for (let i = 0; i < nodes.length; i++) {
18
+ fragment.appendChild(nodes[i]);
19
+ }
20
+ p.insertBefore(fragment, reference);
21
+ }
5
22
  get _isRendered() {
6
23
  return this.__isRendered;
7
24
  }
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/vdom.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAA1B;QAyBC,iBAAY,GAAG,KAAK,CAAC;IAoCtB,CAAC;IArDA,WAAW,CAAC,SAAe,EAAE,MAAa;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,GAAG,SAAS,EAAE,aAAa,IAAI,MAAM,CAAC;QAC3C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAE/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO;SACnC;QAED,IAAI,QAAQ,GAAG,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC,sBAAsB,EAAE,CAAC;QAClG,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACpC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAGD,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"}
package/package.json CHANGED
@@ -1,57 +1,58 @@
1
- {
2
- "name": "dothtml",
3
- "version": "6.0.0-beta.44",
4
- "description": "DOThtml is a client-side web building framework written in TypeScript.",
5
- "main": "./build_module/index.js",
6
- "exports": "./build_module/index.js",
7
- "type": "module",
8
- "types": "./build_module/index.d.ts",
9
- "files": [
10
- "build_module/**/*"
11
- ],
12
- "scripts": {
13
- "test": "npm run build & jest",
14
- "build": "tsc --declaration",
15
- "buildumd": "webpack",
16
- "publish-beta": "npm run build & npm publish --tag beta"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/JSideris/DOThtml.git"
21
- },
22
- "keywords": [
23
- "html",
24
- "page",
25
- "dynamic",
26
- "javascript",
27
- "typescript",
28
- "web",
29
- "builder",
30
- "generation",
31
- "component",
32
- "framework",
33
- "spa"
34
- ],
35
- "author": "Joshua Sideris",
36
- "license": "ISC",
37
- "bugs": {
38
- "url": "https://github.com/JSideris/DOThtml/issues"
39
- },
40
- "homepage": "https://dothtml.org/",
41
- "devDependencies": {
42
- "@testing-library/jest-dom": "^5.13.0",
43
- "@types/jest": "^29.5.11",
44
- "@types/node": "^18.14.2",
45
- "copyfiles": "^2.4.1",
46
- "jest": "^29.7.0",
47
- "jest-environment-jsdom": "^29.7.0",
48
- "ts-jest": "^29.1.4",
49
- "ts-node": "^10.9.1",
50
- "typescript": "^5.2.2",
51
- "webpack": "^5.89.0",
52
- "webpack-cli": "^5.1.4"
53
- },
54
- "dependencies": {
55
- "dothtml-interfaces": "^0.4.7"
56
- }
57
- }
1
+ {
2
+ "name": "dothtml",
3
+ "version": "6.0.0-beta.46",
4
+ "description": "DOThtml is a client-side web building framework written in TypeScript.",
5
+ "main": "./build_module/index.js",
6
+ "exports": "./build_module/index.js",
7
+ "types": "./build_module/index.d.ts",
8
+ "files": [
9
+ "build_module/**/*"
10
+ ],
11
+ "scripts": {
12
+ "test": "npm run build & jest",
13
+ "build": "tsc --declaration",
14
+ "buildumd": "webpack",
15
+ "publish-beta": "npm run build & npm publish --tag beta"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/JSideris/DOThtml.git"
20
+ },
21
+ "keywords": [
22
+ "html",
23
+ "page",
24
+ "dynamic",
25
+ "javascript",
26
+ "typescript",
27
+ "web",
28
+ "builder",
29
+ "generation",
30
+ "component",
31
+ "framework",
32
+ "spa"
33
+ ],
34
+ "author": "Joshua Sideris",
35
+ "license": "ISC",
36
+ "bugs": {
37
+ "url": "https://github.com/JSideris/DOThtml/issues"
38
+ },
39
+ "homepage": "https://dothtml.org/",
40
+ "devDependencies": {
41
+ "@babel/preset-env": "^7.14.5",
42
+ "@testing-library/jest-dom": "^5.13.0",
43
+ "@types/jest": "^29.5.11",
44
+ "@types/node": "^18.14.2",
45
+ "copyfiles": "^2.4.1",
46
+ "esm": "^3.2.25",
47
+ "jest": "^29.7.0",
48
+ "jest-environment-jsdom": "^29.7.0",
49
+ "ts-jest": "^29.0.5",
50
+ "ts-node": "^10.9.1",
51
+ "typescript": "^5.0.2",
52
+ "webpack": "^5.89.0",
53
+ "webpack-cli": "^5.1.4"
54
+ },
55
+ "dependencies": {
56
+ "dothtml-interfaces": "^0.4.6"
57
+ }
58
+ }
package/readme.md CHANGED
@@ -1,26 +1,32 @@
1
- [https://dothtml.org/](https://dothtml.org/) for documentation (currently somewhat out of date since DOTcss was merged in and library was ported to TypeScript and put on NPM).
2
-
3
- # Project Status
4
-
5
- This project is a work in progress with several phases:
6
-
7
- 1. Basic web building framework in JavaScript.
8
- 2. Provide some JQuery-like syntax and functionality. ✅
9
- 3. Add routing and components. ✅
10
- 4. Bridge the gap between DOThtml and modern frameworks, like Vue. ✅
11
- 5. Lots of testing, tweaking, documentation. 🔲
12
- 6. Take over the world. 🔲
13
-
14
- Special thanks to [dosy](https://www.npmjs.com/~dosy) for giving me the module on NPM. Please check out ViewFinderJs - [a remote isolated browser with co-browsing](https://github.com/i5ik/ViewFinderJS).
15
-
16
- # Current Known Limitations
17
-
18
- ## CSS
19
- The Style builder is powerful and useful, but still not fully developed. Consider importing stylesheets separately if affected by any of the below limitations.
20
- - Pseudo selectors like :hover aren't supported by the style builder since there's no straightforward way to set them in JavaScript in a neat way that supports component isolation.
21
- - Animations kind of broke when merging DOTcss in, and don't support the increased complexity which is now allowed.
22
- - All length properties take a single value. Two and four argument lengths (for things like margin) are not yet supported.
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
- - 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
-
26
- - Support for header elements (including stylesheets) is planned.
1
+ [https://dothtml.org/](https://dothtml.org/) for documentation.
2
+
3
+ ## The DOThtml Paradigm
4
+
5
+ Most modern web frameworks are "all or nothing." DOThtml is different. It is a **UI Engine** designed to provide a component-based, reactive workflow to projects that have their own primary architecture.
6
+
7
+ Whether you are building a high-performance game, a browser extension, or modernizing a legacy enterprise app, DOThtml stays out of your way while giving you the power of modern web components. Of course, it also works perfectly as a full-scale framework for building entire web applications from scratch.
8
+
9
+ # Project Status
10
+
11
+ This project is a work in progress with several phases:
12
+
13
+ 1. Basic web building framework in JavaScript. ✅
14
+ 2. Provide some JQuery-like syntax and functionality.
15
+ 3. Add routing and components. ✅
16
+ 4. Bridge the gap between DOThtml and modern frameworks, like Vue. ✅
17
+ 5. Lots of testing, tweaking, documentation. 🔲
18
+ 6. Take over the world. 🔲
19
+
20
+ Special thanks to [dosy](https://www.npmjs.com/~dosy) for giving me the module on NPM. Please check out ViewFinderJs - [a remote isolated browser with co-browsing](https://github.com/i5ik/ViewFinderJS).
21
+
22
+ # Current Known Limitations
23
+
24
+ ## CSS
25
+ The Style builder is powerful and useful, but still not fully developed. Consider importing stylesheets separately if affected by any of the below limitations.
26
+ - Pseudo selectors like :hover aren't supported by the style builder since there's no straightforward way to set them in JavaScript in a neat way that supports component isolation.
27
+ - Animations kind of broke when merging DOTcss in, and don't support the increased complexity which is now allowed.
28
+ - All length properties take a single value. Two and four argument lengths (for things like margin) are not yet supported.
29
+ - 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.
30
+ - 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.
31
+
32
+ - Support for header elements (including stylesheets) is planned.
File without changes
@@ -1 +0,0 @@
1
- //# sourceMappingURL=css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/css/css.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- import { FrameworkItems, IComponent } from "dothtml-interfaces";
2
- export declare function useStyles(styleCallback: any, document?: Document): (Base: new (...args: Array<any>) => IComponent) => {
3
- new (...args: any[]): {
4
- _: FrameworkItems;
5
- build(): import("dothtml-interfaces").IDotDocument;
6
- built?(): void;
7
- mounting?(): void;
8
- mounted?(): void;
9
- unmounting?(): void;
10
- unmounted?(): void;
11
- deleting?(): void;
12
- deleted?(): void;
13
- };
14
- };
@@ -1,19 +0,0 @@
1
- import renderStylesheet from "../helpers/render-stylesheet";
2
- export function useStyles(styleCallback, document = window.document) {
3
- let sharedStyles = renderStylesheet(styleCallback, document);
4
- return function (Base) {
5
- return class extends Base {
6
- constructor(...args) {
7
- super(...args);
8
- if (!this._) {
9
- this._ = { _meta: {} };
10
- }
11
- if (!this._._meta.sharedStyles) {
12
- this._._meta.sharedStyles = [];
13
- }
14
- this._._meta.sharedStyles.push(sharedStyles);
15
- }
16
- };
17
- };
18
- }
19
- //# sourceMappingURL=use-styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-styles.js","sourceRoot":"","sources":["../../src/decoration/use-styles.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAK5D,MAAM,UAAU,SAAS,CAAC,aAAa,EAAE,WAAqB,MAAM,CAAC,QAAQ;IAE5E,IAAI,YAAY,GAAG,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE7D,OAAO,UAAS,IAAyC;QAGxD,OAAO,KAAM,SAAQ,IAAI;YAIxB,YAAY,GAAG,IAAW;gBACzB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBACf,IAAG,CAAC,IAAI,CAAC,CAAC,EAAC;oBACT,IAAI,CAAC,CAAS,GAAG,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;iBAC9B;gBACD,IAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAC;oBAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAoB,GAAG,EAAE,CAAC;iBACxC;gBACD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAC;YACrD,CAAC;SACD,CAAA;IACF,CAAC,CAAA;AACF,CAAC"}
@@ -1,2 +0,0 @@
1
- import { IDotCss } from "dothtml-interfaces";
2
- export default function renderCss(styleCallback: string | ((css: any) => (string | IDotCss)), document: Document): CSSStyleSheet;
@@ -1,20 +0,0 @@
1
- export default function renderCss(styleCallback, document) {
2
- let DocumentCSSStyleSheet = document.defaultView.CSSStyleSheet;
3
- let sharedStyles = new DocumentCSSStyleSheet();
4
- if (typeof styleCallback == "string") {
5
- sharedStyles.replaceSync(styleCallback);
6
- }
7
- else {
8
- let finalStylesheet = "";
9
- let css = null;
10
- let styles = styleCallback(css);
11
- if (typeof styles == "string") {
12
- finalStylesheet = styles;
13
- }
14
- else {
15
- }
16
- sharedStyles.replaceSync(finalStylesheet);
17
- }
18
- return sharedStyles;
19
- }
20
- //# sourceMappingURL=render-css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-css.js","sourceRoot":"","sources":["../../src/helpers/render-css.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,aAAoD,EAAE,QAAkB;IAEzG,IAAI,qBAAqB,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;IAE/D,IAAI,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAE/C,IAAI,OAAO,aAAa,IAAI,QAAQ,EAAE;QACrC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KACxC;SACI;QACJ,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,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;QAED,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;KAC1C;IACD,OAAO,YAAY,CAAC;AACrB,CAAC"}
@@ -1,3 +0,0 @@
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 var floatRegex: RegExp;
@@ -1,50 +0,0 @@
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 var floatRegex = new RegExp("[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?", "g");
50
- //# sourceMappingURL=helpers.js.map