UNPKG

98.7 kBTypeScriptView Raw
1
2/**
3 * Helper function whose role is supposed to express that regardless if T is a style object or style function,
4 * it will always map to a style function.
5 */
6declare type __MapToFunctionType<T> = Extract<T, Function> extends never ? (...args: any[]) => Partial<T> : Extract<T, Function>;
7
8/**
9 * Combine a set of styles together (but does not register css classes).
10 * @param styleSet - The first style set to be concatenated.
11 */
12export declare function concatStyleSets<TStyleSet>(styleSet: TStyleSet | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet>>;
13
14/**
15 * Combine a set of styles together (but does not register css classes).
16 * @param styleSet1 - The first style set to be concatenated.
17 * @param styleSet2 - The second style set to be concatenated.
18 */
19export declare function concatStyleSets<TStyleSet1, TStyleSet2>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;
20
21/**
22 * Combine a set of styles together (but does not register css classes).
23 * @param styleSet1 - The first style set to be concatenated.
24 * @param styleSet2 - The second style set to be concatenated.
25 * @param styleSet3 - The third style set to be concatenated.
26 */
27export declare function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;
28
29/**
30 * Combine a set of styles together (but does not register css classes).
31 * @param styleSet1 - The first style set to be concatenated.
32 * @param styleSet2 - The second style set to be concatenated.
33 * @param styleSet3 - The third style set to be concatenated.
34 * @param styleSet4 - The fourth style set to be concatenated.
35 */
36export declare function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined, styleSet4: TStyleSet4 | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>>;
37
38/**
39 * Combine a set of styles together (but does not register css classes).
40 * @param styleSet1 - The first style set to be concatenated.
41 * @param styleSet2 - The second style set to be concatenated.
42 * @param styleSet3 - The third style set to be concatenated.
43 * @param styleSet4 - The fourth style set to be concatenated.
44 * @param styleSet5 - The fifth set to be concatenated.
45 */
46export declare function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined, styleSet4: TStyleSet4 | false | null | undefined, styleSet5: TStyleSet5 | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4> & ObjectOnly<TStyleSet5>>;
47
48/**
49 * Combine a set of styles together (but does not register css classes).
50 * @param styleSet1 - The first style set to be concatenated.
51 * @param styleSet2 - The second style set to be concatenated.
52 * @param styleSet3 - The third style set to be concatenated.
53 * @param styleSet4 - The fourth style set to be concatenated.
54 * @param styleSet5 - The fifth set to be concatenated.
55 * @param styleSet6 - The sixth set to be concatenated.
56 */
57export declare function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5, TStyleSet6>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined, styleSet4: TStyleSet4 | false | null | undefined, styleSet5: TStyleSet5 | false | null | undefined, styleSet6: TStyleSet6 | false | null | undefined): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4> & ObjectOnly<TStyleSet5> & ObjectOnly<TStyleSet6>>;
58
59/**
60 * Combine a set of styles together (but does not register css classes).
61 * @param styleSets - One or more stylesets to be merged (each param can also be falsy).
62 */
63export declare function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any>;
64
65/**
66 * Concatenates style sets into one, but resolves functional sets using the given props.
67 * @param styleProps - Props used to resolve functional sets.
68 * @param allStyles - Style sets, which can be functions or objects.
69 */
70export declare function concatStyleSetsWithProps<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>>(styleProps: TStyleProps, ...allStyles: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[]): DeepPartial<TStyleSet>;
71
72/**
73 * TypeScript type to return a deep partial object (each property can be undefined, recursively.)
74 */
75export declare type DeepPartial<T> = {
76 [P in keyof T]?: T[P] extends (infer U)[] ? DeepPartial<U>[] : T[P] extends object ? DeepPartial<T[P]> : T[P];
77};
78
79declare type Diff<T extends keyof any, U extends keyof any> = ({
80 [P in T]: P;
81} & {
82 [P in U]: never;
83} & {
84 [x: string]: never;
85})[T];
86
87/**
88 * Registers a font face.
89 * @public
90 */
91export declare function fontFace(font: IFontFace): void;
92
93/**
94 * A concatenated style set differs from `IStyleSet` in that subComponentStyles will always be a style function.
95 */
96export declare type IConcatenatedStyleSet<TStyleSet extends IStyleSet<TStyleSet>> = {
97 [P in keyof Omit<TStyleSet, 'subComponentStyles'>]: IStyle;
98} & {
99 subComponentStyles?: {
100 [P in keyof TStyleSet['subComponentStyles']]: IStyleFunction<any, any>;
101 };
102};
103
104/**
105 * CSP settings for the stylesheet
106 */
107export declare interface ICSPSettings {
108 /**
109 * Nonce to inject into script tag
110 */
111 nonce?: string;
112}
113
114declare type ICSSBaselinePositionRule = 'baseline' | 'last baseline' | 'first baseline';
115
116declare type ICSSDisplayRule = 'block' | 'inline' | 'run-in' | 'flow' | 'flow-root' | 'table' | 'flex' | 'grid' | 'ruby' | 'block flow' | 'inline table' | 'flex run-in' | 'list-item' | 'list-item block' | 'list-item inline' | 'list-item flow' | 'list-item flow-root' | 'list-item block flow' | 'list-item block flow-root' | 'flow list-item block' | 'table-row-group' | 'table-header-group' | 'table-footer-group' | 'table-row' | 'table-cell' | 'table-column-group' | 'table-column' | 'table-caption' | 'ruby-base' | 'ruby-text' | 'ruby-base-container' | 'ruby-text-container' | 'contents' | 'none' | 'inline-block' | 'inline-table' | 'inline-flex' | 'inline-grid';
117
118declare type ICSSOverflowAndSelfPositionRule = 'center' | 'start' | 'end' | 'self-start' | 'self-end' | 'flex-start' | 'flex-end' | 'safe center' | 'safe start' | 'safe end' | 'safe self-start' | 'safe self-end' | 'safe flex-start' | 'safe flex-end' | 'unsafe center' | 'unsafe start' | 'unsafe end' | 'unsafe self-start' | 'unsafe self-end' | 'unsafe flex-start' | 'unsafe flex-end';
119
120declare type ICSSPercentageRule = string;
121
122declare type ICSSPixelUnitRule = string | number;
123
124export declare type ICSSRule = 'initial' | 'inherit' | 'unset';
125
126/**
127 * Font face definition.
128 *
129 * @public
130 * {@docCategory IFontFace}
131 */
132export declare interface IFontFace extends IRawFontStyle {
133 /**
134 * Specifies the src of the font.
135 */
136 src?: string;
137 /**
138 * unicode-range allows you to set a specific range of characters to be downloaded
139 * from a font (embedded using \@font-face) and made available for use on the current
140 * page.
141 */
142 unicodeRange?: ICSSRule | string;
143 /**
144 * Determines how a font face is displayed based on whether and when it is downloaded
145 * and ready to use.
146 */
147 fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
148 /**
149 * Feature settings for the font.
150 */
151 fontFeatureSettings?: string;
152}
153
154export declare type IFontWeight = ICSSRule | 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | 100 | '200' | 200 | '300' | 300 | '400' | 400 | '500' | 500 | '600' | 600 | '700' | 700 | '800' | 800 | '900' | 900;
155
156/**
157 * Keyframe definition.
158 */
159export declare type IKeyframes = Record<string, IRawStyle>;
160
161declare type IMixBlendModes = ICSSRule | 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity';
162
163export declare const InjectionMode: {
164 /**
165 * Avoids style injection, use getRules() to read the styles.
166 */
167 none: 0;
168 /**
169 * Inserts rules using the insertRule api.
170 */
171 insertNode: 1;
172 /**
173 * Appends rules using appendChild.
174 */
175 appendChild: 2;
176};
177
178export declare type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];
179
180/**
181 * A processed style set is one which the set of styles associated with each area has been converted
182 * into a class name. Additionally, all subComponentStyles are style functions.
183 */
184export declare type IProcessedStyleSet<TStyleSet extends IStyleSet<TStyleSet>> = {
185 [P in keyof Omit<TStyleSet, 'subComponentStyles'>]: string;
186} & {
187 subComponentStyles: {
188 [P in keyof TStyleSet['subComponentStyles']]: __MapToFunctionType<TStyleSet['subComponentStyles'] extends infer J ? (P extends keyof J ? J[P] : never) : never>;
189 };
190};
191
192/**
193 * The base font style.
194 * {@docCategory IRawFontStyle}
195 */
196export declare interface IRawFontStyle {
197 /**
198 * The font property is shorthand that allows you to do one of two things: you can
199 * either set up six of the most mature font properties in one line, or you can set
200 * one of a choice of keywords to adopt a system font setting.
201 */
202 font?: ICSSRule | string;
203 /**
204 * The font-family property allows one or more font family names and/or generic family
205 * names to be specified for usage on the selected element(s)' text. The browser then
206 * goes through the list; for each character in the selection it applies the first
207 * font family that has an available glyph for that character.
208 */
209 fontFamily?: ICSSRule | string;
210 /**
211 * The font-kerning property allows contextual adjustment of inter-glyph spacing, i.e.
212 * the spaces between the characters in text. This property controls <bold>metric
213 * kerning</bold> - that utilizes adjustment data contained in the font. Optical
214 * Kerning is not supported as yet.
215 */
216 fontKerning?: ICSSRule | string;
217 /**
218 * Specifies the size of the font. Used to compute em and ex units.
219 * See CSS 3 font-size property https://www.w3.org/TR/css-fonts-3/#propdef-font-size
220 */
221 fontSize?: ICSSRule | 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large' | 'larger' | 'smaller' | ICSSPixelUnitRule | ICSSPercentageRule;
222 /**
223 * The font-size-adjust property adjusts the font-size of the fallback fonts defined
224 * with font-family, so that the x-height is the same no matter what font is used.
225 * This preserves the readability of the text when fallback happens.
226 * See CSS 3 font-size-adjust property
227 * https://www.w3.org/TR/css-fonts-3/#propdef-font-size-adjust
228 */
229 fontSizeAdjust?: ICSSRule | 'none' | number | string;
230 /**
231 * Allows you to expand or condense the widths for a normal, condensed, or expanded
232 * font face.
233 * See CSS 3 font-stretch property
234 * https://drafts.csswg.org/css-fonts-3/#propdef-font-stretch
235 */
236 fontStretch?: ICSSRule | 'normal' | 'ultra-condensed' | 'extra-condensed' | 'condensed' | 'semi-condensed' | 'semi-expanded' | 'expanded' | 'extra-expanded' | 'ultra-expanded' | string;
237 /**
238 * The font-style property allows normal, italic, or oblique faces to be selected.
239 * Italic forms are generally cursive in nature while oblique faces are typically
240 * sloped versions of the regular face. Oblique faces can be simulated by artificially
241 * sloping the glyphs of the regular face.
242 * See CSS 3 font-style property https://www.w3.org/TR/css-fonts-3/#propdef-font-style
243 */
244 fontStyle?: ICSSRule | 'normal' | 'italic' | 'oblique' | string;
245 /**
246 * This value specifies whether the user agent is allowed to synthesize bold or
247 * oblique font faces when a font family lacks bold or italic faces.
248 */
249 fontSynthesis?: ICSSRule | string;
250 /**
251 * The font-variant property enables you to select the small-caps font within a font
252 * family.
253 */
254 fontVariant?: ICSSRule | string;
255 /**
256 * Fonts can provide alternate glyphs in addition to default glyph for a character.
257 * This property provides control over the selection of these alternate glyphs.
258 */
259 fontVariantAlternates?: ICSSRule | string;
260 /**
261 * Specifies the weight or boldness of the font.
262 * See CSS 3 'font-weight' property https://www.w3.org/TR/css-fonts-3/#propdef-font-weight
263 */
264 fontWeight?: IFontWeight | string;
265}
266
267/**
268 * IRawStyle extends a raw style object, but allows selectors to be defined
269 * under the selectors node.
270 * @public
271 * {@docCategory IRawStyle}
272 */
273export declare interface IRawStyle extends IRawStyleBase {
274 /**
275 * Allow css variables, strings, objects. While we should have more strict typing
276 * here, partners are broken in many unpredictable cases where typescript can't infer
277 * the right typing. Loosening the typing to both allow for css variables and other things.
278 */
279 [key: string]: any;
280 /**
281 * Display name for the style.
282 */
283 displayName?: string;
284 /**
285 * @deprecated - The selectors wrapper is no longer required. You may add selectors as siblings to other
286 * style properties, like most css-in-js libraries support.
287 */
288 selectors?: {
289 [key: string]: IStyle;
290 };
291}
292
293/**
294 * All raw style properties.
295 *
296 * @public
297 * {@docCategory IRawStyleBase}
298 */
299export declare interface IRawStyleBase extends IRawFontStyle {
300 /**
301 * (Ms specific) constrast adjust rule.
302 */
303 MsHighContrastAdjust?: ICSSRule | string;
304 /**
305 * (Ms specific) scrollbar behavior adjust rule.
306 */
307 MsOverflowStyle?: 'auto' | 'none' | 'scrollbar' | '-ms-autohiding-scrollbar' | string;
308 /**
309 * (Moz specific) font smoothing directive.
310 */
311 MozOsxFontSmoothing?: 'none' | 'antialiased' | 'grayscale' | 'subpixel-antialiased' | string;
312 /**
313 * (Webkit specific) font smoothing directive.
314 */
315 WebkitFontSmoothing?: 'none' | 'antialiased' | 'grayscale' | 'subpixel-antialiased' | string;
316 /**
317 * (Webkit specific) momentum scrolling on iOS devices
318 */
319 WebkitOverflowScrolling?: 'auto' | 'touch' | string;
320 /**
321 * (Webkit specific) color of the highlight that appears overa link while it's being tapped
322 */
323 WebkitTapHighlightColor?: string;
324 /**
325 * (Webkit specific) controls the text inflation algorithm used on some smartphones and tablets.
326 * Other browsers will ignore this property.
327 */
328 WebkitTextSizeAdjust?: 'none' | 'auto' | ICSSPercentageRule | ICSSRule | string;
329 /**
330 * Aligns a flex container's lines within the flex container when there is extra space
331 * in the cross-axis, similar to how justify-content aligns individual items within the main-axis.
332 */
333 alignContent?: ICSSRule | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'stretch' | string;
334 /**
335 * Sets the default alignment in the cross axis for all of the flex container's items,
336 * including anonymous flex items, similarly to how justify-content aligns items along the main axis.
337 */
338 alignItems?: ICSSRule | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch' | string;
339 /**
340 * Aligns the box (as the alignment subject) within its containing block (as the alignment container)
341 * along the block/column/cross axis of the alignment container.
342 *
343 * See CSS align-self property
344 * https://www.w3.org/TR/css-align-3/#propdef-align-self
345 */
346 alignSelf?: ICSSRule | 'auto' | 'normal' | 'stretch' | ICSSBaselinePositionRule | ICSSOverflowAndSelfPositionRule | string;
347 /**
348 * This property allows precise alignment of elements, such as graphics, that do not
349 * have a baseline-table or lack the desired baseline in their baseline-table. With the
350 * alignment-adjust property, the position of the baseline identified by the
351 * alignment-baseline can be explicitly determined. It also determines precisely
352 * the alignment point for each glyph within a textual element.
353 */
354 alignmentAdjust?: ICSSRule | string;
355 /**
356 * Specifies how an object is aligned with respect to its parent. This property specifies
357 * which baseline of this element is to be aligned with the corresponding baseline of the
358 * parent. For example, this allows alphabetic baselines in Roman text to stay aligned
359 * across font size changes. It defaults to the baseline with the same name as the computed
360 * value of the alignment-baseline property.
361 */
362 alignmentBaseline?: ICSSRule | string;
363 /**
364 * The animation CSS property is a shorthand property for the various animation properties:
365 * `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`,
366 * `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and
367 * `animation-play-state`.
368 */
369 animation?: ICSSRule | string;
370 /**
371 * Defines a length of time to elapse before an animation starts, allowing an animation to begin execution
372 * some time after it is applied.
373 */
374 animationDelay?: ICSSRule | string;
375 /**
376 * Defines whether an animation should run in reverse on some or all cycles.
377 */
378 animationDirection?: ICSSRule | string;
379 /**
380 * Specifies the length an animation takes to finish. Default value is 0, meaning
381 * there will be no animation.
382 */
383 animationDuration?: ICSSRule | string;
384 /**
385 * The animation-fill-mode CSS property specifies how a CSS animation should apply
386 * styles to its target before and after its execution.
387 */
388 animationFillMode?: ICSSRule | 'none' | 'forwards' | 'backwards' | 'both' | string;
389 /**
390 * Specifies how many times an animation cycle should play.
391 */
392 animationIterationCount?: ICSSRule | string;
393 /**
394 * Defines the list of animations that apply to the element.
395 */
396 animationName?: ICSSRule | string;
397 /**
398 * Defines whether an animation is running or paused.
399 */
400 animationPlayState?: ICSSRule | string;
401 /**
402 * The animation-timing-function specifies the speed curve of an animation.
403 */
404 animationTimingFunction?: ICSSRule | string;
405 /**
406 * Allows changing the style of any element to platform-based interface elements or
407 * vice versa.
408 */
409 appearance?: ICSSRule | string;
410 /**
411 * Lets you apply graphical effects such as blurring or color shifting to the area
412 * behind an element. Because it applies to everything behind the element, to see
413 * the effect you must make the element or its background at least partially transparent.
414 */
415 backdropFilter?: ICSSRule | string;
416 /**
417 * Edge requires the -webkit prefix backdrop-filter.
418 */
419 WebkitBackdropFilter?: ICSSRule | string;
420 /**
421 * Determines whether or not the “back” side of a transformed element is visible when
422 * facing the viewer.
423 */
424 backfaceVisibility?: ICSSRule | string;
425 /**
426 * Shorthand property to set the values for one or more of:
427 * background-clip, background-color, background-image,
428 * background-origin, background-position, background-repeat,
429 * background-size, and background-attachment.
430 */
431 background?: ICSSRule | string;
432 /**
433 * If a background-image is specified, this property determines
434 * whether that image's position is fixed within the viewport,
435 * or scrolls along with its containing block.
436 * See CSS 3 background-attachment property https://drafts.csswg.org/css-backgrounds-3/#the-background-attachment
437 */
438 backgroundAttachment?: ICSSRule | 'scroll' | 'fixed' | 'local' | string;
439 /**
440 * This property describes how the element's background images should blend with each
441 * other and the element's background color. The value is a list of blend modes that
442 * corresponds to each background image. Each element in the list will apply to the
443 * corresponding element of background-image. If a property doesn’t have enough
444 * comma-separated values to match the number of layers, the UA must calculate its
445 * used value by repeating the list of values until there are enough.
446 */
447 backgroundBlendMode?: ICSSRule | string;
448 /**
449 * The background-clip CSS property specifies if an element's background, whether a
450 * `<color>` or an `<image>`, extends underneath its border.
451 *
452 * \* Does not work in IE
453 *
454 * \* The `text` value is experimental and should not be used in production code.
455 */
456 backgroundClip?: ICSSRule | 'border-box' | 'padding-box' | 'content-box' | 'text' | string;
457 /**
458 * Sets the background color of an element.
459 */
460 backgroundColor?: ICSSRule | string;
461 /**
462 * Sets a compositing style for background images and colors.
463 */
464 backgroundComposite?: ICSSRule | string;
465 /**
466 * Applies one or more background images to an element. These can be any valid CSS
467 * image, including url() paths to image files or CSS gradients.
468 */
469 backgroundImage?: ICSSRule | string;
470 /**
471 * Specifies what the background-position property is relative to.
472 */
473 backgroundOrigin?: ICSSRule | string;
474 /**
475 * Sets the position of a background image.
476 */
477 backgroundPosition?: ICSSRule | string;
478 /**
479 * Background-repeat defines if and how background images will be repeated after they
480 * have been sized and positioned
481 */
482 backgroundRepeat?: ICSSRule | string;
483 /**
484 * Sets the size of background images
485 */
486 backgroundSize?: ICSSRule | string;
487 /**
488 * Shorthand property that defines the different properties of all four sides of an
489 * element's border in a single declaration. It can be used to set border-width,
490 * border-style and border-color, or a subset of these.
491 */
492 border?: ICSSRule | 0 | string;
493 /**
494 * Shorthand that sets the values of border-bottom-color,
495 * border-bottom-style, and border-bottom-width.
496 */
497 borderBottom?: ICSSRule | ICSSPixelUnitRule;
498 /**
499 * Sets the color of the bottom border of an element.
500 */
501 borderBottomColor?: ICSSRule | string;
502 /**
503 * Defines the shape of the border of the bottom-left corner.
504 */
505 borderBottomLeftRadius?: ICSSRule | ICSSPixelUnitRule;
506 /**
507 * Defines the shape of the border of the bottom-right corner.
508 */
509 borderBottomRightRadius?: ICSSRule | ICSSPixelUnitRule;
510 /**
511 * Sets the line style of the bottom border of a box.
512 */
513 borderBottomStyle?: ICSSRule | string;
514 /**
515 * Sets the width of an element's bottom border. To set all four borders, use the
516 * border-width shorthand property which sets the values simultaneously for
517 * border-top-width, border-right-width, border-bottom-width, and border-left-width.
518 */
519 borderBottomWidth?: ICSSRule | ICSSPixelUnitRule;
520 /**
521 * Border-collapse can be used for collapsing the borders between table cells
522 */
523 borderCollapse?: ICSSRule | string;
524 /**
525 * The CSS border-color property sets the color of an element's four borders. This
526 * property can have from one to four values, made up of the elementary properties:
527 * • border-top-color
528 * • border-right-color
529 * • border-bottom-color
530 * • border-left-color The default color is the currentColor of each of
531 * these values.
532 * If you provide one value, it sets the color for the element. Two values set the
533 * horizontal and vertical values, respectively. Providing three values sets the top,
534 * vertical, and bottom values, in that order. Four values set all for sides: top,
535 * right, bottom, and left, in that order.
536 */
537 borderColor?: ICSSRule | string;
538 /**
539 * Specifies different corner clipping effects, such as scoop (inner curves), bevel
540 * (straight cuts) or notch (cut-off rectangles). Works along with border-radius to
541 * specify the size of each corner effect.
542 */
543 borderCornerShape?: ICSSRule | string;
544 /**
545 * The property border-image-source is used to set the image to be used instead of
546 * the border style. If this is set to none the border-style is used instead.
547 */
548 borderImageSource?: ICSSRule | string;
549 /**
550 * The border-image-width CSS property defines the offset to use for dividing the
551 * border image in nine parts, the top-left corner, central top edge, top-right-corner,
552 * central right edge, bottom-right corner, central bottom edge, bottom-left corner,
553 * and central right edge. They represent inward distance from the top, right, bottom,
554 * and left edges.
555 */
556 borderImageWidth?: ICSSRule | ICSSPixelUnitRule;
557 /**
558 * Shorthand property that defines the border-width, border-style and border-color of
559 * an element's left border in a single declaration. Note that you can use the
560 * corresponding longhand properties to set specific individual properties of the left
561 * border — border-left-width, border-left-style and border-left-color.
562 */
563 borderLeft?: ICSSRule | ICSSPixelUnitRule;
564 /**
565 * The CSS border-left-color property sets the color of an element's left border. This
566 * page explains the border-left-color value, but often you will find it more
567 * convenient to fix the border's left color as part of a shorthand set, either
568 * border-left or border-color. Colors can be defined several ways. For more
569 * information, see Usage.
570 */
571 borderLeftColor?: ICSSRule | string;
572 /**
573 * Sets the style of an element's left border. To set all four borders, use the
574 * shorthand property, border-style. Otherwise, you can set the borders individually
575 * with border-top-style, border-right-style, border-bottom-style, border-left-style.
576 */
577 borderLeftStyle?: ICSSRule | string;
578 /**
579 * Sets the width of an element's left border. To set all four borders, use the
580 * border-width shorthand property which sets the values simultaneously for
581 * border-top-width, border-right-width, border-bottom-width, and border-left-width.
582 */
583 borderLeftWidth?: ICSSRule | ICSSPixelUnitRule;
584 /**
585 * Defines how round the border's corners are.
586 */
587 borderRadius?: ICSSRule | ICSSPixelUnitRule;
588 /**
589 * Shorthand property that defines the border-width, border-style and border-color of
590 * an element's right border in a single declaration. Note that you can use the
591 * corresponding longhand properties to set specific individual properties of the
592 * right border — border-right-width, border-right-style and border-right-color.
593 */
594 borderRight?: ICSSRule | ICSSPixelUnitRule;
595 /**
596 * Sets the color of an element's right border. This page explains the
597 * border-right-color value, but often you will find it more convenient to fix the
598 * border's right color as part of a shorthand set, either border-right or border-color.
599 * Colors can be defined several ways. For more information, see Usage.
600 */
601 borderRightColor?: ICSSRule | string;
602 /**
603 * Sets the style of an element's right border. To set all four borders, use the
604 * shorthand property, border-style. Otherwise, you can set the borders individually
605 * with border-top-style, border-right-style, border-bottom-style, border-left-style.
606 */
607 borderRightStyle?: ICSSRule | string;
608 /**
609 * Sets the width of an element's right border. To set all four borders, use the
610 * border-width shorthand property which sets the values simultaneously for
611 * border-top-width, border-right-width, border-bottom-width, and border-left-width.
612 */
613 borderRightWidth?: ICSSRule | ICSSPixelUnitRule;
614 /**
615 * Specifies the distance between the borders of adjacent cells.
616 */
617 borderSpacing?: ICSSRule | string;
618 /**
619 * Sets the style of an element's four borders. This property can have from one to
620 * four values. With only one value, the value will be applied to all four borders;
621 * otherwise, this works as a shorthand property for each of border-top-style,
622 * border-right-style, border-bottom-style, border-left-style, where each border
623 * style may be assigned a separate value.
624 */
625 borderStyle?: ICSSRule | string;
626 /**
627 * Shorthand property that defines the border-width, border-style and border-color of
628 * an element's top border in a single declaration. Note that you can use the
629 * corresponding longhand properties to set specific individual properties of the top
630 * border — border-top-width, border-top-style and border-top-color.
631 */
632 borderTop?: ICSSRule | ICSSPixelUnitRule;
633 /**
634 * Sets the color of an element's top border. This page explains the border-top-color
635 * value, but often you will find it more convenient to fix the border's top color as
636 * part of a shorthand set, either border-top or border-color.
637 * Colors can be defined several ways. For more information, see Usage.
638 */
639 borderTopColor?: ICSSRule | string;
640 /**
641 * Sets the rounding of the top-left corner of the element.
642 */
643 borderTopLeftRadius?: ICSSRule | ICSSPixelUnitRule;
644 /**
645 * Sets the rounding of the top-right corner of the element.
646 */
647 borderTopRightRadius?: ICSSRule | ICSSPixelUnitRule;
648 /**
649 * Sets the style of an element's top border. To set all four borders, use the
650 * shorthand property, border-style. Otherwise, you can set the borders individually
651 * with border-top-style, border-right-style, border-bottom-style, border-left-style.
652 */
653 borderTopStyle?: ICSSRule | string;
654 /**
655 * Sets the width of an element's top border. To set all four borders, use the
656 * border-width shorthand property which sets the values simultaneously for
657 * border-top-width, border-right-width, border-bottom-width, and border-left-width.
658 */
659 borderTopWidth?: ICSSRule | ICSSPixelUnitRule;
660 /**
661 * Sets the width of an element's four borders. This property can have from one to
662 * four values. This is a shorthand property for setting values simultaneously for
663 * border-top-width, border-right-width, border-bottom-width, and border-left-width.
664 */
665 borderWidth?: ICSSRule | ICSSPixelUnitRule;
666 /**
667 * This property specifies how far an absolutely positioned box's bottom margin edge
668 * is offset above the bottom edge of the box's containing block. For relatively
669 * positioned boxes, the offset is with respect to the bottom edges of the box itself
670 * (i.e., the box is given a position in the normal flow, then offset from that
671 * position according to these properties).
672 */
673 bottom?: ICSSRule | ICSSPixelUnitRule;
674 /**
675 * Breaks a box into fragments creating new borders, padding and repeating backgrounds
676 * or lets it stay as a continuous box on a page break, column break, or, for inline
677 * elements, at a line break.
678 */
679 boxDecorationBreak?: ICSSRule | string;
680 /**
681 * Cast a drop shadow from the frame of almost any element.
682 * MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
683 */
684 boxShadow?: ICSSRule | string;
685 /**
686 * The CSS box-sizing property is used to alter the default CSS box model used to
687 * calculate width and height of the elements.
688 */
689 boxSizing?: ICSSRule | 'border-box' | 'content-box' | string;
690 /**
691 * The CSS break-after property allows you to force a break on multi-column layouts.
692 * More specifically, it allows you to force a break after an element. It allows you
693 * to determine if a break should occur, and what type of break it should be. The
694 * break-after CSS property describes how the page, column or region break behaves
695 * after the generated box. If there is no generated box, the property is ignored.
696 */
697 breakAfter?: ICSSRule | string;
698 /**
699 * Control page/column/region breaks that fall above a block of content
700 */
701 breakBefore?: ICSSRule | string;
702 /**
703 * Control page/column/region breaks that fall within a block of content
704 */
705 breakInside?: ICSSRule | string;
706 /**
707 * The clear CSS property specifies if an element can be positioned next to or must be
708 * positioned below the floating elements that precede it in the markup.
709 */
710 clear?: ICSSRule | string;
711 /**
712 * Clipping crops an graphic, so that only a portion of the graphic is rendered, or
713 * filled. This clip-rule property, when used with the clip-path property, defines
714 * which clip rule, or algorithm, to use when filling the different parts of a graphics.
715 */
716 clipRule?: ICSSRule | string;
717 /**
718 * The color property sets the color of an element's foreground content (usually text),
719 * accepting any standard CSS color from keywords and hex values to RGB(a) and HSL(a).
720 */
721 color?: ICSSRule | string;
722 /**
723 * Describes the number of columns of the element.
724 * See CSS 3 column-count property https://www.w3.org/TR/css3-multicol/#cc
725 */
726 columnCount?: ICSSRule | number | 'auto' | string;
727 /**
728 * Specifies how to fill columns (balanced or sequential).
729 */
730 columnFill?: ICSSRule | string;
731 /**
732 * The column-gap property controls the width of the gap between columns in multi-column
733 * elements.
734 */
735 columnGap?: ICSSRule | string;
736 /**
737 * Sets the width, style, and color of the rule between columns.
738 */
739 columnRule?: ICSSRule | string;
740 /**
741 * Specifies the color of the rule between columns.
742 */
743 columnRuleColor?: ICSSRule | string;
744 /**
745 * Specifies the width of the rule between columns.
746 */
747 columnRuleWidth?: ICSSRule | ICSSPixelUnitRule;
748 /**
749 * The column-span CSS property makes it possible for an element to span across all
750 * columns when its value is set to all. An element that spans more than one column
751 * is called a spanning element.
752 */
753 columnSpan?: ICSSRule | string;
754 /**
755 * Specifies the width of columns in multi-column elements.
756 */
757 columnWidth?: ICSSRule | ICSSPixelUnitRule;
758 /**
759 * This property is a shorthand property for setting column-width and/or column-count.
760 */
761 columns?: ICSSRule | string;
762 /**
763 * Content for pseudo selectors.
764 */
765 content?: string;
766 /**
767 * The counter-increment property accepts one or more names of counters (identifiers),
768 * each one optionally followed by an integer which specifies the value by which the
769 * counter should be incremented (e.g. if the value is 2, the counter increases by 2
770 * each time it is invoked).
771 */
772 counterIncrement?: ICSSRule | string;
773 /**
774 * The counter-reset property contains a list of one or more names of counters, each
775 * one optionally followed by an integer (otherwise, the integer defaults to 0.) Each
776 * time the given element is invoked, the counters specified by the property are set to the given integer.
777 */
778 counterReset?: ICSSRule | string;
779 /**
780 * The cue property specifies sound files (known as an "auditory icon") to be played by
781 * speech media agents before and after presenting an element's content; if only one
782 * file is specified, it is played both before and after. The volume at which the
783 * file(s) should be played, relative to the volume of the main element, may also be
784 * specified. The icon files may also be set separately with the cue-before and
785 * cue-after properties.
786 */
787 cue?: ICSSRule | string;
788 /**
789 * The cue-after property specifies a sound file (known as an "auditory icon") to be
790 * played by speech media agents after presenting an element's content; the volume at
791 * which the file should be played may also be specified. The shorthand property cue
792 * sets cue sounds for both before and after the element is presented.
793 */
794 cueAfter?: ICSSRule | string;
795 /**
796 * Specifies the mouse cursor displayed when the mouse pointer is over an element.
797 */
798 cursor?: ICSSRule | string;
799 /**
800 * The direction CSS property specifies the text direction/writing direction. The rtl
801 * is used for Hebrew or Arabic text, the ltr is for other languages.
802 */
803 direction?: ICSSRule | string;
804 /**
805 * This property specifies the type of rendering box used for an element. It is a
806 * shorthand property for many other display properties.
807 * W3: https://www.w3.org/TR/css-display-3/#the-display-properties
808 * MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/display
809 */
810 display?: ICSSRule | ICSSDisplayRule | string;
811 /**
812 * The ‘fill’ property paints the interior of the given graphical element. The area to
813 * be painted consists of any areas inside the outline of the shape. To determine the
814 * inside of the shape, all subpaths are considered, and the interior is determined
815 * according to the rules associated with the current value of the ‘fill-rule’
816 * property. The zero-width geometric outline of a shape is included in the area to be
817 * painted.
818 */
819 fill?: ICSSRule | string;
820 /**
821 * SVG: Specifies the opacity of the color or the content the current object is filled
822 * with.
823 * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#FillOpacityProperty
824 */
825 fillOpacity?: ICSSRule | number;
826 /**
827 * The ‘fill-rule’ property indicates the algorithm which is to be used to determine
828 * what parts of the canvas are included inside the shape. For a simple,
829 * non-intersecting path, it is intuitively clear what region lies "inside"; however,
830 * for a more complex path, such as a path that intersects itself or where one subpath
831 * encloses another, the interpretation of "inside" is not so obvious.
832 * The ‘fill-rule’ property provides two options for how the inside of a shape is
833 * determined:
834 */
835 fillRule?: ICSSRule | string;
836 /**
837 * Applies various image processing effects. This property is largely unsupported. See
838 * Compatibility section for more information.
839 */
840 filter?: ICSSRule | string;
841 /**
842 * Shorthand for `flex-grow`, `flex-shrink`, and `flex-basis`.
843 */
844 flex?: ICSSRule | string | number;
845 /**
846 * The flex-basis CSS property describes the initial main size of the flex item before
847 * any free space is distributed according to the flex factors described in the flex
848 * property (flex-grow and flex-shrink).
849 */
850 flexBasis?: ICSSRule | string | number;
851 /**
852 * The flex-direction CSS property describes how flex items are placed in the flex
853 * container, by setting the direction of the flex container's main axis.
854 */
855 flexDirection?: ICSSRule | 'row' | 'row-reverse' | 'column' | 'column-reverse' | string;
856 /**
857 * The flex-flow CSS property defines the flex container's main and cross axis. It is
858 * a shorthand property for the flex-direction and flex-wrap properties.
859 */
860 flexFlow?: ICSSRule | string;
861 /**
862 * Specifies the flex grow factor of a flex item.
863 * See CSS flex-grow property https://drafts.csswg.org/css-flexbox-1/#flex-grow-property
864 */
865 flexGrow?: ICSSRule | number | string;
866 /**
867 * Specifies the flex shrink factor of a flex item.
868 * See CSS flex-shrink property https://drafts.csswg.org/css-flexbox-1/#flex-shrink-property
869 */
870 flexShrink?: ICSSRule | number | string;
871 /**
872 * Specifies whether flex items are forced into a single line or can be wrapped onto
873 * multiple lines. If wrapping is allowed, this property also enables you to control
874 * the direction in which lines are stacked.
875 * See CSS flex-wrap property https://drafts.csswg.org/css-flexbox-1/#flex-wrap-property
876 */
877 flexWrap?: ICSSRule | 'nowrap' | 'wrap' | 'wrap-reverse' | string;
878 /**
879 * Elements which have the style float are floated horizontally. These elements can
880 * move as far to the left or right of the containing element. All elements after
881 * the floating element will flow around it, but elements before the floating element
882 * are not impacted. If several floating elements are placed after each other, they
883 * will float next to each other as long as there is room.
884 */
885 float?: ICSSRule | string;
886 /**
887 * Flows content from a named flow (specified by a corresponding flow-into) through
888 * selected elements to form a dynamic chain of layout regions.
889 */
890 flowFrom?: ICSSRule | string;
891 /**
892 * The property which allows authors to opt particular elements out of forced colors mode,
893 * restoring full control over the colors to CSS. Currently it's only supported in Edge Chromium.
894 */
895 forcedColorAdjust?: 'auto' | 'none' | string;
896 /**
897 * Lays out one or more grid items bound by 4 grid lines. Shorthand for setting
898 * grid-column-start, grid-column-end, grid-row-start, and grid-row-end in a single
899 * declaration.
900 */
901 gridArea?: ICSSRule | string;
902 /**
903 * Specifies the size of an implicitly-created grid column track
904 */
905 gridAutoColumns?: ICSSRule | string;
906 /**
907 * Controls how the auto-placement algorithm works,
908 * specifying exactly how auto-placed items get flowed into the grid.
909 */
910 gridAutoFlow?: ICSSRule | string;
911 /**
912 * Specifies the size of an implicitly-created grid column track
913 */
914 gridAutoRows?: ICSSRule | string;
915 /**
916 * Controls a grid item's placement in a grid area, particularly grid position and a
917 * grid span. Shorthand for setting grid-column-start and grid-column-end in a single
918 * declaration.
919 */
920 gridColumn?: ICSSRule | string;
921 /**
922 * Controls a grid item's placement in a grid area as well as grid position and a
923 * grid span. The grid-column-end property (with grid-row-start, grid-row-end, and
924 * grid-column-start) determines a grid item's placement by specifying the grid lines
925 * of a grid item's grid area.
926 */
927 gridColumnEnd?: ICSSRule | string;
928 /**
929 * Sets the size of the gap (gutter) between an element's columns
930 */
931 gridColumnGap?: ICSSRule | string;
932 /**
933 * Determines a grid item's placement by specifying the starting grid lines of a grid
934 * item's grid area . A grid item's placement in a grid area consists of a grid
935 * position and a grid span. See also ( grid-row-start, grid-row-end, and
936 * grid-column-end)
937 */
938 gridColumnStart?: ICSSRule | string;
939 /**
940 * Specifies the gaps (gutters) between grid rows and columns. It is a shorthand
941 * for grid-row-gap and grid-column-gap.
942 */
943 gridGap?: ICSSRule | string;
944 /**
945 * Gets or sets a value that indicates which row an element within a Grid should
946 * appear in. Shorthand for setting grid-row-start and grid-row-end in a single
947 * declaration.
948 */
949 gridRow?: ICSSRule | string;
950 /**
951 * Determines a grid item’s placement by specifying the block-end. A grid item's
952 * placement in a grid area consists of a grid position and a grid span. The
953 * grid-row-end property (with grid-row-start, grid-column-start, and grid-column-end)
954 * determines a grid item's placement by specifying the grid lines of a grid item's
955 * grid area.
956 */
957 gridRowEnd?: ICSSRule | string;
958 /**
959 * Sets the size of the gap (gutter) between an element's grid rows
960 */
961 gridRowGap?: ICSSRule | string;
962 /**
963 * Specifies a grid item’s start position within the grid row by contributing a line,
964 * a span, or nothing (automatic) to its grid placement, thereby specifying the
965 * inline-start edge of its grid area
966 */
967 gridRowStart?: ICSSRule | string;
968 /**
969 * Specifies a row position based upon an integer location, string value, or desired
970 * row size.
971 * css/properties/grid-row is used as short-hand for grid-row-position and
972 * grid-row-position
973 */
974 gridRowPosition?: ICSSRule | string;
975 /**
976 * Specifies named grid areas which are not associated with any particular grid item,
977 * but can be referenced from the grid-placement properties. The syntax of the
978 * grid-template-areas property also provides a visualization of the structure of the
979 * grid, making the overall layout of the grid container easier to understand.
980 */
981 gridTemplate?: ICSSRule | string;
982 /**
983 * Specifies named grid areas
984 */
985 gridTemplateAreas?: ICSSRule | string;
986 /**
987 * Specifies (with grid-template-rows) the line names and track sizing functions of
988 * the grid. Each sizing function can be specified as a length, a percentage of the
989 * grid container’s size, a measurement of the contents occupying the column or row,
990 * or a fraction of the free space in the grid.
991 */
992 gridTemplateColumns?: ICSSRule | string;
993 /**
994 * Specifies (with grid-template-columns) the line names and track sizing functions of
995 * the grid. Each sizing function can be specified as a length, a percentage of the
996 * grid container’s size, a measurement of the contents occupying the column or row,
997 * or a fraction of the free space in the grid.
998 */
999 gridTemplateRows?: ICSSRule | string;
1000 /**
1001 * Sets the height of an element. The content area of the element height does not
1002 * include the padding, border, and margin of the element.
1003 */
1004 height?: ICSSRule | ICSSPixelUnitRule;
1005 /**
1006 * Specifies the minimum number of characters in a hyphenated word
1007 */
1008 hyphenateLimitChars?: ICSSRule | string;
1009 /**
1010 * Indicates the maximum number of successive hyphenated lines in an element. The
1011 * ‘no-limit’ value means that there is no limit.
1012 */
1013 hyphenateLimitLines?: ICSSRule | string;
1014 /**
1015 * Specifies the maximum amount of trailing whitespace (before justification) that may
1016 * be left in a line before hyphenation is triggered to pull part of a word from the
1017 * next line back up into the current one.
1018 */
1019 hyphenateLimitZone?: ICSSRule | string;
1020 /**
1021 * Specifies whether or not words in a sentence can be split by the use of a manual or
1022 * automatic hyphenation mechanism.
1023 */
1024 hyphens?: ICSSRule | string;
1025 /**
1026 * Defines how the browser distributes space between and around flex items
1027 * along the main-axis of their container.
1028 * See CSS justify-content property
1029 * https://www.w3.org/TR/css-flexbox-1/#justify-content-property
1030 */
1031 justifyContent?: ICSSRule | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | string;
1032 /**
1033 * Justifies the box (as the alignment subject) within its containing block (as the alignment container)
1034 * along the inline/row/main axis of the alignment container.
1035 *
1036 * See CSS jusitfy-self property
1037 * https://www.w3.org/TR/css-align-3/#propdef-justify-self
1038 */
1039 justifySelf?: ICSSRule | 'auto' | 'normal' | 'stretch' | ICSSBaselinePositionRule | ICSSOverflowAndSelfPositionRule | 'left' | 'right' | 'safe left' | 'safe right' | 'unsafe left' | 'unsafe right' | string;
1040 /**
1041 * Sets the left position of an element relative to the nearest ancestor that is set
1042 * to position absolute, relative, or fixed.
1043 */
1044 left?: ICSSRule | ICSSPixelUnitRule;
1045 /**
1046 * The letter-spacing CSS property specifies the spacing behavior between text
1047 * characters.
1048 */
1049 letterSpacing?: ICSSRule | string;
1050 /**
1051 * Specifies the height of an inline block level element.
1052 * See CSS 2.1 line-height property https://www.w3.org/TR/CSS21/visudet.html#propdef-line-height
1053 */
1054 lineHeight?: ICSSRule | 'normal' | ICSSPixelUnitRule | ICSSPercentageRule;
1055 /**
1056 * Shorthand property that sets the list-style-type, list-style-position and
1057 * list-style-image properties in one declaration.
1058 */
1059 listStyle?: ICSSRule | string;
1060 /**
1061 * This property sets the image that will be used as the list item marker. When the
1062 * image is available, it will replace the marker set with the 'list-style-type'
1063 * marker. That also means that if the image is not available, it will show the style
1064 * specified by list-style-property
1065 */
1066 listStyleImage?: ICSSRule | string;
1067 /**
1068 * Specifies if the list-item markers should appear inside or outside the content flow.
1069 */
1070 listStylePosition?: ICSSRule | string;
1071 /**
1072 * Specifies the type of list-item marker in a list.
1073 */
1074 listStyleType?: ICSSRule | string;
1075 /**
1076 * The margin property is shorthand to allow you to set all four margins of an element
1077 * at once. Its equivalent longhand properties are margin-top, margin-right,
1078 * margin-bottom and margin-left. Negative values are also allowed.
1079 */
1080 margin?: ICSSRule | ICSSPixelUnitRule;
1081 /**
1082 * margin-bottom sets the bottom margin of an element.
1083 */
1084 marginBottom?: ICSSRule | ICSSPixelUnitRule;
1085 /**
1086 * margin-left sets the left margin of an element.
1087 */
1088 marginLeft?: ICSSRule | ICSSPixelUnitRule;
1089 /**
1090 * margin-right sets the right margin of an element.
1091 */
1092 marginRight?: ICSSRule | ICSSPixelUnitRule;
1093 /**
1094 * margin-top sets the top margin of an element.
1095 */
1096 marginTop?: ICSSRule | ICSSPixelUnitRule;
1097 /**
1098 * The marquee-direction determines the initial direction in which the marquee content moves.
1099 */
1100 marqueeDirection?: ICSSRule | string;
1101 /**
1102 * The 'marquee-style' property determines a marquee's scrolling behavior.
1103 */
1104 marqueeStyle?: ICSSRule | string;
1105 /**
1106 * This property is shorthand for setting mask-image, mask-mode, mask-repeat,
1107 * mask-position, mask-clip, mask-origin, mask-composite and mask-size. Omitted
1108 * values are set to their original properties' initial values.
1109 */
1110 mask?: ICSSRule | string;
1111 /**
1112 * This property is shorthand for setting mask-border-source, mask-border-slice,
1113 * mask-border-width, mask-border-outset, and mask-border-repeat. Omitted values
1114 * are set to their original properties' initial values.
1115 */
1116 maskBorder?: ICSSRule | string;
1117 /**
1118 * This property specifies how the images for the sides and the middle part of the
1119 * mask image are scaled and tiled. The first keyword applies to the horizontal
1120 * sides, the second one applies to the vertical ones. If the second keyword is
1121 * absent, it is assumed to be the same as the first, similar to the CSS
1122 * border-image-repeat property.
1123 */
1124 maskBorderRepeat?: ICSSRule | string;
1125 /**
1126 * This property specifies inward offsets from the top, right, bottom, and left
1127 * edges of the mask image, dividing it into nine regions: four corners, four
1128 * edges, and a middle. The middle image part is discarded and treated as fully
1129 * transparent black unless the fill keyword is present. The four values set the
1130 * top, right, bottom and left offsets in that order, similar to the CSS
1131 * border-image-slice property.
1132 */
1133 maskBorderSlice?: ICSSRule | string;
1134 /**
1135 * Specifies an image to be used as a mask. An image that is empty, fails to
1136 * download, is non-existent, or cannot be displayed is ignored and does not mask
1137 * the element.
1138 */
1139 maskBorderSource?: ICSSRule | string;
1140 /**
1141 * This property sets the width of the mask box image, similar to the CSS
1142 * border-image-width property.
1143 */
1144 maskBorderWidth?: ICSSRule | ICSSPixelUnitRule;
1145 /**
1146 * Determines the mask painting area, which defines the area that is affected by
1147 * the mask. The painted content of an element may be restricted to this area.
1148 */
1149 maskClip?: ICSSRule | string;
1150 /**
1151 * For elements rendered as a single box, specifies the mask positioning area. For
1152 * elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes
1153 * on several pages) specifies which boxes box-decoration-break operates on to
1154 * determine the mask positioning area(s).
1155 */
1156 maskOrigin?: ICSSRule | string;
1157 /**
1158 * This property must not be used. It is no longer included in any standard or
1159 * standard track specification, nor is it implemented in any browser. It is only
1160 * used when the text-align-last property is set to size. It controls allowed
1161 * adjustments of font-size to fit line content.
1162 */
1163 maxFontSize?: ICSSRule | ICSSPixelUnitRule;
1164 /**
1165 * Sets the maximum height for an element. It prevents the height of the element to
1166 * exceed the specified value. If min-height is specified and is greater than
1167 * max-height, max-height is overridden.
1168 */
1169 maxHeight?: ICSSRule | ICSSPixelUnitRule;
1170 /**
1171 * Sets the maximum width for an element. It limits the width property to be larger
1172 * than the value specified in max-width.
1173 */
1174 maxWidth?: ICSSRule | ICSSPixelUnitRule;
1175 /**
1176 * Sets the minimum height for an element. It prevents the height of the element to
1177 * be smaller than the specified value. The value of min-height overrides both
1178 * max-height and height.
1179 */
1180 minHeight?: ICSSRule | ICSSPixelUnitRule;
1181 /**
1182 * Sets the minimum width of an element. It limits the width property to be not
1183 * smaller than the value specified in min-width.
1184 */
1185 minWidth?: ICSSRule | ICSSPixelUnitRule;
1186 /**
1187 * The mix-blend-mode CSS property describes how an element's content should blend
1188 * with the content of the element's direct parent and the element's background.
1189 */
1190 mixBlendMode?: ICSSRule | IMixBlendModes | string;
1191 /**
1192 * The ‘object-fit’ property specifies how the contents of a replaced element should
1193 * be fitted to the box established by its used height and width.
1194 * See CSS 3 object-fit property https://www.w3.org/TR/css3-images/#the-object-fit
1195 */
1196 objectFit?: ICSSRule | 'cover' | 'contain' | 'fill' | 'none' | string;
1197 /**
1198 * Specifies the transparency of an element.
1199 * See CSS 3 opacity property https://drafts.csswg.org/css-color-3/#opacity
1200 */
1201 opacity?: ICSSRule | number | string;
1202 /**
1203 * Specifies the order used to lay out flex items in their flex container.
1204 * Elements are laid out in the ascending order of the order value.
1205 * See CSS order property https://drafts.csswg.org/css-flexbox-1/#order-property
1206 */
1207 order?: ICSSRule | number | string;
1208 /**
1209 * In paged media, this property defines the minimum number of lines in
1210 * a block container that must be left at the bottom of the page.
1211 * See CSS 3 orphans, widows properties https://drafts.csswg.org/css-break-3/#widows-orphans
1212 */
1213 orphans?: ICSSRule | number | string;
1214 /**
1215 * The CSS outline property is a shorthand property for setting one or more of the
1216 * individual outline properties outline-style, outline-width and outline-color in a
1217 * single rule. In most cases the use of this shortcut is preferable and more
1218 * convenient.
1219 * Outlines differ from borders in the following ways:
1220 * • Outlines do not take up space, they are drawn above the content.
1221 * • Outlines may be non-rectangular. They are rectangular in
1222 * Gecko/Firefox. Internet Explorer attempts to place the smallest contiguous outline
1223 * around all elements or shapes that are indicated to have an outline. Opera draws a
1224 * non-rectangular shape around a construct.
1225 */
1226 outline?: ICSSRule | 0 | string;
1227 /**
1228 * The outline-color property sets the color of the outline of an element. An
1229 * outline is a line that is drawn around elements, outside the border edge, to make
1230 * the element stand out.
1231 */
1232 outlineColor?: ICSSRule | string;
1233 /**
1234 * The outline-offset property offsets the outline and draw it beyond the border edge.
1235 */
1236 outlineOffset?: ICSSRule | string;
1237 /**
1238 * The overflow property controls how extra content exceeding the bounding box of an
1239 * element is rendered. It can be used in conjunction with an element that has a
1240 * fixed width and height, to eliminate text-induced page distortion.
1241 */
1242 overflow?: ICSSRule | 'auto' | 'hidden' | 'scroll' | 'visible';
1243 /**
1244 * Specifies the preferred scrolling methods for elements that overflow.
1245 */
1246 overflowStyle?: ICSSRule | string;
1247 /**
1248 * Specifies whether or not the browser should insert line breaks within words to
1249 * prevent text from overflowing its content box. In contrast to word-break,
1250 * overflow-wrap will only create a break if an entire word cannot be placed on its
1251 * own line without overflowing.
1252 */
1253 overflowWrap?: ICSSRule | 'normal' | 'break-word' | string;
1254 /**
1255 * Controls how extra content exceeding the x-axis of the bounding box of an element
1256 * is rendered.
1257 */
1258 overflowX?: ICSSRule | 'auto' | 'hidden' | 'scroll' | 'visible' | string;
1259 /**
1260 * Controls how extra content exceeding the y-axis of the bounding box of an element
1261 * is rendered.
1262 */
1263 overflowY?: ICSSRule | 'auto' | 'hidden' | 'scroll' | 'visible' | string;
1264 /**
1265 * The padding optional CSS property sets the required padding space on one to four
1266 * sides of an element. The padding area is the space between an element and its
1267 * border. Negative values are not allowed but decimal values are permitted. The
1268 * element size is treated as fixed, and the content of the element shifts toward the
1269 * center as padding is increased. The padding property is a shorthand to avoid
1270 * setting each side separately (padding-top, padding-right, padding-bottom,
1271 * padding-left).
1272 */
1273 padding?: ICSSRule | ICSSPixelUnitRule;
1274 /**
1275 * The padding-block-end CSS property defines the logical block end padding
1276 * of an element, which maps to a physical padding depending on the element's
1277 * writing mode, directionality, and text orientation. It corresponds to the
1278 * padding-top, padding-right, padding-bottom, or padding-left property
1279 * depending on the values defined for writing-mode, direction, and text-orientation.
1280 */
1281 paddingBlockEnd?: ICSSRule | ICSSPixelUnitRule;
1282 /**
1283 * The padding-block-start CSS property defines the logical block start padding
1284 * of an element, which maps to a physical padding depending on the element's
1285 * writing mode, directionality, and text orientation. It corresponds to the
1286 * padding-top, padding-right, padding-bottom, or padding-left property depending
1287 * on the values defined for writing-mode, direction, and text-orientation.
1288 */
1289 paddingBlockStart?: ICSSRule | ICSSPixelUnitRule;
1290 /**
1291 * The padding-left CSS property of an element sets the padding space required on the
1292 * left side of an element. The padding area is the space between the content of the
1293 * element and its border. Contrary to margin-left values, negative values of
1294 * padding-left are invalid.
1295 */
1296 paddingLeft?: ICSSRule | ICSSPixelUnitRule;
1297 /**
1298 * The padding-bottom CSS property of an element sets the padding space required on
1299 * the bottom of an element. The padding area is the space between the content of the
1300 * element and its border. Contrary to margin-bottom values, negative values of
1301 * padding-bottom are invalid.
1302 */
1303 paddingBottom?: ICSSRule | ICSSPixelUnitRule;
1304 /**
1305 * The padding-inline-end CSS property defines the logical inline end padding of an element,
1306 * which maps to a physical padding depending on the element's writing mode, directionality,
1307 * and text orientation. It corresponds to the padding-top, padding-right, padding-bottom,
1308 * or padding-left property depending on the values defined for writing-mode, direction,
1309 * and text-orientation.
1310 */
1311 paddingInlineEnd?: ICSSRule | ICSSPixelUnitRule;
1312 /**
1313 * The padding-inline-start CSS property defines the logical inline start padding of
1314 * an element, which maps to a physical padding depending on the element's writing mode,
1315 * directionality, and text orientation. It corresponds to the padding-top, padding-right,
1316 * padding-bottom, or padding-left property depending on the values defined for writing-mode,
1317 * direction, and text-orientation.
1318 */
1319 paddingInlineStart?: ICSSRule | ICSSPixelUnitRule;
1320 /**
1321 * The padding-right CSS property of an element sets the padding space required on the
1322 * right side of an element. The padding area is the space between the content of the
1323 * element and its border. Contrary to margin-right values, negative values of
1324 * padding-right are invalid.
1325 */
1326 paddingRight?: ICSSRule | ICSSPixelUnitRule;
1327 /**
1328 * The padding-top CSS property of an element sets the padding space required on the
1329 * top of an element. The padding area is the space between the content of the element
1330 * and its border. Contrary to margin-top values, negative values of padding-top are
1331 * invalid.
1332 */
1333 paddingTop?: ICSSRule | ICSSPixelUnitRule;
1334 /**
1335 * The page-break-after property is supported in all major browsers. With CSS3,
1336 * page-break-* properties are only aliases of the break-* properties. The CSS3
1337 * Fragmentation spec defines breaks for all CSS box fragmentation.
1338 */
1339 pageBreakAfter?: ICSSRule | string;
1340 /**
1341 * The page-break-before property sets the page-breaking behavior before an element.
1342 * With CSS3, page-break-* properties are only aliases of the break-* properties. The
1343 * CSS3 Fragmentation spec defines breaks for all CSS box fragmentation.
1344 */
1345 pageBreakBefore?: ICSSRule | string;
1346 /**
1347 * Sets the page-breaking behavior inside an element. With CSS3, page-break-*
1348 * properties are only aliases of the break-* properties. The CSS3 Fragmentation spec
1349 * defines breaks for all CSS box fragmentation.
1350 */
1351 pageBreakInside?: ICSSRule | string;
1352 /**
1353 * The pause property determines how long a speech media agent should pause before and
1354 * after presenting an element. It is a shorthand for the pause-before and pause-after
1355 * properties.
1356 */
1357 pause?: ICSSRule | string;
1358 /**
1359 * The pause-after property determines how long a speech media agent should pause after
1360 * presenting an element. It may be replaced by the shorthand property pause, which
1361 * sets pause time before and after.
1362 */
1363 pauseAfter?: ICSSRule | string;
1364 /**
1365 * The pause-before property determines how long a speech media agent should pause
1366 * before presenting an element. It may be replaced by the shorthand property pause,
1367 * which sets pause time before and after.
1368 */
1369 pauseBefore?: ICSSRule | string;
1370 /**
1371 * The perspective property defines how far an element is placed from the view on the
1372 * z-axis, from the screen to the viewer. Perspective defines how an object is viewed.
1373 * In graphic arts, perspective is the representation on a flat surface of what the
1374 * viewer's eye would see in a 3D space. (See Wikipedia for more information about
1375 * graphical perspective and for related illustrations.)
1376 * The illusion of perspective on a flat surface, such as a computer screen, is created
1377 * by projecting points on the flat surface as they would appear if the flat surface
1378 * were a window through which the viewer was looking at the object. In discussion of
1379 * virtual environments, this flat surface is called a projection plane.
1380 */
1381 perspective?: ICSSRule | string;
1382 /**
1383 * The perspective-origin property establishes the origin for the perspective property.
1384 * It effectively sets the X and Y position at which the viewer appears to be looking
1385 * at the children of the element.
1386 * When used with perspective, perspective-origin changes the appearance of an object,
1387 * as if a viewer were looking at it from a different origin. An object appears
1388 * differently if a viewer is looking directly at it versus looking at it from below,
1389 * above, or from the side. Thus, the perspective-origin is like a vanishing point.
1390 * The default value of perspective-origin is 50% 50%. This displays an object as if
1391 * the viewer's eye were positioned directly at the center of the screen, both
1392 * top-to-bottom and left-to-right. A value of 0% 0% changes the object as if the
1393 * viewer was looking toward the top left angle. A value of 100% 100% changes the
1394 * appearance as if viewed toward the bottom right angle.
1395 */
1396 perspectiveOrigin?: ICSSRule | string;
1397 /**
1398 * The pointer-events property allows you to control whether an element can be the
1399 * target for the pointing device (e.g, mouse, pen) events.
1400 */
1401 pointerEvents?: ICSSRule | string;
1402 /**
1403 * The position property controls the type of positioning used by an element within
1404 * its parent elements. The effect of the position property depends on a lot of
1405 * factors, for example the position property of parent elements.
1406 */
1407 position?: ICSSRule | 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';
1408 /**
1409 * Sets the type of quotation marks for embedded quotations.
1410 */
1411 quotes?: ICSSRule | string;
1412 /**
1413 * Controls whether the last region in a chain displays additional 'overset' content
1414 * according its default overflow property, or if it displays a fragment of content
1415 * as if it were flowing into a subsequent region.
1416 */
1417 regionFragment?: ICSSRule | string;
1418 /**
1419 * The resize CSS sets whether an element is resizable, and if so, in which direction(s).
1420 */
1421 resize?: ICSSRule | 'none' | 'both' | 'horizontal' | 'vertical' | 'block' | 'inline' | string;
1422 /**
1423 * The rest-after property determines how long a speech media agent should pause after
1424 * presenting an element's main content, before presenting that element's exit cue
1425 * sound. It may be replaced by the shorthand property rest, which sets rest time
1426 * before and after.
1427 */
1428 restAfter?: ICSSRule | string;
1429 /**
1430 * The rest-before property determines how long a speech media agent should pause after
1431 * presenting an intro cue sound for an element, before presenting that element's main
1432 * content. It may be replaced by the shorthand property rest, which sets rest time
1433 * before and after.
1434 */
1435 restBefore?: ICSSRule | string;
1436 /**
1437 * Specifies the position an element in relation to the right side of the containing
1438 * element.
1439 */
1440 right?: ICSSRule | ICSSPixelUnitRule;
1441 /**
1442 * Defines the alpha channel threshold used to extract a shape from an image. Can be
1443 * thought of as a "minimum opacity" threshold; that is, a value of 0.5 means that the
1444 * shape will enclose all the pixels that are more than 50% opaque.
1445 */
1446 shapeImageThreshold?: ICSSRule | string;
1447 /**
1448 * A future level of CSS Shapes will define a shape-inside property, which will define
1449 * a shape to wrap content within the element. See Editor's Draft
1450 * http://dev.w3.org/csswg/css-shapes and CSSWG wiki page on next-level plans
1451 * http://wiki.csswg.org/spec/css-shapes
1452 */
1453 shapeInside?: ICSSRule | string;
1454 /**
1455 * Adds a margin to a shape-outside. In effect, defines a new shape that is the
1456 * smallest contour around all the points that are the shape-margin distance outward
1457 * perpendicular to each point on the underlying shape. For points where a
1458 * perpendicular direction is not defined (e.g., a triangle corner), takes all
1459 * points on a circle centered at the point and with a radius of the shape-margin
1460 * distance. This property accepts only non-negative values.
1461 */
1462 shapeMargin?: ICSSRule | string;
1463 /**
1464 * Declares a shape around which text should be wrapped, with possible modifications
1465 * from the shape-margin property. The shape defined by shape-outside and shape-margin
1466 * changes the geometry of a float element's float area.
1467 */
1468 shapeOutside?: ICSSRule | string;
1469 /**
1470 * The speak property determines whether or not a speech synthesizer will read aloud
1471 * the contents of an element.
1472 */
1473 speak?: ICSSRule | string;
1474 /**
1475 * The speak-as property determines how the speech synthesizer interprets the content:
1476 * words as whole words or as a sequence of letters, numbers as a numerical value or a
1477 * sequence of digits, punctuation as pauses in speech or named punctuation characters.
1478 */
1479 speakAs?: ICSSRule | string;
1480 /**
1481 * The stroke property in CSS is for adding a border to SVG shapes.
1482 * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#Stroke
1483 */
1484 stroke?: ICSSRule | string;
1485 /**
1486 * SVG: The stroke-linecap attribute defines the shape to be used at the end of open subpaths when they are stroked.
1487 * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#LineCaps
1488 */
1489 strokeLinecap?: ICSSRule | 'butt' | 'round' | 'square' | string;
1490 /**
1491 * SVG: Specifies the opacity of the outline on the current object.
1492 * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#StrokeOpacityProperty
1493 */
1494 strokeOpacity?: ICSSRule | number | string;
1495 /**
1496 * SVG: Specifies the width of the outline on the current object.
1497 * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#StrokeWidthProperty
1498 */
1499 strokeWidth?: ICSSRule | ICSSPixelUnitRule;
1500 /**
1501 * The tab-size CSS property is used to customise the width of a tab (U+0009) character.
1502 */
1503 tabSize?: ICSSRule | string;
1504 /**
1505 * The 'table-layout' property controls the algorithm used to lay out the table cells, rows, and columns.
1506 */
1507 tableLayout?: ICSSRule | string;
1508 /**
1509 * The text-align CSS property describes how inline content like text is aligned in its
1510 * parent block element. text-align does not control the alignment of block elements
1511 * itself, only their inline content.
1512 */
1513 textAlign?: ICSSRule | string;
1514 /**
1515 * The text-align-last CSS property describes how the last line of a block element or
1516 * a line before line break is aligned in its parent block element.
1517 */
1518 textAlignLast?: ICSSRule | string;
1519 /**
1520 * The text-decoration CSS property is used to set the text formatting to underline,
1521 * overline, line-through or blink. underline and overline decorations are positioned
1522 * under the text, line-through over it.
1523 */
1524 textDecoration?: ICSSRule | string;
1525 /**
1526 * Sets the color of any text decoration, such as underlines, overlines, and strike
1527 * throughs.
1528 */
1529 textDecorationColor?: ICSSRule | string;
1530 /**
1531 * Sets what kind of line decorations are added to an element, such as underlines,
1532 * overlines, etc.
1533 */
1534 textDecorationLine?: ICSSRule | string;
1535 /**
1536 * Specifies what parts of an element’s content are skipped over when applying any
1537 * text decoration.
1538 */
1539 textDecorationSkip?: ICSSRule | string;
1540 /**
1541 * This property specifies the style of the text decoration line drawn on the
1542 * specified element. The intended meaning for the values are the same as those of
1543 * the border-style-properties.
1544 */
1545 textDecorationStyle?: ICSSRule | string;
1546 /**
1547 * The text-emphasis property will apply special emphasis marks to the elements text.
1548 * Slightly similar to the text-decoration property only that this property can have
1549 * affect on the line-height. It also is noted that this is shorthand for
1550 * text-emphasis-style and for text-emphasis-color.
1551 */
1552 textEmphasis?: ICSSRule | string;
1553 /**
1554 * The text-emphasis-color property specifies the foreground color of the emphasis
1555 * marks.
1556 */
1557 textEmphasisColor?: ICSSRule | string;
1558 /**
1559 * The text-emphasis-style property applies special emphasis marks to an element's
1560 * text.
1561 */
1562 textEmphasisStyle?: ICSSRule | string;
1563 /**
1564 * This property helps determine an inline box's block-progression dimension, derived
1565 * from the text-height and font-size properties for non-replaced elements, the height
1566 * or the width for replaced elements, and the stacked block-progression dimension for
1567 * inline-block elements. The block-progression dimension determines the position of
1568 * the padding, border and margin for the element.
1569 */
1570 textHeight?: ICSSRule | string;
1571 /**
1572 * Specifies the amount of space horizontally that should be left on the first line of
1573 * the text of an element. This horizontal spacing is at the beginning of the first
1574 * line and is in respect to the left edge of the containing block box.
1575 */
1576 textIndent?: ICSSRule | string;
1577 /**
1578 * The text-overflow shorthand CSS property determines how overflowed content that is
1579 * not displayed is signaled to the users. It can be clipped, display an ellipsis
1580 * ('…', U+2026 HORIZONTAL ELLIPSIS) or a Web author-defined string. It covers the
1581 * two long-hand properties text-overflow-mode and text-overflow-ellipsis
1582 */
1583 textOverflow?: ICSSRule | string;
1584 /**
1585 * The text-overline property is the shorthand for the text-overline-style,
1586 * text-overline-width, text-overline-color, and text-overline-mode properties.
1587 */
1588 textOverline?: ICSSRule | string;
1589 /**
1590 * Specifies the line color for the overline text decoration.
1591 */
1592 textOverlineColor?: ICSSRule | string;
1593 /**
1594 * Sets the mode for the overline text decoration, determining whether the text
1595 * decoration affects the space characters or not.
1596 */
1597 textOverlineMode?: ICSSRule | string;
1598 /**
1599 * Specifies the line style for overline text decoration.
1600 */
1601 textOverlineStyle?: ICSSRule | string;
1602 /**
1603 * Specifies the line width for the overline text decoration.
1604 */
1605 textOverlineWidth?: ICSSRule | ICSSPixelUnitRule;
1606 /**
1607 * The text-rendering CSS property provides information to the browser about how to
1608 * optimize when rendering text. Options are: legibility, speed or geometric precision.
1609 */
1610 textRendering?: ICSSRule | string;
1611 /**
1612 * The CSS text-shadow property applies one or more drop shadows to the text and
1613 * `<text-decorations>` of an element. Each shadow is specified as an offset from the
1614 * text, along with optional color and blur radius values.
1615 */
1616 textShadow?: ICSSRule | string;
1617 /**
1618 * The text-size-adjust CSS property controls the text inflation algorithm used
1619 * on some smartphones and tablets. Other browsers will ignore this property.
1620 */
1621 textSizeAdjust?: 'none' | 'auto' | ICSSPercentageRule | ICSSRule;
1622 /**
1623 * This property transforms text for styling purposes. (It has no effect on the
1624 * underlying content.)
1625 */
1626 textTransform?: ICSSRule | string;
1627 /**
1628 * Unsupported.
1629 * This property will add a underline position value to the element that has an
1630 * underline defined.
1631 */
1632 textUnderlinePosition?: ICSSRule | string;
1633 /**
1634 * After review this should be replaced by text-decoration should it not?
1635 * This property will set the underline style for text with a line value for
1636 * underline, overline, and line-through.
1637 */
1638 textUnderlineStyle?: ICSSRule | string;
1639 /**
1640 * This property specifies how far an absolutely positioned box's top margin edge is
1641 * offset below the top edge of the box's containing block. For relatively positioned
1642 * boxes, the offset is with respect to the top edges of the box itself (i.e., the box
1643 * is given a position in the normal flow, then offset from that position according to
1644 * these properties).
1645 */
1646 top?: ICSSRule | ICSSPixelUnitRule;
1647 /**
1648 * Determines whether touch input may trigger default behavior supplied by the user
1649 * agent, such as panning or zooming.
1650 */
1651 touchAction?: ICSSRule | string;
1652 /**
1653 * CSS transforms allow elements styled with CSS to be transformed in two-dimensional
1654 * or three-dimensional space. Using this property, elements can be translated,
1655 * rotated, scaled, and skewed. The value list may consist of 2D and/or 3D transform
1656 * values.
1657 */
1658 transform?: ICSSRule | string;
1659 /**
1660 * This property defines the origin of the transformation axes relative to the element
1661 * to which the transformation is applied.
1662 */
1663 transformOrigin?: ICSSRule | string;
1664 /**
1665 * This property allows you to define the relative position of the origin of the
1666 * transformation grid along the z-axis.
1667 */
1668 transformOriginZ?: ICSSRule | string;
1669 /**
1670 * This property specifies how nested elements are rendered in 3D space relative to their parent.
1671 */
1672 transformStyle?: ICSSRule | string;
1673 /**
1674 * The transition CSS property is a shorthand property for transition-property,
1675 * transition-duration, transition-timing-function, and transition-delay. It allows to
1676 * define the transition between two states of an element.
1677 */
1678 transition?: ICSSRule | string;
1679 /**
1680 * Defines when the transition will start. A value of ‘0s’ means the transition will
1681 * execute as soon as the property is changed. Otherwise, the value specifies an
1682 * offset from the moment the property is changed, and the transition will delay
1683 * execution by that offset.
1684 */
1685 transitionDelay?: ICSSRule | string;
1686 /**
1687 * The 'transition-duration' property specifies the length of time a transition
1688 * animation takes to complete.
1689 */
1690 transitionDuration?: ICSSRule | string;
1691 /**
1692 * The 'transition-property' property specifies the name of the CSS property to which
1693 * the transition is applied.
1694 */
1695 transitionProperty?: ICSSRule | string;
1696 /**
1697 * Sets the pace of action within a transition
1698 */
1699 transitionTimingFunction?: ICSSRule | string;
1700 /**
1701 * The unicode-bidi CSS property specifies the level of embedding with respect to the bidirectional algorithm.
1702 */
1703 unicodeBidi?: ICSSRule | string;
1704 /**
1705 * This is for all the high level UX stuff.
1706 */
1707 userFocus?: ICSSRule | string;
1708 /**
1709 * For inputting user content
1710 */
1711 userInput?: ICSSRule | string;
1712 /**
1713 * Defines the text selection behavior.
1714 */
1715 userSelect?: ICSSRule | 'none' | 'auto' | 'text' | 'all' | 'contain' | string;
1716 /**
1717 * The vertical-align property controls how inline elements or text are vertically
1718 * aligned compared to the baseline. If this property is used on table-cells it
1719 * controls the vertical alignment of content of the table cell.
1720 */
1721 verticalAlign?: ICSSRule | string;
1722 /**
1723 * The visibility property specifies whether the boxes generated by an element are rendered.
1724 */
1725 visibility?: ICSSRule | string;
1726 /**
1727 * The voice-balance property sets the apparent position (in stereo sound) of the synthesized voice for spoken media.
1728 */
1729 voiceBalance?: ICSSRule | string;
1730 /**
1731 * The voice-duration property allows the author to explicitly set the amount of time
1732 * it should take a speech synthesizer to read an element's content, for example to
1733 * allow the speech to be synchronized with other media. With a value of auto (the
1734 * default) the length of time it takes to read the content is determined by the
1735 * content itself and the voice-rate property.
1736 */
1737 voiceDuration?: ICSSRule | string;
1738 /**
1739 * The voice-family property sets the speaker's voice used by a speech media agent to
1740 * read an element. The speaker may be specified as a named character (to match a
1741 * voice option in the speech reading software) or as a generic description of the
1742 * age and gender of the voice. Similar to the font-family property for visual media,
1743 * a comma-separated list of fallback options may be given in case the speech reader
1744 * does not recognize the character name or cannot synthesize the requested combination
1745 * of generic properties.
1746 */
1747 voiceFamily?: ICSSRule | string;
1748 /**
1749 * The voice-pitch property sets pitch or tone (high or low) for the synthesized speech
1750 * when reading an element; the pitch may be specified absolutely or relative to the
1751 * normal pitch for the voice-family used to read the text.
1752 */
1753 voicePitch?: ICSSRule | string;
1754 /**
1755 * The voice-range property determines how much variation in pitch or tone will be
1756 * created by the speech synthesize when reading an element. Emphasized text,
1757 * grammatical structures and punctuation may all be rendered as changes in pitch,
1758 * this property determines how strong or obvious those changes are; large ranges are
1759 * associated with enthusiastic or emotional speech, while small ranges are associated
1760 * with flat or mechanical speech.
1761 */
1762 voiceRange?: ICSSRule | string;
1763 /**
1764 * The voice-rate property sets the speed at which the voice synthesized by a speech
1765 * media agent will read content.
1766 */
1767 voiceRate?: ICSSRule | string;
1768 /**
1769 * The voice-stress property sets the level of vocal emphasis to be used for
1770 * synthesized speech reading the element.
1771 */
1772 voiceStress?: ICSSRule | string;
1773 /**
1774 * The voice-volume property sets the volume for spoken content in speech media. It
1775 * replaces the deprecated volume property.
1776 */
1777 voiceVolume?: ICSSRule | string;
1778 /**
1779 * The white-space property controls whether and how white space inside the element is
1780 * collapsed, and whether lines may wrap at unforced "soft wrap" opportunities.
1781 */
1782 whiteSpace?: ICSSRule | string;
1783 /**
1784 * In paged media, this property defines the mimimum number of lines that must be left
1785 * at the top of the second page.
1786 * See CSS 3 orphans, widows properties
1787 * https://drafts.csswg.org/css-break-3/#widows-orphans
1788 */
1789 widows?: ICSSRule | number | string;
1790 /**
1791 * Specifies the width of the content area of an element. The content area of the element
1792 * width does not include the padding, border, and margin of the element.
1793 */
1794 width?: ICSSRule | ICSSPixelUnitRule;
1795 /**
1796 * The word-break property is often used when there is long generated content that is
1797 * strung together without and spaces or hyphens to beak apart. A common case of this
1798 * is when there is a long URL that does not have any hyphens. This case could
1799 * potentially cause the breaking of the layout as it could extend past the parent
1800 * element.
1801 */
1802 wordBreak?: ICSSRule | string;
1803 /**
1804 * The word-spacing CSS property specifies the spacing behavior between "words".
1805 */
1806 wordSpacing?: ICSSRule | string;
1807 /**
1808 * An alias of css/properties/overflow-wrap, word-wrap defines whether to break
1809 * words when the content exceeds the boundaries of its container.
1810 */
1811 wordWrap?: ICSSRule | string;
1812 /**
1813 * Specifies how exclusions affect inline content within block-level elements. Elements
1814 * lay out their inline content in their content area but wrap around exclusion areas.
1815 */
1816 wrapFlow?: ICSSRule | string;
1817 /**
1818 * Set the value that is used to offset the inner wrap shape from other shapes. Inline
1819 * content that intersects a shape with this property will be pushed by this shape's
1820 * margin.
1821 */
1822 wrapMargin?: ICSSRule | string;
1823 /**
1824 * writing-mode specifies if lines of text are laid out horizontally or vertically,
1825 * and the direction which lines of text and blocks progress.
1826 */
1827 writingMode?: ICSSRule | string;
1828 /**
1829 * The z-index property specifies the z-order of an element and its descendants.
1830 * When elements overlap, z-order determines which one covers the other.
1831 * See CSS 2 z-index property https://www.w3.org/TR/CSS2/visuren.html#z-index
1832 */
1833 zIndex?: ICSSRule | 'auto' | number | string;
1834 /**
1835 * Sets the initial zoom factor of a document defined by `@viewport`.
1836 * See CSS zoom descriptor https://drafts.csswg.org/css-device-adapt/#zoom-desc
1837 */
1838 zoom?: ICSSRule | 'auto' | number | ICSSPercentageRule;
1839}
1840
1841/**
1842 * IStyleObject extends a raw style objects, but allows selectors to be defined
1843 * under the selectors node.
1844 * @public
1845 * {@docCategory IStyle}
1846 */
1847export declare type IStyle = IStyleBase | IStyleBaseArray;
1848
1849/**
1850 * {@docCategory IStyleBase}
1851 */
1852export declare type IStyleBase = IRawStyle | string | false | null | undefined;
1853
1854/**
1855 * {@docCategory IStyleBaseArray}
1856 */
1857export declare interface IStyleBaseArray extends Array<IStyle> {
1858}
1859
1860/**
1861 * A style function takes in styleprops and returns a partial styleset.
1862 * {@docCategory IStyleFunction}
1863 */
1864export declare type IStyleFunction<TStylesProps, TStyleSet extends IStyleSet<TStyleSet>> = (props: TStylesProps) => DeepPartial<TStyleSet>;
1865
1866/**
1867 * Represents either a style function that takes in style props and returns a partial styleset,
1868 * or a partial styleset object.
1869 * {@docCategory IStyleFunctionOrObject}
1870 */
1871export declare type IStyleFunctionOrObject<TStylesProps, TStyleSet extends IStyleSet<TStyleSet>> = IStyleFunction<TStylesProps, TStyleSet> | DeepPartial<TStyleSet>;
1872
1873declare interface IStyleOptions {
1874 rtl?: boolean;
1875 specificityMultiplier?: number;
1876}
1877
1878/**
1879 * A style set is a dictionary of display areas to IStyle objects.
1880 * It may optionally contain style functions for sub components in the special `subComponentStyles`
1881 * property.
1882 */
1883export declare type IStyleSet<TStyleSet extends IStyleSet<TStyleSet> = {
1884 [key: string]: any;
1885}> = {
1886 [P in keyof Omit<TStyleSet, 'subComponentStyles'>]: IStyle;
1887} & {
1888 subComponentStyles?: {
1889 [P in keyof TStyleSet['subComponentStyles']]: IStyleFunctionOrObject<any, any>;
1890 };
1891};
1892
1893/**
1894 * Stylesheet config.
1895 *
1896 * @public
1897 */
1898export declare interface IStyleSheetConfig {
1899 /**
1900 * Injection mode for how rules are inserted.
1901 */
1902 injectionMode?: InjectionMode;
1903 /**
1904 * Default 'displayName' to use for a className.
1905 * @defaultvalue 'css'
1906 */
1907 defaultPrefix?: string;
1908 /**
1909 * Defines the default direction of rules for auto-rtlifying things.
1910 * While typically this is represented as a DIR attribute in the markup,
1911 * the DIR is not enough to control whether padding goes on the left or
1912 * right. Use this to set the default direction when rules are registered.
1913 */
1914 rtl?: boolean;
1915 /**
1916 * Default 'namespace' to attach before the className.
1917 */
1918 namespace?: string;
1919 /**
1920 * CSP settings
1921 */
1922 cspSettings?: ICSPSettings;
1923 /**
1924 * Callback executed when a rule is inserted.
1925 */
1926 onInsertRule?: (rule: string) => void;
1927 /**
1928 * Initial value for classnames cache. Key is serialized css rules associated with a classname.
1929 */
1930 classNameCache?: {
1931 [key: string]: string;
1932 };
1933}
1934
1935/**
1936 * Registers keyframe definitions.
1937 *
1938 * @public
1939 */
1940export declare function keyframes(timeline: IKeyframes): string;
1941
1942/**
1943 * Concatenation helper, which can merge class names together. Skips over falsey values.
1944 * Accepts a set of options that will be used when calculating styles.
1945 *
1946 * @public
1947 */
1948export declare function mergeCss(args: (IStyle | IStyleBaseArray | false | null | undefined) | (IStyle | IStyleBaseArray | false | null | undefined)[], options?: IStyleOptions): string;
1949
1950/**
1951 * Takes in one or more style set objects, each1consisting of a set of areas,
1952 * each which will produce a class name. Using this is analogous to calling
1953 * `mergeCss` for each property in the object, but ensures we maintain the
1954 * set ordering when multiple style sets are merged.
1955 *
1956 * @param styleSets - One or more style sets to be merged.
1957 * @param options - (optional) Options to use when creating rules.
1958 */
1959export declare function mergeCssSets<TStyleSet>(styleSets: [TStyleSet | false | null | undefined], options?: IStyleOptions): IProcessedStyleSet<TStyleSet>;
1960
1961/**
1962 * Takes in one or more style set objects, each1consisting of a set of areas,
1963 * each which will produce a class name. Using this is analogous to calling
1964 * `mergeCss` for each property in the object, but ensures we maintain the
1965 * set ordering when multiple style sets are merged.
1966 *
1967 * @param styleSets - One or more style sets to be merged.
1968 * @param options - (optional) Options to use when creating rules.
1969 */
1970export declare function mergeCssSets<TStyleSet1, TStyleSet2>(styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined], options?: IStyleOptions): IProcessedStyleSet<TStyleSet1 & TStyleSet2>;
1971
1972/**
1973 * Takes in one or more style set objects, each1consisting of a set of areas,
1974 * each which will produce a class name. Using this is analogous to calling
1975 * `mergeCss` for each property in the object, but ensures we maintain the
1976 * set ordering when multiple style sets are merged.
1977 *
1978 * @param styleSets - One or more style sets to be merged.
1979 * @param options - (optional) Options to use when creating rules.
1980 */
1981export declare function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3>(styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined, TStyleSet3 | false | null | undefined], options?: IStyleOptions): IProcessedStyleSet<TStyleSet1 & TStyleSet2 & TStyleSet3>;
1982
1983/**
1984 * Takes in one or more style set objects, each1consisting of a set of areas,
1985 * each which will produce a class name. Using this is analogous to calling
1986 * `mergeCss` for each property in the object, but ensures we maintain the
1987 * set ordering when multiple style sets are merged.
1988 *
1989 * @param styleSets - One or more style sets to be merged.
1990 * @param options - (optional) Options to use when creating rules.
1991 */
1992export declare function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined, TStyleSet3 | false | null | undefined, TStyleSet4 | false | null | undefined], options?: IStyleOptions): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>>;
1993
1994/**
1995 * Takes in one or more style set objects, each1consisting of a set of areas,
1996 * each which will produce a class name. Using this is analogous to calling
1997 * `mergeCss` for each property in the object, but ensures we maintain the
1998 * set ordering when multiple style sets are merged.
1999 *
2000 * @param styleSets - One or more style sets to be merged.
2001 * @param options - (optional) Options to use when creating rules.
2002 */
2003export declare function mergeCssSets<TStyleSet>(styleSet: [TStyleSet | false | null | undefined], options?: IStyleOptions): IProcessedStyleSet<TStyleSet>;
2004
2005/**
2006 * Concatenation helper, which can merge class names together. Skips over falsey values.
2007 *
2008 * @public
2009 */
2010export declare function mergeStyles(...args: (IStyle | IStyleBaseArray | false | null | undefined)[]): string;
2011
2012/**
2013 * Takes in one or more style set objects, each consisting of a set of areas,
2014 * each which will produce a class name. Using this is analogous to calling
2015 * `mergeStyles` for each property in the object, but ensures we maintain the
2016 * set ordering when multiple style sets are merged.
2017 *
2018 * @param styleSet - The first style set to be merged and reigstered.
2019 */
2020export declare function mergeStyleSets<TStyleSet>(styleSet: TStyleSet | false | null | undefined): IProcessedStyleSet<ObjectOnly<TStyleSet>>;
2021
2022/**
2023 * Takes in one or more style set objects, each consisting of a set of areas,
2024 * each which will produce a class name. Using this is analogous to calling
2025 * `mergeStyles` for each property in the object, but ensures we maintain the
2026 * set ordering when multiple style sets are merged.
2027 *
2028 * @param styleSet1 - The first style set to be merged.
2029 * @param styleSet2 - The second style set to be merged.
2030 */
2031export declare function mergeStyleSets<TStyleSet1, TStyleSet2>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;
2032
2033/**
2034 * Takes in one or more style set objects, each consisting of a set of areas,
2035 * each which will produce a class name. Using this is analogous to calling
2036 * `mergeStyles` for each property in the object, but ensures we maintain the
2037 * set ordering when multiple style sets are merged.
2038 *
2039 * @param styleSet1 - The first style set to be merged.
2040 * @param styleSet2 - The second style set to be merged.
2041 * @param styleSet3 - The third style set to be merged.
2042 */
2043export declare function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;
2044
2045/**
2046 * Takes in one or more style set objects, each consisting of a set of areas,
2047 * each which will produce a class name. Using this is analogous to calling
2048 * `mergeStyles` for each property in the object, but ensures we maintain the
2049 * set ordering when multiple style sets are merged.
2050 *
2051 * @param styleSet1 - The first style set to be merged.
2052 * @param styleSet2 - The second style set to be merged.
2053 * @param styleSet3 - The third style set to be merged.
2054 * @param styleSet4 - The fourth style set to be merged.
2055 */
2056export declare function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(styleSet1: TStyleSet1 | false | null | undefined, styleSet2: TStyleSet2 | false | null | undefined, styleSet3: TStyleSet3 | false | null | undefined, styleSet4: TStyleSet4 | false | null | undefined): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>>;
2057
2058/**
2059 * Takes in one or more style set objects, each consisting of a set of areas,
2060 * each which will produce a class name. Using this is analogous to calling
2061 * `mergeStyles` for each property in the object, but ensures we maintain the
2062 * set ordering when multiple style sets are merged.
2063 *
2064 * @param styleSets - One or more style sets to be merged.
2065 */
2066export declare function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any>;
2067
2068export declare type ObjectOnly<TArg> = TArg extends {} ? TArg : {};
2069
2070/**
2071 * {@docCategory Omit}
2072 */
2073export declare type Omit<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>;
2074
2075/**
2076 * Sets the current RTL value.
2077 */
2078export declare function setRTL(isRTL: boolean): void;
2079
2080/**
2081 * Represents the state of styles registered in the page. Abstracts
2082 * the surface for adding styles to the stylesheet, exposes helpers
2083 * for reading the styles registered in server rendered scenarios.
2084 *
2085 * @public
2086 */
2087export declare class Stylesheet {
2088 private _lastStyleElement?;
2089 private _styleElement?;
2090 private _rules;
2091 private _preservedRules;
2092 private _config;
2093 private _rulesToInsert;
2094 private _counter;
2095 private _keyToClassName;
2096 private _onResetCallbacks;
2097 private _classNameToArgs;
2098 /**
2099 * Gets the singleton instance.
2100 */
2101 static getInstance(): Stylesheet;
2102 constructor(config?: IStyleSheetConfig);
2103 /**
2104 * Configures the stylesheet.
2105 */
2106 setConfig(config?: IStyleSheetConfig): void;
2107 /**
2108 * Configures a reset callback.
2109 *
2110 * @param callback - A callback which will be called when the Stylesheet is reset.
2111 */
2112 onReset(callback: () => void): void;
2113 /**
2114 * Generates a unique classname.
2115 *
2116 * @param displayName - Optional value to use as a prefix.
2117 */
2118 getClassName(displayName?: string): string;
2119 /**
2120 * Used internally to cache information about a class which was
2121 * registered with the stylesheet.
2122 */
2123 cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void;
2124 /**
2125 * Gets the appropriate classname given a key which was previously
2126 * registered using cacheClassName.
2127 */
2128 classNameFromKey(key: string): string | undefined;
2129 /**
2130 * Gets all classnames cache with the stylesheet.
2131 */
2132 getClassNameCache(): {
2133 [key: string]: string;
2134 };
2135 /**
2136 * Gets the arguments associated with a given classname which was
2137 * previously registered using cacheClassName.
2138 */
2139 argsFromClassName(className: string): IStyle[] | undefined;
2140 /**
2141 * Gets the arguments associated with a given classname which was
2142 * previously registered using cacheClassName.
2143 */
2144 insertedRulesFromClassName(className: string): string[] | undefined;
2145 /**
2146 * Inserts a css rule into the stylesheet.
2147 * @param preserve - Preserves the rule beyond a reset boundary.
2148 */
2149 insertRule(rule: string, preserve?: boolean): void;
2150 /**
2151 * Gets all rules registered with the stylesheet; only valid when
2152 * using InsertionMode.none.
2153 */
2154 getRules(includePreservedRules?: boolean): string;
2155 /**
2156 * Resets the internal state of the stylesheet. Only used in server
2157 * rendered scenarios where we're using InsertionMode.none.
2158 */
2159 reset(): void;
2160 resetKeys(): void;
2161 private _getStyleElement;
2162 private _createStyleElement;
2163 private _findPlaceholderStyleTag;
2164}
2165
2166export { }