@hypen-space/web 0.4.36 → 0.4.38

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 (149) hide show
  1. package/README.md +7 -6
  2. package/dist/canvas/accessibility.js +174 -174
  3. package/dist/canvas/accessibility.js.map +1 -10
  4. package/dist/canvas/events.js +264 -360
  5. package/dist/canvas/events.js.map +1 -11
  6. package/dist/canvas/index.js +11 -47
  7. package/dist/canvas/index.js.map +1 -9
  8. package/dist/canvas/input.js +178 -289
  9. package/dist/canvas/input.js.map +1 -11
  10. package/dist/canvas/layout.js +349 -547
  11. package/dist/canvas/layout.js.map +1 -12
  12. package/dist/canvas/paint.js +1122 -1146
  13. package/dist/canvas/paint.js.map +1 -12
  14. package/dist/canvas/renderer.js +352 -2259
  15. package/dist/canvas/renderer.js.map +1 -17
  16. package/dist/canvas/text.js +129 -264
  17. package/dist/canvas/text.js.map +1 -11
  18. package/dist/canvas/types.js +7 -2
  19. package/dist/canvas/types.js.map +1 -9
  20. package/dist/canvas/utils.js +158 -161
  21. package/dist/canvas/utils.js.map +1 -10
  22. package/dist/dom/applicators/advanced-layout.js +105 -138
  23. package/dist/dom/applicators/advanced-layout.js.map +1 -10
  24. package/dist/dom/applicators/background.js +36 -76
  25. package/dist/dom/applicators/background.js.map +1 -10
  26. package/dist/dom/applicators/border.js +82 -106
  27. package/dist/dom/applicators/border.js.map +1 -10
  28. package/dist/dom/applicators/color.js +17 -58
  29. package/dist/dom/applicators/color.js.map +1 -10
  30. package/dist/dom/applicators/display.js +39 -79
  31. package/dist/dom/applicators/display.js.map +1 -10
  32. package/dist/dom/applicators/effects.js +121 -147
  33. package/dist/dom/applicators/effects.js.map +1 -10
  34. package/dist/dom/applicators/events.js +413 -450
  35. package/dist/dom/applicators/events.js.map +1 -11
  36. package/dist/dom/applicators/font.js +119 -140
  37. package/dist/dom/applicators/font.js.map +1 -10
  38. package/dist/dom/applicators/index.js +386 -1770
  39. package/dist/dom/applicators/index.js.map +1 -26
  40. package/dist/dom/applicators/layout.js +143 -149
  41. package/dist/dom/applicators/layout.js.map +1 -10
  42. package/dist/dom/applicators/margin.js +64 -105
  43. package/dist/dom/applicators/margin.js.map +1 -10
  44. package/dist/dom/applicators/padding.js +64 -105
  45. package/dist/dom/applicators/padding.js.map +1 -10
  46. package/dist/dom/applicators/size.js +169 -172
  47. package/dist/dom/applicators/size.js.map +1 -10
  48. package/dist/dom/applicators/transform.js +73 -114
  49. package/dist/dom/applicators/transform.js.map +1 -10
  50. package/dist/dom/applicators/transition.js +47 -88
  51. package/dist/dom/applicators/transition.js.map +1 -10
  52. package/dist/dom/applicators/types.js +7 -2
  53. package/dist/dom/applicators/types.js.map +1 -9
  54. package/dist/dom/applicators/typography.js +68 -109
  55. package/dist/dom/applicators/typography.js.map +1 -10
  56. package/dist/dom/canvas/index.js +49 -83
  57. package/dist/dom/canvas/index.js.map +1 -10
  58. package/dist/dom/components/app.js +16 -63
  59. package/dist/dom/components/app.js.map +1 -10
  60. package/dist/dom/components/audio.js +31 -76
  61. package/dist/dom/components/audio.js.map +1 -10
  62. package/dist/dom/components/avatar.js +41 -87
  63. package/dist/dom/components/avatar.js.map +1 -10
  64. package/dist/dom/components/badge.js +35 -83
  65. package/dist/dom/components/badge.js.map +1 -10
  66. package/dist/dom/components/button.js +26 -69
  67. package/dist/dom/components/button.js.map +1 -10
  68. package/dist/dom/components/card.js +13 -63
  69. package/dist/dom/components/card.js.map +1 -10
  70. package/dist/dom/components/center.js +21 -65
  71. package/dist/dom/components/center.js.map +1 -10
  72. package/dist/dom/components/checkbox.js +37 -82
  73. package/dist/dom/components/checkbox.js.map +1 -10
  74. package/dist/dom/components/column.js +16 -62
  75. package/dist/dom/components/column.js.map +1 -10
  76. package/dist/dom/components/container.js +11 -59
  77. package/dist/dom/components/container.js.map +1 -10
  78. package/dist/dom/components/divider.js +27 -73
  79. package/dist/dom/components/divider.js.map +1 -10
  80. package/dist/dom/components/grid.js +41 -80
  81. package/dist/dom/components/grid.js.map +1 -10
  82. package/dist/dom/components/heading.js +28 -74
  83. package/dist/dom/components/heading.js.map +1 -10
  84. package/dist/dom/components/hypenapp.js +291 -288
  85. package/dist/dom/components/hypenapp.js.map +1 -10
  86. package/dist/dom/components/image.js +18 -67
  87. package/dist/dom/components/image.js.map +1 -10
  88. package/dist/dom/components/index.js +109 -1427
  89. package/dist/dom/components/index.js.map +1 -42
  90. package/dist/dom/components/input.js +19 -69
  91. package/dist/dom/components/input.js.map +1 -10
  92. package/dist/dom/components/link.js +23 -70
  93. package/dist/dom/components/link.js.map +1 -10
  94. package/dist/dom/components/list.js +26 -72
  95. package/dist/dom/components/list.js.map +1 -10
  96. package/dist/dom/components/paragraph.js +14 -63
  97. package/dist/dom/components/paragraph.js.map +1 -10
  98. package/dist/dom/components/progressbar.js +38 -85
  99. package/dist/dom/components/progressbar.js.map +1 -10
  100. package/dist/dom/components/route.js +27 -73
  101. package/dist/dom/components/route.js.map +1 -10
  102. package/dist/dom/components/router.js +15 -62
  103. package/dist/dom/components/router.js.map +1 -10
  104. package/dist/dom/components/row.js +25 -70
  105. package/dist/dom/components/row.js.map +1 -10
  106. package/dist/dom/components/select.js +42 -85
  107. package/dist/dom/components/select.js.map +1 -10
  108. package/dist/dom/components/slider.js +31 -76
  109. package/dist/dom/components/slider.js.map +1 -10
  110. package/dist/dom/components/spacer.js +10 -60
  111. package/dist/dom/components/spacer.js.map +1 -10
  112. package/dist/dom/components/spinner.js +41 -88
  113. package/dist/dom/components/spinner.js.map +1 -10
  114. package/dist/dom/components/stack.js +19 -67
  115. package/dist/dom/components/stack.js.map +1 -10
  116. package/dist/dom/components/switch.js +50 -93
  117. package/dist/dom/components/switch.js.map +1 -10
  118. package/dist/dom/components/text.js +24 -69
  119. package/dist/dom/components/text.js.map +1 -10
  120. package/dist/dom/components/textarea.js +35 -79
  121. package/dist/dom/components/textarea.js.map +1 -10
  122. package/dist/dom/components/video.js +35 -79
  123. package/dist/dom/components/video.js.map +1 -10
  124. package/dist/dom/debug.js +159 -160
  125. package/dist/dom/debug.js.map +1 -10
  126. package/dist/dom/element-data.js +181 -143
  127. package/dist/dom/element-data.js.map +1 -10
  128. package/dist/dom/events.js +133 -142
  129. package/dist/dom/events.js.map +1 -10
  130. package/dist/dom/index.js +11 -48
  131. package/dist/dom/index.js.map +1 -9
  132. package/dist/dom/renderer.js +311 -3596
  133. package/dist/dom/renderer.js.map +1 -62
  134. package/dist/index.d.ts +2 -2
  135. package/dist/index.js +36 -53
  136. package/dist/index.js.map +1 -9
  137. package/package.json +2 -16
  138. package/src/canvas/QUICKSTART.md +4 -3
  139. package/src/canvas/README.md +3 -2
  140. package/src/dom/README.md +4 -3
  141. package/src/index.ts +2 -2
  142. package/dist/client.d.ts +0 -19
  143. package/dist/client.js +0 -45
  144. package/dist/client.js.map +0 -9
  145. package/dist/hypen.d.ts +0 -140
  146. package/dist/hypen.js +0 -3909
  147. package/dist/hypen.js.map +0 -63
  148. package/src/client.ts +0 -20
  149. package/src/hypen.ts +0 -556
