@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/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",
|
|
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,35 @@ 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" || field.target) {
|
|
204
|
+
data.attrs.target = typeof props.target !== "undefined" ? props.target : field.target;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (data.attrs.target === "_blank") {
|
|
208
|
+
data.attrs.rel = typeof props.rel !== "undefined" ? props.rel : props.blankTargetRelAttribute;
|
|
209
|
+
} else if (typeof props.rel !== "undefined") {
|
|
210
|
+
data.attrs.rel = props.rel;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return h("a", data, children);
|
|
170
214
|
}
|
|
171
215
|
};
|
|
172
216
|
});
|
|
173
217
|
|
|
174
|
-
var RichText
|
|
175
|
-
name:
|
|
218
|
+
var RichText = {
|
|
219
|
+
name: "PrismicRichText",
|
|
176
220
|
functional: true,
|
|
177
221
|
props: {
|
|
178
222
|
field: {
|
|
179
223
|
type: Array,
|
|
180
224
|
required: true
|
|
181
225
|
},
|
|
226
|
+
linkResolver: {
|
|
227
|
+
type: Function,
|
|
228
|
+
required: false
|
|
229
|
+
},
|
|
182
230
|
htmlSerializer: {
|
|
183
231
|
type: Function,
|
|
184
232
|
required: false
|
|
@@ -186,15 +234,15 @@ var RichText$1 = {
|
|
|
186
234
|
wrapper: {
|
|
187
235
|
type: String,
|
|
188
236
|
required: false,
|
|
189
|
-
"default":
|
|
237
|
+
"default": "div"
|
|
190
238
|
}
|
|
191
239
|
},
|
|
192
240
|
render: function render(h, _ref) {
|
|
193
241
|
var props = _ref.props,
|
|
194
242
|
data = _ref.data,
|
|
195
|
-
children = _ref.children,
|
|
196
243
|
parent = _ref.parent;
|
|
197
244
|
var field = props.field,
|
|
245
|
+
linkResolver = props.linkResolver,
|
|
198
246
|
htmlSerializer = props.htmlSerializer,
|
|
199
247
|
wrapper = props.wrapper;
|
|
200
248
|
|
|
@@ -202,7 +250,48 @@ var RichText$1 = {
|
|
|
202
250
|
return null;
|
|
203
251
|
}
|
|
204
252
|
|
|
205
|
-
var innerHTML = RichText.asHtml(field, parent.$prismic.linkResolver, htmlSerializer
|
|
253
|
+
var innerHTML = RichText$1.asHtml(field, linkResolver ? linkResolver : parent.$prismic ? parent.$prismic.linkResolver : undefined, htmlSerializer ? htmlSerializer : parent.$prismic ? parent.$prismic.htmlSerializer : undefined);
|
|
254
|
+
return h(wrapper, _objectSpread2(_objectSpread2({}, data), {}, {
|
|
255
|
+
domProps: {
|
|
256
|
+
innerHTML: innerHTML
|
|
257
|
+
}
|
|
258
|
+
}));
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
var Text = {
|
|
263
|
+
name: "PrismicText",
|
|
264
|
+
functional: true,
|
|
265
|
+
props: {
|
|
266
|
+
field: {
|
|
267
|
+
type: Array,
|
|
268
|
+
required: true
|
|
269
|
+
},
|
|
270
|
+
separator: {
|
|
271
|
+
type: String,
|
|
272
|
+
"default": undefined,
|
|
273
|
+
required: false
|
|
274
|
+
},
|
|
275
|
+
wrapper: {
|
|
276
|
+
type: String,
|
|
277
|
+
required: false,
|
|
278
|
+
"default": "div"
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
render: function render(h, _ref) {
|
|
282
|
+
var props = _ref.props,
|
|
283
|
+
data = _ref.data;
|
|
284
|
+
_ref.children;
|
|
285
|
+
_ref.parent;
|
|
286
|
+
var field = props.field,
|
|
287
|
+
separator = props.separator,
|
|
288
|
+
wrapper = props.wrapper;
|
|
289
|
+
|
|
290
|
+
if (!field) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
var innerHTML = RichText$1.asText(field, separator);
|
|
206
295
|
return h(wrapper, _objectSpread2(_objectSpread2({}, data), {}, {
|
|
207
296
|
domProps: {
|
|
208
297
|
innerHTML: innerHTML
|
|
@@ -211,17 +300,161 @@ var RichText$1 = {
|
|
|
211
300
|
}
|
|
212
301
|
};
|
|
213
302
|
|
|
303
|
+
// We need to polyfill process if it doesn't exist, such as in the browser.
|
|
304
|
+
if (typeof process === "undefined") {
|
|
305
|
+
globalThis.process = {
|
|
306
|
+
env: {}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* `true` if in the production environment, `false` otherwise.
|
|
311
|
+
*
|
|
312
|
+
* This boolean can be used to perform actions only in development environments,
|
|
313
|
+
* such as logging.
|
|
314
|
+
*/
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
var __PRODUCTION__ = process.env.NODE_ENV === "production";
|
|
318
|
+
|
|
319
|
+
var getSliceComponentProps = function getSliceComponentProps(propsHint) {
|
|
320
|
+
return {
|
|
321
|
+
slice: {
|
|
322
|
+
type: Object,
|
|
323
|
+
required: true
|
|
324
|
+
},
|
|
325
|
+
index: {
|
|
326
|
+
type: Number,
|
|
327
|
+
required: true
|
|
328
|
+
},
|
|
329
|
+
slices: {
|
|
330
|
+
type: Array,
|
|
331
|
+
required: true
|
|
332
|
+
},
|
|
333
|
+
context: {
|
|
334
|
+
type: null,
|
|
335
|
+
required: true
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
};
|
|
339
|
+
var TODOSliceComponent = __PRODUCTION__ ? null : {
|
|
340
|
+
name: "TODOSliceCOmponent",
|
|
341
|
+
functional: true,
|
|
342
|
+
props: getSliceComponentProps(),
|
|
343
|
+
render: function render(h, _ref) {
|
|
344
|
+
var props = _ref.props,
|
|
345
|
+
data = _ref.data;
|
|
346
|
+
console.warn("[SliceZone] Could not find a component for Slice type \"".concat(props.slice.slice_type, "\""), props.slice);
|
|
347
|
+
return h("section", _objectSpread2(_objectSpread2({}, data), {}, {
|
|
348
|
+
attrs: _objectSpread2(_objectSpread2({}, data.attrs), {}, {
|
|
349
|
+
"data-slice-zone-todo-component": "",
|
|
350
|
+
"data-slice-type": props.slice.slice_type
|
|
351
|
+
})
|
|
352
|
+
}), ["Could not find a component for Slice type \"".concat(props.slice.slice_type, "\"")]);
|
|
353
|
+
}
|
|
354
|
+
}; // Just mimiced to prevent confusion but doesn't provide any value with version 2 of this kit
|
|
355
|
+
|
|
356
|
+
var defineSliceZoneComponents = function defineSliceZoneComponents(components) {
|
|
357
|
+
return components;
|
|
358
|
+
};
|
|
359
|
+
var SliceZone = {
|
|
360
|
+
name: "SliceZone",
|
|
361
|
+
props: {
|
|
362
|
+
slices: {
|
|
363
|
+
type: Array,
|
|
364
|
+
required: true
|
|
365
|
+
},
|
|
366
|
+
components: {
|
|
367
|
+
type: Object,
|
|
368
|
+
"default": undefined,
|
|
369
|
+
required: false
|
|
370
|
+
},
|
|
371
|
+
resolver: {
|
|
372
|
+
type: Function,
|
|
373
|
+
"default": undefined,
|
|
374
|
+
required: false
|
|
375
|
+
},
|
|
376
|
+
context: {
|
|
377
|
+
type: null,
|
|
378
|
+
"default": undefined,
|
|
379
|
+
required: false
|
|
380
|
+
},
|
|
381
|
+
defaultComponent: {
|
|
382
|
+
type: Object,
|
|
383
|
+
"default": undefined,
|
|
384
|
+
required: false
|
|
385
|
+
},
|
|
386
|
+
wrapper: {
|
|
387
|
+
type: [String, Object, Function],
|
|
388
|
+
"default": "div",
|
|
389
|
+
required: false
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
computed: {
|
|
393
|
+
renderedSlices: function renderedSlices() {
|
|
394
|
+
var _this = this;
|
|
395
|
+
|
|
396
|
+
if (!this.slices) {
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
return this.slices.map(function (slice, index) {
|
|
401
|
+
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`.
|
|
402
|
+
|
|
403
|
+
if (_this.resolver) {
|
|
404
|
+
var resolvedComponent = _this.resolver({
|
|
405
|
+
slice: slice,
|
|
406
|
+
sliceName: slice.slice_type,
|
|
407
|
+
i: index
|
|
408
|
+
});
|
|
409
|
+
|
|
410
|
+
if (resolvedComponent) {
|
|
411
|
+
component = resolvedComponent;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
var p = {
|
|
416
|
+
key: "".concat(slice.slice_type, "-").concat(index),
|
|
417
|
+
props: {
|
|
418
|
+
slice: slice,
|
|
419
|
+
index: index,
|
|
420
|
+
context: _this.context,
|
|
421
|
+
slices: _this.slices
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
return {
|
|
425
|
+
component: component,
|
|
426
|
+
p: p
|
|
427
|
+
};
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
render: function render(h) {
|
|
432
|
+
// Prevent fatal if user didn't check for field, throws `Invalid prop` warn
|
|
433
|
+
if (!this.slices) {
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return h(this.wrapper, this.renderedSlices.map(function (_ref2) {
|
|
438
|
+
var component = _ref2.component,
|
|
439
|
+
p = _ref2.p;
|
|
440
|
+
return h(component, p);
|
|
441
|
+
}));
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
|
|
214
445
|
var NuxtLink = Link({
|
|
215
|
-
component:
|
|
446
|
+
component: "nuxt-link"
|
|
216
447
|
});
|
|
217
448
|
var VueRouterLink = Link({
|
|
218
|
-
component:
|
|
449
|
+
component: "router-link"
|
|
219
450
|
});
|
|
220
451
|
var exp = {
|
|
221
452
|
common: {
|
|
222
453
|
Embed: Embed,
|
|
223
454
|
Image: Image,
|
|
224
|
-
RichText: RichText
|
|
455
|
+
RichText: RichText,
|
|
456
|
+
Text: Text,
|
|
457
|
+
SliceZone: SliceZone
|
|
225
458
|
},
|
|
226
459
|
nuxt: {
|
|
227
460
|
Link: NuxtLink
|
|
@@ -230,10 +463,12 @@ var exp = {
|
|
|
230
463
|
Link: VueRouterLink
|
|
231
464
|
}
|
|
232
465
|
};
|
|
466
|
+
exp.common;
|
|
467
|
+
exp.nuxt;
|
|
468
|
+
exp.vueRouter;
|
|
233
469
|
|
|
234
|
-
var common
|
|
235
|
-
var nuxt
|
|
236
|
-
var vueRouter
|
|
470
|
+
var common = exp.common;
|
|
471
|
+
var nuxt = exp.nuxt;
|
|
472
|
+
var vueRouter = exp.vueRouter;
|
|
237
473
|
|
|
238
|
-
export default
|
|
239
|
-
export { common$1 as common, nuxt$1 as nuxt, vueRouter$1 as vueRouter };
|
|
474
|
+
export { common, exp as default, defineSliceZoneComponents, getSliceComponentProps, nuxt, vueRouter };
|