@prismicio/react 2.9.2 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -11
- package/dist/PrismicImage.d.ts +18 -633
- package/dist/PrismicImage.js +32 -33
- package/dist/PrismicImage.js.map +1 -1
- package/dist/PrismicLink.d.ts +77 -6
- package/dist/PrismicLink.js +42 -7
- package/dist/PrismicLink.js.map +1 -1
- package/dist/PrismicRichText.d.ts +117 -4
- package/dist/PrismicRichText.js +74 -8
- package/dist/PrismicRichText.js.map +1 -1
- package/dist/PrismicText.d.ts +9 -14
- package/dist/PrismicText.js +13 -14
- package/dist/PrismicText.js.map +1 -1
- package/dist/PrismicToolbar.d.ts +3 -12
- package/dist/PrismicToolbar.js +7 -9
- package/dist/PrismicToolbar.js.map +1 -1
- package/dist/SliceZone.d.ts +16 -70
- package/dist/SliceZone.js +17 -38
- package/dist/SliceZone.js.map +1 -1
- package/dist/index.d.ts +13 -21
- package/dist/index.js +2 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/devMsg.d.ts +2 -2
- package/dist/lib/devMsg.js +2 -2
- package/dist/lib/devMsg.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/package.json +54 -71
- package/src/PrismicImage.tsx +80 -65
- package/src/PrismicLink.tsx +196 -26
- package/src/PrismicRichText.tsx +333 -32
- package/src/PrismicText.tsx +25 -31
- package/src/PrismicToolbar.tsx +9 -29
- package/src/SliceZone.tsx +59 -151
- package/src/index.ts +17 -53
- package/src/lib/devMsg.ts +3 -3
- package/dist/PrismicImage.cjs +0 -68
- package/dist/PrismicImage.cjs.map +0 -1
- package/dist/PrismicLink.cjs +0 -29
- package/dist/PrismicLink.cjs.map +0 -1
- package/dist/PrismicProvider.cjs +0 -41
- package/dist/PrismicProvider.cjs.map +0 -1
- package/dist/PrismicProvider.d.ts +0 -83
- package/dist/PrismicProvider.js +0 -24
- package/dist/PrismicProvider.js.map +0 -1
- package/dist/PrismicRichText.cjs +0 -30
- package/dist/PrismicRichText.cjs.map +0 -1
- package/dist/PrismicText.cjs +0 -44
- package/dist/PrismicText.cjs.map +0 -1
- package/dist/PrismicToolbar.cjs +0 -43
- package/dist/PrismicToolbar.cjs.map +0 -1
- package/dist/SliceZone.cjs +0 -53
- package/dist/SliceZone.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/errors/PrismicError.cjs +0 -16
- package/dist/_node_modules/@prismicio/client/dist/errors/PrismicError.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/errors/PrismicError.js +0 -16
- package/dist/_node_modules/@prismicio/client/dist/errors/PrismicError.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/getToolbarSrc.cjs +0 -13
- package/dist/_node_modules/@prismicio/client/dist/getToolbarSrc.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/getToolbarSrc.js +0 -13
- package/dist/_node_modules/@prismicio/client/dist/getToolbarSrc.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImagePixelDensitySrcSet.cjs +0 -22
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImagePixelDensitySrcSet.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImagePixelDensitySrcSet.js +0 -22
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImagePixelDensitySrcSet.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImageWidthSrcSet.cjs +0 -46
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImageWidthSrcSet.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImageWidthSrcSet.js +0 -46
- package/dist/_node_modules/@prismicio/client/dist/helpers/asImageWidthSrcSet.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLink.cjs +0 -47
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLink.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLink.js +0 -47
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLink.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLinkAttrs.cjs +0 -28
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLinkAttrs.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLinkAttrs.js +0 -28
- package/dist/_node_modules/@prismicio/client/dist/helpers/asLinkAttrs.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asText.cjs +0 -21
- package/dist/_node_modules/@prismicio/client/dist/helpers/asText.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/asText.js +0 -21
- package/dist/_node_modules/@prismicio/client/dist/helpers/asText.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/documentToLinkField.cjs +0 -27
- package/dist/_node_modules/@prismicio/client/dist/helpers/documentToLinkField.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/documentToLinkField.js +0 -27
- package/dist/_node_modules/@prismicio/client/dist/helpers/documentToLinkField.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/isFilled.cjs +0 -24
- package/dist/_node_modules/@prismicio/client/dist/helpers/isFilled.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/helpers/isFilled.js +0 -24
- package/dist/_node_modules/@prismicio/client/dist/helpers/isFilled.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/isRepositoryName.cjs +0 -7
- package/dist/_node_modules/@prismicio/client/dist/isRepositoryName.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/isRepositoryName.js +0 -7
- package/dist/_node_modules/@prismicio/client/dist/isRepositoryName.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/lib/isInternalURL.cjs +0 -9
- package/dist/_node_modules/@prismicio/client/dist/lib/isInternalURL.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/lib/isInternalURL.js +0 -9
- package/dist/_node_modules/@prismicio/client/dist/lib/isInternalURL.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/richtext/asText.cjs +0 -13
- package/dist/_node_modules/@prismicio/client/dist/richtext/asText.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/richtext/asText.js +0 -13
- package/dist/_node_modules/@prismicio/client/dist/richtext/asText.js.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/types/value/link.cjs +0 -10
- package/dist/_node_modules/@prismicio/client/dist/types/value/link.cjs.map +0 -1
- package/dist/_node_modules/@prismicio/client/dist/types/value/link.js +0 -10
- package/dist/_node_modules/@prismicio/client/dist/types/value/link.js.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildPixelDensitySrcSet.cjs +0 -10
- package/dist/_node_modules/imgix-url-builder/dist/buildPixelDensitySrcSet.cjs.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildPixelDensitySrcSet.js +0 -10
- package/dist/_node_modules/imgix-url-builder/dist/buildPixelDensitySrcSet.js.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildURL.cjs +0 -29
- package/dist/_node_modules/imgix-url-builder/dist/buildURL.cjs.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildURL.js +0 -29
- package/dist/_node_modules/imgix-url-builder/dist/buildURL.js.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildWidthSrcSet.cjs +0 -10
- package/dist/_node_modules/imgix-url-builder/dist/buildWidthSrcSet.cjs.map +0 -1
- package/dist/_node_modules/imgix-url-builder/dist/buildWidthSrcSet.js +0 -10
- package/dist/_node_modules/imgix-url-builder/dist/buildWidthSrcSet.js.map +0 -1
- package/dist/clientHooks.cjs +0 -40
- package/dist/clientHooks.cjs.map +0 -1
- package/dist/clientHooks.d.ts +0 -321
- package/dist/clientHooks.js +0 -40
- package/dist/clientHooks.js.map +0 -1
- package/dist/index.cjs +0 -48
- package/dist/index.cjs.map +0 -1
- package/dist/lib/devMsg.cjs +0 -8
- package/dist/lib/devMsg.cjs.map +0 -1
- package/dist/lib/isInternalURL.cjs +0 -9
- package/dist/lib/isInternalURL.cjs.map +0 -1
- package/dist/lib/isInternalURL.d.ts +0 -8
- package/dist/lib/isInternalURL.js +0 -9
- package/dist/lib/isInternalURL.js.map +0 -1
- package/dist/lib/pascalCase.cjs +0 -10
- package/dist/lib/pascalCase.cjs.map +0 -1
- package/dist/lib/pascalCase.d.ts +0 -26
- package/dist/lib/pascalCase.js +0 -10
- package/dist/lib/pascalCase.js.map +0 -1
- package/dist/package.json.cjs +0 -5
- package/dist/package.json.cjs.map +0 -1
- package/dist/react-server/PrismicLink.cjs +0 -59
- package/dist/react-server/PrismicLink.cjs.map +0 -1
- package/dist/react-server/PrismicLink.d.ts +0 -77
- package/dist/react-server/PrismicLink.js +0 -42
- package/dist/react-server/PrismicLink.js.map +0 -1
- package/dist/react-server/PrismicRichText.cjs +0 -102
- package/dist/react-server/PrismicRichText.cjs.map +0 -1
- package/dist/react-server/PrismicRichText.d.ts +0 -104
- package/dist/react-server/PrismicRichText.js +0 -84
- package/dist/react-server/PrismicRichText.js.map +0 -1
- package/dist/react-server/index.d.ts +0 -4
- package/dist/react-server/unsupported.cjs +0 -97
- package/dist/react-server/unsupported.cjs.map +0 -1
- package/dist/react-server/unsupported.d.ts +0 -22
- package/dist/react-server/unsupported.js +0 -97
- package/dist/react-server/unsupported.js.map +0 -1
- package/dist/react-server.cjs +0 -44
- package/dist/react-server.cjs.map +0 -1
- package/dist/react-server.js +0 -41
- package/dist/react-server.js.map +0 -1
- package/dist/types.d.ts +0 -19
- package/dist/usePrismicClient.cjs +0 -13
- package/dist/usePrismicClient.cjs.map +0 -1
- package/dist/usePrismicClient.d.ts +0 -11
- package/dist/usePrismicClient.js +0 -13
- package/dist/usePrismicClient.js.map +0 -1
- package/dist/usePrismicContext.cjs +0 -26
- package/dist/usePrismicContext.cjs.map +0 -1
- package/dist/usePrismicContext.d.ts +0 -8
- package/dist/usePrismicContext.js +0 -9
- package/dist/usePrismicContext.js.map +0 -1
- package/dist/usePrismicPreviewResolver.cjs +0 -44
- package/dist/usePrismicPreviewResolver.cjs.map +0 -1
- package/dist/usePrismicPreviewResolver.d.ts +0 -45
- package/dist/usePrismicPreviewResolver.js +0 -27
- package/dist/usePrismicPreviewResolver.js.map +0 -1
- package/dist/useStatefulPrismicClientMethod.cjs +0 -91
- package/dist/useStatefulPrismicClientMethod.cjs.map +0 -1
- package/dist/useStatefulPrismicClientMethod.d.ts +0 -44
- package/dist/useStatefulPrismicClientMethod.js +0 -74
- package/dist/useStatefulPrismicClientMethod.js.map +0 -1
- package/src/PrismicProvider.tsx +0 -132
- package/src/clientHooks.ts +0 -472
- package/src/lib/isInternalURL.ts +0 -14
- package/src/lib/pascalCase.ts +0 -79
- package/src/react-server/PrismicLink.tsx +0 -197
- package/src/react-server/PrismicRichText.tsx +0 -326
- package/src/react-server/index.ts +0 -38
- package/src/react-server/unsupported.ts +0 -184
- package/src/types.ts +0 -24
- package/src/usePrismicClient.ts +0 -30
- package/src/usePrismicContext.ts +0 -13
- package/src/usePrismicPreviewResolver.ts +0 -93
- package/src/useStatefulPrismicClientMethod.ts +0 -196
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
// Exports in this file are unsupported in the react-server environment.
|
|
2
|
-
// All environments should export the same functions to maintian API compatability.
|
|
3
|
-
|
|
4
|
-
function buildIncompatibleInServerComponentsErrorMessage(fnName: string) {
|
|
5
|
-
return `${fnName} is not supported in Server Components. Remove ${fnName} in Server Components or add the "use client" directive to the component using ${fnName}.`;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
function buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
9
|
-
fnName: string,
|
|
10
|
-
) {
|
|
11
|
-
return `${fnName} is not supported in Server Components. Replace ${fnName} in Server Components with direct use of \`@prismicio/client\` (recommended) or add the "use client" directive to the component using the hook.`;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function PrismicProvider(): React.JSX.Element {
|
|
15
|
-
throw new Error(
|
|
16
|
-
buildIncompatibleInServerComponentsErrorMessage("<PrismicProvider>"),
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function usePrismicContext() {
|
|
21
|
-
throw new Error(
|
|
22
|
-
buildIncompatibleInServerComponentsErrorMessage("usePrismicContext()"),
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function usePrismicClient() {
|
|
27
|
-
throw new Error(
|
|
28
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
29
|
-
"usePrismicClient()",
|
|
30
|
-
),
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function usePrismicPreviewResolver() {
|
|
35
|
-
throw new Error(
|
|
36
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
37
|
-
"usePrismicPreviewResolver()",
|
|
38
|
-
),
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function useAllPrismicDocumentsDangerously() {
|
|
43
|
-
throw new Error(
|
|
44
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
45
|
-
"useAllPrismicDocumentsDangerously()",
|
|
46
|
-
),
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function useAllPrismicDocumentsByEveryTag() {
|
|
51
|
-
throw new Error(
|
|
52
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
53
|
-
"useAllPrismicDocumentsByEveryTag()",
|
|
54
|
-
),
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function useAllPrismicDocumentsByIDs() {
|
|
59
|
-
throw new Error(
|
|
60
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
61
|
-
"useAllPrismicDocumentsByIDs()",
|
|
62
|
-
),
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export function useAllPrismicDocumentsBySomeTags() {
|
|
67
|
-
throw new Error(
|
|
68
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
69
|
-
"useAllPrismicDocumentsBySomeTags()",
|
|
70
|
-
),
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function useAllPrismicDocumentsByTag() {
|
|
75
|
-
throw new Error(
|
|
76
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
77
|
-
"useAllPrismicDocumentsByTag()",
|
|
78
|
-
),
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export function useAllPrismicDocumentsByType() {
|
|
83
|
-
throw new Error(
|
|
84
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
85
|
-
"useAllPrismicDocumentsByType()",
|
|
86
|
-
),
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export function useAllPrismicDocumentsByUIDs() {
|
|
91
|
-
throw new Error(
|
|
92
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
93
|
-
"useAllPrismicDocumentsByUIDs()",
|
|
94
|
-
),
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export function useFirstPrismicDocument() {
|
|
99
|
-
throw new Error(
|
|
100
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
101
|
-
"useFirstPrismicDocument()",
|
|
102
|
-
),
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function usePrismicDocumentByID() {
|
|
107
|
-
throw new Error(
|
|
108
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
109
|
-
"usePrismicDocumentByID()",
|
|
110
|
-
),
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export function usePrismicDocumentByUID() {
|
|
115
|
-
throw new Error(
|
|
116
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
117
|
-
"usePrismicDocumentByUID()",
|
|
118
|
-
),
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export function usePrismicDocuments() {
|
|
123
|
-
throw new Error(
|
|
124
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
125
|
-
"usePrismicDocuments()",
|
|
126
|
-
),
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export function usePrismicDocumentsByEveryTag() {
|
|
131
|
-
throw new Error(
|
|
132
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
133
|
-
"usePrismicDocumentsByEveryTag()",
|
|
134
|
-
),
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export function usePrismicDocumentsByIDs() {
|
|
139
|
-
throw new Error(
|
|
140
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
141
|
-
"usePrismicDocumentsByIDs()",
|
|
142
|
-
),
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export function usePrismicDocumentsBySomeTags() {
|
|
147
|
-
throw new Error(
|
|
148
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
149
|
-
"usePrismicDocumentsBySomeTags()",
|
|
150
|
-
),
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export function usePrismicDocumentsByTag() {
|
|
155
|
-
throw new Error(
|
|
156
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
157
|
-
"usePrismicDocumentsByTag()",
|
|
158
|
-
),
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
export function usePrismicDocumentsByType() {
|
|
163
|
-
throw new Error(
|
|
164
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
165
|
-
"usePrismicDocumentsByType()",
|
|
166
|
-
),
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export function usePrismicDocumentsByUIDs() {
|
|
171
|
-
throw new Error(
|
|
172
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
173
|
-
"usePrismicDocumentsByUIDs()",
|
|
174
|
-
),
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export function useSinglePrismicDocument() {
|
|
179
|
-
throw new Error(
|
|
180
|
-
buildIncompatibleQueryHookInServerComponentsErrorMessage(
|
|
181
|
-
"useSinglePrismicDocument()",
|
|
182
|
-
),
|
|
183
|
-
);
|
|
184
|
-
}
|
package/src/types.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import * as prismicR from "@prismicio/richtext";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A function mapping Rich Text block types to React Components. It is used to
|
|
5
|
-
* render Rich Text or Title fields.
|
|
6
|
-
*
|
|
7
|
-
* @see Templating rich text and title fields from Prismic {@link https://prismic.io/docs/technologies/templating-rich-text-and-title-fields-javascript}
|
|
8
|
-
*/
|
|
9
|
-
export type JSXFunctionSerializer =
|
|
10
|
-
prismicR.RichTextFunctionSerializer<React.JSX.Element>;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* A map of Rich Text block types to React Components. It is used to render Rich
|
|
14
|
-
* Text or Title fields.
|
|
15
|
-
*
|
|
16
|
-
* @see Templating Rich Text and Title fields from Prismic {@link https://prismic.io/docs/technologies/templating-rich-text-and-title-fields-javascript}
|
|
17
|
-
*/
|
|
18
|
-
export type JSXMapSerializer =
|
|
19
|
-
prismicR.RichTextMapSerializer<React.JSX.Element>;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* States of a `@prismicio/client` hook.
|
|
23
|
-
*/
|
|
24
|
-
export type PrismicClientHookState = "idle" | "loading" | "loaded" | "failed";
|
package/src/usePrismicClient.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type * as prismic from "@prismicio/client";
|
|
2
|
-
|
|
3
|
-
import { usePrismicContext } from "./usePrismicContext";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Retrieve the `@prismicio/client` instance provided to `<PrismicProvider>`
|
|
7
|
-
* higher in the React tree.
|
|
8
|
-
*
|
|
9
|
-
* @param explicitClient - An optional `@prismicio/client` instance to override
|
|
10
|
-
* the Client provided to `<PrismicProvider>`.
|
|
11
|
-
*
|
|
12
|
-
* @returns The `@prismicio/client` instance provided to `<PrismicProvider>`.
|
|
13
|
-
*/
|
|
14
|
-
export const usePrismicClient = <
|
|
15
|
-
TDocuments extends prismic.PrismicDocument = prismic.PrismicDocument,
|
|
16
|
-
>(
|
|
17
|
-
explicitClient?: prismic.Client<TDocuments>,
|
|
18
|
-
): prismic.Client<TDocuments> => {
|
|
19
|
-
const context = usePrismicContext();
|
|
20
|
-
|
|
21
|
-
const client = explicitClient || context?.client;
|
|
22
|
-
|
|
23
|
-
if (!client) {
|
|
24
|
-
throw new Error(
|
|
25
|
-
"A @prismicio/client is required to query documents. Provide a client to the hook or to a <PrismicProvider> higher in your component tree.",
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return client;
|
|
30
|
-
};
|
package/src/usePrismicContext.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import { PrismicContext, PrismicContextValue } from "./PrismicProvider";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* React hook used to read shared configuration for `@prismicio/react`
|
|
7
|
-
* components and hooks.
|
|
8
|
-
*
|
|
9
|
-
* @returns The closest `<PrismicProvider>` context value.
|
|
10
|
-
*/
|
|
11
|
-
export const usePrismicContext = (): PrismicContextValue => {
|
|
12
|
-
return React.useContext(PrismicContext) || {};
|
|
13
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import type * as prismic from "@prismicio/client";
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
|
|
5
|
-
import { usePrismicContext } from "./usePrismicContext";
|
|
6
|
-
import {
|
|
7
|
-
ClientHookReturnType,
|
|
8
|
-
useStatefulPrismicClientMethod,
|
|
9
|
-
} from "./useStatefulPrismicClientMethod";
|
|
10
|
-
|
|
11
|
-
export type UsePrismicPreviewResolverArgs = {
|
|
12
|
-
/**
|
|
13
|
-
* An optional `@prismicio/client` instance to override the Client provided to
|
|
14
|
-
* `<PrismicProvider>`
|
|
15
|
-
*/
|
|
16
|
-
client?: prismic.Client;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* A function that maps a Prismic document to a URL within your app.
|
|
20
|
-
*/
|
|
21
|
-
linkResolver?: Parameters<
|
|
22
|
-
prismic.Client["resolvePreviewURL"]
|
|
23
|
-
>[0]["linkResolver"];
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* A fallback URL if the Link Resolver does not return a value.
|
|
27
|
-
*/
|
|
28
|
-
defaultURL?: Parameters<prismic.Client["resolvePreviewURL"]>[0]["defaultURL"];
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* The preview token (also known as a ref) that will be used to query preview
|
|
32
|
-
* content from the Prismic repository.
|
|
33
|
-
*/
|
|
34
|
-
previewToken?: Parameters<
|
|
35
|
-
prismic.Client["resolvePreviewURL"]
|
|
36
|
-
>[0]["previewToken"];
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The previewed document that will be used to determine the destination URL.
|
|
40
|
-
*/
|
|
41
|
-
documentID?: Parameters<prismic.Client["resolvePreviewURL"]>[0]["documentID"];
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* A function to automatically navigate to the resolved URL. If a function is
|
|
45
|
-
* not provded, `usePreviewResolver` will not navigate to the URL.
|
|
46
|
-
*
|
|
47
|
-
* @param url - The resolved preview URL.
|
|
48
|
-
*/
|
|
49
|
-
navigate?: (url: string) => unknown;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Resolve a preview session's URL. The resolved URL can be used to redirect to
|
|
54
|
-
* the previewed document.
|
|
55
|
-
*
|
|
56
|
-
* If a `navigate` function is provided, the hook will automatically navigate to
|
|
57
|
-
* the previewed document's URL.
|
|
58
|
-
*
|
|
59
|
-
* @param args - Arguments to configure how a URL is resolved.
|
|
60
|
-
*
|
|
61
|
-
* @returns A tuple containing the resolved URL and the hook's state.
|
|
62
|
-
*/
|
|
63
|
-
export const usePrismicPreviewResolver = (
|
|
64
|
-
args: UsePrismicPreviewResolverArgs = {},
|
|
65
|
-
): ClientHookReturnType<string> => {
|
|
66
|
-
const context = usePrismicContext();
|
|
67
|
-
|
|
68
|
-
const linkResolver = args.linkResolver || context.linkResolver;
|
|
69
|
-
|
|
70
|
-
const result = useStatefulPrismicClientMethod(
|
|
71
|
-
"resolvePreviewURL",
|
|
72
|
-
[
|
|
73
|
-
{
|
|
74
|
-
linkResolver,
|
|
75
|
-
defaultURL: args.defaultURL || "/",
|
|
76
|
-
previewToken: args.previewToken,
|
|
77
|
-
documentID: args.documentID,
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
args.client,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
const [resolvedURL] = result;
|
|
84
|
-
const { navigate } = args;
|
|
85
|
-
|
|
86
|
-
React.useEffect(() => {
|
|
87
|
-
if (resolvedURL && navigate) {
|
|
88
|
-
navigate(resolvedURL);
|
|
89
|
-
}
|
|
90
|
-
}, [resolvedURL, navigate]);
|
|
91
|
-
|
|
92
|
-
return result;
|
|
93
|
-
};
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import type * as prismic from "@prismicio/client";
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
|
|
5
|
-
import { PrismicClientHookState } from "./types";
|
|
6
|
-
import { usePrismicClient } from "./usePrismicClient";
|
|
7
|
-
|
|
8
|
-
type StateMachineState<TData> = {
|
|
9
|
-
state: PrismicClientHookState;
|
|
10
|
-
data?: TData;
|
|
11
|
-
error?: Error;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
type StateMachineAction<TData> =
|
|
15
|
-
| [type: "start"]
|
|
16
|
-
| [type: "succeed", payload: TData]
|
|
17
|
-
| [type: "fail", payload: Error];
|
|
18
|
-
|
|
19
|
-
const reducer = <TData>(
|
|
20
|
-
state: StateMachineState<TData>,
|
|
21
|
-
action: StateMachineAction<TData>,
|
|
22
|
-
): StateMachineState<TData> => {
|
|
23
|
-
switch (action[0]) {
|
|
24
|
-
case "start": {
|
|
25
|
-
return { state: "loading" };
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
case "succeed": {
|
|
29
|
-
return { state: "loaded", data: action[1] };
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
case "fail": {
|
|
33
|
-
return {
|
|
34
|
-
...state,
|
|
35
|
-
state: "failed",
|
|
36
|
-
error: action[1],
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const initialState: StateMachineState<never> = {
|
|
43
|
-
state: "idle",
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
|
|
47
|
-
|
|
48
|
-
type ClientPrototype = typeof prismic.Client.prototype;
|
|
49
|
-
|
|
50
|
-
type ClientMethod<MethodName extends keyof ClientPrototype> =
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
-
ClientPrototype[MethodName] extends (...args: any[]) => any
|
|
53
|
-
? ClientPrototype[MethodName]
|
|
54
|
-
: never;
|
|
55
|
-
|
|
56
|
-
type ClientMethodName = keyof {
|
|
57
|
-
[P in keyof prismic.Client as prismic.Client[P] extends (
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
-
...args: any[]
|
|
60
|
-
) => // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
-
Promise<any>
|
|
62
|
-
? P
|
|
63
|
-
: never]: unknown;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
export type ClientMethodParameters<MethodName extends keyof ClientPrototype> =
|
|
67
|
-
Parameters<ClientMethod<MethodName>>;
|
|
68
|
-
|
|
69
|
-
export type HookOnlyParameters = {
|
|
70
|
-
client?: prismic.Client;
|
|
71
|
-
skip?: boolean;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Determines if a value is a `@prismicio/client` params object.
|
|
76
|
-
*
|
|
77
|
-
* @param value - The value to check.
|
|
78
|
-
*
|
|
79
|
-
* @returns `true` if `value` is a `@prismicio/client` params object, `false`
|
|
80
|
-
* otherwise.
|
|
81
|
-
*/
|
|
82
|
-
const isParams = (
|
|
83
|
-
value: unknown,
|
|
84
|
-
): value is ClientMethodParameters<"get">[0] & HookOnlyParameters => {
|
|
85
|
-
// This is a *very* naive check.
|
|
86
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The return value of a `@prismicio/client` React hook.
|
|
91
|
-
*
|
|
92
|
-
* @typeParam TData - Data returned by the client.
|
|
93
|
-
*/
|
|
94
|
-
export type ClientHookReturnType<TData = unknown> = [
|
|
95
|
-
/**
|
|
96
|
-
* Data returned by the client.
|
|
97
|
-
*/
|
|
98
|
-
data: TData | undefined,
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* The current state of the hook's client method call.
|
|
102
|
-
*/
|
|
103
|
-
state: Pick<StateMachineState<TData>, "state" | "error">,
|
|
104
|
-
];
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Creates a React hook that forwards arguments to a specific method of a
|
|
108
|
-
* `@prismicio/client` instance. The created hook has its own internal state
|
|
109
|
-
* manager to report async status, such as pending or error statuses.
|
|
110
|
-
*
|
|
111
|
-
* @param methodName - The `@prismicio/client` method to which hook arguments
|
|
112
|
-
* will be forwarded.
|
|
113
|
-
*
|
|
114
|
-
* @returns A new React hook configured for the provided method.
|
|
115
|
-
*
|
|
116
|
-
* @internal
|
|
117
|
-
*/
|
|
118
|
-
export const useStatefulPrismicClientMethod = <
|
|
119
|
-
TMethodName extends ClientMethodName,
|
|
120
|
-
TArgs extends Parameters<ClientMethod<TMethodName>>,
|
|
121
|
-
TData extends UnwrapPromise<ReturnType<ClientMethod<TMethodName>>>,
|
|
122
|
-
>(
|
|
123
|
-
methodName: TMethodName,
|
|
124
|
-
args: TArgs,
|
|
125
|
-
explicitClient?: prismic.Client,
|
|
126
|
-
): ClientHookReturnType<TData> => {
|
|
127
|
-
const lastArg = args[args.length - 1];
|
|
128
|
-
const {
|
|
129
|
-
client: lastArgExplicitClient,
|
|
130
|
-
skip,
|
|
131
|
-
...params
|
|
132
|
-
} = isParams(lastArg) ? lastArg : ({} as HookOnlyParameters);
|
|
133
|
-
const argsWithoutParams = isParams(lastArg) ? args.slice(0, -1) : args;
|
|
134
|
-
|
|
135
|
-
const client = usePrismicClient(explicitClient || lastArgExplicitClient);
|
|
136
|
-
|
|
137
|
-
const [state, dispatch] = React.useReducer<
|
|
138
|
-
React.Reducer<StateMachineState<TData>, StateMachineAction<TData>>
|
|
139
|
-
>(reducer, initialState);
|
|
140
|
-
|
|
141
|
-
React.useEffect(
|
|
142
|
-
() => {
|
|
143
|
-
// Used to prevent dispatching an action if the hook was cleaned up.
|
|
144
|
-
let didCancel = false;
|
|
145
|
-
|
|
146
|
-
if (!skip) {
|
|
147
|
-
if (!didCancel) {
|
|
148
|
-
dispatch(["start"]);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// @ts-expect-error - Merging method arg types is too complex
|
|
152
|
-
client[methodName]
|
|
153
|
-
.call(client, ...argsWithoutParams, params)
|
|
154
|
-
.then((result) => {
|
|
155
|
-
if (!didCancel) {
|
|
156
|
-
dispatch(["succeed", result as TData]);
|
|
157
|
-
}
|
|
158
|
-
})
|
|
159
|
-
.catch((error) => {
|
|
160
|
-
if (!didCancel) {
|
|
161
|
-
dispatch(["fail", error]);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Ensure we don't dispatch an action if the hook is cleaned up.
|
|
167
|
-
() => {
|
|
168
|
-
didCancel = true;
|
|
169
|
-
};
|
|
170
|
-
},
|
|
171
|
-
// We must disable exhaustive-deps since we are using
|
|
172
|
-
// JSON.stringify on params (effectively a deep equality check).
|
|
173
|
-
// We want this effect to run again anytime params change.
|
|
174
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
175
|
-
[
|
|
176
|
-
client,
|
|
177
|
-
methodName,
|
|
178
|
-
skip,
|
|
179
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
180
|
-
JSON.stringify(argsWithoutParams),
|
|
181
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
182
|
-
JSON.stringify(params),
|
|
183
|
-
],
|
|
184
|
-
);
|
|
185
|
-
|
|
186
|
-
return React.useMemo(
|
|
187
|
-
() => [
|
|
188
|
-
state.data,
|
|
189
|
-
{
|
|
190
|
-
state: state.state,
|
|
191
|
-
error: state.error,
|
|
192
|
-
},
|
|
193
|
-
],
|
|
194
|
-
[state],
|
|
195
|
-
);
|
|
196
|
-
};
|