@prismicio/vue 4.2.3 → 5.0.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.
Files changed (245) hide show
  1. package/README.md +4 -4
  2. package/dist/PrismicEmbed.vue.cjs +25 -0
  3. package/dist/PrismicEmbed.vue.cjs.map +1 -0
  4. package/dist/PrismicEmbed.vue.d.ts +19 -0
  5. package/dist/PrismicEmbed.vue.js +26 -0
  6. package/dist/PrismicEmbed.vue.js.map +1 -0
  7. package/dist/PrismicEmbed.vue2.cjs +4 -0
  8. package/dist/PrismicEmbed.vue2.cjs.map +1 -0
  9. package/dist/PrismicEmbed.vue2.js +5 -0
  10. package/dist/PrismicEmbed.vue2.js.map +1 -0
  11. package/dist/PrismicImage.vue.cjs +84 -0
  12. package/dist/PrismicImage.vue.cjs.map +1 -0
  13. package/dist/PrismicImage.vue.d.ts +224 -0
  14. package/dist/PrismicImage.vue.js +85 -0
  15. package/dist/PrismicImage.vue.js.map +1 -0
  16. package/dist/PrismicImage.vue2.cjs +4 -0
  17. package/dist/PrismicImage.vue2.cjs.map +1 -0
  18. package/dist/PrismicImage.vue2.js +5 -0
  19. package/dist/PrismicImage.vue2.js.map +1 -0
  20. package/dist/PrismicLink.vue.cjs +100 -0
  21. package/dist/PrismicLink.vue.cjs.map +1 -0
  22. package/dist/PrismicLink.vue.d.ts +278 -0
  23. package/dist/PrismicLink.vue.js +101 -0
  24. package/dist/PrismicLink.vue.js.map +1 -0
  25. package/dist/PrismicLink.vue2.cjs +4 -0
  26. package/dist/PrismicLink.vue2.cjs.map +1 -0
  27. package/dist/PrismicLink.vue2.js +5 -0
  28. package/dist/PrismicLink.vue2.js.map +1 -0
  29. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs +90 -0
  30. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs.map +1 -0
  31. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.d.ts +7 -0
  32. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js +91 -0
  33. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js.map +1 -0
  34. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.cjs +4 -0
  35. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.cjs.map +1 -0
  36. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.js +5 -0
  37. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.js.map +1 -0
  38. package/dist/PrismicRichText/PrismicRichText.vue.cjs +85 -0
  39. package/dist/PrismicRichText/PrismicRichText.vue.cjs.map +1 -0
  40. package/dist/PrismicRichText/PrismicRichText.vue.d.ts +57 -0
  41. package/dist/PrismicRichText/PrismicRichText.vue.js +86 -0
  42. package/dist/PrismicRichText/PrismicRichText.vue.js.map +1 -0
  43. package/dist/PrismicRichText/PrismicRichText.vue2.cjs +4 -0
  44. package/dist/PrismicRichText/PrismicRichText.vue2.cjs.map +1 -0
  45. package/dist/PrismicRichText/PrismicRichText.vue2.js +5 -0
  46. package/dist/PrismicRichText/PrismicRichText.vue2.js.map +1 -0
  47. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.cjs +133 -0
  48. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.cjs.map +1 -0
  49. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.d.ts +37 -0
  50. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.js +134 -0
  51. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.js.map +1 -0
  52. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.cjs +4 -0
  53. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.cjs.map +1 -0
  54. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.js +5 -0
  55. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.js.map +1 -0
  56. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.cjs +47 -0
  57. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.cjs.map +1 -0
  58. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.d.ts +10 -0
  59. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.js +48 -0
  60. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.js.map +1 -0
  61. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.cjs +4 -0
  62. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.cjs.map +1 -0
  63. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.js +5 -0
  64. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.js.map +1 -0
  65. package/dist/PrismicRichText/getRichTextComponentProps.cjs +10 -0
  66. package/dist/PrismicRichText/getRichTextComponentProps.cjs.map +1 -0
  67. package/dist/PrismicRichText/getRichTextComponentProps.d.ts +49 -0
  68. package/dist/PrismicRichText/getRichTextComponentProps.js +10 -0
  69. package/dist/PrismicRichText/getRichTextComponentProps.js.map +1 -0
  70. package/dist/PrismicRichText/index.d.ts +2 -0
  71. package/dist/PrismicRichText/types.d.ts +22 -0
  72. package/dist/PrismicText.vue.cjs +43 -0
  73. package/dist/PrismicText.vue.cjs.map +1 -0
  74. package/dist/PrismicText.vue.d.ts +31 -0
  75. package/dist/PrismicText.vue.js +44 -0
  76. package/dist/PrismicText.vue.js.map +1 -0
  77. package/dist/PrismicText.vue2.cjs +4 -0
  78. package/dist/PrismicText.vue2.cjs.map +1 -0
  79. package/dist/PrismicText.vue2.js +5 -0
  80. package/dist/PrismicText.vue2.js.map +1 -0
  81. package/dist/SliceZone/SliceZone.vue.cjs +63 -0
  82. package/dist/SliceZone/SliceZone.vue.cjs.map +1 -0
  83. package/dist/SliceZone/SliceZone.vue.d.ts +40 -0
  84. package/dist/SliceZone/SliceZone.vue.js +64 -0
  85. package/dist/SliceZone/SliceZone.vue.js.map +1 -0
  86. package/dist/SliceZone/SliceZone.vue2.cjs +4 -0
  87. package/dist/SliceZone/SliceZone.vue2.cjs.map +1 -0
  88. package/dist/SliceZone/SliceZone.vue2.js +5 -0
  89. package/dist/SliceZone/SliceZone.vue2.js.map +1 -0
  90. package/dist/SliceZone/TODOSliceComponent.cjs +29 -0
  91. package/dist/SliceZone/TODOSliceComponent.cjs.map +1 -0
  92. package/dist/SliceZone/TODOSliceComponent.d.ts +9 -0
  93. package/dist/SliceZone/TODOSliceComponent.js +29 -0
  94. package/dist/SliceZone/TODOSliceComponent.js.map +1 -0
  95. package/dist/SliceZone/defineSliceZoneComponents.cjs +14 -0
  96. package/dist/SliceZone/defineSliceZoneComponents.cjs.map +1 -0
  97. package/dist/SliceZone/defineSliceZoneComponents.d.ts +36 -0
  98. package/dist/SliceZone/defineSliceZoneComponents.js +14 -0
  99. package/dist/SliceZone/defineSliceZoneComponents.js.map +1 -0
  100. package/dist/SliceZone/getSliceComponentProps.cjs +22 -0
  101. package/dist/SliceZone/getSliceComponentProps.cjs.map +1 -0
  102. package/dist/SliceZone/getSliceComponentProps.d.ts +66 -0
  103. package/dist/SliceZone/getSliceComponentProps.js +22 -0
  104. package/dist/SliceZone/getSliceComponentProps.js.map +1 -0
  105. package/dist/SliceZone/index.d.ts +4 -0
  106. package/dist/SliceZone/types.d.ts +97 -0
  107. package/dist/createPrismic.cjs +17 -50
  108. package/dist/createPrismic.cjs.map +1 -1
  109. package/dist/createPrismic.d.ts +10 -0
  110. package/dist/createPrismic.js +16 -27
  111. package/dist/createPrismic.js.map +1 -1
  112. package/dist/index.cjs +21 -40
  113. package/dist/index.cjs.map +1 -1
  114. package/dist/index.d.ts +19 -9
  115. package/dist/index.js +19 -38
  116. package/dist/index.js.map +1 -1
  117. package/dist/lib/Wrapper.vue.cjs +20 -0
  118. package/dist/lib/Wrapper.vue.cjs.map +1 -0
  119. package/dist/lib/Wrapper.vue.d.ts +34 -0
  120. package/dist/lib/Wrapper.vue.js +21 -0
  121. package/dist/lib/Wrapper.vue.js.map +1 -0
  122. package/dist/lib/Wrapper.vue2.cjs +4 -0
  123. package/dist/lib/Wrapper.vue2.cjs.map +1 -0
  124. package/dist/lib/Wrapper.vue2.js +5 -0
  125. package/dist/lib/Wrapper.vue2.js.map +1 -0
  126. package/dist/lib/devMsg.cjs +8 -0
  127. package/dist/lib/devMsg.cjs.map +1 -0
  128. package/dist/lib/devMsg.d.ts +16 -0
  129. package/dist/lib/devMsg.js +8 -0
  130. package/dist/lib/devMsg.js.map +1 -0
  131. package/dist/lib/isInternalURL.cjs.map +1 -1
  132. package/dist/lib/isInternalURL.js.map +1 -1
  133. package/dist/package.json.cjs +5 -0
  134. package/dist/package.json.cjs.map +1 -0
  135. package/dist/package.json.js +5 -0
  136. package/dist/package.json.js.map +1 -0
  137. package/dist/types.d.ts +42 -58
  138. package/dist/usePrismic.cjs +3 -2
  139. package/dist/usePrismic.cjs.map +1 -1
  140. package/dist/usePrismic.d.ts +13 -5
  141. package/dist/usePrismic.js +2 -1
  142. package/dist/usePrismic.js.map +1 -1
  143. package/package.json +33 -36
  144. package/src/PrismicEmbed.vue +42 -0
  145. package/src/PrismicImage.vue +160 -0
  146. package/src/PrismicLink.vue +191 -0
  147. package/src/PrismicRichText/DeprecatedPrismicRichText.vue +130 -0
  148. package/src/PrismicRichText/PrismicRichText.vue +157 -0
  149. package/src/PrismicRichText/PrismicRichTextDefaultComponent.vue +63 -0
  150. package/src/PrismicRichText/PrismicRichTextSerialize.vue +52 -0
  151. package/src/PrismicRichText/getRichTextComponentProps.ts +63 -0
  152. package/src/PrismicRichText/index.ts +3 -0
  153. package/src/PrismicRichText/types.ts +37 -0
  154. package/src/PrismicText.vue +63 -0
  155. package/src/SliceZone/SliceZone.vue +113 -0
  156. package/src/SliceZone/TODOSliceComponent.ts +49 -0
  157. package/src/SliceZone/defineSliceZoneComponents.ts +67 -0
  158. package/src/SliceZone/getSliceComponentProps.ts +98 -0
  159. package/src/SliceZone/index.ts +13 -0
  160. package/src/SliceZone/types.ts +163 -0
  161. package/src/createPrismic.ts +54 -53
  162. package/src/index.ts +33 -58
  163. package/src/lib/Wrapper.vue +22 -0
  164. package/src/lib/devMsg.ts +20 -0
  165. package/src/lib/isInternalURL.ts +4 -4
  166. package/src/types.ts +91 -109
  167. package/src/usePrismic.ts +16 -9
  168. package/dist/components/PrismicEmbed.cjs +0 -36
  169. package/dist/components/PrismicEmbed.cjs.map +0 -1
  170. package/dist/components/PrismicEmbed.d.ts +0 -59
  171. package/dist/components/PrismicEmbed.js +0 -36
  172. package/dist/components/PrismicEmbed.js.map +0 -1
  173. package/dist/components/PrismicImage.cjs +0 -122
  174. package/dist/components/PrismicImage.cjs.map +0 -1
  175. package/dist/components/PrismicImage.d.ts +0 -163
  176. package/dist/components/PrismicImage.js +0 -122
  177. package/dist/components/PrismicImage.js.map +0 -1
  178. package/dist/components/PrismicLink.cjs +0 -115
  179. package/dist/components/PrismicLink.cjs.map +0 -1
  180. package/dist/components/PrismicLink.d.ts +0 -192
  181. package/dist/components/PrismicLink.js +0 -115
  182. package/dist/components/PrismicLink.js.map +0 -1
  183. package/dist/components/PrismicRichText.cjs +0 -108
  184. package/dist/components/PrismicRichText.cjs.map +0 -1
  185. package/dist/components/PrismicRichText.d.ts +0 -161
  186. package/dist/components/PrismicRichText.js +0 -108
  187. package/dist/components/PrismicRichText.js.map +0 -1
  188. package/dist/components/PrismicText.cjs +0 -57
  189. package/dist/components/PrismicText.cjs.map +0 -1
  190. package/dist/components/PrismicText.d.ts +0 -119
  191. package/dist/components/PrismicText.js +0 -57
  192. package/dist/components/PrismicText.js.map +0 -1
  193. package/dist/components/SliceZone.cjs +0 -156
  194. package/dist/components/SliceZone.cjs.map +0 -1
  195. package/dist/components/SliceZone.d.ts +0 -375
  196. package/dist/components/SliceZone.js +0 -156
  197. package/dist/components/SliceZone.js.map +0 -1
  198. package/dist/components/index.d.ts +0 -12
  199. package/dist/composables.cjs +0 -40
  200. package/dist/composables.cjs.map +0 -1
  201. package/dist/composables.d.ts +0 -384
  202. package/dist/composables.js +0 -40
  203. package/dist/composables.js.map +0 -1
  204. package/dist/globalExtensions.d.ts +0 -11
  205. package/dist/injectionSymbols.cjs +0 -5
  206. package/dist/injectionSymbols.cjs.map +0 -1
  207. package/dist/injectionSymbols.d.ts +0 -9
  208. package/dist/injectionSymbols.js +0 -5
  209. package/dist/injectionSymbols.js.map +0 -1
  210. package/dist/lib/__PRODUCTION__.cjs +0 -8
  211. package/dist/lib/__PRODUCTION__.cjs.map +0 -1
  212. package/dist/lib/__PRODUCTION__.d.ts +0 -7
  213. package/dist/lib/__PRODUCTION__.js +0 -8
  214. package/dist/lib/__PRODUCTION__.js.map +0 -1
  215. package/dist/lib/getSlots.cjs +0 -19
  216. package/dist/lib/getSlots.cjs.map +0 -1
  217. package/dist/lib/getSlots.d.ts +0 -14
  218. package/dist/lib/getSlots.js +0 -19
  219. package/dist/lib/getSlots.js.map +0 -1
  220. package/dist/lib/simplyResolveComponent.cjs +0 -8
  221. package/dist/lib/simplyResolveComponent.cjs.map +0 -1
  222. package/dist/lib/simplyResolveComponent.d.ts +0 -12
  223. package/dist/lib/simplyResolveComponent.js +0 -8
  224. package/dist/lib/simplyResolveComponent.js.map +0 -1
  225. package/dist/useStatefulPrismicClientMethod.cjs +0 -39
  226. package/dist/useStatefulPrismicClientMethod.cjs.map +0 -1
  227. package/dist/useStatefulPrismicClientMethod.d.ts +0 -64
  228. package/dist/useStatefulPrismicClientMethod.js +0 -39
  229. package/dist/useStatefulPrismicClientMethod.js.map +0 -1
  230. package/src/components/PrismicEmbed.ts +0 -91
  231. package/src/components/PrismicImage.ts +0 -309
  232. package/src/components/PrismicLink.ts +0 -313
  233. package/src/components/PrismicRichText.ts +0 -282
  234. package/src/components/PrismicText.ts +0 -167
  235. package/src/components/SliceZone.ts +0 -619
  236. package/src/components/index.ts +0 -46
  237. package/src/composables.ts +0 -474
  238. package/src/globalExtensions.ts +0 -12
  239. package/src/injectionSymbols.ts +0 -17
  240. package/src/lib/__PRODUCTION__.ts +0 -12
  241. package/src/lib/getSlots.ts +0 -34
  242. package/src/lib/simplyResolveComponent.ts +0 -23
  243. package/src/useStatefulPrismicClientMethod.ts +0 -156
  244. package/vetur/attributes.json +0 -113
  245. package/vetur/tags.json +0 -60
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.json.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,5 @@
1
+ const version = "5.0.0-alpha.0";
2
+ export {
3
+ version
4
+ };
5
+ //# sourceMappingURL=package.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/types.d.ts CHANGED
@@ -1,20 +1,21 @@
1
- import type { ClientConfig, CreateClient, HTMLRichTextFunctionSerializer, HTMLRichTextMapSerializer, LinkResolverFunction, asDate, asHTML, asImagePixelDensitySrcSet, asImageSrc, asImageWidthSrcSet, asLink, asLinkAttrs, asText, cookie, documentToLinkField, filter, isFilled } from "@prismicio/client";
1
+ import type { AsLinkAttrsConfig, ClientConfig, CreateClient, HTMLRichTextFunctionSerializer, HTMLRichTextMapSerializer, LinkResolverFunction, asDate, asHTML, asImagePixelDensitySrcSet, asImageSrc, asImageWidthSrcSet, asLink, asLinkAttrs, asText, cookie, documentToLinkField, filter, isFilled } from "@prismicio/client";
2
2
  import type { App, ConcreteComponent, DefineComponent, Raw, Ref } from "vue";
