@artsy/fresnel
Version:
An SSR compatible approach to CSS media query based responsive layouts for React.
73 lines (72 loc) • 3.69 kB
TypeScript
/**
* TODO: This is the deprecated runtime media-query component from Reaction.
* It can probably be simplified somewhat if we’re not going to be using
* it directly any longer.
*/
import React from "react";
/** TODO */
export declare type MediaQueries<M extends string = string> = {
[K in M]: string;
};
/** TODO */
export interface MediaQueryMatchers {
[key: string]: MediaQueryList;
}
/** TODO */
export declare type MediaQueryMatches<M extends string = string> = {
[K in M]: boolean;
};
/** TODO */
export interface ResponsiveProviderProps<M extends string> {
mediaQueries: MediaQueries<M>;
initialMatchingMediaQueries?: M[];
children: React.ReactNode;
}
/** TODO */
export interface ResponsiveProviderState {
mediaQueryMatchers?: MediaQueryMatchers;
mediaQueryMatches: MediaQueryMatches;
}
/** TODO */
export declare function createResponsiveComponents<M extends string>(): {
Consumer: React.FunctionComponent<React.ConsumerProps<MediaQueryMatches<M>>>;
Provider: {
new (props: ResponsiveProviderProps<M>): {
isSupportedEnvironment: () => boolean;
/**
* Create an array of media matchers that can validate each media query
*/
setupMatchers: (mediaQueries: MediaQueries) => MediaQueryMatchers;
/**
* Uses the matchers to build a map of the states of each media query
*/
checkMatchers: (mediaQueryMatchers: MediaQueryMatchers) => MediaQueryMatches;
/**
* The function that will be called any time a media query status changes
*/
mediaQueryStatusChangedCallback: () => void;
componentDidMount(): void;
componentWillUnmount(): void;
shouldComponentUpdate(nextProps: Readonly<ResponsiveProviderProps<M>>, nextState: Readonly<ResponsiveProviderState>): boolean;
render(): JSX.Element;
context: unknown;
setState<K extends keyof ResponsiveProviderState>(state: ResponsiveProviderState | ((prevState: Readonly<ResponsiveProviderState>, props: Readonly<ResponsiveProviderProps<M>>) => ResponsiveProviderState | Pick<ResponsiveProviderState, K> | null) | Pick<ResponsiveProviderState, K> | null, callback?: (() => void) | undefined): void;
forceUpdate(callback?: (() => void) | undefined): void;
readonly props: Readonly<ResponsiveProviderProps<M>>;
state: Readonly<ResponsiveProviderState>;
refs: {
[key: string]: React.ReactInstance;
};
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
getSnapshotBeforeUpdate?(prevProps: Readonly<ResponsiveProviderProps<M>>, prevState: Readonly<ResponsiveProviderState>): any;
componentDidUpdate?(prevProps: Readonly<ResponsiveProviderProps<M>>, prevState: Readonly<ResponsiveProviderState>, snapshot?: any): void;
componentWillMount?(): void;
UNSAFE_componentWillMount?(): void;
componentWillReceiveProps?(nextProps: Readonly<ResponsiveProviderProps<M>>, nextContext: any): void;
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ResponsiveProviderProps<M>>, nextContext: any): void;
componentWillUpdate?(nextProps: Readonly<ResponsiveProviderProps<M>>, nextState: Readonly<ResponsiveProviderState>, nextContext: any): void;
UNSAFE_componentWillUpdate?(nextProps: Readonly<ResponsiveProviderProps<M>>, nextState: Readonly<ResponsiveProviderState>, nextContext: any): void;
};
contextType?: React.Context<any> | undefined;
};
};