1// Type definitions for React v0.14 2// Project: http://facebook.github.io/react/ 3// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com> 4// Definitions: https://github.com/borisyankov/DefinitelyTyped 5 6declare namespace __React { 7 8 // 9 // React Elements 10 // ---------------------------------------------------------------------- 11 12 type ReactType = string | ComponentClass<any> | StatelessComponent<any>; 13 14 type Key = string | number; 15 type Ref<T> = string | ((instance: T) => any); 16 type ComponentState = {} | void; 17 18 interface Attributes { 19 key?: Key; 20 } 21 interface ClassAttributes<T> extends Attributes { 22 ref?: Ref<T>; 23 } 24 25 interface ReactElement<P> { 26 type: string | ComponentClass<P> | SFC<P>; 27 props: P; 28 key?: Key; 29 } 30 31 interface SFCElement<P> extends ReactElement<P> { 32 type: SFC<P>; 33 } 34 35 type CElement<P, T extends Component<P, ComponentState>> = ComponentElement<P, T>; 36 interface ComponentElement<P, T extends Component<P, ComponentState>> extends ReactElement<P> { 37 type: ComponentClass<P>; 38 ref?: Ref<T>; 39 } 40 41 type ClassicElement<P> = CElement<P, ClassicComponent<P, ComponentState>>; 42 43 interface DOMElement<P extends DOMAttributes<T>, T extends Element> extends ReactElement<P> { 44 type: string; 45 ref: Ref<T>; 46 } 47 48 interface ReactHTMLElement<T extends HTMLElement> extends DOMElement<HTMLAttributes<T>, T> { 49 } 50 51 interface ReactSVGElement extends DOMElement<SVGAttributes<SVGElement>, SVGElement> { 52 } 53 54 // 55 // Factories 56 // ---------------------------------------------------------------------- 57 58 interface Factory<P> { 59 (props?: P & Attributes, ...children: ReactNode[]): ReactElement<P>; 60 } 61 62 interface SFCFactory<P> { 63 (props?: P & Attributes, ...children: ReactNode[]): SFCElement<P>; 64 } 65 66 interface ComponentFactory<P, T extends Component<P, ComponentState>> { 67 (props?: P & ClassAttributes<T>, ...children: ReactNode[]): CElement<P, T>; 68 } 69 70 type CFactory<P, T extends Component<P, ComponentState>> = ComponentFactory<P, T>; 71 type ClassicFactory<P> = CFactory<P, ClassicComponent<P, ComponentState>>; 72 73 interface DOMFactory<P extends DOMAttributes<T>, T extends Element> { 74 (props?: P & ClassAttributes<T>, ...children: ReactNode[]): DOMElement<P, T>; 75 } 76 77 interface HTMLFactory<T extends HTMLElement> extends DOMFactory<HTMLAttributes<T>, T> { 78 } 79 80 interface SVGFactory extends DOMFactory<SVGAttributes<SVGElement>, SVGElement> { 81 } 82 83 // 84 // React Nodes 85 // http://facebook.github.io/react/docs/glossary.html 86 // ---------------------------------------------------------------------- 87 88 type ReactText = string | number; 89 type ReactChild = ReactElement<any> | ReactText; 90 91 // Should be Array<ReactNode> but type aliases cannot be recursive 92 type ReactFragment = {} | Array<ReactChild | any[] | boolean>; 93 type ReactNode = ReactChild | ReactFragment | boolean; 94 95 // 96 // Top Level API 97 // ---------------------------------------------------------------------- 98 99 function createClass<P, S>(spec: ComponentSpec<P, S>): ClassicComponentClass<P>; 100 101 function createFactory<P extends DOMAttributes<T>, T extends Element>( 102 type: string): DOMFactory<P, T>; 103 function createFactory<P>(type: SFC<P>): SFCFactory<P>; 104 function createFactory<P>( 105 type: ClassType<P, ClassicComponent<P, ComponentState>, ClassicComponentClass<P>>): CFactory<P, ClassicComponent<P, ComponentState>>; 106 function createFactory<P, T extends Component<P, ComponentState>, C extends ComponentClass<P>>( 107 type: ClassType<P, T, C>): CFactory<P, T>; 108 function createFactory<P>(type: ComponentClass<P> | SFC<P>): Factory<P>; 109 110 function createElement<P extends DOMAttributes<T>, T extends Element>( 111 type: string, 112 props?: P & ClassAttributes<T>, 113 ...children: ReactNode[]): DOMElement<P, T>; 114 function createElement<P>( 115 type: SFC<P>, 116 props?: P & Attributes, 117 ...children: ReactNode[]): SFCElement<P>; 118 function createElement<P>( 119 type: ClassType<P, ClassicComponent<P, ComponentState>, ClassicComponentClass<P>>, 120 props?: P & ClassAttributes<ClassicComponent<P, ComponentState>>, 121 ...children: ReactNode[]): CElement<P, ClassicComponent<P, ComponentState>>; 122 function createElement<P, T extends Component<P, ComponentState>, C extends ComponentClass<P>>( 123 type: ClassType<P, T, C>, 124 props?: P & ClassAttributes<T>, 125 ...children: ReactNode[]): CElement<P, T>; 126 function createElement<P>( 127 type: ComponentClass<P> | SFC<P>, 128 props?: P & Attributes, 129 ...children: ReactNode[]): ReactElement<P>; 130 131 function cloneElement<P extends DOMAttributes<T>, T extends Element>( 132 element: DOMElement<P, T>, 133 props?: P & ClassAttributes<T>, 134 ...children: ReactNode[]): DOMElement<P, T>; 135 function cloneElement<P extends Q, Q>( 136 element: SFCElement<P>, 137 props?: Q, // should be Q & Attributes, but then Q is inferred as {} 138 ...children: ReactNode[]): SFCElement<P>; 139 function cloneElement<P extends Q, Q, T extends Component<P, ComponentState>>( 140 element: CElement<P, T>, 141 props?: Q, // should be Q & ClassAttributes<T> 142 ...children: ReactNode[]): CElement<P, T>; 143 function cloneElement<P extends Q, Q>( 144 element: ReactElement<P>, 145 props?: Q, // should be Q & Attributes 146 ...children: ReactNode[]): ReactElement<P>; 147 148 function isValidElement<P>(object: {}): object is ReactElement<P>; 149 150 var DOM: ReactDOM; 151 var PropTypes: ReactPropTypes; 152 var Children: ReactChildren; 153 var version: string; 154 155 // 156 // Component API 157 // ---------------------------------------------------------------------- 158 159 type ReactInstance = Component<any, any> | Element; 160 161 // Base component for plain JS classes 162 interface Component<P, S> extends ComponentLifecycle<P, S> { } 163 class Component<P, S> { 164 constructor(props?: P, context?: any); 165 setState(f: (prevState: S, props: P) => S, callback?: () => any): void; 166 setState(state: S, callback?: () => any): void; 167 forceUpdate(callBack?: () => any): void; 168 render(): JSX.Element | null; 169 170 // React.Props<T> is now deprecated, which means that the `children` 171 // property is not available on `P` by default, even though you can 172 // always pass children as variadic arguments to `createElement`. 173 // In the future, if we can define its call signature conditionally 174 // on the existence of `children` in `P`, then we should remove this. 175 props: P & { children?: ReactNode }; 176 state: S; 177 context: {}; 178 refs: { 179 [key: string]: ReactInstance 180 }; 181 } 182 183 class PureComponent<P, S> extends Component<P, S> {} 184 185 interface ClassicComponent<P, S> extends Component<P, S> { 186 replaceState(nextState: S, callback?: () => any): void; 187 isMounted(): boolean; 188 getInitialState?(): S; 189 } 190 191 interface ChildContextProvider<CC> { 192 getChildContext(): CC; 193 } 194 195 // 196 // Class Interfaces 197 // ---------------------------------------------------------------------- 198 199 type SFC<P> = StatelessComponent<P>; 200 interface StatelessComponent<P> { 201 (props: P & { children?: ReactNode }, context?: any): ReactElement<any>; 202 propTypes?: ValidationMap<P>; 203 contextTypes?: ValidationMap<any>; 204 defaultProps?: P; 205 displayName?: string; 206 } 207 208 interface ComponentClass<P> { 209 new(props?: P, context?: any): Component<P, ComponentState>; 210 propTypes?: ValidationMap<P>; 211 contextTypes?: ValidationMap<any>; 212 childContextTypes?: ValidationMap<any>; 213 defaultProps?: P; 214 displayName?: string; 215 } 216 217 interface ClassicComponentClass<P> extends ComponentClass<P> { 218 new(props?: P, context?: any): ClassicComponent<P, ComponentState>; 219 getDefaultProps?(): P; 220 } 221 222 /** 223 * We use an intersection type to infer multiple type parameters from 224 * a single argument, which is useful for many top-level API defs. 225 * See https://github.com/Microsoft/TypeScript/issues/7234 for more info. 226 */ 227 type ClassType<P, T extends Component<P, ComponentState>, C extends ComponentClass<P>> = 228 C & 229 (new() => T) & 230 (new() => { props: P }); 231 232 // 233 // Component Specs and Lifecycle 234 // ---------------------------------------------------------------------- 235 236 interface ComponentLifecycle<P, S> { 237 componentWillMount?(): void; 238 componentDidMount?(): void; 239 componentWillReceiveProps?(nextProps: P, nextContext: any): void; 240 shouldComponentUpdate?(nextProps: P, nextState: S, nextContext: any): boolean; 241 componentWillUpdate?(nextProps: P, nextState: S, nextContext: any): void; 242 componentDidUpdate?(prevProps: P, prevState: S, prevContext: any): void; 243 componentWillUnmount?(): void; 244 } 245 246 interface Mixin<P, S> extends ComponentLifecycle<P, S> { 247 mixins?: Mixin<P, S>; 248 statics?: { 249 [key: string]: any; 250 }; 251 252 displayName?: string; 253 propTypes?: ValidationMap<any>; 254 contextTypes?: ValidationMap<any>; 255 childContextTypes?: ValidationMap<any>; 256 257 getDefaultProps?(): P; 258 getInitialState?(): S; 259 } 260 261 interface ComponentSpec<P, S> extends Mixin<P, S> { 262 render(): ReactElement<any>; 263 264 [propertyName: string]: any; 265 } 266 267 // 268 // Event System 269 // ---------------------------------------------------------------------- 270 271 interface SyntheticEvent<T> { 272 bubbles: boolean; 273 currentTarget: EventTarget & T; 274 cancelable: boolean; 275 defaultPrevented: boolean; 276 eventPhase: number; 277 isTrusted: boolean; 278 nativeEvent: Event; 279 preventDefault(): void; 280 isDefaultPrevented(): boolean; 281 stopPropagation(): void; 282 isPropagationStopped(): boolean; 283 persist(): void; 284 target: EventTarget; 285 timeStamp: Date; 286 type: string; 287 } 288 289 interface ClipboardEvent<T> extends SyntheticEvent<T> { 290 clipboardData: DataTransfer; 291 } 292 293 interface CompositionEvent<T> extends SyntheticEvent<T> { 294 data: string; 295 } 296 297 interface DragEvent<T> extends MouseEvent<T> { 298 dataTransfer: DataTransfer; 299 } 300 301 interface FocusEvent<T> extends SyntheticEvent<T> { 302 relatedTarget: EventTarget; 303 } 304 305 interface FormEvent<T> extends SyntheticEvent<T> { 306 } 307 308 interface KeyboardEvent<T> extends SyntheticEvent<T> { 309 altKey: boolean; 310 charCode: number; 311 ctrlKey: boolean; 312 getModifierState(key: string): boolean; 313 key: string; 314 keyCode: number; 315 locale: string; 316 location: number; 317 metaKey: boolean; 318 repeat: boolean; 319 shiftKey: boolean; 320 which: number; 321 } 322 323 interface MouseEvent<T> extends SyntheticEvent<T> { 324 altKey: boolean; 325 button: number; 326 buttons: number; 327 clientX: number; 328 clientY: number; 329 ctrlKey: boolean; 330 getModifierState(key: string): boolean; 331 metaKey: boolean; 332 pageX: number; 333 pageY: number; 334 relatedTarget: EventTarget; 335 screenX: number; 336 screenY: number; 337 shiftKey: boolean; 338 } 339 340 interface TouchEvent<T> extends SyntheticEvent<T> { 341 altKey: boolean; 342 changedTouches: TouchList; 343 ctrlKey: boolean; 344 getModifierState(key: string): boolean; 345 metaKey: boolean; 346 shiftKey: boolean; 347 targetTouches: TouchList; 348 touches: TouchList; 349 } 350 351 interface UIEvent<T> extends SyntheticEvent<T> { 352 detail: number; 353 view: AbstractView; 354 } 355 356 interface WheelEvent<T> extends MouseEvent<T> { 357 deltaMode: number; 358 deltaX: number; 359 deltaY: number; 360 deltaZ: number; 361 } 362 363 interface AnimationEvent extends SyntheticEvent<{}> { 364 animationName: string; 365 pseudoElement: string; 366 elapsedTime: number; 367 } 368 369 interface TransitionEvent extends SyntheticEvent<{}> { 370 propertyName: string; 371 pseudoElement: string; 372 elapsedTime: number; 373 } 374 375 // 376 // Event Handler Types 377 // ---------------------------------------------------------------------- 378 379 interface EventHandler<E extends SyntheticEvent<any>> { 380 (event: E): void; 381 } 382 383 type ReactEventHandler<T> = EventHandler<SyntheticEvent<T>>; 384 385 type ClipboardEventHandler<T> = EventHandler<ClipboardEvent<T>>; 386 type CompositionEventHandler<T> = EventHandler<CompositionEvent<T>>; 387 type DragEventHandler<T> = EventHandler<DragEvent<T>>; 388 type FocusEventHandler<T> = EventHandler<FocusEvent<T>>; 389 type FormEventHandler<T> = EventHandler<FormEvent<T>>; 390 type KeyboardEventHandler<T> = EventHandler<KeyboardEvent<T>>; 391 type MouseEventHandler<T> = EventHandler<MouseEvent<T>>; 392 type TouchEventHandler<T> = EventHandler<TouchEvent<T>>; 393 type UIEventHandler<T> = EventHandler<UIEvent<T>>; 394 type WheelEventHandler<T> = EventHandler<WheelEvent<T>>; 395 type AnimationEventHandler = EventHandler<AnimationEvent>; 396 type TransitionEventHandler = EventHandler<TransitionEvent>; 397 398 // 399 // Props / DOM Attributes 400 // ---------------------------------------------------------------------- 401 402 /** 403 * @deprecated. This was used to allow clients to pass `ref` and `key` 404 * to `createElement`, which is no longer necessary due to intersection 405 * types. If you need to declare a props object before passing it to 406 * `createElement` or a factory, use `ClassAttributes<T>`: 407 * 408 * ```ts 409 * var b: Button; 410 * var props: ButtonProps & ClassAttributes<Button> = { 411 * ref: b => button = b, // ok! 412 * label: "I'm a Button" 413 * }; 414 * ``` 415 */ 416 interface Props<T> { 417 children?: ReactNode; 418 key?: Key; 419 ref?: Ref<T>; 420 } 421 422 interface HTMLProps<T> extends HTMLAttributes<T>, ClassAttributes<T> { 423 } 424 425 interface SVGProps extends SVGAttributes<SVGElement>, ClassAttributes<SVGElement> { 426 } 427 428 interface DOMAttributes<T> { 429 children?: ReactNode; 430 dangerouslySetInnerHTML?: { 431 __html: string; 432 }; 433 434 // Clipboard Events 435 onCopy?: ClipboardEventHandler<T>; 436 onCut?: ClipboardEventHandler<T>; 437 onPaste?: ClipboardEventHandler<T>; 438 439 // Composition Events 440 onCompositionEnd?: CompositionEventHandler<T>; 441 onCompositionStart?: CompositionEventHandler<T>; 442 onCompositionUpdate?: CompositionEventHandler<T>; 443 444 // Focus Events 445 onFocus?: FocusEventHandler<T>; 446 onBlur?: FocusEventHandler<T>; 447 448 // Form Events 449 onChange?: FormEventHandler<T>; 450 onInput?: FormEventHandler<T>; 451 onSubmit?: FormEventHandler<T>; 452 453 // Image Events 454 onLoad?: ReactEventHandler<T>; 455 onError?: ReactEventHandler<T>; // also a Media Event 456 457 // Keyboard Events 458 onKeyDown?: KeyboardEventHandler<T>; 459 onKeyPress?: KeyboardEventHandler<T>; 460 onKeyUp?: KeyboardEventHandler<T>; 461 462 // Media Events 463 onAbort?: ReactEventHandler<T>; 464 onCanPlay?: ReactEventHandler<T>; 465 onCanPlayThrough?: ReactEventHandler<T>; 466 onDurationChange?: ReactEventHandler<T>; 467 onEmptied?: ReactEventHandler<T>; 468 onEncrypted?: ReactEventHandler<T>; 469 onEnded?: ReactEventHandler<T>; 470 onLoadedData?: ReactEventHandler<T>; 471 onLoadedMetadata?: ReactEventHandler<T>; 472 onLoadStart?: ReactEventHandler<T>; 473 onPause?: ReactEventHandler<T>; 474 onPlay?: ReactEventHandler<T>; 475 onPlaying?: ReactEventHandler<T>; 476 onProgress?: ReactEventHandler<T>; 477 onRateChange?: ReactEventHandler<T>; 478 onSeeked?: ReactEventHandler<T>; 479 onSeeking?: ReactEventHandler<T>; 480 onStalled?: ReactEventHandler<T>; 481 onSuspend?: ReactEventHandler<T>; 482 onTimeUpdate?: ReactEventHandler<T>; 483 onVolumeChange?: ReactEventHandler<T>; 484 onWaiting?: ReactEventHandler<T>; 485 486 // MouseEvents 487 onClick?: MouseEventHandler<T>; 488 onContextMenu?: MouseEventHandler<T>; 489 onDoubleClick?: MouseEventHandler<T>; 490 onDrag?: DragEventHandler<T>; 491 onDragEnd?: DragEventHandler<T>; 492 onDragEnter?: DragEventHandler<T>; 493 onDragExit?: DragEventHandler<T>; 494 onDragLeave?: DragEventHandler<T>; 495 onDragOver?: DragEventHandler<T>; 496 onDragStart?: DragEventHandler<T>; 497 onDrop?: DragEventHandler<T>; 498 onMouseDown?: MouseEventHandler<T>; 499 onMouseEnter?: MouseEventHandler<T>; 500 onMouseLeave?: MouseEventHandler<T>; 501 onMouseMove?: MouseEventHandler<T>; 502 onMouseOut?: MouseEventHandler<T>; 503 onMouseOver?: MouseEventHandler<T>; 504 onMouseUp?: MouseEventHandler<T>; 505 506 // Selection Events 507 onSelect?: ReactEventHandler<T>; 508 509 // Touch Events 510 onTouchCancel?: TouchEventHandler<T>; 511 onTouchEnd?: TouchEventHandler<T>; 512 onTouchMove?: TouchEventHandler<T>; 513 onTouchStart?: TouchEventHandler<T>; 514 515 // UI Events 516 onScroll?: UIEventHandler<T>; 517 518 // Wheel Events 519 onWheel?: WheelEventHandler<T>; 520 521 // Animation Events 522 onAnimationStart?: AnimationEventHandler; 523 onAnimationEnd?: AnimationEventHandler; 524 onAnimationIteration?: AnimationEventHandler; 525 526 // Transition Events 527 onTransitionEnd?: TransitionEventHandler; 528 } 529 530 // This interface is not complete. Only properties accepting 531 // unitless numbers are listed here (see CSSProperty.js in React) 532 interface CSSProperties { 533 534 /** 535 * Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how justify-content aligns individual items within the main-axis. 536 */ 537 alignContent?: any; 538 539 /** 540 * Sets the default alignment in the cross axis for all of the flex container's items, including anonymous flex items, similarly to how justify-content aligns items along the main axis. 541 */ 542 alignItems?: any; 543 544 /** 545 * Allows the default alignment to be overridden for individual flex items. 546 */ 547 alignSelf?: any; 548 549 /** 550 * This property allows precise alignment of elements, such as graphics, that do not have a baseline-table or lack the desired baseline in their baseline-table. With the alignment-adjust property, the position of the baseline identified by the alignment-baseline can be explicitly determined. It also determines precisely the alignment point for each glyph within a textual element. 551 */ 552 alignmentAdjust?: any; 553 554 alignmentBaseline?: any; 555 556 /** 557 * Defines a length of time to elapse before an animation starts, allowing an animation to begin execution some time after it is applied. 558 */ 559 animationDelay?: any; 560 561 /** 562 * Defines whether an animation should run in reverse on some or all cycles. 563 */ 564 animationDirection?: any; 565 566 /** 567 * Specifies how many times an animation cycle should play. 568 */ 569 animationIterationCount?: any; 570 571 /** 572 * Defines the list of animations that apply to the element. 573 */ 574 animationName?: any; 575 576 /** 577 * Defines whether an animation is running or paused. 578 */ 579 animationPlayState?: any; 580 581 /** 582 * Allows changing the style of any element to platform-based interface elements or vice versa. 583 */ 584 appearance?: any; 585 586 /** 587 * Determines whether or not the “back” side of a transformed element is visible when facing the viewer. 588 */ 589 backfaceVisibility?: any; 590 591 /** 592 * Shorthand property to set the values for one or more of: 593 * background-clip, background-color, background-image, 594 * background-origin, background-position, background-repeat, 595 * background-size, and background-attachment. 596 */ 597 background?: any; 598 599 /** 600 * If a background-image is specified, this property determines 601 * whether that image's position is fixed within the viewport, 602 * or scrolls along with its containing block. 603 */ 604 backgroundAttachment?: "scroll" | "fixed" | "local"; 605 606 /** 607 * This property describes how the element's background images should blend with each other and the element's background color. 608 * The value is a list of blend modes that corresponds to each background image. Each element in the list will apply to the corresponding element of background-image. If a property doesn’t have enough comma-separated values to match the number of layers, the UA must calculate its used value by repeating the list of values until there are enough. 609 */ 610 backgroundBlendMode?: any; 611 612 /** 613 * Sets the background color of an element. 614 */ 615 backgroundColor?: any; 616 617 backgroundComposite?: any; 618 619 /** 620 * Applies one or more background images to an element. These can be any valid CSS image, including url() paths to image files or CSS gradients. 621 */ 622 backgroundImage?: any; 623 624 /** 625 * Specifies what the background-position property is relative to. 626 */ 627 backgroundOrigin?: any; 628 629 /** 630 * Sets the position of a background image. 631 */ 632 backgroundPosition?: any; 633 634 /** 635 * Background-repeat defines if and how background images will be repeated after they have been sized and positioned 636 */ 637 backgroundRepeat?: any; 638 639 /** 640 * Obsolete - spec retired, not implemented. 641 */ 642 baselineShift?: any; 643 644 /** 645 * Non standard. Sets or retrieves the location of the Dynamic HTML (DHTML) behavior. 646 */ 647 behavior?: any; 648 649 /** 650 * Shorthand property that defines the different properties of all four sides of an element's border in a single declaration. It can be used to set border-width, border-style and border-color, or a subset of these. 651 */ 652 border?: any; 653 654 /** 655 * Shorthand that sets the values of border-bottom-color, 656 * border-bottom-style, and border-bottom-width. 657 */ 658 borderBottom?: any; 659 660 /** 661 * Sets the color of the bottom border of an element. 662 */ 663 borderBottomColor?: any; 664 665 /** 666 * Defines the shape of the border of the bottom-left corner. 667 */ 668 borderBottomLeftRadius?: any; 669 670 /** 671 * Defines the shape of the border of the bottom-right corner. 672 */ 673 borderBottomRightRadius?: any; 674 675 /** 676 * Sets the line style of the bottom border of a box. 677 */ 678 borderBottomStyle?: any; 679 680 /** 681 * Sets the width of an element's bottom border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width. 682 */ 683 borderBottomWidth?: any; 684 685 /** 686 * Border-collapse can be used for collapsing the borders between table cells 687 */ 688 borderCollapse?: any; 689 690 /** 691 * The CSS border-color property sets the color of an element's four borders. This property can have from one to four values, made up of the elementary properties: • border-top-color 692 * • border-right-color 693 * • border-bottom-color 694 * • border-left-color The default color is the currentColor of each of these values. 695 * If you provide one value, it sets the color for the element. Two values set the horizontal and vertical values, respectively. Providing three values sets the top, vertical, and bottom values, in that order. Four values set all for sides: top, right, bottom, and left, in that order. 696 */ 697 borderColor?: any; 698 699 /** 700 * Specifies different corner clipping effects, such as scoop (inner curves), bevel (straight cuts) or notch (cut-off rectangles). Works along with border-radius to specify the size of each corner effect. 701 */ 702 borderCornerShape?: any; 703 704 /** 705 * The property border-image-source is used to set the image to be used instead of the border style. If this is set to none the border-style is used instead. 706 */ 707 borderImageSource?: any; 708 709 /** 710 * The border-image-width CSS property defines the offset to use for dividing the border image in nine parts, the top-left corner, central top edge, top-right-corner, central right edge, bottom-right corner, central bottom edge, bottom-left corner, and central right edge. They represent inward distance from the top, right, bottom, and left edges. 711 */ 712 borderImageWidth?: any; 713 714 /** 715 * Shorthand property that defines the border-width, border-style and border-color of an element's left border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the left border — border-left-width, border-left-style and border-left-color. 716 */ 717 borderLeft?: any; 718 719 /** 720 * The CSS border-left-color property sets the color of an element's left border. This page explains the border-left-color value, but often you will find it more convenient to fix the border's left color as part of a shorthand set, either border-left or border-color. 721 * Colors can be defined several ways. For more information, see Usage. 722 */ 723 borderLeftColor?: any; 724 725 /** 726 * Sets the style of an element's left border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style. 727 */ 728 borderLeftStyle?: any; 729 730 /** 731 * Sets the width of an element's left border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width. 732 */ 733 borderLeftWidth?: any; 734 735 /** 736 * Shorthand property that defines the border-width, border-style and border-color of an element's right border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the right border — border-right-width, border-right-style and border-right-color. 737 */ 738 borderRight?: any; 739 740 /** 741 * Sets the color of an element's right border. This page explains the border-right-color value, but often you will find it more convenient to fix the border's right color as part of a shorthand set, either border-right or border-color. 742 * Colors can be defined several ways. For more information, see Usage. 743 */ 744 borderRightColor?: any; 745 746 /** 747 * Sets the style of an element's right border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style. 748 */ 749 borderRightStyle?: any; 750 751 /** 752 * Sets the width of an element's right border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width. 753 */ 754 borderRightWidth?: any; 755 756 /** 757 * Specifies the distance between the borders of adjacent cells. 758 */ 759 borderSpacing?: any; 760 761 /** 762 * Sets the style of an element's four borders. This property can have from one to four values. With only one value, the value will be applied to all four borders; otherwise, this works as a shorthand property for each of border-top-style, border-right-style, border-bottom-style, border-left-style, where each border style may be assigned a separate value. 763 */ 764 borderStyle?: any; 765 766 /** 767 * Shorthand property that defines the border-width, border-style and border-color of an element's top border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the top border — border-top-width, border-top-style and border-top-color. 768 */ 769 borderTop?: any; 770 771 /** 772 * Sets the color of an element's top border. This page explains the border-top-color value, but often you will find it more convenient to fix the border's top color as part of a shorthand set, either border-top or border-color. 773 * Colors can be defined several ways. For more information, see Usage. 774 */ 775 borderTopColor?: any; 776 777 /** 778 * Sets the rounding of the top-left corner of the element. 779 */ 780 borderTopLeftRadius?: any; 781 782 /** 783 * Sets the rounding of the top-right corner of the element. 784 */ 785 borderTopRightRadius?: any; 786 787 /** 788 * Sets the style of an element's top border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style. 789 */ 790 borderTopStyle?: any; 791 792 /** 793 * Sets the width of an element's top border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width. 794 */ 795 borderTopWidth?: any; 796 797 /** 798 * Sets the width of an element's four borders. This property can have from one to four values. This is a shorthand property for setting values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width. 799 */ 800 borderWidth?: any; 801 802 /** 803 * This property specifies how far an absolutely positioned box's bottom margin edge is offset above the bottom edge of the box's containing block. For relatively positioned boxes, the offset is with respect to the bottom edges of the box itself (i.e., the box is given a position in the normal flow, then offset from that position according to these properties). 804 */ 805 bottom?: any; 806 807 /** 808 * Obsolete. 809 */ 810 boxAlign?: any; 811 812 /** 813 * Breaks a box into fragments creating new borders, padding and repeating backgrounds or lets it stay as a continuous box on a page break, column break, or, for inline elements, at a line break. 814 */ 815 boxDecorationBreak?: any; 816 817 /** 818 * Deprecated 819 */ 820 boxDirection?: any; 821 822 /** 823 * Do not use. This property has been replaced by the flex-wrap property. 824 * Gets or sets a value that specifies the direction to add successive rows or columns when the value of box-lines is set to multiple. 825 */ 826 boxLineProgression?: any; 827 828 /** 829 * Do not use. This property has been replaced by the flex-wrap property. 830 * Gets or sets a value that specifies whether child elements wrap onto multiple lines or columns based on the space available in the object. 831 */ 832 boxLines?: any; 833 834 /** 835 * Do not use. This property has been replaced by flex-order. 836 * Specifies the ordinal group that a child element of the object belongs to. This ordinal value identifies the display order (along the axis defined by the box-orient property) for the group. 837 */ 838 boxOrdinalGroup?: any; 839 840 /** 841 * Deprecated. 842 */ 843 boxFlex?: number; 844 845 /** 846 * Deprecated. 847 */ 848 boxFlexGroup?: number; 849 850 /** 851 * The CSS break-after property allows you to force a break on multi-column layouts. More specifically, it allows you to force a break after an element. It allows you to determine if a break should occur, and what type of break it should be. The break-after CSS property describes how the page, column or region break behaves after the generated box. If there is no generated box, the property is ignored. 852 */ 853 breakAfter?: any; 854 855 /** 856 * Control page/column/region breaks that fall above a block of content 857 */ 858 breakBefore?: any; 859 860 /** 861 * Control page/column/region breaks that fall within a block of content 862 */ 863 breakInside?: any; 864 865 /** 866 * The clear CSS property specifies if an element can be positioned next to or must be positioned below the floating elements that precede it in the markup. 867 */ 868 clear?: any; 869 870 /** 871 * Deprecated; see clip-path. 872 * Lets you specify the dimensions of an absolutely positioned element that should be visible, and the element is clipped into this shape, and displayed. 873 */ 874 clip?: any; 875 876 /** 877 * Clipping crops an graphic, so that only a portion of the graphic is rendered, or filled. This clip-rule property, when used with the clip-path property, defines which clip rule, or algorithm, to use when filling the different parts of a graphics. 878 */ 879 clipRule?: any; 880 881 /** 882 * The color property sets the color of an element's foreground content (usually text), accepting any standard CSS color from keywords and hex values to RGB(a) and HSL(a). 883 */ 884 color?: any; 885 886 /** 887 * Describes the number of columns of the element. 888 */ 889 columnCount?: number; 890 891 /** 892 * Specifies how to fill columns (balanced or sequential). 893 */ 894 columnFill?: any; 895 896 /** 897 * The column-gap property controls the width of the gap between columns in multi-column elements. 898 */ 899 columnGap?: any; 900 901 /** 902 * Sets the width, style, and color of the rule between columns. 903 */ 904 columnRule?: any; 905 906 /** 907 * Specifies the color of the rule between columns. 908 */ 909 columnRuleColor?: any; 910 911 /** 912 * Specifies the width of the rule between columns. 913 */ 914 columnRuleWidth?: any; 915 916 /** 917 * The column-span CSS property makes it possible for an element to span across all columns when its value is set to all. An element that spans more than one column is called a spanning element. 918 */ 919 columnSpan?: any; 920 921 /** 922 * Specifies the width of columns in multi-column elements. 923 */ 924 columnWidth?: any; 925 926 /** 927 * This property is a shorthand property for setting column-width and/or column-count. 928 */ 929 columns?: any; 930 931 /** 932 * The counter-increment property accepts one or more names of counters (identifiers), each one optionally followed by an integer which specifies the value by which the counter should be incremented (e.g. if the value is 2, the counter increases by 2 each time it is invoked). 933 */ 934 counterIncrement?: any; 935 936 /** 937 * The counter-reset property contains a list of one or more names of counters, each one optionally followed by an integer (otherwise, the integer defaults to 0.) Each time the given element is invoked, the counters specified by the property are set to the given integer. 938 */ 939 counterReset?: any; 940 941 /** 942 * The cue property specifies sound files (known as an "auditory icon") to be played by speech media agents before and after presenting an element's content; if only one file is specified, it is played both before and after. The volume at which the file(s) should be played, relative to the volume of the main element, may also be specified. The icon files may also be set separately with the cue-before and cue-after properties. 943 */ 944 cue?: any; 945 946 /** 947 * The cue-after property specifies a sound file (known as an "auditory icon") to be played by speech media agents after presenting an element's content; the volume at which the file should be played may also be specified. The shorthand property cue sets cue sounds for both before and after the element is presented. 948 */ 949 cueAfter?: any; 950 951 /** 952 * Specifies the mouse cursor displayed when the mouse pointer is over an element. 953 */ 954 cursor?: any; 955 956 /** 957 * The direction CSS property specifies the text direction/writing direction. The rtl is used for Hebrew or Arabic text, the ltr is for other languages. 958 */ 959 direction?: any; 960 961 /** 962 * This property specifies the type of rendering box used for an element. It is a shorthand property for many other display properties. 963 */ 964 display?: any; 965 966 /** 967 * The ‘fill’ property paints the interior of the given graphical element. The area to be painted consists of any areas inside the outline of the shape. To determine the inside of the shape, all subpaths are considered, and the interior is determined according to the rules associated with the current value of the ‘fill-rule’ property. The zero-width geometric outline of a shape is included in the area to be painted. 968 */ 969 fill?: any; 970 971 /** 972 * SVG: Specifies the opacity of the color or the content the current object is filled with. 973 */ 974 fillOpacity?: number; 975 976 /** 977 * The ‘fill-rule’ property indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape. For a simple, non-intersecting path, it is intuitively clear what region lies "inside"; however, for a more complex path, such as a path that intersects itself or where one subpath encloses another, the interpretation of "inside" is not so obvious. 978 * The ‘fill-rule’ property provides two options for how the inside of a shape is determined: 979 */ 980 fillRule?: any; 981 982 /** 983 * Applies various image processing effects. This property is largely unsupported. See Compatibility section for more information. 984 */ 985 filter?: any; 986 987 /** 988 * Shorthand for `flex-grow`, `flex-shrink`, and `flex-basis`. 989 */ 990 flex?: number | string; 991 992 /** 993 * Obsolete, do not use. This property has been renamed to align-items. 994 * Specifies the alignment (perpendicular to the layout axis defined by the flex-direction property) of child elements of the object. 995 */ 996 flexAlign?: any; 997 998 /** 999 * The flex-basis CSS property describes the initial main size of the flex item before any free space is distributed according to the flex factors described in the flex property (flex-grow and flex-shrink). 1000 */ 1001 flexBasis?: any; 1002 1003 /** 1004 * The flex-direction CSS property describes how flex items are placed in the flex container, by setting the direction of the flex container's main axis. 1005 */ 1006 flexDirection?: any; 1007 1008 /** 1009 * The flex-flow CSS property defines the flex container's main and cross axis. It is a shorthand property for the flex-direction and flex-wrap properties. 1010 */ 1011 flexFlow?: any; 1012 1013 /** 1014 * Specifies the flex grow factor of a flex item. 1015 */ 1016 flexGrow?: number; 1017 1018 /** 1019 * Do not use. This property has been renamed to align-self 1020 * Specifies the alignment (perpendicular to the layout axis defined by flex-direction) of child elements of the object. 1021 */ 1022 flexItemAlign?: any; 1023 1024 /** 1025 * Do not use. This property has been renamed to align-content. 1026 * Specifies how a flexbox's lines align within the flexbox when there is extra space along the axis that is perpendicular to the axis defined by the flex-direction property. 1027 */ 1028 flexLinePack?: any; 1029 1030 /** 1031 * Gets or sets a value that specifies the ordinal group that a flexbox element belongs to. This ordinal value identifies the display order for the group. 1032 */ 1033 flexOrder?: any; 1034 1035 /** 1036 * Specifies the flex shrink factor of a flex item. 1037 */ 1038 flexShrink?: number; 1039 1040 /** 1041 * Elements which have the style float are floated horizontally. These elements can move as far to the left or right of the containing element. All elements after the floating element will flow around it, but elements before the floating element are not impacted. If several floating elements are placed after each other, they will float next to each other as long as there is room. 1042 */ 1043 float?: any; 1044 1045 /** 1046 * Flows content from a named flow (specified by a corresponding flow-into) through selected elements to form a dynamic chain of layout regions. 1047 */ 1048 flowFrom?: any; 1049 1050 /** 1051 * The font property is shorthand that allows you to do one of two things: you can either set up six of the most mature font properties in one line, or you can set one of a choice of keywords to adopt a system font setting. 1052 */ 1053 font?: any; 1054 1055 /** 1056 * The font-family property allows one or more font family names and/or generic family names to be specified for usage on the selected element(s)' text. The browser then goes through the list; for each character in the selection it applies the first font family that has an available glyph for that character. 1057 */ 1058 fontFamily?: any; 1059 1060 /** 1061 * The font-kerning property allows contextual adjustment of inter-glyph spacing, i.e. the spaces between the characters in text. This property controls <bold>metric kerning</bold> - that utilizes adjustment data contained in the font. Optical Kerning is not supported as yet. 1062 */ 1063 fontKerning?: any; 1064 1065 /** 1066 * Specifies the size of the font. Used to compute em and ex units. 1067 */ 1068 fontSize?: number | string; 1069 1070 /** 1071 * The font-size-adjust property adjusts the font-size of the fallback fonts defined with font-family, so that the x-height is the same no matter what font is used. This preserves the readability of the text when fallback happens. 1072 */ 1073 fontSizeAdjust?: any; 1074 1075 /** 1076 * Allows you to expand or condense the widths for a normal, condensed, or expanded font face. 1077 */ 1078 fontStretch?: any; 1079 1080 /** 1081 * The font-style property allows normal, italic, or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face. Oblique faces can be simulated by artificially sloping the glyphs of the regular face. 1082 */ 1083 fontStyle?: any; 1084 1085 /** 1086 * This value specifies whether the user agent is allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces. 1087 */ 1088 fontSynthesis?: any; 1089 1090 /** 1091 * The font-variant property enables you to select the small-caps font within a font family. 1092 */ 1093 fontVariant?: any; 1094 1095 /** 1096 * Fonts can provide alternate glyphs in addition to default glyph for a character. This property provides control over the selection of these alternate glyphs. 1097 */ 1098 fontVariantAlternates?: any; 1099 1100 /** 1101 * Specifies the weight or boldness of the font. 1102 */ 1103 fontWeight?: "normal" | "bold" | "lighter" | "bolder" | number; 1104 1105 /** 1106 * Lays out one or more grid items bound by 4 grid lines. Shorthand for setting grid-column-start, grid-column-end, grid-row-start, and grid-row-end in a single declaration. 1107 */ 1108 gridArea?: any; 1109 1110 /** 1111 * Controls a grid item's placement in a grid area, particularly grid position and a grid span. Shorthand for setting grid-column-start and grid-column-end in a single declaration. 1112 */ 1113 gridColumn?: any; 1114 1115 /** 1116 * Controls a grid item's placement in a grid area as well as grid position and a grid span. The grid-column-end property (with grid-row-start, grid-row-end, and grid-column-start) determines a grid item's placement by specifying the grid lines of a grid item's grid area. 1117 */ 1118 gridColumnEnd?: any; 1119 1120 /** 1121 * Determines a grid item's placement by specifying the starting grid lines of a grid item's grid area . A grid item's placement in a grid area consists of a grid position and a grid span. See also ( grid-row-start, grid-row-end, and grid-column-end) 1122 */ 1123 gridColumnStart?: any; 1124 1125 /** 1126 * Gets or sets a value that indicates which row an element within a Grid should appear in. Shorthand for setting grid-row-start and grid-row-end in a single declaration. 1127 */ 1128 gridRow?: any; 1129 1130 /** 1131 * Determines a grid item’s placement by specifying the block-end. A grid item's placement in a grid area consists of a grid position and a grid span. The grid-row-end property (with grid-row-start, grid-column-start, and grid-column-end) determines a grid item's placement by specifying the grid lines of a grid item's grid area. 1132 */ 1133 gridRowEnd?: any; 1134 1135 /** 1136 * Specifies a row position based upon an integer location, string value, or desired row size. 1137 * css/properties/grid-row is used as short-hand for grid-row-position and grid-row-position 1138 */ 1139 gridRowPosition?: any; 1140 1141 gridRowSpan?: any; 1142 1143 /** 1144 * Specifies named grid areas which are not associated with any particular grid item, but can be referenced from the grid-placement properties. The syntax of the grid-template-areas property also provides a visualization of the structure of the grid, making the overall layout of the grid container easier to understand. 1145 */ 1146 gridTemplateAreas?: any; 1147 1148 /** 1149 * Specifies (with grid-template-rows) the line names and track sizing functions of the grid. Each sizing function can be specified as a length, a percentage of the grid container’s size, a measurement of the contents occupying the column or row, or a fraction of the free space in the grid. 1150 */ 1151 gridTemplateColumns?: any; 1152 1153 /** 1154 * Specifies (with grid-template-columns) the line names and track sizing functions of the grid. Each sizing function can be specified as a length, a percentage of the grid container’s size, a measurement of the contents occupying the column or row, or a fraction of the free space in the grid. 1155 */ 1156 gridTemplateRows?: any; 1157 1158 /** 1159 * Sets the height of an element. The content area of the element height does not include the padding, border, and margin of the element. 1160 */ 1161 height?: any; 1162 1163 /** 1164 * Specifies the minimum number of characters in a hyphenated word 1165 */ 1166 hyphenateLimitChars?: any; 1167 1168 /** 1169 * Indicates the maximum number of successive hyphenated lines in an element. The ‘no-limit’ value means that there is no limit. 1170 */ 1171 hyphenateLimitLines?: any; 1172 1173 /** 1174 * Specifies the maximum amount of trailing whitespace (before justification) that may be left in a line before hyphenation is triggered to pull part of a word from the next line back up into the current one. 1175 */ 1176 hyphenateLimitZone?: any; 1177 1178 /** 1179 * Specifies whether or not words in a sentence can be split by the use of a manual or automatic hyphenation mechanism. 1180 */ 1181 hyphens?: any; 1182 1183 imeMode?: any; 1184 1185 /** 1186 * Defines how the browser distributes space between and around flex items 1187 * along the main-axis of their container. 1188 */ 1189 justifyContent?: "flex-start" | "flex-end" | "center" | "space-between" | "space-around"; 1190 1191 layoutGrid?: any; 1192 1193 layoutGridChar?: any; 1194 1195 layoutGridLine?: any; 1196 1197 layoutGridMode?: any; 1198 1199 layoutGridType?: any; 1200 1201 /** 1202 * Sets the left edge of an element 1203 */ 1204 left?: any; 1205 1206 /** 1207 * The letter-spacing CSS property specifies the spacing behavior between text characters. 1208 */ 1209 letterSpacing?: any; 1210 1211 /** 1212 * Deprecated. Gets or sets line-breaking rules for text in selected languages such as Japanese, Chinese, and Korean. 1213 */ 1214 lineBreak?: any; 1215 1216 lineClamp?: number; 1217 1218 /** 1219 * Specifies the height of an inline block level element. 1220 */ 1221 lineHeight?: number | string; 1222 1223 /** 1224 * Shorthand property that sets the list-style-type, list-style-position and list-style-image properties in one declaration. 1225 */ 1226 listStyle?: any; 1227 1228 /** 1229 * This property sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker. That also means that if the image is not available, it will show the style specified by list-style-property 1230 */ 1231 listStyleImage?: any; 1232 1233 /** 1234 * Specifies if the list-item markers should appear inside or outside the content flow. 1235 */ 1236 listStylePosition?: any; 1237 1238 /** 1239 * Specifies the type of list-item marker in a list. 1240 */ 1241 listStyleType?: any; 1242 1243 /** 1244 * The margin property is shorthand to allow you to set all four margins of an element at once. Its equivalent longhand properties are margin-top, margin-right, margin-bottom and margin-left. Negative values are also allowed. 1245 */ 1246 margin?: any; 1247 1248 /** 1249 * margin-bottom sets the bottom margin of an element. 1250 */ 1251 marginBottom?: any; 1252 1253 /** 1254 * margin-left sets the left margin of an element. 1255 */ 1256 marginLeft?: any; 1257 1258 /** 1259 * margin-right sets the right margin of an element. 1260 */ 1261 marginRight?: any; 1262 1263 /** 1264 * margin-top sets the top margin of an element. 1265 */ 1266 marginTop?: any; 1267 1268 /** 1269 * The marquee-direction determines the initial direction in which the marquee content moves. 1270 */ 1271 marqueeDirection?: any; 1272 1273 /** 1274 * The 'marquee-style' property determines a marquee's scrolling behavior. 1275 */ 1276 marqueeStyle?: any; 1277 1278 /** 1279 * This property is shorthand for setting mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-composite and mask-size. Omitted values are set to their original properties' initial values. 1280 */ 1281 mask?: any; 1282 1283 /** 1284 * This property is shorthand for setting mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, and mask-border-repeat. Omitted values are set to their original properties' initial values. 1285 */ 1286 maskBorder?: any; 1287 1288 /** 1289 * This property specifies how the images for the sides and the middle part of the mask image are scaled and tiled. The first keyword applies to the horizontal sides, the second one applies to the vertical ones. If the second keyword is absent, it is assumed to be the same as the first, similar to the CSS border-image-repeat property. 1290 */ 1291 maskBorderRepeat?: any; 1292 1293 /** 1294 * This property specifies inward offsets from the top, right, bottom, and left edges of the mask image, dividing it into nine regions: four corners, four edges, and a middle. The middle image part is discarded and treated as fully transparent black unless the fill keyword is present. The four values set the top, right, bottom and left offsets in that order, similar to the CSS border-image-slice property. 1295 */ 1296 maskBorderSlice?: any; 1297 1298 /** 1299 * Specifies an image to be used as a mask. An image that is empty, fails to download, is non-existent, or cannot be displayed is ignored and does not mask the element. 1300 */ 1301 maskBorderSource?: any; 1302 1303 /** 1304 * This property sets the width of the mask box image, similar to the CSS border-image-width property. 1305 */ 1306 maskBorderWidth?: any; 1307 1308 /** 1309 * Determines the mask painting area, which defines the area that is affected by the mask. The painted content of an element may be restricted to this area. 1310 */ 1311 maskClip?: any; 1312 1313 /** 1314 * For elements rendered as a single box, specifies the mask positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes box-decoration-break operates on to determine the mask positioning area(s). 1315 */ 1316 maskOrigin?: any; 1317 1318 /** 1319 * This property must not be used. It is no longer included in any standard or standard track specification, nor is it implemented in any browser. It is only used when the text-align-last property is set to size. It controls allowed adjustments of font-size to fit line content. 1320 */ 1321 maxFontSize?: any; 1322 1323 /** 1324 * Sets the maximum height for an element. It prevents the height of the element to exceed the specified value. If min-height is specified and is greater than max-height, max-height is overridden. 1325 */ 1326 maxHeight?: any; 1327 1328 /** 1329 * Sets the maximum width for an element. It limits the width property to be larger than the value specified in max-width. 1330 */ 1331 maxWidth?: any; 1332 1333 /** 1334 * Sets the minimum height for an element. It prevents the height of the element to be smaller than the specified value. The value of min-height overrides both max-height and height. 1335 */ 1336 minHeight?: any; 1337 1338 /** 1339 * Sets the minimum width of an element. It limits the width property to be not smaller than the value specified in min-width. 1340 */ 1341 minWidth?: any; 1342 1343 /** 1344 * Specifies the transparency of an element. 1345 */ 1346 opacity?: number; 1347 1348 /** 1349 * Specifies the order used to lay out flex items in their flex container. 1350 * Elements are laid out in the ascending order of the order value. 1351 */ 1352 order?: number; 1353 1354 /** 1355 * In paged media, this property defines the minimum number of lines in 1356 * a block container that must be left at the bottom of the page. 1357 */ 1358 orphans?: number; 1359 1360 /** 1361 * The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient. 1362 * Outlines differ from borders in the following ways: • Outlines do not take up space, they are drawn above the content. 1363 * • Outlines may be non-rectangular. They are rectangular in Gecko/Firefox. Internet Explorer attempts to place the smallest contiguous outline around all elements or shapes that are indicated to have an outline. Opera draws a non-rectangular shape around a construct. 1364 */ 1365 outline?: any; 1366 1367 /** 1368 * The outline-color property sets the color of the outline of an element. An outline is a line that is drawn around elements, outside the border edge, to make the element stand out. 1369 */ 1370 outlineColor?: any; 1371 1372 /** 1373 * The outline-offset property offsets the outline and draw it beyond the border edge. 1374 */ 1375 outlineOffset?: any; 1376 1377 /** 1378 * The overflow property controls how extra content exceeding the bounding box of an element is rendered. It can be used in conjunction with an element that has a fixed width and height, to eliminate text-induced page distortion. 1379 */ 1380 overflow?: any; 1381 1382 /** 1383 * Specifies the preferred scrolling methods for elements that overflow. 1384 */ 1385 overflowStyle?: any; 1386 1387 /** 1388 * Controls how extra content exceeding the x-axis of the bounding box of an element is rendered. 1389 */ 1390 overflowX?: any; 1391 1392 /** 1393 * Controls how extra content exceeding the y-axis of the bounding box of an element is rendered. 1394 */ 1395 overflowY?: any; 1396 1397 /** 1398 * The padding optional CSS property sets the required padding space on one to four sides of an element. The padding area is the space between an element and its border. Negative values are not allowed but decimal values are permitted. The element size is treated as fixed, and the content of the element shifts toward the center as padding is increased. 1399 * The padding property is a shorthand to avoid setting each side separately (padding-top, padding-right, padding-bottom, padding-left). 1400 */ 1401 padding?: any; 1402 1403 /** 1404 * The padding-bottom CSS property of an element sets the padding space required on the bottom of an element. The padding area is the space between the content of the element and its border. Contrary to margin-bottom values, negative values of padding-bottom are invalid. 1405 */ 1406 paddingBottom?: any; 1407 1408 /** 1409 * The padding-left CSS property of an element sets the padding space required on the left side of an element. The padding area is the space between the content of the element and its border. Contrary to margin-left values, negative values of padding-left are invalid. 1410 */ 1411 paddingLeft?: any; 1412 1413 /** 1414 * The padding-right CSS property of an element sets the padding space required on the right side of an element. The padding area is the space between the content of the element and its border. Contrary to margin-right values, negative values of padding-right are invalid. 1415 */ 1416 paddingRight?: any; 1417 1418 /** 1419 * The padding-top CSS property of an element sets the padding space required on the top of an element. The padding area is the space between the content of the element and its border. Contrary to margin-top values, negative values of padding-top are invalid. 1420 */ 1421 paddingTop?: any; 1422 1423 /** 1424 * The page-break-after property is supported in all major browsers. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. 1425 */ 1426 pageBreakAfter?: any; 1427 1428 /** 1429 * The page-break-before property sets the page-breaking behavior before an element. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. 1430 */ 1431 pageBreakBefore?: any; 1432 1433 /** 1434 * Sets the page-breaking behavior inside an element. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. 1435 */ 1436 pageBreakInside?: any; 1437 1438 /** 1439 * The pause property determines how long a speech media agent should pause before and after presenting an element. It is a shorthand for the pause-before and pause-after properties. 1440 */ 1441 pause?: any; 1442 1443 /** 1444 * The pause-after property determines how long a speech media agent should pause after presenting an element. It may be replaced by the shorthand property pause, which sets pause time before and after. 1445 */ 1446 pauseAfter?: any; 1447 1448 /** 1449 * The pause-before property determines how long a speech media agent should pause before presenting an element. It may be replaced by the shorthand property pause, which sets pause time before and after. 1450 */ 1451 pauseBefore?: any; 1452 1453 /** 1454 * The perspective property defines how far an element is placed from the view on the z-axis, from the screen to the viewer. 1455 * Perspective defines how an object is viewed. In graphic arts, perspective is the representation on a flat surface of what the viewer's eye would see in a 3D space. (See Wikipedia for more information about graphical perspective and for related illustrations.) 1456 * The illusion of perspective on a flat surface, such as a computer screen, is created by projecting points on the flat surface as they would appear if the flat surface were a window through which the viewer was looking at the object. In discussion of virtual environments, this flat surface is called a projection plane. 1457 */ 1458 perspective?: any; 1459 1460 /** 1461 * The perspective-origin property establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element. 1462 * When used with perspective, perspective-origin changes the appearance of an object, as if a viewer were looking at it from a different origin. An object appears differently if a viewer is looking directly at it versus looking at it from below, above, or from the side. Thus, the perspective-origin is like a vanishing point. 1463 * The default value of perspective-origin is 50% 50%. This displays an object as if the viewer's eye were positioned directly at the center of the screen, both top-to-bottom and left-to-right. A value of 0% 0% changes the object as if the viewer was looking toward the top left angle. A value of 100% 100% changes the appearance as if viewed toward the bottom right angle. 1464 */ 1465 perspectiveOrigin?: any; 1466 1467 /** 1468 * The pointer-events property allows you to control whether an element can be the target for the pointing device (e.g, mouse, pen) events. 1469 */ 1470 pointerEvents?: any; 1471 1472 /** 1473 * The position property controls the type of positioning used by an element within its parent elements. The effect of the position property depends on a lot of factors, for example the position property of parent elements. 1474 */ 1475 position?: any; 1476 1477 /** 1478 * Obsolete: unsupported. 1479 * This property determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its "ink" lines up with the first glyph in the line above and below. 1480 */ 1481 punctuationTrim?: any; 1482 1483 /** 1484 * Sets the type of quotation marks for embedded quotations. 1485 */ 1486 quotes?: any; 1487 1488 /** 1489 * Controls whether the last region in a chain displays additional 'overset' content according its default overflow property, or if it displays a fragment of content as if it were flowing into a subsequent region. 1490 */ 1491 regionFragment?: any; 1492 1493 /** 1494 * The rest-after property determines how long a speech media agent should pause after presenting an element's main content, before presenting that element's exit cue sound. It may be replaced by the shorthand property rest, which sets rest time before and after. 1495 */ 1496 restAfter?: any; 1497 1498 /** 1499 * The rest-before property determines how long a speech media agent should pause after presenting an intro cue sound for an element, before presenting that element's main content. It may be replaced by the shorthand property rest, which sets rest time before and after. 1500 */ 1501 restBefore?: any; 1502 1503 /** 1504 * Specifies the position an element in relation to the right side of the containing element. 1505 */ 1506 right?: any; 1507 1508 rubyAlign?: any; 1509 1510 rubyPosition?: any; 1511 1512 /** 1513 * Defines the alpha channel threshold used to extract a shape from an image. Can be thought of as a "minimum opacity" threshold; that is, a value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque. 1514 */ 1515 shapeImageThreshold?: any; 1516 1517 /** 1518 * A future level of CSS Shapes will define a shape-inside property, which will define a shape to wrap content within the element. See Editor's Draft <http://dev.w3.org/csswg/css-shapes/> and CSSWG wiki page on next-level plans <http://wiki.csswg.org/spec/css-shapes> 1519 */ 1520 shapeInside?: any; 1521 1522 /** 1523 * Adds a margin to a shape-outside. In effect, defines a new shape that is the smallest contour around all the points that are the shape-margin distance outward perpendicular to each point on the underlying shape. For points where a perpendicular direction is not defined (e.g., a triangle corner), takes all points on a circle centered at the point and with a radius of the shape-margin distance. This property accepts only non-negative values. 1524 */ 1525 shapeMargin?: any; 1526 1527 /** 1528 * Declares a shape around which text should be wrapped, with possible modifications from the shape-margin property. The shape defined by shape-outside and shape-margin changes the geometry of a float element's float area. 1529 */ 1530 shapeOutside?: any; 1531 1532 /** 1533 * The speak property determines whether or not a speech synthesizer will read aloud the contents of an element. 1534 */ 1535 speak?: any; 1536 1537 /** 1538 * The speak-as property determines how the speech synthesizer interprets the content: words as whole words or as a sequence of letters, numbers as a numerical value or a sequence of digits, punctuation as pauses in speech or named punctuation characters. 1539 */ 1540 speakAs?: any; 1541 1542 /** 1543 * SVG: Specifies the opacity of the outline on the current object. 1544 */ 1545 strokeOpacity?: number; 1546 1547 /** 1548 * SVG: Specifies the width of the outline on the current object. 1549 */ 1550 strokeWidth?: number; 1551 1552 /** 1553 * The tab-size CSS property is used to customise the width of a tab (U+0009) character. 1554 */ 1555 tabSize?: any; 1556 1557 /** 1558 * The 'table-layout' property controls the algorithm used to lay out the table cells, rows, and columns. 1559 */ 1560 tableLayout?: any; 1561 1562 /** 1563 * The text-align CSS property describes how inline content like text is aligned in its parent block element. text-align does not control the alignment of block elements itself, only their inline content. 1564 */ 1565 textAlign?: any; 1566 1567 /** 1568 * The text-align-last CSS property describes how the last line of a block element or a line before line break is aligned in its parent block element. 1569 */ 1570 textAlignLast?: any; 1571 1572 /** 1573 * The text-decoration CSS property is used to set the text formatting to underline, overline, line-through or blink. 1574 * underline and overline decorations are positioned under the text, line-through over it. 1575 */ 1576 textDecoration?: any; 1577 1578 /** 1579 * Sets the color of any text decoration, such as underlines, overlines, and strike throughs. 1580 */ 1581 textDecorationColor?: any; 1582 1583 /** 1584 * Sets what kind of line decorations are added to an element, such as underlines, overlines, etc. 1585 */ 1586 textDecorationLine?: any; 1587 1588 textDecorationLineThrough?: any; 1589 1590 textDecorationNone?: any; 1591 1592 textDecorationOverline?: any; 1593 1594 /** 1595 * Specifies what parts of an element’s content are skipped over when applying any text decoration. 1596 */ 1597 textDecorationSkip?: any; 1598 1599 /** 1600 * This property specifies the style of the text decoration line drawn on the specified element. The intended meaning for the values are the same as those of the border-style-properties. 1601 */ 1602 textDecorationStyle?: any; 1603 1604 textDecorationUnderline?: any; 1605 1606 /** 1607 * The text-emphasis property will apply special emphasis marks to the elements text. Slightly similar to the text-decoration property only that this property can have affect on the line-height. It also is noted that this is shorthand for text-emphasis-style and for text-emphasis-color. 1608 */ 1609 textEmphasis?: any; 1610 1611 /** 1612 * The text-emphasis-color property specifies the foreground color of the emphasis marks. 1613 */ 1614 textEmphasisColor?: any; 1615 1616 /** 1617 * The text-emphasis-style property applies special emphasis marks to an element's text. 1618 */ 1619 textEmphasisStyle?: any; 1620 1621 /** 1622 * This property helps determine an inline box's block-progression dimension, derived from the text-height and font-size properties for non-replaced elements, the height or the width for replaced elements, and the stacked block-progression dimension for inline-block elements. The block-progression dimension determines the position of the padding, border and margin for the element. 1623 */ 1624 textHeight?: any; 1625 1626 /** 1627 * Specifies the amount of space horizontally that should be left on the first line of the text of an element. This horizontal spacing is at the beginning of the first line and is in respect to the left edge of the containing block box. 1628 */ 1629 textIndent?: any; 1630 1631 textJustifyTrim?: any; 1632 1633 textKashidaSpace?: any; 1634 1635 /** 1636 * The text-line-through property is a shorthand property for text-line-through-style, text-line-through-color and text-line-through-mode. (Considered obsolete; use text-decoration instead.) 1637 */ 1638 textLineThrough?: any; 1639 1640 /** 1641 * Specifies the line colors for the line-through text decoration. 1642 * (Considered obsolete; use text-decoration-color instead.) 1643 */ 1644 textLineThroughColor?: any; 1645 1646 /** 1647 * Sets the mode for the line-through text decoration, determining whether the text decoration affects the space characters or not. 1648 * (Considered obsolete; use text-decoration-skip instead.) 1649 */ 1650 textLineThroughMode?: any; 1651 1652 /** 1653 * Specifies the line style for line-through text decoration. 1654 * (Considered obsolete; use text-decoration-style instead.) 1655 */ 1656 textLineThroughStyle?: any; 1657 1658 /** 1659 * Specifies the line width for the line-through text decoration. 1660 */ 1661 textLineThroughWidth?: any; 1662 1663 /** 1664 * The text-overflow shorthand CSS property determines how overflowed content that is not displayed is signaled to the users. It can be clipped, display an ellipsis ('…', U+2026 HORIZONTAL ELLIPSIS) or a Web author-defined string. It covers the two long-hand properties text-overflow-mode and text-overflow-ellipsis 1665 */ 1666 textOverflow?: any; 1667 1668 /** 1669 * The text-overline property is the shorthand for the text-overline-style, text-overline-width, text-overline-color, and text-overline-mode properties. 1670 */ 1671 textOverline?: any; 1672 1673 /** 1674 * Specifies the line color for the overline text decoration. 1675 */ 1676 textOverlineColor?: any; 1677 1678 /** 1679 * Sets the mode for the overline text decoration, determining whether the text decoration affects the space characters or not. 1680 */ 1681 textOverlineMode?: any; 1682 1683 /** 1684 * Specifies the line style for overline text decoration. 1685 */ 1686 textOverlineStyle?: any; 1687 1688 /** 1689 * Specifies the line width for the overline text decoration. 1690 */ 1691 textOverlineWidth?: any; 1692 1693 /** 1694 * The text-rendering CSS property provides information to the browser about how to optimize when rendering text. Options are: legibility, speed or geometric precision. 1695 */ 1696 textRendering?: any; 1697 1698 /** 1699 * Obsolete: unsupported. 1700 */ 1701 textScript?: any; 1702 1703 /** 1704 * The CSS text-shadow property applies one or more drop shadows to the text and <text-decorations> of an element. Each shadow is specified as an offset from the text, along with optional color and blur radius values. 1705 */ 1706 textShadow?: any; 1707 1708 /** 1709 * This property transforms text for styling purposes. (It has no effect on the underlying content.) 1710 */ 1711 textTransform?: any; 1712 1713 /** 1714 * Unsupported. 1715 * This property will add a underline position value to the element that has an underline defined. 1716 */ 1717 textUnderlinePosition?: any; 1718 1719 /** 1720 * After review this should be replaced by text-decoration should it not? 1721 * This property will set the underline style for text with a line value for underline, overline, and line-through. 1722 */ 1723 textUnderlineStyle?: any; 1724 1725 /** 1726 * This property specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's containing block. For relatively positioned boxes, the offset is with respect to the top edges of the box itself (i.e., the box is given a position in the normal flow, then offset from that position according to these properties). 1727 */ 1728 top?: any; 1729 1730 /** 1731 * Determines whether touch input may trigger default behavior supplied by the user agent, such as panning or zooming. 1732 */ 1733 touchAction?: any; 1734 1735 /** 1736 * CSS transforms allow elements styled with CSS to be transformed in two-dimensional or three-dimensional space. Using this property, elements can be translated, rotated, scaled, and skewed. The value list may consist of 2D and/or 3D transform values. 1737 */ 1738 transform?: any; 1739 1740 /** 1741 * This property defines the origin of the transformation axes relative to the element to which the transformation is applied. 1742 */ 1743 transformOrigin?: any; 1744 1745 /** 1746 * This property allows you to define the relative position of the origin of the transformation grid along the z-axis. 1747 */ 1748 transformOriginZ?: any; 1749 1750 /** 1751 * This property specifies how nested elements are rendered in 3D space relative to their parent. 1752 */ 1753 transformStyle?: any; 1754 1755 /** 1756 * The transition CSS property is a shorthand property for transition-property, transition-duration, transition-timing-function, and transition-delay. It allows to define the transition between two states of an element. 1757 */ 1758 transition?: any; 1759 1760 /** 1761 * Defines when the transition will start. A value of ‘0s’ means the transition will execute as soon as the property is changed. Otherwise, the value specifies an offset from the moment the property is changed, and the transition will delay execution by that offset. 1762 */ 1763 transitionDelay?: any; 1764 1765 /** 1766 * The 'transition-duration' property specifies the length of time a transition animation takes to complete. 1767 */ 1768 transitionDuration?: any; 1769 1770 /** 1771 * The 'transition-property' property specifies the name of the CSS property to which the transition is applied. 1772 */ 1773 transitionProperty?: any; 1774 1775 /** 1776 * Sets the pace of action within a transition 1777 */ 1778 transitionTimingFunction?: any; 1779 1780 /** 1781 * The unicode-bidi CSS property specifies the level of embedding with respect to the bidirectional algorithm. 1782 */ 1783 unicodeBidi?: any; 1784 1785 /** 1786 * unicode-range allows you to set a specific range of characters to be downloaded from a font (embedded using @font-face) and made available for use on the current page. 1787 */ 1788 unicodeRange?: any; 1789 1790 /** 1791 * This is for all the high level UX stuff. 1792 */ 1793 userFocus?: any; 1794 1795 /** 1796 * For inputing user content 1797 */ 1798 userInput?: any; 1799 1800 /** 1801 * The vertical-align property controls how inline elements or text are vertically aligned compared to the baseline. If this property is used on table-cells it controls the vertical alignment of content of the table cell. 1802 */ 1803 verticalAlign?: any; 1804 1805 /** 1806 * The visibility property specifies whether the boxes generated by an element are rendered. 1807 */ 1808 visibility?: any; 1809 1810 /** 1811 * The voice-balance property sets the apparent position (in stereo sound) of the synthesized voice for spoken media. 1812 */ 1813 voiceBalance?: any; 1814 1815 /** 1816 * The voice-duration property allows the author to explicitly set the amount of time it should take a speech synthesizer to read an element's content, for example to allow the speech to be synchronized with other media. With a value of auto (the default) the length of time it takes to read the content is determined by the content itself and the voice-rate property. 1817 */ 1818 voiceDuration?: any; 1819 1820 /** 1821 * The voice-family property sets the speaker's voice used by a speech media agent to read an element. The speaker may be specified as a named character (to match a voice option in the speech reading software) or as a generic description of the age and gender of the voice. Similar to the font-family property for visual media, a comma-separated list of fallback options may be given in case the speech reader does not recognize the character name or cannot synthesize the requested combination of generic properties. 1822 */ 1823 voiceFamily?: any; 1824 1825 /** 1826 * The voice-pitch property sets pitch or tone (high or low) for the synthesized speech when reading an element; the pitch may be specified absolutely or relative to the normal pitch for the voice-family used to read the text. 1827 */ 1828 voicePitch?: any; 1829 1830 /** 1831 * The voice-range property determines how much variation in pitch or tone will be created by the speech synthesize when reading an element. Emphasized text, grammatical structures and punctuation may all be rendered as changes in pitch, this property determines how strong or obvious those changes are; large ranges are associated with enthusiastic or emotional speech, while small ranges are associated with flat or mechanical speech. 1832 */ 1833 voiceRange?: any; 1834 1835 /** 1836 * The voice-rate property sets the speed at which the voice synthesized by a speech media agent will read content. 1837 */ 1838 voiceRate?: any; 1839 1840 /** 1841 * The voice-stress property sets the level of vocal emphasis to be used for synthesized speech reading the element. 1842 */ 1843 voiceStress?: any; 1844 1845 /** 1846 * The voice-volume property sets the volume for spoken content in speech media. It replaces the deprecated volume property. 1847 */ 1848 voiceVolume?: any; 1849 1850 /** 1851 * The white-space property controls whether and how white space inside the element is collapsed, and whether lines may wrap at unforced "soft wrap" opportunities. 1852 */ 1853 whiteSpace?: any; 1854 1855 /** 1856 * Obsolete: unsupported. 1857 */ 1858 whiteSpaceTreatment?: any; 1859 1860 /** 1861 * In paged media, this property defines the mimimum number of lines 1862 * that must be left at the top of the second page. 1863 */ 1864 widows?: number; 1865 1866 /** 1867 * Specifies the width of the content area of an element. The content area of the element width does not include the padding, border, and margin of the element. 1868 */ 1869 width?: any; 1870 1871 /** 1872 * The word-break property is often used when there is long generated content that is strung together without and spaces or hyphens to beak apart. A common case of this is when there is a long URL that does not have any hyphens. This case could potentially cause the breaking of the layout as it could extend past the parent element. 1873 */ 1874 wordBreak?: any; 1875 1876 /** 1877 * The word-spacing CSS property specifies the spacing behavior between "words". 1878 */ 1879 wordSpacing?: any; 1880 1881 /** 1882 * An alias of css/properties/overflow-wrap, word-wrap defines whether to break words when the content exceeds the boundaries of its container. 1883 */ 1884 wordWrap?: any; 1885 1886 /** 1887 * Specifies how exclusions affect inline content within block-level elements. Elements lay out their inline content in their content area but wrap around exclusion areas. 1888 */ 1889 wrapFlow?: any; 1890 1891 /** 1892 * Set the value that is used to offset the inner wrap shape from other shapes. Inline content that intersects a shape with this property will be pushed by this shape's margin. 1893 */ 1894 wrapMargin?: any; 1895 1896 /** 1897 * Obsolete and unsupported. Do not use. 1898 * This CSS property controls the text when it reaches the end of the block in which it is enclosed. 1899 */ 1900 wrapOption?: any; 1901 1902 /** 1903 * writing-mode specifies if lines of text are laid out horizontally or vertically, and the direction which lines of text and blocks progress. 1904 */ 1905 writingMode?: any; 1906 1907 /** 1908 * The z-index property specifies the z-order of an element and its descendants. 1909 * When elements overlap, z-order determines which one covers the other. 1910 */ 1911 zIndex?: "auto" | number; 1912 1913 /** 1914 * Sets the initial zoom factor of a document defined by @viewport. 1915 */ 1916 zoom?: "auto" | number; 1917 1918 [propertyName: string]: any; 1919 } 1920 1921 interface HTMLAttributes<T> extends DOMAttributes<T> { 1922 // React-specific Attributes 1923 defaultChecked?: boolean; 1924 defaultValue?: string | string[]; 1925 1926 // Standard HTML Attributes 1927 accept?: string; 1928 acceptCharset?: string; 1929 accessKey?: string; 1930 action?: string; 1931 allowFullScreen?: boolean; 1932 allowTransparency?: boolean; 1933 alt?: string; 1934 async?: boolean; 1935 autoComplete?: string; 1936 autoFocus?: boolean; 1937 autoPlay?: boolean; 1938 capture?: boolean; 1939 cellPadding?: number | string; 1940 cellSpacing?: number | string; 1941 charSet?: string; 1942 challenge?: string; 1943 checked?: boolean; 1944 classID?: string; 1945 className?: string; 1946 cols?: number; 1947 colSpan?: number; 1948 content?: string; 1949 contentEditable?: boolean; 1950 contextMenu?: string; 1951 controls?: boolean; 1952 coords?: string; 1953 crossOrigin?: string; 1954 data?: string; 1955 dateTime?: string; 1956 default?: boolean; 1957 defer?: boolean; 1958 dir?: string; 1959 disabled?: boolean; 1960 download?: any; 1961 draggable?: boolean; 1962 encType?: string; 1963 form?: string; 1964 formAction?: string; 1965 formEncType?: string; 1966 formMethod?: string; 1967 formNoValidate?: boolean; 1968 formTarget?: string; 1969 frameBorder?: number | string; 1970 headers?: string; 1971 height?: number | string; 1972 hidden?: boolean; 1973 high?: number; 1974 href?: string; 1975 hrefLang?: string; 1976 htmlFor?: string; 1977 httpEquiv?: string; 1978 id?: string; 1979 inputMode?: string; 1980 integrity?: string; 1981 is?: string; 1982 keyParams?: string; 1983 keyType?: string; 1984 kind?: string; 1985 label?: string; 1986 lang?: string; 1987 list?: string; 1988 loop?: boolean; 1989 low?: number; 1990 manifest?: string; 1991 marginHeight?: number; 1992 marginWidth?: number; 1993 max?: number | string; 1994 maxLength?: number; 1995 media?: string; 1996 mediaGroup?: string; 1997 method?: string; 1998 min?: number | string; 1999 minLength?: number; 2000 multiple?: boolean; 2001 muted?: boolean; 2002 name?: string; 2003 nonce?: string; 2004 noValidate?: boolean; 2005 open?: boolean; 2006 optimum?: number; 2007 pattern?: string; 2008 placeholder?: string; 2009 poster?: string; 2010 preload?: string; 2011 radioGroup?: string; 2012 readOnly?: boolean; 2013 rel?: string; 2014 required?: boolean; 2015 reversed?: boolean; 2016 role?: string; 2017 rows?: number; 2018 rowSpan?: number; 2019 sandbox?: string; 2020 scope?: string; 2021 scoped?: boolean; 2022 scrolling?: string; 2023 seamless?: boolean; 2024 selected?: boolean; 2025 shape?: string; 2026 size?: number; 2027 sizes?: string; 2028 span?: number; 2029 spellCheck?: boolean; 2030 src?: string; 2031 srcDoc?: string; 2032 srcLang?: string; 2033 srcSet?: string; 2034 start?: number; 2035 step?: number | string; 2036 style?: CSSProperties; 2037 summary?: string; 2038 tabIndex?: number; 2039 target?: string; 2040 title?: string; 2041 type?: string; 2042 useMap?: string; 2043 value?: string | string[] | number; 2044 width?: number | string; 2045 wmode?: string; 2046 wrap?: string; 2047 2048 // RDFa Attributes 2049 about?: string; 2050 datatype?: string; 2051 inlist?: any; 2052 prefix?: string; 2053 property?: string; 2054 resource?: string; 2055 typeof?: string; 2056 vocab?: string; 2057 2058 // Non-standard Attributes 2059 autoCapitalize?: string; 2060 autoCorrect?: string; 2061 autoSave?: string; 2062 color?: string; 2063 itemProp?: string; 2064 itemScope?: boolean; 2065 itemType?: string; 2066 itemID?: string; 2067 itemRef?: string; 2068 results?: number; 2069 security?: string; 2070 unselectable?: boolean; 2071 } 2072 2073 interface SVGAttributes<T> extends HTMLAttributes<T> { 2074 clipPath?: string; 2075 cx?: number | string; 2076 cy?: number | string; 2077 d?: string; 2078 dx?: number | string; 2079 dy?: number | string; 2080 fill?: string; 2081 fillOpacity?: number | string; 2082 fillRule?: string; 2083 fontFamily?: string; 2084 fontSize?: number | string; 2085 fx?: number | string; 2086 fy?: number | string; 2087 gradientTransform?: string; 2088 gradientUnits?: string; 2089 markerEnd?: string; 2090 markerMid?: string; 2091 markerStart?: string; 2092 mask?: string; 2093 offset?: number | string; 2094 opacity?: number | string; 2095 patternContentUnits?: string; 2096 patternUnits?: string; 2097 points?: string; 2098 preserveAspectRatio?: string; 2099 r?: number | string; 2100 rx?: number | string; 2101 ry?: number | string; 2102 spreadMethod?: string; 2103 stopColor?: string; 2104 stopOpacity?: number | string; 2105 stroke?: string; 2106 strokeDasharray?: string; 2107 strokeLinecap?: "butt" | "round" | "square" | "inherit"; 2108 strokeLinejoin?: "miter" | "round" | "bevel" | "inherit"; 2109 strokeMiterlimit?: string; 2110 strokeOpacity?: number | string; 2111 strokeWidth?: number | string; 2112 textAnchor?: string; 2113 transform?: string; 2114 version?: string; 2115 viewBox?: string; 2116 x1?: number | string; 2117 x2?: number | string; 2118 x?: number | string; 2119 xlinkActuate?: string; 2120 xlinkArcrole?: string; 2121 xlinkHref?: string; 2122 xlinkRole?: string; 2123 xlinkShow?: string; 2124 xlinkTitle?: string; 2125 xlinkType?: string; 2126 xmlBase?: string; 2127 xmlLang?: string; 2128 xmlSpace?: string; 2129 y1?: number | string; 2130 y2?: number | string; 2131 y?: number | string; 2132 } 2133 2134 // 2135 // React.DOM 2136 // ---------------------------------------------------------------------- 2137 2138 interface ReactDOM { 2139 // HTML 2140 a: HTMLFactory<HTMLAnchorElement>; 2141 abbr: HTMLFactory<HTMLElement>; 2142 address: HTMLFactory<HTMLElement>; 2143 area: HTMLFactory<HTMLAreaElement>; 2144 article: HTMLFactory<HTMLElement>; 2145 aside: HTMLFactory<HTMLElement>; 2146 audio: HTMLFactory<HTMLAudioElement>; 2147 b: HTMLFactory<HTMLElement>; 2148 base: HTMLFactory<HTMLBaseElement>; 2149 bdi: HTMLFactory<HTMLElement>; 2150 bdo: HTMLFactory<HTMLElement>; 2151 big: HTMLFactory<HTMLElement>; 2152 blockquote: HTMLFactory<HTMLElement>; 2153 body: HTMLFactory<HTMLBodyElement>; 2154 br: HTMLFactory<HTMLBRElement>; 2155 button: HTMLFactory<HTMLButtonElement>; 2156 canvas: HTMLFactory<HTMLCanvasElement>; 2157 caption: HTMLFactory<HTMLElement>; 2158 cite: HTMLFactory<HTMLElement>; 2159 code: HTMLFactory<HTMLElement>; 2160 col: HTMLFactory<HTMLTableColElement>; 2161 colgroup: HTMLFactory<HTMLTableColElement>; 2162 data: HTMLFactory<HTMLElement>; 2163 datalist: HTMLFactory<HTMLDataListElement>; 2164 dd: HTMLFactory<HTMLElement>; 2165 del: HTMLFactory<HTMLElement>; 2166 details: HTMLFactory<HTMLElement>; 2167 dfn: HTMLFactory<HTMLElement>; 2168 dialog: HTMLFactory<HTMLElement>; 2169 div: HTMLFactory<HTMLDivElement>; 2170 dl: HTMLFactory<HTMLDListElement>; 2171 dt: HTMLFactory<HTMLElement>; 2172 em: HTMLFactory<HTMLElement>; 2173 embed: HTMLFactory<HTMLEmbedElement>; 2174 fieldset: HTMLFactory<HTMLFieldSetElement>; 2175 figcaption: HTMLFactory<HTMLElement>; 2176 figure: HTMLFactory<HTMLElement>; 2177 footer: HTMLFactory<HTMLElement>; 2178 form: HTMLFactory<HTMLFormElement>; 2179 h1: HTMLFactory<HTMLHeadingElement>; 2180 h2: HTMLFactory<HTMLHeadingElement>; 2181 h3: HTMLFactory<HTMLHeadingElement>; 2182 h4: HTMLFactory<HTMLHeadingElement>; 2183 h5: HTMLFactory<HTMLHeadingElement>; 2184 h6: HTMLFactory<HTMLHeadingElement>; 2185 head: HTMLFactory<HTMLHeadElement>; 2186 header: HTMLFactory<HTMLElement>; 2187 hgroup: HTMLFactory<HTMLElement>; 2188 hr: HTMLFactory<HTMLHRElement>; 2189 html: HTMLFactory<HTMLHtmlElement>; 2190 i: HTMLFactory<HTMLElement>; 2191 iframe: HTMLFactory<HTMLIFrameElement>; 2192 img: HTMLFactory<HTMLImageElement>; 2193 input: HTMLFactory<HTMLInputElement>; 2194 ins: HTMLFactory<HTMLModElement>; 2195 kbd: HTMLFactory<HTMLElement>; 2196 keygen: HTMLFactory<HTMLElement>; 2197 label: HTMLFactory<HTMLLabelElement>; 2198 legend: HTMLFactory<HTMLLegendElement>; 2199 li: HTMLFactory<HTMLLIElement>; 2200 link: HTMLFactory<HTMLLinkElement>; 2201 main: HTMLFactory<HTMLElement>; 2202 map: HTMLFactory<HTMLMapElement>; 2203 mark: HTMLFactory<HTMLElement>; 2204 menu: HTMLFactory<HTMLElement>; 2205 menuitem: HTMLFactory<HTMLElement>; 2206 meta: HTMLFactory<HTMLMetaElement>; 2207 meter: HTMLFactory<HTMLElement>; 2208 nav: HTMLFactory<HTMLElement>; 2209 noscript: HTMLFactory<HTMLElement>; 2210 object: HTMLFactory<HTMLObjectElement>; 2211 ol: HTMLFactory<HTMLOListElement>; 2212 optgroup: HTMLFactory<HTMLOptGroupElement>; 2213 option: HTMLFactory<HTMLOptionElement>; 2214 output: HTMLFactory<HTMLElement>; 2215 p: HTMLFactory<HTMLParagraphElement>; 2216 param: HTMLFactory<HTMLParamElement>; 2217 picture: HTMLFactory<HTMLElement>; 2218 pre: HTMLFactory<HTMLPreElement>; 2219 progress: HTMLFactory<HTMLProgressElement>; 2220 q: HTMLFactory<HTMLQuoteElement>; 2221 rp: HTMLFactory<HTMLElement>; 2222 rt: HTMLFactory<HTMLElement>; 2223 ruby: HTMLFactory<HTMLElement>; 2224 s: HTMLFactory<HTMLElement>; 2225 samp: HTMLFactory<HTMLElement>; 2226 script: HTMLFactory<HTMLElement>; 2227 section: HTMLFactory<HTMLElement>; 2228 select: HTMLFactory<HTMLSelectElement>; 2229 small: HTMLFactory<HTMLElement>; 2230 source: HTMLFactory<HTMLSourceElement>; 2231 span: HTMLFactory<HTMLSpanElement>; 2232 strong: HTMLFactory<HTMLElement>; 2233 style: HTMLFactory<HTMLStyleElement>; 2234 sub: HTMLFactory<HTMLElement>; 2235 summary: HTMLFactory<HTMLElement>; 2236 sup: HTMLFactory<HTMLElement>; 2237 table: HTMLFactory<HTMLTableElement>; 2238 tbody: HTMLFactory<HTMLTableSectionElement>; 2239 td: HTMLFactory<HTMLTableDataCellElement>; 2240 textarea: HTMLFactory<HTMLTextAreaElement>; 2241 tfoot: HTMLFactory<HTMLTableSectionElement>; 2242 th: HTMLFactory<HTMLTableHeaderCellElement>; 2243 thead: HTMLFactory<HTMLTableSectionElement>; 2244 time: HTMLFactory<HTMLElement>; 2245 title: HTMLFactory<HTMLTitleElement>; 2246 tr: HTMLFactory<HTMLTableRowElement>; 2247 track: HTMLFactory<HTMLTrackElement>; 2248 u: HTMLFactory<HTMLElement>; 2249 ul: HTMLFactory<HTMLUListElement>; 2250 "var": HTMLFactory<HTMLElement>; 2251 video: HTMLFactory<HTMLVideoElement>; 2252 wbr: HTMLFactory<HTMLElement>; 2253 2254 // SVG 2255 svg: SVGFactory; 2256 circle: SVGFactory; 2257 defs: SVGFactory; 2258 ellipse: SVGFactory; 2259 g: SVGFactory; 2260 image: SVGFactory; 2261 line: SVGFactory; 2262 linearGradient: SVGFactory; 2263 mask: SVGFactory; 2264 path: SVGFactory; 2265 pattern: SVGFactory; 2266 polygon: SVGFactory; 2267 polyline: SVGFactory; 2268 radialGradient: SVGFactory; 2269 rect: SVGFactory; 2270 stop: SVGFactory; 2271 symbol: SVGFactory; 2272 text: SVGFactory; 2273 tspan: SVGFactory; 2274 use: SVGFactory; 2275 } 2276 2277 // 2278 // React.PropTypes 2279 // ---------------------------------------------------------------------- 2280 2281 interface Validator<T> { 2282 (object: T, key: string, componentName: string): Error; 2283 } 2284 2285 interface Requireable<T> extends Validator<T> { 2286 isRequired: Validator<T>; 2287 } 2288 2289 interface ValidationMap<T> { 2290 [key: string]: Validator<T>; 2291 } 2292 2293 interface ReactPropTypes { 2294 any: Requireable<any>; 2295 array: Requireable<any>; 2296 bool: Requireable<any>; 2297 func: Requireable<any>; 2298 number: Requireable<any>; 2299 object: Requireable<any>; 2300 string: Requireable<any>; 2301 node: Requireable<any>; 2302 element: Requireable<any>; 2303 instanceOf(expectedClass: {}): Requireable<any>; 2304 oneOf(types: any[]): Requireable<any>; 2305 oneOfType(types: Validator<any>[]): Requireable<any>; 2306 arrayOf(type: Validator<any>): Requireable<any>; 2307 objectOf(type: Validator<any>): Requireable<any>; 2308 shape(type: ValidationMap<any>): Requireable<any>; 2309 } 2310 2311 // 2312 // React.Children 2313 // ---------------------------------------------------------------------- 2314 2315 interface ReactChildren { 2316 map<T>(children: ReactNode, fn: (child: ReactChild, index: number) => T): T[]; 2317 forEach(children: ReactNode, fn: (child: ReactChild, index: number) => any): void; 2318 count(children: ReactNode): number; 2319 only(children: ReactNode): ReactElement<any>; 2320 toArray(children: ReactNode): ReactChild[]; 2321 } 2322 2323 // 2324 // Browser Interfaces 2325 // https://github.com/nikeee/2048-typescript/blob/master/2048/js/touch.d.ts 2326 // ---------------------------------------------------------------------- 2327 2328 interface AbstractView { 2329 styleMedia: StyleMedia; 2330 document: Document; 2331 } 2332 2333 interface Touch { 2334 identifier: number; 2335 target: EventTarget; 2336 screenX: number; 2337 screenY: number; 2338 clientX: number; 2339 clientY: number; 2340 pageX: number; 2341 pageY: number; 2342 } 2343 2344 interface TouchList { 2345 [index: number]: Touch; 2346 length: number; 2347 item(index: number): Touch; 2348 identifiedTouch(identifier: number): Touch; 2349 } 2350} 2351 2352declare module "react" { 2353 export = __React; 2354} 2355 2356declare namespace JSX { 2357 import React = __React; 2358 2359 interface Element extends React.ReactElement<any> { } 2360 interface ElementClass extends React.Component<any, any> { 2361 render(): JSX.Element | null; 2362 } 2363 interface ElementAttributesProperty { props: any; } 2364 2365 interface ElementChildrenAttribute { children: any; } 2366 2367 interface IntrinsicAttributes extends React.Attributes { } 2368 2369 interface IntrinsicClassAttributes<T> extends React.ClassAttributes<T> { } 2370 2371 interface IntrinsicElements { 2372 // HTML 2373 a: React.HTMLProps<HTMLAnchorElement>; 2374 abbr: React.HTMLProps<HTMLElement>; 2375 address: React.HTMLProps<HTMLElement>; 2376 area: React.HTMLProps<HTMLAreaElement>; 2377 article: React.HTMLProps<HTMLElement>; 2378 aside: React.HTMLProps<HTMLElement>; 2379 audio: React.HTMLProps<HTMLAudioElement>; 2380 b: React.HTMLProps<HTMLElement>; 2381 base: React.HTMLProps<HTMLBaseElement>; 2382 bdi: React.HTMLProps<HTMLElement>; 2383 bdo: React.HTMLProps<HTMLElement>; 2384 big: React.HTMLProps<HTMLElement>; 2385 blockquote: React.HTMLProps<HTMLElement>; 2386 body: React.HTMLProps<HTMLBodyElement>; 2387 br: React.HTMLProps<HTMLBRElement>; 2388 button: React.HTMLProps<HTMLButtonElement>; 2389 canvas: React.HTMLProps<HTMLCanvasElement>; 2390 caption: React.HTMLProps<HTMLElement>; 2391 cite: React.HTMLProps<HTMLElement>; 2392 code: React.HTMLProps<HTMLElement>; 2393 col: React.HTMLProps<HTMLTableColElement>; 2394 colgroup: React.HTMLProps<HTMLTableColElement>; 2395 data: React.HTMLProps<HTMLElement>; 2396 datalist: React.HTMLProps<HTMLDataListElement>; 2397 dd: React.HTMLProps<HTMLElement>; 2398 del: React.HTMLProps<HTMLElement>; 2399 details: React.HTMLProps<HTMLElement>; 2400 dfn: React.HTMLProps<HTMLElement>; 2401 dialog: React.HTMLProps<HTMLElement>; 2402 div: React.HTMLProps<HTMLDivElement>; 2403 dl: React.HTMLProps<HTMLDListElement>; 2404 dt: React.HTMLProps<HTMLElement>; 2405 em: React.HTMLProps<HTMLElement>; 2406 embed: React.HTMLProps<HTMLEmbedElement>; 2407 fieldset: React.HTMLProps<HTMLFieldSetElement>; 2408 figcaption: React.HTMLProps<HTMLElement>; 2409 figure: React.HTMLProps<HTMLElement>; 2410 footer: React.HTMLProps<HTMLElement>; 2411 form: React.HTMLProps<HTMLFormElement>; 2412 h1: React.HTMLProps<HTMLHeadingElement>; 2413 h2: React.HTMLProps<HTMLHeadingElement>; 2414 h3: React.HTMLProps<HTMLHeadingElement>; 2415 h4: React.HTMLProps<HTMLHeadingElement>; 2416 h5: React.HTMLProps<HTMLHeadingElement>; 2417 h6: React.HTMLProps<HTMLHeadingElement>; 2418 head: React.HTMLProps<HTMLHeadElement>; 2419 header: React.HTMLProps<HTMLElement>; 2420 hr: React.HTMLProps<HTMLHRElement>; 2421 html: React.HTMLProps<HTMLHtmlElement>; 2422 i: React.HTMLProps<HTMLElement>; 2423 iframe: React.HTMLProps<HTMLIFrameElement>; 2424 img: React.HTMLProps<HTMLImageElement>; 2425 input: React.HTMLProps<HTMLInputElement>; 2426 ins: React.HTMLProps<HTMLModElement>; 2427 kbd: React.HTMLProps<HTMLElement>; 2428 keygen: React.HTMLProps<HTMLElement>; 2429 label: React.HTMLProps<HTMLLabelElement>; 2430 legend: React.HTMLProps<HTMLLegendElement>; 2431 li: React.HTMLProps<HTMLLIElement>; 2432 link: React.HTMLProps<HTMLLinkElement>; 2433 main: React.HTMLProps<HTMLElement>; 2434 map: React.HTMLProps<HTMLMapElement>; 2435 mark: React.HTMLProps<HTMLElement>; 2436 menu: React.HTMLProps<HTMLElement>; 2437 menuitem: React.HTMLProps<HTMLElement>; 2438 meta: React.HTMLProps<HTMLMetaElement>; 2439 meter: React.HTMLProps<HTMLElement>; 2440 nav: React.HTMLProps<HTMLElement>; 2441 noscript: React.HTMLProps<HTMLElement>; 2442 object: React.HTMLProps<HTMLObjectElement>; 2443 ol: React.HTMLProps<HTMLOListElement>; 2444 optgroup: React.HTMLProps<HTMLOptGroupElement>; 2445 option: React.HTMLProps<HTMLOptionElement>; 2446 output: React.HTMLProps<HTMLElement>; 2447 p: React.HTMLProps<HTMLParagraphElement>; 2448 param: React.HTMLProps<HTMLParamElement>; 2449 picture: React.HTMLProps<HTMLElement>; 2450 pre: React.HTMLProps<HTMLPreElement>; 2451 progress: React.HTMLProps<HTMLProgressElement>; 2452 q: React.HTMLProps<HTMLQuoteElement>; 2453 rp: React.HTMLProps<HTMLElement>; 2454 rt: React.HTMLProps<HTMLElement>; 2455 ruby: React.HTMLProps<HTMLElement>; 2456 s: React.HTMLProps<HTMLElement>; 2457 samp: React.HTMLProps<HTMLElement>; 2458 script: React.HTMLProps<HTMLElement>; 2459 section: React.HTMLProps<HTMLElement>; 2460 select: React.HTMLProps<HTMLSelectElement>; 2461 small: React.HTMLProps<HTMLElement>; 2462 source: React.HTMLProps<HTMLSourceElement>; 2463 span: React.HTMLProps<HTMLSpanElement>; 2464 strong: React.HTMLProps<HTMLElement>; 2465 style: React.HTMLProps<HTMLStyleElement>; 2466 sub: React.HTMLProps<HTMLElement>; 2467 summary: React.HTMLProps<HTMLElement>; 2468 sup: React.HTMLProps<HTMLElement>; 2469 table: React.HTMLProps<HTMLTableElement>; 2470 tbody: React.HTMLProps<HTMLTableSectionElement>; 2471 td: React.HTMLProps<HTMLTableDataCellElement>; 2472 textarea: React.HTMLProps<HTMLTextAreaElement>; 2473 tfoot: React.HTMLProps<HTMLTableSectionElement>; 2474 th: React.HTMLProps<HTMLTableHeaderCellElement>; 2475 thead: React.HTMLProps<HTMLTableSectionElement>; 2476 time: React.HTMLProps<HTMLElement>; 2477 title: React.HTMLProps<HTMLTitleElement>; 2478 tr: React.HTMLProps<HTMLTableRowElement>; 2479 track: React.HTMLProps<HTMLTrackElement>; 2480 u: React.HTMLProps<HTMLElement>; 2481 ul: React.HTMLProps<HTMLUListElement>; 2482 "var": React.HTMLProps<HTMLElement>; 2483 video: React.HTMLProps<HTMLVideoElement>; 2484 wbr: React.HTMLProps<HTMLElement>; 2485 2486 // SVG 2487 svg: React.SVGProps; 2488 2489 circle: React.SVGProps; 2490 defs: React.SVGProps; 2491 ellipse: React.SVGProps; 2492 g: React.SVGProps; 2493 image: React.SVGProps; 2494 line: React.SVGProps; 2495 linearGradient: React.SVGProps; 2496 mask: React.SVGProps; 2497 path: React.SVGProps; 2498 pattern: React.SVGProps; 2499 polygon: React.SVGProps; 2500 polyline: React.SVGProps; 2501 radialGradient: React.SVGProps; 2502 rect: React.SVGProps; 2503 stop: React.SVGProps; 2504 text: React.SVGProps; 2505 tspan: React.SVGProps; 2506 } 2507} 2508