@nuxtjs/prismic 1.4.0 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,59 +1,84 @@
1
+ <!--
2
+
3
+ Replace all on all files (README.md, CONTRIBUTING.md, bug_report.md, package.json):
4
+ - @nuxtjs/prismic
5
+ - Easily connect your Nuxt 3 application to your content hosted on Prismic
6
+ - nuxt-community/prismic-module
7
+ - prismic-module
8
+
9
+ -->
10
+
1
11
  # @nuxtjs/prismic
2
12
 
3
13
  [![npm version][npm-version-src]][npm-version-href]
4
14
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
5
15
  [![Github Actions CI][github-actions-ci-src]][github-actions-ci-href]
6
16
  [![Codecov][codecov-src]][codecov-href]
17
+ [![Conventional Commits][conventional-commits-src]][conventional-commits-href]
7
18
  [![License][license-src]][license-href]
8
19
 
9
- > @nuxtjs/prismic helps you connect your [Nuxt.js](https://nuxtjs.org) application to your content hosted on [Prismic](https://prismic.io)
20
+ Easily connect your Nuxt.js application to your content hosted on [Prismic][prismic].
10
21
 
11
- - [✨ &nbsp;Release Notes](/CHANGELOG.md)
12
- - [📖 &nbsp;Read the documentation](https://prismic.nuxtjs.org)
22
+ - 🚀 &nbsp;Add Prismic to your Nuxt app in seconds;
23
+ - 🎣 &nbsp;Access Prismic SDK through composition and options API;
24
+ - 🖼 &nbsp;Prismic previews supported.
13
25
 
14
- ## Features
26
+ ## Install
15
27
 
16
- - Add Prismic to your Nuxt app in seconds
17
- - Access Prismic SDK with `$prismic`
18
- - Prismic previews supported, [check out the demo!](https://prismic.nuxtjs.org/#videos)
19
- - Compact configuration
20
-
21
- [📖 &nbsp;Read the documentation](https://prismic.nuxtjs.org)
28
+ ```bash
29
+ npm install --save-dev @nuxtjs/prismic@alpha # or yarn add --dev @nuxtjs/prismic@alpha
30
+ ```
22
31
 
23
- ## Setup
32
+ Then, add `@nuxtjs/prismic` to the `buildModules` section of your Nuxt config and configure your Prismic API endpoint:
24
33
 
25
- 1. Add `@nuxtjs/prismic` dependency to your project:
34
+ ```javascript
35
+ import { defineNuxtConfig } from 'nuxt3'
26
36
 
27
- ```bash
28
- yarn add @nuxtjs/prismic # or npm install @nuxtjs/prismic
37
+ export default defineNuxtConfig({
38
+ buildModules: ['@nuxtjs/prismic'],
39
+ prismic: {
40
+ endpoint: 'my-repository'
41
+ },
42
+ });
29
43
  ```
30
44
 
31
- 2. Then, add `@nuxtjs/prismic` to the `buildModules` section of `nuxt.config.js` and configure your Prismic API endpoint:
32
-
33
- ```js
34
- {
35
- buildModules: [
36
- '@nuxtjs/prismic',
37
- ],
38
- prismic: {
39
- endpoint: 'https://<REPOSITORY>.cdn.prismic.io/api/v2',
40
- modern: true
41
- // see documentation for more!
42
- }
43
- }
44
- ```
45
+ ## Documentation
46
+
47
+ To discover what's new on this package check out [the changelog][changelog]. For full documentation, visit the [module documentation][nuxt-docs] and [Prismic official documentation][prismic-docs].
45
48
 
46
- ## Development
49
+ ## Contributing
47
50
 
48
- 1. Clone this repository
49
- 2. Install dependencies using `yarn install`
50
- 3. Start development server using `yarn dev`
51
+ Whether you're helping us fix bugs, improve the docs, or spread the word, we'd love to have you as part of the Prismic developer community!
52
+
53
+ **Asking a question**: [Open a new topic][forum-question] on our community forum explaining what you want to achieve / your question. Our support team will get back to you shortly.
54
+
55
+ **Reporting a bug**: [Open an issue][repo-bug-report] explaining your application's setup and the bug you're encountering.
56
+
57
+ **Suggesting an improvement**: [Open an issue][repo-feature-request] explaining your improvement or feature so we can discuss and learn more.
58
+
59
+ **Submitting code changes**: For small fixes, feel free to [open a pull request][repo-pull-requests] with a description of your changes. For large changes, please first [open an issue][repo-feature-request] so we can discuss if and how the changes should be implemented.
51
60
 
52
61
  ## License
53
62
 
54
63
  [MIT License](./LICENSE)
55
64
 
56
- Thanks to [James Pegg](https://github.com/jamespeggsh) for the initial implementation of the module!
65
+ <!-- Links -->
66
+
67
+ [prismic]: https://prismic.io
68
+
69
+ <!-- TODO: Replace link with a more useful one if available -->
70
+
71
+ [nuxt-docs]: https://v3.prismic.nuxtjs.org
72
+ [prismic-docs]: https://prismic.io/docs/technical-reference/prismicio-vue?version=v3
73
+ [changelog]: ./CHANGELOG.md
74
+ [contributing]: ./CONTRIBUTING.md
75
+
76
+ <!-- TODO: Replace link with a more useful one if available -->
77
+
78
+ [forum-question]: https://community.prismic.io
79
+ [repo-bug-report]: https://github.com/nuxt-community/prismic-module/issues/new?assignees=&labels=bug&template=bug_report.md&title=
80
+ [repo-feature-request]: https://github.com/nuxt-community/prismic-module/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=
81
+ [repo-pull-requests]: https://github.com/nuxt-community/prismic-module/pulls
57
82
 
58
83
  <!-- Badges -->
59
84
 
@@ -65,5 +90,7 @@ Thanks to [James Pegg](https://github.com/jamespeggsh) for the initial implement
65
90
  [github-actions-ci-href]: https://github.com/nuxt-community/prismic-module/actions?query=workflow%3Aci
66
91
  [codecov-src]: https://img.shields.io/codecov/c/github/nuxt-community/prismic-module.svg
67
92
  [codecov-href]: https://codecov.io/gh/nuxt-community/prismic-module
93
+ [conventional-commits-src]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
94
+ [conventional-commits-href]: https://conventionalcommits.org
68
95
  [license-src]: https://img.shields.io/npm/l/@nuxtjs/prismic.svg
69
96
  [license-href]: https://npmjs.com/package/@nuxtjs/prismic
@@ -0,0 +1,5 @@
1
+ module.exports = function(...args) {
2
+ return import('./module.mjs').then(m => m.default.call(this, ...args))
3
+ }
4
+ const _meta = module.exports.meta = require('./module.json')
5
+ module.exports.getMeta = () => Promise.resolve(_meta)
@@ -0,0 +1,10 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { PrismicPluginOptions } from '@prismicio/vue';
3
+
4
+ declare type PrismicModuleOptions = PrismicPluginOptions & {
5
+ preview?: string | false;
6
+ };
7
+
8
+ declare const _default: _nuxt_schema.NuxtModule<PrismicModuleOptions>;
9
+
10
+ export { _default as default };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@nuxtjs/prismic",
3
+ "version": "3.0.0-alpha.0",
4
+ "configKey": "prismic",
5
+ "compatibility": {
6
+ "nuxt": "^3.0.0"
7
+ }
8
+ }
@@ -0,0 +1,83 @@
1
+ import { join } from 'path';
2
+ import { existsSync } from 'fs';
3
+ import { defineNuxtModule, createResolver, addPlugin, addAutoImport, extendPages } from '@nuxt/kit';
4
+ import * as prismicVue from '@prismicio/vue';
5
+ import consola from 'consola';
6
+
7
+ const name = "@nuxtjs/prismic";
8
+ const version = "3.0.0-alpha.0";
9
+
10
+ const logger = consola.withScope("nuxt:prismic");
11
+
12
+ const module = defineNuxtModule({
13
+ meta: {
14
+ name: name,
15
+ version: version,
16
+ configKey: "prismic",
17
+ compatibility: { nuxt: "^3.0.0" }
18
+ },
19
+ defaults: {
20
+ endpoint: "",
21
+ clientConfig: {},
22
+ linkResolver: void 0,
23
+ htmlSerializer: void 0,
24
+ injectComponents: true,
25
+ components: {
26
+ linkInternalComponent: "nuxt-link"
27
+ },
28
+ preview: "/preview"
29
+ },
30
+ hooks: {},
31
+ setup(mergedOptions, nuxt) {
32
+ var _a, _b, _c;
33
+ if (!mergedOptions.client && !mergedOptions.endpoint) {
34
+ logger.warn("Options `endpoint` or `client` are required, disabling module...");
35
+ return;
36
+ }
37
+ const resolver = createResolver(import.meta.url);
38
+ nuxt.options.build.transpile.push(resolver.resolve("runtime"));
39
+ (_a = nuxt.options).publicRuntimeConfig || (_a.publicRuntimeConfig = {});
40
+ nuxt.options.publicRuntimeConfig[name] = mergedOptions;
41
+ addPlugin(resolver.resolve("runtime/plugin"));
42
+ const composableAutoImports = Object.keys(prismicVue).filter((key) => key.startsWith("use")).map((key) => {
43
+ return {
44
+ name: key,
45
+ as: key,
46
+ from: "@prismicio/vue"
47
+ };
48
+ });
49
+ addAutoImport(composableAutoImports);
50
+ if (mergedOptions.preview) {
51
+ const userPreviewPagePath = join(nuxt.options.srcDir, nuxt.options.dir.pages, `${mergedOptions.preview}.vue`);
52
+ if (existsSync(userPreviewPagePath)) {
53
+ logger.info(`Using user-defined preview page at \`${userPreviewPagePath.replace(join(nuxt.options.rootDir), "~~").replace(/\\/g, "/")}\`, available at \`${mergedOptions.preview}\``);
54
+ } else {
55
+ logger.info(`Using default preview page, available at \`${mergedOptions.preview}\``);
56
+ extendPages((pages) => {
57
+ pages.unshift({
58
+ name: "prismic-preview",
59
+ path: mergedOptions.preview,
60
+ file: resolver.resolve("runtime/preview.vue")
61
+ });
62
+ });
63
+ }
64
+ let repositoryName = "";
65
+ if (mergedOptions.client) {
66
+ repositoryName = new URL(mergedOptions.client.endpoint).host.split(".")[0];
67
+ } else {
68
+ try {
69
+ repositoryName = new URL(mergedOptions.endpoint).host.split(".")[0];
70
+ } catch (error) {
71
+ repositoryName = mergedOptions.endpoint;
72
+ }
73
+ }
74
+ (_b = nuxt.options).meta || (_b.meta = {});
75
+ (_c = nuxt.options.meta).script || (_c.script = []);
76
+ nuxt.options.meta.script.push({
77
+ src: `https://static.cdn.prismic.io/prismic.min.js?repo=${repositoryName}&new=true`
78
+ });
79
+ }
80
+ }
81
+ });
82
+
83
+ export { module as default };
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { defineNuxtPlugin } from "#app";
2
+ import { createPrismic } from "@prismicio/vue";
3
+ import { name as pkgName } from "../../package.json";
4
+ export default defineNuxtPlugin((nuxtApp) => {
5
+ const mergedOptions = nuxtApp.payload.config[pkgName];
6
+ nuxtApp.vueApp.use(createPrismic(mergedOptions));
7
+ });
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <section class="prismic-preview">
3
+ <figure>
4
+ <img
5
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
6
+ alt="Prismic"
7
+ >
8
+ <figcaption>Loading preview...</figcaption>
9
+ </figure>
10
+ </section>
11
+ </template>
12
+
13
+ <script setup>
14
+ import { onMounted } from 'vue'
15
+
16
+ useMeta({
17
+ title: 'Prismic Preview - Loading'
18
+ })
19
+
20
+ // TODO: refactor into simple hook
21
+ const { client, options: { linkResolver } } = usePrismic()
22
+ const { push } = useRouter()
23
+ onMounted(async () => {
24
+ const redirectURL = await client.resolvePreviewURL({
25
+ linkResolver,
26
+ defaultURL: '/'
27
+ })
28
+
29
+ push(redirectURL ?? '/')
30
+ })
31
+ </script>
32
+
33
+ <style scoped>
34
+ .prismic-preview {
35
+ width: 100%;
36
+ height: 100vh;
37
+ position: fixed;
38
+ top: 0;
39
+ left: 0;
40
+ display: flex;
41
+ justify-content: center;
42
+ align-items: center;
43
+ background: #ffffff;
44
+ color: #666666;
45
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
46
+ font-size: 1rem;
47
+ text-align: center;
48
+ }
49
+
50
+ img {
51
+ margin-bottom: 1.25rem;
52
+ }
53
+ </style>
@@ -0,0 +1,6 @@
1
+
2
+ import { } from './module'
3
+
4
+
5
+
6
+ export { default } from './module'
package/package.json CHANGED
@@ -1,47 +1,71 @@
1
1
  {
2
- "name": "@nuxtjs/prismic",
3
- "version": "1.4.0",
4
- "description": "Easily connect your Nuxt.js application to your content hosted on Prismic",
5
- "keywords": [
6
- "nuxt",
7
- "module",
8
- "nuxt-module",
9
- "prismic",
10
- "cms"
11
- ],
12
- "repository": "nuxt-community/prismic-module",
13
- "license": "MIT",
14
- "main": "src/module.js",
15
- "files": [
16
- "src",
17
- "templates"
18
- ],
19
- "scripts": {
20
- "dev": "nuxt example",
21
- "release": "yarn test && standard-version && git push --follow-tags && npm publish",
22
- "release:dry": "standard-version --dry-run",
23
- "release:alpha": "yarn test && standard-version --release-as minor --prerelease alpha && git push --follow-tags && npm publish --tag alpha",
24
- "release:alpha:dry": "standard-version --release-as minor --prerelease alpha --dry-run",
25
- "unit": "jest",
26
- "lint": "eslint --ext .js,.ts,.vue .",
27
- "test": "npm run lint && npm run unit"
28
- },
29
- "dependencies": {
30
- "@prismicio/client": "^4.0.0 || ^5.1.0",
31
- "@prismicio/vue": "^2.1.0",
32
- "consola": "^2.15.3",
33
- "prismic-dom": "^2.2.6"
34
- },
35
- "devDependencies": {
36
- "@nuxtjs/eslint-config": "latest",
37
- "@types/jest": "latest",
38
- "babel-eslint": "latest",
39
- "eslint": "latest",
40
- "jest": "latest",
41
- "nuxt-edge": "latest",
42
- "standard-version": "latest"
43
- },
44
- "engines": {
45
- "node": ">= v12.0.0"
46
- }
2
+ "name": "@nuxtjs/prismic",
3
+ "version": "3.0.0-alpha.0",
4
+ "description": "Easily connect your Nuxt 3 application to your content hosted on Prismic",
5
+ "keywords": [
6
+ "nuxt",
7
+ "module",
8
+ "nuxt-module",
9
+ "typescript",
10
+ "prismic",
11
+ "cms"
12
+ ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "ssh://git@github.com/nuxt-community/prismic-module.git"
16
+ },
17
+ "license": "MIT",
18
+ "author": "Nuxt.js Community",
19
+ "type": "module",
20
+ "exports": {
21
+ ".": {
22
+ "require": "./dist/module.cjs",
23
+ "import": "./dist/module.mjs"
24
+ },
25
+ "./package.json": "./package.json"
26
+ },
27
+ "main": "dist/module.cjs",
28
+ "module": "dist/module.mjs",
29
+ "types": "dist/types.d.ts",
30
+ "files": [
31
+ "dist",
32
+ "src"
33
+ ],
34
+ "scripts": {
35
+ "build": "nuxt-module-build",
36
+ "dev": "nuxi dev playground",
37
+ "dev:build": "nuxi build playground",
38
+ "lint": "eslint --ext .js,.ts .",
39
+ "playground:build": "nuxi build playground",
40
+ "playground:dev": "nuxi dev playground",
41
+ "prepare": "npm run build",
42
+ "release": "npm run build && npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
43
+ "release:alpha": "npm run build && npm run test && standard-version --release-as major --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
44
+ "release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
45
+ "release:dry": "standard-version --dry-run",
46
+ "test": "npm run lint && npm run unit",
47
+ "unit": "nyc --reporter=lcovonly --reporter=text --exclude-after-remap=false ava"
48
+ },
49
+ "dependencies": {
50
+ "@nuxt/kit": "npm:@nuxt/kit-edge@latest",
51
+ "@prismicio/vue": "^3.0.0-beta",
52
+ "consola": "^2.15.3"
53
+ },
54
+ "devDependencies": {
55
+ "@nuxt/module-builder": "latest",
56
+ "@nuxtjs/eslint-config-typescript": "latest",
57
+ "ava": "^3.15.0",
58
+ "eslint": "^8.9.0",
59
+ "nuxt3": "latest",
60
+ "nyc": "^15.1.0",
61
+ "standard-version": "^9.3.2",
62
+ "ts-eager": "^2.0.2",
63
+ "typescript": "^4.5.5"
64
+ },
65
+ "engines": {
66
+ "node": ">=12.7.0"
67
+ },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ }
47
71
  }