@@ -1,174 +1,171 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- function __accessProp(key) {
6
- return this[key];
7
- }
8
- var __toCommonJS = (from) => {
9
- var entry = (__moduleCache ??= new WeakMap).get(from), desc;
10
- if (entry)
11
- return entry;
12
- entry = __defProp({}, "__esModule", { value: true });
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (var key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(entry, key))
16
- __defProp(entry, key, {
17
- get: __accessProp.bind(from, key),
18
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
- });
20
- }
21
- __moduleCache.set(from, entry);
22
- return entry;
23
- };
24
- var __moduleCache;
25
- var __returnValue = (v) => v;
26
- function __exportSetter(name, newValue) {
27
- this[name] = __returnValue.bind(null, newValue);
28
- }
29
- var __export = (target, all) => {
30
- for (var name in all)
31
- __defProp(target, name, {
32
- get: all[name],
33
- enumerable: true,
34
- configurable: true,
35
- set: __exportSetter.bind(all, name)
36
- });
37
- };
38
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
39
-
40
- // src/canvas/utils.ts
41
- function parseSpacing(value) {
42
- if (typeof value === "number") {
43
- return { top: value, right: value, bottom: value, left: value };
44
- }
45
- if (typeof value === "string") {
46
- const parts = value.split(/\s+/).map((v) => parseFloat(v) || 0);
47
- if (parts.length === 1) {
48
- return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };
1
+ /**
2
+ * Canvas Renderer Utilities
3
+ *
4
+ * Common utility functions
5
+ */
6
+ /**
7
+ * Parse spacing value (margin, padding)
8
+ * Supports: number, "10", "10 20", "10 20 30 40"
9
+ */
10
+ export function parseSpacing(value) {
11
+ if (typeof value === "number") {
12
+ return { top: value, right: value, bottom: value, left: value };
49
13
  }
50
- if (parts.length === 2) {
51
- return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
14
+ if (typeof value === "string") {
15
+ const parts = value.split(/\s+/).map((v) => parseFloat(v) || 0);
16
+ if (parts.length === 1) {
17
+ return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };
18
+ }
19
+ if (parts.length === 2) {
20
+ return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
21
+ }
22
+ if (parts.length === 4) {
23
+ return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
24
+ }
52
25
  }
53
- if (parts.length === 4) {
54
- return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
26
+ if (typeof value === "object" && value !== null) {
27
+ return {
28
+ top: parseFloat(value.top) || 0,
29
+ right: parseFloat(value.right) || 0,
30
+ bottom: parseFloat(value.bottom) || 0,
31
+ left: parseFloat(value.left) || 0,
32
+ };
55
33
  }
56
- }
57
- if (typeof value === "object" && value !== null) {
58
- return {
59
- top: parseFloat(value.top) || 0,
60
- right: parseFloat(value.right) || 0,
61
- bottom: parseFloat(value.bottom) || 0,
62
- left: parseFloat(value.left) || 0
63
- };
64
- }
65
- return { top: 0, right: 0, bottom: 0, left: 0 };
34
+ return { top: 0, right: 0, bottom: 0, left: 0 };
66
35
  }
67
- function parseSize(value) {
68
- if (typeof value === "number")
69
- return value;
70
- if (typeof value === "string") {
71
- if (value === "auto")
72
- return null;
73
- const num = parseFloat(value);
74
- return isNaN(num) ? null : num;
75
- }
76
- return null;
36
+ /**
37
+ * Parse size value (width, height)
38
+ * Returns pixel value or null for "auto"
39
+ */
40
+ export function parseSize(value) {
41
+ if (typeof value === "number")
42
+ return value;
43
+ if (typeof value === "string") {
44
+ if (value === "auto")
45
+ return null;
46
+ const num = parseFloat(value);
47
+ return isNaN(num) ? null : num;
48
+ }
49
+ return null;
77
50
  }
78
- function isPointInRect(point, rect) {
79
- return point.x >= rect.x && point.x <= rect.x + rect.width && point.y >= rect.y && point.y <= rect.y + rect.height;
51
+ /**
52
+ * Check if point is inside rectangle
53
+ */
54
+ export function isPointInRect(point, rect) {
55
+ return (point.x >= rect.x &&
56
+ point.x <= rect.x + rect.width &&
57
+ point.y >= rect.y &&
58
+ point.y <= rect.y + rect.height);
80
59
  }
81
- function isPointInRoundedRect(point, rect, radius) {
82
- const { x, y, width, height } = rect;
83
- if (!isPointInRect(point, rect))
84
- return false;
85
- if (radius <= 0)
60
+ /**
61
+ * Check if point is inside rounded rectangle
62
+ */
63
+ export function isPointInRoundedRect(point, rect, radius) {
64
+ const { x, y, width, height } = rect;
65
+ // Quick reject if outside bounding box
66
+ if (!isPointInRect(point, rect))
67
+ return false;
68
+ // No radius means simple rectangle
69
+ if (radius <= 0)
70
+ return true;
71
+ const px = point.x;
72
+ const py = point.y;
73
+ // Check corners
74
+ // Top-left
75
+ if (px < x + radius && py < y + radius) {
76
+ return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);
77
+ }
78
+ // Top-right
79
+ if (px > x + width - radius && py < y + radius) {
80
+ return (Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + radius), 2) <=
81
+ Math.pow(radius, 2));
82
+ }
83
+ // Bottom-left
84
+ if (px < x + radius && py > y + height - radius) {
85
+ return (Math.pow(px - (x + radius), 2) + Math.pow(py - (y + height - radius), 2) <=
86
+ Math.pow(radius, 2));
87
+ }
88
+ // Bottom-right
89
+ if (px > x + width - radius && py > y + height - radius) {
90
+ return (Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + height - radius), 2) <=
91
+ Math.pow(radius, 2));
92
+ }
93
+ // Inside rectangle
86
94
  return true;
87
- const px = point.x;
88
- const py = point.y;
89
- if (px < x + radius && py < y + radius) {
90
- return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);
91
- }
92
- if (px > x + width - radius && py < y + radius) {
93
- return Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);
94
- }
95
- if (px < x + radius && py > y + height - radius) {
96
- return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + height - radius), 2) <= Math.pow(radius, 2);
97
- }
98
- if (px > x + width - radius && py > y + height - radius) {
99
- return Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + height - radius), 2) <= Math.pow(radius, 2);
100
- }
101
- return true;
102
95
  }
