@nuxtjs/prismic 1.3.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.3.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",
31
- "@prismicio/vue": "^2.0.11",
32
- "consola": "^2.15.3",
33
- "prismic-dom": "^2.2.5"
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/CHANGELOG.md DELETED
@@ -1,57 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ## [1.3.0](https://github.com/nuxt-community/prismic-module/compare/v1.3.0-alpha.1...v1.3.0) (2021-05-10)
6
-
7
-
8
- ### Chore
9
-
10
- * add .versionrc ([0da1249](https://github.com/nuxt-community/prismic-module/commit/0da1249ca56b48bf76c2151b1ebe4f2f3a470ed1))
11
- * typo ([ac264f0](https://github.com/nuxt-community/prismic-module/commit/ac264f03f14b0539c996f508e0d202729cded874))
12
- * update pull request template ([ce7d103](https://github.com/nuxt-community/prismic-module/commit/ce7d103db3b07d24ea1dea5167e3454220ef8f33))
13
-
14
- ## [1.3.0-alpha.1](https://github.com/nuxt-community/prismic-module/compare/v1.3.0-alpha.0...v1.3.0-alpha.1) (2021-05-04)
15
-
16
-
17
- ### Features
18
-
19
- * add modern option, fixes [#134](https://github.com/nuxt-community/prismic-module/issues/134) ([02112e1](https://github.com/nuxt-community/prismic-module/commit/02112e1e0b81103fb410f2dab3416b1d1adaee47))
20
-
21
- ## [1.3.0-alpha.0](https://github.com/nuxt-community/prismic-module/compare/v1.2.6...v1.3.0-alpha.0) (2021-05-04)
22
-
23
-
24
- ### Features
25
-
26
- * drop node 8 & 10 ([9f4192c](https://github.com/nuxt-community/prismic-module/commit/9f4192c601f7a2c38ca3783ba596907828d36015))
27
-
28
- > ⚠️ That's a breaking change, to some extent. We're following Nuxt's choice of not making those majors: https://github.com/nuxt/nuxt.js/releases/tag/v2.15.0
29
-
30
-
31
- ### Bug Fixes
32
-
33
- * prevent fatal error if endpoint is not provided ([b79e26b](https://github.com/nuxt-community/prismic-module/commit/b79e26b58318d04812ca45f8684b7bc09f29e4a7))
34
-
35
- ### [1.2.6](https://github.com/nuxt-community/prismic-module/compare/v1.2.5...v1.2.6) (2021-03-11)
36
-
37
- ### [1.2.5](https://github.com/nuxt-community/prismic-module/compare/v1.2.4...v1.2.5) (2021-03-09)
38
-
39
-
40
- ### Bug Fixes
41
-
42
- * preview not persisting after navigation ([#129](https://github.com/nuxt-community/prismic-module/issues/129)) ([6f60b21](https://github.com/nuxt-community/prismic-module/commit/6f60b21d596306585391ffde7a662b1a87fdbf11))
43
-
44
- ### [1.2.4](https://github.com/nuxt-community/prismic-module/compare/v1.2.3...v1.2.4) (2020-09-10)
45
-
46
-
47
- ### Bug Fixes
48
-
49
- * use custom preview page if exists ([#101](https://github.com/nuxt-community/prismic-module/issues/101)) ([39d9dd5](https://github.com/nuxt-community/prismic-module/commit/39d9dd55a9e9c3540c6a377cb3e484121466265d))
50
-
51
- ### [1.2.3](https://github.com/nuxt-community/prismic-module/compare/v1.2.1...v1.2.3) (2020-07-17)
52
-
53
-
54
- ### Bug Fixes
55
-
56
- * handle nuxt globalname option ([4d9e30b](https://github.com/nuxt-community/prismic-module/commit/4d9e30b1ae53c1718cde23844ef8a9d87d39c840))
57
- * prevent fatal on api failure ([2d3f043](https://github.com/nuxt-community/prismic-module/commit/2d3f0430aaf38ecf8686806cf85fa1faaaba1782))
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,96 +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
- components: true,
10
- modern: false,
11
- ...moduleOptions,
12
- ...(this.options.prismic || {})
13
- }
14
- if (options.preview === true) {
15
- options.preview = '/preview'
16
- }
17
- if (options.modern === true && typeof options.disableGenerator === 'undefined') {
18
- options.disableGenerator = true
19
- }
20
- if (!options.endpoint) {
21
- logger.warn('Options `endpoint` is required, disabling module...')
22
- return
23
- }
24
- const repo = options.endpoint.replace(/^https?:\/\//, '').replace(/(\.cdn)?\.prismic.+/, '')
25
- const app = this.options.dir.app || 'app'
26
-
27
- // Add in Prismic libraries to enable preview
28
- if (options.preview) {
29
- // Add /preview
30
- const userPreviewPage = path.join(this.options.srcDir, app, 'prismic', 'pages', 'preview.vue')
31
- const userPreviewPageExists = fs.existsSync(userPreviewPage)
32
-
33
- this.addTemplate({
34
- fileName: 'prismic/pages/preview.vue',
35
- src: userPreviewPageExists ? userPreviewPage : path.join(__dirname, '../templates/pages/preview.vue')
36
- })
37
- this.extendRoutes((routes, resolve) => {
38
- routes.unshift({
39
- name: 'prismic-preview',
40
- path: options.preview,
41
- component: resolve(this.options.buildDir, 'prismic/pages/preview.vue')
42
- })
43
- })
44
- }
45
-
46
- // Add components
47
- if (options.components) {
48
- this.addPlugin({
49
- fileName: 'prismic/plugins/prismic-components.js',
50
- src: path.resolve(__dirname, '../templates/plugins/prismic-components.js')
51
- })
52
- }
53
-
54
- // Add templates & prismic plugin
55
- const userLinkResolver = path.join(this.options.srcDir, app, 'prismic', 'link-resolver.js')
56
- const userLinkResolverExists = fs.existsSync(userLinkResolver)
57
- const userHtmlSerializer = path.join(this.options.srcDir, app, 'prismic', 'html-serializer.js')
58
-
59
- const apiOptions = options.apiOptions || {}
60
- if (!userLinkResolverExists && !options.linkResolver && !apiOptions.routes) {
61
- logger.warn('Please create ~/app/prismic/link-resolver.js')
62
- }
63
- this.addTemplate({
64
- fileName: 'prismic/link-resolver.js',
65
- src: userLinkResolverExists ? userLinkResolver : path.join(__dirname, '../templates/link-resolver.js'),
66
- options
67
- })
68
- this.addTemplate({
69
- fileName: 'prismic/html-serializer.js',
70
- src: fs.existsSync(userHtmlSerializer) ? userHtmlSerializer : path.join(__dirname, '../templates/html-serializer.js'),
71
- options
72
- })
73
- this.addPlugin({
74
- fileName: 'prismic/plugins/prismic.js',
75
- src: path.resolve(__dirname, '../templates/plugins/prismic.js'),
76
- options: {
77
- preview: options.preview,
78
- endpoint: options.endpoint,
79
- modern: options.modern,
80
- apiOptions,
81
- repo,
82
- script: `//static.cdn.prismic.io/prismic.min.js?repo=${repo}&new=true`
83
- }
84
- })
85
-
86
- if (
87
- options.apiOptions &&
88
- options.apiOptions.routes &&
89
- !options.disableGenerator
90
- ) {
91
- generate.call(this, options)
92
- }
93
- }
94
-
95
- module.exports = install
96
- 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,148 +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 } = 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
- window.location.replace(url)
88
- }
89
- },<% } %>
90
- ...(linkResolver && { linkResolver }),
91
- ...(htmlSerializer && { htmlSerializer })
92
- }
93
- })
94
-
95
- inject('prismic', prismic)
96
- context.$prismic = prismic
97
-
98
- <% if (options.preview) { %>
99
- // Load prismic script after Nuxt app is mounted
100
- if (process.client) {
101
- window.<%= globals.readyCallback %> && window.<%= globals.readyCallback %>(() => {
102
- const script = document.createElement('script')
103
-
104
- script.src = '<%= options.script %>'
105
- document.body.appendChild(script)
106
- })
107
- }
108
- // Preview mode
109
- if (process.server && !process.static && route.path === '<%= options.preview %>') {
110
- // Server side
111
- await prismic.preview()
112
- }
113
- if (process.client && process.static && route.path !== '<%= options.preview %>') {
114
- // Client side
115
- const getPreviewCookie = function () {
116
- var value = `; ${document.cookie}`
117
- var parts = value.split(`; ${Prismic.previewCookie}=`)
118
- if (parts.length !== 2) return null
119
- let cookie = parts.pop().split(';').shift()
120
- try {
121
- cookie = JSON.parse(decodeURIComponent(cookie))
122
- } catch (e) {
123
- cookie = null
124
- }
125
- return cookie
126
- }
127
- const repo = '<%= options.repo %>'
128
- const previewCookie = getPreviewCookie()
129
- // Used in prismic_preview middleware
130
- prismic.isPreview = previewCookie && previewCookie[`${repo}.prismic.io`] && previewCookie[`${repo}.prismic.io`].preview
131
-
132
- // Refresh data from Prismic preview
133
- if (prismic.isPreview) {
134
- console.info('[@nuxtjs/prismic] Reload page data for preview')
135
- if (context.enablePreview) {
136
- context.enablePreview()
137
- } else {
138
- // Legacy static preview
139
- window.<%= globals.readyCallback %>(async (app) => {
140
- if (app.$store && app.$store._actions.nuxtServerInit) {
141
- await app.$store.dispatch('nuxtServerInit', app.$options.context)
142
- }
143
- await app.refresh()
144
- })
145
- }
146
- }
147
- }<% } %>
148
- }