@prismicio/vue 2.0.8 → 2.1.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.
@@ -0,0 +1,485 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('prismic-dom')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'prismic-dom'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.PrismicVueComponents = {}, global.prismicDOM));
5
+ })(this, (function (exports, PrismicDom) { 'use strict';
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var PrismicDom__default = /*#__PURE__*/_interopDefaultLegacy(PrismicDom);
10
+
11
+ function ownKeys(object, enumerableOnly) {
12
+ var keys = Object.keys(object);
13
+
14
+ if (Object.getOwnPropertySymbols) {
15
+ var symbols = Object.getOwnPropertySymbols(object);
16
+
17
+ if (enumerableOnly) {
18
+ symbols = symbols.filter(function (sym) {
19
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
20
+ });
21
+ }
22
+
23
+ keys.push.apply(keys, symbols);
24
+ }
25
+
26
+ return keys;
27
+ }
28
+
29
+ function _objectSpread2(target) {
30
+ for (var i = 1; i < arguments.length; i++) {
31
+ var source = arguments[i] != null ? arguments[i] : {};
32
+
33
+ if (i % 2) {
34
+ ownKeys(Object(source), true).forEach(function (key) {
35
+ _defineProperty(target, key, source[key]);
36
+ });
37
+ } else if (Object.getOwnPropertyDescriptors) {
38
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
39
+ } else {
40
+ ownKeys(Object(source)).forEach(function (key) {
41
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
42
+ });
43
+ }
44
+ }
45
+
46
+ return target;
47
+ }
48
+
49
+ function _defineProperty(obj, key, value) {
50
+ if (key in obj) {
51
+ Object.defineProperty(obj, key, {
52
+ value: value,
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true
56
+ });
57
+ } else {
58
+ obj[key] = value;
59
+ }
60
+
61
+ return obj;
62
+ }
63
+
64
+ var Embed = {
65
+ name: 'PrismicEmbed',
66
+ functional: true,
67
+ props: {
68
+ field: {
69
+ type: Object,
70
+ required: true
71
+ },
72
+ wrapper: {
73
+ type: String,
74
+ required: false,
75
+ "default": 'div'
76
+ }
77
+ },
78
+ render: function render(h, _ref) {
79
+ var props = _ref.props,
80
+ data = _ref.data;
81
+ var field = props.field,
82
+ wrapper = props.wrapper;
83
+
84
+ if (!field || !field.html) {
85
+ return null;
86
+ }
87
+
88
+ var embedUrl = field.embed_url,
89
+ type = field.type,
90
+ providerName = field.provider_name;
91
+
92
+ var attrs = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, data.attrs), embedUrl && {
93
+ 'data-oembed': embedUrl
94
+ }), type && {
95
+ 'data-oembed-type': type
96
+ }), providerName && {
97
+ 'data-oembed-provider': providerName
98
+ });
99
+
100
+ return h(wrapper, _objectSpread2(_objectSpread2({}, Object.assign(data, {
101
+ attrs: attrs
102
+ })), {}, {
103
+ domProps: {
104
+ innerHTML: field.html
105
+ }
106
+ }));
107
+ }
108
+ };
109
+
110
+ var Image = {
111
+ name: 'PrismicImage',
112
+ functional: true,
113
+ props: {
114
+ field: {
115
+ type: Object,
116
+ required: true
117
+ }
118
+ },
119
+ render: function render(h, _ref) {
120
+ var props = _ref.props,
121
+ data = _ref.data;
122
+ var _props$field = props.field,
123
+ url = _props$field.url,
124
+ alt = _props$field.alt,
125
+ copyright = _props$field.copyright;
126
+ return h('img', Object.assign(data, {
127
+ attrs: _objectSpread2(_objectSpread2({}, data.attrs), {}, {
128
+ src: url,
129
+ alt: alt,
130
+ copyright: copyright
131
+ })
132
+ }));
133
+ }
134
+ };
135
+
136
+ var isInternalURL = function isInternalURL(url) {
137
+ /**
138
+ * @see Regex101 expression: {@link https://regex101.com/r/1y7iod/1}
139
+ */
140
+ var isInternal = /^\/(?!\/)/.test(url);
141
+ /**
142
+ * @see Regex101 expression: {@link https://regex101.com/r/RnUseS/1}
143
+ */
144
+
145
+ var isSpecialLink = !isInternal && !/^https?:\/\//i.test(url);
146
+ return isInternal && !isSpecialLink;
147
+ };
148
+
149
+ var Link = (function (_ref) {
150
+ var _ref$component = _ref.component,
151
+ component = _ref$component === void 0 ? "a" : _ref$component;
152
+ return {
153
+ name: "PrismicLink",
154
+ functional: true,
155
+ props: {
156
+ field: {
157
+ type: Object,
158
+ required: true
159
+ },
160
+ linkResolver: {
161
+ type: Function,
162
+ required: false
163
+ },
164
+ target: {
165
+ type: String,
166
+ "default": undefined,
167
+ required: false
168
+ },
169
+ rel: {
170
+ type: String,
171
+ "default": undefined,
172
+ required: false
173
+ },
174
+ blankTargetRelAttribute: {
175
+ type: String,
176
+ "default": "noopener",
177
+ required: false
178
+ }
179
+ },
180
+ render: function render(h, _ref2) {
181
+ var props = _ref2.props,
182
+ data = _ref2.data,
183
+ children = _ref2.children,
184
+ parent = _ref2.parent;
185
+ var field = props.field,
186
+ linkResolver = props.linkResolver;
187
+
188
+ if (!field) {
189
+ return null;
190
+ }
191
+
192
+ var url = parent.$prismic ? parent.$prismic.asLink(field, linkResolver) : PrismicDom__default["default"].Link.url(field, linkResolver || function () {
193
+ return null;
194
+ });
195
+
196
+ if (isInternalURL(url) && !props.target) {
197
+ data.props = data.props || {};
198
+ data.props.to = url;
199
+ return h(component, data, children);
200
+ }
201
+
202
+ data.attrs = _objectSpread2(_objectSpread2({}, data.attrs), {}, {
203
+ href: url
204
+ });
205
+
206
+ if (typeof props.target !== "undefined" || field.target) {
207
+ data.attrs.target = typeof props.target !== "undefined" ? props.target : field.target;
208
+
209
+ if (data.attrs.target === "_blank") {
210
+ data.attrs.rel = typeof props.rel !== "undefined" ? props.rel : props.blankTargetRelAttribute;
211
+ }
212
+ }
213
+
214
+ return h("a", data, children);
215
+ }
216
+ };
217
+ });
218
+
219
+ var RichText = {
220
+ name: "PrismicRichText",
221
+ functional: true,
222
+ props: {
223
+ field: {
224
+ type: Array,
225
+ required: true
226
+ },
227
+ linkResolver: {
228
+ type: Function,
229
+ required: false
230
+ },
231
+ htmlSerializer: {
232
+ type: Function,
233
+ required: false
234
+ },
235
+ wrapper: {
236
+ type: String,
237
+ required: false,
238
+ "default": "div"
239
+ }
240
+ },
241
+ render: function render(h, _ref) {
242
+ var props = _ref.props,
243
+ data = _ref.data,
244
+ parent = _ref.parent;
245
+ var field = props.field,
246
+ linkResolver = props.linkResolver,
247
+ htmlSerializer = props.htmlSerializer,
248
+ wrapper = props.wrapper;
249
+
250
+ if (!field) {
251
+ return null;
252
+ }
253
+
254
+ var innerHTML = PrismicDom.RichText.asHtml(field, linkResolver || parent.$prismic.linkResolver, htmlSerializer || parent.$prismic.htmlSerializer);
255
+ return h(wrapper, _objectSpread2(_objectSpread2({}, data), {}, {
256
+ domProps: {
257
+ innerHTML: innerHTML
258
+ }
259
+ }));
260
+ }
261
+ };
262
+
263
+ var Text = {
264
+ name: "PrismicText",
265
+ functional: true,
266
+ props: {
267
+ field: {
268
+ type: Array,
269
+ required: true
270
+ },
271
+ separator: {
272
+ type: String,
273
+ "default": undefined,
274
+ required: false
275
+ },
276
+ wrapper: {
277
+ type: String,
278
+ required: false,
279
+ "default": "div"
280
+ }
281
+ },
282
+ render: function render(h, _ref) {
283
+ var props = _ref.props,
284
+ data = _ref.data;
285
+ _ref.children;
286
+ _ref.parent;
287
+ var field = props.field,
288
+ separator = props.separator,
289
+ wrapper = props.wrapper;
290
+
291
+ if (!field) {
292
+ return null;
293
+ }
294
+
295
+ var innerHTML = PrismicDom.RichText.asText(field, separator);
296
+ return h(wrapper, _objectSpread2(_objectSpread2({}, data), {}, {
297
+ domProps: {
298
+ innerHTML: innerHTML
299
+ }
300
+ }));
301
+ }
302
+ };
303
+
304
+ // We need to polyfill process if it doesn't exist, such as in the browser.
305
+ if (typeof process === "undefined") {
306
+ globalThis.process = {
307
+ env: {}
308
+ };
309
+ }
310
+ /**
311
+ * `true` if in the production environment, `false` otherwise.
312
+ *
313
+ * This boolean can be used to perform actions only in development environments,
314
+ * such as logging.
315
+ */
316
+
317
+
318
+ var __PRODUCTION__ = process.env.NODE_ENV === "production";
319
+
320
+ var getSliceComponentProps = function getSliceComponentProps(propsHint) {
321
+ return {
322
+ slice: {
323
+ type: Object,
324
+ required: true
325
+ },
326
+ index: {
327
+ type: Number,
328
+ required: true
329
+ },
330
+ slices: {
331
+ type: Array,
332
+ required: true
333
+ },
334
+ context: {
335
+ type: null,
336
+ required: true
337
+ }
338
+ };
339
+ };
340
+ var TODOSliceComponent = __PRODUCTION__ ? function () {
341
+ return null;
342
+ } : {
343
+ name: "TODOSliceCOmponent",
344
+ functional: true,
345
+ props: getSliceComponentProps(),
346
+ renfer: function renfer(h, _ref) {
347
+ var props = _ref.props,
348
+ data = _ref.data;
349
+ console.warn("[SliceZone] Could not find a component for Slice type \"".concat(props.slice.slice_type, "\""), props.slice);
350
+ return function () {
351
+ return h("section", _objectSpread2(_objectSpread2({}, data), {}, {
352
+ "data-slice-zone-todo-component": "",
353
+ "data-slice-type": props.slice.slice_type
354
+ }), ["Could not find a component for Slice type \"".concat(props.slice.slice_type, "\"")]);
355
+ };
356
+ }
357
+ }; // Just mimiced to prevent confusion but doesn't provide any value with version 2 of this kit
358
+
359
+ var defineSliceZoneComponents = function defineSliceZoneComponents(components) {
360
+ return components;
361
+ };
362
+ var SliceZone = {
363
+ name: "SliceZone",
364
+ functional: true,
365
+ props: {
366
+ slices: {
367
+ type: Array,
368
+ required: true
369
+ },
370
+ components: {
371
+ type: Object,
372
+ "default": undefined,
373
+ required: false
374
+ },
375
+ resolver: {
376
+ type: Function,
377
+ "default": undefined,
378
+ required: false
379
+ },
380
+ context: {
381
+ type: null,
382
+ "default": undefined,
383
+ required: false
384
+ },
385
+ defaultComponent: {
386
+ type: Object,
387
+ "default": undefined,
388
+ required: false
389
+ },
390
+ wrapper: {
391
+ type: [String, Object, Function],
392
+ "default": "div",
393
+ required: false
394
+ }
395
+ },
396
+ render: function render(h, _ref2) {
397
+ var props = _ref2.props,
398
+ data = _ref2.data;
399
+
400
+ // Prevent fatal if user didn't check for field, throws `Invalid prop` warn
401
+ if (!props.slices) {
402
+ return function () {
403
+ return null;
404
+ };
405
+ }
406
+
407
+ var renderedSlices = computed(function () {
408
+ return props.slices.map(function (slice, index) {
409
+ var component = props.components && slice.slice_type in props.components ? props.components[slice.slice_type] : props.defaultComponent || TODOSliceComponent; // TODO: Remove `resolver` in v3 in favor of `components`.
410
+
411
+ if (props.resolver) {
412
+ var resolvedComponent = props.resolver({
413
+ slice: slice,
414
+ sliceName: slice.slice_type,
415
+ i: index
416
+ });
417
+
418
+ if (resolvedComponent) {
419
+ component = resolvedComponent;
420
+ }
421
+ }
422
+
423
+ var p = {
424
+ key: "".concat(slice.slice_type, "-").concat(index),
425
+ slice: slice,
426
+ index: index,
427
+ context: props.context,
428
+ slices: props.slices
429
+ };
430
+ return h(component, p);
431
+ });
432
+ });
433
+ var parent = props.wrapper;
434
+
435
+ if (typeof parent === "string") {
436
+ return h(parent, data, renderedSlices.value);
437
+ } else {
438
+ return h(parent, data, {
439
+ "default": function _default() {
440
+ return renderedSlices.value;
441
+ }
442
+ });
443
+ }
444
+ }
445
+ };
446
+
447
+ var NuxtLink = Link({
448
+ component: "nuxt-link"
449
+ });
450
+ var VueRouterLink = Link({
451
+ component: "router-link"
452
+ });
453
+ var exp = {
454
+ common: {
455
+ Embed: Embed,
456
+ Image: Image,
457
+ RichText: RichText,
458
+ Text: Text,
459
+ SliceZone: SliceZone
460
+ },
461
+ nuxt: {
462
+ Link: NuxtLink
463
+ },
464
+ vueRouter: {
465
+ Link: VueRouterLink
466
+ }
467
+ };
468
+ exp.common;
469
+ exp.nuxt;
470
+ exp.vueRouter;
471
+
472
+ var common = exp.common;
473
+ var nuxt = exp.nuxt;
474
+ var vueRouter = exp.vueRouter;
475
+
476
+ exports.common = common;
477
+ exports["default"] = exp;
478
+ exports.defineSliceZoneComponents = defineSliceZoneComponents;
479
+ exports.getSliceComponentProps = getSliceComponentProps;
480
+ exports.nuxt = nuxt;
481
+ exports.vueRouter = vueRouter;
482
+
483
+ Object.defineProperty(exports, '__esModule', { value: true });
484
+
485
+ }));