@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
@@ -1,1715 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
6
- var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
8
- if (entry)
9
- return entry;
10
- entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
16
- __moduleCache.set(from, entry);
17
- return entry;
18
- };
19
- var __export = (target, all) => {
20
- for (var name in all)
21
- __defProp(target, name, {
22
- get: all[name],
23
- enumerable: true,
24
- configurable: true,
25
- set: (newValue) => all[name] = () => newValue
26
- });
27
- };
28
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
29
-
30
- // src/dom/applicators/padding.ts
31
- var exports_padding = {};
32
- __export(exports_padding, {
33
- paddingHandler: () => paddingHandler
34
- });
35
- var paddingHandler = (el, value) => {
36
- if (typeof value === "number") {
37
- el.style.padding = `${value}px`;
38
- } else if (typeof value === "object") {
39
- if (value.left !== undefined)
40
- el.style.paddingLeft = `${value.left}px`;
41
- if (value.right !== undefined)
42
- el.style.paddingRight = `${value.right}px`;
43
- if (value.top !== undefined)
44
- el.style.paddingTop = `${value.top}px`;
45
- if (value.bottom !== undefined)
46
- el.style.paddingBottom = `${value.bottom}px`;
47
- } else {
48
- el.style.padding = String(value);
49
- }
50
- };
51
-
52
- // src/dom/applicators/margin.ts
53
- var exports_margin = {};
54
- __export(exports_margin, {
55
- marginHandler: () => marginHandler
56
- });
57
- var marginHandler = (el, value) => {
58
- if (typeof value === "number") {
59
- el.style.margin = `${value}px`;
60
- } else if (typeof value === "object") {
61
- if (value.left !== undefined)
62
- el.style.marginLeft = `${value.left}px`;
63
- if (value.right !== undefined)
64
- el.style.marginRight = `${value.right}px`;
65
- if (value.top !== undefined)
66
- el.style.marginTop = `${value.top}px`;
67
- if (value.bottom !== undefined)
68
- el.style.marginBottom = `${value.bottom}px`;
69
- } else {
70
- el.style.margin = String(value);
71
- }
72
- };
73
-
74
- // src/dom/applicators/color.ts
75
- var exports_color = {};
76
- __export(exports_color, {
77
- colorHandlers: () => colorHandlers
78
- });
79
- var colorHandlers;
80
- var init_color = __esm(() => {
81
- colorHandlers = {
82
- color: (el, value) => {
83
- el.style.color = String(value);
84
- },
85
- backgroundColor: (el, value) => {
86
- el.style.backgroundColor = String(value);
87
- },
88
- borderColor: (el, value) => {
89
- el.style.borderColor = String(value);
90
- },
91
- opacity: (el, value) => {
92
- el.style.opacity = String(value);
93
- }
94
- };
95
- });
96
-
97
- // src/dom/applicators/border.ts
98
- var exports_border = {};
99
- __export(exports_border, {
100
- borderHandlers: () => borderHandlers
101
- });
102
- var borderHandlers;
103
- var init_border = __esm(() => {
104
- borderHandlers = {
105
- border: (el, value) => {
106
- if (typeof value === "number") {
107
- el.style.borderWidth = `${value}px`;
108
- el.style.borderStyle = "solid";
109
- } else if (typeof value === "object" && value !== null) {
110
- const obj = value;
111
- if (obj.width !== undefined) {
112
- el.style.borderWidth = typeof obj.width === "number" ? `${obj.width}px` : String(obj.width);
113
- }
114
- if (obj.color !== undefined) {
115
- el.style.borderColor = String(obj.color);
116
- }
117
- if (obj.style !== undefined) {
118
- el.style.borderStyle = String(obj.style);
119
- } else {
120
- el.style.borderStyle = "solid";
121
- }
122
- if (obj.radius !== undefined) {
123
- el.style.borderRadius = typeof obj.radius === "number" ? `${obj.radius}px` : String(obj.radius);
124
- }
125
- } else if (typeof value === "string") {
126
- el.style.border = value;
127
- }
128
- },
129
- borderWidth: (el, value) => {
130
- el.style.borderWidth = typeof value === "number" ? `${value}px` : String(value);
131
- },
132
- borderStyle: (el, value) => {
133
- el.style.borderStyle = String(value);
134
- },
135
- borderRadius: (el, value) => {
136
- if (typeof value === "number") {
137
- el.style.borderRadius = `${value}px`;
138
- } else if (typeof value === "object" && value !== null) {
139
- const obj = value;
140
- const topLeft = obj.topLeft ?? obj.topStart ?? 0;
141
- const topRight = obj.topRight ?? obj.topEnd ?? 0;
142
- const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
143
- const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
144
- const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
145
- el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
146
- } else {
147
- el.style.borderRadius = String(value);
148
- }
149
- },
150
- cornerRadius: (el, value) => {
151
- if (typeof value === "number") {
152
- el.style.borderRadius = `${value}px`;
153
- } else if (typeof value === "object" && value !== null) {
154
- const obj = value;
155
- const topLeft = obj.topLeft ?? obj.topStart ?? 0;
156
- const topRight = obj.topRight ?? obj.topEnd ?? 0;
157
- const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
158
- const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
159
- const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
160
- el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
161
- } else {
162
- el.style.borderRadius = String(value);
163
- }
164
- }
165
- };
166
- });
167
-
168
- // src/dom/applicators/size.ts
169
- var exports_size = {};
170
- __export(exports_size, {
171
- sizeHandlers: () => sizeHandlers
172
- });
173
- function parseSizeValue(value) {
174
- if (value === null || value === undefined)
175
- return null;
176
- if (typeof value === "number") {
177
- return `${value}px`;
178
- }
179
- const str = String(value).trim().toLowerCase();
180
- switch (str) {
181
- case "fill":
182
- case "match_parent":
183
- return "100%";
184
- case "wrap":
185
- case "wrap_content":
186
- case "auto":
187
- return "auto";
188
- case "infinity":
189
- case "inf":
190
- case "max":
191
- return "100%";
192
- }
193
- const match = str.match(/^(-?[\d.]+)\s*(px|dp|pt|%|vw|vh|vmin|vmax|em|rem)?$/);
194
- if (!match) {
195
- return str;
196
- }
197
- const num = parseFloat(match[1]);
198
- const unit = match[2] || "px";
199
- switch (unit) {
200
- case "px":
201
- return `${num}px`;
202
- case "dp":
203
- case "pt":
204
- return `${num}px`;
205
- case "%":
206
- return `${num}%`;
207
- case "vw":
208
- return `${num}vw`;
209
- case "vh":
210
- return `${num}vh`;
211
- case "vmin":
212
- return `${num}vmin`;
213
- case "vmax":
214
- return `${num}vmax`;
215
- case "em":
216
- return `${num}em`;
217
- case "rem":
218
- return `${num}rem`;
219
- default:
220
- return `${num}px`;
221
- }
222
- }
223
- var sizeHandlers;
224
- var init_size = __esm(() => {
225
- sizeHandlers = {
226
- width: (el, value) => {
227
- const size = parseSizeValue(value);
228
- if (size)
229
- el.style.width = size;
230
- },
231
- height: (el, value) => {
232
- const size = parseSizeValue(value);
233
- if (size)
234
- el.style.height = size;
235
- },
236
- minWidth: (el, value) => {
237
- const size = parseSizeValue(value);
238
- if (size)
239
- el.style.minWidth = size;
240
- },
241
- minHeight: (el, value) => {
242
- const size = parseSizeValue(value);
243
- if (size)
244
- el.style.minHeight = size;
245
- },
246
- maxWidth: (el, value) => {
247
- const size = parseSizeValue(value);
248
- if (size)
249
- el.style.maxWidth = size;
250
- },
251
- maxHeight: (el, value) => {
252
- const size = parseSizeValue(value);
253
- if (size)
254
- el.style.maxHeight = size;
255
- },
256
- size: (el, value) => {
257
- if (typeof value === "object" && value !== null) {
258
- const obj = value;
259
- if (obj.width !== undefined) {
260
- const w = parseSizeValue(obj.width);
261
- if (w)
262
- el.style.width = w;
263
- }
264
- if (obj.height !== undefined) {
265
- const h = parseSizeValue(obj.height);
266
- if (h)
267
- el.style.height = h;
268
- }
269
- } else {
270
- const size = parseSizeValue(value);
271
- if (size) {
272
- el.style.width = size;
273
- el.style.height = size;
274
- }
275
- }
276
- },
277
- fillMaxWidth: (el, value) => {
278
- if (value === false)
279
- return;
280
- const fraction = typeof value === "number" ? value : 1;
281
- el.style.width = `${fraction * 100}%`;
282
- },
283
- fillMaxHeight: (el, value) => {
284
- if (value === false)
285
- return;
286
- const fraction = typeof value === "number" ? value : 1;
287
- el.style.height = `${fraction * 100}%`;
288
- },
289
- fillMaxSize: (el, value) => {
290
- if (value === false)
291
- return;
292
- const fraction = typeof value === "number" ? value : 1;
293
- el.style.width = `${fraction * 100}%`;
294
- el.style.height = `${fraction * 100}%`;
295
- }
296
- };
297
- });
298
-
299
- // src/dom/applicators/font.ts
300
- var exports_font = {};
301
- __export(exports_font, {
302
- fontHandlers: () => fontHandlers,
303
- GoogleFonts: () => GoogleFonts
304
- });
305
- function isSystemFont(fontName) {
306
- const normalized = fontName.toLowerCase().trim();
307
- return systemFontKeywords.has(normalized) || normalized.startsWith("-") || normalized.startsWith("ui-");
308
- }
309
- function loadGoogleFont(fontName) {
310
- const normalized = fontName.trim();
311
- if (loadedGoogleFonts.has(normalized) || isSystemFont(normalized)) {
312
- return;
313
- }
314
- loadedGoogleFonts.add(normalized);
315
- const link = document.createElement("link");
316
- link.rel = "stylesheet";
317
- link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(normalized)}:wght@100;200;300;400;500;600;700;800;900&display=swap`;
318
- document.head.appendChild(link);
319
- }
320
- function processFontFamily(value) {
321
- const fonts = value.split(",").map((f) => f.trim().replace(/["']/g, ""));
322
- for (const font of fonts) {
323
- if (!isSystemFont(font)) {
324
- loadGoogleFont(font);
325
- }
326
- }
327
- return fonts.map((f) => {
328
- if (f.includes(" ") && !f.startsWith('"') && !f.startsWith("'")) {
329
- return `"${f}"`;
330
- }
331
- return f;
332
- }).join(", ");
333
- }
334
- var loadedGoogleFonts, systemFontKeywords, fontHandlers, GoogleFonts;
335
- var init_font = __esm(() => {
336
- loadedGoogleFonts = new Set;
337
- systemFontKeywords = new Set([
338
- "default",
339
- "system",
340
- "system-ui",
341
- "inherit",
342
- "initial",
343
- "unset",
344
- "serif",
345
- "sans-serif",
346
- "monospace",
347
- "cursive",
348
- "fantasy",
349
- "-apple-system",
350
- "BlinkMacSystemFont",
351
- "Segoe UI",
352
- "Arial",
353
- "Helvetica",
354
- "Times New Roman",
355
- "Georgia",
356
- "Courier New",
357
- "Verdana",
358
- "Tahoma"
359
- ]);
360
- fontHandlers = {
361
- fontSize: (el, value) => {
362
- el.style.fontSize = typeof value === "number" ? `${value}px` : String(value);
363
- },
364
- fontWeight: (el, value) => {
365
- el.style.fontWeight = String(value);
366
- },
367
- fontFamily: (el, value) => {
368
- const fontValue = String(value);
369
- el.style.fontFamily = processFontFamily(fontValue);
370
- },
371
- textAlign: (el, value) => {
372
- el.style.textAlign = String(value);
373
- },
374
- lineHeight: (el, value) => {
375
- el.style.lineHeight = String(value);
376
- },
377
- fontStyle: (el, value) => {
378
- el.style.fontStyle = String(value);
379
- },
380
- textTransform: (el, value) => {
381
- el.style.textTransform = String(value);
382
- }
383
- };
384
- GoogleFonts = {
385
- preload: loadGoogleFont,
386
- isLoaded: (fontName) => loadedGoogleFonts.has(fontName.trim()),
387
- getLoadedFonts: () => Array.from(loadedGoogleFonts),
388
- popular: [
389
- "Roboto",
390
- "Open Sans",
391
- "Lato",
392
- "Montserrat",
393
- "Poppins",
394
- "Inter",
395
- "Nunito",
396
- "Playfair Display",
397
- "Merriweather",
398
- "Source Code Pro",
399
- "Fira Code",
400
- "JetBrains Mono",
401
- "Raleway",
402
- "Ubuntu",
403
- "Oswald",
404
- "Quicksand",
405
- "Work Sans",
406
- "Rubik",
407
- "Karla",
408
- "DM Sans"
409
- ]
410
- };
411
- });
412
-
413
- // src/dom/applicators/layout.ts
414
- var exports_layout = {};
415
- __export(exports_layout, {
416
- mapAlignmentValue: () => mapAlignmentValue,
417
- layoutHandlers: () => layoutHandlers
418
- });
419
- function mapAlignmentValue(value) {
420
- const v = String(value).toLowerCase();
421
- switch (v) {
422
- case "top":
423
- case "start":
424
- case "leading":
425
- case "left":
426
- return "flex-start";
427
- case "bottom":
428
- case "end":
429
- case "trailing":
430
- case "right":
431
- return "flex-end";
432
- case "center":
433
- return "center";
434
- case "spacebetween":
435
- case "space-between":
436
- return "space-between";
437
- case "spacearound":
438
- case "space-around":
439
- return "space-around";
440
- case "spaceevenly":
441
- case "space-evenly":
442
- return "space-evenly";
443
- default:
444
- return v;
445
- }
446
- }
447
- var layoutHandlers;
448
- var init_layout = __esm(() => {
449
- layoutHandlers = {
450
- verticalAlignment: (el, value) => {
451
- const val = mapAlignmentValue(String(value));
452
- const flexDirection = getComputedStyle(el).flexDirection;
453
- if (flexDirection === "column" || flexDirection === "column-reverse") {
454
- el.style.justifyContent = val;
455
- } else {
456
- el.style.alignItems = val;
457
- }
458
- },
459
- horizontalAlignment: (el, value) => {
460
- const val = mapAlignmentValue(String(value));
461
- const flexDirection = getComputedStyle(el).flexDirection;
462
- if (flexDirection === "column" || flexDirection === "column-reverse") {
463
- el.style.alignItems = val;
464
- } else {
465
- el.style.justifyContent = val;
466
- }
467
- },
468
- horizontalAlign: (el, value) => {
469
- el.style.justifyContent = mapAlignmentValue(String(value));
470
- },
471
- verticalAlign: (el, value) => {
472
- el.style.alignItems = mapAlignmentValue(String(value));
473
- },
474
- gap: (el, value) => {
475
- el.style.gap = typeof value === "number" ? `${value}px` : String(value);
476
- },
477
- weight: (el, value) => {
478
- el.style.flex = String(value);
479
- },
480
- flex: (el, value) => {
481
- el.style.flex = String(value);
482
- },
483
- flexGrow: (el, value) => {
484
- el.style.flexGrow = String(value);
485
- },
486
- flexShrink: (el, value) => {
487
- el.style.flexShrink = String(value);
488
- },
489
- cursor: (el, value) => {
490
- el.style.cursor = String(value);
491
- },
492
- overflow: (el, value) => {
493
- el.style.overflow = String(value);
494
- },
495
- scrollable: (el, value) => {
496
- if (value === true || value === "true") {
497
- el.style.overflow = "auto";
498
- } else if (value === false || value === "false") {
499
- el.style.overflow = "hidden";
500
- } else if (value === "vertical") {
501
- el.style.overflowX = "hidden";
502
- el.style.overflowY = "auto";
503
- } else if (value === "horizontal") {
504
- el.style.overflowX = "auto";
505
- el.style.overflowY = "hidden";
506
- } else if (value === "both") {
507
- el.style.overflow = "auto";
508
- } else {
509
- el.style.overflow = String(value);
510
- }
511
- }
512
- };
513
- });
514
-
515
- // src/dom/element-data.ts
516
- import { getElementDisposables } from "@hypen-space/core";
517
- function getHypenData(element) {
518
- let data = elementDataMap.get(element);
519
- if (!data) {
520
- data = {};
521
- elementDataMap.set(element, data);
522
- }
523
- return data;
524
- }
525
- function hasHypenData(element) {
526
- return elementDataMap.has(element);
527
- }
528
- function clearHypenData(element) {
529
- elementDataMap.delete(element);
530
- }
531
- function getEngine(element) {
532
- return getHypenData(element).engine;
533
- }
534
- function setEngine(element, engine) {
535
- getHypenData(element).engine = engine;
536
- }
537
- function findEngine(element) {
538
- let current = element;
539
- while (current) {
540
- const engine = getEngine(current);
541
- if (engine)
542
- return engine;
543
- current = current.parentElement;
544
- }
545
- return;
546
- }
547
- function getRegisteredEvents(element) {
548
- const data = getHypenData(element);
549
- if (!data.registeredEvents) {
550
- data.registeredEvents = new Set;
551
- }
552
- return data.registeredEvents;
553
- }
554
- function isEventRegistered(element, eventKey) {
555
- return getRegisteredEvents(element).has(eventKey);
556
- }
557
- function registerEvent(element, eventKey) {
558
- getRegisteredEvents(element).add(eventKey);
559
- }
560
- function unregisterEvent(element, eventKey) {
561
- getRegisteredEvents(element).delete(eventKey);
562
- }
563
- function getKeyTarget(element) {
564
- return getHypenData(element).keyTarget;
565
- }
566
- function setKeyTarget(element, key) {
567
- getHypenData(element).keyTarget = key;
568
- }
569
- function getMeta(element, key) {
570
- return getHypenData(element).meta?.[key];
571
- }
572
- function setMeta(element, key, value) {
573
- const data = getHypenData(element);
574
- if (!data.meta) {
575
- data.meta = {};
576
- }
577
- data.meta[key] = value;
578
- }
579
- function disposeHypenElement(element) {
580
- try {
581
- const disposables = getElementDisposables(element);
582
- disposables.dispose();
583
- } catch {}
584
- clearHypenData(element);
585
- }
586
- function getLegacyEngine(element) {
587
- const engine = getEngine(element);
588
- if (engine)
589
- return engine;
590
- return element[HYPEN_ENGINE_SYMBOL] ?? element.__hypenEngine;
591
- }
592
- function setLegacyEngine(element, engine) {
593
- setEngine(element, engine);
594
- element.__hypenEngine = engine;
595
- }
596
- var elementDataMap, HYPEN_ENGINE_SYMBOL, REGISTERED_EVENTS_SYMBOL, KEY_TARGET_SYMBOL;
597
- var init_element_data = __esm(() => {
598
- elementDataMap = new WeakMap;
599
- HYPEN_ENGINE_SYMBOL = Symbol.for("hypen.engine");
600
- REGISTERED_EVENTS_SYMBOL = Symbol.for("hypen.registeredEvents");
601
- KEY_TARGET_SYMBOL = Symbol.for("hypen.keyTarget");
602
- });
603
-
604
- // src/dom/applicators/events.ts
605
- var exports_events = {};
606
- __export(exports_events, {
607
- eventHandlers: () => eventHandlers
608
- });
609
- import {
610
- getElementDisposables as getElementDisposables2,
611
- disposableListener,
612
- disposableTimeout
613
- } from "@hypen-space/core";
614
- function toPlainObject(value) {
615
- if (value instanceof Map) {
616
- const obj = {};
617
- for (const [key, val] of value.entries()) {
618
- obj[key] = toPlainObject(val);
619
- }
620
- return obj;
621
- }
622
- if (Array.isArray(value)) {
623
- return value.map((item) => toPlainObject(item));
624
- }
625
- if (value && typeof value === "object") {
626
- const obj = {};
627
- for (const [key, val] of Object.entries(value)) {
628
- obj[key] = toPlainObject(val);
629
- }
630
- return obj;
631
- }
632
- return value;
633
- }
634
- function extractActionDetails(value) {
635
- if (typeof value === "string") {
636
- if (!value.startsWith("@")) {
637
- return { actionName: null, payload: {} };
638
- }
639
- let actionName = value.substring(1);
640
- if (actionName.startsWith("actions.")) {
641
- actionName = actionName.substring(8);
642
- }
643
- return { actionName, payload: {} };
644
- }
645
- if (value && typeof value === "object") {
646
- const plain = toPlainObject(value);
647
- const payload = {};
648
- let actionName = null;
649
- if (plain && typeof plain === "object") {
650
- const actionValue = plain["0"];
651
- if (typeof actionValue === "string" && actionValue.startsWith("@")) {
652
- actionName = actionValue.substring(1);
653
- if (actionName.startsWith("actions.")) {
654
- actionName = actionName.substring(8);
655
- }
656
- }
657
- for (const [key, val] of Object.entries(plain)) {
658
- if (key !== "0") {
659
- if (/^\d+$/.test(key) && val && typeof val === "object" && !Array.isArray(val)) {
660
- for (const [innerKey, innerVal] of Object.entries(val)) {
661
- payload[innerKey] = innerVal;
662
- }
663
- } else {
664
- payload[key] = val;
665
- }
666
- }
667
- }
668
- }
669
- return { actionName, payload };
670
- }
671
- return { actionName: null, payload: {} };
672
- }
673
- function extractEventData(event, element) {
674
- const data = {
675
- type: event.type,
676
- timestamp: Date.now()
677
- };
678
- if (event instanceof MouseEvent) {
679
- data.clientX = event.clientX;
680
- data.clientY = event.clientY;
681
- data.button = event.button;
682
- }
683
- if (event instanceof KeyboardEvent) {
684
- data.key = event.key;
685
- data.code = event.code;
686
- data.ctrlKey = event.ctrlKey;
687
- data.shiftKey = event.shiftKey;
688
- data.altKey = event.altKey;
689
- data.metaKey = event.metaKey;
690
- }
691
- if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {
692
- data.value = element.value;
693
- }
694
- if (element instanceof HTMLSelectElement) {
695
- data.value = element.value;
696
- data.selectedIndex = element.selectedIndex;
697
- }
698
- if (event.type === "submit" && element instanceof HTMLFormElement) {
699
- data.formData = new FormData(element);
700
- }
701
- return data;
702
- }
703
- function createEventHandler(eventType, options = {}) {
704
- return (element, value) => {
705
- const { actionName, payload: customPayload } = extractActionDetails(value);
706
- if (!actionName) {
707
- console.warn(`[EventApplicator] ${eventType} requires an action reference starting with @, got:`, value);
708
- return;
709
- }
710
- const disposables = getElementDisposables2(element);
711
- const eventKey = `${eventType}:${actionName}`;
712
- if (getRegisteredEvents(element).has(eventKey)) {
713
- return;
714
- }
715
- registerEvent(element, eventKey);
716
- let throttleTimer = null;
717
- const listener = (event) => {
718
- if (options.throttleMs && throttleTimer) {
719
- return;
720
- }
721
- if (options.throttleMs) {
722
- throttleTimer = disposableTimeout(() => {
723
- throttleTimer = null;
724
- }, options.throttleMs);
725
- }
726
- if (options.preventDefault) {
727
- event.preventDefault();
728
- }
729
- const payload = Object.keys(customPayload).length > 0 ? { ...customPayload } : options.extractPayload ? options.extractPayload(event, element) : extractEventData(event, element);
730
- const engine = getEngine(element);
731
- if (engine) {
732
- engine.dispatchAction(actionName, payload);
733
- }
734
- };
735
- disposables.add(disposableListener(element, eventType, listener, {
736
- passive: options.passive
737
- }));
738
- disposables.addCallback(() => {
739
- unregisterEvent(element, eventKey);
740
- if (throttleTimer) {
741
- throttleTimer.dispose();
742
- }
743
- });
744
- };
745
- }
746
- function createKeyHandler(defaultKey = "Enter") {
747
- return (element, value) => {
748
- const { actionName, payload: customPayload } = extractActionDetails(value);
749
- if (!actionName) {
750
- console.warn(`[EventApplicator] onKey requires an action reference starting with @, got:`, value);
751
- return;
752
- }
753
- const disposables = getElementDisposables2(element);
754
- const eventKey = `keydown:${actionName}:${defaultKey}`;
755
- if (getRegisteredEvents(element).has(eventKey)) {
756
- return;
757
- }
758
- registerEvent(element, eventKey);
759
- const targetKey = getKeyTarget(element) || defaultKey;
760
- const keyToMatch = targetKey.toLowerCase() === "return" ? "Enter" : targetKey;
761
- const listener = (event) => {
762
- const keyEvent = event;
763
- if (keyEvent.key !== keyToMatch) {
764
- return;
765
- }
766
- event.preventDefault();
767
- const target = event.target;
768
- const payload = Object.keys(customPayload).length > 0 ? { ...customPayload } : {
769
- type: event.type,
770
- timestamp: Date.now(),
771
- key: keyEvent.key,
772
- code: keyEvent.code,
773
- value: target.value,
774
- input: target.value,
775
- ctrlKey: keyEvent.ctrlKey,
776
- shiftKey: keyEvent.shiftKey,
777
- altKey: keyEvent.altKey,
778
- metaKey: keyEvent.metaKey
779
- };
780
- const engine = getEngine(element);
781
- if (engine) {
782
- engine.dispatchAction(actionName, payload);
783
- }
784
- };
785
- disposables.add(disposableListener(element, "keydown", listener));
786
- disposables.addCallback(() => {
787
- unregisterEvent(element, eventKey);
788
- });
789
- };
790
- }
791
- function createLongClickHandler(thresholdMs = 500) {
792
- return (element, value) => {
793
- const { actionName, payload: customPayload } = extractActionDetails(value);
794
- if (!actionName) {
795
- console.warn(`[EventApplicator] onLongClick requires an action reference starting with @, got:`, value);
796
- return;
797
- }
798
- const disposables = getElementDisposables2(element);
799
- const eventKey = `longclick:${actionName}`;
800
- if (getRegisteredEvents(element).has(eventKey)) {
801
- return;
802
- }
803
- registerEvent(element, eventKey);
804
- let longClickTimer = null;
805
- const downListener = (event) => {
806
- const pointerEvent = event;
807
- longClickTimer = disposableTimeout(() => {
808
- const payload = Object.keys(customPayload).length > 0 ? { ...customPayload } : {
809
- type: "longclick",
810
- timestamp: Date.now(),
811
- clientX: pointerEvent.clientX,
812
- clientY: pointerEvent.clientY
813
- };
814
- const engine = getEngine(element);
815
- if (engine) {
816
- engine.dispatchAction(actionName, payload);
817
- }
818
- longClickTimer = null;
819
- }, thresholdMs);
820
- };
821
- const cancelListener = () => {
822
- if (longClickTimer) {
823
- longClickTimer.dispose();
824
- longClickTimer = null;
825
- }
826
- };
827
- disposables.add(disposableListener(element, "pointerdown", downListener));
828
- disposables.add(disposableListener(element, "pointerup", cancelListener));
829
- disposables.add(disposableListener(element, "pointerleave", cancelListener));
830
- disposables.addCallback(() => {
831
- unregisterEvent(element, eventKey);
832
- cancelListener();
833
- });
834
- };
835
- }
836
- var inputPayload = (event, element) => {
837
- const target = element;
838
- return {
839
- type: event.type,
840
- timestamp: Date.now(),
841
- value: target.value,
842
- input: target.value
843
- };
844
- }, scrollPayload = (_event, element) => {
845
- const scrollTop = element.scrollTop;
846
- const scrollHeight = element.scrollHeight;
847
- const clientHeight = element.clientHeight;
848
- const scrollPercentage = scrollHeight - clientHeight > 0 ? scrollTop / (scrollHeight - clientHeight) * 100 : 0;
849
- const nearBottom = scrollHeight - scrollTop - clientHeight < 100 || scrollPercentage > 90;
850
- return {
851
- type: "scroll",
852
- timestamp: Date.now(),
853
- scrollTop,
854
- scrollLeft: element.scrollLeft,
855
- scrollHeight,
856
- scrollWidth: element.scrollWidth,
857
- clientHeight,
858
- clientWidth: element.clientWidth,
859
- scrollPercentage: Math.round(scrollPercentage),
860
- nearBottom,
861
- atBottom: scrollHeight - scrollTop === clientHeight,
862
- atTop: scrollTop === 0
863
- };
864
- }, focusPayload = (event, element) => ({
865
- type: event.type,
866
- timestamp: Date.now(),
867
- value: element.value ?? undefined
868
- }), mousePayload = (event, _element) => {
869
- const mouseEvent = event;
870
- return {
871
- type: event.type,
872
- timestamp: Date.now(),
873
- clientX: mouseEvent.clientX,
874
- clientY: mouseEvent.clientY
875
- };
876
- }, eventHandlers;
877
- var init_events = __esm(() => {
878
- init_element_data();
879
- eventHandlers = {
880
- onClick: createEventHandler("click"),
881
- onPress: createEventHandler("click"),
882
- onChange: createEventHandler("change"),
883
- onSubmit: createEventHandler("submit", { preventDefault: true }),
884
- onInput: createEventHandler("input", { extractPayload: inputPayload }),
885
- onKey: createKeyHandler("Enter"),
886
- "onKey.key": (element, value) => {
887
- setKeyTarget(element, String(value));
888
- },
889
- "onKey.action": createKeyHandler("Enter"),
890
- onScroll: createEventHandler("scroll", {
891
- throttleMs: 100,
892
- passive: true,
893
- extractPayload: scrollPayload
894
- }),
895
- onLongClick: createLongClickHandler(500),
896
- onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
897
- onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
898
- onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
899
- onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
900
- };
901
- });
902
-
903
- // src/dom/applicators/typography.ts
904
- var exports_typography = {};
905
- __export(exports_typography, {
906
- typographyHandlers: () => typographyHandlers
907
- });
908
- var typographyHandlers;
909
- var init_typography = __esm(() => {
910
- typographyHandlers = {
911
- textAlign: (el, value) => {
912
- el.style.textAlign = String(value);
913
- },
914
- textTransform: (el, value) => {
915
- el.style.textTransform = String(value);
916
- },
917
- textDecoration: (el, value) => {
918
- el.style.textDecoration = String(value);
919
- },
920
- textDecorationColor: (el, value) => {
921
- el.style.textDecorationColor = String(value);
922
- },
923
- textDecorationStyle: (el, value) => {
924
- el.style.textDecorationStyle = String(value);
925
- },
926
- textDecorationThickness: (el, value) => {
927
- el.style.textDecorationThickness = typeof value === "number" ? `${value}px` : String(value);
928
- },
929
- letterSpacing: (el, value) => {
930
- el.style.letterSpacing = typeof value === "number" ? `${value}px` : String(value);
931
- },
932
- wordSpacing: (el, value) => {
933
- el.style.wordSpacing = typeof value === "number" ? `${value}px` : String(value);
934
- },
935
- lineHeight: (el, value) => {
936
- el.style.lineHeight = String(value);
937
- },
938
- textIndent: (el, value) => {
939
- el.style.textIndent = typeof value === "number" ? `${value}px` : String(value);
940
- },
941
- textOverflow: (el, value) => {
942
- el.style.textOverflow = String(value);
943
- },
944
- whiteSpace: (el, value) => {
945
- el.style.whiteSpace = String(value);
946
- },
947
- wordBreak: (el, value) => {
948
- el.style.wordBreak = String(value);
949
- },
950
- verticalAlign: (el, value) => {
951
- el.style.verticalAlign = String(value);
952
- },
953
- fontVariant: (el, value) => {
954
- el.style.fontVariant = String(value);
955
- },
956
- fontStretch: (el, value) => {
957
- el.style.fontStretch = String(value);
958
- },
959
- fontStyle: (el, value) => {
960
- el.style.fontStyle = String(value);
961
- },
962
- writingMode: (el, value) => {
963
- el.style.writingMode = String(value);
964
- },
965
- maxLines: (el, value) => {
966
- const lines = typeof value === "number" ? value : parseInt(String(value), 10);
967
- if (!isNaN(lines) && lines > 0) {
968
- el.style.display = "-webkit-box";
969
- el.style.setProperty("-webkit-line-clamp", String(lines));
970
- el.style.setProperty("-webkit-box-orient", "vertical");
971
- el.style.overflow = "hidden";
972
- }
973
- }
974
- };
975
- });
976
-
977
- // src/dom/applicators/transform.ts
978
- var exports_transform = {};
979
- __export(exports_transform, {
980
- transformHandlers: () => transformHandlers
981
- });
982
- var transformHandlers;
983
- var init_transform = __esm(() => {
984
- transformHandlers = {
985
- transform: (el, value) => {
986
- el.style.transform = String(value);
987
- },
988
- transformOrigin: (el, value) => {
989
- el.style.transformOrigin = String(value);
990
- },
991
- translateX: (el, value) => {
992
- const current = el.style.transform || "";
993
- const val = typeof value === "number" ? `${value}px` : String(value);
994
- el.style.transform = current ? `${current} translateX(${val})` : `translateX(${val})`;
995
- },
996
- translateY: (el, value) => {
997
- const current = el.style.transform || "";
998
- const val = typeof value === "number" ? `${value}px` : String(value);
999
- el.style.transform = current ? `${current} translateY(${val})` : `translateY(${val})`;
1000
- },
1001
- translateZ: (el, value) => {
1002
- const current = el.style.transform || "";
1003
- const val = typeof value === "number" ? `${value}px` : String(value);
1004
- el.style.transform = current ? `${current} translateZ(${val})` : `translateZ(${val})`;
1005
- },
1006
- rotate: (el, value) => {
1007
- const current = el.style.transform || "";
1008
- const val = String(value);
1009
- el.style.transform = current ? `${current} rotate(${val})` : `rotate(${val})`;
1010
- },
1011
- rotateX: (el, value) => {
1012
- const current = el.style.transform || "";
1013
- const val = String(value);
1014
- el.style.transform = current ? `${current} rotateX(${val})` : `rotateX(${val})`;
1015
- },
1016
- rotateY: (el, value) => {
1017
- const current = el.style.transform || "";
1018
- const val = String(value);
1019
- el.style.transform = current ? `${current} rotateY(${val})` : `rotateY(${val})`;
1020
- },
1021
- rotateZ: (el, value) => {
1022
- const current = el.style.transform || "";
1023
- const val = String(value);
1024
- el.style.transform = current ? `${current} rotateZ(${val})` : `rotateZ(${val})`;
1025
- },
1026
- scale: (el, value) => {
1027
- const current = el.style.transform || "";
1028
- el.style.transform = current ? `${current} scale(${value})` : `scale(${value})`;
1029
- },
1030
- scaleX: (el, value) => {
1031
- const current = el.style.transform || "";
1032
- el.style.transform = current ? `${current} scaleX(${value})` : `scaleX(${value})`;
1033
- },
1034
- scaleY: (el, value) => {
1035
- const current = el.style.transform || "";
1036
- el.style.transform = current ? `${current} scaleY(${value})` : `scaleY(${value})`;
1037
- },
1038
- skew: (el, value) => {
1039
- const current = el.style.transform || "";
1040
- el.style.transform = current ? `${current} skew(${value})` : `skew(${value})`;
1041
- },
1042
- skewX: (el, value) => {
1043
- const current = el.style.transform || "";
1044
- el.style.transform = current ? `${current} skewX(${value})` : `skewX(${value})`;
1045
- },
1046
- skewY: (el, value) => {
1047
- const current = el.style.transform || "";
1048
- el.style.transform = current ? `${current} skewY(${value})` : `skewY(${value})`;
1049
- },
1050
- perspective: (el, value) => {
1051
- el.style.perspective = typeof value === "number" ? `${value}px` : String(value);
1052
- }
1053
- };
1054
- });
1055
-
1056
- // src/dom/applicators/effects.ts
1057
- var exports_effects = {};
1058
- __export(exports_effects, {
1059
- effectsHandlers: () => effectsHandlers
1060
- });
1061
- var effectsHandlers;
1062
- var init_effects = __esm(() => {
1063
- effectsHandlers = {
1064
- boxShadow: (el, value) => {
1065
- if (typeof value === "string") {
1066
- el.style.boxShadow = value;
1067
- } else if (typeof value === "object" && value !== null) {
1068
- const obj = value;
1069
- const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
1070
- const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
1071
- const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "0px";
1072
- const spread = typeof obj.spread === "number" ? `${obj.spread}px` : obj.spread ?? "0px";
1073
- const color = obj.color ?? "rgba(0,0,0,0.2)";
1074
- const inset = obj.inset ? "inset " : "";
1075
- el.style.boxShadow = `${inset}${x} ${y} ${blur} ${spread} ${color}`;
1076
- } else if (typeof value === "number") {
1077
- el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
1078
- }
1079
- },
1080
- shadow: (el, value) => {
1081
- if (typeof value === "object" && value !== null) {
1082
- const obj = value;
1083
- const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
1084
- const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
1085
- const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "4px";
1086
- const color = obj.color ?? "rgba(0,0,0,0.2)";
1087
- el.style.boxShadow = `${x} ${y} ${blur} ${color}`;
1088
- } else if (typeof value === "number") {
1089
- el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
1090
- } else {
1091
- el.style.boxShadow = String(value);
1092
- }
1093
- },
1094
- elevation: (el, value) => {
1095
- const level = typeof value === "number" ? value : parseInt(String(value), 10);
1096
- if (!isNaN(level) && level >= 0) {
1097
- const y = level * 0.5;
1098
- const blur = level * 1.5;
1099
- const opacity = Math.min(0.1 + level * 0.02, 0.4);
1100
- el.style.boxShadow = `0 ${y}px ${blur}px rgba(0,0,0,${opacity})`;
1101
- }
1102
- },
1103
- textShadow: (el, value) => {
1104
- el.style.textShadow = String(value);
1105
- },
1106
- filter: (el, value) => {
1107
- el.style.filter = String(value);
1108
- },
1109
- backdropFilter: (el, value) => {
1110
- el.style.backdropFilter = String(value);
1111
- },
1112
- blur: (el, value) => {
1113
- const val = typeof value === "number" ? `${value}px` : String(value);
1114
- const current = el.style.filter || "";
1115
- el.style.filter = current ? `${current} blur(${val})` : `blur(${val})`;
1116
- },
1117
- brightness: (el, value) => {
1118
- const current = el.style.filter || "";
1119
- el.style.filter = current ? `${current} brightness(${value})` : `brightness(${value})`;
1120
- },
1121
- contrast: (el, value) => {
1122
- const current = el.style.filter || "";
1123
- el.style.filter = current ? `${current} contrast(${value})` : `contrast(${value})`;
1124
- },
1125
- grayscale: (el, value) => {
1126
- const current = el.style.filter || "";
1127
- el.style.filter = current ? `${current} grayscale(${value})` : `grayscale(${value})`;
1128
- },
1129
- hueRotate: (el, value) => {
1130
- const val = String(value);
1131
- const current = el.style.filter || "";
1132
- el.style.filter = current ? `${current} hue-rotate(${val})` : `hue-rotate(${val})`;
1133
- },
1134
- invert: (el, value) => {
1135
- const current = el.style.filter || "";
1136
- el.style.filter = current ? `${current} invert(${value})` : `invert(${value})`;
1137
- },
1138
- saturate: (el, value) => {
1139
- const current = el.style.filter || "";
1140
- el.style.filter = current ? `${current} saturate(${value})` : `saturate(${value})`;
1141
- },
1142
- sepia: (el, value) => {
1143
- const current = el.style.filter || "";
1144
- el.style.filter = current ? `${current} sepia(${value})` : `sepia(${value})`;
1145
- },
1146
- dropShadow: (el, value) => {
1147
- const current = el.style.filter || "";
1148
- el.style.filter = current ? `${current} drop-shadow(${value})` : `drop-shadow(${value})`;
1149
- },
1150
- mixBlendMode: (el, value) => {
1151
- el.style.mixBlendMode = String(value);
1152
- },
1153
- backgroundBlendMode: (el, value) => {
1154
- el.style.backgroundBlendMode = String(value);
1155
- },
1156
- clipPath: (el, value) => {
1157
- el.style.clipPath = String(value);
1158
- },
1159
- mask: (el, value) => {
1160
- el.style.mask = String(value);
1161
- },
1162
- maskImage: (el, value) => {
1163
- el.style.maskImage = String(value);
1164
- }
1165
- };
1166
- });
1167
-
1168
- // src/dom/applicators/advanced-layout.ts
1169
- var exports_advanced_layout = {};
1170
- __export(exports_advanced_layout, {
1171
- advancedLayoutHandlers: () => advancedLayoutHandlers
1172
- });
1173
- var advancedLayoutHandlers;
1174
- var init_advanced_layout = __esm(() => {
1175
- init_layout();
1176
- advancedLayoutHandlers = {
1177
- flexDirection: (el, value) => {
1178
- el.style.flexDirection = String(value);
1179
- },
1180
- flexWrap: (el, value) => {
1181
- el.style.flexWrap = String(value);
1182
- },
1183
- flexBasis: (el, value) => {
1184
- el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
1185
- },
1186
- justifyContent: (el, value) => {
1187
- el.style.justifyContent = mapAlignmentValue(String(value));
1188
- },
1189
- alignItems: (el, value) => {
1190
- el.style.alignItems = mapAlignmentValue(String(value));
1191
- },
1192
- alignContent: (el, value) => {
1193
- el.style.alignContent = String(value);
1194
- },
1195
- alignSelf: (el, value) => {
1196
- el.style.alignSelf = String(value);
1197
- },
1198
- order: (el, value) => {
1199
- el.style.order = String(value);
1200
- },
1201
- gridTemplateColumns: (el, value) => {
1202
- el.style.gridTemplateColumns = String(value);
1203
- },
1204
- gridTemplateRows: (el, value) => {
1205
- el.style.gridTemplateRows = String(value);
1206
- },
1207
- gridColumns: (el, value) => {
1208
- if (typeof value === "number") {
1209
- el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
1210
- } else {
1211
- el.style.gridTemplateColumns = String(value);
1212
- }
1213
- },
1214
- gridRows: (el, value) => {
1215
- if (typeof value === "number") {
1216
- el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
1217
- } else {
1218
- el.style.gridTemplateRows = String(value);
1219
- }
1220
- },
1221
- gridTemplateAreas: (el, value) => {
1222
- el.style.gridTemplateAreas = String(value);
1223
- },
1224
- gridColumn: (el, value) => {
1225
- el.style.gridColumn = String(value);
1226
- },
1227
- gridRow: (el, value) => {
1228
- el.style.gridRow = String(value);
1229
- },
1230
- gridArea: (el, value) => {
1231
- el.style.gridArea = String(value);
1232
- },
1233
- gridAutoFlow: (el, value) => {
1234
- el.style.gridAutoFlow = String(value);
1235
- },
1236
- gridAutoColumns: (el, value) => {
1237
- el.style.gridAutoColumns = String(value);
1238
- },
1239
- gridAutoRows: (el, value) => {
1240
- el.style.gridAutoRows = String(value);
1241
- },
1242
- rowGap: (el, value) => {
1243
- el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
1244
- },
1245
- columnGap: (el, value) => {
1246
- el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
1247
- },
1248
- placeItems: (el, value) => {
1249
- el.style.placeItems = String(value);
1250
- },
1251
- placeContent: (el, value) => {
1252
- el.style.placeContent = String(value);
1253
- },
1254
- placeSelf: (el, value) => {
1255
- el.style.placeSelf = String(value);
1256
- },
1257
- position: (el, value) => {
1258
- el.style.position = String(value);
1259
- },
1260
- top: (el, value) => {
1261
- el.style.top = typeof value === "number" ? `${value}px` : String(value);
1262
- },
1263
- right: (el, value) => {
1264
- el.style.right = typeof value === "number" ? `${value}px` : String(value);
1265
- },
1266
- bottom: (el, value) => {
1267
- el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
1268
- },
1269
- left: (el, value) => {
1270
- el.style.left = typeof value === "number" ? `${value}px` : String(value);
1271
- },
1272
- inset: (el, value) => {
1273
- el.style.inset = typeof value === "number" ? `${value}px` : String(value);
1274
- },
1275
- zIndex: (el, value) => {
1276
- el.style.zIndex = String(value);
1277
- }
1278
- };
1279
- });
1280
-
1281
- // src/dom/applicators/background.ts
1282
- var exports_background = {};
1283
- __export(exports_background, {
1284
- backgroundHandlers: () => backgroundHandlers
1285
- });
1286
- var backgroundHandlers;
1287
- var init_background = __esm(() => {
1288
- backgroundHandlers = {
1289
- backgroundImage: (el, value) => {
1290
- el.style.backgroundImage = String(value);
1291
- },
1292
- backgroundSize: (el, value) => {
1293
- el.style.backgroundSize = String(value);
1294
- },
1295
- backgroundPosition: (el, value) => {
1296
- el.style.backgroundPosition = String(value);
1297
- },
1298
- backgroundRepeat: (el, value) => {
1299
- el.style.backgroundRepeat = String(value);
1300
- },
1301
- backgroundAttachment: (el, value) => {
1302
- el.style.backgroundAttachment = String(value);
1303
- },
1304
- backgroundClip: (el, value) => {
1305
- el.style.backgroundClip = String(value);
1306
- },
1307
- backgroundOrigin: (el, value) => {
1308
- el.style.backgroundOrigin = String(value);
1309
- },
1310
- linearGradient: (el, value) => {
1311
- el.style.backgroundImage = `linear-gradient(${value})`;
1312
- },
1313
- radialGradient: (el, value) => {
1314
- el.style.backgroundImage = `radial-gradient(${value})`;
1315
- },
1316
- conicGradient: (el, value) => {
1317
- el.style.backgroundImage = `conic-gradient(${value})`;
1318
- }
1319
- };
1320
- });
1321
-
1322
- // src/dom/applicators/display.ts
1323
- var exports_display = {};
1324
- __export(exports_display, {
1325
- displayHandlers: () => displayHandlers
1326
- });
1327
- var displayHandlers;
1328
- var init_display = __esm(() => {
1329
- displayHandlers = {
1330
- display: (el, value) => {
1331
- el.style.display = String(value);
1332
- },
1333
- visibility: (el, value) => {
1334
- el.style.visibility = String(value);
1335
- },
1336
- overflowX: (el, value) => {
1337
- el.style.overflowX = String(value);
1338
- },
1339
- overflowY: (el, value) => {
1340
- el.style.overflowY = String(value);
1341
- },
1342
- pointerEvents: (el, value) => {
1343
- el.style.pointerEvents = String(value);
1344
- },
1345
- userSelect: (el, value) => {
1346
- el.style.userSelect = String(value);
1347
- },
1348
- resize: (el, value) => {
1349
- el.style.resize = String(value);
1350
- },
1351
- boxSizing: (el, value) => {
1352
- el.style.boxSizing = String(value);
1353
- },
1354
- aspectRatio: (el, value) => {
1355
- el.style.aspectRatio = String(value);
1356
- },
1357
- objectFit: (el, value) => {
1358
- el.style.objectFit = String(value);
1359
- },
1360
- objectPosition: (el, value) => {
1361
- el.style.objectPosition = String(value);
1362
- }
1363
- };
1364
- });
1365
-
1366
- // src/dom/applicators/transition.ts
1367
- var exports_transition = {};
1368
- __export(exports_transition, {
1369
- transitionHandlers: () => transitionHandlers
1370
- });
1371
- var transitionHandlers;
1372
- var init_transition = __esm(() => {
1373
- transitionHandlers = {
1374
- transition: (el, value) => {
1375
- el.style.transition = String(value);
1376
- },
1377
- transitionProperty: (el, value) => {
1378
- el.style.transitionProperty = String(value);
1379
- },
1380
- transitionDuration: (el, value) => {
1381
- el.style.transitionDuration = String(value);
1382
- },
1383
- transitionTimingFunction: (el, value) => {
1384
- el.style.transitionTimingFunction = String(value);
1385
- },
1386
- transitionDelay: (el, value) => {
1387
- el.style.transitionDelay = String(value);
1388
- },
1389
- animation: (el, value) => {
1390
- el.style.animation = String(value);
1391
- },
1392
- animationName: (el, value) => {
1393
- el.style.animationName = String(value);
1394
- },
1395
- animationDuration: (el, value) => {
1396
- el.style.animationDuration = String(value);
1397
- },
1398
- animationTimingFunction: (el, value) => {
1399
- el.style.animationTimingFunction = String(value);
1400
- },
1401
- animationDelay: (el, value) => {
1402
- el.style.animationDelay = String(value);
1403
- },
1404
- animationIterationCount: (el, value) => {
1405
- el.style.animationIterationCount = String(value);
1406
- },
1407
- animationDirection: (el, value) => {
1408
- el.style.animationDirection = String(value);
1409
- },
1410
- animationFillMode: (el, value) => {
1411
- el.style.animationFillMode = String(value);
1412
- },
1413
- animationPlayState: (el, value) => {
1414
- el.style.animationPlayState = String(value);
1415
- }
1416
- };
1417
- });
1418
-
1419
- // src/dom/applicators/index.ts
1420
- var BREAKPOINTS = {
1421
- sm: "640px",
1422
- md: "768px",
1423
- lg: "1024px",
1424
- xl: "1280px",
1425
- "2xl": "1536px"
1426
- };
1427
- var variantStyleSheet = null;
1428
- var insertedRules = new Set;
1429
- function getVariantStyleSheet() {
1430
- if (!variantStyleSheet) {
1431
- const style = document.createElement("style");
1432
- style.id = "hypen-variants";
1433
- document.head.appendChild(style);
1434
- variantStyleSheet = style.sheet;
1435
- }
1436
- return variantStyleSheet;
1437
- }
1438
- function hashValue(value) {
1439
- return String(value).replace(/[^a-zA-Z0-9]/g, "").slice(0, 8);
1440
- }
1441
-
1442
- class ApplicatorRegistry {
1443
- handlers = new Map;
1444
- elementState = new WeakMap;
1445
- constructor() {
1446
- this.registerDefaults();
1447
- }
1448
- register(name, handler) {
1449
- this.handlers.set(name, handler);
1450
- }
1451
- apply(element, name, value) {
1452
- const { handlerName, argKey, aggregate, fallbackName } = this.parseApplicatorName(name);
1453
- const handler = this.handlers.get(handlerName);
1454
- const state = this.getElementState(element);
1455
- const previous = state.get(handlerName);
1456
- if (aggregate && argKey !== null) {
1457
- const merged = this.mergeAggregateState(previous, argKey, this.normalizeValue(value));
1458
- state.set(handlerName, merged);
1459
- if (handler) {
1460
- handler(element, merged);
1461
- } else {
1462
- this.setStyleProperty(element, fallbackName, value);
1463
- }
1464
- return;
1465
- }
1466
- if (handler) {
1467
- if (this.isEventApplicator(handlerName)) {
1468
- const normalizedValue = this.normalizeEventValue(previous, value);
1469
- state.set(handlerName, normalizedValue);
1470
- handler(element, normalizedValue);
1471
- } else {
1472
- state.set(handlerName, value);
1473
- handler(element, value);
1474
- }
1475
- } else {
1476
- this.setStyleProperty(element, handlerName, value);
1477
- }
1478
- }
1479
- parseApplicatorName(name) {
1480
- const dotIndex = name.indexOf(".");
1481
- if (dotIndex === -1) {
1482
- return { handlerName: name, argKey: null, aggregate: false, fallbackName: name };
1483
- }
1484
- const baseName = name.substring(0, dotIndex);
1485
- const argKey = name.substring(dotIndex + 1);
1486
- if (this.handlers.has(baseName) && this.isEventApplicator(baseName)) {
1487
- return { handlerName: baseName, argKey, aggregate: true, fallbackName: name };
1488
- }
1489
- if (/^\d+$/.test(argKey)) {
1490
- return { handlerName: baseName, argKey: null, aggregate: false, fallbackName: baseName };
1491
- }
1492
- return { handlerName: name, argKey: null, aggregate: false, fallbackName: name };
1493
- }
1494
- getElementState(element) {
1495
- let state = this.elementState.get(element);
1496
- if (!state) {
1497
- state = new Map;
1498
- this.elementState.set(element, state);
1499
- }
1500
- return state;
1501
- }
1502
- mergeAggregateState(previous, argKey, value) {
1503
- const base = this.cloneAggregateState(previous);
1504
- if (value === undefined) {
1505
- delete base[argKey];
1506
- } else {
1507
- base[argKey] = value;
1508
- }
1509
- return base;
1510
- }
1511
- cloneAggregateState(previous) {
1512
- if (previous && typeof previous === "object" && !Array.isArray(previous)) {
1513
- return { ...previous };
1514
- }
1515
- if (typeof previous === "string") {
1516
- return { "0": previous };
1517
- }
1518
- return {};
1519
- }
1520
- normalizeEventValue(previous, value) {
1521
- const normalizedInput = this.normalizeValue(value);
1522
- const base = this.cloneAggregateState(previous);
1523
- if (normalizedInput && typeof normalizedInput === "object" && !Array.isArray(normalizedInput)) {
1524
- const next = { ...base, ...normalizedInput };
1525
- if (!Object.prototype.hasOwnProperty.call(next, "0") && base["0"] !== undefined) {
1526
- next["0"] = base["0"];
1527
- }
1528
- return next;
1529
- }
1530
- if (normalizedInput !== undefined) {
1531
- base["0"] = normalizedInput;
1532
- }
1533
- return base;
1534
- }
1535
- normalizeValue(value) {
1536
- if (value instanceof Map) {
1537
- const obj = {};
1538
- for (const [key, val] of value.entries()) {
1539
- obj[key] = this.normalizeValue(val);
1540
- }
1541
- return obj;
1542
- }
1543
- if (Array.isArray(value)) {
1544
- return value.map((item) => this.normalizeValue(item));
1545
- }
1546
- if (value && typeof value === "object") {
1547
- const obj = {};
1548
- for (const [key, val] of Object.entries(value)) {
1549
- obj[key] = this.normalizeValue(val);
1550
- }
1551
- return obj;
1552
- }
1553
- return value;
1554
- }
1555
- isEventApplicator(name) {
1556
- return /^on[A-Z]/.test(name);
1557
- }
1558
- applyAll(element, applicators) {
1559
- const grouped = new Map;
1560
- for (const [name, value] of Object.entries(applicators)) {
1561
- const dotIndex = name.indexOf(".");
1562
- const baseName = dotIndex !== -1 ? name.substring(0, dotIndex) : name;
1563
- const argKey = dotIndex !== -1 ? name.substring(dotIndex + 1) : null;
1564
- if (!grouped.has(baseName)) {
1565
- grouped.set(baseName, {});
1566
- }
1567
- const args = grouped.get(baseName);
1568
- if (argKey !== null) {
1569
- args[argKey] = value;
1570
- } else {
1571
- args["__value"] = value;
1572
- }
1573
- }
1574
- for (const [baseName, args] of grouped.entries()) {
1575
- if (Object.keys(args).length === 1) {
1576
- if ("__value" in args) {
1577
- this.apply(element, baseName, args["__value"]);
1578
- } else if ("0" in args) {
1579
- this.apply(element, baseName, args["0"]);
1580
- } else {
1581
- this.apply(element, baseName, args);
1582
- }
1583
- } else {
1584
- this.apply(element, baseName, args);
1585
- }
1586
- }
1587
- }
1588
- setStyleProperty(element, name, value) {
1589
- const atIndex = name.indexOf("@");
1590
- const colonIndex = name.indexOf(":");
1591
- if (atIndex !== -1) {
1592
- const prop = name.slice(0, atIndex);
1593
- const breakpoint = name.slice(atIndex + 1);
1594
- const minWidth = BREAKPOINTS[breakpoint];
1595
- if (minWidth) {
1596
- const cssName2 = this.toKebabCase(prop);
1597
- const cssValue = this.formatCssValue(cssName2, value);
1598
- const className = `hypen-${cssName2.replace(/[^a-zA-Z0-9-]/g, "")}-${breakpoint}-${hashValue(value)}`;
1599
- const ruleKey = `${className}:${cssValue}`;
1600
- if (!insertedRules.has(ruleKey)) {
1601
- const sheet = getVariantStyleSheet();
1602
- sheet.insertRule(`@media (min-width: ${minWidth}) { .${className} { ${cssName2}: ${cssValue}; } }`, sheet.cssRules.length);
1603
- insertedRules.add(ruleKey);
1604
- }
1605
- element.classList.add(className);
1606
- }
1607
- return;
1608
- }
1609
- if (colonIndex !== -1) {
1610
- const prop = name.slice(0, colonIndex);
1611
- const state = name.slice(colonIndex + 1);
1612
- const validStates = ["hover", "focus", "active", "disabled", "focus-visible", "focus-within"];
1613
- if (validStates.includes(state)) {
1614
- const cssName2 = this.toKebabCase(prop);
1615
- const cssValue = this.formatCssValue(cssName2, value);
1616
- const className = `hypen-${cssName2.replace(/[^a-zA-Z0-9-]/g, "")}-${state}-${hashValue(value)}`;
1617
- const ruleKey = `${className}:${cssValue}`;
1618
- if (!insertedRules.has(ruleKey)) {
1619
- const sheet = getVariantStyleSheet();
1620
- sheet.insertRule(`.${className}:${state} { ${cssName2}: ${cssValue}; }`, sheet.cssRules.length);
1621
- insertedRules.add(ruleKey);
1622
- }
1623
- element.classList.add(className);
1624
- }
1625
- return;
1626
- }
1627
- const cssName = this.toKebabCase(name);
1628
- element.style.setProperty(cssName, this.formatCssValue(cssName, value));
1629
- }
1630
- toKebabCase(name) {
1631
- return name.replace(/([A-Z])/g, "-$1").toLowerCase();
1632
- }
1633
- formatCssValue(cssName, value) {
1634
- if (typeof value === "number" && this.needsUnit(cssName)) {
1635
- return `${value}px`;
1636
- }
1637
- return String(value);
1638
- }
1639
- needsUnit(prop) {
1640
- const unitless = [
1641
- "opacity",
1642
- "z-index",
1643
- "font-weight",
1644
- "line-height",
1645
- "flex",
1646
- "flex-grow",
1647
- "flex-shrink",
1648
- "order"
1649
- ];
1650
- return !unitless.includes(prop);
1651
- }
1652
- registerDefaults() {
1653
- const { paddingHandler: paddingHandler2 } = __toCommonJS(exports_padding);
1654
- const { marginHandler: marginHandler2 } = __toCommonJS(exports_margin);
1655
- const { colorHandlers: colorHandlers2 } = (init_color(), __toCommonJS(exports_color));
1656
- const { borderHandlers: borderHandlers2 } = (init_border(), __toCommonJS(exports_border));
1657
- const { sizeHandlers: sizeHandlers2 } = (init_size(), __toCommonJS(exports_size));
1658
- const { fontHandlers: fontHandlers2 } = (init_font(), __toCommonJS(exports_font));
1659
- const { layoutHandlers: layoutHandlers2 } = (init_layout(), __toCommonJS(exports_layout));
1660
- const { eventHandlers: eventHandlers2 } = (init_events(), __toCommonJS(exports_events));
1661
- const { typographyHandlers: typographyHandlers2 } = (init_typography(), __toCommonJS(exports_typography));
1662
- const { transformHandlers: transformHandlers2 } = (init_transform(), __toCommonJS(exports_transform));
1663
- const { effectsHandlers: effectsHandlers2 } = (init_effects(), __toCommonJS(exports_effects));
1664
- const { advancedLayoutHandlers: advancedLayoutHandlers2 } = (init_advanced_layout(), __toCommonJS(exports_advanced_layout));
1665
- const { backgroundHandlers: backgroundHandlers2 } = (init_background(), __toCommonJS(exports_background));
1666
- const { displayHandlers: displayHandlers2 } = (init_display(), __toCommonJS(exports_display));
1667
- const { transitionHandlers: transitionHandlers2 } = (init_transition(), __toCommonJS(exports_transition));
1668
- this.register("padding", paddingHandler2);
1669
- this.register("margin", marginHandler2);
1670
- for (const [name, handler] of Object.entries(colorHandlers2)) {
1671
- this.register(name, handler);
1672
- }
1673
- for (const [name, handler] of Object.entries(borderHandlers2)) {
1674
- this.register(name, handler);
1675
- }
1676
- for (const [name, handler] of Object.entries(sizeHandlers2)) {
1677
- this.register(name, handler);
1678
- }
1679
- for (const [name, handler] of Object.entries(fontHandlers2)) {
1680
- this.register(name, handler);
1681
- }
1682
- for (const [name, handler] of Object.entries(layoutHandlers2)) {
1683
- this.register(name, handler);
1684
- }
1685
- for (const [name, handler] of Object.entries(eventHandlers2)) {
1686
- this.register(name, handler);
1687
- }
1688
- for (const [name, handler] of Object.entries(typographyHandlers2)) {
1689
- this.register(name, handler);
1690
- }
1691
- for (const [name, handler] of Object.entries(transformHandlers2)) {
1692
- this.register(name, handler);
1693
- }
1694
- for (const [name, handler] of Object.entries(effectsHandlers2)) {
1695
- this.register(name, handler);
1696
- }
1697
- for (const [name, handler] of Object.entries(advancedLayoutHandlers2)) {
1698
- this.register(name, handler);
1699
- }
1700
- for (const [name, handler] of Object.entries(backgroundHandlers2)) {
1701
- this.register(name, handler);
1702
- }
1703
- for (const [name, handler] of Object.entries(displayHandlers2)) {
1704
- this.register(name, handler);
1705
- }
1706
- for (const [name, handler] of Object.entries(transitionHandlers2)) {
1707
- this.register(name, handler);
1708
- }
1709
- }
1710
- }
1711
- export {
1712
- ApplicatorRegistry
1713
- };
1714
-
1715
- //# debugId=50A2AE96762A922B64756E2164756E21