@nuxtjs/prismic 4.0.0 → 4.1.0-pr.235.94cfeb5
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/LICENSE +1 -1
- package/README.md +18 -32
- package/dist/module.d.mts +48 -75
- package/dist/module.json +3 -3
- package/dist/module.mjs +193 -242
- package/dist/runtime/PrismicPreview.d.vue.ts +3 -0
- package/dist/runtime/PrismicPreview.vue +8 -14
- package/dist/runtime/PrismicPreview.vue.d.ts +3 -0
- package/dist/runtime/plugin.client.js +13 -7
- package/dist/runtime/plugin.js +89 -72
- package/dist/runtime/usePrismicPreview.d.ts +1 -5
- package/dist/runtime/usePrismicPreview.js +3 -3
- package/dist/types.d.mts +3 -1
- package/package.json +38 -45
- package/src/module.ts +352 -185
- package/src/runtime/PrismicPreview.vue +12 -16
- package/src/runtime/plugin.client.ts +16 -12
- package/src/runtime/plugin.ts +114 -103
- package/src/runtime/usePrismicPreview.ts +7 -11
- package/dist/client/200.html +0 -1
- package/dist/client/404.html +0 -1
- package/dist/client/_nuxt/BMD6bpEv.js +0 -1
- package/dist/client/_nuxt/BQB6UGbx.js +0 -25
- package/dist/client/_nuxt/CkG7IjgS.js +0 -1
- package/dist/client/_nuxt/DlAUqK2U.js +0 -1
- package/dist/client/_nuxt/H1okkFcd.js +0 -1
- package/dist/client/_nuxt/RYS3n4u0.js +0 -1
- package/dist/client/_nuxt/V_weDLQm.js +0 -1
- package/dist/client/_nuxt/builds/latest.json +0 -1
- package/dist/client/_nuxt/builds/meta/ef21bbff-0463-480b-852c-adffad3f33b7.json +0 -1
- package/dist/client/_nuxt/entry.BC9BDAld.css +0 -1
- package/dist/client/_nuxt/error-404.smTsHvdw.css +0 -1
- package/dist/client/_nuxt/error-500.Bo-s0s94.css +0 -1
- package/dist/client/_nuxt/index.C4BggqQh.css +0 -1
- package/dist/client/index.html +0 -1
- package/dist/module.cjs +0 -5
- package/dist/module.d.ts +0 -136
- package/dist/types.d.ts +0 -1
- package/src/devtools/index.ts +0 -127
- package/src/devtools/types.ts +0 -22
- package/src/lib/fileExists.ts +0 -15
- package/src/lib/index.ts +0 -2
- package/src/lib/logger.ts +0 -3
- package/src/types.ts +0 -137
package/src/module.ts
CHANGED
|
@@ -1,115 +1,228 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { readFile } from
|
|
3
|
-
import {
|
|
1
|
+
import { existsSync } from "node:fs"
|
|
2
|
+
import { readFile } from "node:fs/promises"
|
|
3
|
+
import { join } from "node:path"
|
|
4
4
|
|
|
5
|
-
import { defu } from 'defu'
|
|
6
5
|
import {
|
|
7
|
-
defineNuxtModule,
|
|
8
|
-
createResolver,
|
|
9
|
-
addTemplate,
|
|
10
|
-
addPlugin,
|
|
11
|
-
addImports,
|
|
12
6
|
addComponent,
|
|
7
|
+
addImports,
|
|
8
|
+
addPlugin,
|
|
9
|
+
addTemplate,
|
|
10
|
+
createResolver,
|
|
11
|
+
defineNuxtModule,
|
|
13
12
|
extendPages,
|
|
14
13
|
getNuxtVersion,
|
|
15
|
-
|
|
14
|
+
useLogger,
|
|
15
|
+
} from "@nuxt/kit"
|
|
16
|
+
import type { ClientConfig } from "@prismicio/client"
|
|
17
|
+
import { defu } from "defu"
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Prismic Nuxt module options.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://prismic.io/docs/nuxt}
|
|
23
|
+
* @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic}
|
|
24
|
+
*/
|
|
25
|
+
export type PrismicModuleOptions = {
|
|
26
|
+
/**
|
|
27
|
+
* The Prismic repository name or full Content API endpoint to init the
|
|
28
|
+
* module's client instance used to fetch content from a Prismic repository
|
|
29
|
+
* with.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
*
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // With a repository name
|
|
35
|
+
* createClient("my-repo")
|
|
36
|
+
*
|
|
37
|
+
* // With a full Prismic Content API endpoint
|
|
38
|
+
* createClient("https://my-repo.cdn.prismic.io/api/v2")
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
|
|
42
|
+
*/
|
|
43
|
+
endpoint?: string
|
|
19
44
|
|
|
20
|
-
|
|
21
|
-
|
|
45
|
+
/**
|
|
46
|
+
* The Prismic environment in use by Slice Machine configured through
|
|
47
|
+
* environment variables.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `endpoint` value.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
environment?: string
|
|
22
54
|
|
|
23
|
-
|
|
24
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Configuration options that determines how content will be queries from the
|
|
57
|
+
* Prismic repository.
|
|
58
|
+
*
|
|
59
|
+
* @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
|
|
60
|
+
*/
|
|
61
|
+
clientConfig?: ClientConfig
|
|
25
62
|
|
|
26
|
-
|
|
27
|
-
|
|
63
|
+
/**
|
|
64
|
+
* An optional path to a file exporting a Prismic client instance used to
|
|
65
|
+
* fetch content from a Prismic repository to configure the module with.
|
|
66
|
+
*
|
|
67
|
+
* @remarks
|
|
68
|
+
* When provided, it takes precedence over the `endpoint` and `clientConfig`
|
|
69
|
+
* options.
|
|
70
|
+
*
|
|
71
|
+
* @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
|
|
72
|
+
*/
|
|
73
|
+
client?: string
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Desired path of the preview page used by Prismic to enter preview session.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* `false` can be used to disable the preview page.
|
|
80
|
+
*
|
|
81
|
+
* @defaultValue `"/preview"`
|
|
82
|
+
*/
|
|
83
|
+
preview?: string | false
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Whether to inject Prismic toolbar script.
|
|
87
|
+
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* The toolbar script is required for previews to work.
|
|
90
|
+
*
|
|
91
|
+
* @defaultValue `true`
|
|
92
|
+
*/
|
|
93
|
+
toolbar?: boolean
|
|
94
|
+
|
|
95
|
+
/** Options used by Prismic Vue components. */
|
|
96
|
+
componentsConfig?: {
|
|
28
97
|
/**
|
|
29
|
-
*
|
|
98
|
+
* The path to a file exporting a default link resolver function used to
|
|
99
|
+
* resolve links.
|
|
30
100
|
*
|
|
31
|
-
* @see
|
|
32
|
-
* @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup}
|
|
101
|
+
* @see {@link https://prismic.io/docs/routes}
|
|
33
102
|
*/
|
|
103
|
+
linkResolver?: string
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The path to a file exporting default components or shorthand definitions
|
|
107
|
+
* for rich text and table components.
|
|
108
|
+
*
|
|
109
|
+
* @see {@link https://prismic.io/docs/fields/rich-text}
|
|
110
|
+
* @see {@link https://prismic.io/docs/fields/table}
|
|
111
|
+
*/
|
|
112
|
+
defaultComponents?: string
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Prismic Nuxt module options.
|
|
118
|
+
*
|
|
119
|
+
* @see {@link https://prismic.io/docs/nuxt}
|
|
120
|
+
* @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic}
|
|
121
|
+
*/
|
|
122
|
+
export type ModuleOptions = PrismicModuleOptions
|
|
123
|
+
|
|
124
|
+
declare module "@nuxt/schema" {
|
|
125
|
+
interface PublicRuntimeConfig {
|
|
126
|
+
/** The Prismic Nuxt module options. */
|
|
34
127
|
prismic: PrismicModuleOptions
|
|
35
128
|
}
|
|
36
129
|
}
|
|
37
130
|
|
|
38
|
-
// Module export
|
|
39
131
|
export default defineNuxtModule<PrismicModuleOptions>({
|
|
40
132
|
meta: {
|
|
41
|
-
name:
|
|
42
|
-
configKey:
|
|
43
|
-
compatibility: { nuxt:
|
|
133
|
+
name: "@nuxtjs/prismic",
|
|
134
|
+
configKey: "prismic",
|
|
135
|
+
compatibility: { nuxt: ">=3.7.0" },
|
|
44
136
|
},
|
|
45
137
|
defaults: (nuxt) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
richTextSerializer: '~/app/prismic/richTextSerializer',
|
|
50
|
-
}
|
|
138
|
+
const nuxt3flavor =
|
|
139
|
+
getNuxtVersion(nuxt).startsWith("3") &&
|
|
140
|
+
!nuxt.options?.future?.compatibilityVersion
|
|
51
141
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
client: '~/prismic/client',
|
|
65
|
-
linkResolver: '~/prismic/linkResolver',
|
|
66
|
-
richTextSerializer: '~/prismic/richTextSerializer',
|
|
67
|
-
}
|
|
68
|
-
prismicComponentsFiles = {
|
|
69
|
-
linkRel: '~/prismic/linkRel',
|
|
70
|
-
richTextComponents: '~/prismic/richTextComponents',
|
|
71
|
-
sliceZoneDefaultComponent: '~/prismic/sliceZoneDefaultComponent',
|
|
142
|
+
if (nuxt3flavor) {
|
|
143
|
+
return {
|
|
144
|
+
endpoint: "u",
|
|
145
|
+
environment: "",
|
|
146
|
+
clientConfig: {},
|
|
147
|
+
client: "~/app/prismic/client",
|
|
148
|
+
preview: "/preview",
|
|
149
|
+
toolbar: true,
|
|
150
|
+
componentsConfig: {
|
|
151
|
+
linkResolver: "~/app/prismic/linkResolver",
|
|
152
|
+
defaultComponents: "~/app/prismic/defaultComponents",
|
|
153
|
+
},
|
|
72
154
|
}
|
|
73
155
|
}
|
|
74
156
|
|
|
75
157
|
return {
|
|
76
|
-
endpoint:
|
|
77
|
-
environment:
|
|
158
|
+
endpoint: "",
|
|
159
|
+
environment: "",
|
|
160
|
+
client: "~/prismic/client",
|
|
78
161
|
clientConfig: {},
|
|
79
|
-
|
|
80
|
-
injectComponents: true,
|
|
81
|
-
components: prismicComponentsFiles,
|
|
82
|
-
preview: '/preview',
|
|
162
|
+
preview: "/preview",
|
|
83
163
|
toolbar: true,
|
|
84
|
-
|
|
164
|
+
componentsConfig: {
|
|
165
|
+
linkResolver: "~/prismic/linkResolver",
|
|
166
|
+
defaultComponents: "~/prismic/defaultComponents",
|
|
167
|
+
},
|
|
85
168
|
}
|
|
86
169
|
},
|
|
87
|
-
hooks: {},
|
|
88
170
|
setup(options, nuxt) {
|
|
89
|
-
// Expose options through public runtime config
|
|
90
|
-
nuxt.options.runtimeConfig.public ||= {} as typeof nuxt.options.runtimeConfig.public
|
|
91
|
-
const moduleOptions: PrismicModuleOptions = defu(nuxt.options.runtimeConfig.public.prismic, options)
|
|
92
|
-
nuxt.options.runtimeConfig.public.prismic = moduleOptions
|
|
93
|
-
|
|
94
|
-
// Runtime dir boilerplate
|
|
95
171
|
const resolver = createResolver(import.meta.url)
|
|
96
|
-
|
|
97
|
-
|
|
172
|
+
const logger = useLogger("nuxt:prismic")
|
|
173
|
+
|
|
174
|
+
const moduleOptions: PrismicModuleOptions = defu(
|
|
175
|
+
nuxt.options.runtimeConfig.public?.prismic,
|
|
176
|
+
options,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
exposeRuntimeConfig()
|
|
180
|
+
transpileDependencies()
|
|
181
|
+
const ok = proxyUserFiles()
|
|
182
|
+
if (!ok) return
|
|
183
|
+
addRuntimePlugins()
|
|
184
|
+
addAutoImports()
|
|
185
|
+
addPreviewRoute()
|
|
186
|
+
extendESLintConfig()
|
|
187
|
+
|
|
188
|
+
function exposeRuntimeConfig() {
|
|
189
|
+
nuxt.options.runtimeConfig.public ||=
|
|
190
|
+
{} as typeof nuxt.options.runtimeConfig.public
|
|
191
|
+
nuxt.options.runtimeConfig.public.prismic = moduleOptions
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function transpileDependencies() {
|
|
195
|
+
nuxt.options.build.transpile.push(
|
|
196
|
+
resolver.resolve("runtime"),
|
|
197
|
+
"@nuxtjs/prismic",
|
|
198
|
+
"@prismicio/vue",
|
|
199
|
+
)
|
|
200
|
+
nuxt.options.vite.optimizeDeps ||= {}
|
|
201
|
+
nuxt.options.vite.optimizeDeps.exclude ||= []
|
|
202
|
+
nuxt.options.vite.optimizeDeps.exclude.push("@prismicio/vue")
|
|
98
203
|
}
|
|
99
204
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
205
|
+
function proxyUserFiles() {
|
|
206
|
+
const proxyUserFileWithUndefinedFallback = (
|
|
207
|
+
filename: string,
|
|
208
|
+
path: string,
|
|
209
|
+
): boolean => {
|
|
103
210
|
const resolvedFilename = `prismic/proxy/${filename}.ts`
|
|
104
|
-
const resolvedPath = path
|
|
105
|
-
|
|
211
|
+
const resolvedPath = path
|
|
212
|
+
.replace(/^(~~|@@)/, nuxt.options.rootDir)
|
|
213
|
+
.replace(/^(~|@)/, nuxt.options.srcDir)
|
|
214
|
+
const maybeUserFile = fileExists(resolvedPath, [
|
|
215
|
+
"js",
|
|
216
|
+
"mjs",
|
|
217
|
+
"ts",
|
|
218
|
+
"vue",
|
|
219
|
+
])
|
|
106
220
|
|
|
107
221
|
if (maybeUserFile) {
|
|
108
|
-
|
|
109
|
-
logger.info(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
222
|
+
// If user file exists, proxy it with vfs
|
|
223
|
+
logger.info(
|
|
224
|
+
`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\``,
|
|
225
|
+
)
|
|
113
226
|
|
|
114
227
|
addTemplate({
|
|
115
228
|
filename: resolvedFilename,
|
|
@@ -117,136 +230,190 @@ export default defineNuxtModule<PrismicModuleOptions>({
|
|
|
117
230
|
})
|
|
118
231
|
|
|
119
232
|
return true
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Else provide `undefined` fallback
|
|
233
|
+
} else {
|
|
234
|
+
// Else provide `undefined` fallback
|
|
123
235
|
addTemplate({
|
|
124
236
|
filename: resolvedFilename,
|
|
125
|
-
getContents: () =>
|
|
237
|
+
getContents: () => "export default undefined",
|
|
126
238
|
})
|
|
127
239
|
|
|
128
240
|
return false
|
|
129
241
|
}
|
|
130
242
|
}
|
|
131
243
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
244
|
+
const proxiedUserClient = proxyUserFileWithUndefinedFallback(
|
|
245
|
+
"client",
|
|
246
|
+
moduleOptions.client!,
|
|
247
|
+
)
|
|
248
|
+
if (
|
|
249
|
+
!moduleOptions.endpoint &&
|
|
250
|
+
!proxiedUserClient &&
|
|
251
|
+
!process.env.NUXT_PUBLIC_PRISMIC_ENDPOINT
|
|
252
|
+
) {
|
|
253
|
+
logger.warn(
|
|
254
|
+
`\`endpoint\` option is missing and \`${moduleOptions.client}\` was not found. At least one of them is required for the module to run. Disabling module...`,
|
|
255
|
+
)
|
|
256
|
+
return false
|
|
257
|
+
}
|
|
258
|
+
proxyUserFileWithUndefinedFallback(
|
|
259
|
+
"linkResolver",
|
|
260
|
+
moduleOptions.componentsConfig!.linkResolver!,
|
|
261
|
+
)
|
|
262
|
+
proxyUserFileWithUndefinedFallback(
|
|
263
|
+
"defaultComponents",
|
|
264
|
+
moduleOptions.componentsConfig!.defaultComponents!,
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
return true
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function addRuntimePlugins() {
|
|
271
|
+
addPlugin(resolver.resolve("runtime/plugin"))
|
|
272
|
+
addPlugin(resolver.resolve("runtime/plugin.client"))
|
|
136
273
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
nuxt.options.vite.optimizeDeps.exclude.push('@prismicio/vue')
|
|
149
|
-
|
|
150
|
-
// Add plugin
|
|
151
|
-
addPlugin(resolver.resolve('runtime/plugin'))
|
|
152
|
-
addPlugin(resolver.resolve('runtime/plugin.client'))
|
|
153
|
-
|
|
154
|
-
// Add components auto import
|
|
155
|
-
if (moduleOptions.injectComponents) {
|
|
156
|
-
[
|
|
157
|
-
'PrismicEmbed',
|
|
158
|
-
'PrismicImage',
|
|
159
|
-
'PrismicLink',
|
|
160
|
-
'PrismicText',
|
|
161
|
-
'PrismicRichText',
|
|
162
|
-
'SliceZone',
|
|
163
|
-
].forEach((component) => {
|
|
274
|
+
|
|
275
|
+
function addAutoImports() {
|
|
276
|
+
// Components
|
|
277
|
+
;[
|
|
278
|
+
"PrismicImage",
|
|
279
|
+
"PrismicLink",
|
|
280
|
+
"PrismicText",
|
|
281
|
+
"PrismicRichText",
|
|
282
|
+
"PrismicTable",
|
|
283
|
+
"SliceZone",
|
|
284
|
+
].forEach((entry) => {
|
|
164
285
|
addComponent({
|
|
165
|
-
name:
|
|
166
|
-
export:
|
|
167
|
-
filePath:
|
|
286
|
+
name: entry,
|
|
287
|
+
export: entry,
|
|
288
|
+
filePath: "@prismicio/vue",
|
|
168
289
|
})
|
|
169
290
|
})
|
|
170
|
-
}
|
|
171
291
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
292
|
+
// Composables and utils
|
|
293
|
+
addImports(
|
|
294
|
+
[
|
|
295
|
+
"usePrismic",
|
|
296
|
+
"getSliceComponentProps",
|
|
297
|
+
"defineSliceZoneComponents",
|
|
298
|
+
"getRichTextComponentProps",
|
|
299
|
+
"getTableComponentProps",
|
|
300
|
+
].map((entry) => ({ name: entry, as: entry, from: "@prismicio/vue" })),
|
|
301
|
+
)
|
|
302
|
+
addImports({
|
|
303
|
+
name: "usePrismicPreview",
|
|
304
|
+
as: "usePrismicPreview",
|
|
305
|
+
from: resolver.resolve("runtime/usePrismicPreview"),
|
|
183
306
|
})
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
function addPreviewRoute() {
|
|
310
|
+
if (moduleOptions.preview) {
|
|
311
|
+
const maybeUserPreviewPage = fileExists(
|
|
312
|
+
join(
|
|
313
|
+
nuxt.options.srcDir,
|
|
314
|
+
nuxt.options.dir.pages,
|
|
315
|
+
moduleOptions.preview,
|
|
316
|
+
),
|
|
317
|
+
["js", "ts", "vue"],
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
if (maybeUserPreviewPage) {
|
|
321
|
+
logger.info(
|
|
322
|
+
`Using user-defined preview page at \`${maybeUserPreviewPage
|
|
323
|
+
.replace(join(nuxt.options.srcDir), "~")
|
|
324
|
+
.replace(nuxt.options.rootDir, "~~")
|
|
325
|
+
.replace(
|
|
326
|
+
/\\/g,
|
|
327
|
+
"/",
|
|
328
|
+
)}\`, available at \`${moduleOptions.preview}\``,
|
|
329
|
+
)
|
|
330
|
+
} else {
|
|
331
|
+
logger.info(
|
|
332
|
+
`Using default preview page, available at \`${moduleOptions.preview}\``,
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
extendPages((pages) => {
|
|
336
|
+
pages.unshift({
|
|
337
|
+
name: "prismic-preview",
|
|
338
|
+
path: moduleOptions.preview as string, // Checked before
|
|
339
|
+
file: resolver.resolve("runtime/PrismicPreview.vue"),
|
|
340
|
+
})
|
|
207
341
|
})
|
|
208
|
-
}
|
|
209
|
-
}
|
|
342
|
+
}
|
|
210
343
|
|
|
211
|
-
|
|
212
|
-
|
|
344
|
+
if (!moduleOptions.toolbar) {
|
|
345
|
+
logger.warn(
|
|
346
|
+
"`toolbar` option is disabled but `preview` is enabled. Previews won't work unless you manually load the toolbar.",
|
|
347
|
+
)
|
|
348
|
+
}
|
|
213
349
|
}
|
|
214
350
|
}
|
|
215
351
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
352
|
+
function extendESLintConfig() {
|
|
353
|
+
nuxt.hook(
|
|
354
|
+
// @ts-expect-error 3rd party hook
|
|
355
|
+
"eslint:config:addons",
|
|
356
|
+
(
|
|
357
|
+
addons: {
|
|
358
|
+
name: string
|
|
359
|
+
getConfigs: () => Promise<{ configs: string[] }>
|
|
360
|
+
}[],
|
|
361
|
+
) => {
|
|
362
|
+
addons.push({
|
|
363
|
+
name: "@nuxtjs/prismic",
|
|
364
|
+
async getConfigs() {
|
|
365
|
+
const configPath = resolver.resolve(
|
|
366
|
+
nuxt.options.rootDir,
|
|
367
|
+
"slicemachine.config.json",
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
const configs: string[] = []
|
|
371
|
+
|
|
372
|
+
try {
|
|
373
|
+
if (existsSync(configPath)) {
|
|
374
|
+
const config = JSON.parse(await readFile(configPath, "utf-8"))
|
|
375
|
+
|
|
376
|
+
if (
|
|
377
|
+
config &&
|
|
378
|
+
"libraries" in config &&
|
|
379
|
+
Array.isArray(config.libraries)
|
|
380
|
+
) {
|
|
381
|
+
configs.push(
|
|
382
|
+
JSON.stringify({
|
|
383
|
+
files: config.libraries.map(
|
|
384
|
+
(library: string) =>
|
|
385
|
+
`${library.replace("./", "")}/**/index.vue`,
|
|
386
|
+
),
|
|
387
|
+
rules: {
|
|
388
|
+
"vue/multi-word-component-names": "off",
|
|
389
|
+
},
|
|
390
|
+
}),
|
|
391
|
+
)
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
} catch {
|
|
395
|
+
// noop
|
|
240
396
|
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
catch {
|
|
244
|
-
// noop
|
|
245
|
-
}
|
|
246
397
|
|
|
247
|
-
|
|
398
|
+
return { configs }
|
|
399
|
+
},
|
|
400
|
+
})
|
|
248
401
|
},
|
|
249
|
-
|
|
250
|
-
}
|
|
402
|
+
)
|
|
403
|
+
}
|
|
251
404
|
},
|
|
252
405
|
})
|
|
406
|
+
|
|
407
|
+
function fileExists(path?: string, extensions = ["js", "ts"]): string | null {
|
|
408
|
+
if (!path) {
|
|
409
|
+
return null
|
|
410
|
+
} else if (existsSync(path)) {
|
|
411
|
+
return path
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
const extension = extensions.find((extension) =>
|
|
415
|
+
existsSync(`${path}.${extension}`),
|
|
416
|
+
)
|
|
417
|
+
|
|
418
|
+
return extension ? `${path}.${extension}` : null
|
|
419
|
+
}
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { usePrismicPreview, useSeoMeta } from "#imports"
|
|
3
|
+
|
|
4
|
+
useSeoMeta({ title: "Prismic Preview - Loading" })
|
|
5
|
+
usePrismicPreview()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
1
8
|
<template>
|
|
2
9
|
<section class="prismic-preview">
|
|
3
10
|
<figure>
|
|
4
11
|
<img
|
|
5
12
|
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
|
|
6
13
|
alt="Prismic"
|
|
7
|
-
|
|
8
|
-
<figcaption>
|
|
9
|
-
Loading preview...
|
|
10
|
-
</figcaption>
|
|
14
|
+
/>
|
|
15
|
+
<figcaption>Loading preview...</figcaption>
|
|
11
16
|
</figure>
|
|
12
17
|
</section>
|
|
13
18
|
</template>
|
|
14
19
|
|
|
15
|
-
<script setup>
|
|
16
|
-
import { useHead, usePrismicPreview } from '#imports'
|
|
17
|
-
|
|
18
|
-
useHead({
|
|
19
|
-
title: 'Prismic Preview - Loading',
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
usePrismicPreview()
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
20
|
<style scoped>
|
|
26
21
|
.prismic-preview {
|
|
27
22
|
width: 100%;
|
|
@@ -34,8 +29,9 @@ usePrismicPreview()
|
|
|
34
29
|
align-items: center;
|
|
35
30
|
background: #ffffff;
|
|
36
31
|
color: #666666;
|
|
37
|
-
font-family:
|
|
38
|
-
|
|
32
|
+
font-family:
|
|
33
|
+
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu,
|
|
34
|
+
Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
|
39
35
|
font-size: 1rem;
|
|
40
36
|
text-align: center;
|
|
41
37
|
}
|