@prismicio/vue 2.0.11 → 2.1.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 +289 -47
- package/components/index.js +283 -45
- package/components/umd.js +292 -49
- package/dist/prismic-vue.common.js +299 -55
- package/dist/prismic-vue.esm.js +292 -50
- package/dist/prismic-vue.js +303 -59
- package/dist/prismic-vue.min.js +1 -1
- package/package.json +86 -47
- 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,
|
|
@@ -58,7 +62,7 @@ var Embed = {
|
|
|
58
62
|
required: true
|
|
59
63
|
},
|
|
60
64
|
wrapper: {
|
|
61
|
-
type: String,
|
|
65
|
+
type: [String, Object, Function],
|
|
62
66
|
required: false,
|
|
63
67
|
"default": 'div'
|
|
64
68
|
}
|
|
@@ -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: {
|
|
@@ -135,6 +157,21 @@ var Link = (function (_ref) {
|
|
|
135
157
|
linkResolver: {
|
|
136
158
|
type: Function,
|
|
137
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
|
|
138
175
|
}
|
|
139
176
|
},
|
|
140
177
|
render: function render(h, _ref2) {
|
|
@@ -153,7 +190,7 @@ var Link = (function (_ref) {
|
|
|
153
190
|
return null;
|
|
154
191
|
});
|
|
155
192
|
|
|
156
|
-
if (url
|
|
193
|
+
if (isInternalURL(url) && !props.target) {
|
|
157
194
|
data.props = data.props || {};
|
|
158
195
|
data.props.to = url;
|
|
159
196
|
return h(component, data, children);
|
|
@@ -161,39 +198,53 @@ var Link = (function (_ref) {
|
|
|
161
198
|
|
|
162
199
|
data.attrs = _objectSpread2(_objectSpread2({}, data.attrs), {}, {
|
|
163
200
|
href: url
|
|
164
|
-
}, field.target && {
|
|
165
|
-
target: field.target,
|
|
166
|
-
rel: 'noopener'
|
|
167
201
|
});
|
|
168
|
-
|
|
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);
|
|
169
216
|
}
|
|
170
217
|
};
|
|
171
218
|
});
|
|
172
219
|
|
|
173
|
-
var RichText
|
|
174
|
-
name:
|
|
220
|
+
var RichText = {
|
|
221
|
+
name: "PrismicRichText",
|
|
175
222
|
functional: true,
|
|
176
223
|
props: {
|
|
177
224
|
field: {
|
|
178
225
|
type: Array,
|
|
179
226
|
required: true
|
|
180
227
|
},
|
|
228
|
+
linkResolver: {
|
|
229
|
+
type: Function,
|
|
230
|
+
required: false
|
|
231
|
+
},
|
|
181
232
|
htmlSerializer: {
|
|
182
233
|
type: Function,
|
|
183
234
|
required: false
|
|
184
235
|
},
|
|
185
236
|
wrapper: {
|
|
186
|
-
type: String,
|
|
237
|
+
type: [String, Object, Function],
|
|
187
238
|
required: false,
|
|
188
|
-
"default":
|
|
239
|
+
"default": "div"
|
|
189
240
|
}
|
|
190
241
|
},
|
|
191
242
|
render: function render(h, _ref) {
|
|
192
243
|
var props = _ref.props,
|
|
193
244
|
data = _ref.data,
|
|
194
|
-
children = _ref.children,
|
|
195
245
|
parent = _ref.parent;
|
|
196
246
|
var field = props.field,
|
|
247
|
+
linkResolver = props.linkResolver,
|
|
197
248
|
htmlSerializer = props.htmlSerializer,
|
|
198
249
|
wrapper = props.wrapper;
|
|
199
250
|
|
|
@@ -201,7 +252,48 @@ var RichText$1 = {
|
|
|
201
252
|
return null;
|
|
202
253
|
}
|
|
203
254
|
|
|
204
|
-
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, Object, Function],
|
|
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);
|
|
205
297
|
return h(wrapper, _objectSpread2(_objectSpread2({}, data), {}, {
|
|
206
298
|
domProps: {
|
|
207
299
|
innerHTML: innerHTML
|
|
@@ -210,17 +302,161 @@ var RichText$1 = {
|
|
|
210
302
|
}
|
|
211
303
|
};
|
|
212
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
|
+
|
|
213
447
|
var NuxtLink = Link({
|
|
214
|
-
component:
|
|
448
|
+
component: "nuxt-link"
|
|
215
449
|
});
|
|
216
450
|
var VueRouterLink = Link({
|
|
217
|
-
component:
|
|
451
|
+
component: "router-link"
|
|
218
452
|
});
|
|
219
453
|
var exp = {
|
|
220
454
|
common: {
|
|
221
455
|
Embed: Embed,
|
|
222
456
|
Image: Image,
|
|
223
|
-
RichText: RichText
|
|
457
|
+
RichText: RichText,
|
|
458
|
+
Text: Text,
|
|
459
|
+
SliceZone: SliceZone
|
|
224
460
|
},
|
|
225
461
|
nuxt: {
|
|
226
462
|
Link: NuxtLink
|
|
@@ -229,10 +465,12 @@ var exp = {
|
|
|
229
465
|
Link: VueRouterLink
|
|
230
466
|
}
|
|
231
467
|
};
|
|
468
|
+
exp.common;
|
|
469
|
+
exp.nuxt;
|
|
470
|
+
exp.vueRouter;
|
|
232
471
|
|
|
233
|
-
var common
|
|
234
|
-
var nuxt
|
|
235
|
-
var vueRouter
|
|
472
|
+
var common = exp.common;
|
|
473
|
+
var nuxt = exp.nuxt;
|
|
474
|
+
var vueRouter = exp.vueRouter;
|
|
236
475
|
|
|
237
|
-
export default
|
|
238
|
-
export { common$1 as common, nuxt$1 as nuxt, vueRouter$1 as vueRouter };
|
|
476
|
+
export { common, exp as default, defineSliceZoneComponents, getSliceComponentProps, nuxt, vueRouter };
|