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