amateras 0.2.0 → 0.4.0

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 (78) hide show
  1. package/README.md +25 -7
  2. package/ext/css/README.md +19 -0
  3. package/ext/css/src/index.ts +395 -322
  4. package/ext/css/src/lib/colorAssign.ts +6 -0
  5. package/ext/css/src/lib/colors/amber.ts +25 -0
  6. package/ext/css/src/lib/colors/blackwhite.ts +13 -0
  7. package/ext/css/src/lib/colors/blue.ts +25 -0
  8. package/ext/css/src/lib/colors/cyan.ts +25 -0
  9. package/ext/css/src/lib/colors/emerald.ts +25 -0
  10. package/ext/css/src/lib/colors/fuchsia.ts +25 -0
  11. package/ext/css/src/lib/colors/gray.ts +25 -0
  12. package/ext/css/src/lib/colors/green.ts +25 -0
  13. package/ext/css/src/lib/colors/indigo.ts +25 -0
  14. package/ext/css/src/lib/colors/lime.ts +25 -0
  15. package/ext/css/src/lib/colors/neutral.ts +25 -0
  16. package/ext/css/src/lib/colors/orange.ts +25 -0
  17. package/ext/css/src/lib/colors/pink.ts +25 -0
  18. package/ext/css/src/lib/colors/purple.ts +25 -0
  19. package/ext/css/src/lib/colors/red.ts +25 -0
  20. package/ext/css/src/lib/colors/rose.ts +25 -0
  21. package/ext/css/src/lib/colors/sky.ts +25 -0
  22. package/ext/css/src/lib/colors/slate.ts +25 -0
  23. package/ext/css/src/lib/colors/stone.ts +25 -0
  24. package/ext/css/src/lib/colors/teal.ts +25 -0
  25. package/ext/css/src/lib/colors/violet.ts +25 -0
  26. package/ext/css/src/lib/colors/yellow.ts +25 -0
  27. package/ext/css/src/lib/colors/zinc.ts +25 -0
  28. package/ext/css/src/lib/colors.ts +23 -0
  29. package/ext/css/src/structure/$CSSContainerRule.ts +13 -0
  30. package/ext/css/src/structure/$CSSKeyframesRule.ts +1 -5
  31. package/ext/css/src/structure/$CSSMediaRule.ts +3 -23
  32. package/ext/css/src/structure/$CSSRule.ts +6 -18
  33. package/ext/css/src/structure/$CSSStyleRule.ts +5 -14
  34. package/ext/css/src/structure/$CSSVariable.ts +3 -3
  35. package/ext/html/html.ts +1 -13
  36. package/ext/html/node/$Anchor.ts +31 -1
  37. package/ext/html/node/$Image.ts +54 -1
  38. package/ext/html/node/$Input.ts +154 -1
  39. package/ext/html/node/$OptGroup.ts +8 -1
  40. package/ext/html/node/$Option.ts +25 -1
  41. package/ext/html/node/$Select.ts +61 -1
  42. package/ext/i18n/README.md +53 -0
  43. package/ext/i18n/package.json +10 -0
  44. package/ext/i18n/src/index.ts +54 -0
  45. package/ext/i18n/src/node/I18nText.ts +35 -0
  46. package/ext/i18n/src/structure/I18n.ts +40 -0
  47. package/ext/i18n/src/structure/I18nDictionary.ts +31 -0
  48. package/ext/markdown/index.ts +123 -0
  49. package/ext/router/index.ts +13 -4
  50. package/ext/router/node/Page.ts +1 -0
  51. package/ext/router/node/Route.ts +4 -3
  52. package/ext/router/node/Router.ts +62 -17
  53. package/ext/router/node/RouterAnchor.ts +1 -1
  54. package/ext/ssr/index.ts +7 -5
  55. package/ext/ui/lib/VirtualScroll.ts +24 -0
  56. package/ext/ui/node/Accordian.ts +97 -0
  57. package/ext/ui/node/Tabs.ts +114 -0
  58. package/ext/ui/node/Toast.ts +16 -0
  59. package/ext/ui/node/Waterfall.ts +73 -0
  60. package/ext/ui/package.json +11 -0
  61. package/package.json +6 -7
  62. package/src/core.ts +36 -19
  63. package/src/global.ts +4 -0
  64. package/src/lib/assign.ts +12 -12
  65. package/src/lib/assignHelper.ts +2 -2
  66. package/src/lib/chain.ts +3 -0
  67. package/src/lib/debounce.ts +7 -0
  68. package/src/lib/env.ts +2 -0
  69. package/src/lib/native.ts +22 -24
  70. package/src/lib/randomId.ts +1 -1
  71. package/src/lib/sleep.ts +1 -1
  72. package/src/node/$Element.ts +301 -35
  73. package/src/node/$HTMLElement.ts +94 -1
  74. package/src/node/$Node.ts +148 -54
  75. package/src/node/$Virtual.ts +58 -0
  76. package/src/{node/node.ts → node.ts} +2 -4
  77. package/src/structure/Signal.ts +3 -3
  78. package/ext/css/src/structure/$CSSKeyframeRule.ts +0 -14
@@ -1,4 +1,4 @@
1
- import { _instanceof, _Object_assign, _Object_entries, _Object_fromEntries, isObject, isUndefined } from "amateras/lib/native";
1
+ import { _Array_from, _instanceof, _JSON_stringify, _Object_assign, _Object_entries, _Object_fromEntries, forEach, isObject, isUndefined, startsWith } from "amateras/lib/native";
2
2
  import { randomId } from "amateras/lib/randomId";
3
3
  import { $Element } from "amateras/node/$Element";
4
4
  import { $CSSDeclaration } from "#structure/$CSSDeclaration";
@@ -7,16 +7,16 @@ import { $CSSRule } from "#structure/$CSSRule";
7
7
  import { $CSSStyleRule } from "#structure/$CSSStyleRule";
8
8
  import { $CSSKeyframesRule } from "#structure/$CSSKeyframesRule";
9
9
  import { $CSSVariable } from "#structure/$CSSVariable";
10
- import { $CSSKeyframeRule } from "#structure/$CSSKeyframeRule";
10
+ import { $CSSContainerRule } from "#structure/$CSSContainerRule";
11
11
 
