UNPKG

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