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