@miurajs/miura-render 0.0.0 → 0.1.1

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 (262) hide show
  1. package/dist/index.d.ts +14 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +13 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/binding-manager/binding-manager.d.ts +30 -0
  6. package/dist/src/binding-manager/binding-manager.d.ts.map +1 -0
  7. package/dist/src/binding-manager/binding-manager.js +245 -0
  8. package/dist/src/binding-manager/binding-manager.js.map +1 -0
  9. package/dist/src/binding-manager/binding-type.d.ts +24 -0
  10. package/dist/src/binding-manager/binding-type.d.ts.map +1 -0
  11. package/dist/src/binding-manager/binding-type.js +25 -0
  12. package/dist/src/binding-manager/binding-type.js.map +1 -0
  13. package/dist/src/binding-manager/bindings/async-binding.d.ts +23 -0
  14. package/dist/src/binding-manager/bindings/async-binding.d.ts.map +1 -0
  15. package/dist/src/binding-manager/bindings/async-binding.js +67 -0
  16. package/dist/src/binding-manager/bindings/async-binding.js.map +1 -0
  17. package/dist/src/binding-manager/bindings/attribute-binding.d.ts +41 -0
  18. package/dist/src/binding-manager/bindings/attribute-binding.d.ts.map +1 -0
  19. package/dist/src/binding-manager/bindings/attribute-binding.js +79 -0
  20. package/dist/src/binding-manager/bindings/attribute-binding.js.map +1 -0
  21. package/dist/src/binding-manager/bindings/bind-binding.d.ts +30 -0
  22. package/dist/src/binding-manager/bindings/bind-binding.d.ts.map +1 -0
  23. package/dist/src/binding-manager/bindings/bind-binding.js +81 -0
  24. package/dist/src/binding-manager/bindings/bind-binding.js.map +1 -0
  25. package/dist/src/binding-manager/bindings/binding.d.ts +6 -0
  26. package/dist/src/binding-manager/bindings/binding.d.ts.map +1 -0
  27. package/dist/src/binding-manager/bindings/binding.js +2 -0
  28. package/dist/src/binding-manager/bindings/binding.js.map +1 -0
  29. package/dist/src/binding-manager/bindings/boolean-binding.d.ts +18 -0
  30. package/dist/src/binding-manager/bindings/boolean-binding.d.ts.map +1 -0
  31. package/dist/src/binding-manager/bindings/boolean-binding.js +65 -0
  32. package/dist/src/binding-manager/bindings/boolean-binding.js.map +1 -0
  33. package/dist/src/binding-manager/bindings/class-binding.d.ts +10 -0
  34. package/dist/src/binding-manager/bindings/class-binding.d.ts.map +1 -0
  35. package/dist/src/binding-manager/bindings/class-binding.js +68 -0
  36. package/dist/src/binding-manager/bindings/class-binding.js.map +1 -0
  37. package/dist/src/binding-manager/bindings/directive-binding.d.ts +15 -0
  38. package/dist/src/binding-manager/bindings/directive-binding.d.ts.map +1 -0
  39. package/dist/src/binding-manager/bindings/directive-binding.js +70 -0
  40. package/dist/src/binding-manager/bindings/directive-binding.js.map +1 -0
  41. package/dist/src/binding-manager/bindings/event-binding.d.ts +14 -0
  42. package/dist/src/binding-manager/bindings/event-binding.d.ts.map +1 -0
  43. package/dist/src/binding-manager/bindings/event-binding.js +73 -0
  44. package/dist/src/binding-manager/bindings/event-binding.js.map +1 -0
  45. package/dist/src/binding-manager/bindings/node-binding.d.ts +36 -0
  46. package/dist/src/binding-manager/bindings/node-binding.d.ts.map +1 -0
  47. package/dist/src/binding-manager/bindings/node-binding.js +235 -0
  48. package/dist/src/binding-manager/bindings/node-binding.js.map +1 -0
  49. package/dist/src/binding-manager/bindings/object-class-binding.d.ts +16 -0
  50. package/dist/src/binding-manager/bindings/object-class-binding.d.ts.map +1 -0
  51. package/dist/src/binding-manager/bindings/object-class-binding.js +42 -0
  52. package/dist/src/binding-manager/bindings/object-class-binding.js.map +1 -0
  53. package/dist/src/binding-manager/bindings/object-style-binding.d.ts +16 -0
  54. package/dist/src/binding-manager/bindings/object-style-binding.d.ts.map +1 -0
  55. package/dist/src/binding-manager/bindings/object-style-binding.js +38 -0
  56. package/dist/src/binding-manager/bindings/object-style-binding.js.map +1 -0
  57. package/dist/src/binding-manager/bindings/property-binding.d.ts +12 -0
  58. package/dist/src/binding-manager/bindings/property-binding.d.ts.map +1 -0
  59. package/dist/src/binding-manager/bindings/property-binding.js +44 -0
  60. package/dist/src/binding-manager/bindings/property-binding.js.map +1 -0
  61. package/dist/src/binding-manager/bindings/reference-binding.d.ts +14 -0
  62. package/dist/src/binding-manager/bindings/reference-binding.d.ts.map +1 -0
  63. package/dist/src/binding-manager/bindings/reference-binding.js +44 -0
  64. package/dist/src/binding-manager/bindings/reference-binding.js.map +1 -0
  65. package/dist/src/binding-manager/bindings/spread-binding.d.ts +16 -0
  66. package/dist/src/binding-manager/bindings/spread-binding.d.ts.map +1 -0
  67. package/dist/src/binding-manager/bindings/spread-binding.js +40 -0
  68. package/dist/src/binding-manager/bindings/spread-binding.js.map +1 -0
  69. package/dist/src/binding-manager/bindings/style-binding.d.ts +10 -0
  70. package/dist/src/binding-manager/bindings/style-binding.d.ts.map +1 -0
  71. package/dist/src/binding-manager/bindings/style-binding.js +44 -0
  72. package/dist/src/binding-manager/bindings/style-binding.js.map +1 -0
  73. package/dist/src/compiler/code-factory.d.ts +45 -0
  74. package/dist/src/compiler/code-factory.d.ts.map +1 -0
  75. package/dist/src/compiler/code-factory.js +211 -0
  76. package/dist/src/compiler/code-factory.js.map +1 -0
  77. package/dist/src/compiler/compiler.d.ts +77 -0
  78. package/dist/src/compiler/compiler.d.ts.map +1 -0
  79. package/dist/src/compiler/compiler.js +77 -0
  80. package/dist/src/compiler/compiler.js.map +1 -0
  81. package/dist/src/compiler/constants.d.ts +5 -0
  82. package/dist/src/compiler/constants.d.ts.map +1 -0
  83. package/dist/src/compiler/constants.js +9 -0
  84. package/dist/src/compiler/constants.js.map +1 -0
  85. package/dist/src/css-result.d.ts +27 -0
  86. package/dist/src/css-result.d.ts.map +1 -0
  87. package/dist/src/css-result.js +56 -0
  88. package/dist/src/css-result.js.map +1 -0
  89. package/dist/src/css.d.ts +26 -0
  90. package/dist/src/css.d.ts.map +1 -0
  91. package/dist/src/css.js +62 -0
  92. package/dist/src/css.js.map +1 -0
  93. package/dist/src/directives/animate.directive.d.ts +42 -0
  94. package/dist/src/directives/animate.directive.d.ts.map +1 -0
  95. package/dist/src/directives/animate.directive.js +349 -0
  96. package/dist/src/directives/animate.directive.js.map +1 -0
  97. package/dist/src/directives/await.d.ts +68 -0
  98. package/dist/src/directives/await.d.ts.map +1 -0
  99. package/dist/src/directives/await.js +70 -0
  100. package/dist/src/directives/await.js.map +1 -0
  101. package/dist/src/directives/choose.d.ts +28 -0
  102. package/dist/src/directives/choose.d.ts.map +1 -0
  103. package/dist/src/directives/choose.js +30 -0
  104. package/dist/src/directives/choose.js.map +1 -0
  105. package/dist/src/directives/decorator-example.d.ts +8 -0
  106. package/dist/src/directives/decorator-example.d.ts.map +1 -0
  107. package/dist/src/directives/decorator-example.js +32 -0
  108. package/dist/src/directives/decorator-example.js.map +1 -0
  109. package/dist/src/directives/decorators.d.ts +3 -0
  110. package/dist/src/directives/decorators.d.ts.map +1 -0
  111. package/dist/src/directives/decorators.js +17 -0
  112. package/dist/src/directives/decorators.js.map +1 -0
  113. package/dist/src/directives/directive-manager.d.ts +26 -0
  114. package/dist/src/directives/directive-manager.d.ts.map +1 -0
  115. package/dist/src/directives/directive-manager.js +114 -0
  116. package/dist/src/directives/directive-manager.js.map +1 -0
  117. package/dist/src/directives/directive.d.ts +38 -0
  118. package/dist/src/directives/directive.d.ts.map +1 -0
  119. package/dist/src/directives/directive.js +18 -0
  120. package/dist/src/directives/directive.js.map +1 -0
  121. package/dist/src/directives/focus.directive.d.ts +16 -0
  122. package/dist/src/directives/focus.directive.d.ts.map +1 -0
  123. package/dist/src/directives/focus.directive.js +29 -0
  124. package/dist/src/directives/focus.directive.js.map +1 -0
  125. package/dist/src/directives/gesture.directive.d.ts +58 -0
  126. package/dist/src/directives/gesture.directive.d.ts.map +1 -0
  127. package/dist/src/directives/gesture.directive.js +331 -0
  128. package/dist/src/directives/gesture.directive.js.map +1 -0
  129. package/dist/src/directives/index.d.ts +34 -0
  130. package/dist/src/directives/index.d.ts.map +1 -0
  131. package/dist/src/directives/index.js +35 -0
  132. package/dist/src/directives/index.js.map +1 -0
  133. package/dist/src/directives/intersection.directive.d.ts +18 -0
  134. package/dist/src/directives/intersection.directive.d.ts.map +1 -0
  135. package/dist/src/directives/intersection.directive.js +50 -0
  136. package/dist/src/directives/intersection.directive.js.map +1 -0
  137. package/dist/src/directives/keyed-diff.d.ts +30 -0
  138. package/dist/src/directives/keyed-diff.d.ts.map +1 -0
  139. package/dist/src/directives/keyed-diff.js +185 -0
  140. package/dist/src/directives/keyed-diff.js.map +1 -0
  141. package/dist/src/directives/lazy-setup.d.ts +3 -0
  142. package/dist/src/directives/lazy-setup.d.ts.map +1 -0
  143. package/dist/src/directives/lazy-setup.js +55 -0
  144. package/dist/src/directives/lazy-setup.js.map +1 -0
  145. package/dist/src/directives/lazy.directive.d.ts +19 -0
  146. package/dist/src/directives/lazy.directive.d.ts.map +1 -0
  147. package/dist/src/directives/lazy.directive.js +73 -0
  148. package/dist/src/directives/lazy.directive.js.map +1 -0
  149. package/dist/src/directives/media.directive.d.ts +31 -0
  150. package/dist/src/directives/media.directive.d.ts.map +1 -0
  151. package/dist/src/directives/media.directive.js +105 -0
  152. package/dist/src/directives/media.directive.js.map +1 -0
  153. package/dist/src/directives/mutation.directive.d.ts +11 -0
  154. package/dist/src/directives/mutation.directive.d.ts.map +1 -0
  155. package/dist/src/directives/mutation.directive.js +56 -0
  156. package/dist/src/directives/mutation.directive.js.map +1 -0
  157. package/dist/src/directives/repeat.d.ts +50 -0
  158. package/dist/src/directives/repeat.d.ts.map +1 -0
  159. package/dist/src/directives/repeat.js +47 -0
  160. package/dist/src/directives/repeat.js.map +1 -0
  161. package/dist/src/directives/resize.directive.d.ts +14 -0
  162. package/dist/src/directives/resize.directive.d.ts.map +1 -0
  163. package/dist/src/directives/resize.directive.js +81 -0
  164. package/dist/src/directives/resize.directive.js.map +1 -0
  165. package/dist/src/directives/setup.d.ts +9 -0
  166. package/dist/src/directives/setup.d.ts.map +1 -0
  167. package/dist/src/directives/setup.js +9 -0
  168. package/dist/src/directives/setup.js.map +1 -0
  169. package/dist/src/directives/structural/async.directive.d.ts +39 -0
  170. package/dist/src/directives/structural/async.directive.d.ts.map +1 -0
  171. package/dist/src/directives/structural/async.directive.js +115 -0
  172. package/dist/src/directives/structural/async.directive.js.map +1 -0
  173. package/dist/src/directives/structural/for.directive.d.ts +37 -0
  174. package/dist/src/directives/structural/for.directive.d.ts.map +1 -0
  175. package/dist/src/directives/structural/for.directive.js +209 -0
  176. package/dist/src/directives/structural/for.directive.js.map +1 -0
  177. package/dist/src/directives/structural/if.directive.d.ts +54 -0
  178. package/dist/src/directives/structural/if.directive.d.ts.map +1 -0
  179. package/dist/src/directives/structural/if.directive.js +210 -0
  180. package/dist/src/directives/structural/if.directive.js.map +1 -0
  181. package/dist/src/directives/structural/structural.directive.d.ts +11 -0
  182. package/dist/src/directives/structural/structural.directive.d.ts.map +1 -0
  183. package/dist/src/directives/structural/structural.directive.js +29 -0
  184. package/dist/src/directives/structural/structural.directive.js.map +1 -0
  185. package/dist/src/directives/structural/switch.directive.d.ts +12 -0
  186. package/dist/src/directives/structural/switch.directive.d.ts.map +1 -0
  187. package/dist/src/directives/structural/switch.directive.js +69 -0
  188. package/dist/src/directives/structural/switch.directive.js.map +1 -0
  189. package/dist/src/directives/structural/virtual-scroll.directive.d.ts +50 -0
  190. package/dist/src/directives/structural/virtual-scroll.directive.d.ts.map +1 -0
  191. package/dist/src/directives/structural/virtual-scroll.directive.js +165 -0
  192. package/dist/src/directives/structural/virtual-scroll.directive.js.map +1 -0
  193. package/dist/src/directives/utils.d.ts +61 -0
  194. package/dist/src/directives/utils.d.ts.map +1 -0
  195. package/dist/src/directives/utils.js +121 -0
  196. package/dist/src/directives/utils.js.map +1 -0
  197. package/dist/src/directives/validate.directive.d.ts +41 -0
  198. package/dist/src/directives/validate.directive.d.ts.map +1 -0
  199. package/dist/src/directives/validate.directive.js +161 -0
  200. package/dist/src/directives/validate.directive.js.map +1 -0
  201. package/dist/src/directives/virtual-scroll.d.ts +91 -0
  202. package/dist/src/directives/virtual-scroll.d.ts.map +1 -0
  203. package/dist/src/directives/virtual-scroll.js +78 -0
  204. package/dist/src/directives/virtual-scroll.js.map +1 -0
  205. package/dist/src/directives/when.d.ts +24 -0
  206. package/dist/src/directives/when.d.ts.map +1 -0
  207. package/dist/src/directives/when.js +25 -0
  208. package/dist/src/directives/when.js.map +1 -0
  209. package/dist/src/html.d.ts +23 -0
  210. package/dist/src/html.d.ts.map +1 -0
  211. package/dist/src/html.js +37 -0
  212. package/dist/src/html.js.map +1 -0
  213. package/dist/src/modifiers/capture-modifier.d.ts +6 -0
  214. package/dist/src/modifiers/capture-modifier.d.ts.map +1 -0
  215. package/dist/src/modifiers/capture-modifier.js +14 -0
  216. package/dist/src/modifiers/capture-modifier.js.map +1 -0
  217. package/dist/src/modifiers/event-modifiers.d.ts +38 -0
  218. package/dist/src/modifiers/event-modifiers.d.ts.map +1 -0
  219. package/dist/src/modifiers/event-modifiers.js +90 -0
  220. package/dist/src/modifiers/event-modifiers.js.map +1 -0
  221. package/dist/src/modifiers/key-modifiers.d.ts +8 -0
  222. package/dist/src/modifiers/key-modifiers.d.ts.map +1 -0
  223. package/dist/src/modifiers/key-modifiers.js +29 -0
  224. package/dist/src/modifiers/key-modifiers.js.map +1 -0
  225. package/dist/src/modifiers/mouse-modifiers.d.ts +8 -0
  226. package/dist/src/modifiers/mouse-modifiers.d.ts.map +1 -0
  227. package/dist/src/modifiers/mouse-modifiers.js +15 -0
  228. package/dist/src/modifiers/mouse-modifiers.js.map +1 -0
  229. package/dist/src/modifiers/once-modifier.d.ts +6 -0
  230. package/dist/src/modifiers/once-modifier.d.ts.map +1 -0
  231. package/dist/src/modifiers/once-modifier.js +11 -0
  232. package/dist/src/modifiers/once-modifier.js.map +1 -0
  233. package/dist/src/modifiers/passive-modifier.d.ts +6 -0
  234. package/dist/src/modifiers/passive-modifier.d.ts.map +1 -0
  235. package/dist/src/modifiers/passive-modifier.js +14 -0
  236. package/dist/src/modifiers/passive-modifier.js.map +1 -0
  237. package/dist/src/processor/parser.d.ts +74 -0
  238. package/dist/src/processor/parser.d.ts.map +1 -0
  239. package/dist/src/processor/parser.js +345 -0
  240. package/dist/src/processor/parser.js.map +1 -0
  241. package/dist/src/processor/processor.d.ts +68 -0
  242. package/dist/src/processor/processor.d.ts.map +1 -0
  243. package/dist/src/processor/processor.js +138 -0
  244. package/dist/src/processor/processor.js.map +1 -0
  245. package/dist/src/processor/template-result.d.ts +74 -0
  246. package/dist/src/processor/template-result.d.ts.map +1 -0
  247. package/dist/src/processor/template-result.js +53 -0
  248. package/dist/src/processor/template-result.js.map +1 -0
  249. package/dist/src/processor/types.d.ts +16 -0
  250. package/dist/src/processor/types.d.ts.map +1 -0
  251. package/dist/src/processor/types.js +13 -0
  252. package/dist/src/processor/types.js.map +1 -0
  253. package/dist/src/utils/debug.d.ts +7 -0
  254. package/dist/src/utils/debug.d.ts.map +1 -0
  255. package/dist/src/utils/debug.js +7 -0
  256. package/dist/src/utils/debug.js.map +1 -0
  257. package/dist/src/utils/performance.d.ts +50 -0
  258. package/dist/src/utils/performance.d.ts.map +1 -0
  259. package/dist/src/utils/performance.js +51 -0
  260. package/dist/src/utils/performance.js.map +1 -0
  261. package/dist/tsconfig.tsbuildinfo +1 -0
  262. package/package.json +8 -10