103
- function mergeRects(rects) {
104
- if (rects.length === 0)
105
- return null;
106
- if (rects.length === 1)
107
- return rects[0];
108
- let minX = Infinity;
109
- let minY = Infinity;
110
- let maxX = -Infinity;
111
- let maxY = -Infinity;
112
- for (const rect of rects) {
113
- minX = Math.min(minX, rect.x);
114
- minY = Math.min(minY, rect.y);
115
- maxX = Math.max(maxX, rect.x + rect.width);
116
- maxY = Math.max(maxY, rect.y + rect.height);
117
- }
118
- return {
119
- x: minX,
120
- y: minY,
121
- width: maxX - minX,
122
- height: maxY - minY
123
- };
124
- }
125
- function createFontString(fontSize, fontWeight, fontFamily) {
126
- return `${fontWeight} ${fontSize}px ${fontFamily}`;
96
+ /**
97
+ * Merge rectangles into bounding box
98
+ */
99
+ export function mergeRects(rects) {
100
+ if (rects.length === 0)
101
+ return null;
102
+ if (rects.length === 1)
103
+ return rects[0];
104
+ let minX = Infinity;
105
+ let minY = Infinity;
106
+ let maxX = -Infinity;
107
+ let maxY = -Infinity;
108
+ for (const rect of rects) {
109
+ minX = Math.min(minX, rect.x);
110
+ minY = Math.min(minY, rect.y);
111
+ maxX = Math.max(maxX, rect.x + rect.width);
112
+ maxY = Math.max(maxY, rect.y + rect.height);
113
+ }
114
+ return {
115
+ x: minX,
116
+ y: minY,
117
+ width: maxX - minX,
118
+ height: maxY - minY,
119
+ };
127
120
  }
128
- function walkTree(node, callback) {
129
- callback(node);
130
- for (const child of node.children) {
131
- walkTree(child, callback);
132
- }
121
+ /**
122
+ * Create a canvas font string from font style
123
+ */
124
+ export function createFontString(fontSize, fontWeight, fontFamily) {
125
+ return `${fontWeight} ${fontSize}px ${fontFamily}`;
133
126
  }
134
- function findNodeById(root, id) {
135
- if (root.id === id)
136
- return root;
137
- for (const child of root.children) {
138
- const found = findNodeById(child, id);
139
- if (found)
140
- return found;
141
- }
142
- return null;
127
+ /**
128
+ * Walk tree depth-first
129
+ */
130
+ export function walkTree(node, callback) {
131
+ callback(node);
132
+ for (const child of node.children) {
133
+ walkTree(child, callback);
134
+ }
143
135
  }
144
- function getAbsoluteBounds(node) {
145
- if (!node.layout)
136
+ /**
137
+ * Find node by ID in tree
138
+ */
139
+ export function findNodeById(root, id) {
140
+ if (root.id === id)
141
+ return root;
142
+ for (const child of root.children) {
143
+ const found = findNodeById(child, id);
144
+ if (found)
145
+ return found;
146
+ }
146
147
  return null;
147
- let x = node.layout.x;
148
- let y = node.layout.y;
149
- let current = node.parent;
150
- while (current && current.layout) {
151
- x += current.layout.contentX;
152
- y += current.layout.contentY;
153
- current = current.parent;
154
- }
155
- return {
156
- x,
157
- y,
158
- width: node.layout.width,
159
- height: node.layout.height
160
- };
161
148
  }
162
- export {
163
- walkTree,
164
- parseSpacing,
165
- parseSize,
166
- mergeRects,
167
- isPointInRoundedRect,
168
- isPointInRect,
169
- getAbsoluteBounds,
170
- findNodeById,
171
- createFontString
172
- };
173
-
174
- //# debugId=EE072C96B621813664756E2164756E21
149
+ /**
150
+ * Get absolute bounds of node (including transformations)
151
+ */
152
+ export function getAbsoluteBounds(node) {
153
+ if (!node.layout)
154
+ return null;
155
+ let x = node.layout.x;
156
+ let y = node.layout.y;
157
+ // Walk up tree to accumulate offsets
158
+ let current = node.parent;
159
+ while (current && current.layout) {
160
+ x += current.layout.contentX;
161
+ y += current.layout.contentY;
162
+ current = current.parent;
163
+ }
164
+ return {
165
+ x,
166
+ y,
167
+ width: node.layout.width,
168
+ height: node.layout.height,
169
+ };
170
+ }
171
+ //# sourceMappingURL=utils.js.map
@@ -1,10 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/canvas/utils.ts"],
4
- "sourcesContent": [
5
- "/**\n * Canvas Renderer Utilities\n *\n * Common utility functions\n */\n\nimport type { BoxSpacing, Rectangle, Point, VirtualNode } from \"./types.js\";\n\n/**\n * Parse spacing value (margin, padding)\n * Supports: number, \"10\", \"10 20\", \"10 20 30 40\"\n */\nexport function parseSpacing(value: any): BoxSpacing {\n if (typeof value === \"number\") {\n return { top: value, right: value, bottom: value, left: value };\n }\n\n if (typeof value === \"string\") {\n const parts = value.split(/\\s+/).map((v) => parseFloat(v) || 0);\n if (parts.length === 1) {\n return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };\n }\n if (parts.length === 2) {\n return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };\n }\n if (parts.length === 4) {\n return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };\n }\n }\n\n if (typeof value === \"object\" && value !== null) {\n return {\n top: parseFloat(value.top) || 0,\n right: parseFloat(value.right) || 0,\n bottom: parseFloat(value.bottom) || 0,\n left: parseFloat(value.left) || 0,\n };\n }\n\n return { top: 0, right: 0, bottom: 0, left: 0 };\n}\n\n/**\n * Parse size value (width, height)\n * Returns pixel value or null for \"auto\"\n */\nexport function parseSize(value: any): number | null {\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\") {\n if (value === \"auto\") return null;\n const num = parseFloat(value);\n return isNaN(num) ? null : num;\n }\n return null;\n}\n\n/**\n * Check if point is inside rectangle\n */\nexport function isPointInRect(point: Point, rect: Rectangle): boolean {\n return (\n point.x >= rect.x &&\n point.x <= rect.x + rect.width &&\n point.y >= rect.y &&\n point.y <= rect.y + rect.height\n );\n}\n\n/**\n * Check if point is inside rounded rectangle\n */\nexport function isPointInRoundedRect(\n point: Point,\n rect: Rectangle,\n radius: number\n): boolean {\n const { x, y, width, height } = rect;\n\n // Quick reject if outside bounding box\n if (!isPointInRect(point, rect)) return false;\n\n // No radius means simple rectangle\n if (radius <= 0) return true;\n\n const px = point.x;\n const py = point.y;\n\n // Check corners\n // Top-left\n if (px < x + radius && py < y + radius) {\n return Math.pow(px - (x + radius), 2) + Math.pow(py - (y + radius), 2) <= Math.pow(radius, 2);\n }\n\n // Top-right\n if (px > x + width - radius && py < y + radius) {\n return (\n Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Bottom-left\n if (px < x + radius && py > y + height - radius) {\n return (\n Math.pow(px - (x + radius), 2) + Math.pow(py - (y + height - radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Bottom-right\n if (px > x + width - radius && py > y + height - radius) {\n return (\n Math.pow(px - (x + width - radius), 2) + Math.pow(py - (y + height - radius), 2) <=\n Math.pow(radius, 2)\n );\n }\n\n // Inside rectangle\n return true;\n}\n\n/**\n * Merge rectangles into bounding box\n */\nexport function mergeRects(rects: Rectangle[]): Rectangle | null {\n if (rects.length === 0) return null;\n if (rects.length === 1) return rects[0];\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const rect of rects) {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\n/**\n * Create a canvas font string from font style\n */\nexport function createFontString(\n fontSize: number,\n fontWeight: string | number,\n fontFamily: string\n): string {\n return `${fontWeight} ${fontSize}px ${fontFamily}`;\n}\n\n/**\n * Walk tree depth-first\n */\nexport function walkTree(node: VirtualNode, callback: (node: VirtualNode) => void): void {\n callback(node);\n for (const child of node.children) {\n walkTree(child, callback);\n }\n}\n\n/**\n * Find node by ID in tree\n */\nexport function findNodeById(root: VirtualNode, id: string): VirtualNode | null {\n if (root.id === id) return root;\n\n for (const child of root.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n\n return null;\n}\n\n/**\n * Get absolute bounds of node (including transformations)\n */\nexport function getAbsoluteBounds(node: VirtualNode): Rectangle | null {\n if (!node.layout) return null;\n\n let x = node.layout.x;\n let y = node.layout.y;\n\n // Walk up tree to accumulate offsets\n let current = node.parent;\n while (current && current.layout) {\n x += current.layout.contentX;\n y += current.layout.contentY;\n current = current.parent;\n }\n\n return {\n x,\n y,\n width: node.layout.width,\n height: node.layout.height,\n };\n}\n\n\n\n\n\n\n\n\n\n\n\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "EE072C96B621813664756E2164756E21",
9
- "names": []
10
- }
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/canvas/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAU;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACnC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACrC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAU;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,IAAe;IACzD,OAAO,CACL,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;QAC9B,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,IAAe,EACf,MAAc;IAEd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC,uCAAuC;IACvC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9C,mCAAmC;IACnC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAEnB,gBAAgB;IAChB,WAAW;IACX,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,YAAY;IACZ,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;QAC/C,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,cAAc;IACd,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QAChD,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,eAAe;IACf,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QACxD,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,KAAK,EAAE,IAAI,GAAG,IAAI;QAClB,MAAM,EAAE,IAAI,GAAG,IAAI;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,UAA2B,EAC3B,UAAkB;IAElB,OAAO,GAAG,UAAU,IAAI,QAAQ,MAAM,UAAU,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAiB,EAAE,QAAqC;IAC/E,QAAQ,CAAC,IAAI,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAiB,EAAE,EAAU;IACxD,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtB,qCAAqC;IACrC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,CAAC;QACD,CAAC;QACD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;QACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC"}
@@ -1,139 +1,106 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- function __accessProp(key) {
6
- return this[key];
7
- }
8
- var __toCommonJS = (from) => {
9
- var entry = (__moduleCache ??= new WeakMap).get(from), desc;
10
- if (entry)
11
- return entry;
12
- entry = __defProp({}, "__esModule", { value: true });
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (var key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(entry, key))
16
- __defProp(entry, key, {
17
- get: __accessProp.bind(from, key),
18
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
- });
20
- }
21
- __moduleCache.set(from, entry);
22
- return entry;
1
+ /**
2
+ * Advanced Layout Applicators (Flexbox, Grid, Positioning)
3
+ */
4
+ export const advancedLayoutHandlers = {
5
+ // Flexbox properties
6
+ flexDirection: (el, value) => {
7
+ el.style.flexDirection = String(value);
8
+ },
9
+ flexWrap: (el, value) => {
10
+ el.style.flexWrap = String(value);
11
+ },
12
+ flexBasis: (el, value) => {
13
+ el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
14
+ },
15
+ alignContent: (el, value) => {
16
+ el.style.alignContent = String(value);
17
+ },
18
+ order: (el, value) => {
19
+ el.style.order = String(value);
20
+ },
21
+ // Grid properties
22
+ gridTemplateColumns: (el, value) => {
23
+ el.style.gridTemplateColumns = String(value);
24
+ },
25
+ gridTemplateRows: (el, value) => {
26
+ el.style.gridTemplateRows = String(value);
27
+ },
28
+ // Unified API aliases (simpler names)
29
+ gridColumns: (el, value) => {
30
+ // Support number (repeat) or string (CSS value)
31
+ if (typeof value === "number") {
32
+ el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
33
+ }
34
+ else {
35
+ el.style.gridTemplateColumns = String(value);
36
+ }
37
+ },
38
+ gridRows: (el, value) => {
39
+ // Support number (repeat) or string (CSS value)
40
+ if (typeof value === "number") {
41
+ el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
42
+ }
43
+ else {
44
+ el.style.gridTemplateRows = String(value);
45
+ }
46
+ },
47
+ gridTemplateAreas: (el, value) => {
48
+ el.style.gridTemplateAreas = String(value);
49
+ },
50
+ gridColumn: (el, value) => {
51
+ el.style.gridColumn = String(value);
52
+ },
53
+ gridRow: (el, value) => {
54
+ el.style.gridRow = String(value);
55
+ },
56
+ gridArea: (el, value) => {
57
+ el.style.gridArea = String(value);
58
+ },
59
+ gridAutoFlow: (el, value) => {
60
+ el.style.gridAutoFlow = String(value);
61
+ },
62
+ gridAutoColumns: (el, value) => {
63
+ el.style.gridAutoColumns = String(value);
64
+ },
65
+ gridAutoRows: (el, value) => {
66
+ el.style.gridAutoRows = String(value);
67
+ },
68
+ rowGap: (el, value) => {
69
+ el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
70
+ },
71
+ columnGap: (el, value) => {
72
+ el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
73
+ },
74
+ placeItems: (el, value) => {
75
+ el.style.placeItems = String(value);
76
+ },
77
+ placeContent: (el, value) => {
78
+ el.style.placeContent = String(value);
79
+ },
80
+ placeSelf: (el, value) => {
81
+ el.style.placeSelf = String(value);
82
+ },
83
+ // Positioning
84
+ position: (el, value) => {
85
+ el.style.position = String(value);
86
+ },
87
+ top: (el, value) => {
88
+ el.style.top = typeof value === "number" ? `${value}px` : String(value);
89
+ },
90
+ right: (el, value) => {
91
+ el.style.right = typeof value === "number" ? `${value}px` : String(value);
92
+ },
93
+ bottom: (el, value) => {
94
+ el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
95
+ },
96
+ left: (el, value) => {
97
+ el.style.left = typeof value === "number" ? `${value}px` : String(value);
98
+ },
99
+ inset: (el, value) => {
100
+ el.style.inset = typeof value === "number" ? `${value}px` : String(value);
101
+ },
102
+ zIndex: (el, value) => {
103
+ el.style.zIndex = String(value);
104
+ },
23
105
  };
24
- var __moduleCache;
25
- var __returnValue = (v) => v;
26
- function __exportSetter(name, newValue) {
27
- this[name] = __returnValue.bind(null, newValue);
28
- }
29
- var __export = (target, all) => {
30
- for (var name in all)
31
- __defProp(target, name, {
32
- get: all[name],
33
- enumerable: true,
34
- configurable: true,
35
- set: __exportSetter.bind(all, name)
36
- });
37
- };
38
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
39
-
40
- // src/dom/applicators/advanced-layout.ts
41
- var advancedLayoutHandlers = {
42
- flexDirection: (el, value) => {
43
- el.style.flexDirection = String(value);
44
- },
45
- flexWrap: (el, value) => {
46
- el.style.flexWrap = String(value);
47
- },
48
- flexBasis: (el, value) => {
49
- el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
50
- },
51
- alignContent: (el, value) => {
52
- el.style.alignContent = String(value);
53
- },
54
- order: (el, value) => {
55
- el.style.order = String(value);
56
- },
57
- gridTemplateColumns: (el, value) => {
58
- el.style.gridTemplateColumns = String(value);
59
- },
60
- gridTemplateRows: (el, value) => {
61
- el.style.gridTemplateRows = String(value);
62
- },
63
- gridColumns: (el, value) => {
64
- if (typeof value === "number") {
65
- el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
66
- } else {
67
- el.style.gridTemplateColumns = String(value);
68
- }
69
- },
70
- gridRows: (el, value) => {
71
- if (typeof value === "number") {
72
- el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
73
- } else {
74
- el.style.gridTemplateRows = String(value);
75
- }
76
- },
77
- gridTemplateAreas: (el, value) => {
78
- el.style.gridTemplateAreas = String(value);
79
- },
80
- gridColumn: (el, value) => {
81
- el.style.gridColumn = String(value);
82
- },
83
- gridRow: (el, value) => {
84
- el.style.gridRow = String(value);
85
- },
86
- gridArea: (el, value) => {
87
- el.style.gridArea = String(value);
88
- },
89
- gridAutoFlow: (el, value) => {
90
- el.style.gridAutoFlow = String(value);
91
- },
92
- gridAutoColumns: (el, value) => {
93
- el.style.gridAutoColumns = String(value);
94
- },
95
- gridAutoRows: (el, value) => {
96
- el.style.gridAutoRows = String(value);
97
- },
98
- rowGap: (el, value) => {
99
- el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
100
- },
101
- columnGap: (el, value) => {
102
- el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
103
- },
104
- placeItems: (el, value) => {
105
- el.style.placeItems = String(value);
106
- },
107
- placeContent: (el, value) => {
108
- el.style.placeContent = String(value);
109
- },
110
- placeSelf: (el, value) => {
111
- el.style.placeSelf = String(value);
112
- },
113
- position: (el, value) => {
114
- el.style.position = String(value);
115
- },
116
- top: (el, value) => {
117
- el.style.top = typeof value === "number" ? `${value}px` : String(value);
118
- },
119
- right: (el, value) => {
120
- el.style.right = typeof value === "number" ? `${value}px` : String(value);
121
- },
122
- bottom: (el, value) => {
123
- el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
124
- },
125
- left: (el, value) => {
126
- el.style.left = typeof value === "number" ? `${value}px` : String(value);
127
- },
128
- inset: (el, value) => {
129
- el.style.inset = typeof value === "number" ? `${value}px` : String(value);
130
- },
131
- zIndex: (el, value) => {
132
- el.style.zIndex = String(value);
133
- }
134
- };
135
- export {
136
- advancedLayoutHandlers
137
- };
138
-
139
- //# debugId=A1A47995F98B0F1B64756E2164756E21
106
+ //# sourceMappingURL=advanced-layout.js.map
@@ -1,10 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/dom/applicators/advanced-layout.ts"],
4
- "sourcesContent": [
5
- "/**\n * Advanced Layout Applicators (Flexbox, Grid, Positioning)\n */\n\nimport type { ApplicatorHandler } from \"./index.js\";\nimport { mapAlignmentValue } from \"./layout.js\";\n\nexport const advancedLayoutHandlers: Record<string, ApplicatorHandler> = {\n // Flexbox properties\n flexDirection: (el, value) => {\n el.style.flexDirection = String(value);\n },\n\n flexWrap: (el, value) => {\n el.style.flexWrap = String(value);\n },\n\n flexBasis: (el, value) => {\n el.style.flexBasis = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n alignContent: (el, value) => {\n el.style.alignContent = String(value);\n },\n\n order: (el, value) => {\n el.style.order = String(value);\n },\n\n // Grid properties\n gridTemplateColumns: (el, value) => {\n el.style.gridTemplateColumns = String(value);\n },\n\n gridTemplateRows: (el, value) => {\n el.style.gridTemplateRows = String(value);\n },\n\n // Unified API aliases (simpler names)\n gridColumns: (el, value) => {\n // Support number (repeat) or string (CSS value)\n if (typeof value === \"number\") {\n el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;\n } else {\n el.style.gridTemplateColumns = String(value);\n }\n },\n\n gridRows: (el, value) => {\n // Support number (repeat) or string (CSS value)\n if (typeof value === \"number\") {\n el.style.gridTemplateRows = `repeat(${value}, 1fr)`;\n } else {\n el.style.gridTemplateRows = String(value);\n }\n },\n\n gridTemplateAreas: (el, value) => {\n el.style.gridTemplateAreas = String(value);\n },\n\n gridColumn: (el, value) => {\n el.style.gridColumn = String(value);\n },\n\n gridRow: (el, value) => {\n el.style.gridRow = String(value);\n },\n\n gridArea: (el, value) => {\n el.style.gridArea = String(value);\n },\n\n gridAutoFlow: (el, value) => {\n el.style.gridAutoFlow = String(value);\n },\n\n gridAutoColumns: (el, value) => {\n el.style.gridAutoColumns = String(value);\n },\n\n gridAutoRows: (el, value) => {\n el.style.gridAutoRows = String(value);\n },\n\n rowGap: (el, value) => {\n el.style.rowGap = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n columnGap: (el, value) => {\n el.style.columnGap = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n placeItems: (el, value) => {\n el.style.placeItems = String(value);\n },\n\n placeContent: (el, value) => {\n el.style.placeContent = String(value);\n },\n\n placeSelf: (el, value) => {\n el.style.placeSelf = String(value);\n },\n\n // Positioning\n position: (el, value) => {\n el.style.position = String(value);\n },\n\n top: (el, value) => {\n el.style.top = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n right: (el, value) => {\n el.style.right = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n bottom: (el, value) => {\n el.style.bottom = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n left: (el, value) => {\n el.style.left = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n inset: (el, value) => {\n el.style.inset = typeof value === \"number\" ? `${value}px` : String(value);\n },\n\n zIndex: (el, value) => {\n el.style.zIndex = String(value);\n },\n};\n\n\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "A1A47995F98B0F1B64756E2164756E21",
9
- "names": []
10
- }
1
+ {"version":3,"file":"advanced-layout.js","sourceRoot":"","sources":["../../../src/dom/applicators/advanced-layout.ts"],"names":[],"mappings":"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"}