@fictjs/runtime 0.0.12 → 0.0.14

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 (65) hide show
  1. package/dist/advanced.cjs +79 -0
  2. package/dist/advanced.cjs.map +1 -0
  3. package/dist/advanced.d.cts +50 -0
  4. package/dist/advanced.d.ts +50 -0
  5. package/dist/advanced.js +79 -0
  6. package/dist/advanced.js.map +1 -0
  7. package/dist/chunk-624QY53A.cjs +45 -0
  8. package/dist/chunk-624QY53A.cjs.map +1 -0
  9. package/dist/chunk-F3AIYQB7.js +45 -0
  10. package/dist/chunk-F3AIYQB7.js.map +1 -0
  11. package/dist/chunk-GJTYOFMO.cjs +109 -0
  12. package/dist/chunk-GJTYOFMO.cjs.map +1 -0
  13. package/dist/chunk-IUZXKAAY.js +109 -0
  14. package/dist/chunk-IUZXKAAY.js.map +1 -0
  15. package/dist/{slim.cjs → chunk-PMF6MWEV.cjs} +2557 -3110
  16. package/dist/chunk-PMF6MWEV.cjs.map +1 -0
  17. package/dist/{slim.js → chunk-RY4WDS6R.js} +2596 -3097
  18. package/dist/chunk-RY4WDS6R.js.map +1 -0
  19. package/dist/context-B7UYnfzM.d.ts +153 -0
  20. package/dist/context-UXySaqI_.d.cts +153 -0
  21. package/dist/effect-Auji1rz9.d.cts +350 -0
  22. package/dist/effect-Auji1rz9.d.ts +350 -0
  23. package/dist/index.cjs +108 -4441
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +5 -1492
  26. package/dist/index.d.ts +5 -1492
  27. package/dist/index.dev.js +1020 -2788
  28. package/dist/index.dev.js.map +1 -1
  29. package/dist/index.js +63 -4301
  30. package/dist/index.js.map +1 -1
  31. package/dist/internal.cjs +901 -0
  32. package/dist/internal.cjs.map +1 -0
  33. package/dist/internal.d.cts +158 -0
  34. package/dist/internal.d.ts +158 -0
  35. package/dist/internal.js +901 -0
  36. package/dist/internal.js.map +1 -0
  37. package/dist/{jsx-dev-runtime.d.ts → props-CrOMYbLv.d.cts} +107 -18
  38. package/dist/{jsx-dev-runtime.d.cts → props-ES0Ag_Wd.d.ts} +107 -18
  39. package/dist/scope-DKYzWfTn.d.cts +55 -0
  40. package/dist/scope-S6eAzBJZ.d.ts +55 -0
  41. package/package.json +10 -5
  42. package/src/advanced.ts +101 -0
  43. package/src/binding.ts +25 -422
  44. package/src/constants.ts +345 -344
  45. package/src/context.ts +300 -0
  46. package/src/cycle-guard.ts +124 -97
  47. package/src/delegated-events.ts +24 -0
  48. package/src/dom.ts +19 -25
  49. package/src/effect.ts +4 -0
  50. package/src/hooks.ts +9 -1
  51. package/src/index.ts +41 -130
  52. package/src/internal.ts +130 -0
  53. package/src/lifecycle.ts +13 -2
  54. package/src/list-helpers.ts +6 -65
  55. package/src/props.ts +48 -46
  56. package/src/signal.ts +59 -39
  57. package/src/store.ts +47 -7
  58. package/src/versioned-signal.ts +3 -3
  59. package/dist/jsx-runtime.d.cts +0 -671
  60. package/dist/jsx-runtime.d.ts +0 -671
  61. package/dist/slim.cjs.map +0 -1
  62. package/dist/slim.d.cts +0 -504
  63. package/dist/slim.d.ts +0 -504
  64. package/dist/slim.js.map +0 -1
  65. package/src/slim.ts +0 -69
