UNPKG

3.23 kBTypeScriptView Raw
1// Type definitions for react-helmet 6.1
2// Project: https://github.com/nfl/react-helmet
3// Definitions by: Evan Bremer <https://github.com/evanbb>
4// Isman Usoh <https://github.com/isman-usoh>
5// Yui T. <https://github.com/yuit>
6// Yamagishi Kazutoshi <https://github.com/ykzts>
7// Justin Hall <https://github.com/wKovacs64>
8// Andriy2 <https://github.com/Andriy2>
9// Piotr Błażejewicz <https://github.com/peterblazejewicz>
10// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
11
12import * as React from "react";
13
14interface OtherElementAttributes {
15 [key: string]: string | number | boolean | null | undefined;
16}
17
18type HtmlProps = JSX.IntrinsicElements["html"] & OtherElementAttributes;
19
20type BodyProps = JSX.IntrinsicElements["body"] & OtherElementAttributes;
21
22type LinkProps = JSX.IntrinsicElements["link"];
23
24type MetaProps = JSX.IntrinsicElements["meta"];
25
26export interface HelmetTags {
27 baseTag: any[];
28 linkTags: HTMLLinkElement[];
29 metaTags: HTMLMetaElement[];
30 noscriptTags: any[];
31 scriptTags: HTMLScriptElement[];
32 styleTags: HTMLStyleElement[];
33}
34
35export interface HelmetProps {
36 async?: boolean | undefined;
37 base?: any;
38 bodyAttributes?: BodyProps | undefined;
39 children?: React.ReactNode;
40 defaultTitle?: string | undefined;
41 defer?: boolean | undefined;
42 encodeSpecialCharacters?: boolean | undefined;
43 htmlAttributes?: HtmlProps | undefined;
44 onChangeClientState?: ((newState: any, addedTags: HelmetTags, removedTags: HelmetTags) => void) | undefined;
45 link?: LinkProps[] | undefined;
46 meta?: MetaProps[] | undefined;
47 noscript?: any[] | undefined;
48 script?: any[] | undefined;
49 style?: any[] | undefined;
50 title?: string | undefined;
51 titleAttributes?: object | undefined;
52 titleTemplate?: string | undefined;
53}
54
55/**
56 * Used by Helmet.peek()
57 */
58export type HelmetPropsToState = HelmetTags &
59 Pick<
60 HelmetProps,
61 "bodyAttributes" | "defer" | "htmlAttributes" | "onChangeClientState" | "title" | "titleAttributes"
62 > & {
63 encode: Required<HelmetProps["encodeSpecialCharacters"]>;
64 };
65
66declare class Helmet extends React.Component<HelmetProps> {
67 static peek(): HelmetPropsToState;
68 static rewind(): HelmetData;
69 static renderStatic(): HelmetData;
70 static canUseDOM: boolean;
71}
72
73declare const HelmetExport: typeof Helmet;
74
75export { HelmetExport as Helmet };
76export default HelmetExport;
77
78export interface HelmetData {
79 base: HelmetDatum;
80 bodyAttributes: HelmetHTMLBodyDatum;
81 htmlAttributes: HelmetHTMLElementDatum;
82 link: HelmetDatum;
83 meta: HelmetDatum;
84 noscript: HelmetDatum;
85 script: HelmetDatum;
86 style: HelmetDatum;
87 title: HelmetDatum;
88 titleAttributes: HelmetDatum;
89}
90
91export interface HelmetDatum {
92 toString(): string;
93 toComponent(): React.ReactElement;
94}
95
96export interface HelmetHTMLBodyDatum {
97 toString(): string;
98 toComponent(): React.HTMLAttributes<HTMLBodyElement>;
99}
100
101export interface HelmetHTMLElementDatum {
102 toString(): string;
103 toComponent(): React.HTMLAttributes<HTMLHtmlElement>;
104}
105
106export const canUseDOM: boolean;
107
\No newline at end of file