@hypen-space/web 0.3.8 → 0.3.10

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 (205) hide show
  1. package/dist/{src/canvas → canvas}/index.js +10 -6
  2. package/dist/{src/canvas → canvas}/index.js.map +4 -4
  3. package/dist/{src/canvas → canvas}/layout.js +4 -2
  4. package/dist/{src/canvas → canvas}/layout.js.map +3 -3
  5. package/dist/{src/canvas → canvas}/paint.js +4 -2
  6. package/dist/{src/canvas → canvas}/paint.js.map +3 -3
  7. package/dist/{src/canvas → canvas}/renderer.js +10 -6
  8. package/dist/{src/canvas → canvas}/renderer.js.map +4 -4
  9. package/dist/{src/canvas → canvas}/text.js +4 -2
  10. package/dist/{src/canvas → canvas}/text.js.map +3 -3
  11. package/dist/dom/applicators/advanced-layout.js +245 -0
  12. package/dist/dom/applicators/advanced-layout.js.map +11 -0
  13. package/dist/{src/dom/applicators/margin.js → dom/applicators/background.js} +33 -21
  14. package/dist/{src/dom → dom}/applicators/background.js.map +3 -3
  15. package/dist/dom/applicators/border.js +97 -0
  16. package/dist/{src/dom → dom}/applicators/border.js.map +3 -3
  17. package/dist/dom/applicators/color.js +49 -0
  18. package/dist/{src/dom → dom}/applicators/color.js.map +3 -3
  19. package/dist/{src/dom/applicators/padding.js → dom/applicators/display.js} +36 -21
  20. package/dist/{src/dom → dom}/applicators/display.js.map +3 -3
  21. package/dist/dom/applicators/effects.js +138 -0
  22. package/dist/{src/dom → dom}/applicators/effects.js.map +3 -3
  23. package/dist/{src/dom → dom}/applicators/events.js +41 -48
  24. package/dist/dom/applicators/events.js.map +11 -0
  25. package/dist/{src/dom → dom}/applicators/font.js +76 -86
  26. package/dist/{src/dom → dom}/applicators/font.js.map +3 -3
  27. package/dist/dom/applicators/index.js +1728 -0
  28. package/dist/dom/applicators/index.js.map +26 -0
  29. package/dist/dom/applicators/layout.js +141 -0
  30. package/dist/dom/applicators/layout.js.map +10 -0
  31. package/dist/dom/applicators/margin.js +104 -0
  32. package/dist/dom/applicators/margin.js.map +10 -0
  33. package/dist/dom/applicators/padding.js +104 -0
  34. package/dist/dom/applicators/padding.js.map +10 -0
  35. package/dist/{src/dom → dom}/applicators/size.js +76 -76
  36. package/dist/dom/applicators/size.js.map +10 -0
  37. package/dist/dom/applicators/transform.js +105 -0
  38. package/dist/{src/dom → dom}/applicators/transform.js.map +3 -3
  39. package/dist/dom/applicators/transition.js +79 -0
  40. package/dist/{src/dom → dom}/applicators/transition.js.map +3 -3
  41. package/dist/dom/applicators/types.js +2 -0
  42. package/dist/dom/applicators/types.js.map +9 -0
  43. package/dist/dom/applicators/typography.js +100 -0
  44. package/dist/{src/dom → dom}/applicators/typography.js.map +3 -3
  45. package/dist/{src/dom → dom}/components/avatar.js +4 -3
  46. package/dist/dom/components/avatar.js.map +10 -0
  47. package/dist/{src/dom → dom}/components/button.js +11 -1
  48. package/dist/dom/components/button.js.map +10 -0
  49. package/dist/{src/dom → dom}/components/center.js +4 -1
  50. package/dist/dom/components/center.js.map +10 -0
  51. package/dist/dom/components/column.js.map +10 -0
  52. package/dist/{src/dom → dom}/components/container.js +1 -4
  53. package/dist/{src/dom → dom}/components/container.js.map +3 -3
  54. package/dist/{src/dom → dom}/components/grid.js +18 -2
  55. package/dist/dom/components/grid.js.map +10 -0
  56. package/dist/{src/dom → dom}/components/hypenapp.js +15 -13
  57. package/dist/dom/components/hypenapp.js.map +10 -0
  58. package/dist/{src/dom → dom}/components/index.js +64 -24
  59. package/dist/dom/components/index.js.map +41 -0
  60. package/dist/{src/dom → dom}/components/route.js +5 -3
  61. package/dist/dom/components/route.js.map +10 -0
  62. package/dist/{src/dom → dom}/components/row.js +5 -4
  63. package/dist/dom/components/row.js.map +10 -0
  64. package/dist/{src/dom → dom}/components/stack.js +5 -1
  65. package/dist/dom/components/stack.js.map +10 -0
  66. package/dist/{src/dom → dom}/components/text.js +5 -1
  67. package/dist/dom/components/text.js.map +10 -0
  68. package/dist/{src/dom → dom}/debug.js +5 -3
  69. package/dist/dom/debug.js.map +10 -0
  70. package/dist/{src/dom → dom}/element-data.js +6 -11
  71. package/dist/dom/element-data.js.map +10 -0
  72. package/dist/{src/dom → dom}/events.js +15 -12
  73. package/dist/dom/events.js.map +10 -0
  74. package/dist/{src/dom → dom}/index.js +1103 -1044
  75. package/dist/dom/index.js.map +62 -0
  76. package/dist/{src/dom → dom}/renderer.js +1089 -1033
  77. package/dist/dom/renderer.js.map +61 -0
  78. package/dist/{src/hypen.js → hypen.js} +1122 -1097
  79. package/dist/hypen.js.map +62 -0
  80. package/dist/{src/index.js → index.js} +1143 -1111
  81. package/dist/index.js.map +72 -0
  82. package/package.json +22 -22
  83. package/src/canvas/renderer.ts +7 -4
  84. package/src/canvas/text.ts +4 -1
  85. package/src/dom/applicators/background.ts +1 -1
  86. package/src/dom/applicators/border.ts +1 -1
  87. package/src/dom/applicators/color.ts +1 -1
  88. package/src/dom/applicators/display.ts +1 -1
  89. package/src/dom/applicators/effects.ts +1 -1
  90. package/src/dom/applicators/events.ts +8 -14
  91. package/src/dom/applicators/font.ts +1 -1
  92. package/src/dom/applicators/index.ts +49 -17
  93. package/src/dom/applicators/layout.ts +31 -8
  94. package/src/dom/applicators/margin.ts +56 -6
  95. package/src/dom/applicators/padding.ts +56 -6
  96. package/src/dom/applicators/size.ts +19 -4
  97. package/src/dom/applicators/transform.ts +1 -1
  98. package/src/dom/applicators/transition.ts +1 -1
  99. package/src/dom/applicators/types.ts +7 -0
  100. package/src/dom/applicators/typography.ts +1 -1
  101. package/src/dom/components/avatar.ts +4 -3
  102. package/src/dom/components/button.ts +17 -0
  103. package/src/dom/components/center.ts +9 -0
  104. package/src/dom/components/column.ts +4 -2
  105. package/src/dom/components/container.ts +2 -3
  106. package/src/dom/components/grid.ts +22 -0
  107. package/src/dom/components/hypenapp.ts +14 -11
  108. package/src/dom/components/route.ts +4 -1
  109. package/src/dom/components/row.ts +8 -7
  110. package/src/dom/components/stack.ts +4 -0
  111. package/src/dom/components/text.ts +7 -0
  112. package/src/dom/debug.ts +6 -2
  113. package/src/dom/element-data.ts +1 -1
  114. package/src/dom/events.ts +16 -12
  115. package/src/dom/renderer.ts +12 -9
  116. package/src/hypen.ts +32 -73
  117. package/dist/src/dom/applicators/advanced-layout.js +0 -250
  118. package/dist/src/dom/applicators/advanced-layout.js.map +0 -11
  119. package/dist/src/dom/applicators/background.js +0 -76
  120. package/dist/src/dom/applicators/border.js +0 -106
  121. package/dist/src/dom/applicators/color.js +0 -58
  122. package/dist/src/dom/applicators/display.js +0 -79
  123. package/dist/src/dom/applicators/effects.js +0 -147
  124. package/dist/src/dom/applicators/events.js.map +0 -11
  125. package/dist/src/dom/applicators/index.js +0 -1715
  126. package/dist/src/dom/applicators/index.js.map +0 -26
  127. package/dist/src/dom/applicators/layout.js +0 -138
  128. package/dist/src/dom/applicators/layout.js.map +0 -10
  129. package/dist/src/dom/applicators/margin.js.map +0 -10
  130. package/dist/src/dom/applicators/padding.js.map +0 -10
  131. package/dist/src/dom/applicators/size.js.map +0 -10
  132. package/dist/src/dom/applicators/transform.js +0 -114
  133. package/dist/src/dom/applicators/transition.js +0 -88
  134. package/dist/src/dom/applicators/typography.js +0 -109
  135. package/dist/src/dom/components/avatar.js.map +0 -10
  136. package/dist/src/dom/components/button.js.map +0 -10
  137. package/dist/src/dom/components/center.js.map +0 -10
  138. package/dist/src/dom/components/column.js.map +0 -10
  139. package/dist/src/dom/components/grid.js.map +0 -10
  140. package/dist/src/dom/components/hypenapp.js.map +0 -10
  141. package/dist/src/dom/components/index.js.map +0 -41
  142. package/dist/src/dom/components/route.js.map +0 -10
  143. package/dist/src/dom/components/row.js.map +0 -10
  144. package/dist/src/dom/components/stack.js.map +0 -10
  145. package/dist/src/dom/components/text.js.map +0 -10
  146. package/dist/src/dom/debug.js.map +0 -10
  147. package/dist/src/dom/element-data.js.map +0 -10
  148. package/dist/src/dom/events.js.map +0 -10
  149. package/dist/src/dom/index.js.map +0 -62
  150. package/dist/src/dom/renderer.js.map +0 -61
  151. package/dist/src/hypen.js.map +0 -62
  152. package/dist/src/index.js.map +0 -72
  153. /package/dist/{src/canvas → canvas}/accessibility.js +0 -0
  154. /package/dist/{src/canvas → canvas}/accessibility.js.map +0 -0
  155. /package/dist/{src/canvas → canvas}/events.js +0 -0
  156. /package/dist/{src/canvas → canvas}/events.js.map +0 -0
  157. /package/dist/{src/canvas → canvas}/input.js +0 -0
  158. /package/dist/{src/canvas → canvas}/input.js.map +0 -0
  159. /package/dist/{src/canvas → canvas}/types.js +0 -0
  160. /package/dist/{src/canvas → canvas}/types.js.map +0 -0
  161. /package/dist/{src/canvas → canvas}/utils.js +0 -0
  162. /package/dist/{src/canvas → canvas}/utils.js.map +0 -0
  163. /package/dist/{src/dom → dom}/canvas/index.js +0 -0
  164. /package/dist/{src/dom → dom}/canvas/index.js.map +0 -0
  165. /package/dist/{src/dom → dom}/components/audio.js +0 -0
  166. /package/dist/{src/dom → dom}/components/audio.js.map +0 -0
  167. /package/dist/{src/dom → dom}/components/badge.js +0 -0
  168. /package/dist/{src/dom → dom}/components/badge.js.map +0 -0
  169. /package/dist/{src/dom → dom}/components/card.js +0 -0
  170. /package/dist/{src/dom → dom}/components/card.js.map +0 -0
  171. /package/dist/{src/dom → dom}/components/checkbox.js +0 -0
  172. /package/dist/{src/dom → dom}/components/checkbox.js.map +0 -0
  173. /package/dist/{src/dom → dom}/components/column.js +0 -0
  174. /package/dist/{src/dom → dom}/components/divider.js +0 -0
  175. /package/dist/{src/dom → dom}/components/divider.js.map +0 -0
  176. /package/dist/{src/dom → dom}/components/heading.js +0 -0
  177. /package/dist/{src/dom → dom}/components/heading.js.map +0 -0
  178. /package/dist/{src/dom → dom}/components/image.js +0 -0
  179. /package/dist/{src/dom → dom}/components/image.js.map +0 -0
  180. /package/dist/{src/dom → dom}/components/input.js +0 -0
  181. /package/dist/{src/dom → dom}/components/input.js.map +0 -0
  182. /package/dist/{src/dom → dom}/components/link.js +0 -0
  183. /package/dist/{src/dom → dom}/components/link.js.map +0 -0
  184. /package/dist/{src/dom → dom}/components/list.js +0 -0
  185. /package/dist/{src/dom → dom}/components/list.js.map +0 -0
  186. /package/dist/{src/dom → dom}/components/paragraph.js +0 -0
  187. /package/dist/{src/dom → dom}/components/paragraph.js.map +0 -0
  188. /package/dist/{src/dom → dom}/components/progressbar.js +0 -0
  189. /package/dist/{src/dom → dom}/components/progressbar.js.map +0 -0
  190. /package/dist/{src/dom → dom}/components/router.js +0 -0
  191. /package/dist/{src/dom → dom}/components/router.js.map +0 -0
  192. /package/dist/{src/dom → dom}/components/select.js +0 -0
  193. /package/dist/{src/dom → dom}/components/select.js.map +0 -0
  194. /package/dist/{src/dom → dom}/components/slider.js +0 -0
  195. /package/dist/{src/dom → dom}/components/slider.js.map +0 -0
  196. /package/dist/{src/dom → dom}/components/spacer.js +0 -0
  197. /package/dist/{src/dom → dom}/components/spacer.js.map +0 -0
  198. /package/dist/{src/dom → dom}/components/spinner.js +0 -0
  199. /package/dist/{src/dom → dom}/components/spinner.js.map +0 -0
  200. /package/dist/{src/dom → dom}/components/switch.js +0 -0
  201. /package/dist/{src/dom → dom}/components/switch.js.map +0 -0
  202. /package/dist/{src/dom → dom}/components/textarea.js +0 -0
  203. /package/dist/{src/dom → dom}/components/textarea.js.map +0 -0
  204. /package/dist/{src/dom → dom}/components/video.js +0 -0
  205. /package/dist/{src/dom → dom}/components/video.js.map +0 -0
