@slicemachine/adapter-next 0.3.62-beta.2 → 0.3.62-beta.4
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/dist/hooks/documentation-read.cjs +60 -8
- package/dist/hooks/documentation-read.cjs.map +1 -1
- package/dist/hooks/documentation-read.js +60 -8
- package/dist/hooks/documentation-read.js.map +1 -1
- package/dist/hooks/snippet-read.cjs +19 -13
- package/dist/hooks/snippet-read.cjs.map +1 -1
- package/dist/hooks/snippet-read.js +19 -13
- package/dist/hooks/snippet-read.js.map +1 -1
- package/package.json +3 -3
- package/src/hooks/documentation-read.ts +60 -8
- package/src/hooks/snippet-read.ts +27 -12
|
@@ -20,6 +20,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
20
20
|
appFileContent = commonTags.stripIndent`
|
|
21
21
|
import { Metadata } from "next";
|
|
22
22
|
import { notFound } from "next/navigation";
|
|
23
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
23
24
|
import { SliceZone } from "@prismicio/react";
|
|
24
25
|
|
|
25
26
|
import { createClient } from "@/prismicio";
|
|
@@ -51,6 +52,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
51
52
|
return {
|
|
52
53
|
title: page.data.meta_title,
|
|
53
54
|
description: page.data.meta_description,
|
|
55
|
+
openGraph: {
|
|
56
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
57
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
58
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
59
|
+
},
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
62
|
|
|
@@ -66,7 +72,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
66
72
|
pagesFileContent = commonTags.stripIndent`
|
|
67
73
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
68
74
|
import Head from "next/head";
|
|
69
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
75
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
70
76
|
import { SliceZone } from "@prismicio/react";
|
|
71
77
|
|
|
72
78
|
import { components } from "@/slices";
|
|
@@ -81,8 +87,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
81
87
|
<>
|
|
82
88
|
<Head>
|
|
83
89
|
<title>{page.data.meta_title}</title>
|
|
90
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
84
91
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
85
|
-
|
|
92
|
+
<>
|
|
93
|
+
<meta name="description" content={page.data.meta_description} />
|
|
94
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
95
|
+
</>
|
|
96
|
+
) : null}
|
|
97
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
98
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
86
99
|
) : null}
|
|
87
100
|
</Head>
|
|
88
101
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -121,6 +134,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
121
134
|
} else {
|
|
122
135
|
appFileContent = commonTags.stripIndent`
|
|
123
136
|
import { Metadata } from "next";
|
|
137
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
124
138
|
import { SliceZone } from "@prismicio/react";
|
|
125
139
|
|
|
126
140
|
import { createClient } from "@/prismicio";
|
|
@@ -140,13 +154,18 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
140
154
|
return {
|
|
141
155
|
title: page.data.meta_title,
|
|
142
156
|
description: page.data.meta_description,
|
|
157
|
+
openGraph: {
|
|
158
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
159
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
160
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
161
|
+
},
|
|
143
162
|
};
|
|
144
163
|
}
|
|
145
164
|
`;
|
|
146
165
|
pagesFileContent = commonTags.stripIndent`
|
|
147
166
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
148
167
|
import Head from "next/head";
|
|
149
|
-
import { isFilled } from "@prismicio/client";
|
|
168
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
150
169
|
import { SliceZone } from "@prismicio/react";
|
|
151
170
|
|
|
152
171
|
import { components } from "@/slices";
|
|
@@ -159,8 +178,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
159
178
|
<>
|
|
160
179
|
<Head>
|
|
161
180
|
<title>{page.data.meta_title}</title>
|
|
181
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
162
182
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
163
|
-
|
|
183
|
+
<>
|
|
184
|
+
<meta name="description" content={page.data.meta_description} />
|
|
185
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
186
|
+
</>
|
|
187
|
+
) : null}
|
|
188
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
189
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
164
190
|
) : null}
|
|
165
191
|
</Head>
|
|
166
192
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -186,6 +212,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
186
212
|
if (model.repeatable) {
|
|
187
213
|
appFileContent = commonTags.stripIndent`
|
|
188
214
|
import { notFound } from "next/navigation";
|
|
215
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
189
216
|
import { SliceZone } from "@prismicio/react";
|
|
190
217
|
|
|
191
218
|
import { createClient } from "@/prismicio";
|
|
@@ -212,6 +239,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
212
239
|
return {
|
|
213
240
|
title: page.data.meta_title,
|
|
214
241
|
description: page.data.meta_description,
|
|
242
|
+
openGraph: {
|
|
243
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
244
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
245
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
246
|
+
},
|
|
215
247
|
};
|
|
216
248
|
}
|
|
217
249
|
|
|
@@ -226,7 +258,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
226
258
|
`;
|
|
227
259
|
pagesFileContent = commonTags.stripIndent`
|
|
228
260
|
import Head from "next/head";
|
|
229
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
261
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
230
262
|
import { SliceZone } from "@prismicio/react";
|
|
231
263
|
|
|
232
264
|
import { components } from "@/slices";
|
|
@@ -237,8 +269,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
237
269
|
<>
|
|
238
270
|
<Head>
|
|
239
271
|
<title>{page.data.meta_title}</title>
|
|
272
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
240
273
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
241
|
-
|
|
274
|
+
<>
|
|
275
|
+
<meta name="description" content={page.data.meta_description} />
|
|
276
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
277
|
+
</>
|
|
278
|
+
) : null}
|
|
279
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
280
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
242
281
|
) : null}
|
|
243
282
|
</Head>
|
|
244
283
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -276,6 +315,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
276
315
|
`;
|
|
277
316
|
} else {
|
|
278
317
|
appFileContent = commonTags.stripIndent`
|
|
318
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
279
319
|
import { SliceZone } from "@prismicio/react";
|
|
280
320
|
|
|
281
321
|
import { createClient } from "@/prismicio";
|
|
@@ -295,12 +335,17 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
295
335
|
return {
|
|
296
336
|
title: page.data.meta_title,
|
|
297
337
|
description: page.data.meta_description,
|
|
338
|
+
openGraph: {
|
|
339
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
340
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
341
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
342
|
+
},
|
|
298
343
|
};
|
|
299
344
|
}
|
|
300
345
|
`;
|
|
301
346
|
pagesFileContent = commonTags.stripIndent`
|
|
302
347
|
import Head from "next/head";
|
|
303
|
-
import { isFilled } from "@prismicio/client";
|
|
348
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
304
349
|
import { SliceZone } from "@prismicio/react";
|
|
305
350
|
|
|
306
351
|
import { components } from "@/slices";
|
|
@@ -311,8 +356,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
311
356
|
<>
|
|
312
357
|
<Head>
|
|
313
358
|
<title>{page.data.meta_title}</title>
|
|
359
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
314
360
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
315
|
-
|
|
361
|
+
<>
|
|
362
|
+
<meta name="description" content={page.data.meta_description} />
|
|
363
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
364
|
+
</>
|
|
365
|
+
) : null}
|
|
366
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
367
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
316
368
|
) : null}
|
|
317
369
|
</Head>
|
|
318
370
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation-read.cjs","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":["checkIsTypeScriptProject","getJSFileExtension","stripIndent","source"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documentation-read.cjs","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":["checkIsTypeScriptProject","getJSFileExtension","stripIndent","source"],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
18
18
|
appFileContent = stripIndent`
|
|
19
19
|
import { Metadata } from "next";
|
|
20
20
|
import { notFound } from "next/navigation";
|
|
21
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
21
22
|
import { SliceZone } from "@prismicio/react";
|
|
22
23
|
|
|
23
24
|
import { createClient } from "@/prismicio";
|
|
@@ -49,6 +50,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
49
50
|
return {
|
|
50
51
|
title: page.data.meta_title,
|
|
51
52
|
description: page.data.meta_description,
|
|
53
|
+
openGraph: {
|
|
54
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
55
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
56
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
57
|
+
},
|
|
52
58
|
};
|
|
53
59
|
}
|
|
54
60
|
|
|
@@ -64,7 +70,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
64
70
|
pagesFileContent = stripIndent`
|
|
65
71
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
66
72
|
import Head from "next/head";
|
|
67
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
73
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
68
74
|
import { SliceZone } from "@prismicio/react";
|
|
69
75
|
|
|
70
76
|
import { components } from "@/slices";
|
|
@@ -79,8 +85,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
79
85
|
<>
|
|
80
86
|
<Head>
|
|
81
87
|
<title>{page.data.meta_title}</title>
|
|
88
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
82
89
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
83
|
-
|
|
90
|
+
<>
|
|
91
|
+
<meta name="description" content={page.data.meta_description} />
|
|
92
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
93
|
+
</>
|
|
94
|
+
) : null}
|
|
95
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
96
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
84
97
|
) : null}
|
|
85
98
|
</Head>
|
|
86
99
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -119,6 +132,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
119
132
|
} else {
|
|
120
133
|
appFileContent = stripIndent`
|
|
121
134
|
import { Metadata } from "next";
|
|
135
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
122
136
|
import { SliceZone } from "@prismicio/react";
|
|
123
137
|
|
|
124
138
|
import { createClient } from "@/prismicio";
|
|
@@ -138,13 +152,18 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
138
152
|
return {
|
|
139
153
|
title: page.data.meta_title,
|
|
140
154
|
description: page.data.meta_description,
|
|
155
|
+
openGraph: {
|
|
156
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
157
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
158
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
159
|
+
},
|
|
141
160
|
};
|
|
142
161
|
}
|
|
143
162
|
`;
|
|
144
163
|
pagesFileContent = stripIndent`
|
|
145
164
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
146
165
|
import Head from "next/head";
|
|
147
|
-
import { isFilled } from "@prismicio/client";
|
|
166
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
148
167
|
import { SliceZone } from "@prismicio/react";
|
|
149
168
|
|
|
150
169
|
import { components } from "@/slices";
|
|
@@ -157,8 +176,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
157
176
|
<>
|
|
158
177
|
<Head>
|
|
159
178
|
<title>{page.data.meta_title}</title>
|
|
179
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
160
180
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
161
|
-
|
|
181
|
+
<>
|
|
182
|
+
<meta name="description" content={page.data.meta_description} />
|
|
183
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
184
|
+
</>
|
|
185
|
+
) : null}
|
|
186
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
187
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
162
188
|
) : null}
|
|
163
189
|
</Head>
|
|
164
190
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -184,6 +210,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
184
210
|
if (model.repeatable) {
|
|
185
211
|
appFileContent = stripIndent`
|
|
186
212
|
import { notFound } from "next/navigation";
|
|
213
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
187
214
|
import { SliceZone } from "@prismicio/react";
|
|
188
215
|
|
|
189
216
|
import { createClient } from "@/prismicio";
|
|
@@ -210,6 +237,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
210
237
|
return {
|
|
211
238
|
title: page.data.meta_title,
|
|
212
239
|
description: page.data.meta_description,
|
|
240
|
+
openGraph: {
|
|
241
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
242
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
243
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
244
|
+
},
|
|
213
245
|
};
|
|
214
246
|
}
|
|
215
247
|
|
|
@@ -224,7 +256,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
224
256
|
`;
|
|
225
257
|
pagesFileContent = stripIndent`
|
|
226
258
|
import Head from "next/head";
|
|
227
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
259
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
228
260
|
import { SliceZone } from "@prismicio/react";
|
|
229
261
|
|
|
230
262
|
import { components } from "@/slices";
|
|
@@ -235,8 +267,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
235
267
|
<>
|
|
236
268
|
<Head>
|
|
237
269
|
<title>{page.data.meta_title}</title>
|
|
270
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
238
271
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
239
|
-
|
|
272
|
+
<>
|
|
273
|
+
<meta name="description" content={page.data.meta_description} />
|
|
274
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
275
|
+
</>
|
|
276
|
+
) : null}
|
|
277
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
278
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
240
279
|
) : null}
|
|
241
280
|
</Head>
|
|
242
281
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -274,6 +313,7 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
274
313
|
`;
|
|
275
314
|
} else {
|
|
276
315
|
appFileContent = stripIndent`
|
|
316
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
277
317
|
import { SliceZone } from "@prismicio/react";
|
|
278
318
|
|
|
279
319
|
import { createClient } from "@/prismicio";
|
|
@@ -293,12 +333,17 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
293
333
|
return {
|
|
294
334
|
title: page.data.meta_title,
|
|
295
335
|
description: page.data.meta_description,
|
|
336
|
+
openGraph: {
|
|
337
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
338
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
339
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
340
|
+
},
|
|
296
341
|
};
|
|
297
342
|
}
|
|
298
343
|
`;
|
|
299
344
|
pagesFileContent = stripIndent`
|
|
300
345
|
import Head from "next/head";
|
|
301
|
-
import { isFilled } from "@prismicio/client";
|
|
346
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
302
347
|
import { SliceZone } from "@prismicio/react";
|
|
303
348
|
|
|
304
349
|
import { components } from "@/slices";
|
|
@@ -309,8 +354,15 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
309
354
|
<>
|
|
310
355
|
<Head>
|
|
311
356
|
<title>{page.data.meta_title}</title>
|
|
357
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
312
358
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
313
|
-
|
|
359
|
+
<>
|
|
360
|
+
<meta name="description" content={page.data.meta_description} />
|
|
361
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
362
|
+
</>
|
|
363
|
+
) : null}
|
|
364
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
365
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
314
366
|
) : null}
|
|
315
367
|
</Head>
|
|
316
368
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation-read.js","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documentation-read.js","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst { uid } = await params\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t\topenGraph: {\n\t\t\t\t\t\t\t\ttitle: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,\n\t\t\t\t\t\t\t\tdescription: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,\n\t\t\t\t\t\t\t\timages: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asImageSrc } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t<meta property=\"og:title\" content={page.data.meta_title} />\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t\t<meta property=\"og:description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t{isFilled.image(page.data.meta_image) ? (\n\t\t\t\t\t\t\t\t\t\t<meta property=\"og:image\" content={asImageSrc(page.data.meta_image)} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const format = async (input, helpers) => {
|
|
|
15
15
|
return formattedInput.endsWith(";") ? formattedInput.substring(0, formattedInput.length - 1) : formattedInput;
|
|
16
16
|
};
|
|
17
17
|
const snippetRead = async (data, { helpers }) => {
|
|
18
|
-
var _a, _b;
|
|
18
|
+
var _a, _b, _c;
|
|
19
19
|
const { fieldPath, itemName } = data;
|
|
20
20
|
const label = "React";
|
|
21
21
|
switch (data.model.type) {
|
|
@@ -40,27 +40,33 @@ const snippetRead = async (data, { helpers }) => {
|
|
|
40
40
|
case "Link": {
|
|
41
41
|
const repeat = ((_a = data.model.config) == null ? void 0 : _a.repeat) ?? false;
|
|
42
42
|
const allowText = ((_b = data.model.config) == null ? void 0 : _b.allowText) ?? false;
|
|
43
|
+
const allowVariants = Boolean((_c = data.model.config) == null ? void 0 : _c.variants);
|
|
44
|
+
const variant = (path2, prefix = "") => allowVariants ? `${prefix}className={${path2}.variant}` : "";
|
|
45
|
+
const path = dotPath(fieldPath);
|
|
43
46
|
let code;
|
|
44
47
|
if (!repeat && !allowText) {
|
|
45
48
|
code = await format(commonTags.stripIndent`
|
|
46
|
-
<PrismicNextLink field={${
|
|
49
|
+
<PrismicNextLink field={${path}} ${variant(path)}>Link</PrismicNextLink>
|
|
47
50
|
`, helpers);
|
|
48
51
|
} else if (!repeat && allowText) {
|
|
49
52
|
code = await format(commonTags.stripIndent`
|
|
50
|
-
<PrismicNextLink field={${
|
|
53
|
+
<PrismicNextLink field={${path}} ${variant(path)}/>
|
|
51
54
|
`, helpers);
|
|
52
55
|
} else if (repeat && !allowText) {
|
|
53
|
-
code = commonTags.stripIndent`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
code = commonTags.stripIndent`{${path}.map((link) => (
|
|
57
|
+
<PrismicNextLink
|
|
58
|
+
key={link.key}
|
|
59
|
+
field={link}${variant("link", "\n ")}>
|
|
60
|
+
Link
|
|
61
|
+
</PrismicNextLink>
|
|
62
|
+
))}`;
|
|
58
63
|
} else if (repeat && allowText) {
|
|
59
|
-
code = commonTags.stripIndent`
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
code = commonTags.stripIndent`{${path}.map((link) => (
|
|
65
|
+
<PrismicNextLink
|
|
66
|
+
key={link.key}
|
|
67
|
+
field={link}${variant("link", "\n ")}
|
|
68
|
+
/>
|
|
69
|
+
))}`;
|
|
64
70
|
} else {
|
|
65
71
|
throw new Error("Invalid configuration.");
|
|
66
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet-read.cjs","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath, itemName } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst repeat = data.model.config?.repeat ?? false;\n\t\t\tconst allowText = data.model.config?.allowText ?? false;\n\n\t\t\tlet code;\n\t\t\tif (!repeat && !allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${
|
|
1
|
+
{"version":3,"file":"snippet-read.cjs","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath, itemName } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst repeat = data.model.config?.repeat ?? false;\n\t\t\tconst allowText = data.model.config?.allowText ?? false;\n\n\t\t\tconst allowVariants = Boolean(data.model.config?.variants);\n\t\t\tconst variant = (path: string, prefix: \"\" | \"\\n \" = \"\") =>\n\t\t\t\tallowVariants ? `${prefix}className={${path}.variant}` : \"\";\n\n\t\t\tconst path = dotPath(fieldPath);\n\n\t\t\tlet code;\n\t\t\tif (!repeat && !allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${path}} ${variant(path)}>Link</PrismicNextLink>\n\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t);\n\t\t\t} else if (!repeat && allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${path}} ${variant(path)}/>\n\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t);\n\t\t\t} else if (repeat && !allowText) {\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\t// Make sure to use spaces instead of tabs.\n\t\t\t\tcode = stripIndent`{${path}.map((link) => (\n <PrismicNextLink\n key={link.key}\n field={link}${variant(\"link\", \"\\n \")}>\n Link\n </PrismicNextLink>\n))}`;\n\t\t\t} else if (repeat && allowText) {\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\t// Make sure to use spaces instead of tabs.\n\t\t\t\tcode = stripIndent`{${path}.map((link) => (\n <PrismicNextLink\n key={link.key}\n field={link}${variant(\"link\", \"\\n \")}\n />\n))}`;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid configuration.\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\tconst code = stripIndent`\n\t\t\t\t{${dotPath(fieldPath)}.map((${itemName}) => (\n\t\t\t\t // Render the ${itemName}\n\t\t\t\t))}\n\t\t\t`;\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<SliceZone\n\t\t\t\t\t slices={${dotPath(fieldPath)}}\n\t\t\t\t\t components={components}\n\t\t\t\t\t/>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\tconst code = stripIndent`\n\t\t\t\t{${dotPath(fieldPath, \"latitude\")}}, {${dotPath(fieldPath, \"longitude\")}}\n\t\t\t`;\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<div dangerouslySetInnerHTML={{ __html: ${dotPath(fieldPath, \"html\")} }} />\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\tcode: stripIndent`\n\t\t\t\t\t{${dotPath(fieldPath)}}\n\t\t\t\t`,\n\t\t\t};\n\t\t}\n\t}\n};\n"],"names":["stripIndent","path"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ const format = async (input, helpers) => {
|
|
|
13
13
|
return formattedInput.endsWith(";") ? formattedInput.substring(0, formattedInput.length - 1) : formattedInput;
|
|
14
14
|
};
|
|
15
15
|
const snippetRead = async (data, { helpers }) => {
|
|
16
|
-
var _a, _b;
|
|
16
|
+
var _a, _b, _c;
|
|
17
17
|
const { fieldPath, itemName } = data;
|
|
18
18
|
const label = "React";
|
|
19
19
|
switch (data.model.type) {
|
|
@@ -38,27 +38,33 @@ const snippetRead = async (data, { helpers }) => {
|
|
|
38
38
|
case "Link": {
|
|
39
39
|
const repeat = ((_a = data.model.config) == null ? void 0 : _a.repeat) ?? false;
|
|
40
40
|
const allowText = ((_b = data.model.config) == null ? void 0 : _b.allowText) ?? false;
|
|
41
|
+
const allowVariants = Boolean((_c = data.model.config) == null ? void 0 : _c.variants);
|
|
42
|
+
const variant = (path2, prefix = "") => allowVariants ? `${prefix}className={${path2}.variant}` : "";
|
|
43
|
+
const path = dotPath(fieldPath);
|
|
41
44
|
let code;
|
|
42
45
|
if (!repeat && !allowText) {
|
|
43
46
|
code = await format(stripIndent`
|
|
44
|
-
<PrismicNextLink field={${
|
|
47
|
+
<PrismicNextLink field={${path}} ${variant(path)}>Link</PrismicNextLink>
|
|
45
48
|
`, helpers);
|
|
46
49
|
} else if (!repeat && allowText) {
|
|
47
50
|
code = await format(stripIndent`
|
|
48
|
-
<PrismicNextLink field={${
|
|
51
|
+
<PrismicNextLink field={${path}} ${variant(path)}/>
|
|
49
52
|
`, helpers);
|
|
50
53
|
} else if (repeat && !allowText) {
|
|
51
|
-
code = stripIndent`
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
code = stripIndent`{${path}.map((link) => (
|
|
55
|
+
<PrismicNextLink
|
|
56
|
+
key={link.key}
|
|
57
|
+
field={link}${variant("link", "\n ")}>
|
|
58
|
+
Link
|
|
59
|
+
</PrismicNextLink>
|
|
60
|
+
))}`;
|
|
56
61
|
} else if (repeat && allowText) {
|
|
57
|
-
code = stripIndent`
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
code = stripIndent`{${path}.map((link) => (
|
|
63
|
+
<PrismicNextLink
|
|
64
|
+
key={link.key}
|
|
65
|
+
field={link}${variant("link", "\n ")}
|
|
66
|
+
/>
|
|
67
|
+
))}`;
|
|
62
68
|
} else {
|
|
63
69
|
throw new Error("Invalid configuration.");
|
|
64
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet-read.js","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath, itemName } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst repeat = data.model.config?.repeat ?? false;\n\t\t\tconst allowText = data.model.config?.allowText ?? false;\n\n\t\t\tlet code;\n\t\t\tif (!repeat && !allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${
|
|
1
|
+
{"version":3,"file":"snippet-read.js","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath, itemName } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\tconst repeat = data.model.config?.repeat ?? false;\n\t\t\tconst allowText = data.model.config?.allowText ?? false;\n\n\t\t\tconst allowVariants = Boolean(data.model.config?.variants);\n\t\t\tconst variant = (path: string, prefix: \"\" | \"\\n \" = \"\") =>\n\t\t\t\tallowVariants ? `${prefix}className={${path}.variant}` : \"\";\n\n\t\t\tconst path = dotPath(fieldPath);\n\n\t\t\tlet code;\n\t\t\tif (!repeat && !allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${path}} ${variant(path)}>Link</PrismicNextLink>\n\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t);\n\t\t\t} else if (!repeat && allowText) {\n\t\t\t\tcode = await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t<PrismicNextLink field={${path}} ${variant(path)}/>\n\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t);\n\t\t\t} else if (repeat && !allowText) {\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\t// Make sure to use spaces instead of tabs.\n\t\t\t\tcode = stripIndent`{${path}.map((link) => (\n <PrismicNextLink\n key={link.key}\n field={link}${variant(\"link\", \"\\n \")}>\n Link\n </PrismicNextLink>\n))}`;\n\t\t\t} else if (repeat && allowText) {\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\t// Make sure to use spaces instead of tabs.\n\t\t\t\tcode = stripIndent`{${path}.map((link) => (\n <PrismicNextLink\n key={link.key}\n field={link}${variant(\"link\", \"\\n \")}\n />\n))}`;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid configuration.\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\tconst code = stripIndent`\n\t\t\t\t{${dotPath(fieldPath)}.map((${itemName}) => (\n\t\t\t\t // Render the ${itemName}\n\t\t\t\t))}\n\t\t\t`;\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<SliceZone\n\t\t\t\t\t slices={${dotPath(fieldPath)}}\n\t\t\t\t\t components={components}\n\t\t\t\t\t/>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\tconst code = stripIndent`\n\t\t\t\t{${dotPath(fieldPath, \"latitude\")}}, {${dotPath(fieldPath, \"longitude\")}}\n\t\t\t`;\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<div dangerouslySetInnerHTML={{ __html: ${dotPath(fieldPath, \"html\")} }} />\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t// We cannot use `format` since this snippet contains invalid syntax.\n\t\t\t\t// Please ensure this snippet is manually formatted correctly.\n\t\t\t\tcode: stripIndent`\n\t\t\t\t\t{${dotPath(fieldPath)}}\n\t\t\t\t`,\n\t\t\t};\n\t\t}\n\t}\n};\n"],"names":["path"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/adapter-next",
|
|
3
|
-
"version": "0.3.62-beta.
|
|
3
|
+
"version": "0.3.62-beta.4",
|
|
4
4
|
"description": "Slice Machine adapter for Next.js.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@prismicio/simulator": "^0.1.4",
|
|
70
|
-
"@prismicio/types-internal": "3.
|
|
71
|
-
"@slicemachine/plugin-kit": "0.4.62-beta.
|
|
70
|
+
"@prismicio/types-internal": "3.3.0",
|
|
71
|
+
"@slicemachine/plugin-kit": "0.4.62-beta.4",
|
|
72
72
|
"common-tags": "^1.8.2",
|
|
73
73
|
"fp-ts": "^2.13.1",
|
|
74
74
|
"io-ts": "^2.2.20",
|
|
@@ -34,6 +34,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
34
34
|
appFileContent = stripIndent`
|
|
35
35
|
import { Metadata } from "next";
|
|
36
36
|
import { notFound } from "next/navigation";
|
|
37
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
37
38
|
import { SliceZone } from "@prismicio/react";
|
|
38
39
|
|
|
39
40
|
import { createClient } from "@/prismicio";
|
|
@@ -65,6 +66,11 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
65
66
|
return {
|
|
66
67
|
title: page.data.meta_title,
|
|
67
68
|
description: page.data.meta_description,
|
|
69
|
+
openGraph: {
|
|
70
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
71
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
72
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
73
|
+
},
|
|
68
74
|
};
|
|
69
75
|
}
|
|
70
76
|
|
|
@@ -80,7 +86,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
80
86
|
pagesFileContent = stripIndent`
|
|
81
87
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
82
88
|
import Head from "next/head";
|
|
83
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
89
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
84
90
|
import { SliceZone } from "@prismicio/react";
|
|
85
91
|
|
|
86
92
|
import { components } from "@/slices";
|
|
@@ -95,8 +101,15 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
95
101
|
<>
|
|
96
102
|
<Head>
|
|
97
103
|
<title>{page.data.meta_title}</title>
|
|
104
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
98
105
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
99
|
-
|
|
106
|
+
<>
|
|
107
|
+
<meta name="description" content={page.data.meta_description} />
|
|
108
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
109
|
+
</>
|
|
110
|
+
) : null}
|
|
111
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
112
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
100
113
|
) : null}
|
|
101
114
|
</Head>
|
|
102
115
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -135,6 +148,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
135
148
|
} else {
|
|
136
149
|
appFileContent = stripIndent`
|
|
137
150
|
import { Metadata } from "next";
|
|
151
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
138
152
|
import { SliceZone } from "@prismicio/react";
|
|
139
153
|
|
|
140
154
|
import { createClient } from "@/prismicio";
|
|
@@ -154,13 +168,18 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
154
168
|
return {
|
|
155
169
|
title: page.data.meta_title,
|
|
156
170
|
description: page.data.meta_description,
|
|
171
|
+
openGraph: {
|
|
172
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
173
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
174
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
175
|
+
},
|
|
157
176
|
};
|
|
158
177
|
}
|
|
159
178
|
`;
|
|
160
179
|
pagesFileContent = stripIndent`
|
|
161
180
|
import { GetStaticPropsContext, InferGetStaticPropsType } from "next";
|
|
162
181
|
import Head from "next/head";
|
|
163
|
-
import { isFilled } from "@prismicio/client";
|
|
182
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
164
183
|
import { SliceZone } from "@prismicio/react";
|
|
165
184
|
|
|
166
185
|
import { components } from "@/slices";
|
|
@@ -173,8 +192,15 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
173
192
|
<>
|
|
174
193
|
<Head>
|
|
175
194
|
<title>{page.data.meta_title}</title>
|
|
195
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
176
196
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
177
|
-
|
|
197
|
+
<>
|
|
198
|
+
<meta name="description" content={page.data.meta_description} />
|
|
199
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
200
|
+
</>
|
|
201
|
+
) : null}
|
|
202
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
203
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
178
204
|
) : null}
|
|
179
205
|
</Head>
|
|
180
206
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -200,6 +226,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
200
226
|
if (model.repeatable) {
|
|
201
227
|
appFileContent = stripIndent`
|
|
202
228
|
import { notFound } from "next/navigation";
|
|
229
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
203
230
|
import { SliceZone } from "@prismicio/react";
|
|
204
231
|
|
|
205
232
|
import { createClient } from "@/prismicio";
|
|
@@ -226,6 +253,11 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
226
253
|
return {
|
|
227
254
|
title: page.data.meta_title,
|
|
228
255
|
description: page.data.meta_description,
|
|
256
|
+
openGraph: {
|
|
257
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
258
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
259
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
260
|
+
},
|
|
229
261
|
};
|
|
230
262
|
}
|
|
231
263
|
|
|
@@ -240,7 +272,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
240
272
|
`;
|
|
241
273
|
pagesFileContent = stripIndent`
|
|
242
274
|
import Head from "next/head";
|
|
243
|
-
import { isFilled, asLink } from "@prismicio/client";
|
|
275
|
+
import { isFilled, asLink, asImageSrc } from "@prismicio/client";
|
|
244
276
|
import { SliceZone } from "@prismicio/react";
|
|
245
277
|
|
|
246
278
|
import { components } from "@/slices";
|
|
@@ -251,8 +283,15 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
251
283
|
<>
|
|
252
284
|
<Head>
|
|
253
285
|
<title>{page.data.meta_title}</title>
|
|
286
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
254
287
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
255
|
-
|
|
288
|
+
<>
|
|
289
|
+
<meta name="description" content={page.data.meta_description} />
|
|
290
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
291
|
+
</>
|
|
292
|
+
) : null}
|
|
293
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
294
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
256
295
|
) : null}
|
|
257
296
|
</Head>
|
|
258
297
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -290,6 +329,7 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
290
329
|
`;
|
|
291
330
|
} else {
|
|
292
331
|
appFileContent = stripIndent`
|
|
332
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
293
333
|
import { SliceZone } from "@prismicio/react";
|
|
294
334
|
|
|
295
335
|
import { createClient } from "@/prismicio";
|
|
@@ -309,12 +349,17 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
309
349
|
return {
|
|
310
350
|
title: page.data.meta_title,
|
|
311
351
|
description: page.data.meta_description,
|
|
352
|
+
openGraph: {
|
|
353
|
+
title: isFilled.keyText(page.data.meta_title) ? page.data.meta_title : undefined,
|
|
354
|
+
description: isFilled.keyText(page.data.meta_description) ? page.data.meta_description : undefined,
|
|
355
|
+
images: isFilled.image(page.data.meta_image) ? [asImageSrc(page.data.meta_image)] : undefined,
|
|
356
|
+
},
|
|
312
357
|
};
|
|
313
358
|
}
|
|
314
359
|
`;
|
|
315
360
|
pagesFileContent = stripIndent`
|
|
316
361
|
import Head from "next/head";
|
|
317
|
-
import { isFilled } from "@prismicio/client";
|
|
362
|
+
import { isFilled, asImageSrc } from "@prismicio/client";
|
|
318
363
|
import { SliceZone } from "@prismicio/react";
|
|
319
364
|
|
|
320
365
|
import { components } from "@/slices";
|
|
@@ -325,8 +370,15 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
325
370
|
<>
|
|
326
371
|
<Head>
|
|
327
372
|
<title>{page.data.meta_title}</title>
|
|
373
|
+
<meta property="og:title" content={page.data.meta_title} />
|
|
328
374
|
{isFilled.keyText(page.data.meta_description) ? (
|
|
329
|
-
|
|
375
|
+
<>
|
|
376
|
+
<meta name="description" content={page.data.meta_description} />
|
|
377
|
+
<meta property="og:description" content={page.data.meta_description} />
|
|
378
|
+
</>
|
|
379
|
+
) : null}
|
|
380
|
+
{isFilled.image(page.data.meta_image) ? (
|
|
381
|
+
<meta property="og:image" content={asImageSrc(page.data.meta_image)} />
|
|
330
382
|
) : null}
|
|
331
383
|
</Head>
|
|
332
384
|
<SliceZone slices={page.data.slices} components={components} />
|
|
@@ -62,33 +62,48 @@ export const snippetRead: SnippetReadHook<PluginOptions> = async (
|
|
|
62
62
|
const repeat = data.model.config?.repeat ?? false;
|
|
63
63
|
const allowText = data.model.config?.allowText ?? false;
|
|
64
64
|
|
|
65
|
+
const allowVariants = Boolean(data.model.config?.variants);
|
|
66
|
+
const variant = (path: string, prefix: "" | "\n " = "") =>
|
|
67
|
+
allowVariants ? `${prefix}className={${path}.variant}` : "";
|
|
68
|
+
|
|
69
|
+
const path = dotPath(fieldPath);
|
|
70
|
+
|
|
65
71
|
let code;
|
|
66
72
|
if (!repeat && !allowText) {
|
|
67
73
|
code = await format(
|
|
68
74
|
stripIndent`
|
|
69
|
-
<PrismicNextLink field={${
|
|
75
|
+
<PrismicNextLink field={${path}} ${variant(path)}>Link</PrismicNextLink>
|
|
70
76
|
`,
|
|
71
77
|
helpers,
|
|
72
78
|
);
|
|
73
79
|
} else if (!repeat && allowText) {
|
|
74
80
|
code = await format(
|
|
75
81
|
stripIndent`
|
|
76
|
-
<PrismicNextLink field={${
|
|
82
|
+
<PrismicNextLink field={${path}} ${variant(path)}/>
|
|
77
83
|
`,
|
|
78
84
|
helpers,
|
|
79
85
|
);
|
|
80
86
|
} else if (repeat && !allowText) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
)
|
|
85
|
-
|
|
87
|
+
// We cannot use `format` since this snippet contains invalid syntax.
|
|
88
|
+
// Please ensure this snippet is manually formatted correctly.
|
|
89
|
+
// Make sure to use spaces instead of tabs.
|
|
90
|
+
code = stripIndent`{${path}.map((link) => (
|
|
91
|
+
<PrismicNextLink
|
|
92
|
+
key={link.key}
|
|
93
|
+
field={link}${variant("link", "\n ")}>
|
|
94
|
+
Link
|
|
95
|
+
</PrismicNextLink>
|
|
96
|
+
))}`;
|
|
86
97
|
} else if (repeat && allowText) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
// We cannot use `format` since this snippet contains invalid syntax.
|
|
99
|
+
// Please ensure this snippet is manually formatted correctly.
|
|
100
|
+
// Make sure to use spaces instead of tabs.
|
|
101
|
+
code = stripIndent`{${path}.map((link) => (
|
|
102
|
+
<PrismicNextLink
|
|
103
|
+
key={link.key}
|
|
104
|
+
field={link}${variant("link", "\n ")}
|
|
105
|
+
/>
|
|
106
|
+
))}`;
|
|
92
107
|
} else {
|
|
93
108
|
throw new Error("Invalid configuration.");
|
|
94
109
|
}
|