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