@@ -58,9 +58,10 @@ function ensureRowStyles() {
58
58
  const style = document.createElement("style");
59
59
  style.id = "hypen-row-styles";
60
60
  style.textContent = `
61
- [data-hypen-type="row"] > * {
62
- flex: 1 1 0%;
63
- min-width: 0;
61
+ /* Row expands to fill width when it has children with flex/weight */
62
+ /* This matches iOS/Android behavior where weighted children cause parent to expand */
63
+ [data-hypen-type="row"]:has(> [data-hypen-flex]) {
64
+ width: 100%;
64
65
  }
65
66
  `;
66
67
  document.head.appendChild(style);
@@ -91,6 +92,10 @@ var init_text = __esm(() => {
91
92
  create() {
92
93
  const el = document.createElement("span");
93
94
  el.style.display = "inline-block";
95
+ el.style.lineHeight = "1";
96
+ el.style.verticalAlign = "top";
97
+ el.style.margin = "0";
98
+ el.style.padding = "0";
94
99
  el.dataset.hypenType = "text";
95
100
  return el;
96
101
  },
@@ -140,6 +145,16 @@ var init_button = __esm(() => {
140
145
  buttonHandler = {
141
146
  create() {
142
147
  const el = document.createElement("button");
148
+ el.style.border = "none";
149
+ el.style.background = "none";
150
+ el.style.padding = "0";
151
+ el.style.margin = "0";
152
+ el.style.font = "inherit";
153
+ el.style.color = "inherit";
154
+ el.style.cursor = "pointer";
155
+ el.style.display = "flex";
156
+ el.style.flexDirection = "column";
157
+ el.style.alignItems = "flex-start";
143
158
  el.dataset.hypenType = "button";
144
159
  return el;
145
160
  }
@@ -156,9 +171,6 @@ var init_container = __esm(() => {
156
171
  containerHandler = {
157
172
  create() {
158
173
  const el = document.createElement("div");
159
- el.style.display = "flex";
160
- el.style.flexDirection = "column";
161
- el.style.alignItems = "stretch";
162
174
  el.dataset.hypenType = "container";
163
175
  return el;
164
176
  }
@@ -178,6 +190,9 @@ var init_center = __esm(() => {
178
190
  el.style.display = "flex";
179
191
  el.style.alignItems = "center";
180
192
  el.style.justifyContent = "center";
193
+ el.style.width = "100%";
194
+ el.style.height = "100%";
195
+ el.style.alignSelf = "stretch";
181
196
  el.dataset.hypenType = "center";
182
197
  return el;
183
198
  }
@@ -428,12 +443,16 @@ function ensureStackStyles() {
428
443
  position: relative;
429
444
  display: grid;
430
445
  grid-template-areas: "stack";
446
+ /* Default alignment: top-left (matching iOS/Android ZStack default) */
447
+ justify-items: start;
448
+ align-items: start;
431
449
  /* Ensure Stack participates properly in flex layouts (Row/Column) */
432
450
  min-width: 0;
433
451
  min-height: 0;
434
452
  }
435
453
  [data-hypen-type="stack"] > * {
436
454
  grid-area: stack;
455
+ /* Don't set justify-self/align-self here - let parent's justify-items/align-items control */
437
456
  }
438
457
  `;
439
458
  document.head.appendChild(style);
@@ -487,10 +506,26 @@ var exports_grid = {};
487
506
  __export(exports_grid, {
488
507
  gridHandler: () => gridHandler
489
508
  });
490
- var gridHandler;
509
+ function ensureGridStyles() {
510
+ if (gridStylesInjected)
511
+ return;
512
+ gridStylesInjected = true;
513
+ const style = document.createElement("style");
514
+ style.id = "hypen-grid-styles";
515
+ style.textContent = `
516
+ /* Grid children stretch to fill cells by default (matches Android behavior) */
517
+ [data-hypen-type="grid"] > * {
518
+ justify-self: stretch;
519
+ align-self: stretch;
520
+ }
521
+ `;
522
+ document.head.appendChild(style);
523
+ }
524
+ var gridStylesInjected = false, gridHandler;
491
525
  var init_grid = __esm(() => {
492
526
  gridHandler = {
493
527
  create() {
528
+ ensureGridStyles();
494
529
  const el = document.createElement("div");
495
530
  el.style.display = "grid";
496
531
  el.dataset.hypenType = "grid";
@@ -791,9 +826,10 @@ var init_avatar = __esm(() => {
791
826
  return el;
792
827
  },
793
828
  applyProps(el, props) {
794
- if (props.src !== undefined) {
829
+ const src = props["src.0"] || props["0"] || props.src || props.source;
830
+ if (src !== undefined) {
795
831
  const img = document.createElement("img");
796
- img.src = String(props.src);
832
+ img.src = String(src);
797
833
  img.style.width = "100%";
798
834
  img.style.height = "100%";
799
835
  img.style.objectFit = "cover";
@@ -975,8 +1011,10 @@ var exports_route = {};
975
1011
  __export(exports_route, {
976
1012
  routeHandler: () => routeHandler
977
1013
  });
978
- var routeHandler;
1014
+ import { frameworkLoggers } from "@hypen-space/core";
1015
+ var log, routeHandler;
979
1016
  var init_route = __esm(() => {
1017
+ log = frameworkLoggers.router;
980
1018
  routeHandler = {
981
1019
  create() {
982
1020
  const el = document.createElement("div");
@@ -996,7 +1034,7 @@ var init_route = __esm(() => {
996
1034
  if (componentName) {
997
1035
  el.dataset.routeComponent = String(componentName);
998
1036
  }
999
- console.log(`\uD83D\uDEE3️ Route created: path="${path}", lazy=${isLazy}, component="${el.dataset.routeComponent || "none"}"`);
1037
+ log.debug(`Route created: path="${path}", lazy=${isLazy}, component="${el.dataset.routeComponent || "none"}"`);
1000
1038
  }
1001
1039
  };
1002
1040
  });
@@ -1008,11 +1046,12 @@ __export(exports_hypenapp, {
1008
1046
  disconnectHypenApp: () => disconnectHypenApp
1009
1047
  });
1010
1048
  import { RemoteEngine } from "@hypen-space/core/remote/client";
1049
+ import { frameworkLoggers as frameworkLoggers2 } from "@hypen-space/core";
1011
1050
  function applyPatches(container, nodes, patches, engine, onRoot) {
1012
1051
  for (const patch of patches) {
1013
1052
  switch (patch.type) {
1014
1053
  case "create": {
1015
- const el = createElement(patch.element_type, patch.props || {});
1054
+ const el = createElement(patch.elementType, patch.props || {});
1016
1055
  el.dataset.hypenId = patch.id;
1017
1056
  el.__hypenEngine = engine;
1018
1057
  nodes.set(patch.id, el);
@@ -1033,10 +1072,10 @@ function applyPatches(container, nodes, patches, engine, onRoot) {
1033
1072
  break;
1034
1073
  }
1035
1074
  case "insert": {
1036
- const parentId = patch.parent_id;
1075
+ const parentId = patch.parentId;
1037
1076
  const parent = parentId === "root" ? container : nodes.get(parentId);
1038
1077
  const child = nodes.get(patch.id);
1039
- const beforeId = patch.before_id;
1078
+ const beforeId = patch.beforeId;
1040
1079
  if (parent && child) {
1041
1080
  if (parentId === "root") {
1042
1081
  onRoot(patch.id);
@@ -1055,10 +1094,10 @@ function applyPatches(container, nodes, patches, engine, onRoot) {
1055
1094
  break;
1056
1095
  }
1057
1096
  case "move": {
1058
- const parentId = patch.parent_id;
1097
+ const parentId = patch.parentId;
1059
1098
  const parent = parentId === "root" ? container : nodes.get(parentId);
1060
1099
  const child = nodes.get(patch.id);
1061
- const beforeId = patch.before_id;
1100
+ const beforeId = patch.beforeId;
1062
1101
  if (parent && child) {
1063
1102
  if (beforeId) {
1064
1103
  const before = nodes.get(beforeId);
@@ -1192,8 +1231,9 @@ function disconnectHypenApp(element) {
1192
1231
  activeInstances.delete(element);
1193
1232
  }
1194
1233
  }
1195
- var activeInstances, hypenAppHandler;
1234
+ var log2, activeInstances, hypenAppHandler;
1196
1235
  var init_hypenapp = __esm(() => {
1236
+ log2 = frameworkLoggers2.remote;
1197
1237
  activeInstances = new WeakMap;
1198
1238
  hypenAppHandler = {
1199
1239
  create() {
@@ -1205,7 +1245,7 @@ var init_hypenapp = __esm(() => {
1205
1245
  applyProps(element, props) {
1206
1246
  const url = props["0"] || props.url;
1207
1247
  if (!url || typeof url !== "string") {
1208
- console.error("[HypenApp] URL is required");
1248
+ log2.error("HypenApp: URL is required");
1209
1249
  element.innerHTML = '<div style="color: red;">HypenApp: URL required</div>';
1210
1250
  return;
1211
1251
  }
@@ -1230,16 +1270,16 @@ var init_hypenapp = __esm(() => {
1230
1270
  element.innerHTML = '<div class="hypen-app-loading">Connecting...</div>';
1231
1271
  engine.connect().then(() => {
1232
1272
  element.innerHTML = "";
1233
- console.log(`[HypenApp] Connected to ${url}`);
1273
+ log2.debug(`HypenApp connected to ${url}`);
1234
1274
  }).catch((error) => {
1235
1275
  element.innerHTML = `<div style="color: red;">HypenApp: Connection failed - ${error.message}</div>`;
1236
- console.error("[HypenApp] Connection failed:", error);
1276
+ log2.error("HypenApp connection failed:", error);
1237
1277
  });
1238
1278
  engine.onDisconnect(() => {
1239
- console.log("[HypenApp] Disconnected");
1279
+ log2.debug("HypenApp disconnected");
1240
1280
  });
1241
1281
  engine.onError((error) => {
1242
- console.error("[HypenApp] Error:", error);
1282
+ log2.error("HypenApp error:", error);
1243
1283
  });
1244
1284
  const observer = new MutationObserver((mutations) => {
1245
1285
  for (const mutation of mutations) {
@@ -1248,7 +1288,7 @@ var init_hypenapp = __esm(() => {
1248
1288
  engine.disconnect();
1249
1289
  activeInstances.delete(element);
1250
1290
  observer.disconnect();
1251
- console.log("[HypenApp] Cleaned up");
1291
+ log2.debug("HypenApp cleaned up");
1252
1292
  return;
1253
1293
  }
1254
1294
  }
@@ -1261,149 +1301,306 @@ var init_hypenapp = __esm(() => {
1261
1301
  };
1262
1302
  });
1263
1303
 
1304
+ // src/dom/components/index.ts
1305
+ class ComponentRegistry {
1306
+ handlers = new Map;
1307
+ constructor() {
1308
+ this.registerDefaults();
1309
+ }
1310
+ register(type, handler) {
1311
+ this.handlers.set(type.toLowerCase(), handler);
1312
+ }
1313
+ get(type) {
1314
+ return this.handlers.get(type.toLowerCase());
1315
+ }
1316
+ createElement(type, props = {}) {
1317
+ const handler = this.get(type);
1318
+ if (!handler)
1319
+ return null;
1320
+ const element = handler.create();
1321
+ if (handler.applyProps) {
1322
+ handler.applyProps(element, props);
1323
+ }
1324
+ return element;
1325
+ }
1326
+ registerDefaults() {
1327
+ const { columnHandler: columnHandler2 } = (init_column(), __toCommonJS(exports_column));
1328
+ const { rowHandler: rowHandler2 } = (init_row(), __toCommonJS(exports_row));
1329
+ const { textHandler: textHandler2 } = (init_text(), __toCommonJS(exports_text));
1330
+ const { imageHandler: imageHandler2 } = (init_image(), __toCommonJS(exports_image));
1331
+ const { buttonHandler: buttonHandler2 } = (init_button(), __toCommonJS(exports_button));
1332
+ const { containerHandler: containerHandler2 } = (init_container(), __toCommonJS(exports_container));
1333
+ const { centerHandler: centerHandler2 } = (init_center(), __toCommonJS(exports_center));
1334
+ const { listHandler: listHandler2 } = (init_list(), __toCommonJS(exports_list));
1335
+ const { inputHandler: inputHandler2 } = (init_input(), __toCommonJS(exports_input));
1336
+ const { linkHandler: linkHandler2 } = (init_link(), __toCommonJS(exports_link));
1337
+ const { textareaHandler: textareaHandler2 } = (init_textarea(), __toCommonJS(exports_textarea));
1338
+ const { checkboxHandler: checkboxHandler2 } = (init_checkbox(), __toCommonJS(exports_checkbox));
1339
+ const { selectHandler: selectHandler2 } = (init_select(), __toCommonJS(exports_select));
1340
+ const { spacerHandler: spacerHandler2 } = (init_spacer(), __toCommonJS(exports_spacer));
1341
+ const { stackHandler: stackHandler2 } = (init_stack(), __toCommonJS(exports_stack));
1342
+ const { dividerHandler: dividerHandler2 } = (init_divider(), __toCommonJS(exports_divider));
1343
+ const { gridHandler: gridHandler2 } = (init_grid(), __toCommonJS(exports_grid));
1344
+ const { cardHandler: cardHandler2 } = (init_card(), __toCommonJS(exports_card));
1345
+ const { headingHandler: headingHandler2 } = (init_heading(), __toCommonJS(exports_heading));
1346
+ const { switchHandler: switchHandler2 } = (init_switch(), __toCommonJS(exports_switch));
1347
+ const { sliderHandler: sliderHandler2 } = (init_slider(), __toCommonJS(exports_slider));
1348
+ const { spinnerHandler: spinnerHandler2 } = (init_spinner(), __toCommonJS(exports_spinner));
1349
+ const { badgeHandler: badgeHandler2 } = (init_badge(), __toCommonJS(exports_badge));
1350
+ const { avatarHandler: avatarHandler2 } = (init_avatar(), __toCommonJS(exports_avatar));
1351
+ const { progressBarHandler: progressBarHandler2 } = (init_progressbar(), __toCommonJS(exports_progressbar));
1352
+ const { videoHandler: videoHandler2 } = (init_video(), __toCommonJS(exports_video));
1353
+ const { audioHandler: audioHandler2 } = (init_audio(), __toCommonJS(exports_audio));
1354
+ const { paragraphHandler: paragraphHandler2 } = (init_paragraph(), __toCommonJS(exports_paragraph));
1355
+ const { routerHandler: routerHandler2 } = (init_router(), __toCommonJS(exports_router));
1356
+ const { routeHandler: routeHandler2 } = (init_route(), __toCommonJS(exports_route));
1357
+ const { hypenAppHandler: hypenAppHandler2 } = (init_hypenapp(), __toCommonJS(exports_hypenapp));
1358
+ this.register("column", columnHandler2);
1359
+ this.register("row", rowHandler2);
1360
+ this.register("text", textHandler2);
1361
+ this.register("image", imageHandler2);
1362
+ this.register("button", buttonHandler2);
1363
+ this.register("container", containerHandler2);
1364
+ this.register("box", containerHandler2);
1365
+ this.register("center", centerHandler2);
1366
+ this.register("list", listHandler2);
1367
+ this.register("input", inputHandler2);
1368
+ this.register("link", linkHandler2);
1369
+ this.register("textarea", textareaHandler2);
1370
+ this.register("checkbox", checkboxHandler2);
1371
+ this.register("select", selectHandler2);
1372
+ this.register("spacer", spacerHandler2);
1373
+ this.register("stack", stackHandler2);
1374
+ this.register("divider", dividerHandler2);
1375
+ this.register("grid", gridHandler2);
1376
+ this.register("card", cardHandler2);
1377
+ this.register("heading", headingHandler2);
1378
+ this.register("switch", switchHandler2);
1379
+ this.register("slider", sliderHandler2);
1380
+ this.register("spinner", spinnerHandler2);
1381
+ this.register("badge", badgeHandler2);
1382
+ this.register("avatar", avatarHandler2);
1383
+ this.register("progressbar", progressBarHandler2);
1384
+ this.register("video", videoHandler2);
1385
+ this.register("audio", audioHandler2);
1386
+ this.register("paragraph", paragraphHandler2);
1387
+ this.register("router", routerHandler2);
1388
+ this.register("route", routeHandler2);
1389
+ this.register("hypenapp", hypenAppHandler2);
1390
+ }
1391
+ }
1392
+
1264
1393
  // src/dom/applicators/padding.ts
1265
- var exports_padding = {};
1266
- __export(exports_padding, {
1267
- paddingHandler: () => paddingHandler
1268
- });
1394
+ var getNumericValue = (value) => {
1395
+ if (typeof value === "number")
1396
+ return value;
1397
+ if (typeof value === "object" && value["0"] !== undefined)
1398
+ return Number(value["0"]);
1399
+ if (typeof value === "string")
1400
+ return parseFloat(value);
1401
+ return null;
1402
+ };
1269
1403
  var paddingHandler = (el, value) => {
1270
1404
  if (typeof value === "number") {
1271
1405
  el.style.padding = `${value}px`;
1272
1406
  } else if (typeof value === "object") {
1273
- if (value.left !== undefined)
1274
- el.style.paddingLeft = `${value.left}px`;
1275
- if (value.right !== undefined)
1276
- el.style.paddingRight = `${value.right}px`;
1277
- if (value.top !== undefined)
1278
- el.style.paddingTop = `${value.top}px`;
1279
- if (value.bottom !== undefined)
1280
- el.style.paddingBottom = `${value.bottom}px`;
1407
+ if (value["0"] !== undefined && Object.keys(value).length === 1) {
1408
+ el.style.padding = `${value["0"]}px`;
1409
+ } else {
1410
+ if (value.left !== undefined)
1411
+ el.style.paddingLeft = `${value.left}px`;
1412
+ if (value.right !== undefined)
1413
+ el.style.paddingRight = `${value.right}px`;
1414
+ if (value.top !== undefined)
1415
+ el.style.paddingTop = `${value.top}px`;
1416
+ if (value.bottom !== undefined)
1417
+ el.style.paddingBottom = `${value.bottom}px`;
1418
+ }
1281
1419
  } else {
1282
1420
  el.style.padding = String(value);
1283
1421
  }
1284
1422
  };
1423
+ var paddingTopHandler = (el, value) => {
1424
+ const v = getNumericValue(value);
1425
+ if (v !== null)
1426
+ el.style.paddingTop = `${v}px`;
1427
+ };
1428
+ var paddingBottomHandler = (el, value) => {
1429
+ const v = getNumericValue(value);
1430
+ if (v !== null)
1431
+ el.style.paddingBottom = `${v}px`;
1432
+ };
1433
+ var paddingLeftHandler = (el, value) => {
1434
+ const v = getNumericValue(value);
1435
+ if (v !== null)
1436
+ el.style.paddingLeft = `${v}px`;
1437
+ };
1438
+ var paddingRightHandler = (el, value) => {
1439
+ const v = getNumericValue(value);
1440
+ if (v !== null)
1441
+ el.style.paddingRight = `${v}px`;
1442
+ };
1443
+ var paddingHorizontalHandler = (el, value) => {
1444
+ const v = getNumericValue(value);
1445
+ if (v !== null) {
1446
+ el.style.paddingLeft = `${v}px`;
1447
+ el.style.paddingRight = `${v}px`;
1448
+ }
1449
+ };
1450
+ var paddingVerticalHandler = (el, value) => {
1451
+ const v = getNumericValue(value);
1452
+ if (v !== null) {
1453
+ el.style.paddingTop = `${v}px`;
1454
+ el.style.paddingBottom = `${v}px`;
1455
+ }
1456
+ };
1285
1457
 
1286
1458
  // src/dom/applicators/margin.ts
1287
- var exports_margin = {};
1288
- __export(exports_margin, {
1289
- marginHandler: () => marginHandler
1290
- });
1459
+ var getNumericValue2 = (value) => {
1460
+ if (typeof value === "number")
1461
+ return value;
1462
+ if (typeof value === "object" && value["0"] !== undefined)
1463
+ return Number(value["0"]);
1464
+ if (typeof value === "string")
1465
+ return parseFloat(value);
1466
+ return null;
1467
+ };
1291
1468
  var marginHandler = (el, value) => {
1292
1469
  if (typeof value === "number") {
1293
1470
  el.style.margin = `${value}px`;
1294
1471
  } else if (typeof value === "object") {
1295
- if (value.left !== undefined)
1296
- el.style.marginLeft = `${value.left}px`;
1297
- if (value.right !== undefined)
1298
- el.style.marginRight = `${value.right}px`;
1299
- if (value.top !== undefined)
1300
- el.style.marginTop = `${value.top}px`;
1301
- if (value.bottom !== undefined)
1302
- el.style.marginBottom = `${value.bottom}px`;
1472
+ if (value["0"] !== undefined && Object.keys(value).length === 1) {
1473
+ el.style.margin = `${value["0"]}px`;
1474
+ } else {
1475
+ if (value.left !== undefined)
1476
+ el.style.marginLeft = `${value.left}px`;
1477
+ if (value.right !== undefined)
1478
+ el.style.marginRight = `${value.right}px`;
1479
+ if (value.top !== undefined)
1480
+ el.style.marginTop = `${value.top}px`;
1481
+ if (value.bottom !== undefined)
1482
+ el.style.marginBottom = `${value.bottom}px`;
1483
+ }
1303
1484
  } else {
1304
1485
  el.style.margin = String(value);
1305
1486
  }
1306
1487
  };
1488
+ var marginTopHandler = (el, value) => {
1489
+ const v = getNumericValue2(value);
1490
+ if (v !== null)
1491
+ el.style.marginTop = `${v}px`;
1492
+ };
1493
+ var marginBottomHandler = (el, value) => {
1494
+ const v = getNumericValue2(value);
1495
+ if (v !== null)
1496
+ el.style.marginBottom = `${v}px`;
1497
+ };
1498
+ var marginLeftHandler = (el, value) => {
1499
+ const v = getNumericValue2(value);
1500
+ if (v !== null)
1501
+ el.style.marginLeft = `${v}px`;
1502
+ };
1503
+ var marginRightHandler = (el, value) => {
1504
+ const v = getNumericValue2(value);
1505
+ if (v !== null)
1506
+ el.style.marginRight = `${v}px`;
1507
+ };
1508
+ var marginHorizontalHandler = (el, value) => {
1509
+ const v = getNumericValue2(value);
1510
+ if (v !== null) {
1511
+ el.style.marginLeft = `${v}px`;
1512
+ el.style.marginRight = `${v}px`;
1513
+ }
1514
+ };
1515
+ var marginVerticalHandler = (el, value) => {
1516
+ const v = getNumericValue2(value);
1517
+ if (v !== null) {
1518
+ el.style.marginTop = `${v}px`;
1519
+ el.style.marginBottom = `${v}px`;
1520
+ }
1521
+ };
1307
1522
 
1308
1523
  // src/dom/applicators/color.ts
1309
- var exports_color = {};
1310
- __export(exports_color, {
1311
- colorHandlers: () => colorHandlers
1312
- });
1313
- var colorHandlers;
1314
- var init_color = __esm(() => {
1315
- colorHandlers = {
1316
- color: (el, value) => {
1317
- el.style.color = String(value);
1318
- },
1319
- backgroundColor: (el, value) => {
1320
- el.style.backgroundColor = String(value);
1321
- },
1322
- borderColor: (el, value) => {
1323
- el.style.borderColor = String(value);
1324
- },
1325
- opacity: (el, value) => {
1326
- el.style.opacity = String(value);
1327
- }
1328
- };
1329
- });
1524
+ var colorHandlers = {
1525
+ color: (el, value) => {
1526
+ el.style.color = String(value);
1527
+ },
1528
+ backgroundColor: (el, value) => {
1529
+ el.style.backgroundColor = String(value);
1530
+ },
1531
+ borderColor: (el, value) => {
1532
+ el.style.borderColor = String(value);
1533
+ },
1534
+ opacity: (el, value) => {
1535
+ el.style.opacity = String(value);
1536
+ }
1537
+ };
1330
1538
 
1331
1539
  // src/dom/applicators/border.ts
1332
- var exports_border = {};
1333
- __export(exports_border, {
1334
- borderHandlers: () => borderHandlers
1335
- });
1336
- var borderHandlers;
1337
- var init_border = __esm(() => {
1338
- borderHandlers = {
1339
- border: (el, value) => {
1340
- if (typeof value === "number") {
1341
- el.style.borderWidth = `${value}px`;
1342
- el.style.borderStyle = "solid";
1343
- } else if (typeof value === "object" && value !== null) {
1344
- const obj = value;
1345
- if (obj.width !== undefined) {
1346
- el.style.borderWidth = typeof obj.width === "number" ? `${obj.width}px` : String(obj.width);
1347
- }
1348
- if (obj.color !== undefined) {
1349
- el.style.borderColor = String(obj.color);
1350
- }
1351
- if (obj.style !== undefined) {
1352
- el.style.borderStyle = String(obj.style);
1353
- } else {
1354
- el.style.borderStyle = "solid";
1355
- }
1356
- if (obj.radius !== undefined) {
1357
- el.style.borderRadius = typeof obj.radius === "number" ? `${obj.radius}px` : String(obj.radius);
1358
- }
1359
- } else if (typeof value === "string") {
1360
- el.style.border = value;
1361
- }
1362
- },
1363
- borderWidth: (el, value) => {
1364
- el.style.borderWidth = typeof value === "number" ? `${value}px` : String(value);
1365
- },
1366
- borderStyle: (el, value) => {
1367
- el.style.borderStyle = String(value);
1368
- },
1369
- borderRadius: (el, value) => {
1370
- if (typeof value === "number") {
1371
- el.style.borderRadius = `${value}px`;
1372
- } else if (typeof value === "object" && value !== null) {
1373
- const obj = value;
1374
- const topLeft = obj.topLeft ?? obj.topStart ?? 0;
1375
- const topRight = obj.topRight ?? obj.topEnd ?? 0;
1376
- const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
1377
- const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
1378
- const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
1379
- el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
1540
+ var borderHandlers = {
1541
+ border: (el, value) => {
1542
+ if (typeof value === "number") {
1543
+ el.style.borderWidth = `${value}px`;
1544
+ el.style.borderStyle = "solid";
1545
+ } else if (typeof value === "object" && value !== null) {
1546
+ const obj = value;
1547
+ if (obj.width !== undefined) {
1548
+ el.style.borderWidth = typeof obj.width === "number" ? `${obj.width}px` : String(obj.width);
1549
+ }
1550
+ if (obj.color !== undefined) {
1551
+ el.style.borderColor = String(obj.color);
1552
+ }
1553
+ if (obj.style !== undefined) {
1554
+ el.style.borderStyle = String(obj.style);
1380
1555
  } else {
1381
- el.style.borderRadius = String(value);
1556
+ el.style.borderStyle = "solid";
1382
1557
  }
1383
- },
1384
- cornerRadius: (el, value) => {
1385
- if (typeof value === "number") {
1386
- el.style.borderRadius = `${value}px`;
1387
- } else if (typeof value === "object" && value !== null) {
1388
- const obj = value;
1389
- const topLeft = obj.topLeft ?? obj.topStart ?? 0;
1390
- const topRight = obj.topRight ?? obj.topEnd ?? 0;
1391
- const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
1392
- const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
1393
- const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
1394
- el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
1395
- } else {
1396
- el.style.borderRadius = String(value);
1558
+ if (obj.radius !== undefined) {
1559
+ el.style.borderRadius = typeof obj.radius === "number" ? `${obj.radius}px` : String(obj.radius);
1397
1560
  }
1561
+ } else if (typeof value === "string") {
1562
+ el.style.border = value;
1398
1563
  }
1399
- };
1400
- });
1564
+ },
1565
+ borderWidth: (el, value) => {
1566
+ el.style.borderWidth = typeof value === "number" ? `${value}px` : String(value);
1567
+ },
1568
+ borderStyle: (el, value) => {
1569
+ el.style.borderStyle = String(value);
1570
+ },
1571
+ borderRadius: (el, value) => {
1572
+ if (typeof value === "number") {
1573
+ el.style.borderRadius = `${value}px`;
1574
+ } else if (typeof value === "object" && value !== null) {
1575
+ const obj = value;
1576
+ const topLeft = obj.topLeft ?? obj.topStart ?? 0;
1577
+ const topRight = obj.topRight ?? obj.topEnd ?? 0;
1578
+ const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
1579
+ const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
1580
+ const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
1581
+ el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
1582
+ } else {
1583
+ el.style.borderRadius = String(value);
1584
+ }
1585
+ },
1586
+ cornerRadius: (el, value) => {
1587
+ if (typeof value === "number") {
1588
+ el.style.borderRadius = `${value}px`;
1589
+ } else if (typeof value === "object" && value !== null) {
1590
+ const obj = value;
1591
+ const topLeft = obj.topLeft ?? obj.topStart ?? 0;
1592
+ const topRight = obj.topRight ?? obj.topEnd ?? 0;
1593
+ const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
1594
+ const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
1595
+ const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
1596
+ el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
1597
+ } else {
1598
+ el.style.borderRadius = String(value);
1599
+ }
1600
+ }
1601
+ };
1401
1602
 
1402
1603
  // src/dom/applicators/size.ts
1403
- var exports_size = {};
1404
- __export(exports_size, {
1405
- sizeHandlers: () => sizeHandlers
1406
- });
1407
1604
  function parseSizeValue(value) {
1408
1605
  if (value === null || value === undefined)
1409
1606
  return null;
@@ -1454,88 +1651,113 @@ function parseSizeValue(value) {
1454
1651
  return `${num}px`;
1455
1652
  }
1456
1653
  }
1457
- var sizeHandlers;
1458
- var init_size = __esm(() => {
1459
- sizeHandlers = {
1460
- width: (el, value) => {
1654
+ var sizeHandlers = {
1655
+ width: (el, value) => {
1656
+ const size = parseSizeValue(value);
1657
+ if (size)
1658
+ el.style.width = size;
1659
+ },
1660
+ height: (el, value) => {
1661
+ const size = parseSizeValue(value);
1662
+ if (size)
1663
+ el.style.height = size;
1664
+ },
1665
+ minWidth: (el, value) => {
1666
+ const size = parseSizeValue(value);
1667
+ if (size)
1668
+ el.style.minWidth = size;
1669
+ },
1670
+ minHeight: (el, value) => {
1671
+ const size = parseSizeValue(value);
1672
+ if (size)
1673
+ el.style.minHeight = size;
1674
+ },
1675
+ maxWidth: (el, value) => {
1676
+ const size = parseSizeValue(value);
1677
+ if (size)
1678
+ el.style.maxWidth = size;
1679
+ },
1680
+ maxHeight: (el, value) => {
1681
+ const size = parseSizeValue(value);
1682
+ if (size)
1683
+ el.style.maxHeight = size;
1684
+ },
1685
+ size: (el, value) => {
1686
+ if (typeof value === "object" && value !== null) {
1687
+ const obj = value;
1688
+ if (obj.width !== undefined) {
1689
+ const w = parseSizeValue(obj.width);
1690
+ if (w)
1691
+ el.style.width = w;
1692
+ }
1693
+ if (obj.height !== undefined) {
1694
+ const h = parseSizeValue(obj.height);
1695
+ if (h)
1696
+ el.style.height = h;
1697
+ }
1698
+ } else {
1461
1699
  const size = parseSizeValue(value);
1462
- if (size)
1700
+ if (size) {
1463
1701
  el.style.width = size;
1464
- },
1465
- height: (el, value) => {
1466
- const size = parseSizeValue(value);
1467
- if (size)
1468
1702
  el.style.height = size;
1469
- },
1470
- minWidth: (el, value) => {
1471
- const size = parseSizeValue(value);
1472
- if (size)
1473
- el.style.minWidth = size;
1474
- },
1475
- minHeight: (el, value) => {
1476
- const size = parseSizeValue(value);
1477
- if (size)
1478
- el.style.minHeight = size;
1479
- },
1480
- maxWidth: (el, value) => {
1481
- const size = parseSizeValue(value);
1482
- if (size)
1483
- el.style.maxWidth = size;
1484
- },
1485
- maxHeight: (el, value) => {
1486
- const size = parseSizeValue(value);
1487
- if (size)
1488
- el.style.maxHeight = size;
1489
- },
1490
- size: (el, value) => {
1491
- if (typeof value === "object" && value !== null) {
1492
- const obj = value;
1493
- if (obj.width !== undefined) {
1494
- const w = parseSizeValue(obj.width);
1495
- if (w)
1496
- el.style.width = w;
1497
- }
1498
- if (obj.height !== undefined) {
1499
- const h = parseSizeValue(obj.height);
1500
- if (h)
1501
- el.style.height = h;
1502
- }
1503
- } else {
1504
- const size = parseSizeValue(value);
1505
- if (size) {
1506
- el.style.width = size;
1507
- el.style.height = size;
1508
- }
1509
1703
  }
1510
- },
1511
- fillMaxWidth: (el, value) => {
1512
- if (value === false)
1513
- return;
1514
- const fraction = typeof value === "number" ? value : 1;
1515
- el.style.width = `${fraction * 100}%`;
1516
- },
1517
- fillMaxHeight: (el, value) => {
1518
- if (value === false)
1519
- return;
1520
- const fraction = typeof value === "number" ? value : 1;
1521
- el.style.height = `${fraction * 100}%`;
1522
- },
1523
- fillMaxSize: (el, value) => {
1524
- if (value === false)
1525
- return;
1526
- const fraction = typeof value === "number" ? value : 1;
1704
+ }
1705
+ },
1706
+ fillMaxWidth: (el, value) => {
1707
+ if (value === false)
1708
+ return;
1709
+ const fraction = typeof value === "number" ? value : 1;
1710
+ if (fraction === 1) {
1711
+ el.style.alignSelf = "stretch";
1712
+ el.style.width = "100%";
1713
+ el.style.minWidth = "0";
1714
+ } else {
1527
1715
  el.style.width = `${fraction * 100}%`;
1528
- el.style.height = `${fraction * 100}%`;
1529
1716
  }
1530
- };
1531
- });
1717
+ el.style.justifySelf = "stretch";
1718
+ },
1719
+ fillMaxHeight: (el, value) => {
1720
+ if (value === false)
1721
+ return;
1722
+ const fraction = typeof value === "number" ? value : 1;
1723
+ el.style.height = `${fraction * 100}%`;
1724
+ },
1725
+ fillMaxSize: (el, value) => {
1726
+ if (value === false)
1727
+ return;
1728
+ const fraction = typeof value === "number" ? value : 1;
1729
+ el.style.width = `${fraction * 100}%`;
1730
+ el.style.height = `${fraction * 100}%`;
1731
+ el.style.alignSelf = "stretch";
1732
+ el.style.minWidth = "0";
1733
+ }
1734
+ };
1532
1735
 
1533
1736
  // src/dom/applicators/font.ts
1534
- var exports_font = {};
1535
- __export(exports_font, {
1536
- fontHandlers: () => fontHandlers,
1537
- GoogleFonts: () => GoogleFonts
1538
- });
1737
+ var loadedGoogleFonts = new Set;
1738
+ var systemFontKeywords = new Set([
1739
+ "default",
1740
+ "system",
1741
+ "system-ui",
1742
+ "inherit",
1743
+ "initial",
1744
+ "unset",
1745
+ "serif",
1746
+ "sans-serif",
1747
+ "monospace",
1748
+ "cursive",
1749
+ "fantasy",
1750
+ "-apple-system",
1751
+ "BlinkMacSystemFont",
1752
+ "Segoe UI",
1753
+ "Arial",
1754
+ "Helvetica",
1755
+ "Times New Roman",
1756
+ "Georgia",
1757
+ "Courier New",
1758
+ "Verdana",
1759
+ "Tahoma"
1760
+ ]);
1539
1761
  function isSystemFont(fontName) {
1540
1762
  const normalized = fontName.toLowerCase().trim();
1541
1763
  return systemFontKeywords.has(normalized) || normalized.startsWith("-") || normalized.startsWith("ui-");
@@ -1565,91 +1787,59 @@ function processFontFamily(value) {
1565
1787
  return f;
1566
1788
  }).join(", ");
1567
1789
  }
1568
- var loadedGoogleFonts, systemFontKeywords, fontHandlers, GoogleFonts;
1569
- var init_font = __esm(() => {
1570
- loadedGoogleFonts = new Set;
1571
- systemFontKeywords = new Set([
1572
- "default",
1573
- "system",
1574
- "system-ui",
1575
- "inherit",
1576
- "initial",
1577
- "unset",
1578
- "serif",
1579
- "sans-serif",
1580
- "monospace",
1581
- "cursive",
1582
- "fantasy",
1583
- "-apple-system",
1584
- "BlinkMacSystemFont",
1585
- "Segoe UI",
1586
- "Arial",
1587
- "Helvetica",
1588
- "Times New Roman",
1589
- "Georgia",
1590
- "Courier New",
1591
- "Verdana",
1592
- "Tahoma"
1593
- ]);
1594
- fontHandlers = {
1595
- fontSize: (el, value) => {
1596
- el.style.fontSize = typeof value === "number" ? `${value}px` : String(value);
1597
- },
1598
- fontWeight: (el, value) => {
1599
- el.style.fontWeight = String(value);
1600
- },
1601
- fontFamily: (el, value) => {
1602
- const fontValue = String(value);
1603
- el.style.fontFamily = processFontFamily(fontValue);
1604
- },
1605
- textAlign: (el, value) => {
1606
- el.style.textAlign = String(value);
1607
- },
1608
- lineHeight: (el, value) => {
1609
- el.style.lineHeight = String(value);
1610
- },
1611
- fontStyle: (el, value) => {
1612
- el.style.fontStyle = String(value);
1613
- },
1614
- textTransform: (el, value) => {
1615
- el.style.textTransform = String(value);
1616
- }
1617
- };
1618
- GoogleFonts = {
1619
- preload: loadGoogleFont,
1620
- isLoaded: (fontName) => loadedGoogleFonts.has(fontName.trim()),
1621
- getLoadedFonts: () => Array.from(loadedGoogleFonts),
1622
- popular: [
1623
- "Roboto",
1624
- "Open Sans",
1625
- "Lato",
1626
- "Montserrat",
1627
- "Poppins",
1628
- "Inter",
1629
- "Nunito",
1630
- "Playfair Display",
1631
- "Merriweather",
1632
- "Source Code Pro",
1633
- "Fira Code",
1634
- "JetBrains Mono",
1635
- "Raleway",
1636
- "Ubuntu",
1637
- "Oswald",
1638
- "Quicksand",
1639
- "Work Sans",
1640
- "Rubik",
1641
- "Karla",
1642
- "DM Sans"
1643
- ]
1644
- };
1645
- });
1790
+ var fontHandlers = {
1791
+ fontSize: (el, value) => {
1792
+ el.style.fontSize = typeof value === "number" ? `${value}px` : String(value);
1793
+ },
1794
+ fontWeight: (el, value) => {
1795
+ el.style.fontWeight = String(value);
1796
+ },
1797
+ fontFamily: (el, value) => {
1798
+ const fontValue = String(value);
1799
+ el.style.fontFamily = processFontFamily(fontValue);
1800
+ },
1801
+ textAlign: (el, value) => {
1802
+ el.style.textAlign = String(value);
1803
+ },
1804
+ lineHeight: (el, value) => {
1805
+ el.style.lineHeight = String(value);
1806
+ },
1807
+ fontStyle: (el, value) => {
1808
+ el.style.fontStyle = String(value);
1809
+ },
1810
+ textTransform: (el, value) => {
1811
+ el.style.textTransform = String(value);
1812
+ }
1813
+ };
1814
+ var GoogleFonts = {
1815
+ preload: loadGoogleFont,
1816
+ isLoaded: (fontName) => loadedGoogleFonts.has(fontName.trim()),
1817
+ getLoadedFonts: () => Array.from(loadedGoogleFonts),
1818
+ popular: [
1819
+ "Roboto",
1820
+ "Open Sans",
1821
+ "Lato",
1822
+ "Montserrat",
1823
+ "Poppins",
1824
+ "Inter",
1825
+ "Nunito",
1826
+ "Playfair Display",
1827
+ "Merriweather",
1828
+ "Source Code Pro",
1829
+ "Fira Code",
1830
+ "JetBrains Mono",
1831
+ "Raleway",
1832
+ "Ubuntu",
1833
+ "Oswald",
1834
+ "Quicksand",
1835
+ "Work Sans",
1836
+ "Rubik",
1837
+ "Karla",
1838
+ "DM Sans"
1839
+ ]
1840
+ };
1646
1841
 
1647
1842
  // src/dom/applicators/layout.ts
1648
- var exports_layout = {};
1649
- __export(exports_layout, {
1650
- mapAlignmentValue: () => mapAlignmentValue,
1651
- layoutHandlers: () => layoutHandlers
1652
- });
1653
1843
  function mapAlignmentValue(value) {
1654
1844
  const v = String(value).toLowerCase();
1655
1845
  switch (v) {
@@ -1678,76 +1868,87 @@ function mapAlignmentValue(value) {
1678
1868
  return v;
1679
1869
  }
1680
1870
  }
1681
- var layoutHandlers;
1682
- var init_layout = __esm(() => {
1683
- layoutHandlers = {
1684
- verticalAlignment: (el, value) => {
1685
- const val = mapAlignmentValue(String(value));
1686
- const flexDirection = getComputedStyle(el).flexDirection;
1687
- if (flexDirection === "column" || flexDirection === "column-reverse") {
1688
- el.style.justifyContent = val;
1689
- } else {
1690
- el.style.alignItems = val;
1691
- }
1692
- },
1693
- horizontalAlignment: (el, value) => {
1694
- const val = mapAlignmentValue(String(value));
1695
- const flexDirection = getComputedStyle(el).flexDirection;
1696
- if (flexDirection === "column" || flexDirection === "column-reverse") {
1697
- el.style.alignItems = val;
1698
- } else {
1699
- el.style.justifyContent = val;
1871
+ var layoutHandlers = {
1872
+ verticalAlignment: (el, value) => {
1873
+ const val = mapAlignmentValue(String(value));
1874
+ const display = el.style.display || getComputedStyle(el).display;
1875
+ const flexDirection = el.style.flexDirection || getComputedStyle(el).flexDirection;
1876
+ if (display === "grid") {
1877
+ el.style.alignItems = val;
1878
+ } else if (flexDirection === "column" || flexDirection === "column-reverse") {
1879
+ el.style.justifyContent = val;
1880
+ } else {
1881
+ el.style.alignItems = val;
1882
+ }
1883
+ },
1884
+ horizontalAlignment: (el, value) => {
1885
+ const val = mapAlignmentValue(String(value));
1886
+ const display = el.style.display || getComputedStyle(el).display;
1887
+ const flexDirection = el.style.flexDirection || getComputedStyle(el).flexDirection;
1888
+ if (display === "grid") {
1889
+ el.style.justifyItems = val;
1890
+ } else if (flexDirection === "column" || flexDirection === "column-reverse") {
1891
+ el.style.alignItems = val;
1892
+ } else if (flexDirection === "row" || flexDirection === "row-reverse") {
1893
+ el.style.justifyContent = val;
1894
+ if (val !== "flex-start" && el.style.overflow !== "auto" && el.style.overflowX !== "auto") {
1895
+ el.style.width = "100%";
1700
1896
  }
1701
- },
1702
- horizontalAlign: (el, value) => {
1703
- el.style.justifyContent = mapAlignmentValue(String(value));
1704
- },
1705
- verticalAlign: (el, value) => {
1706
- el.style.alignItems = mapAlignmentValue(String(value));
1707
- },
1708
- gap: (el, value) => {
1709
- el.style.gap = typeof value === "number" ? `${value}px` : String(value);
1710
- },
1711
- weight: (el, value) => {
1712
- el.style.flex = String(value);
1713
- },
1714
- flex: (el, value) => {
1715
- el.style.flex = String(value);
1716
- },
1717
- flexGrow: (el, value) => {
1718
- el.style.flexGrow = String(value);
1719
- },
1720
- flexShrink: (el, value) => {
1721
- el.style.flexShrink = String(value);
1722
- },
1723
- cursor: (el, value) => {
1724
- el.style.cursor = String(value);
1725
- },
1726
- overflow: (el, value) => {
1897
+ } else {
1898
+ el.style.justifyContent = val;
1899
+ }
1900
+ },
1901
+ horizontalAlign: (el, value) => {
1902
+ el.style.justifyContent = mapAlignmentValue(String(value));
1903
+ },
1904
+ verticalAlign: (el, value) => {
1905
+ el.style.alignItems = mapAlignmentValue(String(value));
1906
+ },
1907
+ gap: (el, value) => {
1908
+ el.style.gap = typeof value === "number" ? `${value}px` : String(value);
1909
+ },
1910
+ weight: (el, value) => {
1911
+ el.style.flex = String(value);
1912
+ el.dataset.hypenFlex = "true";
1913
+ },
1914
+ flex: (el, value) => {
1915
+ el.style.flex = String(value);
1916
+ el.dataset.hypenFlex = "true";
1917
+ },
1918
+ flexGrow: (el, value) => {
1919
+ el.style.flexGrow = String(value);
1920
+ },
1921
+ flexShrink: (el, value) => {
1922
+ el.style.flexShrink = String(value);
1923
+ },
1924
+ cursor: (el, value) => {
1925
+ el.style.cursor = String(value);
1926
+ },
1927
+ overflow: (el, value) => {
1928
+ el.style.overflow = String(value);
1929
+ },
1930
+ scrollable: (el, value) => {
1931
+ if (value === true || value === "true") {
1932
+ el.style.overflow = "auto";
1933
+ } else if (value === false || value === "false") {
1934
+ el.style.overflow = "hidden";
1935
+ } else if (value === "vertical") {
1936
+ el.style.overflowX = "hidden";
1937
+ el.style.overflowY = "auto";
1938
+ } else if (value === "horizontal") {
1939
+ el.style.overflowX = "auto";
1940
+ el.style.overflowY = "hidden";
1941
+ } else if (value === "both") {
1942
+ el.style.overflow = "auto";
1943
+ } else {
1727
1944
  el.style.overflow = String(value);
1728
- },
1729
- scrollable: (el, value) => {
1730
- if (value === true || value === "true") {
1731
- el.style.overflow = "auto";
1732
- } else if (value === false || value === "false") {
1733
- el.style.overflow = "hidden";
1734
- } else if (value === "vertical") {
1735
- el.style.overflowX = "hidden";
1736
- el.style.overflowY = "auto";
1737
- } else if (value === "horizontal") {
1738
- el.style.overflowX = "auto";
1739
- el.style.overflowY = "hidden";
1740
- } else if (value === "both") {
1741
- el.style.overflow = "auto";
1742
- } else {
1743
- el.style.overflow = String(value);
1744
- }
1745
1945
  }
1746
- };
1747
- });
1946
+ }
1947
+ };
1748
1948
 
1749
1949
  // src/dom/element-data.ts
1750
- import { getElementDisposables } from "@hypen-space/core";
1950
+ import { getElementDisposables } from "@hypen-space/core/disposable";
1951
+ var elementDataMap = new WeakMap;
1751
1952
  function getHypenData(element) {
1752
1953
  let data = elementDataMap.get(element);
1753
1954
  if (!data) {
@@ -1817,6 +2018,9 @@ function disposeHypenElement(element) {
1817
2018
  } catch {}
1818
2019
  clearHypenData(element);
1819
2020
  }
2021
+ var HYPEN_ENGINE_SYMBOL = Symbol.for("hypen.engine");
2022
+ var REGISTERED_EVENTS_SYMBOL = Symbol.for("hypen.registeredEvents");
2023
+ var KEY_TARGET_SYMBOL = Symbol.for("hypen.keyTarget");
1820
2024
  function getLegacyEngine(element) {
1821
2025
  const engine = getEngine(element);
1822
2026
  if (engine)
@@ -1827,24 +2031,15 @@ function setLegacyEngine(element, engine) {
1827
2031
  setEngine(element, engine);
1828
2032
  element.__hypenEngine = engine;
1829
2033
  }
1830
- var elementDataMap, HYPEN_ENGINE_SYMBOL, REGISTERED_EVENTS_SYMBOL, KEY_TARGET_SYMBOL;
1831
- var init_element_data = __esm(() => {
1832
- elementDataMap = new WeakMap;
1833
- HYPEN_ENGINE_SYMBOL = Symbol.for("hypen.engine");
1834
- REGISTERED_EVENTS_SYMBOL = Symbol.for("hypen.registeredEvents");
1835
- KEY_TARGET_SYMBOL = Symbol.for("hypen.keyTarget");
1836
- });
1837
2034
 
1838
2035
  // src/dom/applicators/events.ts
1839
- var exports_events = {};
1840
- __export(exports_events, {
1841
- eventHandlers: () => eventHandlers
1842
- });
1843
2036
  import {
1844
2037
  getElementDisposables as getElementDisposables2,
1845
2038
  disposableListener,
1846
2039
  disposableTimeout
1847
- } from "@hypen-space/core";
2040
+ } from "@hypen-space/core/disposable";
2041
+ import { frameworkLoggers as frameworkLoggers3 } from "@hypen-space/core";
2042
+ var log3 = frameworkLoggers3.events;
1848
2043
  function toPlainObject(value) {
1849
2044
  if (value instanceof Map) {
1850
2045
  const obj = {};
@@ -1938,7 +2133,7 @@ function createEventHandler(eventType, options = {}) {
1938
2133
  return (element, value) => {
1939
2134
  const { actionName, payload: customPayload } = extractActionDetails(value);
1940
2135
  if (!actionName) {
1941
- console.warn(`[EventApplicator] ${eventType} requires an action reference starting with @, got:`, value);
2136
+ log3.warn(`${eventType} requires an action reference starting with @, got:`, value);
1942
2137
  return;
1943
2138
  }
1944
2139
  const disposables = getElementDisposables2(element);
@@ -1981,7 +2176,7 @@ function createKeyHandler(defaultKey = "Enter") {
1981
2176
  return (element, value) => {
1982
2177
  const { actionName, payload: customPayload } = extractActionDetails(value);
1983
2178
  if (!actionName) {
1984
- console.warn(`[EventApplicator] onKey requires an action reference starting with @, got:`, value);
2179
+ log3.warn(`onKey requires an action reference starting with @, got:`, value);
1985
2180
  return;
1986
2181
  }
1987
2182
  const disposables = getElementDisposables2(element);
@@ -2026,7 +2221,7 @@ function createLongClickHandler(thresholdMs = 500) {
2026
2221
  return (element, value) => {
2027
2222
  const { actionName, payload: customPayload } = extractActionDetails(value);
2028
2223
  if (!actionName) {
2029
- console.warn(`[EventApplicator] onLongClick requires an action reference starting with @, got:`, value);
2224
+ log3.warn(`onLongClick requires an action reference starting with @, got:`, value);
2030
2225
  return;
2031
2226
  }
2032
2227
  const disposables = getElementDisposables2(element);
@@ -2075,7 +2270,8 @@ var inputPayload = (event, element) => {
2075
2270
  value: target.value,
2076
2271
  input: target.value
2077
2272
  };
2078
- }, scrollPayload = (_event, element) => {
2273
+ };
2274
+ var scrollPayload = (_event, element) => {
2079
2275
  const scrollTop = element.scrollTop;
2080
2276
  const scrollHeight = element.scrollHeight;
2081
2277
  const clientHeight = element.clientHeight;
@@ -2095,11 +2291,13 @@ var inputPayload = (event, element) => {
2095
2291
  atBottom: scrollHeight - scrollTop === clientHeight,
2096
2292
  atTop: scrollTop === 0
2097
2293
  };
2098
- }, focusPayload = (event, element) => ({
2294
+ };
2295
+ var focusPayload = (event, element) => ({
2099
2296
  type: event.type,
2100
2297
  timestamp: Date.now(),
2101
2298
  value: element.value ?? undefined
2102
- }), mousePayload = (event, _element) => {
2299
+ });
2300
+ var mousePayload = (event, _element) => {
2103
2301
  const mouseEvent = event;
2104
2302
  return {
2105
2303
  type: event.type,
@@ -2107,637 +2305,495 @@ var inputPayload = (event, element) => {
2107
2305
  clientX: mouseEvent.clientX,
2108
2306
  clientY: mouseEvent.clientY
2109
2307
  };
2110
- }, eventHandlers;
2111
- var init_events = __esm(() => {
2112
- init_element_data();
2113
- eventHandlers = {
2114
- onClick: createEventHandler("click"),
2115
- onPress: createEventHandler("click"),
2116
- onChange: createEventHandler("change"),
2117
- onSubmit: createEventHandler("submit", { preventDefault: true }),
2118
- onInput: createEventHandler("input", { extractPayload: inputPayload }),
2119
- onKey: createKeyHandler("Enter"),
2120
- "onKey.key": (element, value) => {
2121
- setKeyTarget(element, String(value));
2122
- },
2123
- "onKey.action": createKeyHandler("Enter"),
2124
- onScroll: createEventHandler("scroll", {
2125
- throttleMs: 100,
2126
- passive: true,
2127
- extractPayload: scrollPayload
2128
- }),
2129
- onLongClick: createLongClickHandler(500),
2130
- onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
2131
- onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
2132
- onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
2133
- onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
2134
- };
2135
- });
2308
+ };
2309
+ var eventHandlers = {
2310
+ onClick: createEventHandler("click"),
2311
+ onPress: createEventHandler("click"),
2312
+ onChange: createEventHandler("change"),
2313
+ onSubmit: createEventHandler("submit", { preventDefault: true }),
2314
+ onInput: createEventHandler("input", { extractPayload: inputPayload }),
2315
+ onKey: createKeyHandler("Enter"),
2316
+ "onKey.key": (element, value) => {
2317
+ setKeyTarget(element, String(value));
2318
+ },
2319
+ "onKey.action": createKeyHandler("Enter"),
2320
+ onScroll: createEventHandler("scroll", {
2321
+ throttleMs: 100,
2322
+ passive: true,
2323
+ extractPayload: scrollPayload
2324
+ }),
2325
+ onLongClick: createLongClickHandler(500),
2326
+ onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
2327
+ onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
2328
+ onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
2329
+ onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
2330
+ };
2136
2331
 
2137
2332
  // src/dom/applicators/typography.ts
2138
- var exports_typography = {};
2139
- __export(exports_typography, {
2140
- typographyHandlers: () => typographyHandlers
2141
- });
2142
- var typographyHandlers;
2143
- var init_typography = __esm(() => {
2144
- typographyHandlers = {
2145
- textAlign: (el, value) => {
2146
- el.style.textAlign = String(value);
2147
- },
2148
- textTransform: (el, value) => {
2149
- el.style.textTransform = String(value);
2150
- },
2151
- textDecoration: (el, value) => {
2152
- el.style.textDecoration = String(value);
2153
- },
2154
- textDecorationColor: (el, value) => {
2155
- el.style.textDecorationColor = String(value);
2156
- },
2157
- textDecorationStyle: (el, value) => {
2158
- el.style.textDecorationStyle = String(value);
2159
- },
2160
- textDecorationThickness: (el, value) => {
2161
- el.style.textDecorationThickness = typeof value === "number" ? `${value}px` : String(value);
2162
- },
2163
- letterSpacing: (el, value) => {
2164
- el.style.letterSpacing = typeof value === "number" ? `${value}px` : String(value);
2165
- },
2166
- wordSpacing: (el, value) => {
2167
- el.style.wordSpacing = typeof value === "number" ? `${value}px` : String(value);
2168
- },
2169
- lineHeight: (el, value) => {
2170
- el.style.lineHeight = String(value);
2171
- },
2172
- textIndent: (el, value) => {
2173
- el.style.textIndent = typeof value === "number" ? `${value}px` : String(value);
2174
- },
2175
- textOverflow: (el, value) => {
2176
- el.style.textOverflow = String(value);
2177
- },
2178
- whiteSpace: (el, value) => {
2179
- el.style.whiteSpace = String(value);
2180
- },
2181
- wordBreak: (el, value) => {
2182
- el.style.wordBreak = String(value);
2183
- },
2184
- verticalAlign: (el, value) => {
2185
- el.style.verticalAlign = String(value);
2186
- },
2187
- fontVariant: (el, value) => {
2188
- el.style.fontVariant = String(value);
2189
- },
2190
- fontStretch: (el, value) => {
2191
- el.style.fontStretch = String(value);
2192
- },
2193
- fontStyle: (el, value) => {
2194
- el.style.fontStyle = String(value);
2195
- },
2196
- writingMode: (el, value) => {
2197
- el.style.writingMode = String(value);
2198
- },
2199
- maxLines: (el, value) => {
2200
- const lines = typeof value === "number" ? value : parseInt(String(value), 10);
2201
- if (!isNaN(lines) && lines > 0) {
2202
- el.style.display = "-webkit-box";
2203
- el.style.setProperty("-webkit-line-clamp", String(lines));
2204
- el.style.setProperty("-webkit-box-orient", "vertical");
2205
- el.style.overflow = "hidden";
2206
- }
2333
+ var typographyHandlers = {
2334
+ textAlign: (el, value) => {
2335
+ el.style.textAlign = String(value);
2336
+ },
2337
+ textTransform: (el, value) => {
2338
+ el.style.textTransform = String(value);
2339
+ },
2340
+ textDecoration: (el, value) => {
2341
+ el.style.textDecoration = String(value);
2342
+ },
2343
+ textDecorationColor: (el, value) => {
2344
+ el.style.textDecorationColor = String(value);
2345
+ },
2346
+ textDecorationStyle: (el, value) => {
2347
+ el.style.textDecorationStyle = String(value);
2348
+ },
2349
+ textDecorationThickness: (el, value) => {
2350
+ el.style.textDecorationThickness = typeof value === "number" ? `${value}px` : String(value);
2351
+ },
2352
+ letterSpacing: (el, value) => {
2353
+ el.style.letterSpacing = typeof value === "number" ? `${value}px` : String(value);
2354
+ },
2355
+ wordSpacing: (el, value) => {
2356
+ el.style.wordSpacing = typeof value === "number" ? `${value}px` : String(value);
2357
+ },
2358
+ lineHeight: (el, value) => {
2359
+ el.style.lineHeight = String(value);
2360
+ },
2361
+ textIndent: (el, value) => {
2362
+ el.style.textIndent = typeof value === "number" ? `${value}px` : String(value);
2363
+ },
2364
+ textOverflow: (el, value) => {
2365
+ el.style.textOverflow = String(value);
2366
+ },
2367
+ whiteSpace: (el, value) => {
2368
+ el.style.whiteSpace = String(value);
2369
+ },
2370
+ wordBreak: (el, value) => {
2371
+ el.style.wordBreak = String(value);
2372
+ },
2373
+ verticalAlign: (el, value) => {
2374
+ el.style.verticalAlign = String(value);
2375
+ },
2376
+ fontVariant: (el, value) => {
2377
+ el.style.fontVariant = String(value);
2378
+ },
2379
+ fontStretch: (el, value) => {
2380
+ el.style.fontStretch = String(value);
2381
+ },
2382
+ fontStyle: (el, value) => {
2383
+ el.style.fontStyle = String(value);
2384
+ },
2385
+ writingMode: (el, value) => {
2386
+ el.style.writingMode = String(value);
2387
+ },
2388
+ maxLines: (el, value) => {
2389
+ const lines = typeof value === "number" ? value : parseInt(String(value), 10);
2390
+ if (!isNaN(lines) && lines > 0) {
2391
+ el.style.display = "-webkit-box";
2392
+ el.style.setProperty("-webkit-line-clamp", String(lines));
2393
+ el.style.setProperty("-webkit-box-orient", "vertical");
2394
+ el.style.overflow = "hidden";
2207
2395
  }
2208
- };
2209
- });
2396
+ }
2397
+ };
2210
2398
 
2211
2399
  // src/dom/applicators/transform.ts
2212
- var exports_transform = {};
2213
- __export(exports_transform, {
2214
- transformHandlers: () => transformHandlers
2215
- });
2216
- var transformHandlers;
2217
- var init_transform = __esm(() => {
2218
- transformHandlers = {
2219
- transform: (el, value) => {
2220
- el.style.transform = String(value);
2221
- },
2222
- transformOrigin: (el, value) => {
2223
- el.style.transformOrigin = String(value);
2224
- },
2225
- translateX: (el, value) => {
2226
- const current = el.style.transform || "";
2227
- const val = typeof value === "number" ? `${value}px` : String(value);
2228
- el.style.transform = current ? `${current} translateX(${val})` : `translateX(${val})`;
2229
- },
2230
- translateY: (el, value) => {
2231
- const current = el.style.transform || "";
2232
- const val = typeof value === "number" ? `${value}px` : String(value);
2233
- el.style.transform = current ? `${current} translateY(${val})` : `translateY(${val})`;
2234
- },
2235
- translateZ: (el, value) => {
2236
- const current = el.style.transform || "";
2237
- const val = typeof value === "number" ? `${value}px` : String(value);
2238
- el.style.transform = current ? `${current} translateZ(${val})` : `translateZ(${val})`;
2239
- },
2240
- rotate: (el, value) => {
2241
- const current = el.style.transform || "";
2242
- const val = String(value);
2243
- el.style.transform = current ? `${current} rotate(${val})` : `rotate(${val})`;
2244
- },
2245
- rotateX: (el, value) => {
2246
- const current = el.style.transform || "";
2247
- const val = String(value);
2248
- el.style.transform = current ? `${current} rotateX(${val})` : `rotateX(${val})`;
2249
- },
2250
- rotateY: (el, value) => {
2251
- const current = el.style.transform || "";
2252
- const val = String(value);
2253
- el.style.transform = current ? `${current} rotateY(${val})` : `rotateY(${val})`;
2254
- },
2255
- rotateZ: (el, value) => {
2256
- const current = el.style.transform || "";
2257
- const val = String(value);
2258
- el.style.transform = current ? `${current} rotateZ(${val})` : `rotateZ(${val})`;
2259
- },
2260
- scale: (el, value) => {
2261
- const current = el.style.transform || "";
2262
- el.style.transform = current ? `${current} scale(${value})` : `scale(${value})`;
2263
- },
2264
- scaleX: (el, value) => {
2265
- const current = el.style.transform || "";
2266
- el.style.transform = current ? `${current} scaleX(${value})` : `scaleX(${value})`;
2267
- },
2268
- scaleY: (el, value) => {
2269
- const current = el.style.transform || "";
2270
- el.style.transform = current ? `${current} scaleY(${value})` : `scaleY(${value})`;
2271
- },
2272
- skew: (el, value) => {
2273
- const current = el.style.transform || "";
2274
- el.style.transform = current ? `${current} skew(${value})` : `skew(${value})`;
2275
- },
2276
- skewX: (el, value) => {
2277
- const current = el.style.transform || "";
2278
- el.style.transform = current ? `${current} skewX(${value})` : `skewX(${value})`;
2279
- },
2280
- skewY: (el, value) => {
2281
- const current = el.style.transform || "";
2282
- el.style.transform = current ? `${current} skewY(${value})` : `skewY(${value})`;
2283
- },
2284
- perspective: (el, value) => {
2285
- el.style.perspective = typeof value === "number" ? `${value}px` : String(value);
2286
- }
2287
- };
2288
- });
2400
+ var transformHandlers = {
2401
+ transform: (el, value) => {
2402
+ el.style.transform = String(value);
2403
+ },
2404
+ transformOrigin: (el, value) => {
2405
+ el.style.transformOrigin = String(value);
2406
+ },
2407
+ translateX: (el, value) => {
2408
+ const current = el.style.transform || "";
2409
+ const val = typeof value === "number" ? `${value}px` : String(value);
2410
+ el.style.transform = current ? `${current} translateX(${val})` : `translateX(${val})`;
2411
+ },
2412
+ translateY: (el, value) => {
2413
+ const current = el.style.transform || "";
2414
+ const val = typeof value === "number" ? `${value}px` : String(value);
2415
+ el.style.transform = current ? `${current} translateY(${val})` : `translateY(${val})`;
2416
+ },
2417
+ translateZ: (el, value) => {
2418
+ const current = el.style.transform || "";
2419
+ const val = typeof value === "number" ? `${value}px` : String(value);
2420
+ el.style.transform = current ? `${current} translateZ(${val})` : `translateZ(${val})`;
2421
+ },
2422
+ rotate: (el, value) => {
2423
+ const current = el.style.transform || "";
2424
+ const val = String(value);
2425
+ el.style.transform = current ? `${current} rotate(${val})` : `rotate(${val})`;
2426
+ },
2427
+ rotateX: (el, value) => {
2428
+ const current = el.style.transform || "";
2429
+ const val = String(value);
2430
+ el.style.transform = current ? `${current} rotateX(${val})` : `rotateX(${val})`;
2431
+ },
2432
+ rotateY: (el, value) => {
2433
+ const current = el.style.transform || "";
2434
+ const val = String(value);
2435
+ el.style.transform = current ? `${current} rotateY(${val})` : `rotateY(${val})`;
2436
+ },
2437
+ rotateZ: (el, value) => {
2438
+ const current = el.style.transform || "";
2439
+ const val = String(value);
2440
+ el.style.transform = current ? `${current} rotateZ(${val})` : `rotateZ(${val})`;
2441
+ },
2442
+ scale: (el, value) => {
2443
+ const current = el.style.transform || "";
2444
+ el.style.transform = current ? `${current} scale(${value})` : `scale(${value})`;
2445
+ },
2446
+ scaleX: (el, value) => {
2447
+ const current = el.style.transform || "";
2448
+ el.style.transform = current ? `${current} scaleX(${value})` : `scaleX(${value})`;
2449
+ },
2450
+ scaleY: (el, value) => {
2451
+ const current = el.style.transform || "";
2452
+ el.style.transform = current ? `${current} scaleY(${value})` : `scaleY(${value})`;
2453
+ },
2454
+ skew: (el, value) => {
2455
+ const current = el.style.transform || "";
2456
+ el.style.transform = current ? `${current} skew(${value})` : `skew(${value})`;
2457
+ },
2458
+ skewX: (el, value) => {
2459
+ const current = el.style.transform || "";
2460
+ el.style.transform = current ? `${current} skewX(${value})` : `skewX(${value})`;
2461
+ },
2462
+ skewY: (el, value) => {
2463
+ const current = el.style.transform || "";
2464
+ el.style.transform = current ? `${current} skewY(${value})` : `skewY(${value})`;
2465
+ },
2466
+ perspective: (el, value) => {
2467
+ el.style.perspective = typeof value === "number" ? `${value}px` : String(value);
2468
+ }
2469
+ };
2289
2470
 
2290
2471
  // src/dom/applicators/effects.ts
2291
- var exports_effects = {};
2292
- __export(exports_effects, {
2293
- effectsHandlers: () => effectsHandlers
2294
- });
2295
- var effectsHandlers;
2296
- var init_effects = __esm(() => {
2297
- effectsHandlers = {
2298
- boxShadow: (el, value) => {
2299
- if (typeof value === "string") {
2300
- el.style.boxShadow = value;
2301
- } else if (typeof value === "object" && value !== null) {
2302
- const obj = value;
2303
- const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
2304
- const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
2305
- const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "0px";
2306
- const spread = typeof obj.spread === "number" ? `${obj.spread}px` : obj.spread ?? "0px";
2307
- const color = obj.color ?? "rgba(0,0,0,0.2)";
2308
- const inset = obj.inset ? "inset " : "";
2309
- el.style.boxShadow = `${inset}${x} ${y} ${blur} ${spread} ${color}`;
2310
- } else if (typeof value === "number") {
2311
- el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
2312
- }
2313
- },
2314
- shadow: (el, value) => {
2315
- if (typeof value === "object" && value !== null) {
2316
- const obj = value;
2317
- const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
2318
- const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
2319
- const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "4px";
2320
- const color = obj.color ?? "rgba(0,0,0,0.2)";
2321
- el.style.boxShadow = `${x} ${y} ${blur} ${color}`;
2322
- } else if (typeof value === "number") {
2323
- el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
2324
- } else {
2325
- el.style.boxShadow = String(value);
2326
- }
2327
- },
2328
- elevation: (el, value) => {
2329
- const level = typeof value === "number" ? value : parseInt(String(value), 10);
2330
- if (!isNaN(level) && level >= 0) {
2331
- const y = level * 0.5;
2332
- const blur = level * 1.5;
2333
- const opacity = Math.min(0.1 + level * 0.02, 0.4);
2334
- el.style.boxShadow = `0 ${y}px ${blur}px rgba(0,0,0,${opacity})`;
2335
- }
2336
- },
2337
- textShadow: (el, value) => {
2338
- el.style.textShadow = String(value);
2339
- },
2340
- filter: (el, value) => {
2341
- el.style.filter = String(value);
2342
- },
2343
- backdropFilter: (el, value) => {
2344
- el.style.backdropFilter = String(value);
2345
- },
2346
- blur: (el, value) => {
2347
- const val = typeof value === "number" ? `${value}px` : String(value);
2348
- const current = el.style.filter || "";
2349
- el.style.filter = current ? `${current} blur(${val})` : `blur(${val})`;
2350
- },
2351
- brightness: (el, value) => {
2352
- const current = el.style.filter || "";
2353
- el.style.filter = current ? `${current} brightness(${value})` : `brightness(${value})`;
2354
- },
2355
- contrast: (el, value) => {
2356
- const current = el.style.filter || "";
2357
- el.style.filter = current ? `${current} contrast(${value})` : `contrast(${value})`;
2358
- },
2359
- grayscale: (el, value) => {
2360
- const current = el.style.filter || "";
2361
- el.style.filter = current ? `${current} grayscale(${value})` : `grayscale(${value})`;
2362
- },
2363
- hueRotate: (el, value) => {
2364
- const val = String(value);
2365
- const current = el.style.filter || "";
2366
- el.style.filter = current ? `${current} hue-rotate(${val})` : `hue-rotate(${val})`;
2367
- },
2368
- invert: (el, value) => {
2369
- const current = el.style.filter || "";
2370
- el.style.filter = current ? `${current} invert(${value})` : `invert(${value})`;
2371
- },
2372
- saturate: (el, value) => {
2373
- const current = el.style.filter || "";
2374
- el.style.filter = current ? `${current} saturate(${value})` : `saturate(${value})`;
2375
- },
2376
- sepia: (el, value) => {
2377
- const current = el.style.filter || "";
2378
- el.style.filter = current ? `${current} sepia(${value})` : `sepia(${value})`;
2379
- },
2380
- dropShadow: (el, value) => {
2381
- const current = el.style.filter || "";
2382
- el.style.filter = current ? `${current} drop-shadow(${value})` : `drop-shadow(${value})`;
2383
- },
2384
- mixBlendMode: (el, value) => {
2385
- el.style.mixBlendMode = String(value);
2386
- },
2387
- backgroundBlendMode: (el, value) => {
2388
- el.style.backgroundBlendMode = String(value);
2389
- },
2390
- clipPath: (el, value) => {
2391
- el.style.clipPath = String(value);
2392
- },
2393
- mask: (el, value) => {
2394
- el.style.mask = String(value);
2395
- },
2396
- maskImage: (el, value) => {
2397
- el.style.maskImage = String(value);
2472
+ var effectsHandlers = {
2473
+ boxShadow: (el, value) => {
2474
+ if (typeof value === "string") {
2475
+ el.style.boxShadow = value;
2476
+ } else if (typeof value === "object" && value !== null) {
2477
+ const obj = value;
2478
+ const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
2479
+ const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
2480
+ const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "0px";
2481
+ const spread = typeof obj.spread === "number" ? `${obj.spread}px` : obj.spread ?? "0px";
2482
+ const color = obj.color ?? "rgba(0,0,0,0.2)";
2483
+ const inset = obj.inset ? "inset " : "";
2484
+ el.style.boxShadow = `${inset}${x} ${y} ${blur} ${spread} ${color}`;
2485
+ } else if (typeof value === "number") {
2486
+ el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
2398
2487
  }
2399
- };
2400
- });
2488
+ },
2489
+ shadow: (el, value) => {
2490
+ if (typeof value === "object" && value !== null) {
2491
+ const obj = value;
2492
+ const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
2493
+ const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
2494
+ const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "4px";
2495
+ const color = obj.color ?? "rgba(0,0,0,0.2)";
2496
+ el.style.boxShadow = `${x} ${y} ${blur} ${color}`;
2497
+ } else if (typeof value === "number") {
2498
+ el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
2499
+ } else {
2500
+ el.style.boxShadow = String(value);
2501
+ }
2502
+ },
2503
+ elevation: (el, value) => {
2504
+ const level = typeof value === "number" ? value : parseInt(String(value), 10);
2505
+ if (!isNaN(level) && level >= 0) {
2506
+ const y = level * 0.5;
2507
+ const blur = level * 1.5;
2508
+ const opacity = Math.min(0.1 + level * 0.02, 0.4);
2509
+ el.style.boxShadow = `0 ${y}px ${blur}px rgba(0,0,0,${opacity})`;
2510
+ }
2511
+ },
2512
+ textShadow: (el, value) => {
2513
+ el.style.textShadow = String(value);
2514
+ },
2515
+ filter: (el, value) => {
2516
+ el.style.filter = String(value);
2517
+ },
2518
+ backdropFilter: (el, value) => {
2519
+ el.style.backdropFilter = String(value);
2520
+ },
2521
+ blur: (el, value) => {
2522
+ const val = typeof value === "number" ? `${value}px` : String(value);
2523
+ const current = el.style.filter || "";
2524
+ el.style.filter = current ? `${current} blur(${val})` : `blur(${val})`;
2525
+ },
2526
+ brightness: (el, value) => {
2527
+ const current = el.style.filter || "";
2528
+ el.style.filter = current ? `${current} brightness(${value})` : `brightness(${value})`;
2529
+ },
2530
+ contrast: (el, value) => {
2531
+ const current = el.style.filter || "";
2532
+ el.style.filter = current ? `${current} contrast(${value})` : `contrast(${value})`;
2533
+ },
2534
+ grayscale: (el, value) => {
2535
+ const current = el.style.filter || "";
2536
+ el.style.filter = current ? `${current} grayscale(${value})` : `grayscale(${value})`;
2537
+ },
2538
+ hueRotate: (el, value) => {
2539
+ const val = String(value);
2540
+ const current = el.style.filter || "";
2541
+ el.style.filter = current ? `${current} hue-rotate(${val})` : `hue-rotate(${val})`;
2542
+ },
2543
+ invert: (el, value) => {
2544
+ const current = el.style.filter || "";
2545
+ el.style.filter = current ? `${current} invert(${value})` : `invert(${value})`;
2546
+ },
2547
+ saturate: (el, value) => {
2548
+ const current = el.style.filter || "";
2549
+ el.style.filter = current ? `${current} saturate(${value})` : `saturate(${value})`;
2550
+ },
2551
+ sepia: (el, value) => {
2552
+ const current = el.style.filter || "";
2553
+ el.style.filter = current ? `${current} sepia(${value})` : `sepia(${value})`;
2554
+ },
2555
+ dropShadow: (el, value) => {
2556
+ const current = el.style.filter || "";
2557
+ el.style.filter = current ? `${current} drop-shadow(${value})` : `drop-shadow(${value})`;
2558
+ },
2559
+ mixBlendMode: (el, value) => {
2560
+ el.style.mixBlendMode = String(value);
2561
+ },
2562
+ backgroundBlendMode: (el, value) => {
2563
+ el.style.backgroundBlendMode = String(value);
2564
+ },
2565
+ clipPath: (el, value) => {
2566
+ el.style.clipPath = String(value);
2567
+ },
2568
+ mask: (el, value) => {
2569
+ el.style.mask = String(value);
2570
+ },
2571
+ maskImage: (el, value) => {
2572
+ el.style.maskImage = String(value);
2573
+ }
2574
+ };
2401
2575
 
2402
2576
  // src/dom/applicators/advanced-layout.ts
2403
- var exports_advanced_layout = {};
2404
- __export(exports_advanced_layout, {
2405
- advancedLayoutHandlers: () => advancedLayoutHandlers
2406
- });
2407
- var advancedLayoutHandlers;
2408
- var init_advanced_layout = __esm(() => {
2409
- init_layout();
2410
- advancedLayoutHandlers = {
2411
- flexDirection: (el, value) => {
2412
- el.style.flexDirection = String(value);
2413
- },
2414
- flexWrap: (el, value) => {
2415
- el.style.flexWrap = String(value);
2416
- },
2417
- flexBasis: (el, value) => {
2418
- el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
2419
- },
2420
- justifyContent: (el, value) => {
2421
- el.style.justifyContent = mapAlignmentValue(String(value));
2422
- },
2423
- alignItems: (el, value) => {
2424
- el.style.alignItems = mapAlignmentValue(String(value));
2425
- },
2426
- alignContent: (el, value) => {
2427
- el.style.alignContent = String(value);
2428
- },
2429
- alignSelf: (el, value) => {
2430
- el.style.alignSelf = String(value);
2431
- },
2432
- order: (el, value) => {
2433
- el.style.order = String(value);
2434
- },
2435
- gridTemplateColumns: (el, value) => {
2577
+ var advancedLayoutHandlers = {
2578
+ flexDirection: (el, value) => {
2579
+ el.style.flexDirection = String(value);
2580
+ },
2581
+ flexWrap: (el, value) => {
2582
+ el.style.flexWrap = String(value);
2583
+ },
2584
+ flexBasis: (el, value) => {
2585
+ el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
2586
+ },
2587
+ justifyContent: (el, value) => {
2588
+ el.style.justifyContent = mapAlignmentValue(String(value));
2589
+ },
2590
+ alignItems: (el, value) => {
2591
+ el.style.alignItems = mapAlignmentValue(String(value));
2592
+ },
2593
+ alignContent: (el, value) => {
2594
+ el.style.alignContent = String(value);
2595
+ },
2596
+ alignSelf: (el, value) => {
2597
+ el.style.alignSelf = String(value);
2598
+ },
2599
+ order: (el, value) => {
2600
+ el.style.order = String(value);
2601
+ },
2602
+ gridTemplateColumns: (el, value) => {
2603
+ el.style.gridTemplateColumns = String(value);
2604
+ },
2605
+ gridTemplateRows: (el, value) => {
2606
+ el.style.gridTemplateRows = String(value);
2607
+ },
2608
+ gridColumns: (el, value) => {
2609
+ if (typeof value === "number") {
2610
+ el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
2611
+ } else {
2436
2612
  el.style.gridTemplateColumns = String(value);
2437
- },
2438
- gridTemplateRows: (el, value) => {
2613
+ }
2614
+ },
2615
+ gridRows: (el, value) => {
2616
+ if (typeof value === "number") {
2617
+ el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
2618
+ } else {
2439
2619
  el.style.gridTemplateRows = String(value);
2440
- },
2441
- gridColumns: (el, value) => {
2442
- if (typeof value === "number") {
2443
- el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
2444
- } else {
2445
- el.style.gridTemplateColumns = String(value);
2446
- }
2447
- },
2448
- gridRows: (el, value) => {
2449
- if (typeof value === "number") {
2450
- el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
2451
- } else {
2452
- el.style.gridTemplateRows = String(value);
2453
- }
2454
- },
2455
- gridTemplateAreas: (el, value) => {
2456
- el.style.gridTemplateAreas = String(value);
2457
- },
2458
- gridColumn: (el, value) => {
2459
- el.style.gridColumn = String(value);
2460
- },
2461
- gridRow: (el, value) => {
2462
- el.style.gridRow = String(value);
2463
- },
2464
- gridArea: (el, value) => {
2465
- el.style.gridArea = String(value);
2466
- },
2467
- gridAutoFlow: (el, value) => {
2468
- el.style.gridAutoFlow = String(value);
2469
- },
2470
- gridAutoColumns: (el, value) => {
2471
- el.style.gridAutoColumns = String(value);
2472
- },
2473
- gridAutoRows: (el, value) => {
2474
- el.style.gridAutoRows = String(value);
2475
- },
2476
- rowGap: (el, value) => {
2477
- el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
2478
- },
2479
- columnGap: (el, value) => {
2480
- el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
2481
- },
2482
- placeItems: (el, value) => {
2483
- el.style.placeItems = String(value);
2484
- },
2485
- placeContent: (el, value) => {
2486
- el.style.placeContent = String(value);
2487
- },
2488
- placeSelf: (el, value) => {
2489
- el.style.placeSelf = String(value);
2490
- },
2491
- position: (el, value) => {
2492
- el.style.position = String(value);
2493
- },
2494
- top: (el, value) => {
2495
- el.style.top = typeof value === "number" ? `${value}px` : String(value);
2496
- },
2497
- right: (el, value) => {
2498
- el.style.right = typeof value === "number" ? `${value}px` : String(value);
2499
- },
2500
- bottom: (el, value) => {
2501
- el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
2502
- },
2503
- left: (el, value) => {
2504
- el.style.left = typeof value === "number" ? `${value}px` : String(value);
2505
- },
2506
- inset: (el, value) => {
2507
- el.style.inset = typeof value === "number" ? `${value}px` : String(value);
2508
- },
2509
- zIndex: (el, value) => {
2510
- el.style.zIndex = String(value);
2511
2620
  }
2512
- };
2513
- });
2621
+ },
2622
+ gridTemplateAreas: (el, value) => {
2623
+ el.style.gridTemplateAreas = String(value);
2624
+ },
2625
+ gridColumn: (el, value) => {
2626
+ el.style.gridColumn = String(value);
2627
+ },
2628
+ gridRow: (el, value) => {
2629
+ el.style.gridRow = String(value);
2630
+ },
2631
+ gridArea: (el, value) => {
2632
+ el.style.gridArea = String(value);
2633
+ },
2634
+ gridAutoFlow: (el, value) => {
2635
+ el.style.gridAutoFlow = String(value);
2636
+ },
2637
+ gridAutoColumns: (el, value) => {
2638
+ el.style.gridAutoColumns = String(value);
2639
+ },
2640
+ gridAutoRows: (el, value) => {
2641
+ el.style.gridAutoRows = String(value);
2642
+ },
2643
+ rowGap: (el, value) => {
2644
+ el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
2645
+ },
2646
+ columnGap: (el, value) => {
2647
+ el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
2648
+ },
2649
+ placeItems: (el, value) => {
2650
+ el.style.placeItems = String(value);
2651
+ },
2652
+ placeContent: (el, value) => {
2653
+ el.style.placeContent = String(value);
2654
+ },
2655
+ placeSelf: (el, value) => {
2656
+ el.style.placeSelf = String(value);
2657
+ },
2658
+ position: (el, value) => {
2659
+ el.style.position = String(value);
2660
+ },
2661
+ top: (el, value) => {
2662
+ el.style.top = typeof value === "number" ? `${value}px` : String(value);
2663
+ },
2664
+ right: (el, value) => {
2665
+ el.style.right = typeof value === "number" ? `${value}px` : String(value);
2666
+ },
2667
+ bottom: (el, value) => {
2668
+ el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
2669
+ },
2670
+ left: (el, value) => {
2671
+ el.style.left = typeof value === "number" ? `${value}px` : String(value);
2672
+ },
2673
+ inset: (el, value) => {
2674
+ el.style.inset = typeof value === "number" ? `${value}px` : String(value);
2675
+ },
2676
+ zIndex: (el, value) => {
2677
+ el.style.zIndex = String(value);
2678
+ }
2679
+ };
2514
2680
 
2515
2681
  // src/dom/applicators/background.ts
2516
- var exports_background = {};
2517
- __export(exports_background, {
2518
- backgroundHandlers: () => backgroundHandlers
2519
- });
2520
- var backgroundHandlers;
2521
- var init_background = __esm(() => {
2522
- backgroundHandlers = {
2523
- backgroundImage: (el, value) => {
2524
- el.style.backgroundImage = String(value);
2525
- },
2526
- backgroundSize: (el, value) => {
2527
- el.style.backgroundSize = String(value);
2528
- },
2529
- backgroundPosition: (el, value) => {
2530
- el.style.backgroundPosition = String(value);
2531
- },
2532
- backgroundRepeat: (el, value) => {
2533
- el.style.backgroundRepeat = String(value);
2534
- },
2535
- backgroundAttachment: (el, value) => {
2536
- el.style.backgroundAttachment = String(value);
2537
- },
2538
- backgroundClip: (el, value) => {
2539
- el.style.backgroundClip = String(value);
2540
- },
2541
- backgroundOrigin: (el, value) => {
2542
- el.style.backgroundOrigin = String(value);
2543
- },
2544
- linearGradient: (el, value) => {
2545
- el.style.backgroundImage = `linear-gradient(${value})`;
2546
- },
2547
- radialGradient: (el, value) => {
2548
- el.style.backgroundImage = `radial-gradient(${value})`;
2549
- },
2550
- conicGradient: (el, value) => {
2551
- el.style.backgroundImage = `conic-gradient(${value})`;
2552
- }
2553
- };
2554
- });
2682
+ var backgroundHandlers = {
2683
+ backgroundImage: (el, value) => {
2684
+ el.style.backgroundImage = String(value);
2685
+ },
2686
+ backgroundSize: (el, value) => {
2687
+ el.style.backgroundSize = String(value);
2688
+ },
2689
+ backgroundPosition: (el, value) => {
2690
+ el.style.backgroundPosition = String(value);
2691
+ },
2692
+ backgroundRepeat: (el, value) => {
2693
+ el.style.backgroundRepeat = String(value);
2694
+ },
2695
+ backgroundAttachment: (el, value) => {
2696
+ el.style.backgroundAttachment = String(value);
2697
+ },
2698
+ backgroundClip: (el, value) => {
2699
+ el.style.backgroundClip = String(value);
2700
+ },
2701
+ backgroundOrigin: (el, value) => {
2702
+ el.style.backgroundOrigin = String(value);
2703
+ },
2704
+ linearGradient: (el, value) => {
2705
+ el.style.backgroundImage = `linear-gradient(${value})`;
2706
+ },
2707
+ radialGradient: (el, value) => {
2708
+ el.style.backgroundImage = `radial-gradient(${value})`;
2709
+ },
2710
+ conicGradient: (el, value) => {
2711
+ el.style.backgroundImage = `conic-gradient(${value})`;
2712
+ }
2713
+ };
2555
2714
 
2556
2715
  // src/dom/applicators/display.ts
2557
- var exports_display = {};
2558
- __export(exports_display, {
2559
- displayHandlers: () => displayHandlers
2560
- });
2561
- var displayHandlers;
2562
- var init_display = __esm(() => {
2563
- displayHandlers = {
2564
- display: (el, value) => {
2565
- el.style.display = String(value);
2566
- },
2567
- visibility: (el, value) => {
2568
- el.style.visibility = String(value);
2569
- },
2570
- overflowX: (el, value) => {
2571
- el.style.overflowX = String(value);
2572
- },
2573
- overflowY: (el, value) => {
2574
- el.style.overflowY = String(value);
2575
- },
2576
- pointerEvents: (el, value) => {
2577
- el.style.pointerEvents = String(value);
2578
- },
2579
- userSelect: (el, value) => {
2580
- el.style.userSelect = String(value);
2581
- },
2582
- resize: (el, value) => {
2583
- el.style.resize = String(value);
2584
- },
2585
- boxSizing: (el, value) => {
2586
- el.style.boxSizing = String(value);
2587
- },
2588
- aspectRatio: (el, value) => {
2589
- el.style.aspectRatio = String(value);
2590
- },
2591
- objectFit: (el, value) => {
2592
- el.style.objectFit = String(value);
2593
- },
2594
- objectPosition: (el, value) => {
2595
- el.style.objectPosition = String(value);
2596
- }
2597
- };
2598
- });
2716
+ var displayHandlers = {
2717
+ display: (el, value) => {
2718
+ el.style.display = String(value);
2719
+ },
2720
+ visibility: (el, value) => {
2721
+ el.style.visibility = String(value);
2722
+ },
2723
+ overflowX: (el, value) => {
2724
+ el.style.overflowX = String(value);
2725
+ },
2726
+ overflowY: (el, value) => {
2727
+ el.style.overflowY = String(value);
2728
+ },
2729
+ pointerEvents: (el, value) => {
2730
+ el.style.pointerEvents = String(value);
2731
+ },
2732
+ userSelect: (el, value) => {
2733
+ el.style.userSelect = String(value);
2734
+ },
2735
+ resize: (el, value) => {
2736
+ el.style.resize = String(value);
2737
+ },
2738
+ boxSizing: (el, value) => {
2739
+ el.style.boxSizing = String(value);
2740
+ },
2741
+ aspectRatio: (el, value) => {
2742
+ el.style.aspectRatio = String(value);
2743
+ },
2744
+ objectFit: (el, value) => {
2745
+ el.style.objectFit = String(value);
2746
+ },
2747
+ objectPosition: (el, value) => {
2748
+ el.style.objectPosition = String(value);
2749
+ }
2750
+ };
2599
2751
 
2600
2752
  // src/dom/applicators/transition.ts
2601
- var exports_transition = {};
2602
- __export(exports_transition, {
2603
- transitionHandlers: () => transitionHandlers
2604
- });
2605
- var transitionHandlers;
2606
- var init_transition = __esm(() => {
2607
- transitionHandlers = {
2608
- transition: (el, value) => {
2609
- el.style.transition = String(value);
2610
- },
2611
- transitionProperty: (el, value) => {
2612
- el.style.transitionProperty = String(value);
2613
- },
2614
- transitionDuration: (el, value) => {
2615
- el.style.transitionDuration = String(value);
2616
- },
2617
- transitionTimingFunction: (el, value) => {
2618
- el.style.transitionTimingFunction = String(value);
2619
- },
2620
- transitionDelay: (el, value) => {
2621
- el.style.transitionDelay = String(value);
2622
- },
2623
- animation: (el, value) => {
2624
- el.style.animation = String(value);
2625
- },
2626
- animationName: (el, value) => {
2627
- el.style.animationName = String(value);
2628
- },
2629
- animationDuration: (el, value) => {
2630
- el.style.animationDuration = String(value);
2631
- },
2632
- animationTimingFunction: (el, value) => {
2633
- el.style.animationTimingFunction = String(value);
2634
- },
2635
- animationDelay: (el, value) => {
2636
- el.style.animationDelay = String(value);
2637
- },
2638
- animationIterationCount: (el, value) => {
2639
- el.style.animationIterationCount = String(value);
2640
- },
2641
- animationDirection: (el, value) => {
2642
- el.style.animationDirection = String(value);
2643
- },
2644
- animationFillMode: (el, value) => {
2645
- el.style.animationFillMode = String(value);
2646
- },
2647
- animationPlayState: (el, value) => {
2648
- el.style.animationPlayState = String(value);
2649
- }
2650
- };
2651
- });
2652
-
2653
- // src/dom/components/index.ts
2654
- class ComponentRegistry {
2655
- handlers = new Map;
2656
- constructor() {
2657
- this.registerDefaults();
2658
- }
2659
- register(type, handler) {
2660
- this.handlers.set(type.toLowerCase(), handler);
2661
- }
2662
- get(type) {
2663
- return this.handlers.get(type.toLowerCase());
2664
- }
2665
- createElement(type, props = {}) {
2666
- const handler = this.get(type);
2667
- if (!handler)
2668
- return null;
2669
- const element = handler.create();
2670
- if (handler.applyProps) {
2671
- handler.applyProps(element, props);
2672
- }
2673
- return element;
2674
- }
2675
- registerDefaults() {
2676
- const { columnHandler: columnHandler2 } = (init_column(), __toCommonJS(exports_column));
2677
- const { rowHandler: rowHandler2 } = (init_row(), __toCommonJS(exports_row));
2678
- const { textHandler: textHandler2 } = (init_text(), __toCommonJS(exports_text));
2679
- const { imageHandler: imageHandler2 } = (init_image(), __toCommonJS(exports_image));
2680
- const { buttonHandler: buttonHandler2 } = (init_button(), __toCommonJS(exports_button));
2681
- const { containerHandler: containerHandler2 } = (init_container(), __toCommonJS(exports_container));
2682
- const { centerHandler: centerHandler2 } = (init_center(), __toCommonJS(exports_center));
2683
- const { listHandler: listHandler2 } = (init_list(), __toCommonJS(exports_list));
2684
- const { inputHandler: inputHandler2 } = (init_input(), __toCommonJS(exports_input));
2685
- const { linkHandler: linkHandler2 } = (init_link(), __toCommonJS(exports_link));
2686
- const { textareaHandler: textareaHandler2 } = (init_textarea(), __toCommonJS(exports_textarea));
2687
- const { checkboxHandler: checkboxHandler2 } = (init_checkbox(), __toCommonJS(exports_checkbox));
2688
- const { selectHandler: selectHandler2 } = (init_select(), __toCommonJS(exports_select));
2689
- const { spacerHandler: spacerHandler2 } = (init_spacer(), __toCommonJS(exports_spacer));
2690
- const { stackHandler: stackHandler2 } = (init_stack(), __toCommonJS(exports_stack));
2691
- const { dividerHandler: dividerHandler2 } = (init_divider(), __toCommonJS(exports_divider));
2692
- const { gridHandler: gridHandler2 } = (init_grid(), __toCommonJS(exports_grid));
2693
- const { cardHandler: cardHandler2 } = (init_card(), __toCommonJS(exports_card));
2694
- const { headingHandler: headingHandler2 } = (init_heading(), __toCommonJS(exports_heading));
2695
- const { switchHandler: switchHandler2 } = (init_switch(), __toCommonJS(exports_switch));
2696
- const { sliderHandler: sliderHandler2 } = (init_slider(), __toCommonJS(exports_slider));
2697
- const { spinnerHandler: spinnerHandler2 } = (init_spinner(), __toCommonJS(exports_spinner));
2698
- const { badgeHandler: badgeHandler2 } = (init_badge(), __toCommonJS(exports_badge));
2699
- const { avatarHandler: avatarHandler2 } = (init_avatar(), __toCommonJS(exports_avatar));
2700
- const { progressBarHandler: progressBarHandler2 } = (init_progressbar(), __toCommonJS(exports_progressbar));
2701
- const { videoHandler: videoHandler2 } = (init_video(), __toCommonJS(exports_video));
2702
- const { audioHandler: audioHandler2 } = (init_audio(), __toCommonJS(exports_audio));
2703
- const { paragraphHandler: paragraphHandler2 } = (init_paragraph(), __toCommonJS(exports_paragraph));
2704
- const { routerHandler: routerHandler2 } = (init_router(), __toCommonJS(exports_router));
2705
- const { routeHandler: routeHandler2 } = (init_route(), __toCommonJS(exports_route));
2706
- const { hypenAppHandler: hypenAppHandler2 } = (init_hypenapp(), __toCommonJS(exports_hypenapp));
2707
- this.register("column", columnHandler2);
2708
- this.register("row", rowHandler2);
2709
- this.register("text", textHandler2);
2710
- this.register("image", imageHandler2);
2711
- this.register("button", buttonHandler2);
2712
- this.register("container", containerHandler2);
2713
- this.register("box", containerHandler2);
2714
- this.register("center", centerHandler2);
2715
- this.register("list", listHandler2);
2716
- this.register("input", inputHandler2);
2717
- this.register("link", linkHandler2);
2718
- this.register("textarea", textareaHandler2);
2719
- this.register("checkbox", checkboxHandler2);
2720
- this.register("select", selectHandler2);
2721
- this.register("spacer", spacerHandler2);
2722
- this.register("stack", stackHandler2);
2723
- this.register("divider", dividerHandler2);
2724
- this.register("grid", gridHandler2);
2725
- this.register("card", cardHandler2);
2726
- this.register("heading", headingHandler2);
2727
- this.register("switch", switchHandler2);
2728
- this.register("slider", sliderHandler2);
2729
- this.register("spinner", spinnerHandler2);
2730
- this.register("badge", badgeHandler2);
2731
- this.register("avatar", avatarHandler2);
2732
- this.register("progressbar", progressBarHandler2);
2733
- this.register("video", videoHandler2);
2734
- this.register("audio", audioHandler2);
2735
- this.register("paragraph", paragraphHandler2);
2736
- this.register("router", routerHandler2);
2737
- this.register("route", routeHandler2);
2738
- this.register("hypenapp", hypenAppHandler2);
2753
+ var transitionHandlers = {
2754
+ transition: (el, value) => {
2755
+ el.style.transition = String(value);
2756
+ },
2757
+ transitionProperty: (el, value) => {
2758
+ el.style.transitionProperty = String(value);
2759
+ },
2760
+ transitionDuration: (el, value) => {
2761
+ el.style.transitionDuration = String(value);
2762
+ },
2763
+ transitionTimingFunction: (el, value) => {
2764
+ el.style.transitionTimingFunction = String(value);
2765
+ },
2766
+ transitionDelay: (el, value) => {
2767
+ el.style.transitionDelay = String(value);
2768
+ },
2769
+ animation: (el, value) => {
2770
+ el.style.animation = String(value);
2771
+ },
2772
+ animationName: (el, value) => {
2773
+ el.style.animationName = String(value);
2774
+ },
2775
+ animationDuration: (el, value) => {
2776
+ el.style.animationDuration = String(value);
2777
+ },
2778
+ animationTimingFunction: (el, value) => {
2779
+ el.style.animationTimingFunction = String(value);
2780
+ },
2781
+ animationDelay: (el, value) => {
2782
+ el.style.animationDelay = String(value);
2783
+ },
2784
+ animationIterationCount: (el, value) => {
2785
+ el.style.animationIterationCount = String(value);
2786
+ },
2787
+ animationDirection: (el, value) => {
2788
+ el.style.animationDirection = String(value);
2789
+ },
2790
+ animationFillMode: (el, value) => {
2791
+ el.style.animationFillMode = String(value);
2792
+ },
2793
+ animationPlayState: (el, value) => {
2794
+ el.style.animationPlayState = String(value);
2739
2795
  }
2740
- }
2796
+ };
2741
2797
 
2742
2798
  // src/dom/applicators/index.ts
2743
2799
  var BREAKPOINTS = {
@@ -2973,60 +3029,57 @@ class ApplicatorRegistry {
2973
3029
  return !unitless.includes(prop);
2974
3030
  }
2975
3031
  registerDefaults() {
2976
- const { paddingHandler: paddingHandler2 } = __toCommonJS(exports_padding);
2977
- const { marginHandler: marginHandler2 } = __toCommonJS(exports_margin);
2978
- const { colorHandlers: colorHandlers2 } = (init_color(), __toCommonJS(exports_color));
2979
- const { borderHandlers: borderHandlers2 } = (init_border(), __toCommonJS(exports_border));
2980
- const { sizeHandlers: sizeHandlers2 } = (init_size(), __toCommonJS(exports_size));
2981
- const { fontHandlers: fontHandlers2 } = (init_font(), __toCommonJS(exports_font));
2982
- const { layoutHandlers: layoutHandlers2 } = (init_layout(), __toCommonJS(exports_layout));
2983
- const { eventHandlers: eventHandlers2 } = (init_events(), __toCommonJS(exports_events));
2984
- const { typographyHandlers: typographyHandlers2 } = (init_typography(), __toCommonJS(exports_typography));
2985
- const { transformHandlers: transformHandlers2 } = (init_transform(), __toCommonJS(exports_transform));
2986
- const { effectsHandlers: effectsHandlers2 } = (init_effects(), __toCommonJS(exports_effects));
2987
- const { advancedLayoutHandlers: advancedLayoutHandlers2 } = (init_advanced_layout(), __toCommonJS(exports_advanced_layout));
2988
- const { backgroundHandlers: backgroundHandlers2 } = (init_background(), __toCommonJS(exports_background));
2989
- const { displayHandlers: displayHandlers2 } = (init_display(), __toCommonJS(exports_display));
2990
- const { transitionHandlers: transitionHandlers2 } = (init_transition(), __toCommonJS(exports_transition));
2991
- this.register("padding", paddingHandler2);
2992
- this.register("margin", marginHandler2);
2993
- for (const [name, handler] of Object.entries(colorHandlers2)) {
3032
+ this.register("padding", paddingHandler);
3033
+ this.register("paddingTop", paddingTopHandler);
3034
+ this.register("paddingBottom", paddingBottomHandler);
3035
+ this.register("paddingLeft", paddingLeftHandler);
3036
+ this.register("paddingRight", paddingRightHandler);
3037
+ this.register("paddingHorizontal", paddingHorizontalHandler);
3038
+ this.register("paddingVertical", paddingVerticalHandler);
3039
+ this.register("margin", marginHandler);
3040
+ this.register("marginTop", marginTopHandler);
3041
+ this.register("marginBottom", marginBottomHandler);
3042
+ this.register("marginLeft", marginLeftHandler);
3043
+ this.register("marginRight", marginRightHandler);
3044
+ this.register("marginHorizontal", marginHorizontalHandler);
3045
+ this.register("marginVertical", marginVerticalHandler);
3046
+ for (const [name, handler] of Object.entries(colorHandlers)) {
2994
3047
  this.register(name, handler);
2995
3048
  }
2996
- for (const [name, handler] of Object.entries(borderHandlers2)) {
3049
+ for (const [name, handler] of Object.entries(borderHandlers)) {
2997
3050
  this.register(name, handler);
2998
3051
  }
2999
- for (const [name, handler] of Object.entries(sizeHandlers2)) {
3052
+ for (const [name, handler] of Object.entries(sizeHandlers)) {
3000
3053
  this.register(name, handler);
3001
3054
  }
3002
- for (const [name, handler] of Object.entries(fontHandlers2)) {
3055
+ for (const [name, handler] of Object.entries(fontHandlers)) {
3003
3056
  this.register(name, handler);
3004
3057
  }
3005
- for (const [name, handler] of Object.entries(layoutHandlers2)) {
3058
+ for (const [name, handler] of Object.entries(layoutHandlers)) {
3006
3059
  this.register(name, handler);
3007
3060
  }
3008
- for (const [name, handler] of Object.entries(eventHandlers2)) {
3061
+ for (const [name, handler] of Object.entries(eventHandlers)) {
3009
3062
  this.register(name, handler);
3010
3063
  }
3011
- for (const [name, handler] of Object.entries(typographyHandlers2)) {
3064
+ for (const [name, handler] of Object.entries(typographyHandlers)) {
3012
3065
  this.register(name, handler);
3013
3066
  }
3014
- for (const [name, handler] of Object.entries(transformHandlers2)) {
3067
+ for (const [name, handler] of Object.entries(transformHandlers)) {
3015
3068
  this.register(name, handler);
3016
3069
  }
3017
- for (const [name, handler] of Object.entries(effectsHandlers2)) {
3070
+ for (const [name, handler] of Object.entries(effectsHandlers)) {
3018
3071
  this.register(name, handler);
3019
3072
  }
3020
- for (const [name, handler] of Object.entries(advancedLayoutHandlers2)) {
3073
+ for (const [name, handler] of Object.entries(advancedLayoutHandlers)) {
3021
3074
  this.register(name, handler);
3022
3075
  }
3023
- for (const [name, handler] of Object.entries(backgroundHandlers2)) {
3076
+ for (const [name, handler] of Object.entries(backgroundHandlers)) {
3024
3077
  this.register(name, handler);
3025
3078
  }
3026
- for (const [name, handler] of Object.entries(displayHandlers2)) {
3079
+ for (const [name, handler] of Object.entries(displayHandlers)) {
3027
3080
  this.register(name, handler);
3028
3081
  }
3029
- for (const [name, handler] of Object.entries(transitionHandlers2)) {
3082
+ for (const [name, handler] of Object.entries(transitionHandlers)) {
3030
3083
  this.register(name, handler);
3031
3084
  }
3032
3085
  }
@@ -3074,6 +3127,8 @@ var canvasApplicators = {
3074
3127
  };
3075
3128
 
3076
3129
  // src/dom/debug.ts
3130
+ import { frameworkLoggers as frameworkLoggers4 } from "@hypen-space/core";
3131
+ var log4 = frameworkLoggers4.debug;
3077
3132
  var defaultDebugConfig = {
3078
3133
  enabled: false,
3079
3134
  showHeatmap: true,
@@ -3099,7 +3154,7 @@ class RerenderTracker {
3099
3154
  if (!this.config.enabled || !this.config.showHeatmap) {
3100
3155
  return;
3101
3156
  }
3102
- console.log(`\uD83D\uDD25 [Debug] Tracking re-render: ${id} - ${patchType}`);
3157
+ log4.debug(`Tracking re-render: ${id} - ${patchType}`);
3103
3158
  const currentCount = this.renderCounts.get(id) || 0;
3104
3159
  const newCount = currentCount + 1;
3105
3160
  this.renderCounts.set(id, newCount);
@@ -3107,7 +3162,7 @@ class RerenderTracker {
3107
3162
  }
3108
3163
  updateHeatmap(id, element, renderCount, patchType) {
3109
3164
  const opacity = Math.min(renderCount * this.config.heatmapIncrement / 100, this.config.maxOpacity);
3110
- console.log(`\uD83D\uDD25 [Debug] Updating heatmap for ${id}, count: ${renderCount}, opacity: ${opacity}`);
3165
+ log4.debug(`Updating heatmap for ${id}, count: ${renderCount}, opacity: ${opacity}`);
3111
3166
  const isInline = window.getComputedStyle(element).display.includes("inline");
3112
3167
  if (isInline || element.tagName === "SPAN") {
3113
3168
  if (!element.dataset.hypenDebugOriginalBg) {
@@ -3235,7 +3290,8 @@ class RerenderTracker {
3235
3290
  }
3236
3291
 
3237
3292
  // src/dom/renderer.ts
3238
- init_element_data();
3293
+ import { frameworkLoggers as frameworkLoggers5 } from "@hypen-space/core";
3294
+ var log5 = frameworkLoggers5.renderer;
3239
3295
 
3240
3296
  class DOMRenderer {
3241
3297
  container;
@@ -3270,13 +3326,13 @@ class DOMRenderer {
3270
3326
  }
3271
3327
  }
3272
3328
  updateState(state) {
3273
- console.log(`[Renderer] Updating state:`, state);
3329
+ log5.debug("Updating state:", state);
3274
3330
  this.currentState = state;
3275
3331
  this.interpolateAllText();
3276
3332
  }
3277
3333
  mergeComponentState(componentState) {
3278
3334
  this.currentState = { ...this.currentState, ...componentState };
3279
- console.log(`[Renderer] Merged state:`, this.currentState);
3335
+ log5.debug("Merged state:", this.currentState);
3280
3336
  this.interpolateAllText();
3281
3337
  }
3282
3338
  interpolateAllText() {
@@ -3309,7 +3365,7 @@ class DOMRenderer {
3309
3365
  applyPatch(patch) {
3310
3366
  switch (patch.type) {
3311
3367
  case "create":
3312
- this.onCreate(patch.id, patch.element_type, patch.props || {});
3368
+ this.onCreate(patch.id, patch.elementType, patch.props || {});
3313
3369
  break;
3314
3370
  case "setProp":
3315
3371
  this.onSetProp(patch.id, patch.name, patch.value);
@@ -3318,10 +3374,10 @@ class DOMRenderer {
3318
3374
  this.onSetText(patch.id, patch.text);
3319
3375
  break;
3320
3376
  case "insert":
3321
- this.onInsert(patch.parent_id, patch.id, patch.before_id);
3377
+ this.onInsert(patch.parentId, patch.id, patch.beforeId);
3322
3378
  break;
3323
3379
  case "move":
3324
- this.onMove(patch.parent_id, patch.id, patch.before_id);
3380
+ this.onMove(patch.parentId, patch.id, patch.beforeId);
3325
3381
  break;
3326
3382
  case "remove":
3327
3383
  this.onRemove(patch.id);
@@ -3336,7 +3392,7 @@ class DOMRenderer {
3336
3392
  fallback.dataset.hypenType = elementType.toLowerCase();
3337
3393
  fallback.style.display = "contents";
3338
3394
  element = fallback;
3339
- console.log(`[Renderer] Unknown component "${elementType}" - using transparent container`);
3395
+ log5.debug(`Unknown component "${elementType}" - using transparent container`);
3340
3396
  }
3341
3397
  element.dataset.hypenType = elementType.toLowerCase();
3342
3398
  element.dataset.hypenId = id;
@@ -3361,7 +3417,7 @@ class DOMRenderer {
3361
3417
  if (elementType === "input") {
3362
3418
  const inputEl = element;
3363
3419
  inputEl.value = String(value);
3364
- console.log(`[Renderer] Updated input value: "${value}"`);
3420
+ log5.debug(`Updated input value: "${value}"`);
3365
3421
  return;
3366
3422
  }
3367
3423
  const nextText = String(value);
@@ -3376,7 +3432,7 @@ class DOMRenderer {
3376
3432
  } else if (!currentLooksLikeTemplate) {
3377
3433
  element.dataset.textTemplate = nextText;
3378
3434
  }
3379
- console.log(`[Renderer] Updated text content: "${value}"`);
3435
+ log5.debug(`Updated text content: "${value}"`);
3380
3436
  return;
3381
3437
  }
3382
3438
  this.applicators.apply(element, name, value);
@@ -3391,7 +3447,7 @@ class DOMRenderer {
3391
3447
  onInsert(parentId, id, beforeId) {
3392
3448
  const parent = parentId === "root" ? this.container : this.nodes.get(parentId);
3393
3449
  const child = this.nodes.get(id);
3394
- console.log(`[Renderer] Inserting ${id} into ${parentId}`, {
3450
+ log5.debug(`Inserting ${id} into ${parentId}`, {
3395
3451
  parent: parent ? `${parent.tagName}#${parent.id || "no-id"}` : "null",
3396
3452
  child: child ? `${child.tagName}#${child.id || "no-id"}` : "null",
3397
3453
  childText: child?.textContent?.substring(0, 20)
@@ -3463,8 +3519,12 @@ import {
3463
3519
  componentLoader,
3464
3520
  Router,
3465
3521
  Route,
3466
- Link
3522
+ Link,
3523
+ frameworkLoggers as frameworkLoggers6,
3524
+ setDebugMode
3467
3525
  } from "@hypen-space/core";
3526
+ var log6 = frameworkLoggers6.hypen;
3527
+
3468
3528
  class Hypen {
3469
3529
  engine = null;
3470
3530
  renderer = null;
@@ -3480,6 +3540,9 @@ class Hypen {
3480
3540
  debug: false,
3481
3541
  ...config
3482
3542
  };
3543
+ if (this.config.debug) {
3544
+ setDebugMode(true);
3545
+ }
3483
3546
  this.router = new HypenRouter;
3484
3547
  this.globalContext = new HypenGlobalContext;
3485
3548
  componentLoader.register("Router", Router, "");
@@ -3489,27 +3552,19 @@ class Hypen {
3489
3552
  this.globalContext.__hypenEngine = this;
3490
3553
  }
3491
3554
  async init() {
3492
- if (this.config.debug) {
3493
- console.log("[Hypen] Initializing...");
3494
- }
3555
+ log6.debug("Initializing...");
3495
3556
  this.engine = new Engine;
3496
3557
  await this.engine.init({
3497
3558
  wasmUrl: this.config.wasmUrl,
3498
3559
  jsUrl: this.config.jsUrl
3499
3560
  });
3500
- if (this.config.debug) {
3501
- console.log("[Hypen] Engine initialized");
3502
- }
3561
+ log6.debug("Engine initialized");
3503
3562
  }
3504
3563
  async loadComponents(componentsDir) {
3505
3564
  const dir = componentsDir || this.config.componentsDir;
3506
- if (this.config.debug) {
3507
- console.log(`[Hypen] Loading components from ${dir}...`);
3508
- }
3565
+ log6.debug(`Loading components from ${dir}...`);
3509
3566
  await componentLoader.loadFromComponentsDir(dir);
3510
- if (this.config.debug) {
3511
- console.log(`[Hypen] Loaded ${componentLoader.getNames().length} components`);
3512
- }
3567
+ log6.debug(`Loaded ${componentLoader.getNames().length} components`);
3513
3568
  }
3514
3569
  async render(componentName, containerSelector) {
3515
3570
  if (!this.engine) {
@@ -3528,9 +3583,7 @@ class Hypen {
3528
3583
  if (!component) {
3529
3584
  throw new Error(`[Hypen] Component "${componentName}" not found. Available: ${componentLoader.getNames().join(", ")}`);
3530
3585
  }
3531
- if (this.config.debug) {
3532
- console.log(`[Hypen] Rendering ${componentName} to`, this.container);
3533
- }
3586
+ log6.debug(`Rendering ${componentName} to`, this.container);
3534
3587
  this.renderer = new DOMRenderer(this.container, this.engine, {
3535
3588
  enabled: this.config.debugHeatmap || false,
3536
3589
  showHeatmap: this.config.debugHeatmap || false,
@@ -3539,9 +3592,7 @@ class Hypen {
3539
3592
  maxOpacity: 0.8
3540
3593
  });
3541
3594
  this.engine.setRenderCallback((patches) => {
3542
- if (this.config.debug) {
3543
- console.log(`[Hypen] Applying ${patches.length} patches`);
3544
- }
3595
+ log6.debug(`Applying ${patches.length} patches`);
3545
3596
  this.renderer.applyPatches(patches);
3546
3597
  });
3547
3598
  const routerContext = {
@@ -3555,23 +3606,17 @@ class Hypen {
3555
3606
  this.moduleInstances.set(moduleId, this.moduleInstance);
3556
3607
  this.moduleInstance.onStateChange(() => {
3557
3608
  const mergedState = this.getMergedState();
3558
- if (this.config.debug) {
3559
- console.log(`[Hypen] State changed, merged state:`, mergedState);
3560
- }
3609
+ log6.debug(`State changed, merged state:`, mergedState);
3561
3610
  this.renderer.updateState(mergedState);
3562
3611
  });
3563
3612
  this.setupComponentResolver();
3564
3613
  this.createNestedModuleInstances();
3565
3614
  this.engine.renderSource(component.template);
3566
3615
  this.renderer.updateState(this.getMergedState());
3567
- if (this.config.debug) {
3568
- console.log(`[Hypen] ${componentName} rendered successfully`);
3569
- }
3616
+ log6.debug(`${componentName} rendered successfully`);
3570
3617
  }
3571
3618
  async unmount() {
3572
- if (this.config.debug) {
3573
- console.log("[Hypen] Unmounting...");
3574
- }
3619
+ log6.debug("Unmounting...");
3575
3620
  if (this.moduleInstance) {
3576
3621
  await this.moduleInstance.destroy();
3577
3622
  this.moduleInstance = null;
@@ -3581,9 +3626,7 @@ class Hypen {
3581
3626
  this.container = null;
3582
3627
  }
3583
3628
  this.renderer = null;
3584
- if (this.config.debug) {
3585
- console.log("[Hypen] Unmounted");
3586
- }
3629
+ log6.debug("Unmounted");
3587
3630
  }
3588
3631
  getModuleInstance() {
3589
3632
  return this.moduleInstance;
@@ -3600,17 +3643,13 @@ class Hypen {
3600
3643
  setDebugHeatmap(enabled) {
3601
3644
  if (this.renderer) {
3602
3645
  this.renderer.setDebugConfig({ enabled, showHeatmap: enabled });
3603
- if (this.config.debug) {
3604
- console.log(`[Hypen] Debug heatmap ${enabled ? "enabled" : "disabled"}`);
3605
- }
3646
+ log6.debug(`Debug heatmap ${enabled ? "enabled" : "disabled"}`);
3606
3647
  }
3607
3648
  }
3608
3649
  resetDebugTracking() {
3609
3650
  if (this.renderer) {
3610
3651
  this.renderer.resetDebugTracking();
3611
- if (this.config.debug) {
3612
- console.log(`[Hypen] Debug tracking reset`);
3613
- }
3652
+ log6.debug("Debug tracking reset");
3614
3653
  }
3615
3654
  }
3616
3655
  getDebugStats() {
@@ -3639,9 +3678,7 @@ class Hypen {
3639
3678
  this.moduleInstances.set(componentName, moduleInstance);
3640
3679
  moduleInstance.onStateChange(() => {
3641
3680
  const mergedState2 = this.getMergedState();
3642
- if (this.config.debug) {
3643
- console.log(`[Hypen] Lazy component ${componentName} state changed:`, mergedState2);
3644
- }
3681
+ log6.debug(`Lazy component ${componentName} state changed:`, mergedState2);
3645
3682
  this.renderer.updateState(mergedState2);
3646
3683
  });
3647
3684
  }
@@ -3673,9 +3710,7 @@ class Hypen {
3673
3710
  this.moduleInstances.set("Router", routerInstance);
3674
3711
  routerInstance.onStateChange(() => {
3675
3712
  const mergedState = this.getMergedState();
3676
- if (this.config.debug) {
3677
- console.log(`[Hypen] Router state changed:`, mergedState);
3678
- }
3713
+ log6.debug("Router state changed:", mergedState);
3679
3714
  this.renderer.updateState(mergedState);
3680
3715
  });
3681
3716
  }
@@ -3688,17 +3723,13 @@ class Hypen {
3688
3723
  if (!comp || !comp.module) {
3689
3724
  continue;
3690
3725
  }
3691
- if (this.config.debug) {
3692
- console.log(`[Hypen] Creating nested module instance for: ${name}`);
3693
- }
3726
+ log6.debug(`Creating nested module instance for: ${name}`);
3694
3727
  const moduleInstance = new HypenModuleInstance(this.engine, comp.module, routerContext, this.globalContext);
3695
3728
  this.globalContext.registerModule(name, moduleInstance);
3696
3729
  this.moduleInstances.set(name, moduleInstance);
3697
3730
  moduleInstance.onStateChange(() => {
3698
3731
  const mergedState = this.getMergedState();
3699
- if (this.config.debug) {
3700
- console.log(`[Hypen] Nested component ${name} state changed:`, mergedState);
3701
- }
3732
+ log6.debug(`Nested component ${name} state changed:`, mergedState);
3702
3733
  this.renderer.updateState(mergedState);
3703
3734
  });
3704
3735
  }
@@ -3738,14 +3769,10 @@ class Hypen {
3738
3769
  if (builtInElements.has(componentName)) {
3739
3770
  return null;
3740
3771
  }
3741
- if (this.config.debug) {
3742
- console.log(`[Hypen] Resolving component: ${componentName} (context: ${contextPath})`);
3743
- }
3772
+ log6.debug(`Resolving component: ${componentName} (context: ${contextPath})`);
3744
3773
  const componentDef = componentLoader.get(componentName);
3745
3774
  if (!componentDef) {
3746
- if (this.config.debug) {
3747
- console.log(`[Hypen] Component not found: ${componentName}`);
3748
- }
3775
+ log6.debug(`Component not found: ${componentName}`);
3749
3776
  return null;
3750
3777
  }
3751
3778
  const isPassthrough = componentName === "Router";
@@ -3756,15 +3783,13 @@ class Hypen {
3756
3783
  passthrough: isPassthrough,
3757
3784
  lazy: isLazy
3758
3785
  };
3759
- if (this.config.debug) {
3760
- const flags = [];
3761
- if (isPassthrough)
3762
- flags.push("passthrough");
3763
- if (isLazy)
3764
- flags.push("lazy");
3765
- const flagStr = flags.length > 0 ? ` (${flags.join(", ")})` : "";
3766
- console.log(`[Hypen] Resolved ${componentName} -> ${resolved.path}${flagStr}`);
3767
- }
3786
+ const flags = [];
3787
+ if (isPassthrough)
3788
+ flags.push("passthrough");
3789
+ if (isLazy)
3790
+ flags.push("lazy");
3791
+ const flagStr = flags.length > 0 ? ` (${flags.join(", ")})` : "";
3792
+ log6.debug(`Resolved ${componentName} -> ${resolved.path}${flagStr}`);
3768
3793
  return resolved;
3769
3794
  });
3770
3795
  }
@@ -3792,6 +3817,9 @@ async function renderWithComponents(components, componentName, containerSelector
3792
3817
  }
3793
3818
 
3794
3819
  // src/dom/events.ts
3820
+ import { frameworkLoggers as frameworkLoggers7 } from "@hypen-space/core";
3821
+ var log7 = frameworkLoggers7.events;
3822
+
3795
3823
  class EventManager {
3796
3824
  engine;
3797
3825
  bindings = new Map;
@@ -3800,22 +3828,22 @@ class EventManager {
3800
3828
  }
3801
3829
  attach(elementId, element, eventName, actionName) {
3802
3830
  const domEventName = eventName === "onClick" ? "click" : eventName;
3803
- console.log(`[EventManager] Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);
3831
+ log7.debug(`Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);
3804
3832
  const listener = (event) => {
3805
- console.log(`\uD83D\uDD25 [EventManager] Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);
3806
- console.log(`\uD83D\uDD25 [EventManager] Event object:`, event);
3807
- console.log(`\uD83D\uDD25 [EventManager] Element:`, element);
3833
+ log7.debug(`Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);
3834
+ log7.debug(`Event object:`, event);
3835
+ log7.debug(`Element:`, element);
3808
3836
  if (eventName === "submit" || eventName === "click" && element.tagName === "A") {
3809
3837
  event.preventDefault();
3810
3838
  }
3811
3839
  const payload = this.extractEventData(event, element);
3812
- console.log(`\uD83D\uDD25 [EventManager] Event payload:`, payload);
3813
- console.log(`\uD83D\uDD25 [EventManager] Calling engine.dispatchAction(${actionName})`);
3840
+ log7.debug(`Event payload:`, payload);
3841
+ log7.debug(`Calling engine.dispatchAction(${actionName})`);
3814
3842
  try {
3815
3843
  this.engine.dispatchAction(actionName, payload);
3816
- console.log(`\uD83D\uDD25 [EventManager] ✅ dispatchAction succeeded`);
3844
+ log7.debug(`dispatchAction succeeded`);
3817
3845
  } catch (error) {
3818
- console.error(`\uD83D\uDD25 [EventManager] ❌ dispatchAction failed:`, error);
3846
+ log7.error(`dispatchAction failed:`, error);
3819
3847
  }
3820
3848
  };
3821
3849
  let elementBindings = this.bindings.get(elementId);
@@ -3825,8 +3853,8 @@ class EventManager {
3825
3853
  }
3826
3854
  elementBindings.set(eventName, listener);
3827
3855
  element.addEventListener(domEventName, listener);
3828
- console.log(`[EventManager] Listener attached to DOM for ${domEventName}`);
3829
- console.log(`[EventManager] Element details:`, {
3856
+ log7.debug(`Listener attached to DOM for ${domEventName}`);
3857
+ log7.debug(`Element details:`, {
3830
3858
  tagName: element.tagName,
3831
3859
  id: element.id,
3832
3860
  dataset: element.dataset,
@@ -3834,7 +3862,7 @@ class EventManager {
3834
3862
  });
3835
3863
  if (domEventName === "click") {
3836
3864
  element.addEventListener("click", (e) => {
3837
- console.log(`\uD83E\uDDEA [TEST] Raw DOM click detected on ${element.tagName}`, e);
3865
+ log7.debug(`Raw DOM click detected on ${element.tagName}`, e);
3838
3866
  });
3839
3867
  }
3840
3868
  }
@@ -4019,6 +4047,8 @@ function getAbsoluteBounds(node) {
4019
4047
  }
4020
4048
 
4021
4049
  // src/canvas/text.ts
4050
+ import { frameworkLoggers as frameworkLoggers8 } from "@hypen-space/core";
4051
+ var log8 = frameworkLoggers8.canvas;
4022
4052
  var textMetricsCache = new Map;
4023
4053
  function getCacheKey(text, fontStyle, maxWidth) {
4024
4054
  return `${text}|${fontStyle.fontSize}|${fontStyle.fontWeight}|${fontStyle.fontFamily}|${maxWidth || "auto"}`;
@@ -4118,7 +4148,7 @@ async function loadFont(fontFamily, fontWeight = "normal") {
4118
4148
  try {
4119
4149
  await document.fonts.load(font);
4120
4150
  } catch (error) {
4121
- console.warn(`Failed to load font: ${font}`, error);
4151
+ log8.warn(`Failed to load font: ${font}`, error);
4122
4152
  }
4123
4153
  }
4124
4154
 
@@ -5733,6 +5763,8 @@ class AccessibilityLayer {
5733
5763
  }
5734
5764
 
5735
5765
  // src/canvas/renderer.ts
5766
+ import { frameworkLoggers as frameworkLoggers9 } from "@hypen-space/core";
5767
+ var log9 = frameworkLoggers9.canvas;
5736
5768
  var DEFAULT_OPTIONS = {
5737
5769
  devicePixelRatio: typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1,
5738
5770
  backgroundColor: "#ffffff",
@@ -5797,7 +5829,7 @@ class CanvasRenderer {
5797
5829
  applyPatch(patch) {
5798
5830
  switch (patch.type) {
5799
5831
  case "create":
5800
- this.onCreate(patch.id, patch.element_type, patch.props || {});
5832
+ this.onCreate(patch.id, patch.elementType, patch.props || {});
5801
5833
  break;
5802
5834
  case "setProp":
5803
5835
  this.onSetProp(patch.id, patch.name, patch.value);
@@ -5806,10 +5838,10 @@ class CanvasRenderer {
5806
5838
  this.onSetText(patch.id, patch.text);
5807
5839
  break;
5808
5840
  case "insert":
5809
- this.onInsert(patch.parent_id, patch.id, patch.before_id);
5841
+ this.onInsert(patch.parentId, patch.id, patch.beforeId);
5810
5842
  break;
5811
5843
  case "move":
5812
- this.onMove(patch.parent_id, patch.id, patch.before_id);
5844
+ this.onMove(patch.parentId, patch.id, patch.beforeId);
5813
5845
  break;
5814
5846
  case "remove":
5815
5847
  this.onRemove(patch.id);
@@ -5940,7 +5972,7 @@ class CanvasRenderer {
5940
5972
  const elapsed = performance.now() - startTime;
5941
5973
  this.frameCount++;
5942
5974
  if (performance.now() - this.lastFrameTime > 1000) {
5943
- console.log(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);
5975
+ log9.debug(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);
5944
5976
  this.frameCount = 0;
5945
5977
  this.lastFrameTime = performance.now();
5946
5978
  }
@@ -6001,4 +6033,4 @@ export {
6001
6033
  ApplicatorRegistry
6002
6034
  };
6003
6035
 
6004
- //# debugId=84FDE1811854F3EC64756E2164756E21
6036
+ //# debugId=4FAEC1A16542965464756E2164756E21