@types/react-helmet
Version:
TypeScript definitions for react-helmet
107 lines (89 loc) • 3.23 kB
TypeScript
// Type definitions for react-helmet 6.1
// Project: https://github.com/nfl/react-helmet
// Definitions by: Evan Bremer <https://github.com/evanbb>
// Isman Usoh <https://github.com/isman-usoh>
// Yui T. <https://github.com/yuit>
// Yamagishi Kazutoshi <https://github.com/ykzts>
// Justin Hall <https://github.com/wKovacs64>
// Andriy2 <https://github.com/Andriy2>
// Piotr Błażejewicz <https://github.com/peterblazejewicz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import * as React from "react";
interface OtherElementAttributes {
[key: string]: string | number | boolean | null | undefined;
}
type HtmlProps = JSX.IntrinsicElements["html"] & OtherElementAttributes;
type BodyProps = JSX.IntrinsicElements["body"] & OtherElementAttributes;
type LinkProps = JSX.IntrinsicElements["link"];
type MetaProps = JSX.IntrinsicElements["meta"];
export interface HelmetTags {
baseTag: any[];
linkTags: HTMLLinkElement[];
metaTags: HTMLMetaElement[];
noscriptTags: any[];
scriptTags: HTMLScriptElement[];
styleTags: HTMLStyleElement[];
}
export interface HelmetProps {
async?: boolean | undefined;
base?: any;
bodyAttributes?: BodyProps | undefined;
children?: React.ReactNode;
defaultTitle?: string | undefined;
defer?: boolean | undefined;
encodeSpecialCharacters?: boolean | undefined;
htmlAttributes?: HtmlProps | undefined;
onChangeClientState?: ((newState: any, addedTags: HelmetTags, removedTags: HelmetTags) => void) | undefined;
link?: LinkProps[] | undefined;
meta?: MetaProps[] | undefined;
noscript?: any[] | undefined;
script?: any[] | undefined;
style?: any[] | undefined;
title?: string | undefined;
titleAttributes?: object | undefined;
titleTemplate?: string | undefined;
}
/**
* Used by Helmet.peek()
*/
export type HelmetPropsToState = HelmetTags &
Pick<
HelmetProps,
"bodyAttributes" | "defer" | "htmlAttributes" | "onChangeClientState" | "title" | "titleAttributes"
> & {
encode: Required<HelmetProps["encodeSpecialCharacters"]>;
};
declare class Helmet extends React.Component<HelmetProps> {
static peek(): HelmetPropsToState;
static rewind(): HelmetData;
static renderStatic(): HelmetData;
static canUseDOM: boolean;
}
declare const HelmetExport: typeof Helmet;
export { HelmetExport as Helmet };
export default HelmetExport;
export interface HelmetData {
base: HelmetDatum;
bodyAttributes: HelmetHTMLBodyDatum;
htmlAttributes: HelmetHTMLElementDatum;
link: HelmetDatum;
meta: HelmetDatum;
noscript: HelmetDatum;
script: HelmetDatum;
style: HelmetDatum;
title: HelmetDatum;
titleAttributes: HelmetDatum;
}
export interface HelmetDatum {
toString(): string;
toComponent(): React.ReactElement;
}
export interface HelmetHTMLBodyDatum {
toString(): string;
toComponent(): React.HTMLAttributes<HTMLBodyElement>;
}
export interface HelmetHTMLElementDatum {
toString(): string;
toComponent(): React.HTMLAttributes<HTMLHtmlElement>;
}
export const canUseDOM: boolean;