12
12
  declare module 'amateras/core' {
13
13
  export namespace $ {
14
- export function css(options: $CSSOptions): $CSSStyleRule
15
- export function CSS(options: $CSSSelectorType | $CSSMediaSelectorType<false> | $CSSKeyframesSelectorType): void
14
+ export function css(options: $CSSOptions | $CSSStyleRule): $CSSStyleRule
15
+ export function CSS(options: $CSSSelectorType | $CSSKeyframesSelectorType): void
16
16
 
17
17
  export namespace css {
18
- export function variables(value: string): $CSSVariable;
19
- export function variables<T extends $CSSVariableType>(options: T, conditions?: $CSSVariableConditionType<T>): { [key in keyof T]: $CSSVariable }
18
+ export function variables<V extends string>(value: V): $CSSVariable<V>;
19
+ export function variables<T extends $CSSVariableType>(options: T, conditions?: $CSSVariableConditionType<T>): { [key in keyof T]: $CSSVariable<T[key]> }
20
20
  export function keyframes<T extends { [key: string]: $CSSKeyframesType }>(options: T): { [key in keyof T]: $CSSKeyframesRule };
21
21
  }
22
22
  }
@@ -24,12 +24,12 @@ declare module 'amateras/core' {
24
24
 
25
25
  declare module 'amateras/node/$Element' {
26
26
  export interface $Element {
27
- css(...options: $CSSOptions[]): this;
27
+ css(...options: ($CSSOptions | $CSSStyleRule)[]): this;
28
28
  }
29
29
  }
30
30
 
31
31
  const generatedIds = new Set<string>();
32
- function generateId(lettercase?: 'any' | 'lower' | 'upper'): string {
32
+ const generateId = (lettercase: 'any' | 'lower' | 'upper' = 'any'): string => {
33
33
  const id = randomId({lettercase: lettercase});
34
34
  if (generatedIds.has(id)) return generateId(lettercase);
35
35
  generatedIds.add(id);
@@ -37,16 +37,18 @@ function generateId(lettercase?: 'any' | 'lower' | 'upper'): string {
37
37
  }
38
38
 
39
39
  const stylesheet = $.stylesheet;
40
+ const cssTextMap = new Map<string, $CSSStyleRule>();
41
+ const [MEDIA, KEYFRAMES, CONTAINER] = ['@media', '@keyframes', '@container'] as const;
40
42
 
41
- function processCSSOptions<T extends $CSSStyleRule | $CSSKeyframeRule>(
43
+ const processCSSOptions = <T extends $CSSStyleRule>(
42
44
  rule: T,
43
- options: $CSSDeclarationType | $CSSSelectorType | $CSSMediaSelectorType<boolean>,
44
- context: string[] = [],
45
- ): T {
45
+ options: $CSSOptions,
46
+ ): T => {
46
47
  for (const [key, value] of _Object_entries(options)) {
47
48
  if (isUndefined(value)) continue;
48
- if (isObject(value) && !_instanceof(value, $CSSKeyframesRule) && !_instanceof(value, $CSSVariable))
49
- rule.addRule( createRule(key, value, context) );
49
+ else if (_instanceof(value, $CSSDeclaration)) rule.declarations.set(value.key, value);
50
+ else if (isObject(value) && !_instanceof(value, $CSSKeyframesRule, $CSSVariable))
51
+ rule.rules.add( createRule(key, value, rule.selector) );
50
52
  else {
51
53
  const declaration = new $CSSDeclaration(key, `${value}`);
52
54
  rule.declarations.set(declaration.key, declaration);
@@ -55,56 +57,98 @@ function processCSSOptions<T extends $CSSStyleRule | $CSSKeyframeRule>(
55
57
  return rule;
56
58
  }
57
59
 
58
- function createRule(selector: string, options: $CSSOptions, context: string[] = [], global = false) {
59
- if (selector.startsWith('@media')) return createMediaRule(selector.replace('@media ', ''), options, context, global);
60
- if (selector.startsWith('@keyframes')) return createKeyframesRule(selector.replace('@keyframes ', ''), options as $CSSKeyframesType)
61
- return createStyleRule(options, [...context, selector]);
60
+ /** Create rule with several type depend on selector content.
61
+ * @param context - for media rule creation, it should be style rule selector same as nested parent of media rule.
62
+ */
63
+ const createRule = (selector: string, options: $CSSOptions, context?: string) => {
64
+ if (startsWith(selector, CONTAINER, MEDIA)) return createMediaOrContainerRule(selector, options, context);
65
+ if (startsWith(selector, KEYFRAMES)) return createKeyframesRule(selector.replace('@keyframes ', ''), options as $CSSKeyframesType)
66
+ return createStyleRule(selector, options);
62
67
  }
63
68
 
64
- function createStyleRule<T extends $CSSRule>(options: T, context?: string[]): T;
65
- function createStyleRule<T extends $CSSOptions>(options: T, context?: string[]): $CSSStyleRule;
66
- function createStyleRule<T extends $CSSOptions>(options: T, context: string[] = []) {
67
- if (_instanceof(options, $CSSRule)) return options;
68
- return processCSSOptions(new $CSSStyleRule(context), options, context);
69
- }
69
+ const createStyleRule = <T extends $CSSOptions>(selector: string, options: T) => processCSSOptions(new $CSSStyleRule(selector), options);
70
70
 
71
- function createMediaRule(condition: string, options: $CSSOptions, context: string[] = [], global: boolean) {
72
- const rule = new $CSSMediaRule(condition);
71
+ const createMediaOrContainerRule = (selector: string, options: $CSSOptions, context?: string) => {
72
+ const rule = startsWith(selector, MEDIA) ? new $CSSMediaRule(selector) : new $CSSContainerRule(selector);
73
73
  // create media rule from $.CSS
74
- if (global) _Object_entries(options).forEach(([key, value]) => rule.addRule( createRule(key, value, context) ))
74
+ if (!context) forEach(_Object_entries(options), ([key, value]) => rule.rules.add( createRule(key, value) ))
75
75
  // create from $.css
76
- else rule.addRule( createStyleRule(options, context) );
76
+ else rule.rules.add( createStyleRule(context, options) );
77
77
  return rule;
78
78
  }
79
79
 
80
- function createKeyframesRule(name: string, options: $CSSKeyframesType) {
80
+ const createKeyframesRule = (name: string, options: $CSSKeyframesType) => {
81
81
  const rule = new $CSSKeyframesRule(name);
82
- _Object_entries(options).forEach(([key, value]) => {
83
- rule.addRule( processCSSOptions(new $CSSKeyframeRule(key), value) );
82
+ forEach(_Object_entries(options), ([key, value]) => {
83
+ rule.rules.add( processCSSOptions(new $CSSStyleRule(key), value) );
84
84
  })
85
85
  return rule;
86
86
  }
87
87
 
88
- function insertRule(rule: $CSSRule, recursive = false) {
89
- if (_instanceof(rule, $CSSStyleRule) && !CSS.supports(`selector(${rule.selector})`)) return rule;
90
- stylesheet.insertRule(rule.css, stylesheet.cssRules.length);
91
- if (_instanceof(rule, $CSSKeyframesRule)) return rule;
92
- if (!_instanceof(rule, $CSSMediaRule)) rule.rules.forEach(rule => insertRule(rule));
93
- else if (!recursive) rule.mediaRules.forEach(rule => insertRule(rule, true));
94
- return rule;
88
+ const insertRule = (rule: $CSSRule) => {
89
+ cssText(rule).forEach(text => {
90
+ const selector = text.match(/^(.+?) {/)?.[1];
91
+ if (!selector) return;
92
+ if (!startsWith(selector, '@') && selector.split(',').find(str => !CSS.supports(`selector(${str})`))) return;
93
+ $.style(text, stylesheet.cssRules.length);
94
+ })
95
+ return rule
96
+ }
97
+
98
+ const cssText = (rule: $CSSRule, context: string = '', options?: {mediaContext?: string[], containerContext?: string[]}): string[] => {
99
+ if (_instanceof(rule, $CSSStyleRule)) {
100
+ const split = (str: string) => str.split(',');
101
+ const relation = (str: string, ctx: string): string => {
102
+ if (str.includes('&')) return str.replaceAll('&', ctx);
103
+ else return `${ctx ? ctx + ' ': ''}${str}`
104
+ }
105
+ const selectors = split(rule.selector);
106
+ const selector = split(context).map(ctx => selectors.map(selector => relation(selector, ctx))).join(', ');
107
+ const text = `${selector} { ${_Array_from(rule.declarations).map(([_, dec]) => `${dec}`).join(' ')} }`
108
+ return [text, ..._Array_from(rule.rules).map(childRule => cssText(childRule, selector, options)).flat()]
109
+ }
110
+ if (_instanceof(rule, $CSSMediaRule)) {
111
+ const mediaContext = [...options?.mediaContext ?? [], rule.condition];
112
+ const media: string[] = [], style: string[] = []
113
+ forEach(
114
+ _Array_from(rule.rules)
115
+ .map(childRule => cssText(childRule, '', {...options, mediaContext}))
116
+ .flat(),
117
+ (childText => startsWith(childText, MEDIA) ? media.push(childText) : style.push(childText))
118
+ );
119
+ return [`${MEDIA} ${mediaContext.join(' and ')} { ${style.join('\n')} }`, ...media]
120
+ }
121
+ if (_instanceof(rule, $CSSContainerRule)) {
122
+ const containerContext = [...options?.containerContext ?? [], rule.condition];
123
+ const container: string[] = [], style: string[] = [];
124
+ forEach(
125
+ _Array_from(rule.rules)
126
+ .map(childRule => cssText(childRule, '', {...options, containerContext}))
127
+ .flat(),
128
+ (childText => startsWith(childText, CONTAINER) ? container.push(childText) : style.push(childText))
129
+ );
130
+ return [`${CONTAINER} ${rule.name} ${containerContext.join(' and ')} { ${style.join('\n')} }`, ...container]
131
+ }
132
+ if (_instanceof(rule, $CSSKeyframesRule)) {
133
+ return [`${KEYFRAMES} ${rule.name} { ${_Array_from(rule.rules).map(childRule => cssText(childRule, context, options)).join('\n')} }`]
134
+ }
135
+ throw '$CSS RULE TYPE ERROR'
95
136
  }
96
137
 
97
138
  _Object_assign($, {
98
- css(options: $CSSOptions) {
139
+ css(options: $CSSOptions | $CSSStyleRule) {
99
140
  if (_instanceof(options, $CSSRule)) return options;
141
+ const cssText = _JSON_stringify(options);
142
+ const cacheRule = cssTextMap.get(cssText);
143
+ if (cacheRule) return cacheRule;
100
144
  const className = `.${generateId()}`;
101
- const rule = createStyleRule(options, [className]);
102
- rule.className = className;
145
+ const rule = createStyleRule(className, options);
146
+ cssTextMap.set(_JSON_stringify(options), rule);
103
147
  return insertRule( rule );
104
148
  },
105
149
  CSS(options: $CSSSelectorType | $CSSMediaRule) {
106
150
  return _Object_entries(options).map(([selector, declarations]) => {
107
- return insertRule( createRule(selector, declarations, [], true) );
151
+ return insertRule( createRule(selector, declarations) );
108
152
  })
109
153
  }
110
154
  })
@@ -114,7 +158,7 @@ _Object_assign($.css, {
114
158
  if (isObject(options)) {
115
159
  const variables = _Object_fromEntries(_Object_entries(options).map(([key, value]) => [
116
160
  key,
117
- new $CSSVariable(`${key.replaceAll(/([A-Z])/g, ((_, $1) => `-${$1.toLowerCase()}`))}_${generateId('lower')}`, `${value}`)
161
+ new $CSSVariable(`${key.replaceAll(/([A-Z])/g, ((_, $1: string) => `-${$1.toLowerCase()}`))}_${generateId('lower')}`, `${value}`)
118
162
  ]))
119
163
 
120
164
  const conditionObj = conditions ? _Object_entries(conditions).map(([condition, _options]) => [
@@ -142,298 +186,327 @@ _Object_assign($.css, {
142
186
  })
143
187
 
144
188
  _Object_assign($Element.prototype, {
145
- css(this: $Element, ...options: $CSSOptions[]) {
146
- options.forEach(options => {
189
+ css(this: $Element, ...options: ($CSSOptions | $CSSStyleRule)[]) {
190
+ forEach(options, options => {
147
191
  const rule = $.css(options);
148
- this.addClass(rule.context[0]?.slice(1) as string);
192
+ this.addClass(rule.selector.replace(/^./, ''));
149
193
  })
150
194
  return this;
151
195
  }
152
196
  })
153
197
 
154
198
  export * from "#structure/$CSSDeclaration";
155
- export * from "#structure/$CSSKeyframeRule";
156
199
  export * from "#structure/$CSSKeyframesRule";
157
200
  export * from "#structure/$CSSMediaRule";
158
201
  export * from "#structure/$CSSRule";
159
202
  export * from "#structure/$CSSStyleRule";
160
203
  export * from "#structure/$CSSVariable";
161
204
 
162
- type $CSSOptions = $CSSDeclarationType | $CSSSelectorType | $CSSStyleRule | $CSSMediaSelectorType<true>;
163
- type $CSSValueType = '' | 'unset' | 'initial' | 'inherit' | string & {} | number | $CSSVariable
164
- type $CSSDeclarationType = { [key in keyof $CSSDeclarationMap]?: $CSSDeclarationMap[key] }
165
- type $CSSSelectorType = { [key: string & {}]: $CSSOptions }
166
- type $CSSMediaSelectorType<Nested extends boolean> = { [key: `@media ${string}`]: Nested extends true ? $CSSOptions : $CSSSelectorType | $CSSMediaSelectorType<Nested> }
167
- type $CSSVariableType<T = any> = { [key in keyof T]: $CSSValueType }
168
- type $CSSVariableConditionType<T extends $CSSVariableType | string> = T extends string ? { [key: string]: $CSSValueType } : { [key: string]: $CSSVariableType<T> }
169
- type $CSSKeyframesSelectorType = { [key: `@keyframes ${string}`]: $CSSKeyframesType }
170
- type $CSSKeyframesType = { [key: `${number}%`]: $CSSDeclarationType } | { from?: $CSSDeclarationType, to?: $CSSDeclarationType }
205
+ export type $CSSOptions = $CSSDeclarationType | $CSSSelectorType;
206
+ export type $CSSValueType = '' | 'unset' | 'initial' | 'inherit' | string & {} | number | $CSSVariable
207
+ export type $CSSDeclarationType = { [key in keyof $CSSDeclarationMap]?: $CSSDeclarationMap[key] | $CSSValueType } | { [key: string]: $CSSValueType }
208
+ export type $CSSSelectorType = { [key: string & {}]: $CSSOptions }
209
+ export type $CSSVariableType<T = any> = { [key in keyof T]: $CSSValueType }
210
+ export type $CSSVariableConditionType<T extends $CSSVariableType | string> = T extends string ? { [key: string]: $CSSValueType } : { [key: string]: Partial<$CSSVariableType<T>> }
211
+ export type $CSSKeyframesSelectorType = { [key: `@keyframes ${string}`]: $CSSKeyframesType }
212
+ export type $CSSKeyframesType = { [key: `${number}%`]: $CSSDeclarationType } | { from?: $CSSDeclarationType, to?: $CSSDeclarationType }
171
213
 
172
214
  type $CSSDeclarationMap = {
173
- [key in keyof CSSStyleDeclaration]: $CSSValueType;
174
- } | {
175
- alignContent?: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | 'normal';
176
- alignItems?: 'normal' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline';
177
- alignSelf?: 'auto' | 'normal' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline';
178
- all?: 'initial' | 'inherit' | 'unset';
179
- animation?: string | $CSSKeyframesRule;
180
- animationDelay?: string;
181
- animationDirection?: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse';
182
- animationDuration?: string;
183
- animationFillMode?: 'none' | 'forwards' | 'backwards' | 'both';
184
- animationIterationCount?: 'infinite' | number;
185
- animationName?: string | $CSSKeyframesRule;
186
- animationPlayState?: 'running' | 'paused';
187
- animationTimingFunction?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | 'step-start' | 'step-end';
188
- animationComposition?: 'replace' | 'add' | 'accumulate';
189
- backdropFilter?: string;
190
- backfaceVisibility?: 'visible' | 'hidden';
191
- background?: string;
192
- backgroundAttachment?: 'scroll' | 'fixed' | 'local';
193
- backgroundBlendMode?: 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
194
- backgroundClip?: 'border-box' | 'padding-box' | 'content-box' | 'text';
195
- backgroundColor?: string;
196
- backgroundImage?: string;
197
- backgroundOrigin?: 'border-box' | 'padding-box' | 'content-box';
198
- backgroundPosition?: string;
199
- backgroundRepeat?: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | 'space' | 'round';
200
- backgroundSize?: 'auto' | 'cover' | 'contain';
201
- border?: string;
202
- borderBottom?: string;
203
- borderBottomColor?: string;
204
- borderBottomLeftRadius?: string;
205
- borderBottomRightRadius?: string;
206
- borderBottomStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
207
- borderBottomWidth?: string;
208
- borderCollapse?: 'collapse' | 'separate';
209
- borderColor?: string;
210
- borderImage?: string;
211
- borderImageOutset?: string;
212
- borderImageRepeat?: 'stretch' | 'repeat' | 'round' | 'space';
213
- borderImageSlice?: string;
214
- borderImageSource?: string;
215
- borderImageWidth?: string;
216
- borderLeft?: string;
217
- borderLeftColor?: string;
218
- borderLeftStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
219
- borderLeftWidth?: string;
220
- borderRadius?: string;
221
- borderRight?: string;
222
- borderRightColor?: string;
223
- borderRightStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
224
- borderRightWidth?: string;
225
- borderSpacing?: string;
226
- borderStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
227
- borderTop?: string;
228
- borderTopColor?: string;
229
- borderTopLeftRadius?: string;
230
- borderTopRightRadius?: string;
231
- borderTopStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
232
- borderTopWidth?: string;
233
- borderWidth?: string;
234
- bottom?: string;
235
- boxShadow?: string;
236
- boxSizing?: 'content-box' | 'border-box';
237
- breakAfter?: 'auto' | 'avoid' | 'always' | 'all' | 'avoid-page' | 'page' | 'left' | 'right' | 'recto' | 'verso' | 'column' | 'avoid-column';
238
- breakBefore?: 'auto' | 'avoid' | 'always' | 'all' | 'avoid-page' | 'page' | 'left' | 'right' | 'recto' | 'verso' | 'column' | 'avoid-column';
239
- breakInside?: 'auto' | 'avoid' | 'avoid-page' | 'avoid-column';
240
- captionSide?: 'top' | 'bottom';
241
- caretColor?: string;
242
- clear?: 'none' | 'left' | 'right' | 'both';
243
- clip?: string;
244
- clipPath?: string;
245
- color?: string;
246
- columnCount?: 'auto' | number;
247
- columnFill?: 'balance' | 'auto';
248
- columnGap?: string;
249
- columnRule?: string;
250
- columnRuleColor?: string;
251
- columnRuleStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
252
- columnRuleWidth?: string;
253
- columnSpan?: 'none' | 'all';
254
- columnWidth?: string;
255
- columns?: string;
256
- content?: string;
257
- counterIncrement?: string;
258
- counterReset?: string;
259
- cursor?: 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ew-resize' | 'ns-resize' | 'nesw-resize' | 'nwse-resize' | 'col-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out' | 'grab' | 'grabbing';
260
- direction?: 'ltr' | 'rtl';
261
- display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'inline-grid' | 'flow-root' | 'none' | 'contents' | 'table' | 'table-row' | 'table-cell' | 'table-column' | 'table-column-group' | 'table-header-group' | 'table-footer-group' | 'table-row-group' | 'list-item';
262
- emptyCells?: 'show' | 'hide';
263
- filter?: string;
264
- flex?: string;
265
- flexBasis?: string;
266
- flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
267
- flexFlow?: string;
268
- flexGrow?: number;
269
- flexShrink?: number;
270
- flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
271
- float?: 'left' | 'right' | 'none';
272
- font?: string;
273
- fontFamily?: string;
274
- fontFeatureSettings?: string;
275
- fontKerning?: 'auto' | 'normal' | 'none';
276
- fontLanguageOverride?: string;
277
- fontOpticalSizing?: 'auto' | 'none';
278
- fontSize?: string;
279
- fontSizeAdjust?: string;
280
- fontStretch?: 'normal' | 'ultra-condensed' | 'extra-condensed' | 'condensed' | 'semi-condensed' | 'semi-expanded' | 'expanded' | 'extra-expanded' | 'ultra-expanded';
281
- fontStyle?: 'normal' | 'italic' | 'oblique';
282
- fontSynthesis?: string;
283
- fontVariant?: 'normal' | 'small-caps';
284
- fontVariantCaps?: 'normal' | 'small-caps' | 'all-small-caps' | 'petite-caps' | 'all-petite-caps' | 'unicase' | 'titling-caps';
285
- fontVariantEastAsian?: string;
286
- fontVariantLigatures?: string;
287
- fontVariantNumeric?: string;
288
- fontVariantPosition?: 'normal' | 'sub' | 'super';
289
- fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
290
- gap?: string;
291
- grid?: string;
292
- gridArea?: string;
293
- gridAutoColumns?: string;
294
- gridAutoFlow?: 'row' | 'column' | 'dense' | 'row dense' | 'column dense';
295
- gridAutoRows?: string;
296
- gridColumn?: string;
297
- gridColumnEnd?: string;
298
- gridColumnGap?: string;
299
- gridColumnStart?: string;
300
- gridGap?: string;
301
- gridRow?: string;
302
- gridRowEnd?: string;
303
- gridRowGap?: string;
304
- gridRowStart?: string;
305
- gridTemplate?: string;
306
- gridTemplateAreas?: string;
307
- gridTemplateColumns?: string;
308
- gridTemplateRows?: string;
309
- height?: string;
310
- hyphens?: 'none' | 'manual' | 'auto';
311
- imageRendering?: 'auto' | 'crisp-edges' | 'pixelated';
312
- isolation?: 'auto' | 'isolate';
313
- justifyContent?: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
314
- justifyItems?: 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right';
315
- justifySelf?: 'auto' | 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right';
316
- left?: string;
317
- letterSpacing?: 'normal';
318
- lineHeight?: 'normal' | number;
319
- listStyle?: string;
320
- listStyleImage?: string;
321
- listStylePosition?: 'inside' | 'outside';
322
- listStyleType?: 'disc' | 'circle' | 'square' | 'decimal' | 'georgian' | 'trad-chinese-informal' | 'none';
323
- margin?: string;
324
- marginBottom?: string;
325
- marginLeft?: string;
326
- marginRight?: string;
327
- marginTop?: string;
328
- mask?: string;
329
- maskClip?: string;
330
- maskComposite?: string;
331
- maskImage?: string;
332
- maskMode?: string;
333
- maskOrigin?: string;
334
- maskPosition?: string;
335
- maskRepeat?: string;
336
- maskSize?: string;
337
- maskType?: string;
338
- maxHeight?: string;
339
- maxWidth?: string;
340
- minHeight?: string;
341
- minWidth?: string;
342
- mixBlendMode?: 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
343
- objectFit?: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';
344
- objectPosition?: string;
345
- opacity?: number;
346
- order?: number;
347
- outline?: string;
348
- outlineColor?: string;
349
- outlineOffset?: string;
350
- outlineStyle?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
351
- outlineWidth?: string;
352
- overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';
353
- overflowWrap?: 'normal' | 'break-word' | 'anywhere';
354
- overflowX?: 'visible' | 'hidden' | 'scroll' | 'auto';
355
- overflowY?: 'visible' | 'hidden' | 'scroll' | 'auto';
356
- overscrollBehavior?: 'auto' | 'contain' | 'none';
357
- overscrollBehaviorX?: 'auto' | 'contain' | 'none';
358
- overscrollBehaviorY?: 'auto' | 'contain' | 'none';
359
- padding?: string;
360
- paddingBottom?: string;
361
- paddingLeft?: string;
362
- paddingRight?: string;
363
- paddingTop?: string;
364
- pageBreakAfter?: 'auto' | 'always' | 'avoid' | 'left' | 'right';
365
- pageBreakBefore?: 'auto' | 'always' | 'avoid' | 'left' | 'right';
366
- pageBreakInside?: 'auto' | 'avoid';
367
- paintOrder?: string;
368
- perspective?: string;
369
- perspectiveOrigin?: string;
370
- placeContent?: string;
371
- placeItems?: string;
372
- placeSelf?: string;
373
- pointerEvents?: 'auto' | 'none';
374
- position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';
375
- quotes?: string;
376
- resize?: 'none' | 'both' | 'horizontal' | 'vertical' | 'block' | 'inline';
377
- right?: string;
378
- rotate?: string;
379
- rowGap?: string;
380
- scale?: string;
381
- scrollBehavior?: 'auto' | 'smooth';
382
- shapeRendering?: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision';
383
- stopColor?: string;
384
- stopOpacity?: string;
385
- stroke?: string;
386
- strokeDasharray?: string;
387
- strokeDashoffset?: string;
388
- strokeLinecap?: 'butt' | 'round' | 'square';
389
- strokeLinejoin?: 'miter' | 'round' | 'bevel';
390
- strokeMiterlimit?: string;
391
- strokeOpacity?: string;
392
- strokeWidth?: string;
393
- tabSize?: string;
394
- tableLayout?: 'auto' | 'fixed';
395
- textAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';
396
- textAlignLast?: 'auto' | 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';
397
- textAnchor?: 'start' | 'middle' | 'end';
398
- textCombineUpright?: 'none' | 'all';
399
- textDecoration?: string;
400
- textDecorationColor?: string;
401
- textDecorationLine?: 'none' | 'underline' | 'overline' | 'line-through' | 'grammar-error' | 'spelling-error';
402
- textDecorationStyle?: 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
403
- textDecorationThickness?: string;
404
- textDecorationSkipInk?: 'auto' | 'none';
405
- textEmphasis?: string;
406
- textIndent?: string;
407
- textJustify?: 'auto' | 'inter-word' | 'inter-character' | 'none';
408
- textOrientation?: 'mixed' | 'upright' | 'sideways';
409
- textOverflow?: 'clip' | 'ellipsis';
410
- textRendering?: 'auto' | 'optimizeSpeed' | 'optimizeLegibility' | 'geometricPrecision';
411
- textShadow?: string;
412
- textTransform?: 'none' | 'capitalize' | 'uppercase' | 'lowercase';
413
- textUnderlineOffset?: string;
414
- textUnderlinePosition?: 'auto' | 'under' | 'left' | 'right';
415
- top?: string;
416
- touchAction?: 'auto' | 'none' | 'pan-x' | 'pan-y' | 'manipulation';
417
- transform?: string;
418
- transformBox?: 'border-box' | 'fill-box' | 'view-box';
419
- transformOrigin?: string;
420
- transformStyle?: 'flat' | 'preserve-3d';
421
- transition?: string;
422
- transitionDelay?: string;
423
- transitionDuration?: string;
424
- transitionProperty?: string;
425
- transitionTimingFunction?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | 'step-start' | 'step-end';
426
- translate?: string;
427
- unicodeBidi?: 'normal' | 'embed' | 'isolate' | 'bidi-override' | 'isolate-override' | 'plaintext';
428
- userSelect?: 'auto' | 'none' | 'text' | 'contain' | 'all';
429
- verticalAlign?: 'baseline' | 'sub' | 'super' | 'text-top' | 'text-bottom' | 'middle' | 'top' | 'bottom';
430
- visibility?: 'visible' | 'hidden' | 'collapse';
431
- whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces';
432
- width?: string;
433
- willChange?: string;
434
- wordBreak?: 'normal' | 'break-all' | 'keep-all' | 'break-word';
435
- wordSpacing?: string;
436
- wordWrap?: 'normal' | 'break-word';
437
- writingMode?: 'horizontal-tb' | 'vertical-rl' | 'vertical-lr';
438
- zIndex?: 'auto' | number;
215
+ alignContent: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | 'normal';
216
+ alignItems: 'normal' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline';
217
+ alignSelf: 'auto' | 'normal' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline';
218
+ all: 'initial' | 'inherit' | 'unset';
219
+ animation: string | $CSSKeyframesRule;
220
+ animationDelay: string;
221
+ animationDirection: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse';
222
+ animationDuration: string;
223
+ animationFillMode: 'none' | 'forwards' | 'backwards' | 'both';
224
+ animationIterationCount: 'infinite' | number;
225
+ animationName: string | $CSSKeyframesRule;
226
+ animationPlayState: 'running' | 'paused';
227
+ animationTimingFunction: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | 'step-start' | 'step-end';
228
+ animationComposition: 'replace' | 'add' | 'accumulate';
229
+ aspectRatio: string;
230
+ appearance: 'none' | 'auto' | 'menulist-button' | 'textfield' | 'base-select' | 'button' | 'checkbox';
231
+ backdropFilter: string;
232
+ backfaceVisibility: 'visible' | 'hidden';
233
+ background: string;
234
+ backgroundAttachment: 'scroll' | 'fixed' | 'local';
235
+ backgroundBlendMode: 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
236
+ backgroundClip: 'border-box' | 'padding-box' | 'content-box' | 'text';
237
+ backgroundColor: string;
238
+ backgroundImage: string;
239
+ backgroundOrigin: 'border-box' | 'padding-box' | 'content-box';
240
+ backgroundPosition: string;
241
+ backgroundRepeat: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | 'space' | 'round';
242
+ backgroundSize: 'auto' | 'cover' | 'contain';
243
+ border: string;
244
+ borderBottom: string;
245
+ borderBottomColor: string;
246
+ borderBottomLeftRadius: string;
247
+ borderBottomRightRadius: string;
248
+ borderBottomStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
249
+ borderBottomWidth: string;
250
+ borderCollapse: 'collapse' | 'separate';
251
+ borderColor: string;
252
+ borderImage: string;
253
+ borderImageOutset: string;
254
+ borderImageRepeat: 'stretch' | 'repeat' | 'round' | 'space';
255
+ borderImageSlice: string;
256
+ borderImageSource: string;
257
+ borderImageWidth: string;
258
+ borderLeft: string;
259
+ borderLeftColor: string;
260
+ borderLeftStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
261
+ borderLeftWidth: string;
262
+ borderRadius: string;
263
+ borderRight: string;
264
+ borderRightColor: string;
265
+ borderRightStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
266
+ borderRightWidth: string;
267
+ borderSpacing: string;
268
+ borderStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
269
+ borderTop: string;
270
+ borderTopColor: string;
271
+ borderTopLeftRadius: string;
272
+ borderTopRightRadius: string;
273
+ borderTopStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
274
+ borderTopWidth: string;
275
+ borderWidth: string;
276
+ bottom: string;
277
+ boxShadow: string;
278
+ boxSizing: 'content-box' | 'border-box';
279
+ breakAfter: 'auto' | 'avoid' | 'always' | 'all' | 'avoid-page' | 'page' | 'left' | 'right' | 'recto' | 'verso' | 'column' | 'avoid-column';
280
+ breakBefore: 'auto' | 'avoid' | 'always' | 'all' | 'avoid-page' | 'page' | 'left' | 'right' | 'recto' | 'verso' | 'column' | 'avoid-column';
281
+ breakInside: 'auto' | 'avoid' | 'avoid-page' | 'avoid-column';
282
+ captionSide: 'top' | 'bottom';
283
+ caretColor: string;
284
+ clear: 'none' | 'left' | 'right' | 'both';
285
+ clip: string;
286
+ clipPath: string;
287
+ color: string;
288
+ columnCount: 'auto' | number;
289
+ columnFill: 'balance' | 'auto';
290
+ columnGap: string;
291
+ columnRule: string;
292
+ columnRuleColor: string;
293
+ columnRuleStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
294
+ columnRuleWidth: string;
295
+ columnSpan: 'none' | 'all';
296
+ columnWidth: string;
297
+ columns: string;
298
+ content: string;
299
+ counterIncrement: string;
300
+ counterReset: string;
301
+ containerName: string;
302
+ containerType: 'inline-size' | 'size' | 'normal' | 'scroll-state';
303
+ cursor: 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ew-resize' | 'ns-resize' | 'nesw-resize' | 'nwse-resize' | 'col-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out' | 'grab' | 'grabbing';
304
+ direction: 'ltr' | 'rtl';
305
+ display: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'inline-grid' | 'flow-root' | 'none' | 'contents' | 'table' | 'table-row' | 'table-cell' | 'table-column' | 'table-column-group' | 'table-header-group' | 'table-footer-group' | 'table-row-group' | 'list-item';
306
+ emptyCells: 'show' | 'hide';
307
+ filter: string;
308
+ flex: string;
309
+ flexBasis: string;
310
+ flexDirection: 'row' | 'row-reverse' | 'column' | 'column-reverse';
311
+ flexFlow: string;
312
+ flexGrow: number;
313
+ flexShrink: number;
314
+ flexWrap: 'nowrap' | 'wrap' | 'wrap-reverse';
315
+ float: 'left' | 'right' | 'none';
316
+ font: string;
317
+ fontFamily: string;
318
+ fontFeatureSettings: string;
319
+ fontKerning: 'auto' | 'normal' | 'none';
320
+ fontLanguageOverride: string;
321
+ fontOpticalSizing: 'auto' | 'none';
322
+ fontSize: string;
323
+ fontSizeAdjust: string;
324
+ fontStretch: 'normal' | 'ultra-condensed' | 'extra-condensed' | 'condensed' | 'semi-condensed' | 'semi-expanded' | 'expanded' | 'extra-expanded' | 'ultra-expanded';
325
+ fontStyle: 'normal' | 'italic' | 'oblique';
326
+ fontSynthesis: string;
327
+ fontVariant: 'normal' | 'small-caps';
328
+ fontVariantCaps: 'normal' | 'small-caps' | 'all-small-caps' | 'petite-caps' | 'all-petite-caps' | 'unicase' | 'titling-caps';
329
+ fontVariantEastAsian: string;
330
+ fontVariantLigatures: string;
331
+ fontVariantNumeric: string;
332
+ fontVariantPosition: 'normal' | 'sub' | 'super';
333
+ fontWeight: 'normal' | 'bold' | 'bolder' | 'lighter' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
334
+ gap: string;
335
+ grid: string;
336
+ gridArea: string;
337
+ gridAutoColumns: string;
338
+ gridAutoFlow: 'row' | 'column' | 'dense' | 'row dense' | 'column dense';
339
+ gridAutoRows: string;
340
+ gridColumn: string;
341
+ gridColumnEnd: string;
342
+ gridColumnGap: string;
343
+ gridColumnStart: string;
344
+ gridGap: string;
345
+ gridRow: string;
346
+ gridRowEnd: string;
347
+ gridRowGap: string;
348
+ gridRowStart: string;
349
+ gridTemplate: string;
350
+ gridTemplateAreas: string;
351
+ gridTemplateColumns: string;
352
+ gridTemplateRows: string;
353
+ height: string;
354
+ hyphens: 'none' | 'manual' | 'auto';
355
+ imageRendering: 'auto' | 'crisp-edges' | 'pixelated';
356
+ isolation: 'auto' | 'isolate';
357
+ justifyContent: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
358
+ justifyItems: 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right';
359
+ justifySelf: 'auto' | 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right';
360
+ left: string;
361
+ letterSpacing: 'normal';
362
+ lineHeight: 'normal' | number;
363
+ listStyle: string;
364
+ listStyleImage: string;
365
+ listStylePosition: 'inside' | 'outside';
366
+ listStyleType: 'disc' | 'circle' | 'square' | 'decimal' | 'georgian' | 'trad-chinese-informal' | 'none';
367
+ margin: string;
368
+ marginBottom: string;
369
+ marginLeft: string;
370
+ marginRight: string;
371
+ marginTop: string;
372
+ marginBlock: string;
373
+ marginBlockStart: string;
374
+ marginBlockEnd: string;
375
+ marginInline: string;
376
+ marginInlineStart: string;
377
+ marginInlineEnd: string;
378
+ mask: string;
379
+ maskClip: string;
380
+ maskComposite: string;
381
+ maskImage: string;
382
+ maskMode: string;
383
+ maskOrigin: string;
384
+ maskPosition: string;
385
+ maskRepeat: string;
386
+ maskSize: string;
387
+ maskType: string;
388
+ maxHeight: string;
389
+ maxWidth: string;
390
+ minHeight: string;
391
+ minWidth: string;
392
+ mixBlendMode: 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
393
+ objectFit: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';
394
+ objectPosition: string;
395
+ opacity: number;
396
+ order: number;
397
+ outline: string;
398
+ outlineColor: string;
399
+ outlineOffset: string;
400
+ outlineStyle: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset';
401
+ outlineWidth: string;
402
+ overflow: 'visible' | 'hidden' | 'scroll' | 'auto';
403
+ overflowWrap: 'normal' | 'break-word' | 'anywhere';
404
+ overflowX: 'visible' | 'hidden' | 'scroll' | 'auto';
405
+ overflowY: 'visible' | 'hidden' | 'scroll' | 'auto';
406
+ overscrollBehavior: 'auto' | 'contain' | 'none';
407
+ overscrollBehaviorX: 'auto' | 'contain' | 'none';
408
+ overscrollBehaviorY: 'auto' | 'contain' | 'none';
409
+ padding: string;
410
+ paddingBottom: string;
411
+ paddingLeft: string;
412
+ paddingRight: string;
413
+ paddingTop: string;
414
+ paddingBlock: string;
415
+ paddingBlockStart: string;
416
+ paddingBlockEnd: string;
417
+ paddingInline: string;
418
+ paddingInlineStart: string;
419
+ paddingInlineEnd: string;
420
+ pageBreakAfter: 'auto' | 'always' | 'avoid' | 'left' | 'right';
421
+ pageBreakBefore: 'auto' | 'always' | 'avoid' | 'left' | 'right';
422
+ pageBreakInside: 'auto' | 'avoid';
423
+ paintOrder: string;
424
+ perspective: string;
425
+ perspectiveOrigin: string;
426
+ placeContent: string;
427
+ placeItems: string;
428
+ placeSelf: string;
429
+ pointerEvents: 'auto' | 'none';
430
+ position: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';
431
+ quotes: string;
432
+ resize: 'none' | 'both' | 'horizontal' | 'vertical' | 'block' | 'inline';
433
+ right: string;
434
+ rotate: string;
435
+ rowGap: string;
436
+ scale: string;
437
+ scrollBehavior: 'auto' | 'smooth';
438
+ scrollMargin: string;
439
+ scrollMarginBottom: string;
440
+ scrollMarginLeft: string;
441
+ scrollMarginRight: string;
442
+ scrollMarginTop: string;
443
+ scrollMarginBlock: string;
444
+ scrollMarginBlockStart: string;
445
+ scrollMarginBlockEnd: string;
446
+ scrollMarginInline: string;
447
+ scrollMarginInlineStart: string;
448
+ scrollMarginInlineEnd: string;
449
+ shapeRendering: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision';
450
+ stopColor: string;
451
+ stopOpacity: string;
452
+ stroke: string;
453
+ strokeDasharray: string;
454
+ strokeDashoffset: string;
455
+ strokeLinecap: 'butt' | 'round' | 'square';
456
+ strokeLinejoin: 'miter' | 'round' | 'bevel';
457
+ strokeMiterlimit: string;
458
+ strokeOpacity: string;
459
+ strokeWidth: string;
460
+ tabSize: string;
461
+ tableLayout: 'auto' | 'fixed';
462
+ textAlign: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';
463
+ textAlignLast: 'auto' | 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';
464
+ textAnchor: 'start' | 'middle' | 'end';
465
+ textCombineUpright: 'none' | 'all';
466
+ textDecoration: 'none' | 'underline' | 'overline' | 'line-through' | 'grammar-error' | 'spelling-error' | 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
467
+ textDecorationColor: string;
468
+ textDecorationLine: 'none' | 'underline' | 'overline' | 'line-through' | 'grammar-error' | 'spelling-error';
469
+ textDecorationStyle: 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
470
+ textDecorationThickness: string;
471
+ textDecorationSkipInk: 'auto' | 'none';
472
+ textEmphasis: string;
473
+ textIndent: string;
474
+ textJustify: 'auto' | 'inter-word' | 'inter-character' | 'none';
475
+ textOrientation: 'mixed' | 'upright' | 'sideways';
476
+ textOverflow: 'clip' | 'ellipsis';
477
+ textRendering: 'auto' | 'optimizeSpeed' | 'optimizeLegibility' | 'geometricPrecision';
478
+ textShadow: string;
479
+ textTransform: 'none' | 'capitalize' | 'uppercase' | 'lowercase';
480
+ textUnderlineOffset: string;
481
+ textUnderlinePosition: 'auto' | 'under' | 'left' | 'right';
482
+ top: string;
483
+ touchAction: 'auto' | 'none' | 'pan-x' | 'pan-y' | 'manipulation';
484
+ transform: string;
485
+ transformBox: 'border-box' | 'fill-box' | 'view-box';
486
+ transformOrigin: string;
487
+ transformStyle: 'flat' | 'preserve-3d';
488
+ transition: string;
489
+ transitionDelay: string;
490
+ transitionDuration: string;
491
+ transitionProperty: string;
492
+ transitionTimingFunction: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | 'step-start' | 'step-end';
493
+ translate: string;
494
+ unicodeBidi: 'normal' | 'embed' | 'isolate' | 'bidi-override' | 'isolate-override' | 'plaintext';
495
+ userSelect: 'auto' | 'none' | 'text' | 'contain' | 'all';
496
+ verticalAlign: 'baseline' | 'sub' | 'super' | 'text-top' | 'text-bottom' | 'middle' | 'top' | 'bottom';
497
+ viewTimeline: string;
498
+ viewTimelineAxis: string;
499
+ viewTimelineInset: string;
500
+ viewTimelineName: string;
501
+ viewTransitionName: string;
502
+ viewTransitionClass: string;
503
+ visibility: 'visible' | 'hidden' | 'collapse';
504
+ whiteSpace: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces';
505
+ width: string;
506
+ willChange: string;
507
+ wordBreak: 'normal' | 'break-all' | 'keep-all' | 'break-word';
508
+ wordSpacing: string;
509
+ wordWrap: 'normal' | 'break-word';
510
+ writingMode: 'horizontal-tb' | 'vertical-rl' | 'vertical-lr';
511
+ zIndex: 'auto' | number;
439
512
  };