Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ui-component-library / typings / react.d.ts
Size: Mime:
/**
 * @see https://medium.com/@mtiller/react-16-3-context-api-intypescript-45c9eeb7a384
 */
import * as ReactBase from 'react'

declare module 'react' {
  interface StrictMode extends ReactBase.Fragment {}

  type Provider<T> = ReactBase.ComponentType<{
    value: T
    children?: ReactNode
  }>
  type Consumer<T> = ComponentType<{
    children: (value: T) => ReactNode
    unstable_observedBits?: number
  }>
  interface Context<T> {
    Provider: Provider<T>
    Consumer: Consumer<T>
  }
  function createContext<T>(
    defaultValue: T,
    calculateChangedBits?: (prev: T, next: T) => number
  ): Context<T>

  type RefObject<T> = {
    value: T | null
  }

  /**
   * @todo need to find how to extend typings
   * @todo @extends ComponentLifecycle
   */
  class Component<
  Props = React.Props,
  State = React.ComponentState,
  Refs = ReactBase.Ref
  > extends ReactBase.Component<Props, State, Refs> {
    static fetchData(): Promise<Object>
    static getDerivedStateFromProps(nextProps: Props, prevState: State): State
    getSnapshotBeforeUpdate(nextProps: Props, prevState: State): any
  }

  /**
   * @api https://github.com/reactjs/rfcs/blob/master/text/0017-new-create-ref.md
   */
  interface React extends ReactBase {
    createRef<T>(): RefObject<T>
    static StrictMode: StrictMode
  }
}

declare module 'react-dom' {
  function flushSync(onFlush: () => void): void {}
}