package/src/constants.ts CHANGED
@@ -5,6 +5,13 @@
5
5
  * Borrowed from dom-expressions for comprehensive DOM support.
6
6
  */
7
7
 
8
+ import { DelegatedEventNames } from './delegated-events'
9
+
10
+ const isDev =
11
+ typeof __DEV__ !== 'undefined'
12
+ ? __DEV__
13
+ : typeof process === 'undefined' || process.env?.NODE_ENV !== 'production'
14
+
8
15
  // ============================================================================
9
16
  // Boolean Attributes
10
17
  // ============================================================================
@@ -13,50 +20,52 @@
13
20
  * Complete list of boolean attributes (lowercase)
14
21
  * These attributes are set as empty strings when true, removed when false
15
22
  */
16
- const booleans = [
17
- 'allowfullscreen',
18
- 'async',
19
- 'alpha', // HTMLInputElement
20
- 'autofocus', // HTMLElement prop
21
- 'autoplay',
22
- 'checked',
23
- 'controls',
24
- 'default',
25
- 'disabled',
26
- 'formnovalidate',
27
- 'hidden', // HTMLElement prop
28
- 'indeterminate',
29
- 'inert', // HTMLElement prop
30
- 'ismap',
31
- 'loop',
32
- 'multiple',
33
- 'muted',
34
- 'nomodule',
35
- 'novalidate',
36
- 'open',
37
- 'playsinline',
38
- 'readonly',
39
- 'required',
40
- 'reversed',
41
- 'seamless', // HTMLIframeElement - non-standard
42
- 'selected',
43
- // Experimental attributes
44
- 'adauctionheaders',
45
- 'browsingtopics',
46
- 'credentialless',
47
- 'defaultchecked',
48
- 'defaultmuted',
49
- 'defaultselected',
50
- 'defer',
51
- 'disablepictureinpicture',
52
- 'disableremoteplayback',
53
- 'preservespitch',
54
- 'shadowrootclonable',
55
- 'shadowrootcustomelementregistry',
56
- 'shadowrootdelegatesfocus',
57
- 'shadowrootserializable',
58
- 'sharedstoragewritable',
59
- ] as const
23
+ const booleans = isDev
24
+ ? [
25
+ 'allowfullscreen',
26
+ 'async',
27
+ 'alpha', // HTMLInputElement
28
+ 'autofocus', // HTMLElement prop
29
+ 'autoplay',
30
+ 'checked',
31
+ 'controls',
32
+ 'default',
33
+ 'disabled',
34
+ 'formnovalidate',
35
+ 'hidden', // HTMLElement prop
36
+ 'indeterminate',
37
+ 'inert', // HTMLElement prop
38
+ 'ismap',
39
+ 'loop',
40
+ 'multiple',
41
+ 'muted',
42
+ 'nomodule',
43
+ 'novalidate',
44
+ 'open',
45
+ 'playsinline',
46
+ 'readonly',
47
+ 'required',
48
+ 'reversed',
49
+ 'seamless', // HTMLIframeElement - non-standard
50
+ 'selected',
51
+ // Experimental attributes
52
+ 'adauctionheaders',
53
+ 'browsingtopics',
54
+ 'credentialless',
55
+ 'defaultchecked',
56
+ 'defaultmuted',
57
+ 'defaultselected',
58
+ 'defer',
59
+ 'disablepictureinpicture',
60
+ 'disableremoteplayback',
61
+ 'preservespitch',
62
+ 'shadowrootclonable',
63
+ 'shadowrootcustomelementregistry',
64
+ 'shadowrootdelegatesfocus',
65
+ 'shadowrootserializable',
66
+ 'sharedstoragewritable',
67
+ ]
68
+ : []
60
69
 
61
70
  export const BooleanAttributes = new Set<string>(booleans)
62
71
 
@@ -68,38 +77,42 @@ export const BooleanAttributes = new Set<string>(booleans)
68
77
  * Properties that should be set via DOM property (not attribute)
69
78
  * Includes camelCase versions of boolean attributes
70
79
  */
