@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
@@ -1,375 +0,0 @@
1
- import { Slice } from "@prismicio/client";
2
- import { AllowedComponentProps, ComponentCustomProps, ConcreteComponent, DefineComponent, FunctionalComponent, PropType, Raw, VNodeProps, defineAsyncComponent } from "vue";
3
- /**
4
- * Returns the type of a `SliceLike` type.
5
- *
6
- * @typeParam TSlice - The Slice from which the type will be extracted.
7
- */
8
- type ExtractSliceType<TSlice extends SliceLike> = TSlice extends SliceLikeRestV2 ? TSlice["slice_type"] : TSlice extends SliceLikeGraphQL ? TSlice["type"] : never;
9
- /**
10
- * The minimum required properties to represent a Prismic Slice from the Prismic
11
- * Rest API V2 for the `<SliceZone>` component.
12
- *
13
- * If using Prismic's Rest API V2, use the `Slice` export from
14
- * `@prismicio/client` for a full interface.
15
- *
16
- * @typeParam TSliceType - Type name of the Slice.
17
- */
18
- export type SliceLikeRestV2<TSliceType extends string = string> = Pick<Slice<TSliceType>, "id" | "slice_type">;
19
- /**
20
- * The minimum required properties to represent a Prismic Slice from the Prismic
21
- * GraphQL API for the `<SliceZone>` component.
22
- *
23
- * @typeParam TSliceType - Type name of the Slice.
24
- */
25
- export type SliceLikeGraphQL<TSliceType extends string = string> = {
26
- type: Slice<TSliceType>["slice_type"];
27
- };
28
- /**
29
- * The minimum required properties to represent a Prismic Slice for the
30
- * `<SliceZone />` component.
31
- *
32
- * If using Prismic's Rest API V2, use the `Slice` export from
33
- * `@prismicio/client` for a full interface.
34
- *
35
- * @typeParam TSliceType - Type name of the Slice
36
- */
37
- export type SliceLike<TSliceType extends string = string> = (SliceLikeRestV2<TSliceType> | SliceLikeGraphQL<TSliceType>) & {
38
- /**
39
- * If `true`, this Slice has been modified from its original value using a
40
- * mapper and `@prismicio/client`'s `mapSliceZone()`.
41
- *
42
- * @internal
43
- */
44
- __mapped?: true;
45
- };
46
- /**
47
- * A looser version of the `SliceZone` type from `@prismicio/client` using
48
- * `SliceLike`.
49
- *
50
- * If using Prismic's REST API, use the `SliceZone` export from
51
- * `@prismicio/client` for the full type.
52
- *
53
- * @typeParam TSlice - The type(s) of slices in the Slice Zone
54
- */
55
- export type SliceZoneLike<TSlice extends SliceLike = SliceLike> = readonly TSlice[];
56
- /**
57
- * Vue props for a component rendering content from a Prismic Slice using the
58
- * `<SliceZone />` component.
59
- *
60
- * @typeParam TSlice - The type(s) of slices in the Slice Zone
61
- * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made
62
- * available to all Slice components
63
- */
64
- export type SliceComponentProps<TSlice extends SliceLike = SliceLike, TContext = unknown> = {
65
- /**
66
- * Slice data for this component.
67
- */
68
- slice: TSlice;
69
- /**
70
- * The index of the Slice in the Slice Zone.
71
- */
72
- index: number;
73
- /**
74
- * All Slices from the Slice Zone to which the Slice belongs.
75
- */
76
- slices: SliceZoneLike<TSlice extends SliceLikeGraphQL ? SliceLikeGraphQL : SliceLikeRestV2>;
77
- /**
78
- * Arbitrary data passed to `<SliceZone />` and made available to all Slice
79
- * components.
80
- */
81
- context: TContext;
82
- };
83
- /**
84
- * Native Vue props for a component rendering content from a Prismic Slice using
85
- * the `<SliceZone />` component.
86
- *
87
- * @typeParam TSlice - The Slice type
88
- * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made
89
- * available to all Slice components
90
- */
91
- export type DefineComponentSliceComponentProps<TSlice extends SliceLike = any, TContext = unknown> = {
92
- slice: {
93
- type: PropType<SliceComponentProps<TSlice, TContext>["slice"]>;
94
- required: true;
95
- };
96
- index: {
97
- type: PropType<SliceComponentProps<TSlice, TContext>["index"]>;
98
- required: true;
99
- };
100
- slices: {
101
- type: PropType<SliceComponentProps<TSlice, TContext>["slices"]>;
102
- required: true;
103
- };
104
- context: {
105
- type: PropType<SliceComponentProps<TSlice, TContext>["context"]>;
106
- required: true;
107
- };
108
- };
109
- /**
110
- * Gets native Vue props for a component rendering content from a Prismic Slice
111
- * using the `<SliceZone />` component.
112
- *
113
- * Props are: `["slice", "index", "slices", "context"]`
114
- *
115
- * @example
116
- *
117
- * ```javascript
118
- * // Defining a new slice component
119
- * import { getSliceComponentProps } from "@prismicio/vue";
120
- *
121
- * export default {
122
- * props: getSliceComponentProps(),
123
- * };
124
- * ```
125
- *
126
- * @example
127
- *
128
- * ```javascript
129
- * // Defining a new slice component with visual hint
130
- * import { getSliceComponentProps } from "@prismicio/vue";
131
- *
132
- * export default {
133
- * props: getSliceComponentProps(["slice", "index", "slices", "context"]),
134
- * };
135
- * ```
136
- *
137
- * @typeParam TSlice - The Slice type
138
- * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made
139
- * available to all Slice components
140
- * @param propsHint - An optional array of prop names used for the sole purpose
141
- * of having a visual hint of which props are made available to the slice,
142
- * this parameters doesn't have any effect
143
- *
144
- * @returns Props object to use with {@link defineComponent}
145
- */
146
- export declare const getSliceComponentProps: <TSlice extends SliceLike = any, TContext = unknown>(propsHint?: ["slice", "index", "slices", "context"]) => DefineComponentSliceComponentProps<TSlice, TContext>;
147
- /**
148
- * A Vue component to be rendered for each instance of its Slice.
149
- *
150
- * @typeParam TSlice - The type(s) of slices in the Slice Zone
151
- * @typeParam TContext - Arbitrary data made available to all Slice components
152
- */
153
- export type SliceComponentType<TSlice extends SliceLike = any, TContext = unknown> = DefineComponent<{}, {}, any> | ReturnType<typeof defineAsyncComponent> | DefineComponent<SliceComponentProps<TSlice, TContext>> | FunctionalComponent<SliceComponentProps<TSlice, TContext>>;
154
- /**
155
- * This Slice component can be used as a reminder to provide a proper
156
- * implementation.
157
- *
158
- * This is also the default Vue component rendered when a component mapping
159
- * cannot be found in `<SliceZone />`.
160
- */
161
- export declare const TODOSliceComponent: import("vue").ComponentOptions<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions, any, any, any, any> | FunctionalComponent<any, {}, any, {}> | {
162
- new (...args: any[]): any;
163
- __isFragment?: never;
164
- __isTeleport?: never;
165
- __isSuspense?: never;
166
- } | FunctionalComponent<{
167
- slice: SliceLike;
168
- }, {}, any, {}> | FunctionalComponent<SliceComponentProps<any, unknown>, {}, any, {}>;
169
- /**
170
- * A record of Slice types mapped to Vue components. Each components will be
171
- * rendered for each instance of their Slice type.
172
- *
173
- * @typeParam TSlice - The type(s) of slices in the Slice Zone
174
- * @typeParam TContext - Arbitrary data made available to all Slice components
175
- */
176
- export type SliceZoneComponents<TSlice extends SliceLike = SliceLike, TContext = unknown> = {
177
- [SliceType in ExtractSliceType<TSlice>]: SliceComponentType<Extract<TSlice, SliceLike<SliceType>>, TContext> | string;
178
- };
179
- /**
180
- * Gets an optimized record of Slice types mapped to Vue components. Each
181
- * components will be rendered for each instance of their Slice type.
182
- *
183
- * @remarks
184
- * This is essentially an helper function to ensure {@link markRaw} is correctly
185
- * applied on each components, improving performances.
186
- * @example
187
- *
188
- * ```javascript
189
- * // Defining a slice components
190
- * import { defineSliceZoneComponents } from "@prismicio/vue";
191
- *
192
- * export default {
193
- * data() {
194
- * components: defineSliceZoneComponents({
195
- * foo: Foo,
196
- * bar: defineAsyncComponent(
197
- * () => new Promise((res) => res(Bar)),
198
- * ),
199
- * baz: "Baz",
200
- * }),
201
- * }
202
- * };
203
- * ```
204
- *
205
- * @typeParam TSlice - The type(s) of slices in the Slice Zone
206
- * @typeParam TContext - Arbitrary data made available to all Slice components
207
- *
208
- * @param components - {@link SliceZoneComponents}
209
- *
210
- * @returns A new optimized record of {@link SliceZoneComponents}
211
- */
212
- export declare const defineSliceZoneComponents: <TSlice extends SliceLike = any, TContext = unknown>(components: SliceZoneComponents<TSlice, TContext>) => SliceZoneComponents<TSlice, TContext>;
213
- /**
214
- * Arguments for a `<SliceZone>` `resolver` function.
215
- */
216
- export type SliceZoneResolverArgs<TSlice extends SliceLike = SliceLike> = {
217
- /**
218
- * The Slice to resolve to a Vue component..
219
- */
220
- slice: TSlice;
221
- /**
222
- * The name of the Slice.
223
- */
224
- sliceName: ExtractSliceType<TSlice>;
225
- /**
226
- * The index of the Slice in the Slice Zone.
227
- */
228
- i: number;
229
- };
230
- /**
231
- * A function that determines the rendered Vue component for each Slice in the
232
- * Slice Zone. If a nullish value is returned, the component will fallback to
233
- * the `components` or `defaultComponent` props to determine the rendered
234
- * component.
235
- *
236
- * @deprecated Use the `components` prop instead.
237
- *
238
- * @param args - Arguments for the resolver function.
239
- *
240
- * @returns The Vue component to render for a Slice.
241
- */
242
- export type SliceZoneResolver<TSlice extends SliceLike = any, TContext = unknown> = (args: SliceZoneResolverArgs<TSlice>) => SliceComponentType<any, TContext> | string | undefined | null;
243
- /**
244
- * Props for `<SliceZone />`.
245
- *
246
- * @typeParam TContext - Arbitrary data made available to all Slice components
247
- */
248
- export type SliceZoneProps<TContext = unknown> = {
249
- /**
250
- * List of Slice data from the Slice Zone.
251
- */
252
- slices: SliceZoneLike;
253
- /**
254
- * A record mapping Slice types to Vue components.
255
- */
256
- components?: SliceZoneComponents;
257
- /**
258
- * A function that determines the rendered Vue component for each Slice in the
259
- * Slice Zone.
260
- *
261
- * @deprecated Use the `components` prop instead.
262
- *
263
- * @param args - Arguments for the resolver function.
264
- *
265
- * @returns The Vue component to render for a Slice.
266
- */
267
- resolver?: SliceZoneResolver<any, TContext>;
268
- /**
269
- * Arbitrary data made available to all Slice components.
270
- */
271
- context?: TContext;
272
- /**
273
- * A component or a functional component rendered if a component mapping from
274
- * the `components` prop cannot be found.
275
- *
276
- * @remarks
277
- * Components will be rendered using the {@link SliceComponentProps} interface.
278
- *
279
- * @defaultValue The Slice Zone default component provided to `@prismicio/vue` plugin if configured, otherwise `null` when `process.env.NODE_ENV === "production"` else {@link TODOSliceComponent}.
280
- */
281
- defaultComponent?: SliceComponentType<any, TContext>;
282
- /**
283
- * An HTML tag name, a component, or a functional component used to wrap the
284
- * output. The Slice Zone is not wrapped by default.
285
- */
286
- wrapper?: string | ConcreteComponent | Raw<DefineComponent>;
287
- };
288
- /**
289
- * `<SliceZone />` implementation.
290
- *
291
- * @internal
292
- */
293
- export declare const SliceZoneImpl: DefineComponent<{
294
- slices: {
295
- type: PropType<SliceZoneLike<SliceLike & Record<string, unknown>>>;
296
- required: true;
297
- };
298
- components: {
299
- type: PropType<SliceZoneComponents>;
300
- default: undefined;
301
- required: false;
302
- };
303
- resolver: {
304
- type: PropType<SliceZoneResolver>;
305
- default: undefined;
306
- required: false;
307
- };
308
- context: {
309
- type: null;
310
- default: undefined;
311
- required: false;
312
- };
313
- defaultComponent: {
314
- type: PropType<SliceComponentType>;
315
- default: undefined;
316
- required: false;
317
- };
318
- wrapper: {
319
- type: PropType<string | ConcreteComponent | Raw<DefineComponent>>;
320
- default: undefined;
321
- required: false;
322
- };
323
- }, (() => null) | (() => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
324
- [key: string]: any;
325
- }> | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
326
- [key: string]: any;
327
- }>[]), unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
328
- slices: {
329
- type: PropType<SliceZoneLike<SliceLike & Record<string, unknown>>>;
330
- required: true;
331
- };
332
- components: {
333
- type: PropType<SliceZoneComponents>;
334
- default: undefined;
335
- required: false;
336
- };
337
- resolver: {
338
- type: PropType<SliceZoneResolver>;
339
- default: undefined;
340
- required: false;
341
- };
342
- context: {
343
- type: null;
344
- default: undefined;
345
- required: false;
346
- };
347
- defaultComponent: {
348
- type: PropType<SliceComponentType>;
349
- default: undefined;
350
- required: false;
351
- };
352
- wrapper: {
353
- type: PropType<string | ConcreteComponent | Raw<DefineComponent>>;
354
- default: undefined;
355
- required: false;
356
- };
357
- }>>, {
358
- context: any;
359
- components: SliceZoneComponents<SliceLike<string>, unknown>;
360
- resolver: SliceZoneResolver<any, unknown>;
361
- defaultComponent: SliceComponentType<any, unknown>;
362
- wrapper: string | ConcreteComponent | Raw<DefineComponent>;
363
- }, {}>;
364
- /**
365
- * Component to render a Prismic Slice Zone.
366
- *
367
- * @see Component props {@link SliceZoneProps}
368
- * @see Templating Slice Zones {@link https://prismic.io/docs/technologies/vue-template-content#slices-and-groups}
369
- */
370
- export declare const SliceZone: {
371
- new (): {
372
- $props: AllowedComponentProps & ComponentCustomProps & VNodeProps & SliceZoneProps;
373
- };
374
- };
375
- export {};
@@ -1,156 +0,0 @@
1
- import { defineComponent, computed, watchEffect, h, markRaw } from "vue";
2
- import { __PRODUCTION__ } from "../lib/__PRODUCTION__.js";
3
- import { simplyResolveComponent } from "../lib/simplyResolveComponent.js";
4
- import { usePrismic } from "../usePrismic.js";
5
- const getSliceComponentProps = (propsHint) => ({
6
- slice: {
7
- type: Object,
8
- required: true
9
- },
10
- index: {
11
- type: Number,
12
- required: true
13
- },
14
- slices: {
15
- type: Array,
16
- required: true
17
- },
18
- context: {
19
- type: null,
20
- required: true
21
- }
22
- });
23
- const TODOSliceComponent = __PRODUCTION__ ? () => null : /* @__PURE__ */ defineComponent({
24
- name: "TODOSliceComponent",
25
- props: {
26
- slice: {
27
- type: Object,
28
- required: true
29
- }
30
- },
31
- setup(props) {
32
- const type = computed(() => {
33
- return "slice_type" in props.slice ? props.slice.slice_type : props.slice.type;
34
- });
35
- watchEffect(() => {
36
- console.warn(`[SliceZone] Could not find a component for Slice type "${type.value}"`, props.slice);
37
- });
38
- return () => {
39
- return h("section", {
40
- "data-slice-zone-todo-component": "",
41
- "data-slice-type": type.value
42
- }, [`Could not find a component for Slice type "${type.value}"`]);
43
- };
44
- }
45
- });
46
- const defineSliceZoneComponents = (components) => {
47
- const result = {};
48
- let type;
49
- for (type in components) {
50
- const component = components[type];
51
- result[type] = typeof component === "string" ? component : markRaw(component);
52
- }
53
- return result;
54
- };
55
- const SliceZoneImpl = /* @__PURE__ */ defineComponent({
56
- name: "SliceZone",
57
- props: {
58
- slices: {
59
- type: Array,
60
- required: true
61
- },
62
- components: {
63
- type: Object,
64
- default: void 0,
65
- required: false
66
- },
67
- resolver: {
68
- type: Function,
69
- default: void 0,
70
- required: false
71
- },
72
- context: {
73
- type: null,
74
- default: void 0,
75
- required: false
76
- },
77
- defaultComponent: {
78
- type: Object,
79
- default: void 0,
80
- required: false
81
- },
82
- wrapper: {
83
- type: [String, Object, Function],
84
- default: void 0,
85
- required: false
86
- }
87
- },
88
- setup(props) {
89
- if (!props.slices) {
90
- return () => null;
91
- }
92
- if (!__PRODUCTION__) {
93
- if (props.resolver) {
94
- console.warn("The `resolver` prop is deprecated. Please replace it with a components map using the `components` prop.");
95
- }
96
- }
97
- const { options } = usePrismic();
98
- const renderedSlices = computed(() => {
99
- return props.slices.map((slice, index) => {
100
- var _a;
101
- const type = "slice_type" in slice ? slice.slice_type : slice.type;
102
- let component = props.components && type in props.components ? props.components[type] : props.defaultComponent || ((_a = options.components) == null ? void 0 : _a.sliceZoneDefaultComponent);
103
- if (props.resolver) {
104
- const resolvedComponent = props.resolver({
105
- slice,
106
- sliceName: type,
107
- i: index
108
- });
109
- if (resolvedComponent) {
110
- component = resolvedComponent;
111
- }
112
- }
113
- const key = "id" in slice && typeof slice.id === "string" ? slice.id : `${index}-${JSON.stringify(slice)}`;
114
- if (component) {
115
- if (slice.__mapped) {
116
- const { __mapped, ...mappedProps } = slice;
117
- return h(simplyResolveComponent(component), {
118
- key,
119
- ...mappedProps
120
- });
121
- }
122
- return h(simplyResolveComponent(component), {
123
- key,
124
- slice,
125
- index,
126
- context: props.context,
127
- slices: props.slices
128
- });
129
- } else {
130
- return h(simplyResolveComponent(TODOSliceComponent), { key, slice });
131
- }
132
- });
133
- });
134
- return () => {
135
- if (props.wrapper) {
136
- const parent = simplyResolveComponent(props.wrapper);
137
- if (typeof parent === "string") {
138
- return h(parent, null, renderedSlices.value);
139
- } else {
140
- return h(parent, null, { default: () => renderedSlices.value });
141
- }
142
- } else {
143
- return renderedSlices.value;
144
- }
145
- };
146
- }
147
- });
148
- const SliceZone = SliceZoneImpl;
149
- export {
150
- SliceZone,
151
- SliceZoneImpl,
152
- TODOSliceComponent,
153
- defineSliceZoneComponents,
154
- getSliceComponentProps
155
- };
156
- //# sourceMappingURL=SliceZone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SliceZone.js","sources":["../../../src/components/SliceZone.ts"],"sourcesContent":["import { Slice } from \"@prismicio/client\";\nimport {\n\tAllowedComponentProps,\n\tComponentCustomProps,\n\tConcreteComponent,\n\tDefineComponent,\n\tFunctionalComponent,\n\tPropType,\n\tRaw,\n\tVNodeProps,\n\tcomputed,\n\tdefineAsyncComponent,\n\tdefineComponent,\n\th,\n\tmarkRaw,\n\twatchEffect,\n} from \"vue\";\n\nimport { __PRODUCTION__ } from \"../lib/__PRODUCTION__\";\nimport { simplyResolveComponent } from \"../lib/simplyResolveComponent\";\n\nimport { usePrismic } from \"../usePrismic\";\n\n/**\n * Returns the type of a `SliceLike` type.\n *\n * @typeParam TSlice - The Slice from which the type will be extracted.\n */\ntype ExtractSliceType<TSlice extends SliceLike> = TSlice extends SliceLikeRestV2\n\t? TSlice[\"slice_type\"]\n\t: TSlice extends SliceLikeGraphQL\n\t? TSlice[\"type\"]\n\t: never;\n\n/**\n * The minimum required properties to represent a Prismic Slice from the Prismic\n * Rest API V2 for the `<SliceZone>` component.\n *\n * If using Prismic's Rest API V2, use the `Slice` export from\n * `@prismicio/client` for a full interface.\n *\n * @typeParam TSliceType - Type name of the Slice.\n */\nexport type SliceLikeRestV2<TSliceType extends string = string> = Pick<\n\tSlice<TSliceType>,\n\t\"id\" | \"slice_type\"\n>;\n\n/**\n * The minimum required properties to represent a Prismic Slice from the Prismic\n * GraphQL API for the `<SliceZone>` component.\n *\n * @typeParam TSliceType - Type name of the Slice.\n */\nexport type SliceLikeGraphQL<TSliceType extends string = string> = {\n\ttype: Slice<TSliceType>[\"slice_type\"];\n};\n\n/**\n * The minimum required properties to represent a Prismic Slice for the\n * `<SliceZone />` component.\n *\n * If using Prismic's Rest API V2, use the `Slice` export from\n * `@prismicio/client` for a full interface.\n *\n * @typeParam TSliceType - Type name of the Slice\n */\nexport type SliceLike<TSliceType extends string = string> = (\n\t| SliceLikeRestV2<TSliceType>\n\t| SliceLikeGraphQL<TSliceType>\n) & {\n\t/**\n\t * If `true`, this Slice has been modified from its original value using a\n\t * mapper and `@prismicio/client`'s `mapSliceZone()`.\n\t *\n\t * @internal\n\t */\n\t__mapped?: true;\n};\n\n/**\n * A looser version of the `SliceZone` type from `@prismicio/client` using\n * `SliceLike`.\n *\n * If using Prismic's REST API, use the `SliceZone` export from\n * `@prismicio/client` for the full type.\n *\n * @typeParam TSlice - The type(s) of slices in the Slice Zone\n */\nexport type SliceZoneLike<TSlice extends SliceLike = SliceLike> =\n\treadonly TSlice[];\n\n/**\n * Vue props for a component rendering content from a Prismic Slice using the\n * `<SliceZone />` component.\n *\n * @typeParam TSlice - The type(s) of slices in the Slice Zone\n * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made\n * available to all Slice components\n */\nexport type SliceComponentProps<\n\tTSlice extends SliceLike = SliceLike,\n\tTContext = unknown,\n> = {\n\t/**\n\t * Slice data for this component.\n\t */\n\tslice: TSlice;\n\n\t/**\n\t * The index of the Slice in the Slice Zone.\n\t */\n\tindex: number;\n\n\t/**\n\t * All Slices from the Slice Zone to which the Slice belongs.\n\t */\n\t// TODO: We have to keep this list of Slices general due to circular\n\t// reference limtiations. If we had another generic to determine the full\n\t// union of Slice types, it would include TSlice. This causes TypeScript to\n\t// throw a compilation error.\n\tslices: SliceZoneLike<\n\t\tTSlice extends SliceLikeGraphQL ? SliceLikeGraphQL : SliceLikeRestV2\n\t>;\n\n\t/**\n\t * Arbitrary data passed to `<SliceZone />` and made available to all Slice\n\t * components.\n\t */\n\tcontext: TContext;\n};\n\n/**\n * Native Vue props for a component rendering content from a Prismic Slice using\n * the `<SliceZone />` component.\n *\n * @typeParam TSlice - The Slice type\n * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made\n * available to all Slice components\n */\nexport type DefineComponentSliceComponentProps<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTSlice extends SliceLike = any,\n\tTContext = unknown,\n> = {\n\tslice: {\n\t\ttype: PropType<SliceComponentProps<TSlice, TContext>[\"slice\"]>;\n\t\trequired: true;\n\t};\n\tindex: {\n\t\ttype: PropType<SliceComponentProps<TSlice, TContext>[\"index\"]>;\n\t\trequired: true;\n\t};\n\tslices: {\n\t\ttype: PropType<SliceComponentProps<TSlice, TContext>[\"slices\"]>;\n\t\trequired: true;\n\t};\n\tcontext: {\n\t\ttype: PropType<SliceComponentProps<TSlice, TContext>[\"context\"]>;\n\t\trequired: true;\n\t};\n};\n\n/**\n * Gets native Vue props for a component rendering content from a Prismic Slice\n * using the `<SliceZone />` component.\n *\n * Props are: `[\"slice\", \"index\", \"slices\", \"context\"]`\n *\n * @example\n *\n * ```javascript\n * // Defining a new slice component\n * import { getSliceComponentProps } from \"@prismicio/vue\";\n *\n * export default {\n * \tprops: getSliceComponentProps(),\n * };\n * ```\n *\n * @example\n *\n * ```javascript\n * // Defining a new slice component with visual hint\n * import { getSliceComponentProps } from \"@prismicio/vue\";\n *\n * export default {\n * \tprops: getSliceComponentProps([\"slice\", \"index\", \"slices\", \"context\"]),\n * };\n * ```\n *\n * @typeParam TSlice - The Slice type\n * @typeParam TContext - Arbitrary data passed to `<SliceZone />` and made\n * available to all Slice components\n * @param propsHint - An optional array of prop names used for the sole purpose\n * of having a visual hint of which props are made available to the slice,\n * this parameters doesn't have any effect\n *\n * @returns Props object to use with {@link defineComponent}\n */\nexport const getSliceComponentProps = <\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTSlice extends SliceLike = any,\n\tTContext = unknown,\n>(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tpropsHint?: [\"slice\", \"index\", \"slices\", \"context\"],\n): DefineComponentSliceComponentProps<TSlice, TContext> => ({\n\tslice: {\n\t\ttype: Object as PropType<SliceComponentProps<TSlice, TContext>[\"slice\"]>,\n\t\trequired: true,\n\t},\n\tindex: {\n\t\ttype: Number as PropType<SliceComponentProps<TSlice, TContext>[\"index\"]>,\n\t\trequired: true,\n\t},\n\tslices: {\n\t\ttype: Array as PropType<SliceComponentProps<TSlice, TContext>[\"slices\"]>,\n\t\trequired: true,\n\t},\n\tcontext: {\n\t\ttype: null as unknown as PropType<\n\t\t\tSliceComponentProps<TSlice, TContext>[\"context\"]\n\t\t>,\n\t\trequired: true,\n\t},\n});\n\n/**\n * A Vue component to be rendered for each instance of its Slice.\n *\n * @typeParam TSlice - The type(s) of slices in the Slice Zone\n * @typeParam TContext - Arbitrary data made available to all Slice components\n */\nexport type SliceComponentType<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTSlice extends SliceLike = any,\n\tTContext = unknown,\n> =\n\t// For reference within TypeScript files when `*.vue` type cannot be inferred\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types\n\t| DefineComponent<{}, {}, any>\n\t// Likewise, for reference with TypeScript files.\n\t| ReturnType<typeof defineAsyncComponent>\n\t| DefineComponent<SliceComponentProps<TSlice, TContext>>\n\t| FunctionalComponent<SliceComponentProps<TSlice, TContext>>;\n\n/**\n * This Slice component can be used as a reminder to provide a proper\n * implementation.\n *\n * This is also the default Vue component rendered when a component mapping\n * cannot be found in `<SliceZone />`.\n */\nexport const TODOSliceComponent = __PRODUCTION__\n\t? ((() => null) as FunctionalComponent<{\n\t\t\tslice: SliceLike;\n\t }>)\n\t: /*#__PURE__*/ (defineComponent({\n\t\t\tname: \"TODOSliceComponent\",\n\t\t\tprops: {\n\t\t\t\tslice: {\n\t\t\t\t\ttype: Object as PropType<SliceLike>,\n\t\t\t\t\trequired: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup(props) {\n\t\t\t\tconst type = computed(() => {\n\t\t\t\t\treturn \"slice_type\" in props.slice\n\t\t\t\t\t\t? props.slice.slice_type\n\t\t\t\t\t\t: props.slice.type;\n\t\t\t\t});\n\n\t\t\t\twatchEffect(() => {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`[SliceZone] Could not find a component for Slice type \"${type.value}\"`,\n\t\t\t\t\t\tprops.slice,\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\treturn () => {\n\t\t\t\t\treturn h(\n\t\t\t\t\t\t\"section\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"data-slice-zone-todo-component\": \"\",\n\t\t\t\t\t\t\t\"data-slice-type\": type.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[`Could not find a component for Slice type \"${type.value}\"`],\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t},\n\t }) as SliceComponentType);\n\n/**\n * A record of Slice types mapped to Vue components. Each components will be\n * rendered for each instance of their Slice type.\n *\n * @typeParam TSlice - The type(s) of slices in the Slice Zone\n * @typeParam TContext - Arbitrary data made available to all Slice components\n */\nexport type SliceZoneComponents<\n\tTSlice extends SliceLike = SliceLike,\n\tTContext = unknown,\n> =\n\t// This is purposely not wrapped in Partial to ensure a component is provided\n\t// for all Slice types. <SliceZone /> will render a default component if one is\n\t// not provided, but it *should* be a type error if an explicit component is\n\t// missing.\n\t//\n\t// If a developer purposely does not want to provide a component, they can\n\t// assign it to the TODOSliceComponent exported from this package. This\n\t// signals to future developers that it is a placeholder and should be\n\t// implemented.\n\t{\n\t\t[SliceType in ExtractSliceType<TSlice>]:\n\t\t\t| SliceComponentType<Extract<TSlice, SliceLike<SliceType>>, TContext>\n\t\t\t| string;\n\t};\n\n/**\n * Gets an optimized record of Slice types mapped to Vue components. Each\n * components will be rendered for each instance of their Slice type.\n *\n * @remarks\n * This is essentially an helper function to ensure {@link markRaw} is correctly\n * applied on each components, improving performances.\n * @example\n *\n * ```javascript\n * // Defining a slice components\n * import { defineSliceZoneComponents } from \"@prismicio/vue\";\n *\n * export default {\n * data() {\n * components: defineSliceZoneComponents({\n * foo: Foo,\n * bar: defineAsyncComponent(\n * () => new Promise((res) => res(Bar)),\n * ),\n * baz: \"Baz\",\n * }),\n * }\n * };\n * ```\n *\n * @typeParam TSlice - The type(s) of slices in the Slice Zone\n * @typeParam TContext - Arbitrary data made available to all Slice components\n *\n * @param components - {@link SliceZoneComponents}\n *\n * @returns A new optimized record of {@link SliceZoneComponents}\n */\nexport const defineSliceZoneComponents = <\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTSlice extends SliceLike = any,\n\tTContext = unknown,\n>(\n\tcomponents: SliceZoneComponents<TSlice, TContext>,\n): SliceZoneComponents<TSlice, TContext> => {\n\tconst result = {} as SliceZoneComponents<TSlice, TContext>;\n\n\tlet type: keyof typeof components;\n\tfor (type in components) {\n\t\tconst component = components[type];\n\t\tresult[type] =\n\t\t\ttypeof component === \"string\"\n\t\t\t\t? component\n\t\t\t\t: markRaw(\n\t\t\t\t\t\tcomponent as SliceComponentType<\n\t\t\t\t\t\t\tExtract<TSlice, SliceLike<typeof type>>,\n\t\t\t\t\t\t\tTContext\n\t\t\t\t\t\t>,\n\t\t\t\t );\n\t}\n\n\treturn result;\n};\n\n/**\n * Arguments for a `<SliceZone>` `resolver` function.\n */\nexport type SliceZoneResolverArgs<TSlice extends SliceLike = SliceLike> = {\n\t/**\n\t * The Slice to resolve to a Vue component..\n\t */\n\tslice: TSlice;\n\n\t/**\n\t * The name of the Slice.\n\t */\n\tsliceName: ExtractSliceType<TSlice>;\n\n\t/**\n\t * The index of the Slice in the Slice Zone.\n\t */\n\ti: number;\n};\n\n/**\n * A function that determines the rendered Vue component for each Slice in the\n * Slice Zone. If a nullish value is returned, the component will fallback to\n * the `components` or `defaultComponent` props to determine the rendered\n * component.\n *\n * @deprecated Use the `components` prop instead.\n *\n * @param args - Arguments for the resolver function.\n *\n * @returns The Vue component to render for a Slice.\n */\nexport type SliceZoneResolver<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTSlice extends SliceLike = any,\n\tTContext = unknown,\n> = (\n\targs: SliceZoneResolverArgs<TSlice>,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => SliceComponentType<any, TContext> | string | undefined | null;\n\n/**\n * Props for `<SliceZone />`.\n *\n * @typeParam TContext - Arbitrary data made available to all Slice components\n */\nexport type SliceZoneProps<TContext = unknown> = {\n\t/**\n\t * List of Slice data from the Slice Zone.\n\t */\n\tslices: SliceZoneLike;\n\n\t/**\n\t * A record mapping Slice types to Vue components.\n\t */\n\tcomponents?: SliceZoneComponents;\n\n\t/**\n\t * A function that determines the rendered Vue component for each Slice in the\n\t * Slice Zone.\n\t *\n\t * @deprecated Use the `components` prop instead.\n\t *\n\t * @param args - Arguments for the resolver function.\n\t *\n\t * @returns The Vue component to render for a Slice.\n\t */\n\t// TODO: Remove in v5 when the `resolver` prop is removed.\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tresolver?: SliceZoneResolver<any, TContext>;\n\n\t/**\n\t * Arbitrary data made available to all Slice components.\n\t */\n\tcontext?: TContext;\n\n\t/**\n\t * A component or a functional component rendered if a component mapping from\n\t * the `components` prop cannot be found.\n\t *\n\t * @remarks\n\t * Components will be rendered using the {@link SliceComponentProps} interface.\n\t *\n\t * @defaultValue The Slice Zone default component provided to `@prismicio/vue` plugin if configured, otherwise `null` when `process.env.NODE_ENV === \"production\"` else {@link TODOSliceComponent}.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tdefaultComponent?: SliceComponentType<any, TContext>;\n\n\t/**\n\t * An HTML tag name, a component, or a functional component used to wrap the\n\t * output. The Slice Zone is not wrapped by default.\n\t */\n\twrapper?: string | ConcreteComponent | Raw<DefineComponent>;\n};\n\n/**\n * `<SliceZone />` implementation.\n *\n * @internal\n */\nexport const SliceZoneImpl = /*#__PURE__*/ defineComponent({\n\tname: \"SliceZone\",\n\tprops: {\n\t\tslices: {\n\t\t\ttype: Array as PropType<\n\t\t\t\tSliceZoneLike<SliceLike & Record<string, unknown>>\n\t\t\t>,\n\t\t\trequired: true,\n\t\t},\n\t\tcomponents: {\n\t\t\ttype: Object as PropType<SliceZoneComponents>,\n\t\t\tdefault: undefined,\n\t\t\trequired: false,\n\t\t},\n\t\tresolver: {\n\t\t\ttype: Function as PropType<SliceZoneResolver>,\n\t\t\tdefault: undefined,\n\t\t\trequired: false,\n\t\t},\n\t\tcontext: {\n\t\t\ttype: null,\n\t\t\tdefault: undefined,\n\t\t\trequired: false,\n\t\t},\n\t\tdefaultComponent: {\n\t\t\ttype: Object as PropType<SliceComponentType>,\n\t\t\tdefault: undefined,\n\t\t\trequired: false,\n\t\t},\n\t\twrapper: {\n\t\t\ttype: [String, Object, Function] as PropType<\n\t\t\t\tstring | ConcreteComponent | Raw<DefineComponent>\n\t\t\t>,\n\t\t\tdefault: undefined,\n\t\t\trequired: false,\n\t\t},\n\t},\n\tsetup(props) {\n\t\t// Prevent fatal if user didn't check for field, throws `Invalid prop` warn\n\t\tif (!props.slices) {\n\t\t\treturn () => null;\n\t\t}\n\n\t\t// TODO: Remove in v3 when the `resolver` prop is removed.\n\t\tif (!__PRODUCTION__) {\n\t\t\tif (props.resolver) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"The `resolver` prop is deprecated. Please replace it with a components map using the `components` prop.\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst { options } = usePrismic();\n\n\t\tconst renderedSlices = computed(() => {\n\t\t\treturn props.slices.map((slice, index) => {\n\t\t\t\tconst type =\n\t\t\t\t\t\"slice_type\" in slice ? (slice.slice_type as string) : slice.type;\n\n\t\t\t\tlet component =\n\t\t\t\t\tprops.components && type in props.components\n\t\t\t\t\t\t? props.components[type]\n\t\t\t\t\t\t: props.defaultComponent ||\n\t\t\t\t\t\t options.components?.sliceZoneDefaultComponent;\n\n\t\t\t\t// TODO: Remove `resolver` in v5 in favor of `components`.\n\t\t\t\tif (props.resolver) {\n\t\t\t\t\tconst resolvedComponent = props.resolver({\n\t\t\t\t\t\tslice,\n\t\t\t\t\t\tsliceName: type,\n\t\t\t\t\t\ti: index,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (resolvedComponent) {\n\t\t\t\t\t\tcomponent = resolvedComponent;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst key =\n\t\t\t\t\t\"id\" in slice && typeof slice.id === \"string\"\n\t\t\t\t\t\t? slice.id\n\t\t\t\t\t\t: `${index}-${JSON.stringify(slice)}`;\n\n\t\t\t\tif (component) {\n\t\t\t\t\tif (slice.__mapped) {\n\t\t\t\t\t\tconst { __mapped, ...mappedProps } = slice;\n\n\t\t\t\t\t\treturn h(simplyResolveComponent(component as ConcreteComponent), {\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t...mappedProps,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn h(simplyResolveComponent(component as ConcreteComponent), {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tslice,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tcontext: props.context,\n\t\t\t\t\t\tslices: props.slices,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn h(\n\t\t\t\t\t\tsimplyResolveComponent(TODOSliceComponent as ConcreteComponent),\n\t\t\t\t\t\t{ key, slice },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (props.wrapper) {\n\t\t\t\tconst parent = simplyResolveComponent(props.wrapper);\n\n\t\t\t\tif (typeof parent === \"string\") {\n\t\t\t\t\treturn h(parent, null, renderedSlices.value);\n\t\t\t\t} else {\n\t\t\t\t\treturn h(parent, null, { default: () => renderedSlices.value });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn renderedSlices.value;\n\t\t\t}\n\t\t};\n\t},\n});\n\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a Prismic Slice Zone.\n *\n * @see Component props {@link SliceZoneProps}\n * @see Templating Slice Zones {@link https://prismic.io/docs/technologies/vue-template-content#slices-and-groups}\n */\nexport const SliceZone = SliceZoneImpl as unknown as {\n\tnew (): {\n\t\t$props: AllowedComponentProps &\n\t\t\tComponentCustomProps &\n\t\t\tVNodeProps &\n\t\t\tSliceZoneProps;\n\t};\n};\n"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export { PrismicEmbedImpl, PrismicEmbed } from "./PrismicEmbed";
2
- export type { PrismicEmbedProps } from "./PrismicEmbed";
3
- export { usePrismicImage, PrismicImageImpl, PrismicImage, } from "./PrismicImage";
4
- export type { UsePrismicImageOptions, PrismicImageProps } from "./PrismicImage";
5
- export { usePrismicLink, PrismicLinkImpl, PrismicLink } from "./PrismicLink";
6
- export type { UsePrismicLinkOptions, PrismicLinkProps } from "./PrismicLink";
7
- export { usePrismicText, PrismicTextImpl, PrismicText } from "./PrismicText";
8
- export type { UsePrismicTextOptions, PrismicTextProps } from "./PrismicText";
9
- export { usePrismicRichText, PrismicRichTextImpl, PrismicRichText, } from "./PrismicRichText";
10
- export type { UsePrismicRichTextOptions, PrismicRichTextProps, } from "./PrismicRichText";
11
- export { getSliceComponentProps, TODOSliceComponent, defineSliceZoneComponents, SliceZoneImpl, SliceZone, } from "./SliceZone";
12
- export type { DefineComponentSliceComponentProps, SliceComponentProps, SliceComponentType, SliceLikeRestV2, SliceLikeGraphQL, SliceLike, SliceZoneComponents, SliceZoneResolverArgs, SliceZoneResolver, SliceZoneLike, SliceZoneProps, } from "./SliceZone";
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const useStatefulPrismicClientMethod = require("./useStatefulPrismicClientMethod.cjs");
4
- const usePrismicDocuments = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("get", args);
5
- const useFirstPrismicDocument = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getFirst", args);
6
- const usePrismicDocumentByID = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByID", args);
7
- const usePrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByIDs", args);
8
- const useAllPrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllByIDs", args);
9
- const usePrismicDocumentByUID = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByUID", args);
10
- const usePrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByUIDs", args);
11
- const useAllPrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllByUIDs", args);
12
- const useSinglePrismicDocument = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getSingle", args);
13
- const usePrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByType", args);
14
- const useAllPrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllByType", args);
15
- const usePrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByTag", args);
16
- const useAllPrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllByTag", args);
17
- const usePrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getByEveryTag", args);
18
- const useAllPrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllByEveryTag", args);
19
- const usePrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getBySomeTags", args);
20
- const useAllPrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("getAllBySomeTags", args);
21
- const dangerouslyUseAllPrismicDocuments = (...args) => useStatefulPrismicClientMethod.useStatefulPrismicClientMethod("dangerouslyGetAll", args);
22
- exports.dangerouslyUseAllPrismicDocuments = dangerouslyUseAllPrismicDocuments;
23
- exports.useAllPrismicDocumentsByEveryTag = useAllPrismicDocumentsByEveryTag;
24
- exports.useAllPrismicDocumentsByIDs = useAllPrismicDocumentsByIDs;
25
- exports.useAllPrismicDocumentsBySomeTags = useAllPrismicDocumentsBySomeTags;
26
- exports.useAllPrismicDocumentsByTag = useAllPrismicDocumentsByTag;
27
- exports.useAllPrismicDocumentsByType = useAllPrismicDocumentsByType;
28
- exports.useAllPrismicDocumentsByUIDs = useAllPrismicDocumentsByUIDs;
29
- exports.useFirstPrismicDocument = useFirstPrismicDocument;
30
- exports.usePrismicDocumentByID = usePrismicDocumentByID;
31
- exports.usePrismicDocumentByUID = usePrismicDocumentByUID;
32
- exports.usePrismicDocuments = usePrismicDocuments;
33
- exports.usePrismicDocumentsByEveryTag = usePrismicDocumentsByEveryTag;
34
- exports.usePrismicDocumentsByIDs = usePrismicDocumentsByIDs;
35
- exports.usePrismicDocumentsBySomeTags = usePrismicDocumentsBySomeTags;
36
- exports.usePrismicDocumentsByTag = usePrismicDocumentsByTag;
37
- exports.usePrismicDocumentsByType = usePrismicDocumentsByType;
38
- exports.usePrismicDocumentsByUIDs = usePrismicDocumentsByUIDs;
39
- exports.useSinglePrismicDocument = useSinglePrismicDocument;
40
- //# sourceMappingURL=composables.cjs.map