@@ -0,0 +1,235 @@
1
+ import { TemplateResult } from '../../processor/template-result';
2
+ import { RepeatResult } from '../../directives/repeat';
3
+ import { KeyedListState } from '../../directives/keyed-diff';
4
+ export class NodeBinding {
5
+ element;
6
+ startMarker;
7
+ endMarker;
8
+ processor;
9
+ previousValue = undefined;
10
+ /** What kind of content we last rendered */
11
+ prevKind = 0 /* PrevKind.None */;
12
+ // ── Single TemplateResult reuse ──
13
+ /** Cached instance for a single TemplateResult */
14
+ templateInstance = null;
15
+ /** strings identity of the current templateInstance */
16
+ templateStrings = null;
17
+ // ── Array of TemplateResults reuse ──
18
+ /** Cached instances when rendering an array */
19
+ arrayInstances = [];
20
+ /** Per-index strings identity for each array item */
21
+ arrayStrings = [];
22
+ // ── Primitive text reuse ──
23
+ textNode = null;
24
+ // ── Keyed list (repeat) ──
25
+ keyedState = null;
26
+ constructor(element, startMarker, endMarker, processor) {
27
+ this.element = element;
28
+ this.startMarker = startMarker;
29
+ this.endMarker = endMarker;
30
+ this.processor = processor;
31
+ }
32
+ async setValue(value) {
33
+ // Fast path: identical value reference
34
+ if (value === this.previousValue)
35
+ return;
36
+ // ── Keyed list (repeat directive) ───────────────────────
37
+ if (value instanceof RepeatResult && this.processor) {
38
+ if (this.prevKind !== 5 /* PrevKind.Keyed */) {
39
+ this.teardown();
40
+ }
41
+ if (!this.keyedState) {
42
+ this.keyedState = new KeyedListState(this.startMarker, this.endMarker, this.processor);
43
+ }
44
+ await this.keyedState.update(value);
45
+ this.prevKind = 5 /* PrevKind.Keyed */;
46
+ this.previousValue = value;
47
+ return;
48
+ }
49
+ // Leaving keyed mode — tear it down
50
+ if (this.keyedState) {
51
+ this.keyedState.clear();
52
+ this.keyedState = null;
53
+ }
54
+ // ── null / undefined ────────────────────────────────────
55
+ if (value === null || value === undefined) {
56
+ this.teardown();
57
+ this.previousValue = value;
58
+ return;
59
+ }
60
+ // ── Single TemplateResult ───────────────────────────────
61
+ if (value instanceof TemplateResult && this.processor) {
62
+ if (this.prevKind === 1 /* PrevKind.Template */ &&
63
+ this.templateInstance &&
64
+ this.templateStrings === value.strings) {
65
+ // Same template structure → just update values (no DOM teardown)
66
+ await this.templateInstance.update(value.values);
67
+ }
68
+ else {
69
+ // Different template or first render → full create
70
+ this.teardown();
71
+ const instance = await this.processor.createInstance(value);
72
+ this.templateInstance = instance;
73
+ this.templateStrings = value.strings;
74
+ this.insert(instance.getFragment());
75
+ }
76
+ this.prevKind = 1 /* PrevKind.Template */;
77
+ this.previousValue = value;
78
+ return;
79
+ }
80
+ // ── Array of values ─────────────────────────────────────
81
+ if (Array.isArray(value) && this.processor) {
82
+ await this.setArrayValue(value);
83
+ this.prevKind = 2 /* PrevKind.TemplateArray */;
84
+ this.previousValue = value;
85
+ return;
86
+ }
87
+ // ── Raw DOM Node ────────────────────────────────────────
88
+ if (value instanceof Node) {
89
+ this.teardown();
90
+ this.insert(value);
91
+ this.prevKind = 4 /* PrevKind.Node */;
92
+ this.previousValue = value;
93
+ return;
94
+ }
95
+ // ── Primitive (string / number / boolean) ───────────────
96
+ if (this.prevKind === 3 /* PrevKind.Text */ && this.textNode) {
97
+ // Reuse existing text node — zero DOM operations
98
+ this.textNode.nodeValue = String(value);
99
+ }
100
+ else {
101
+ this.teardown();
102
+ this.textNode = document.createTextNode(String(value));
103
+ this.insert(this.textNode);
104
+ }
105
+ this.prevKind = 3 /* PrevKind.Text */;
106
+ this.previousValue = value;
107
+ }
108
+ // ── Array optimisation ──────────────────────────────────────
109
+ async setArrayValue(value) {
110
+ const prevLen = this.arrayInstances.length;
111
+ const newLen = value.length;
112
+ // Try to reuse instances that have the same template strings
113
+ const reusableCount = Math.min(prevLen, newLen);
114
+ let canReuseAll = this.prevKind === 2 /* PrevKind.TemplateArray */ && prevLen > 0;
115
+ // Check if we can do in-place updates for existing items
116
+ for (let i = 0; i < reusableCount && canReuseAll; i++) {
117
+ const item = value[i];
118
+ if (item instanceof TemplateResult &&
119
+ this.arrayStrings[i] === item.strings &&
120
+ this.arrayInstances[i]) {
121
+ // This item can be reused
122
+ }
123
+ else {
124
+ canReuseAll = false;
125
+ }
126
+ }
127
+ if (canReuseAll && newLen <= prevLen) {
128
+ // Fast path: update existing items in-place, remove extras
129
+ for (let i = 0; i < reusableCount; i++) {
130
+ const item = value[i];
131
+ await this.arrayInstances[i].update(item.values);
132
+ }
133
+ // Remove excess items from the end
134
+ for (let i = newLen; i < prevLen; i++) {
135
+ if (this.arrayInstances[i]?.disconnect) {
136
+ this.arrayInstances[i].disconnect();
137
+ }
138
+ }
139
+ // Remove excess DOM nodes (from the last reusable instance to end marker)
140
+ if (newLen < prevLen) {
141
+ this.removeTrailingNodes(newLen);
142
+ }
143
+ this.arrayInstances.length = newLen;
144
+ this.arrayStrings.length = newLen;
145
+ return;
146
+ }
147
+ // Slow path: full teardown + rebuild
148
+ this.teardown();
149
+ const fragment = document.createDocumentFragment();
150
+ this.arrayInstances = [];
151
+ this.arrayStrings = [];
152
+ for (let i = 0; i < newLen; i++) {
153
+ const item = value[i];
154
+ if (item instanceof TemplateResult) {
155
+ const instance = await this.processor.createInstance(item, { index: i });
156
+ this.arrayInstances.push(instance);
157
+ this.arrayStrings.push(item.strings);
158
+ fragment.appendChild(instance.getFragment());
159
+ }
160
+ else {
161
+ this.arrayInstances.push(null);
162
+ this.arrayStrings.push(null);
163
+ fragment.appendChild(document.createTextNode(String(item)));
164
+ }
165
+ }
166
+ this.insert(fragment);
167
+ }
168
+ /**
169
+ * Remove DOM nodes that belong to array items from index `fromIndex` onwards.
170
+ */
171
+ removeTrailingNodes(fromIndex) {
172
+ // Walk backwards from endMarker to find and remove excess nodes.
173
+ // Each template instance's DOM sits between the markers.
174
+ // Since we can't easily map instance → DOM range, remove all DOM
175
+ // after the last kept instance and re-insert would be wasteful.
176
+ // Instead, count nodes per instance during teardown — but for now,
177
+ // clear everything from startMarker to endMarker and re-insert kept instances.
178
+ // This is still better than full teardown because we don't recreate instances.
179
+ let node = this.startMarker.nextSibling;
180
+ while (node && node !== this.endMarker) {
181
+ const next = node.nextSibling;
182
+ node.parentNode?.removeChild(node);
183
+ node = next;
184
+ }
185
+ // Re-insert kept instances
186
+ for (let i = 0; i < fromIndex; i++) {
187
+ if (this.arrayInstances[i]) {
188
+ this.insert(this.arrayInstances[i].getFragment());
189
+ }
190
+ }
191
+ }
192
+ // ── Shared helpers ──────────────────────────────────────────
193
+ insert(node) {
194
+ this.endMarker.parentNode?.insertBefore(node, this.endMarker);
195
+ }
196
+ /**
197
+ * Full teardown: disconnect instances, remove DOM nodes, reset state.
198
+ */
199
+ teardown() {
200
+ // Disconnect single template instance
201
+ if (this.templateInstance) {
202
+ this.templateInstance.disconnect();
203
+ this.templateInstance = null;
204
+ this.templateStrings = null;
205
+ }
206
+ // Disconnect array instances
207
+ for (const inst of this.arrayInstances) {
208
+ if (inst?.disconnect)
209
+ inst.disconnect();
210
+ }
211
+ this.arrayInstances = [];
212
+ this.arrayStrings = [];
213
+ // Clear text node ref
214
+ this.textNode = null;
215
+ // Remove all DOM between markers
216
+ let node = this.startMarker.nextSibling;
217
+ while (node && node !== this.endMarker) {
218
+ const next = node.nextSibling;
219
+ node.parentNode?.removeChild(node);
220
+ node = next;
221
+ }
222
+ this.prevKind = 0 /* PrevKind.None */;
223
+ }
224
+ clear() {
225
+ this.teardown();
226
+ }
227
+ disconnect() {
228
+ if (this.keyedState) {
229
+ this.keyedState.disconnect();
230
+ this.keyedState = null;
231
+ }
232
+ this.teardown();
233
+ }
234
+ }
235
+ //# sourceMappingURL=node-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/node-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Binding } from './binding';
2
+ /**
3
+ * ObjectClassBinding — handles `:class=${{ active: bool, loading: bool }}`
4
+ *
5
+ * Accepts a Record<string, boolean>. Keys with truthy values are added to
6
+ * classList; keys with falsy values are removed. Previous keys that are no
7
+ * longer present in the new map are also removed.
8
+ */
9
+ export declare class ObjectClassBinding implements Binding {
10
+ private readonly element;
11
+ private previous;
12
+ constructor(element: Element);
13
+ setValue(value: unknown): Promise<void>;
14
+ clear(): void;
15
+ }
16
+ //# sourceMappingURL=object-class-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-class-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/object-class-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,OAAO;IAGlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAA+B;gBAElB,OAAO,EAAE,OAAO;IAEvC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7C,KAAK,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ObjectClassBinding — handles `:class=${{ active: bool, loading: bool }}`
3
+ *
4
+ * Accepts a Record<string, boolean>. Keys with truthy values are added to
5
+ * classList; keys with falsy values are removed. Previous keys that are no
6
+ * longer present in the new map are also removed.
7
+ */
8
+ export class ObjectClassBinding {
9
+ element;
10
+ previous = {};
11
+ constructor(element) {
12
+ this.element = element;
13
+ }
14
+ async setValue(value) {
15
+ if (typeof value !== 'object' || value === null)
16
+ return;
17
+ const next = value;
18
+ // Remove classes that were previously set but are now falsy or absent
19
+ for (const cls of Object.keys(this.previous)) {
20
+ if (!next[cls]) {
21
+ this.element.classList.remove(cls);
22
+ }
23
+ }
24
+ // Add/remove based on current map
25
+ for (const [cls, active] of Object.entries(next)) {
26
+ if (active) {
27
+ this.element.classList.add(cls);
28
+ }
29
+ else {
30
+ this.element.classList.remove(cls);
31
+ }
32
+ }
33
+ this.previous = { ...next };
34
+ }
35
+ clear() {
36
+ for (const cls of Object.keys(this.previous)) {
37
+ this.element.classList.remove(cls);
38
+ }
39
+ this.previous = {};
40
+ }
41
+ }
42
+ //# sourceMappingURL=object-class-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-class-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/object-class-binding.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IAGE;IAFrB,QAAQ,GAA4B,EAAE,CAAC;IAE/C,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD,KAAK,CAAC,QAAQ,CAAC,KAAc;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAExD,MAAM,IAAI,GAAG,KAAgC,CAAC;QAE9C,sEAAsE;QACtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,KAAK;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;CACJ"}
@@ -0,0 +1,16 @@
1
+ import { Binding } from './binding';
2
+ /**
3
+ * ObjectStyleBinding — handles `:style=${{ color: 'red', fontSize: '16px' }}`
4
+ *
5
+ * Accepts a Record<string, string>. Properties present in the map are set on
6
+ * element.style; properties that were set in the previous render but are absent
7
+ * from the new map are removed.
8
+ */
9
+ export declare class ObjectStyleBinding implements Binding {
10
+ private readonly element;
11
+ private previousKeys;
12
+ constructor(element: HTMLElement);
13
+ setValue(value: unknown): Promise<void>;
14
+ clear(): void;
15
+ }
16
+ //# sourceMappingURL=object-style-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-style-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/object-style-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,OAAO;IAGlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,YAAY,CAA0B;gBAEjB,OAAO,EAAE,WAAW;IAE3C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7C,KAAK,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ObjectStyleBinding — handles `:style=${{ color: 'red', fontSize: '16px' }}`
3
+ *
4
+ * Accepts a Record<string, string>. Properties present in the map are set on
5
+ * element.style; properties that were set in the previous render but are absent
6
+ * from the new map are removed.
7
+ */
8
+ export class ObjectStyleBinding {
9
+ element;
10
+ previousKeys = new Set();
11
+ constructor(element) {
12
+ this.element = element;
13
+ }
14
+ async setValue(value) {
15
+ if (typeof value !== 'object' || value === null)
16
+ return;
17
+ const next = value;
18
+ const nextKeys = new Set(Object.keys(next));
19
+ // Remove properties no longer in the map
20
+ for (const prop of this.previousKeys) {
21
+ if (!nextKeys.has(prop)) {
22
+ this.element.style[prop] = '';
23
+ }
24
+ }
25
+ // Apply new/updated properties
26
+ for (const [prop, val] of Object.entries(next)) {
27
+ this.element.style[prop] = val;
28
+ }
29
+ this.previousKeys = nextKeys;
30
+ }
31
+ clear() {
32
+ for (const prop of this.previousKeys) {
33
+ this.element.style[prop] = '';
34
+ }
35
+ this.previousKeys = new Set();
36
+ }
37
+ }
38
+ //# sourceMappingURL=object-style-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-style-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/object-style-binding.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IAGE;IAFrB,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE9C,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAErD,KAAK,CAAC,QAAQ,CAAC,KAAc;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAExD,MAAM,IAAI,GAAG,KAA+B,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,KAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3C,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAa,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,KAAK;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,KAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;CACJ"}
@@ -0,0 +1,12 @@
1
+ import { Binding } from './binding';
2
+ export declare class PropertyBinding implements Binding {
3
+ private element;
4
+ private propertyName;
5
+ private isBoolean;
6
+ private previousValue;
7
+ constructor(element: Element, propertyName: string, isBoolean?: boolean);
8
+ setValue(value: unknown): void;
9
+ clear(): void;
10
+ disconnect(): void;
11
+ }
12
+ //# sourceMappingURL=property-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/property-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,OAAO;IAIvC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,SAAS;IALrB,OAAO,CAAC,aAAa,CAAU;gBAGnB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,OAAe;IAGtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmB9B,KAAK,IAAI,IAAI;IAUb,UAAU,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,44 @@
1
+ export class PropertyBinding {
2
+ element;
3
+ propertyName;
4
+ isBoolean;
5
+ previousValue;
6
+ constructor(element, propertyName, isBoolean = false) {
7
+ this.element = element;
8
+ this.propertyName = propertyName;
9
+ this.isBoolean = isBoolean;
10
+ }
11
+ setValue(value) {
12
+ if (value === this.previousValue)
13
+ return;
14
+ if (this.isBoolean) {
15
+ // Handle boolean attributes
16
+ if (value) {
17
+ this.element.setAttribute(this.propertyName, '');
18
+ }
19
+ else {
20
+ this.element.removeAttribute(this.propertyName);
21
+ }
22
+ this.element[this.propertyName] = !!value;
23
+ }
24
+ else {
25
+ // Handle regular properties
26
+ this.element[this.propertyName] = value;
27
+ }
28
+ this.previousValue = value;
29
+ }
30
+ clear() {
31
+ if (this.isBoolean) {
32
+ this.element.removeAttribute(this.propertyName);
33
+ this.element[this.propertyName] = false;
34
+ }
35
+ else {
36
+ this.element[this.propertyName] = null;
37
+ }
38
+ this.previousValue = undefined;
39
+ }
40
+ disconnect() {
41
+ this.clear();
42
+ }
43
+ }
44
+ //# sourceMappingURL=property-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/property-binding.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAIZ;IACA;IACA;IALJ,aAAa,CAAU;IAE/B,YACY,OAAgB,EAChB,YAAoB,EACpB,YAAqB,KAAK;QAF1B,YAAO,GAAP,OAAO,CAAS;QAChB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAiB;IACnC,CAAC;IAEJ,QAAQ,CAAC,KAAc;QACnB,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QAEzC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,4BAA4B;YAC5B,IAAI,KAAK,EAAE,CAAC;gBACP,IAAI,CAAC,OAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACH,IAAI,CAAC,OAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,CAAC;YACA,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,4BAA4B;YAC3B,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,IAAI,CAAC,OAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QACrD,CAAC;aAAM,CAAC;YACH,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACnC,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ"}
@@ -0,0 +1,14 @@
1
+ import { Binding } from './binding';
2
+ /**
3
+ * Handles reference bindings (#ref=${callback})
4
+ * Allows getting direct references to DOM elements
5
+ */
6
+ export declare class ReferenceBinding implements Binding {
7
+ private element;
8
+ private callback;
9
+ constructor(element: Element);
10
+ setValue(value: unknown): void;
11
+ clear(): void;
12
+ disconnect(): void;
13
+ }
14
+ //# sourceMappingURL=reference-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/reference-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,OAAO;IAIxC,OAAO,CAAC,OAAO;IAHnB,OAAO,CAAC,QAAQ,CAAoD;gBAGxD,OAAO,EAAE,OAAO;IAO5B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmB9B,KAAK,IAAI,IAAI;IAWb,UAAU,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,44 @@
1
+ import { debugLog } from '../../utils/debug';
2
+ /**
3
+ * Handles reference bindings (#ref=${callback})
4
+ * Allows getting direct references to DOM elements
5
+ */
6
+ export class ReferenceBinding {
7
+ element;
8
+ callback = null;
9
+ constructor(element) {
10
+ this.element = element;
11
+ debugLog('referenceBinding', 'Created reference binding', {
12
+ element: element.tagName
13
+ });
14
+ }
15
+ setValue(value) {
16
+ debugLog('referenceBinding', 'Setting value', {
17
+ element: this.element.tagName,
18
+ value
19
+ });
20
+ // Clear previous callback
21
+ if (this.callback) {
22
+ this.callback(null);
23
+ this.callback = null;
24
+ }
25
+ // Set new callback if it's a function
26
+ if (typeof value === 'function') {
27
+ this.callback = value;
28
+ this.callback(this.element);
29
+ }
30
+ }
31
+ clear() {
32
+ debugLog('referenceBinding', 'Clearing binding', {
33
+ element: this.element.tagName
34
+ });
35
+ if (this.callback) {
36
+ this.callback(null);
37
+ this.callback = null;
38
+ }
39
+ }
40
+ disconnect() {
41
+ this.clear();
42
+ }
43
+ }
44
+ //# sourceMappingURL=reference-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/reference-binding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAIb;IAHJ,QAAQ,GAA+C,IAAI,CAAC;IAEpE,YACY,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAExB,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B,EAAE;YACtD,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAc;QACnB,QAAQ,CAAC,kBAAkB,EAAE,eAAe,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,KAAK;SACR,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAA0C,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,KAAK;QACD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,EAAE;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SAChC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ"}
@@ -0,0 +1,16 @@
1
+ import { Binding } from './binding';
2
+ /**
3
+ * SpreadBinding — handles `...=${propsObj}`
4
+ *
5
+ * Accepts a Record<string, unknown>. Each key is set as a property on the
6
+ * element (same semantics as PropertyBinding). Properties set by a previous
7
+ * render that are absent from the new object are reset to undefined.
8
+ */
9
+ export declare class SpreadBinding implements Binding {
10
+ private readonly element;
11
+ private previousKeys;
12
+ constructor(element: Element);
13
+ setValue(value: unknown): Promise<void>;
14
+ clear(): void;
15
+ }
16
+ //# sourceMappingURL=spread-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spread-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/spread-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,OAAO;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,YAAY,CAA0B;gBAEjB,OAAO,EAAE,OAAO;IAEvC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7C,KAAK,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SpreadBinding — handles `...=${propsObj}`
3
+ *
4
+ * Accepts a Record<string, unknown>. Each key is set as a property on the
5
+ * element (same semantics as PropertyBinding). Properties set by a previous
6
+ * render that are absent from the new object are reset to undefined.
7
+ */
8
+ export class SpreadBinding {
9
+ element;
10
+ previousKeys = new Set();
11
+ constructor(element) {
12
+ this.element = element;
13
+ }
14
+ async setValue(value) {
15
+ if (typeof value !== 'object' || value === null) {
16
+ this.clear();
17
+ return;
18
+ }
19
+ const next = value;
20
+ const nextKeys = new Set(Object.keys(next));
21
+ // Remove properties no longer in the spread object
22
+ for (const key of this.previousKeys) {
23
+ if (!nextKeys.has(key)) {
24
+ this.element[key] = undefined;
25
+ }
26
+ }
27
+ // Apply new/updated properties
28
+ for (const [key, val] of Object.entries(next)) {
29
+ this.element[key] = val;
30
+ }
31
+ this.previousKeys = nextKeys;
32
+ }
33
+ clear() {
34
+ for (const key of this.previousKeys) {
35
+ this.element[key] = undefined;
36
+ }
37
+ this.previousKeys = new Set();
38
+ }
39
+ }
40
+ //# sourceMappingURL=spread-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spread-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/spread-binding.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAGO;IAFrB,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE9C,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD,KAAK,CAAC,QAAQ,CAAC,KAAc;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,mDAAmD;QACnD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAC3C,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,KAAK;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ import { Binding } from './binding';
2
+ export declare class StyleBinding implements Binding {
3
+ private element;
4
+ private previousValue;
5
+ constructor(element: Element);
6
+ setValue(value: unknown): void;
7
+ clear(): void;
8
+ disconnect(): void;
9
+ }
10
+ //# sourceMappingURL=style-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-binding.d.ts","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/style-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,qBAAa,YAAa,YAAW,OAAO;IAIpC,OAAO,CAAC,OAAO;IAHnB,OAAO,CAAC,aAAa,CAA4B;gBAGrC,OAAO,EAAE,OAAO;IAO5B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IA+B9B,KAAK,IAAI,IAAI;IAMb,UAAU,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,44 @@
1
+ import { debugLog } from '../../utils/debug';
2
+ export class StyleBinding {
3
+ element;
4
+ previousValue = null;
5
+ constructor(element) {
6
+ this.element = element;
7
+ debugLog('styleBinding', 'Created style binding', {
8
+ element: element.tagName
9
+ });
10
+ }
11
+ setValue(value) {
12
+ if (!value || typeof value !== 'object') {
13
+ this.clear();
14
+ return;
15
+ }
16
+ const styleObj = value;
17
+ const element = this.element;
18
+ // Skip if unchanged
19
+ if (JSON.stringify(styleObj) === JSON.stringify(this.previousValue)) {
20
+ return;
21
+ }
22
+ debugLog('styleBinding', 'Setting styles', {
23
+ element: element.tagName,
24
+ styles: styleObj
25
+ });
26
+ // Clear previous styles
27
+ this.clear();
28
+ // Apply new styles
29
+ Object.entries(styleObj).forEach(([key, value]) => {
30
+ const cssValue = typeof value === 'number' ? `${value}px` : value;
31
+ element.style[key] = cssValue;
32
+ });
33
+ this.previousValue = styleObj;
34
+ }
35
+ clear() {
36
+ const element = this.element;
37
+ element.removeAttribute('style');
38
+ this.previousValue = null;
39
+ }
40
+ disconnect() {
41
+ this.clear();
42
+ }
43
+ }
44
+ //# sourceMappingURL=style-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-binding.js","sourceRoot":"","sources":["../../../../src/binding-manager/bindings/style-binding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,MAAM,OAAO,YAAY;IAIT;IAHJ,aAAa,GAAuB,IAAI,CAAC;IAEjD,YACY,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAExB,QAAQ,CAAC,cAAc,EAAE,uBAAuB,EAAE;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAc;QACnB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,KAAoB,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAsB,CAAC;QAE5C,oBAAoB;QACpB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAClE,OAAO;QACX,CAAC;QAED,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE;YACvC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,mBAAmB;QACnB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,GAAU,CAAC,GAAG,QAAQ,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,KAAK;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAsB,CAAC;QAC5C,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ"}