71
- export const Properties = new Set<string>([
72
- // Core properties
73
- 'className',
74
- 'value',
80
+ const properties = isDev
81
+ ? [
82
+ // Core properties
83
+ 'className',
84
+ 'value',
75
85
 
76
- // CamelCase booleans
77
- 'readOnly',
78
- 'noValidate',
79
- 'formNoValidate',
80
- 'isMap',
81
- 'noModule',
82
- 'playsInline',
86
+ // CamelCase booleans
87
+ 'readOnly',
88
+ 'noValidate',
89
+ 'formNoValidate',
90
+ 'isMap',
91
+ 'noModule',
92
+ 'playsInline',
83
93
 
84
- // Experimental (camelCase)
85
- 'adAuctionHeaders',
86
- 'allowFullscreen',
87
- 'browsingTopics',
88
- 'defaultChecked',
89
- 'defaultMuted',
90
- 'defaultSelected',
91
- 'disablePictureInPicture',
92
- 'disableRemotePlayback',
93
- 'preservesPitch',
94
- 'shadowRootClonable',
95
- 'shadowRootCustomElementRegistry',
96
- 'shadowRootDelegatesFocus',
97
- 'shadowRootSerializable',
98
- 'sharedStorageWritable',
94
+ // Experimental (camelCase)
95
+ 'adAuctionHeaders',
96
+ 'allowFullscreen',
97
+ 'browsingTopics',
98
+ 'defaultChecked',
99
+ 'defaultMuted',
100
+ 'defaultSelected',
101
+ 'disablePictureInPicture',
102
+ 'disableRemotePlayback',
103
+ 'preservesPitch',
104
+ 'shadowRootClonable',
105
+ 'shadowRootCustomElementRegistry',
106
+ 'shadowRootDelegatesFocus',
107
+ 'shadowRootSerializable',
108
+ 'sharedStorageWritable',
99
109
 
100
- // All lowercase booleans
101
- ...booleans,
102
- ])
110
+ // All lowercase booleans
111
+ ...booleans,
112
+ ]
113
+ : []
114
+
115
+ export const Properties = new Set<string>(properties)
103
116
 
104
117
  // ============================================================================
105
118
  // Child Properties