3
- import type { SliceComponentType } from "./components/SliceZone";
3
+ import type { VueRichTextSerializer } from "./PrismicRichText/types";
4
+ import type { SliceComponentType } from "./SliceZone";
4
5
  /**
5
6
  * Options used by `@prismicio/vue` components.
6
7
  */
7
8
  type PrismicPluginComponentsOptions = {
8
9
  /**
9
- * Value of the `rel` attribute to use on links rendered with
10
- * `target="_blank"`
10
+ * The `rel` attribute for the link. By default, `"noreferrer"` is provided if
11
+ * the link's URL is external. This prop can be provided a function to use the
12
+ * link's metadata to determine the `rel` value.
11
13
  *
12
- * @defaultValue `"noopener noreferrer"`
14
+ * @defaultValue `"noreferrer"`
13
15
  */
14
- linkBlankTargetRelAttribute?: string;
16
+ linkRel?: AsLinkAttrsConfig["rel"];
15
17
  /**
16
- * An HTML tag name, a component, or a functional component used to render
17
- * internal links.
18
+ * An HTML tag name or a component used to render internal links.
18
19
  *
19
20
  * @remarks
20
21
  * HTML tag names will be rendered using the anchor tag interface (`href`,
@@ -22,12 +23,12 @@ type PrismicPluginComponentsOptions = {
22
23
  * @remarks
23
24
  * Components will be rendered using Vue Router {@link RouterLink} interface
24
25
  * (`to` props).
26
+ *
25
27
  * @defaultValue {@link RouterLink}
26
28
  */
27
- linkInternalComponent?: string | ConcreteComponent | Raw<DefineComponent>;
29
+ linkInternalComponent?: ComponentOrTagName;
28
30
  /**
29
- * An HTML tag name, a component, or a functional component used to render
30
- * external links.
31
+ * An HTML tag name or a component used to render external links.
31
32
  *
32
33
  * @remarks
33
34
  * HTML tag names will be rendered using the anchor tag interface (`href`,
@@ -35,20 +36,10 @@ type PrismicPluginComponentsOptions = {
35
36
  * @remarks
36
37
  * Components will be rendered using Vue Router {@link RouterLink} interface
37
38
  * (`to` props).
38
- * @defaultValue `"a"`
39
- */
40
- linkExternalComponent?: string | ConcreteComponent | Raw<DefineComponent>;
41
- /**
42
- * An HTML tag name, a component, or a functional component used to render
43
- * images.
44
39
  *
45
- * @remarks
46
- * HTML tag names and components will be rendered using the `img` tag
47
- * interface (`src` and `alt` attribute). Components will also receive an
48
- * additional `copyright` props.
49
- * @defaultValue `"img"`
40
+ * @defaultValue `"a"`
50
41
  */
51
- imageComponent?: string | ConcreteComponent | Raw<DefineComponent>;
42
+ linkExternalComponent?: ComponentOrTagName;
52
43
  /**
53
44
  * Default widths to use when rendering an image with `widths="defaults"`
54
45
  *
@@ -56,6 +47,7 @@ type PrismicPluginComponentsOptions = {
56
47
  * Consider configuring image widths within your content type definition and
57
48
  * using `widths="auto"` instead to give content writers the ability to crop
58
49
  * images in the editor.
50
+ *
59
51
  * @defaultValue `@prismicio/client` defaults
60
52
  */
61
53
  imageWidthSrcSetDefaults?: number[];
@@ -66,6 +58,13 @@ type PrismicPluginComponentsOptions = {
66
58
  * @defaultValue `@prismicio/client` defaults
67
59
  */
68
60
  imagePixelDensitySrcSetDefaults?: number[];
61
+ /**
62
+ * An optional map of Rich Text block types to Vue Components. It is used to
63
+ * render Rich Text or title fields.
64
+ *
65
+ * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
66
+ */
67
+ richTextComponents?: VueRichTextSerializer;
69
68
  /**
70
69
  * A component or a functional component rendered if a component mapping from
71
70
  * the `components` prop cannot be found.
@@ -93,18 +92,13 @@ type PrismicPluginOptionsBase = {
93
92
  * An optional HTML serializer to customize the way rich text fields are
94
93
  * rendered.
95
94
  *
96
- * @see HTML serializer documentation {@link https://prismic.io/docs/core-concepts/html-serializer}
97
- */
98
- richTextSerializer?: HTMLRichTextFunctionSerializer | HTMLRichTextMapSerializer;
99
- /**
100
- * An optional HTML serializer to customize the way rich text fields are
101
- * rendered.
102
- *
103
- * @deprecated Use `richTextSerializer` instead.
95
+ * @remarks
96
+ * To provide global components for the `<PrismicRichText />` component, use
97
+ * the `components.richTextComponents` option instead.
104
98
  *
105
99
  * @see HTML serializer documentation {@link https://prismic.io/docs/core-concepts/html-serializer}
106
100
  */
107
- htmlSerializer?: HTMLRichTextFunctionSerializer | HTMLRichTextMapSerializer;
101
+ richTextSerializer?: HTMLRichTextFunctionSerializer | HTMLRichTextMapSerializer;
108
102
  /**
109
103
  * Whether or not to inject components globally.
110
104
  *
@@ -132,6 +126,7 @@ type PrismicPluginOptionsWithClient = PrismicPluginOptionsBase & {
132
126
  * The client will be used by `@prismicio/vue` composables, such as
133
127
  * {@link usePrismicDocuments} and exposed through `this.$prismic.client` and
134
128
  * `usePrismic().client`.
129
+ *
135
130
  * @see Prismic client documentation {@link https://prismic.io/docs/technologies/javascript}
136
131
  */
137
132
  client: ReturnType<CreateClient>;
@@ -162,14 +157,15 @@ type PrismicPluginOptionsWithEndpoint = PrismicPluginOptionsBase & {
162
157
  * Said client will be used by `@prismicio/vue` composables, such as
163
158
  * {@link usePrismicDocuments} and exposed through `this.$prismic.client` and
164
159
  * `usePrismic().client`.
160
+ *
165
161
  * @example
166
162
  *
167
163
  * ```javascript
168
164
  * // A repository ID
169
- * "my-repo";
165
+ * "my-repo"
170
166
  *
171
167
  * //A full repository endpoint
172
- * "https://my-repo.cdn.prismic.io/api/v2";
168
+ * "https://my-repo.cdn.prismic.io/api/v2"
173
169
  * ```
174
170
  *
175
171
  * @see Prismic client documentation {@link https://prismic.io/docs/technologies/javascript}
@@ -266,6 +262,7 @@ export type PrismicPluginHelpers = {
266
262
  * @remarks
267
263
  * If no `htmlSerializer` is provided the function will use the one provided
268
264
  * to the plugin at {@link PrismicPluginOptions.htmlSerializer} if available.
265
+ *
269
266
  * @see Templating rich text and title fields {@link https://prismic.io/docs/technologies/vue-template-content#rich-text-and-titles}
270
267
  */
271
268
  asHTML: typeof asHTML;
@@ -276,6 +273,7 @@ export type PrismicPluginHelpers = {
276
273
  * @remarks
277
274
  * If no `linkResolver` is provided the function will use the one provided to
278
275
  * the plugin at {@link PrismicPluginOptions.linkResolver} if available.
276
+ *
279
277
  * @see Templating link fields {@link https://prismic.io/docs/technologies/vue-template-content#links-and-content-relationships}
280
278
  */
281
279
  asLink: typeof asLink;
@@ -286,6 +284,7 @@ export type PrismicPluginHelpers = {
286
284
  * @remarks
287
285
  * If no `linkResolver` is provided the function will use the one provided to
288
286
  * the plugin at {@link PrismicPluginOptions.linkResolver} if available.
287
+ *
289
288
  * @see Templating link fields {@link https://prismic.io/docs/technologies/vue-template-content#links-and-content-relationships}
290
289
  */
291
290
  asLinkAttrs: typeof asLinkAttrs;
@@ -295,19 +294,19 @@ export type PrismicPluginHelpers = {
295
294
  */
296
295
  asDate: typeof asDate;
297
296
  /**
298
- * Returns the URL of an Image field with optional image transformations (via
297
+ * Returns the URL of an image field with optional image transformations (via
299
298
  * Imgix URL parameters). This is `@prismicio/client` {@link asImageSrc}
300
299
  * function.
301
300
  */
302
301
  asImageSrc: typeof asImageSrc;
303
302
  /**
304
- * Creates a width-based `srcset` from an Image field with optional image
303
+ * Creates a width-based `srcset` from an image field with optional image
305
304
  * transformations (via Imgix URL parameters). This is `@prismicio/client`
306
305
  * {@link asImageWidthSrcSet} function.
307
306
  */
308
307
  asImageWidthSrcSet: typeof asImageWidthSrcSet;
309
308
  /**
310
- * Creates a pixel-density-based `srcset` from an Image field with optional
309
+ * Creates a pixel-density-based `srcset` from an image field with optional
311
310
  * image transformations (via Imgix URL parameters). This is
312
311
  * `@prismicio/client` {@link asImagePixelDensitySrcSet} function.
313
312
  */
@@ -343,27 +342,6 @@ export type PrismicPlugin = {
343
342
  */
344
343
  install: (app: App) => void;
345
344
  } & PrismicPluginClient & PrismicPluginHelpers;
346
- /**
347
- * States of a `@prismicio/client` composable.
348
- */
349
- export declare const enum PrismicClientComposableState {
350
- /**
351
- * The composable has not started fetching.
352
- */
353
- Idle = "idle",
354
- /**
355
- * The composable is fetching data.
356
- */
357
- Pending = "pending",
358
- /**
359
- * The composable sucessfully fetched data.
360
- */
361
- Success = "success",
362
- /**
363
- * The composable failed to fetch data.
364
- */
365
- Error = "error"
366
- }
367
345
  /**
368
346
  * Type to transform a static object into one that allows passing Refs as
369
347
  * values.
@@ -381,4 +359,10 @@ export type VueUseOptions<T> = {
381
359
  export type VueUseParameters<T> = {
382
360
  [K in keyof T]: T extends number ? Ref<T[K]> | T[K] : T[K];
383
361
  };
362
+ /**
363
+ * A component or a tag name to be used as props.
364
+ *
365
+ * @internal
366
+ */
367
+ export type ComponentOrTagName = string | ConcreteComponent | Raw<DefineComponent>;
384
368
  export {};
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("vue");
4
- const injectionSymbols = require("./injectionSymbols.cjs");
4
+ const prismicKey = Symbol("prismic");
5
5
  const usePrismic = () => {
6
- return vue.inject(injectionSymbols.prismicKey, { options: { endpoint: "" } });
6
+ return vue.inject(prismicKey, { options: { endpoint: "" } });
7
7
  };
8
+ exports.prismicKey = prismicKey;
8
9
  exports.usePrismic = usePrismic;
9
10
  //# sourceMappingURL=usePrismic.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePrismic.cjs","sources":["../../src/usePrismic.ts"],"sourcesContent":["import { inject } from \"vue\";\n\nimport { PrismicPlugin } from \"./types\";\n\nimport { prismicKey } from \"./injectionSymbols\";\n\n/**\n * Accesses `@prismicio/vue` plugin interface.\n *\n * @example\n *\n * ```javascript\n * // With the composition API\n * import { usePrismic } from \"@prismicio/vue\";\n *\n * export default {\n * \tsetup() {\n * \t\tconst prismic = usePrismic();\n *\n * \t\treturn {};\n * \t},\n * };\n * ```\n *\n * @returns The interface {@link PrismicPlugin}\n */\nexport const usePrismic = (): PrismicPlugin => {\n\treturn inject(prismicKey, { options: { endpoint: \"\" } } as PrismicPlugin);\n};\n"],"names":["inject","prismicKey"],"mappings":";;;;AA0BO,MAAM,aAAa,MAAoB;AACtC,SAAAA,IAAAA,OAAOC,iBAAAA,YAAY,EAAE,SAAS,EAAE,UAAU,MAAuB;AACzE;;"}
1
+ {"version":3,"file":"usePrismic.cjs","sources":["../../src/usePrismic.ts"],"sourcesContent":["import type { InjectionKey } from \"vue\"\nimport { inject } from \"vue\"\n\nimport type { PrismicPlugin } from \"./types\"\n\n/**\n * `@prismicio/vue` plugin interface interface location used for\n * {@link usePrismic}.\n *\n * @internal\n */\nexport const prismicKey = Symbol(\"prismic\") as InjectionKey<PrismicPlugin>\n\n/**\n * Accesses `@prismicio/vue` plugin interface.\n *\n * @example\n *\n * ```javascript\n * // With the composition API\n * import { usePrismic } from \"@prismicio/vue\"\n *\n * export default {\n * \tsetup() {\n * \t\tconst prismic = usePrismic()\n *\n * \t\treturn {}\n * \t},\n * }\n * ```\n *\n * @returns The interface {@link PrismicPlugin}\n */\nexport const usePrismic = (): PrismicPlugin => {\n\treturn inject(prismicKey, { options: { endpoint: \"\" } } as PrismicPlugin)\n}\n"],"names":["inject"],"mappings":";;;AAWa,MAAA,aAAa,OAAO,SAAS;AAsBnC,MAAM,aAAa,MAAoB;AACtC,SAAAA,IAAAA,OAAO,YAAY,EAAE,SAAS,EAAE,UAAU,GAAA,GAAuB;AACzE;;;"}
@@ -1,4 +1,12 @@
1
- import { PrismicPlugin } from "./types";
1
+ import type { InjectionKey } from "vue";
2
+ import type { PrismicPlugin } from "./types";
3
+ /**
4
+ * `@prismicio/vue` plugin interface interface location used for
5
+ * {@link usePrismic}.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare const prismicKey: InjectionKey<PrismicPlugin>;
2
10
  /**
3
11
  * Accesses `@prismicio/vue` plugin interface.
4
12
  *
@@ -6,15 +14,15 @@ import { PrismicPlugin } from "./types";
6
14
  *
7
15
  * ```javascript
8
16
  * // With the composition API
9
- * import { usePrismic } from "@prismicio/vue";
17
+ * import { usePrismic } from "@prismicio/vue"
10
18
  *
11
19
  * export default {
12
20
  * setup() {
13
- * const prismic = usePrismic();
21
+ * const prismic = usePrismic()
14
22
  *
15
- * return {};
23
+ * return {}
16
24
  * },
17
- * };
25
+ * }
18
26
  * ```
19
27
  *
20
28
  * @returns The interface {@link PrismicPlugin}
@@ -1,9 +1,10 @@
1
1
  import { inject } from "vue";
2
- import { prismicKey } from "./injectionSymbols.js";
2
+ const prismicKey = Symbol("prismic");
3
3
  const usePrismic = () => {
4
4
  return inject(prismicKey, { options: { endpoint: "" } });
5
5
  };
6
6
  export {
7
+ prismicKey,
7
8
  usePrismic
8
9
  };
9
10
  //# sourceMappingURL=usePrismic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePrismic.js","sources":["../../src/usePrismic.ts"],"sourcesContent":["import { inject } from \"vue\";\n\nimport { PrismicPlugin } from \"./types\";\n\nimport { prismicKey } from \"./injectionSymbols\";\n\n/**\n * Accesses `@prismicio/vue` plugin interface.\n *\n * @example\n *\n * ```javascript\n * // With the composition API\n * import { usePrismic } from \"@prismicio/vue\";\n *\n * export default {\n * \tsetup() {\n * \t\tconst prismic = usePrismic();\n *\n * \t\treturn {};\n * \t},\n * };\n * ```\n *\n * @returns The interface {@link PrismicPlugin}\n */\nexport const usePrismic = (): PrismicPlugin => {\n\treturn inject(prismicKey, { options: { endpoint: \"\" } } as PrismicPlugin);\n};\n"],"names":[],"mappings":";;AA0BO,MAAM,aAAa,MAAoB;AACtC,SAAA,OAAO,YAAY,EAAE,SAAS,EAAE,UAAU,MAAuB;AACzE;"}
1
+ {"version":3,"file":"usePrismic.js","sources":["../../src/usePrismic.ts"],"sourcesContent":["import type { InjectionKey } from \"vue\"\nimport { inject } from \"vue\"\n\nimport type { PrismicPlugin } from \"./types\"\n\n/**\n * `@prismicio/vue` plugin interface interface location used for\n * {@link usePrismic}.\n *\n * @internal\n */\nexport const prismicKey = Symbol(\"prismic\") as InjectionKey<PrismicPlugin>\n\n/**\n * Accesses `@prismicio/vue` plugin interface.\n *\n * @example\n *\n * ```javascript\n * // With the composition API\n * import { usePrismic } from \"@prismicio/vue\"\n *\n * export default {\n * \tsetup() {\n * \t\tconst prismic = usePrismic()\n *\n * \t\treturn {}\n * \t},\n * }\n * ```\n *\n * @returns The interface {@link PrismicPlugin}\n */\nexport const usePrismic = (): PrismicPlugin => {\n\treturn inject(prismicKey, { options: { endpoint: \"\" } } as PrismicPlugin)\n}\n"],"names":[],"mappings":";AAWa,MAAA,aAAa,OAAO,SAAS;AAsBnC,MAAM,aAAa,MAAoB;AACtC,SAAA,OAAO,YAAY,EAAE,SAAS,EAAE,UAAU,GAAA,GAAuB;AACzE;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/vue",
3
- "version": "4.2.3",
3
+ "version": "5.0.0-alpha.0",
4
4
  "description": "Vue plugin, components, and composables to fetch and present Prismic content",
5
5
  "keywords": [
6
6
  "typescript",
@@ -46,49 +46,50 @@
46
46
  "prepare": "npm run build",
47
47
  "release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
48
48
  "release:dry": "standard-version --dry-run",
49
- "release:beta": "npm run test && standard-version --release-as major --prerelease beta && git push --follow-tags && npm run build && npm publish --tag beta",
50
- "release:beta:dry": "standard-version --release-as major --prerelease beta --dry-run",
51
- "lint": "eslint --ext .js,.ts .",
52
- "types": "vitest typecheck --run && tsc --noEmit",
53
- "types:watch": "vitest typecheck",
49
+ "release:alpha": "npm run test && standard-version --release-as major --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
50
+ "release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
51
+ "lint": "eslint",
52
+ "types": "vitest --typecheck.only --run && vue-tsc --noEmit",
53
+ "types:watch": "vitest --typecheck.only",
54
54
  "unit": "vitest run --coverage",
55
55
  "unit:watch": "vitest watch",
56
56
  "size": "size-limit",
57
57
  "test": "npm run lint && npm run types && npm run unit && npm run build && npm run size"
58
58
  },
59
59
  "dependencies": {
60
- "@prismicio/client": "^7.4.0",
61
- "isomorphic-unfetch": "^3.1.0",
62
- "vue-router": "^4.3.0"
60
+ "@prismicio/client": "^7.12.0",
61
+ "esm-env": "^1.2.1",
62
+ "vue-router": "^4.5.0"
63
63
  },
64
64
  "devDependencies": {
65
- "@prismicio/mock": "^0.3.1",
66
- "@size-limit/preset-small-lib": "^8.2.6",
65
+ "@eslint/js": "^9.16.0",
66
+ "@prismicio/mock": "^0.4.0",
67
+ "@size-limit/preset-small-lib": "^11.1.6",
67
68
  "@trivago/prettier-plugin-sort-imports": "^4.3.0",
68
69
  "@types/jsdom-global": "^3.0.7",
69
- "@typescript-eslint/eslint-plugin": "^5.62.0",
70
- "@typescript-eslint/parser": "^5.62.0",
71
- "@vitejs/plugin-vue": "^4.6.2",
72
- "@vitest/coverage-v8": "^0.34.6",
73
- "@vue/compiler-sfc": "^3.4.21",
74
- "@vue/eslint-config-typescript": "^11.0.3",
75
- "@vue/test-utils": "^2.4.5",
76
- "eslint": "^8.57.0",
77
- "eslint-config-prettier": "^8.10.0",
78
- "eslint-plugin-prettier": "^4.2.1",
79
- "eslint-plugin-tsdoc": "^0.2.17",
80
- "eslint-plugin-vue": "^9.24.0",
81
- "jsdom": "^24.0.0",
70
+ "@vitejs/plugin-vue": "^5.2.1",
71
+ "@vitest/coverage-v8": "^2.1.8",
72
+ "@vue/eslint-config-typescript": "^14.1.4",
73
+ "@vue/test-utils": "^2.4.6",
74
+ "eslint": "^9.16.0",
75
+ "eslint-config-prettier": "^9.1.0",
76
+ "eslint-plugin-prettier": "^5.2.1",
77
+ "eslint-plugin-tsdoc": "^0.4.0",
78
+ "eslint-plugin-vue": "^9.32.0",
79
+ "jsdom": "^25.0.1",
82
80
  "jsdom-global": "^3.0.2",
83
- "prettier": "^2.8.8",
84
- "prettier-plugin-jsdoc": "^0.4.2",
85
- "size-limit": "^8.2.6",
81
+ "prettier": "^3.4.2",
82
+ "prettier-plugin-jsdoc": "^1.3.0",
83
+ "size-limit": "^11.1.6",
86
84
  "standard-version": "^9.5.0",
87
- "typescript": "^5.4.3",
88
- "vite": "^4.5.3",
89
- "vite-plugin-sdk": "^0.1.2",
90
- "vitest": "^0.34.6",
91
- "vue": "^3.4.21"
85
+ "typescript": "~5.6.3",
86
+ "typescript-eslint": "^8.17.0",
87
+ "vite": "^6.0.2",
88
+ "vite-plugin-dts": "^4.3.0",
89
+ "vite-plugin-sdk": "^0.1.3",
90
+ "vitest": "^2.1.8",
91
+ "vue": "^3.5.13",
92
+ "vue-tsc": "^2.1.10"
92
93
  },
93
94
  "peerDependencies": {
94
95
  "vue": "^3.0.0"
@@ -98,9 +99,5 @@
98
99
  },
99
100
  "publishConfig": {
100
101
  "access": "public"
101
- },
102
- "vetur": {
103
- "tags": "vetur/tags.json",
104
- "attributes": "vetur/attributes.json"
105
102
  }
106
103
  }
@@ -0,0 +1,42 @@
1
+ <script lang="ts" setup>
2
+ import type { EmbedField } from "@prismicio/client"
3
+ import { isFilled } from "@prismicio/client"
4
+
5
+ import type { ComponentOrTagName } from "./types"
6
+
7
+ /**
8
+ * The default component rendered to wrap the embed.
9
+ */
10
+ const defaultWrapper = "div"
11
+
12
+ /**
13
+ * Props for `<PrismicEmbed />`.
14
+ */
15
+ export type PrismicEmbedProps = {
16
+ /**
17
+ * The Prismic EMbed field to render.
18
+ */
19
+ field: EmbedField
20
+
21
+ /**
22
+ * An HTML tag name or a component used to wrap the output.
23
+ *
24
+ * @defaultValue `"div"`
25
+ */
26
+ wrapper?: ComponentOrTagName
27
+ }
28
+
29
+ defineProps<PrismicEmbedProps>()
30
+ defineOptions({ name: "PrismicEmbed" })
31
+ </script>
32
+
33
+ <template>
34
+ <component
35
+ v-if="isFilled.embed(field)"
36
+ :is="wrapper || defaultWrapper"
37
+ :data-oembed="field.embed_url"
38
+ :data-oembed-type="field.type"
39
+ :data-oembed-provider="field.provider_name"
40
+ v-html="field.html"
41
+ />
42
+ </template>
@@ -0,0 +1,160 @@
1
+ <script lang="ts" setup>
2
+ import type { ImageField, asImageSrc } from "@prismicio/client"
3
+ import {
4
+ asImagePixelDensitySrcSet,
5
+ asImageWidthSrcSet,
6
+ isFilled,
7
+ } from "@prismicio/client"
8
+ import { DEV } from "esm-env"
9
+ import { computed, watchEffect } from "vue"
10
+
11
+ import { devMsg } from "./lib/devMsg"
12
+
13
+ import { usePrismic } from "./usePrismic"
14
+
15
+ /**
16
+ * Props for `<PrismicImage />`.
17
+ */
18
+ export type PrismicImageProps = {
19
+ /**
20
+ * The Prismic image field or thumbnail to render.
21
+ */
22
+ field: ImageField | ImageField<string>
23
+
24
+ /**
25
+ * An object of Imgix URL API parameters to transform the image.
26
+ *
27
+ * See: https://docs.imgix.com/apis/rendering
28
+ */
29
+ imgixParams?: Parameters<typeof asImageSrc>[1]
30
+
31
+ /**
32
+ * Declare an image as decorative by providing `alt=""`.
33
+ *
34
+ * See:
35
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/alt#decorative_images
36
+ */
37
+ alt?: ""
38
+
39
+ /**
40
+ * Declare an image as decorative only if the image field does not have
41
+ * alternative text by providing `fallbackAlt=""`.
42
+ *
43
+ * See:
44
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/alt#decorative_images
45
+ */
46
+ fallbackAlt?: ""
47
+ } & (
48
+ | {
49
+ /**
50
+ * Widths used to build a `srcset` value for the image field.
51
+ *
52
+ * If a `widths` prop is not given or `"defaults"` is passed, the
53
+ * following widths will be used: 640, 750, 828, 1080, 1200, 1920, 2048,
54
+ * 3840.
55
+ *
56
+ * If the image field contains responsive views, each responsive view can
57
+ * be used as a width in the resulting `srcset` by passing `"thumbnails"`
58
+ * as the `widths` prop.
59
+ */
60
+ widths?:
61
+ | NonNullable<Parameters<typeof asImageWidthSrcSet>[1]>["widths"]
62
+ | "thumbnails"
63
+ | "defaults"
64
+ /**
65
+ * Not used when the `widths` prop is used.
66
+ */
67
+ pixelDensities?: never
68
+ }
69
+ | {
70
+ /**
71
+ * Not used when the `widths` prop is used.
72
+ */
73
+ widths?: never
74
+ /**
75
+ * Pixel densities used to build a `srcset` value for the image field.
76
+ *
77
+ * If a `pixelDensities` prop is passed `"defaults"`, the following pixel
78
+ * densities will be used: 1, 2, 3.
79
+ */
80
+ pixelDensities:
81
+ | NonNullable<
82
+ Parameters<typeof asImagePixelDensitySrcSet>[1]
83
+ >["pixelDensities"]
84
+ | "defaults"
85
+ }
86
+ )
87
+
88
+ const props = defineProps<PrismicImageProps>()
89
+ defineOptions({ name: "PrismicImage" })
90
+
91
+ const { options } = usePrismic()
92
+
93
+ if (DEV) {
94
+ watchEffect(() => {
95
+ if (typeof props.alt === "string" && props.alt !== "") {
96
+ console.warn(
97
+ `[PrismicImage] The "alt" prop can only be used to declare an image as decorative by passing an empty string (alt="") but was provided a non-empty string. You can resolve this warning by removing the "alt" prop or changing it to alt="". For more details, see ${devMsg(
98
+ "alt-must-be-an-empty-string",
99
+ )}`,
100
+ )
101
+ }
102
+
103
+ if (typeof props.fallbackAlt === "string" && props.fallbackAlt !== "") {
104
+ console.warn(
105
+ `[PrismicImage] The "fallbackAlt" prop can only be used to declare an image as decorative by passing an empty string (fallbackAlt="") but was provided a non-empty string. You can resolve this warning by removing the "fallbackAlt" prop or changing it to fallbackAlt="". For more details, see ${devMsg(
106
+ "alt-must-be-an-empty-string",
107
+ )}`,
108
+ )
109
+ }
110
+
111
+ if (props.widths && props.pixelDensities) {
112
+ console.warn(
113
+ `[PrismicImage] Only one of "widths" or "pixelDensities" props can be provided. You can resolve this warning by removing either the "widths" or "pixelDensities" prop. "widths" will be used in this case.`,
114
+ )
115
+ }
116
+ })
117
+ }
118
+
119
+ const image = computed(() => {
120
+ if (!isFilled.imageThumbnail(props.field)) {
121
+ return
122
+ }
123
+
124
+ let src: string | undefined
125
+ let srcSet: string | undefined
126
+ if (props.widths || !props.pixelDensities) {
127
+ const res = asImageWidthSrcSet(props.field, {
128
+ ...props.imgixParams,
129
+ widths:
130
+ props.widths === "defaults"
131
+ ? options.components?.imageWidthSrcSetDefaults
132
+ : props.widths,
133
+ })
134
+
135
+ src = res.src
136
+ srcSet = res.srcset
137
+ } else if (props.pixelDensities) {
138
+ const res = asImagePixelDensitySrcSet(props.field, {
139
+ ...props.imgixParams,
140
+ pixelDensities:
141
+ props.pixelDensities === "defaults"
142
+ ? options.components?.imagePixelDensitySrcSetDefaults
143
+ : props.pixelDensities,
144
+ })
145
+
146
+ src = res.src
147
+ srcSet = res.srcset
148
+ }
149
+
150
+ return {
151
+ src,
152
+ srcSet,
153
+ alt: props.alt ?? (props.field.alt || props.fallbackAlt),
154
+ }
155
+ })
156
+ </script>
157
+
158
+ <template>
159
+ <img v-if="image" :src="image.src" :srcset="image.srcSet" :alt="image.alt" />
160
+ </template>