UNPKG

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