@@ -132,104 +145,105 @@ export const Aliases: Record<string, string> = {
132
145
  * Maps lowercase attribute names to their camelCase property equivalents
133
146
  * Only for specific elements that have these properties
134
147
  */
135
- export const PropAliases: Record<
136
- string,
137
- string | { $: string; [tagName: string]: string | number }
138
- > = {
139
- // Direct mapping
140
- class: 'className',
148
+ const PropAliases: Record<string, string | { $: string; [tagName: string]: string | number }> =
149
+ isDev
150
+ ? {
151
+ // Direct mapping
152
+ class: 'className',
141
153
 
142
- // Element-specific mappings
143
- novalidate: {
144
- $: 'noValidate',
145
- FORM: 1,
146
- },
147
- formnovalidate: {
148
- $: 'formNoValidate',
149
- BUTTON: 1,
150
- INPUT: 1,
151
- },
152
- ismap: {
153
- $: 'isMap',
154
- IMG: 1,
155
- },
156
- nomodule: {
157
- $: 'noModule',
158
- SCRIPT: 1,
159
- },
160
- playsinline: {
161
- $: 'playsInline',
162
- VIDEO: 1,
163
- },
164
- readonly: {
165
- $: 'readOnly',
166
- INPUT: 1,
167
- TEXTAREA: 1,
168
- },
154
+ // Element-specific mappings
155
+ novalidate: {
156
+ $: 'noValidate',
157
+ FORM: 1,
158
+ },
159
+ formnovalidate: {
160
+ $: 'formNoValidate',
161
+ BUTTON: 1,
162
+ INPUT: 1,
163
+ },
164
+ ismap: {
165
+ $: 'isMap',
166
+ IMG: 1,
167
+ },
168
+ nomodule: {
169
+ $: 'noModule',
170
+ SCRIPT: 1,
171
+ },
172
+ playsinline: {
173
+ $: 'playsInline',
174
+ VIDEO: 1,
175
+ },
176
+ readonly: {
177
+ $: 'readOnly',
178
+ INPUT: 1,
179
+ TEXTAREA: 1,
180
+ },
169
181
 
170
- // Experimental element-specific
171
- adauctionheaders: {
172
- $: 'adAuctionHeaders',
173
- IFRAME: 1,
174
- },
175
- allowfullscreen: {
176
- $: 'allowFullscreen',
177
- IFRAME: 1,
178
- },
179
- browsingtopics: {
180
- $: 'browsingTopics',
181
- IMG: 1,
182
- },
183
- defaultchecked: {
184
- $: 'defaultChecked',
185
- INPUT: 1,
186
- },
187
- defaultmuted: {
188
- $: 'defaultMuted',
189
- AUDIO: 1,
190
- VIDEO: 1,
191
- },
192
- defaultselected: {
193
- $: 'defaultSelected',
194
- OPTION: 1,
195
- },
196
- disablepictureinpicture: {
197
- $: 'disablePictureInPicture',
198
- VIDEO: 1,
199
- },
200
- disableremoteplayback: {
201
- $: 'disableRemotePlayback',
202
- AUDIO: 1,
203
- VIDEO: 1,
204
- },
205
- preservespitch: {
206
- $: 'preservesPitch',
207
- AUDIO: 1,
208
- VIDEO: 1,
209
- },
210
- shadowrootclonable: {
211
- $: 'shadowRootClonable',
212
- TEMPLATE: 1,
213
- },
214
- shadowrootdelegatesfocus: {
215
- $: 'shadowRootDelegatesFocus',
216
- TEMPLATE: 1,
217
- },
218
- shadowrootserializable: {
219
- $: 'shadowRootSerializable',
220
- TEMPLATE: 1,
221
- },
222
- sharedstoragewritable: {
223
- $: 'sharedStorageWritable',
224
- IFRAME: 1,
225
- IMG: 1,
226
- },
227
- }
182
+ // Experimental element-specific
183
+ adauctionheaders: {
184
+ $: 'adAuctionHeaders',
185
+ IFRAME: 1,
186
+ },
187
+ allowfullscreen: {
188
+ $: 'allowFullscreen',
189
+ IFRAME: 1,
190
+ },
191
+ browsingtopics: {
192
+ $: 'browsingTopics',
193
+ IMG: 1,
194
+ },
195
+ defaultchecked: {
196
+ $: 'defaultChecked',
197
+ INPUT: 1,
198
+ },
199
+ defaultmuted: {
200
+ $: 'defaultMuted',
201
+ AUDIO: 1,
202
+ VIDEO: 1,
203
+ },
204
+ defaultselected: {
205
+ $: 'defaultSelected',
206
+ OPTION: 1,
207
+ },
208
+ disablepictureinpicture: {
209
+ $: 'disablePictureInPicture',
210
+ VIDEO: 1,
211
+ },
212
+ disableremoteplayback: {
213
+ $: 'disableRemotePlayback',
214
+ AUDIO: 1,
215
+ VIDEO: 1,
216
+ },
217
+ preservespitch: {
218
+ $: 'preservesPitch',
219
+ AUDIO: 1,
220
+ VIDEO: 1,
221
+ },
222
+ shadowrootclonable: {
223
+ $: 'shadowRootClonable',
224
+ TEMPLATE: 1,
225
+ },
226
+ shadowrootdelegatesfocus: {
227
+ $: 'shadowRootDelegatesFocus',
228
+ TEMPLATE: 1,
229
+ },
230
+ shadowrootserializable: {
231
+ $: 'shadowRootSerializable',
232
+ TEMPLATE: 1,
233
+ },
234
+ sharedstoragewritable: {
235
+ $: 'sharedStorageWritable',
236
+ IFRAME: 1,
237
+ IMG: 1,
238
+ },
239
+ }
240
+ : {}
228
241
 
229
242
  /**
230
243
  * Get the property alias for a given attribute and tag name
231
244
  */
232
245
  export function getPropAlias(prop: string, tagName: string): string | undefined {
246
+ if (!isDev) return undefined
233
247
  const a = PropAliases[prop]
234
248
  if (typeof a === 'object') {
235
249
  return a[tagName] ? a['$'] : undefined
@@ -250,30 +264,9 @@ export const $$EVENTS = '_$FICT_DELEGATE'
250
264
  * Events that should use event delegation for performance
251
265
  * These events bubble and are commonly used across many elements
252
266
  */
253
- export const DelegatedEvents = new Set<string>([
254
- 'beforeinput',
255
- 'click',
256
- 'dblclick',
257
- 'contextmenu',
258
- 'focusin',
259
- 'focusout',
260
- 'input',
261
- 'keydown',
262
- 'keyup',
263
- 'mousedown',
264
- 'mousemove',
265
- 'mouseout',
266
- 'mouseover',
267
- 'mouseup',
268
- 'pointerdown',
269
- 'pointermove',
270
- 'pointerout',
271
- 'pointerover',
272
- 'pointerup',
273
- 'touchend',
274
- 'touchmove',
275
- 'touchstart',
276
- ])
267
+ const delegatedEvents = isDev ? DelegatedEventNames : []
268
+
269
+ export const DelegatedEvents = new Set<string>(delegatedEvents)
277
270
 
278
271
  // ============================================================================
279
272
  // SVG Support
@@ -282,85 +275,89 @@ export const DelegatedEvents = new Set<string>([
282
275
  /**
283
276
  * SVG element names (excluding common ones that overlap with HTML)
284
277
  */
285
- export const SVGElements = new Set<string>([
286
- 'altGlyph',
287
- 'altGlyphDef',
288
- 'altGlyphItem',
289
- 'animate',
290
- 'animateColor',
291
- 'animateMotion',
292
- 'animateTransform',
293
- 'circle',
294
- 'clipPath',
295
- 'color-profile',
296
- 'cursor',
297
- 'defs',
298
- 'desc',
299
- 'ellipse',
300
- 'feBlend',
301
- 'feColorMatrix',
302
- 'feComponentTransfer',
303
- 'feComposite',
304
- 'feConvolveMatrix',
305
- 'feDiffuseLighting',
306
- 'feDisplacementMap',
307
- 'feDistantLight',
308
- 'feDropShadow',
309
- 'feFlood',
310
- 'feFuncA',
311
- 'feFuncB',
312
- 'feFuncG',
313
- 'feFuncR',
314
- 'feGaussianBlur',
315
- 'feImage',
316
- 'feMerge',
317
- 'feMergeNode',
318
- 'feMorphology',
319
- 'feOffset',
320
- 'fePointLight',
321
- 'feSpecularLighting',
322
- 'feSpotLight',
323
- 'feTile',
324
- 'feTurbulence',
325
- 'filter',
326
- 'font',
327
- 'font-face',
328
- 'font-face-format',
329
- 'font-face-name',
330
- 'font-face-src',
331
- 'font-face-uri',
332
- 'foreignObject',
333
- 'g',
334
- 'glyph',
335
- 'glyphRef',
336
- 'hkern',
337
- 'image',
338
- 'line',
339
- 'linearGradient',
340
- 'marker',
341
- 'mask',
342
- 'metadata',
343
- 'missing-glyph',
344
- 'mpath',
345
- 'path',
346
- 'pattern',
347
- 'polygon',
348
- 'polyline',
349
- 'radialGradient',
350
- 'rect',
351
- 'set',
352
- 'stop',
353
- 'svg',
354
- 'switch',
355
- 'symbol',
356
- 'text',
357
- 'textPath',
358
- 'tref',
359
- 'tspan',
360
- 'use',
361
- 'view',
362
- 'vkern',
363
- ])
278
+ const svgElements = isDev
279
+ ? [
280
+ 'altGlyph',
281
+ 'altGlyphDef',
282
+ 'altGlyphItem',
283
+ 'animate',
284
+ 'animateColor',
285
+ 'animateMotion',
286
+ 'animateTransform',
287
+ 'circle',
288
+ 'clipPath',
289
+ 'color-profile',
290
+ 'cursor',
291
+ 'defs',
292
+ 'desc',
293
+ 'ellipse',
294
+ 'feBlend',
295
+ 'feColorMatrix',
296
+ 'feComponentTransfer',
297
+ 'feComposite',
298
+ 'feConvolveMatrix',
299
+ 'feDiffuseLighting',
300
+ 'feDisplacementMap',
301
+ 'feDistantLight',
302
+ 'feDropShadow',
303
+ 'feFlood',
304
+ 'feFuncA',
305
+ 'feFuncB',
306
+ 'feFuncG',
307
+ 'feFuncR',
308
+ 'feGaussianBlur',
309
+ 'feImage',
310
+ 'feMerge',
311
+ 'feMergeNode',
312
+ 'feMorphology',
313
+ 'feOffset',
314
+ 'fePointLight',
315
+ 'feSpecularLighting',
316
+ 'feSpotLight',
317
+ 'feTile',
318
+ 'feTurbulence',
319
+ 'filter',
320
+ 'font',
321
+ 'font-face',
322
+ 'font-face-format',
323
+ 'font-face-name',
324
+ 'font-face-src',
325
+ 'font-face-uri',
326
+ 'foreignObject',
327
+ 'g',
328
+ 'glyph',
329
+ 'glyphRef',
330
+ 'hkern',
331
+ 'image',
332
+ 'line',
333
+ 'linearGradient',
334
+ 'marker',
335
+ 'mask',
336
+ 'metadata',
337
+ 'missing-glyph',
338
+ 'mpath',
339
+ 'path',
340
+ 'pattern',
341
+ 'polygon',
342
+ 'polyline',
343
+ 'radialGradient',
344
+ 'rect',
345
+ 'set',
346
+ 'stop',
347
+ 'svg',
348
+ 'switch',
349
+ 'symbol',
350
+ 'text',
351
+ 'textPath',
352
+ 'tref',
353
+ 'tspan',
354
+ 'use',
355
+ 'view',
356
+ 'vkern',
357
+ ]
358
+ : []
359
+
360
+ export const SVGElements = new Set<string>(svgElements)
364
361
 
365
362
  /**
366
363
  * SVG attribute namespaces
@@ -377,80 +374,84 @@ export const SVGNamespace: Record<string, string> = {
377
374
  /**
378
375
  * CSS properties that don't need a unit (like 'px')
379
376
  */
380
- export const UnitlessStyles = new Set<string>([
381
- 'animationIterationCount',
382
- 'animation-iteration-count',
383
- 'borderImageOutset',
384
- 'border-image-outset',
385
- 'borderImageSlice',
386
- 'border-image-slice',
387
- 'borderImageWidth',
388
- 'border-image-width',
389
- 'boxFlex',
390
- 'box-flex',
391
- 'boxFlexGroup',
392
- 'box-flex-group',
393
- 'boxOrdinalGroup',
394
- 'box-ordinal-group',
395
- 'columnCount',
396
- 'column-count',
397
- 'columns',
398
- 'flex',
399
- 'flexGrow',
400
- 'flex-grow',
401
- 'flexPositive',
402
- 'flex-positive',
403
- 'flexShrink',
404
- 'flex-shrink',
405
- 'flexNegative',
406
- 'flex-negative',
407
- 'flexOrder',
408
- 'flex-order',
409
- 'gridRow',
410
- 'grid-row',
411
- 'gridRowEnd',
412
- 'grid-row-end',
413
- 'gridRowSpan',
414
- 'grid-row-span',
415
- 'gridRowStart',
416
- 'grid-row-start',
417
- 'gridColumn',
418
- 'grid-column',
419
- 'gridColumnEnd',
420
- 'grid-column-end',
421
- 'gridColumnSpan',
422
- 'grid-column-span',
423
- 'gridColumnStart',
424
- 'grid-column-start',
425
- 'fontWeight',
426
- 'font-weight',
427
- 'lineClamp',
428
- 'line-clamp',
429
- 'lineHeight',
430
- 'line-height',
431
- 'opacity',
432
- 'order',
433
- 'orphans',
434
- 'tabSize',
435
- 'tab-size',
436
- 'widows',
437
- 'zIndex',
438
- 'z-index',
439
- 'zoom',
440
- 'fillOpacity',
441
- 'fill-opacity',
442
- 'floodOpacity',
443
- 'flood-opacity',
444
- 'stopOpacity',
445
- 'stop-opacity',
446
- 'strokeDasharray',
447
- 'stroke-dasharray',
448
- 'strokeDashoffset',
449
- 'stroke-dashoffset',
450
- 'strokeMiterlimit',
451
- 'stroke-miterlimit',
452
- 'strokeOpacity',
453
- 'stroke-opacity',
454
- 'strokeWidth',
455
- 'stroke-width',
456
- ])
377
+ const unitlessList = isDev
378
+ ? [
379
+ 'animationIterationCount',
380
+ 'animation-iteration-count',
381
+ 'borderImageOutset',
382
+ 'border-image-outset',
383
+ 'borderImageSlice',
384
+ 'border-image-slice',
385
+ 'borderImageWidth',
386
+ 'border-image-width',
387
+ 'boxFlex',
388
+ 'box-flex',
389
+ 'boxFlexGroup',
390
+ 'box-flex-group',
391
+ 'boxOrdinalGroup',
392
+ 'box-ordinal-group',
393
+ 'columnCount',
394
+ 'column-count',
395
+ 'columns',
396
+ 'flex',
397
+ 'flexGrow',
398
+ 'flex-grow',
399
+ 'flexPositive',
400
+ 'flex-positive',
401
+ 'flexShrink',
402
+ 'flex-shrink',
403
+ 'flexNegative',
404
+ 'flex-negative',
405
+ 'flexOrder',
406
+ 'flex-order',
407
+ 'gridRow',
408
+ 'grid-row',
409
+ 'gridRowEnd',
410
+ 'grid-row-end',
411
+ 'gridRowSpan',
412
+ 'grid-row-span',
413
+ 'gridRowStart',
414
+ 'grid-row-start',
415
+ 'gridColumn',
416
+ 'grid-column',
417
+ 'gridColumnEnd',
418
+ 'grid-column-end',
419
+ 'gridColumnSpan',
420
+ 'grid-column-span',
421
+ 'gridColumnStart',
422
+ 'grid-column-start',
423
+ 'fontWeight',
424
+ 'font-weight',
425
+ 'lineClamp',
426
+ 'line-clamp',
427
+ 'lineHeight',
428
+ 'line-height',
429
+ 'opacity',
430
+ 'order',
431
+ 'orphans',
432
+ 'tabSize',
433
+ 'tab-size',
434
+ 'widows',
435
+ 'zIndex',
436
+ 'z-index',
437
+ 'zoom',
438
+ 'fillOpacity',
439
+ 'fill-opacity',
440
+ 'floodOpacity',
441
+ 'flood-opacity',
442
+ 'stopOpacity',
443
+ 'stop-opacity',
444
+ 'strokeDasharray',
445
+ 'stroke-dasharray',
446
+ 'strokeDashoffset',
447
+ 'stroke-dashoffset',
448
+ 'strokeMiterlimit',
449
+ 'stroke-miterlimit',
450
+ 'strokeOpacity',
451
+ 'stroke-opacity',
452
+ 'strokeWidth',
453
+ 'stroke-width',
454
+ ]
455
+ : ['opacity', 'zIndex']
456
+
457
+ export const UnitlessStyles = new Set<string>(unitlessList)