package/src/logger.ts ADDED
@@ -0,0 +1,3 @@
1
+ import consola from 'consola'
2
+
3
+ export const logger = consola.withScope('nuxt:prismic')
package/src/module.ts ADDED
@@ -0,0 +1,100 @@
1
+ import { join } from 'path'
2
+ import { existsSync } from 'fs'
3
+ import { defineNuxtModule, createResolver, addPlugin, addAutoImport, extendPages } from '@nuxt/kit'
4
+
5
+ import * as prismicVue from '@prismicio/vue'
6
+
7
+ import { name as pkgName, version as pkgVersion } from '../package.json'
8
+ import { PrismicModuleOptions } from './types'
9
+ import { logger } from './logger'
10
+
11
+ export default defineNuxtModule<PrismicModuleOptions>({
12
+ meta: {
13
+ name: pkgName,
14
+ version: pkgVersion,
15
+ configKey: 'prismic',
16
+ compatibility: { nuxt: '^3.0.0' }
17
+ },
18
+ defaults: {
19
+ endpoint: '',
20
+ clientConfig: {},
21
+ linkResolver: undefined,
22
+ htmlSerializer: undefined,
23
+ injectComponents: true,
24
+ components: {
25
+ linkInternalComponent: 'nuxt-link'
26
+ },
27
+ preview: '/preview'
28
+ },
29
+ hooks: {},
30
+ setup (mergedOptions, nuxt) {
31
+ if (!mergedOptions.client && !mergedOptions.endpoint) {
32
+ logger.warn('Options `endpoint` or `client` are required, disabling module...')
33
+ return
34
+ }
35
+
36
+ // Runtime dir boilerplate
37
+ const resolver = createResolver(import.meta.url)
38
+ nuxt.options.build.transpile.push(resolver.resolve('runtime'))
39
+
40
+ // Expose options through public runtime config
41
+ nuxt.options.publicRuntimeConfig ||= {}
42
+ nuxt.options.publicRuntimeConfig[pkgName] = mergedOptions
43
+
44
+ // Add plugin
45
+ addPlugin(resolver.resolve('runtime/plugin'))
46
+
47
+ // Add composable auto import
48
+ const composableAutoImports = Object
49
+ .keys(prismicVue)
50
+ .filter(key => key.startsWith('use'))
51
+ .map((key) => {
52
+ return {
53
+ name: key,
54
+ as: key,
55
+ from: '@prismicio/vue'
56
+ }
57
+ })
58
+ addAutoImport(composableAutoImports)
59
+
60
+ // Add preview route
61
+ if (mergedOptions.preview) {
62
+ const userPreviewPagePath = join(nuxt.options.srcDir, nuxt.options.dir.pages, `${mergedOptions.preview}.vue`)
63
+
64
+ if (existsSync(userPreviewPagePath)) {
65
+ logger.info(`Using user-defined preview page at \`${
66
+ userPreviewPagePath.replace(join(nuxt.options.rootDir), '~~').replace(/\\/g, '/')
67
+ }\`, available at \`${mergedOptions.preview}\``)
68
+ } else {
69
+ logger.info(`Using default preview page, available at \`${mergedOptions.preview}\``)
70
+
71
+ extendPages((pages) => {
72
+ pages.unshift({
73
+ name: 'prismic-preview',
74
+ path: mergedOptions.preview as string, // Checked before
75
+ file: resolver.resolve('runtime/preview.vue')
76
+ })
77
+ })
78
+ }
79
+
80
+ // TODO: Refactor with new client helpers
81
+ let repositoryName = ''
82
+ if (mergedOptions.client) {
83
+ repositoryName = new URL(mergedOptions.client.endpoint).host.split('.')[0]
84
+ } else {
85
+ try {
86
+ repositoryName = new URL(mergedOptions.endpoint).host.split('.')[0]
87
+ } catch (error) {
88
+ repositoryName = mergedOptions.endpoint
89
+ }
90
+ }
91
+
92
+ // Add toolbar
93
+ nuxt.options.meta ||= {}
94
+ nuxt.options.meta.script ||= []
95
+ nuxt.options.meta.script.push({
96
+ src: `https://static.cdn.prismic.io/prismic.min.js?repo=${repositoryName}&new=true`
97
+ })
98
+ }
99
+ }
100
+ })
@@ -0,0 +1,11 @@
1
+ import { defineNuxtPlugin } from '#app'
2
+ import { createPrismic } from '@prismicio/vue'
3
+
4
+ import { name as pkgName } from '../../package.json'
5
+ import { PrismicModuleOptions } from '../types'
6
+
7
+ export default defineNuxtPlugin((nuxtApp) => {
8
+ const mergedOptions: PrismicModuleOptions = nuxtApp.payload.config[pkgName]
9
+
10
+ nuxtApp.vueApp.use(createPrismic(mergedOptions))
11
+ })
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <section class="prismic-preview">
3
+ <figure>
4
+ <img
5
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
6
+ alt="Prismic"
7
+ >
8
+ <figcaption>Loading preview...</figcaption>
9
+ </figure>
10
+ </section>
11
+ </template>
12
+
13
+ <script setup>
14
+ import { onMounted } from 'vue'
15
+
16
+ useMeta({
17
+ title: 'Prismic Preview - Loading'
18
+ })
19
+
20
+ // TODO: refactor into simple hook
21
+ const { client, options: { linkResolver } } = usePrismic()
22
+ const { push } = useRouter()
23
+ onMounted(async () => {
24
+ const redirectURL = await client.resolvePreviewURL({
25
+ linkResolver,
26
+ defaultURL: '/'
27
+ })
28
+
29
+ push(redirectURL ?? '/')
30
+ })
31
+ </script>
32
+
33
+ <style scoped>
34
+ .prismic-preview {
35
+ width: 100%;
36
+ height: 100vh;
37
+ position: fixed;
38
+ top: 0;
39
+ left: 0;
40
+ display: flex;
41
+ justify-content: center;
42
+ align-items: center;
43
+ background: #ffffff;
44
+ color: #666666;
45
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
46
+ font-size: 1rem;
47
+ text-align: center;
48
+ }
49
+
50
+ img {
51
+ margin-bottom: 1.25rem;
52
+ }
53
+ </style>
package/src/types.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { PrismicPluginOptions } from '@prismicio/vue'
2
+
3
+ export type PrismicModuleOptions = PrismicPluginOptions & {
4
+ preview?: string | false
5
+ };
package/src/generator.js DELETED
@@ -1,37 +0,0 @@
1
- const Prismic = require('@prismicio/client')
2
- const logger = require('./logger')
3
-
4
- function generate (options) {
5
- this.nuxt.hook('generate:before', () => {
6
- const client = Prismic.client(options.endpoint, options.apiOptions)
7
- const maybeF = this.options.generate.routes || []
8
-
9
- const fetchRoutes = async (page = 1, routes = []) => {
10
- const response = await client.query('', {
11
- pageSize: 100,
12
- lang: '*',
13
- page
14
- })
15
- const allRoutes = routes.concat(response.results.map(e => e.url))
16
- /* istanbul ignore next */
17
- if (response.results_size + routes.length < response.total_results_size) {
18
- return fetchRoutes(page + 1, allRoutes)
19
- }
20
- return [...new Set(allRoutes)]
21
- }
22
-
23
- this.options.generate.routes = async () => {
24
- try {
25
- const prismicRoutes = await fetchRoutes()
26
- const userRoutes =
27
- typeof maybeF === 'function' ? await maybeF(options) : maybeF
28
- return [...new Set(prismicRoutes.concat(userRoutes))].filter(e => e)
29
- } catch (e) /* istanbul ignore next */ {
30
- logger.error(e)
31
- return []
32
- }
33
- }
34
- })
35
- }
36
-
37
- module.exports = generate
package/src/logger.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('consola').withScope('@nuxtjs/prismic')
package/src/module.js DELETED
@@ -1,98 +0,0 @@
1
- const path = require('path')
2
- const fs = require('fs')
3
- const logger = require('./logger')
4
- const generate = require('./generator')
5
-
6
- function install (moduleOptions) {
7
- const options = {
8
- preview: true,
9
- previewReloadType: 'hot',
10
- components: true,
11
- modern: false,
12
- ...moduleOptions,
13
- ...(this.options.prismic || {})
14
- }
15
- if (options.preview === true) {
16
- options.preview = '/preview'
17
- }
18
- if (options.modern === true && typeof options.disableGenerator === 'undefined') {
19
- options.disableGenerator = true
20
- }
21
- if (!options.endpoint) {
22
- logger.warn('Options `endpoint` is required, disabling module...')
23
- return
24
- }
25
- const repo = options.endpoint.replace(/^https?:\/\//, '').replace(/(\.cdn)?\.prismic.+/, '')
26
- const app = this.options.dir.app || 'app'
27
-
28
- // Add in Prismic libraries to enable preview
29
- if (options.preview) {
30
- // Add /preview
31
- const userPreviewPage = path.join(this.options.srcDir, app, 'prismic', 'pages', 'preview.vue')
32
- const userPreviewPageExists = fs.existsSync(userPreviewPage)
33
-
34
- this.addTemplate({
35
- fileName: 'prismic/pages/preview.vue',
36
- src: userPreviewPageExists ? userPreviewPage : path.join(__dirname, '../templates/pages/preview.vue')
37
- })
38
- this.extendRoutes((routes, resolve) => {
39
- routes.unshift({
40
- name: 'prismic-preview',
41
- path: options.preview,
42
- component: resolve(this.options.buildDir, 'prismic/pages/preview.vue')
43
- })
44
- })
45
- }
46
-
47
- // Add components
48
- if (options.components) {
49
- this.addPlugin({
50
- fileName: 'prismic/plugins/prismic-components.js',
51
- src: path.resolve(__dirname, '../templates/plugins/prismic-components.js')
52
- })
53
- }
54
-
55
- // Add templates & prismic plugin
56
- const userLinkResolver = path.join(this.options.srcDir, app, 'prismic', 'link-resolver.js')
57
- const userLinkResolverExists = fs.existsSync(userLinkResolver)
58
- const userHtmlSerializer = path.join(this.options.srcDir, app, 'prismic', 'html-serializer.js')
59
-
60
- const apiOptions = options.apiOptions || {}
61
- if (!userLinkResolverExists && !options.linkResolver && !apiOptions.routes) {
62
- logger.warn('Please create ~/app/prismic/link-resolver.js')
63
- }
64
- this.addTemplate({
65
- fileName: 'prismic/link-resolver.js',
66
- src: userLinkResolverExists ? userLinkResolver : path.join(__dirname, '../templates/link-resolver.js'),
67
- options
68
- })
69
- this.addTemplate({
70
- fileName: 'prismic/html-serializer.js',
71
- src: fs.existsSync(userHtmlSerializer) ? userHtmlSerializer : path.join(__dirname, '../templates/html-serializer.js'),
72
- options
73
- })
74
- this.addPlugin({
75
- fileName: 'prismic/plugins/prismic.js',
76
- src: path.resolve(__dirname, '../templates/plugins/prismic.js'),
77
- options: {
78
- preview: options.preview,
79
- previewReloadType: options.previewReloadType,
80
- endpoint: options.endpoint,
81
- modern: options.modern,
82
- apiOptions,
83
- repo,
84
- script: `//static.cdn.prismic.io/prismic.min.js?repo=${repo}&new=true`
85
- }
86
- })
87
-
88
- if (
89
- options.apiOptions &&
90
- options.apiOptions.routes &&
91
- !options.disableGenerator
92
- ) {
93
- generate.call(this, options)
94
- }
95
- }
96
-
97
- module.exports = install
98
- module.exports.meta = require('../package.json')
@@ -1,2 +0,0 @@
1
- <% if (typeof options.htmlSerializer === 'string') { %>export { default } from '<%= options.htmlSerializer %>'<% }
2
- else {%>export default <%= options.htmlSerializer ? serialize(options.htmlSerializer) : 'null' %><% } %>
@@ -1,2 +0,0 @@
1
- <% if (typeof options.linkResolver === 'string') { %>export { default } from '<%= options.linkResolver %>'<% }
2
- else { %>export default <%= options.linkResolver ? serialize(options.linkResolver) : "function (doc) { return null }" %><% } %>
@@ -1,42 +0,0 @@
1
- <template>
2
- <div class="preview-overlay">
3
- <div class="box">
4
- <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+" alt="Prismic">
5
- <h1>Loading preview...</h1>
6
- </div>
7
- </div>
8
- </template>
9
-
10
- <script>
11
- export default {
12
- head: {
13
- title: 'Prismic Preview'
14
- },
15
- mounted () {
16
- this.$prismic.preview()
17
- }
18
- }
19
- </script>
20
-
21
- <style scoped>
22
- .preview-overlay {
23
- width: 100%;
24
- height: 100vh;
25
- position: fixed;
26
- top: 0;
27
- left: 0;
28
- background: white;
29
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
30
- color: #666;
31
- font-size: 20px;
32
- text-align: center;
33
- display: table;
34
- }
35
- .box {
36
- display: table-cell;
37
- vertical-align: middle;
38
- }
39
- img {
40
- margin-bottom: 20px;
41
- }
42
- </style>
@@ -1,6 +0,0 @@
1
- import Vue from 'vue'
2
- import { common, nuxt } from '@prismicio/vue/components/common'
3
-
4
- Object.entries({ ...common, ...nuxt }).forEach(([_, c]) => {
5
- Vue.component(c.name, c)
6
- })
@@ -1,163 +0,0 @@
1
- import Vue from 'vue'
2
- import Prismic from '@prismicio/client'
3
- import PrismicDOM from 'prismic-dom'
4
-
5
- import linkResolver from '../link-resolver.js'
6
- import htmlSerializer from '../html-serializer.js'
7
-
8
- export default async (context, inject) => {
9
- const { req, route, res, query, redirect, nuxtState, base } = context
10
- let options = {}
11
-
12
- // Pass through server requests, primarily for preview
13
- if (process.server) {
14
- options.req = req
15
- }
16
-
17
- let api = {}
18
- try {
19
- <% if (options.modern) { %>
20
- api = Prismic.client('<%= options.endpoint %>', Object.assign({}, options, <%= JSON.stringify(options.apiOptions) %>))
21
- <% } else { %>
22
- api = await Prismic.api('<%= options.endpoint %>', Object.assign({}, options, <%= JSON.stringify(options.apiOptions) %>))
23
- <% } %>
24
- } catch (error) {
25
- console.error(error)
26
- console.error("Failed to init Prismic API, preventing app fatal error.")
27
- }
28
-
29
- let prismic = new Vue({
30
- computed: {
31
- api() {
32
- return api
33
- },
34
- apiEndpoint() {
35
- return '<%= options.endpoint %>'
36
- },
37
- predicates() {
38
- return Prismic.Predicates
39
- },
40
- dom() {
41
- return PrismicDOM
42
- }
43
- },
44
- methods: {
45
- asHtml(richText) {
46
- if (richText) {
47
- return PrismicDOM.RichText.asHtml(
48
- richText,
49
- linkResolver,
50
- htmlSerializer
51
- )
52
- }
53
- },
54
- asText(richText) {
55
- if (richText) {
56
- return PrismicDOM.RichText.asText(richText)
57
- }
58
- },
59
- asLink(link) {
60
- if (link) {
61
- return PrismicDOM.Link.url(
62
- link,
63
- linkResolver
64
- )
65
- }
66
- },
67
- asDate(date) {
68
- if (date) {
69
- return PrismicDOM.Date(date)
70
- }
71
- },
72
- <% if (options.preview) { %>
73
- async preview() {
74
- let url = '/'
75
- const { token, documentId } = query
76
-
77
- if (token) {
78
- const previewResolver = await this.api.getPreviewResolver(token, documentId)
79
- const maybeUrl = await previewResolver.resolve(this.linkResolver, '/')
80
- if (maybeUrl) {
81
- url = maybeUrl
82
- }
83
- }
84
- if (process.server) {
85
- redirect(302, url)
86
- } else {
87
- // Add the base path onto the url to preview
88
- url = `${base.replace(/\/$/, '')}${url}`
89
-
90
- window.location.replace(url)
91
- }
92
- },<% } %>
93
- ...(linkResolver && { linkResolver }),
94
- ...(htmlSerializer && { htmlSerializer })
95
- }
96
- })
97
-
98
- inject('prismic', prismic)
99
- context.$prismic = prismic
100
-
101
- <% if (options.preview) { %>
102
- // Load prismic script after Nuxt app is mounted
103
- if (process.client) {
104
- window.<%= globals.readyCallback %> && window.<%= globals.readyCallback %>((app) => {
105
- const script = document.createElement('script')
106
-
107
- script.src = '<%= options.script %>'
108
- document.body.appendChild(script)
109
-
110
- <% if (options.previewReloadType === 'hot') { %>
111
- window.addEventListener('prismicPreviewUpdate', async (event) => {
112
- if (app && 'refresh' in app && typeof app.refresh === 'function') {
113
- event.preventDefault();
114
- if (app.$store && app.$store._actions.nuxtServerInit) {
115
- await app.$store.dispatch('nuxtServerInit', app.$options.context)
116
- }
117
- await app.refresh();
118
- }
119
- });
120
- <% } %>
121
- })
122
- }
123
- // Preview mode
124
- if (process.server && !process.static && route.path === '<%= options.preview %>') {
125
- // Server side
126
- await prismic.preview()
127
- }
128
- if (process.client && process.static && route.path !== '<%= options.preview %>') {
129
- // Client side
130
- const getPreviewCookie = function () {
131
- var value = `; ${document.cookie}`
132
- var parts = value.split(`; ${Prismic.previewCookie}=`)
133
- if (parts.length !== 2) return null
134
- let cookie = parts.pop().split(';').shift()
135
- try {
136
- cookie = JSON.parse(decodeURIComponent(cookie))
137
- } catch (e) {
138
- cookie = null
139
- }
140
- return cookie
141
- }
142
- const repo = '<%= options.repo %>'
143
- const previewCookie = getPreviewCookie()
144
- // Used in prismic_preview middleware
145
- prismic.isPreview = previewCookie && previewCookie[`${repo}.prismic.io`] && previewCookie[`${repo}.prismic.io`].preview
146
-
147
- // Refresh data from Prismic preview
148
- if (prismic.isPreview) {
149
- console.info('[@nuxtjs/prismic] Reload page data for preview')
150
- if (context.enablePreview) {
151
- context.enablePreview()
152
- } else {
153
- // Legacy static preview
154
- window.<%= globals.readyCallback %>(async (app) => {
155
- if (app.$store && app.$store._actions.nuxtServerInit) {
156
- await app.$store.dispatch('nuxtServerInit', app.$options.context)
157
- }
158
- await app.refresh()
159
- })
160
- }
161
- }
162
- }<% } %>
163
- }