@prismicio/vue 5.2.0 → 5.3.0-canary.320f423

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 (371) hide show
  1. package/README.md +3 -15
  2. package/dist/PrismicImage.vue.d.cts +267 -0
  3. package/dist/PrismicImage.vue.d.cts.map +1 -0
  4. package/dist/PrismicLink.vue.d.cts +207 -0
  5. package/dist/PrismicLink.vue.d.cts.map +1 -0
  6. package/dist/PrismicRichText/PrismicRichText.vue.d.cts +77 -0
  7. package/dist/PrismicRichText/PrismicRichText.vue.d.cts.map +1 -0
  8. package/dist/PrismicRichText/getRichTextComponentProps.d.cts +54 -0
  9. package/dist/PrismicRichText/getRichTextComponentProps.d.cts.map +1 -0
  10. package/dist/PrismicRichText/types.d.cts +40 -0
  11. package/dist/PrismicRichText/types.d.cts.map +1 -0
  12. package/dist/PrismicTable/PrismicTable.vue.d.cts +41 -0
  13. package/dist/PrismicTable/PrismicTable.vue.d.cts.map +1 -0
  14. package/dist/PrismicTable/getTableComponentProps.d.cts +136 -0
  15. package/dist/PrismicTable/getTableComponentProps.d.cts.map +1 -0
  16. package/dist/PrismicTable/types.d.cts +35 -0
  17. package/dist/PrismicTable/types.d.cts.map +1 -0
  18. package/dist/PrismicText.vue.d.cts +25 -0
  19. package/dist/PrismicText.vue.d.cts.map +1 -0
  20. package/dist/SliceZone/SliceZone.vue.d.cts +29 -0
  21. package/dist/SliceZone/SliceZone.vue.d.cts.map +1 -0
  22. package/dist/SliceZone/TODOSliceComponent.d.cts +15 -0
  23. package/dist/SliceZone/TODOSliceComponent.d.cts.map +1 -0
  24. package/dist/SliceZone/defineSliceZoneComponents.d.cts +42 -0
  25. package/dist/SliceZone/defineSliceZoneComponents.d.cts.map +1 -0
  26. package/dist/SliceZone/getSliceComponentProps.d.cts +71 -0
  27. package/dist/SliceZone/getSliceComponentProps.d.cts.map +1 -0
  28. package/dist/SliceZone/types.d.cts +94 -0
  29. package/dist/SliceZone/types.d.cts.map +1 -0
  30. package/dist/_virtual/rolldown_runtime.cjs +19 -0
  31. package/dist/_virtual/rolldown_runtime.js +18 -0
  32. package/dist/index.cjs +28 -32
  33. package/dist/index.d.cts +14 -0
  34. package/dist/index.d.ts +17 -23
  35. package/dist/index.js +13 -32
  36. package/dist/package.cjs +12 -0
  37. package/dist/package.cjs.map +1 -0
  38. package/dist/package.js +6 -0
  39. package/dist/package.js.map +1 -0
  40. package/dist/src/PrismicImage.cjs +8 -0
  41. package/dist/src/PrismicImage.cjs.map +1 -0
  42. package/dist/src/PrismicImage.js +8 -0
  43. package/dist/src/PrismicImage.js.map +1 -0
  44. package/dist/src/PrismicImage.vue.d.ts +267 -0
  45. package/dist/src/PrismicImage.vue.d.ts.map +1 -0
  46. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.cjs +115 -0
  47. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  48. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.js +115 -0
  49. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.js.map +1 -0
  50. package/dist/src/PrismicLink.cjs +8 -0
  51. package/dist/src/PrismicLink.cjs.map +1 -0
  52. package/dist/src/PrismicLink.js +8 -0
  53. package/dist/src/PrismicLink.js.map +1 -0
  54. package/dist/src/PrismicLink.vue.d.ts +207 -0
  55. package/dist/src/PrismicLink.vue.d.ts.map +1 -0
  56. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs +77 -0
  57. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  58. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js +77 -0
  59. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  60. package/dist/src/PrismicRichText/PrismicRichText.cjs +8 -0
  61. package/dist/src/PrismicRichText/PrismicRichText.cjs.map +1 -0
  62. package/dist/src/PrismicRichText/PrismicRichText.js +8 -0
  63. package/dist/src/PrismicRichText/PrismicRichText.js.map +1 -0
  64. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts +77 -0
  65. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts.map +1 -0
  66. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs +72 -0
  67. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  68. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js +72 -0
  69. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js.map +1 -0
  70. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.cjs +8 -0
  71. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.cjs.map +1 -0
  72. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.js +8 -0
  73. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.js.map +1 -0
  74. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs +123 -0
  75. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  76. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js +123 -0
  77. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  78. package/dist/src/PrismicRichText/PrismicRichTextSerialize.cjs +8 -0
  79. package/dist/src/PrismicRichText/PrismicRichTextSerialize.cjs.map +1 -0
  80. package/dist/src/PrismicRichText/PrismicRichTextSerialize.js +8 -0
  81. package/dist/src/PrismicRichText/PrismicRichTextSerialize.js.map +1 -0
  82. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs +40 -0
  83. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  84. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js +40 -0
  85. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js.map +1 -0
  86. package/dist/src/PrismicRichText/getRichTextComponentProps.cjs +40 -0
  87. package/dist/src/PrismicRichText/getRichTextComponentProps.cjs.map +1 -0
  88. package/dist/{PrismicRichText → src/PrismicRichText}/getRichTextComponentProps.d.ts +15 -10
  89. package/dist/src/PrismicRichText/getRichTextComponentProps.d.ts.map +1 -0
  90. package/dist/src/PrismicRichText/getRichTextComponentProps.js +39 -0
  91. package/dist/src/PrismicRichText/getRichTextComponentProps.js.map +1 -0
  92. package/dist/src/PrismicRichText/index.d.ts +2 -0
  93. package/dist/src/PrismicRichText/types.d.ts +40 -0
  94. package/dist/src/PrismicRichText/types.d.ts.map +1 -0
  95. package/dist/src/PrismicTable/PrismicTable.cjs +8 -0
  96. package/dist/src/PrismicTable/PrismicTable.cjs.map +1 -0
  97. package/dist/src/PrismicTable/PrismicTable.js +8 -0
  98. package/dist/src/PrismicTable/PrismicTable.js.map +1 -0
  99. package/dist/src/PrismicTable/PrismicTable.vue.d.ts +42 -0
  100. package/dist/src/PrismicTable/PrismicTable.vue.d.ts.map +1 -0
  101. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs +93 -0
  102. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  103. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js +93 -0
  104. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  105. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs +64 -0
  106. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -0
  107. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js +64 -0
  108. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js.map +1 -0
  109. package/dist/src/PrismicTable/PrismicTableRow.cjs +8 -0
  110. package/dist/src/PrismicTable/PrismicTableRow.cjs.map +1 -0
  111. package/dist/src/PrismicTable/PrismicTableRow.js +8 -0
  112. package/dist/src/PrismicTable/PrismicTableRow.js.map +1 -0
  113. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.cjs +54 -0
  114. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  115. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.js +54 -0
  116. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  117. package/dist/src/PrismicTable/getTableComponentProps.cjs +140 -0
  118. package/dist/src/PrismicTable/getTableComponentProps.cjs.map +1 -0
  119. package/dist/{PrismicTable → src/PrismicTable}/getTableComponentProps.d.ts +40 -32
  120. package/dist/src/PrismicTable/getTableComponentProps.d.ts.map +1 -0
  121. package/dist/src/PrismicTable/getTableComponentProps.js +129 -0
  122. package/dist/src/PrismicTable/getTableComponentProps.js.map +1 -0
  123. package/dist/src/PrismicTable/index.d.ts +1 -0
  124. package/dist/src/PrismicTable/types.d.ts +35 -0
  125. package/dist/src/PrismicTable/types.d.ts.map +1 -0
  126. package/dist/src/PrismicText.cjs +8 -0
  127. package/dist/src/PrismicText.cjs.map +1 -0
  128. package/dist/src/PrismicText.js +8 -0
  129. package/dist/src/PrismicText.js.map +1 -0
  130. package/dist/src/PrismicText.vue.d.ts +25 -0
  131. package/dist/src/PrismicText.vue.d.ts.map +1 -0
  132. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.cjs +37 -0
  133. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  134. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.js +37 -0
  135. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/src/SliceZone/SliceZone.cjs +8 -0
  137. package/dist/src/SliceZone/SliceZone.cjs.map +1 -0
  138. package/dist/src/SliceZone/SliceZone.js +8 -0
  139. package/dist/src/SliceZone/SliceZone.js.map +1 -0
  140. package/dist/src/SliceZone/SliceZone.vue.d.ts +29 -0
  141. package/dist/src/SliceZone/SliceZone.vue.d.ts.map +1 -0
  142. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.cjs +70 -0
  143. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  144. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.js +70 -0
  145. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.js.map +1 -0
  146. package/dist/src/SliceZone/TODOSliceComponent.cjs +36 -0
  147. package/dist/src/SliceZone/TODOSliceComponent.cjs.map +1 -0
  148. package/dist/src/SliceZone/TODOSliceComponent.d.ts +15 -0
  149. package/dist/src/SliceZone/TODOSliceComponent.d.ts.map +1 -0
  150. package/dist/src/SliceZone/TODOSliceComponent.js +36 -0
  151. package/dist/src/SliceZone/TODOSliceComponent.js.map +1 -0
  152. package/dist/src/SliceZone/defineSliceZoneComponents.cjs +50 -0
  153. package/dist/src/SliceZone/defineSliceZoneComponents.cjs.map +1 -0
  154. package/dist/{SliceZone → src/SliceZone}/defineSliceZoneComponents.d.ts +8 -2
  155. package/dist/src/SliceZone/defineSliceZoneComponents.d.ts.map +1 -0
  156. package/dist/src/SliceZone/defineSliceZoneComponents.js +50 -0
  157. package/dist/src/SliceZone/defineSliceZoneComponents.js.map +1 -0
  158. package/dist/src/SliceZone/getSliceComponentProps.cjs +60 -0
  159. package/dist/src/SliceZone/getSliceComponentProps.cjs.map +1 -0
  160. package/dist/{SliceZone → src/SliceZone}/getSliceComponentProps.d.ts +25 -20
  161. package/dist/src/SliceZone/getSliceComponentProps.d.ts.map +1 -0
  162. package/dist/src/SliceZone/getSliceComponentProps.js +59 -0
  163. package/dist/src/SliceZone/getSliceComponentProps.js.map +1 -0
  164. package/dist/src/SliceZone/index.d.ts +4 -0
  165. package/dist/{SliceZone → src/SliceZone}/types.d.ts +34 -37
  166. package/dist/src/SliceZone/types.d.ts.map +1 -0
  167. package/dist/src/lib/devMsg.cjs +25 -0
  168. package/dist/src/lib/devMsg.cjs.map +1 -0
  169. package/dist/src/lib/devMsg.js +25 -0
  170. package/dist/src/lib/devMsg.js.map +1 -0
  171. package/dist/src/lib/isInternalURL.cjs +20 -0
  172. package/dist/src/lib/isInternalURL.cjs.map +1 -0
  173. package/dist/src/lib/isInternalURL.js +19 -0
  174. package/dist/src/lib/isInternalURL.js.map +1 -0
  175. package/dist/src/types.cjs +9 -0
  176. package/dist/src/types.cjs.map +1 -0
  177. package/dist/src/types.d.ts +8 -0
  178. package/dist/src/types.d.ts.map +1 -0
  179. package/dist/src/types.js +8 -0
  180. package/dist/src/types.js.map +1 -0
  181. package/dist/types.d.cts +8 -0
  182. package/dist/types.d.cts.map +1 -0
  183. package/package.json +32 -55
  184. package/src/PrismicImage.vue +61 -28
  185. package/src/PrismicLink.vue +22 -55
  186. package/src/PrismicRichText/PrismicRichText.vue +84 -105
  187. package/src/PrismicRichText/PrismicRichTextDefaultComponent.vue +61 -19
  188. package/src/PrismicRichText/PrismicRichTextSerialize.vue +5 -30
  189. package/src/PrismicRichText/types.ts +33 -14
  190. package/src/PrismicTable/PrismicTable.vue +50 -20
  191. package/src/PrismicTable/PrismicTableDefaultComponents.ts +45 -20
  192. package/src/PrismicTable/PrismicTableRow.vue +17 -24
  193. package/src/PrismicTable/types.ts +28 -15
  194. package/src/PrismicText.vue +4 -21
  195. package/src/SliceZone/SliceZone.vue +12 -41
  196. package/src/SliceZone/TODOSliceComponent.ts +2 -1
  197. package/src/SliceZone/types.ts +3 -9
  198. package/src/index.ts +14 -32
  199. package/src/lib/isInternalURL.ts +2 -6
  200. package/src/types.ts +30 -438
  201. package/dist/PrismicEmbed.vue.cjs +0 -25
  202. package/dist/PrismicEmbed.vue.cjs.map +0 -1
  203. package/dist/PrismicEmbed.vue.d.ts +0 -19
  204. package/dist/PrismicEmbed.vue.js +0 -26
  205. package/dist/PrismicEmbed.vue.js.map +0 -1
  206. package/dist/PrismicEmbed.vue2.cjs +0 -4
  207. package/dist/PrismicEmbed.vue2.cjs.map +0 -1
  208. package/dist/PrismicEmbed.vue2.js +0 -5
  209. package/dist/PrismicEmbed.vue2.js.map +0 -1
  210. package/dist/PrismicImage.vue.cjs +0 -84
  211. package/dist/PrismicImage.vue.cjs.map +0 -1
  212. package/dist/PrismicImage.vue.d.ts +0 -224
  213. package/dist/PrismicImage.vue.js +0 -85
  214. package/dist/PrismicImage.vue.js.map +0 -1
  215. package/dist/PrismicImage.vue2.cjs +0 -4
  216. package/dist/PrismicImage.vue2.cjs.map +0 -1
  217. package/dist/PrismicImage.vue2.js +0 -5
  218. package/dist/PrismicImage.vue2.js.map +0 -1
  219. package/dist/PrismicLink.vue.cjs +0 -64
  220. package/dist/PrismicLink.vue.cjs.map +0 -1
  221. package/dist/PrismicLink.vue.d.ts +0 -279
  222. package/dist/PrismicLink.vue.js +0 -65
  223. package/dist/PrismicLink.vue.js.map +0 -1
  224. package/dist/PrismicLink.vue2.cjs +0 -4
  225. package/dist/PrismicLink.vue2.cjs.map +0 -1
  226. package/dist/PrismicLink.vue2.js +0 -5
  227. package/dist/PrismicLink.vue2.js.map +0 -1
  228. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs +0 -90
  229. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs.map +0 -1
  230. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.d.ts +0 -8
  231. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js +0 -91
  232. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js.map +0 -1
  233. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.cjs +0 -4
  234. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.cjs.map +0 -1
  235. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.js +0 -5
  236. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue2.js.map +0 -1
  237. package/dist/PrismicRichText/PrismicRichText.vue.cjs +0 -85
  238. package/dist/PrismicRichText/PrismicRichText.vue.cjs.map +0 -1
  239. package/dist/PrismicRichText/PrismicRichText.vue.d.ts +0 -57
  240. package/dist/PrismicRichText/PrismicRichText.vue.js +0 -86
  241. package/dist/PrismicRichText/PrismicRichText.vue.js.map +0 -1
  242. package/dist/PrismicRichText/PrismicRichText.vue2.cjs +0 -4
  243. package/dist/PrismicRichText/PrismicRichText.vue2.cjs.map +0 -1
  244. package/dist/PrismicRichText/PrismicRichText.vue2.js +0 -5
  245. package/dist/PrismicRichText/PrismicRichText.vue2.js.map +0 -1
  246. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.cjs +0 -133
  247. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.cjs.map +0 -1
  248. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.d.ts +0 -37
  249. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.js +0 -134
  250. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue.js.map +0 -1
  251. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.cjs +0 -4
  252. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.cjs.map +0 -1
  253. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.js +0 -5
  254. package/dist/PrismicRichText/PrismicRichTextDefaultComponent.vue2.js.map +0 -1
  255. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.cjs +0 -47
  256. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.cjs.map +0 -1
  257. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.d.ts +0 -10
  258. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.js +0 -48
  259. package/dist/PrismicRichText/PrismicRichTextSerialize.vue.js.map +0 -1
  260. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.cjs +0 -4
  261. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.cjs.map +0 -1
  262. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.js +0 -5
  263. package/dist/PrismicRichText/PrismicRichTextSerialize.vue2.js.map +0 -1
  264. package/dist/PrismicRichText/getRichTextComponentProps.cjs +0 -10
  265. package/dist/PrismicRichText/getRichTextComponentProps.cjs.map +0 -1
  266. package/dist/PrismicRichText/getRichTextComponentProps.js +0 -10
  267. package/dist/PrismicRichText/getRichTextComponentProps.js.map +0 -1
  268. package/dist/PrismicRichText/index.d.ts +0 -2
  269. package/dist/PrismicRichText/types.d.ts +0 -22
  270. package/dist/PrismicTable/PrismicTable.vue.cjs +0 -62
  271. package/dist/PrismicTable/PrismicTable.vue.cjs.map +0 -1
  272. package/dist/PrismicTable/PrismicTable.vue.d.ts +0 -32
  273. package/dist/PrismicTable/PrismicTable.vue.js +0 -63
  274. package/dist/PrismicTable/PrismicTable.vue.js.map +0 -1
  275. package/dist/PrismicTable/PrismicTable.vue2.cjs +0 -4
  276. package/dist/PrismicTable/PrismicTable.vue2.cjs.map +0 -1
  277. package/dist/PrismicTable/PrismicTable.vue2.js +0 -5
  278. package/dist/PrismicTable/PrismicTable.vue2.js.map +0 -1
  279. package/dist/PrismicTable/PrismicTableDefaultComponents.cjs +0 -44
  280. package/dist/PrismicTable/PrismicTableDefaultComponents.cjs.map +0 -1
  281. package/dist/PrismicTable/PrismicTableDefaultComponents.d.ts +0 -2
  282. package/dist/PrismicTable/PrismicTableDefaultComponents.js +0 -44
  283. package/dist/PrismicTable/PrismicTableDefaultComponents.js.map +0 -1
  284. package/dist/PrismicTable/PrismicTableRow.vue.cjs +0 -52
  285. package/dist/PrismicTable/PrismicTableRow.vue.cjs.map +0 -1
  286. package/dist/PrismicTable/PrismicTableRow.vue.d.ts +0 -26
  287. package/dist/PrismicTable/PrismicTableRow.vue.js +0 -53
  288. package/dist/PrismicTable/PrismicTableRow.vue.js.map +0 -1
  289. package/dist/PrismicTable/PrismicTableRow.vue2.cjs +0 -4
  290. package/dist/PrismicTable/PrismicTableRow.vue2.cjs.map +0 -1
  291. package/dist/PrismicTable/PrismicTableRow.vue2.js +0 -5
  292. package/dist/PrismicTable/PrismicTableRow.vue2.js.map +0 -1
  293. package/dist/PrismicTable/getTableComponentProps.cjs +0 -30
  294. package/dist/PrismicTable/getTableComponentProps.cjs.map +0 -1
  295. package/dist/PrismicTable/getTableComponentProps.js +0 -30
  296. package/dist/PrismicTable/getTableComponentProps.js.map +0 -1
  297. package/dist/PrismicTable/index.d.ts +0 -1
  298. package/dist/PrismicTable/types.d.ts +0 -30
  299. package/dist/PrismicText.vue.cjs +0 -43
  300. package/dist/PrismicText.vue.cjs.map +0 -1
  301. package/dist/PrismicText.vue.d.ts +0 -31
  302. package/dist/PrismicText.vue.js +0 -44
  303. package/dist/PrismicText.vue.js.map +0 -1
  304. package/dist/PrismicText.vue2.cjs +0 -4
  305. package/dist/PrismicText.vue2.cjs.map +0 -1
  306. package/dist/PrismicText.vue2.js +0 -5
  307. package/dist/PrismicText.vue2.js.map +0 -1
  308. package/dist/SliceZone/SliceZone.vue.cjs +0 -63
  309. package/dist/SliceZone/SliceZone.vue.cjs.map +0 -1
  310. package/dist/SliceZone/SliceZone.vue.d.ts +0 -41
  311. package/dist/SliceZone/SliceZone.vue.js +0 -64
  312. package/dist/SliceZone/SliceZone.vue.js.map +0 -1
  313. package/dist/SliceZone/SliceZone.vue2.cjs +0 -4
  314. package/dist/SliceZone/SliceZone.vue2.cjs.map +0 -1
  315. package/dist/SliceZone/SliceZone.vue2.js +0 -5
  316. package/dist/SliceZone/SliceZone.vue2.js.map +0 -1
  317. package/dist/SliceZone/TODOSliceComponent.cjs +0 -29
  318. package/dist/SliceZone/TODOSliceComponent.cjs.map +0 -1
  319. package/dist/SliceZone/TODOSliceComponent.d.ts +0 -9
  320. package/dist/SliceZone/TODOSliceComponent.js +0 -29
  321. package/dist/SliceZone/TODOSliceComponent.js.map +0 -1
  322. package/dist/SliceZone/defineSliceZoneComponents.cjs +0 -14
  323. package/dist/SliceZone/defineSliceZoneComponents.cjs.map +0 -1
  324. package/dist/SliceZone/defineSliceZoneComponents.js +0 -14
  325. package/dist/SliceZone/defineSliceZoneComponents.js.map +0 -1
  326. package/dist/SliceZone/getSliceComponentProps.cjs +0 -22
  327. package/dist/SliceZone/getSliceComponentProps.cjs.map +0 -1
  328. package/dist/SliceZone/getSliceComponentProps.js +0 -22
  329. package/dist/SliceZone/getSliceComponentProps.js.map +0 -1
  330. package/dist/SliceZone/index.d.ts +0 -4
  331. package/dist/createPrismic.cjs +0 -81
  332. package/dist/createPrismic.cjs.map +0 -1
  333. package/dist/createPrismic.d.ts +0 -22
  334. package/dist/createPrismic.js +0 -81
  335. package/dist/createPrismic.js.map +0 -1
  336. package/dist/index.cjs.map +0 -1
  337. package/dist/index.js.map +0 -1
  338. package/dist/lib/Wrapper.vue.cjs +0 -20
  339. package/dist/lib/Wrapper.vue.cjs.map +0 -1
  340. package/dist/lib/Wrapper.vue.d.ts +0 -28
  341. package/dist/lib/Wrapper.vue.js +0 -21
  342. package/dist/lib/Wrapper.vue.js.map +0 -1
  343. package/dist/lib/Wrapper.vue2.cjs +0 -4
  344. package/dist/lib/Wrapper.vue2.cjs.map +0 -1
  345. package/dist/lib/Wrapper.vue2.js +0 -5
  346. package/dist/lib/Wrapper.vue2.js.map +0 -1
  347. package/dist/lib/devMsg.cjs +0 -8
  348. package/dist/lib/devMsg.cjs.map +0 -1
  349. package/dist/lib/devMsg.d.ts +0 -16
  350. package/dist/lib/devMsg.js +0 -8
  351. package/dist/lib/devMsg.js.map +0 -1
  352. package/dist/lib/isInternalURL.cjs +0 -9
  353. package/dist/lib/isInternalURL.cjs.map +0 -1
  354. package/dist/lib/isInternalURL.d.ts +0 -8
  355. package/dist/lib/isInternalURL.js +0 -9
  356. package/dist/lib/isInternalURL.js.map +0 -1
  357. package/dist/package.json.cjs +0 -5
  358. package/dist/package.json.cjs.map +0 -1
  359. package/dist/package.json.js +0 -5
  360. package/dist/package.json.js.map +0 -1
  361. package/dist/types.d.ts +0 -369
  362. package/dist/usePrismic.cjs +0 -10
  363. package/dist/usePrismic.cjs.map +0 -1
  364. package/dist/usePrismic.d.ts +0 -30
  365. package/dist/usePrismic.js +0 -10
  366. package/dist/usePrismic.js.map +0 -1
  367. package/src/PrismicEmbed.vue +0 -42
  368. package/src/PrismicRichText/DeprecatedPrismicRichText.vue +0 -131
  369. package/src/createPrismic.ts +0 -154
  370. package/src/lib/Wrapper.vue +0 -22
  371. package/src/usePrismic.ts +0 -36
@@ -12,34 +12,25 @@ import { isInternalURL } from "./lib/isInternalURL"
12
12
 
13
13
  import type { ComponentOrTagName } from "./types"
14
14
 
15
- import { usePrismic } from "./usePrismic"
16
-
17
- /**
18
- * The default component rendered for internal URLs.
19
- */
15
+ /** The default component rendered for internal URLs. */
20
16
  const defaultInternalComponent = "router-link"
21
17
 
22
- /**
23
- * The default component rendered for external URLs.
24
- */
18
+ /** The default component rendered for external URLs. */
25
19
  const defaultExternalComponent = "a"
26
20
 
27
- /**
28
- * The default rel attribute rendered for external URLs.
29
- */
21
+ /** The default rel attribute rendered for external URLs. */
30
22
  const defaultExternalRelAttribute = "noreferrer"
31
23
 
32
- /**
33
- * Props for `<PrismicLink />`.
34
- */
24
+ /** Props for `<PrismicLink />`. */
35
25
  export type PrismicLinkProps = {
36
26
  /**
37
- * A link resolver function used to resolve links when not using the route
38
- * resolver parameter with `@prismicio/client`.
27
+ * The link resolver used to resolve links.
39
28
  *
40
- * @defaultValue The link resolver provided to `@prismicio/vue` plugin if configured.
29
+ * @remarks
30
+ * If your app uses route resolvers when querying for your Prismic
31
+ * repository's content, a link resolver does not need to be provided.
41
32
  *
42
- * @see Link resolver documentation {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver#link-resolver}
33
+ * @see Learn about link resolvers and route resolvers {@link https://prismic.io/docs/routes}
43
34
  */
44
35
  linkResolver?: LinkResolverFunction
45
36
 
@@ -47,50 +38,33 @@ export type PrismicLinkProps = {
47
38
  * The `rel` attribute for the link. By default, `"noreferrer"` is provided if
48
39
  * the link's URL is external. This prop can be provided a function to use the
49
40
  * link's metadata to determine the `rel` value.
50
- *
51
- * @defaultValue The one provided to `@prismicio/vue` plugin if configured.
52
41
  */
53
42
  rel?: string | AsLinkAttrsConfig["rel"]
54
43
 
55
44
  /**
56
- * An HTML tag name or a component used to render internal links.
45
+ * The component rendered for internal URLs.
57
46
  *
58
- * @remarks
59
- * HTML tag names will be rendered using the anchor tag interface (`href`,
60
- * `target`, and `rel` attributes).
61
- * @remarks
62
- * Components will be rendered using Vue Router {@link RouterLink} interface
63
- * (`to` props).
47
+ * If your app uses a client-side router that requires a special Link
48
+ * component, provide the Link component to this prop.
64
49
  *
65
- * @defaultValue The one provided to `@prismicio/vue` plugin if configured, {@link RouterLink} otherwise.
50
+ * @defaultValue `<RouterLink>`
66
51
  */
67
52
  internalComponent?: ComponentOrTagName
68
53
 
69
54
  /**
70
- * An HTML tag name or a component used to render external links.
55
+ * The component rendered for external URLs.
71
56
  *
72
- * @remarks
73
- * HTML tag names will be rendered using the anchor tag interface (`href`,
74
- * `target`, and `rel` attributes).
75
- * @remarks
76
- * Components will be rendered using Vue Router {@link RouterLink} interface
77
- * (`to` props).
78
- *
79
- * @defaultValue The one provided to `@prismicio/vue` plugin if configured, `"a"` otherwise.
57
+ * @defaultValue `<a>`
80
58
  */
81
59
  externalComponent?: ComponentOrTagName
82
60
  } & (
83
61
  | {
84
- /**
85
- * The Prismic link field to render.
86
- */
62
+ /** The Prismic link field to render. */
87
63
  field: LinkField
88
64
  document?: never
89
65
  }
90
66
  | {
91
- /**
92
- * The Prismic document to render as a link.
93
- */
67
+ /** The Prismic document to render as a link. */
94
68
  document: PrismicDocument
95
69
  field?: never
96
70
  }
@@ -99,15 +73,12 @@ export type PrismicLinkProps = {
99
73
  const props = defineProps<PrismicLinkProps>()
100
74
  defineOptions({ name: "PrismicLink" })
101
75
 
102
- const { options } = usePrismic()
103
-
104
76
  const rawAttrs = computed(() => {
105
77
  return asLinkAttrs(props.field || props.document, {
106
- linkResolver: props.linkResolver || options.linkResolver,
78
+ linkResolver: props.linkResolver,
107
79
  rel(args) {
108
- const maybeRel = props.rel || options.components?.linkRel
109
- if (maybeRel) {
110
- return typeof maybeRel === "function" ? maybeRel(args) : maybeRel
80
+ if (props.rel) {
81
+ return typeof props.rel === "function" ? props.rel(args) : props.rel
111
82
  }
112
83
 
113
84
  return args.isExternal ? defaultExternalRelAttribute : undefined
@@ -117,12 +88,8 @@ const rawAttrs = computed(() => {
117
88
 
118
89
  const component = computed(() => {
119
90
  return isInternalURL(rawAttrs.value.href || "")
120
- ? props.internalComponent ||
121
- options.components?.linkInternalComponent ||
122
- defaultInternalComponent
123
- : props.externalComponent ||
124
- options.components?.linkExternalComponent ||
125
- defaultExternalComponent
91
+ ? props.internalComponent || defaultInternalComponent
92
+ : props.externalComponent || defaultExternalComponent
126
93
  })
127
94
 
128
95
  // Match Vue Router's `<RouterLink />` interface unless the component is an anchor tag.
@@ -1,23 +1,21 @@
1
1
  <script lang="ts" setup>
2
- import {
3
- type HTMLRichTextFunctionSerializer,
4
- type HTMLRichTextMapSerializer,
5
- type LinkResolverFunction,
6
- type RichTextField,
7
- isFilled,
2
+ import type {
3
+ LinkResolverFunction,
4
+ RichTextField,
5
+ RichTextNodeType,
8
6
  } from "@prismicio/client"
9
7
  import { asTree } from "@prismicio/client/richtext"
10
- import { DEV } from "esm-env"
11
- import { computed, watchEffect } from "vue"
8
+ import type { PropType } from "vue"
9
+ import { computed } from "vue"
12
10
 
13
- import Wrapper from "../lib/Wrapper.vue"
11
+ import { type ComponentOrTagName, isVueComponent } from "../types"
12
+ import type {
13
+ InternalVueRichTextComponent,
14
+ VueRichTextSerializer,
15
+ VueShorthand,
16
+ } from "./types"
14
17
 
15
- import type { ComponentOrTagName } from "../types"
16
- import type { VueRichTextSerializer } from "./types"
17
-
18
- import { usePrismic } from "../usePrismic"
19
-
20
- import DeprecatedPrismicRichText from "./DeprecatedPrismicRichText.vue"
18
+ import PrismicRichTextDefaultComponent from "./PrismicRichTextDefaultComponent.vue"
21
19
  import PrismicRichTextSerialize from "./PrismicRichTextSerialize.vue"
22
20
 
23
21
  /**
@@ -25,133 +23,114 @@ import PrismicRichTextSerialize from "./PrismicRichTextSerialize.vue"
25
23
  */
26
24
  export type PrismicRichTextProps = {
27
25
  /**
28
- * The Prismic rich text or title field to render.
26
+ * The Prismic rich text field to render.
29
27
  */
30
28
  field: RichTextField | null | undefined
31
29
 
32
30
  /**
33
- * The value to be rendered when the field is empty. If a fallback is not
34
- * given, `null` (nothing) will be rendered.
31
+ * The link resolver used to resolve links.
32
+ *
33
+ * @remarks
34
+ * If your app uses route resolvers when querying for your Prismic
35
+ * repository's content, a link resolver does not need to be provided.
36
+ *
37
+ * @see Learn about link resolvers and route resolvers {@link https://prismic.io/docs/routes}
35
38
  */
36
- fallback?: ComponentOrTagName
39
+ linkResolver?: LinkResolverFunction
37
40
 
38
41
  /**
39
- * An object that maps a rich text block type to a Vue component.
42
+ * An object that maps a rich text block type to a Vue component or a
43
+ * shorthand definition.
40
44
  *
41
45
  * @example
42
46
  *
43
47
  * ```javascript
44
48
  * {
45
49
  * heading1: Heading1,
50
+ * paragraph: { class: 'prose'},
51
+ * strong: { as: 'em', class: 'font-bold' },
46
52
  * }
47
53
  * ```
48
54
  */
49
55
  components?: VueRichTextSerializer
50
56
 
51
57
  /**
52
- * A link resolver function used to resolve link when not using the route
53
- * resolver parameter with `@prismicio/client`.
54
- *
55
- * @defaultValue The link resolver provided to `@prismicio/vue` plugin if configured.
56
- *
57
- * @see Link resolver documentation {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver#link-resolver}
58
- */
59
- linkResolver?: LinkResolverFunction
60
-
61
- /**
62
- * An HTML serializer to customize the way rich text fields are rendered.
63
- *
64
- * @deprecated Use `components` instead.
65
- *
66
- * @defaultValue The HTML serializer provided to `@prismicio/vue` plugin if configured.
67
- *
68
- * @see HTML serializer documentation {@link https://prismic.io/docs/core-concepts/html-serializer}
69
- */
70
- // TODO: Remove in v6
71
- serializer?: HTMLRichTextFunctionSerializer | HTMLRichTextMapSerializer
72
-
73
- /**
74
- * An HTML tag name or a component used to wrap the output. `<PrismicText />`
75
- * is not wrapped by default.
76
- *
77
- * @defaultValue `"template"` (no wrapper)
58
+ * The value to be rendered when the field is empty. If a fallback is not
59
+ * given, `null` will be rendered.
78
60
  */
79
- wrapper?: ComponentOrTagName
61
+ fallback?: ComponentOrTagName
80
62
  }
81
63
 
82
- const props = defineProps<PrismicRichTextProps>()
83
- defineOptions({ name: "PrismicRichText" })
84
-
85
- const { options } = usePrismic()
86
-
87
- const resolvedComponents = computed(() => {
88
- return props.components || options.components?.richTextComponents
89
- })
90
-
91
- const resolvedLinkResolver = computed(() => {
92
- return props.linkResolver || options.linkResolver
64
+ // We're forced to declare props using the JavaScript syntax because `@vue/compiler-sfc`
65
+ // has limitations for inferring types from complex objects.
66
+ const props = defineProps({
67
+ field: {
68
+ type: Array as unknown as PropType<PrismicRichTextProps["field"]>,
69
+ },
70
+ linkResolver: {
71
+ type: Function as PropType<PrismicRichTextProps["linkResolver"]>,
72
+ },
73
+ components: {
74
+ type: Object as PropType<PrismicRichTextProps["components"]>,
75
+ },
76
+ fallback: {
77
+ type: [String, Object, Function] as PropType<
78
+ PrismicRichTextProps["fallback"]
79
+ >,
80
+ },
93
81
  })
82
+ defineOptions({ name: "PrismicRichText" })
94
83
 
95
84
  const children = computed(() => {
96
85
  return asTree(props.field || []).children
97
86
  })
98
87
 
99
- const isModern = computed(() => {
100
- // Explicit components prop
101
- if (props.components) {
102
- return true
103
- }
88
+ function getInternalComponent(type: keyof typeof RichTextNodeType) {
89
+ const maybeComponentOrShorthand = props.components?.[type]
104
90
 
105
- // Explicit serializer prop
106
- if (props.serializer) {
107
- return false
91
+ if (isVueComponent(maybeComponentOrShorthand)) {
92
+ return { is: maybeComponentOrShorthand }
108
93
  }
109
94
 
110
- // Global components option
111
- if (options.components?.richTextComponents) {
112
- return true
95
+ return {
96
+ is: PrismicRichTextDefaultComponent,
97
+ props: {
98
+ linkResolver: props.linkResolver,
99
+ shorthand: maybeComponentOrShorthand as VueShorthand,
100
+ },
113
101
  }
102
+ }
114
103
 
115
- // Global serializer option
116
- if (options.richTextSerializer) {
117
- return false
104
+ const internalComponents = computed<InternalVueRichTextComponent>(() => {
105
+ return {
106
+ heading1: getInternalComponent("heading1"),
107
+ heading2: getInternalComponent("heading2"),
108
+ heading3: getInternalComponent("heading3"),
109
+ heading4: getInternalComponent("heading4"),
110
+ heading5: getInternalComponent("heading5"),
111
+ heading6: getInternalComponent("heading6"),
112
+ paragraph: getInternalComponent("paragraph"),
113
+ preformatted: getInternalComponent("preformatted"),
114
+ strong: getInternalComponent("strong"),
115
+ em: getInternalComponent("em"),
116
+ "list-item": getInternalComponent("listItem"),
117
+ "o-list-item": getInternalComponent("oListItem"),
118
+ "group-list-item": getInternalComponent("list"),
119
+ "group-o-list-item": getInternalComponent("oList"),
120
+ image: getInternalComponent("image"),
121
+ embed: getInternalComponent("embed"),
122
+ hyperlink: getInternalComponent("hyperlink"),
123
+ label: getInternalComponent("label"),
124
+ span: getInternalComponent("span"),
118
125
  }
119
-
120
- // Default to modern
121
- return true
122
126
  })
123
-
124
- if (DEV) {
125
- watchEffect(() => {
126
- // TODO: Remove in v6
127
- if (props.components && props.serializer) {
128
- console.warn(
129
- `[PrismicRichText] Only one of "components" or "serializer" (deprecated) props can be provided. You can resolve this warning by removing either the "components" or "serializer" prop. "components" will be used in this case.`,
130
- )
131
- }
132
- })
133
- }
134
127
  </script>
135
128
 
136
129
  <template>
137
- <Wrapper
138
- v-if="isModern && (isFilled.richText(field) || fallback)"
139
- :wrapper="wrapper"
140
- >
141
- <PrismicRichTextSerialize
142
- v-if="children.length"
143
- :children="children"
144
- :components="resolvedComponents"
145
- :link-resolver="resolvedLinkResolver"
146
- />
147
- <component v-else :is="fallback" />
148
- </Wrapper>
149
- <DeprecatedPrismicRichText
150
- v-else-if="!isModern"
151
- :field="field"
152
- :fallback="typeof fallback === 'string' ? fallback : undefined"
153
- :link-resolver="linkResolver"
154
- :serializer="serializer"
155
- :wrapper="wrapper"
130
+ <PrismicRichTextSerialize
131
+ v-if="children.length"
132
+ :children="children"
133
+ :internal-components="internalComponents"
156
134
  />
135
+ <component v-else-if="fallback" :is="fallback" />
157
136
  </template>
@@ -2,19 +2,31 @@
2
2
  import type { LinkResolverFunction } from "@prismicio/client"
3
3
  import { computed } from "vue"
4
4
 
5
- import type { RichTextComponentProps } from "./types"
5
+ import type { RichTextComponentProps, VueShorthand } from "./types"
6
6
 
7
- import PrismicEmbed from "../PrismicEmbed.vue"
8
7
  import PrismicImage from "../PrismicImage.vue"
9
8
  import PrismicLink from "../PrismicLink.vue"
10
9
 
11
10
  const props = defineProps<
12
11
  RichTextComponentProps & {
13
12
  linkResolver?: LinkResolverFunction
13
+ shorthand?: VueShorthand
14
14
  }
15
15
  >()
16
16
  defineOptions({ name: "PrismicRichTextDefaultComponent" })
17
17
 
18
+ const as = computed(() => {
19
+ return props.node.type !== "image" && props.node.type !== "span"
20
+ ? props.shorthand?.as
21
+ : undefined
22
+ })
23
+
24
+ const attrs = computed(() => {
25
+ const { as, ...attrs } = props.shorthand ?? {}
26
+
27
+ return attrs
28
+ })
29
+
18
30
  const dir = computed(() => {
19
31
  return "direction" in props.node && props.node.direction === "rtl"
20
32
  ? "rtl"
@@ -23,38 +35,68 @@ const dir = computed(() => {
23
35
  </script>
24
36
 
25
37
  <template>
26
- <h1 v-if="node.type === 'heading1'" :dir="dir"><slot /></h1>
27
- <h2 v-else-if="node.type === 'heading2'" :dir="dir"><slot /></h2>
28
- <h3 v-else-if="node.type === 'heading3'" :dir="dir"><slot /></h3>
29
- <h4 v-else-if="node.type === 'heading4'" :dir="dir"><slot /></h4>
30
- <h5 v-else-if="node.type === 'heading5'" :dir="dir"><slot /></h5>
31
- <h6 v-else-if="node.type === 'heading6'" :dir="dir"><slot /></h6>
32
- <p v-else-if="node.type === 'paragraph'" :dir="dir"><slot /></p>
33
- <pre v-else-if="node.type === 'preformatted'"><slot /></pre>
34
- <strong v-else-if="node.type === 'strong'"><slot /></strong>
35
- <em v-else-if="node.type === 'em'"><slot /></em>
36
- <li v-else-if="node.type === 'list-item'" :dir="dir"><slot /></li>
37
- <li v-else-if="node.type === 'o-list-item'" :dir="dir"><slot /></li>
38
- <ul v-else-if="node.type === 'group-list-item'">
38
+ <component v-if="as" :is="as" :dir="dir" v-bind="attrs"><slot /></component>
39
+ <h1 v-else-if="node.type === 'heading1'" :dir="dir" v-bind="attrs">
40
+ <slot />
41
+ </h1>
42
+ <h2 v-else-if="node.type === 'heading2'" :dir="dir" v-bind="attrs">
43
+ <slot />
44
+ </h2>
45
+ <h3 v-else-if="node.type === 'heading3'" :dir="dir" v-bind="attrs">
46
+ <slot />
47
+ </h3>
48
+ <h4 v-else-if="node.type === 'heading4'" :dir="dir" v-bind="attrs">
49
+ <slot />
50
+ </h4>
51
+ <h5 v-else-if="node.type === 'heading5'" :dir="dir" v-bind="attrs">
52
+ <slot />
53
+ </h5>
54
+ <h6 v-else-if="node.type === 'heading6'" :dir="dir" v-bind="attrs">
55
+ <slot />
56
+ </h6>
57
+ <p v-else-if="node.type === 'paragraph'" :dir="dir" v-bind="attrs">
58
+ <slot />
59
+ </p>
60
+ <pre v-else-if="node.type === 'preformatted'" v-bind="attrs"><slot /></pre>
61
+ <strong v-else-if="node.type === 'strong'" v-bind="attrs"><slot /></strong>
62
+ <em v-else-if="node.type === 'em'" v-bind="attrs"><slot /></em>
63
+ <li v-else-if="node.type === 'list-item'" :dir="dir" v-bind="attrs">
64
+ <slot />
65
+ </li>
66
+ <li v-else-if="node.type === 'o-list-item'" :dir="dir" v-bind="attrs">
67
+ <slot />
68
+ </li>
69
+ <ul v-else-if="node.type === 'group-list-item'" v-bind="attrs">
39
70
  <slot />
40
71
  </ul>
41
- <ol v-else-if="node.type === 'group-o-list-item'">
72
+ <ol v-else-if="node.type === 'group-o-list-item'" v-bind="attrs">
42
73
  <slot />
43
74
  </ol>
44
75
  <p class="block-img" v-else-if="node.type === 'image'">
45
76
  <PrismicLink v-if="node.linkTo" :field="node.linkTo"
46
77
  ><PrismicImage :field="node"
47
78
  /></PrismicLink>
48
- <PrismicImage v-else :field="node" />
79
+ <PrismicImage v-else :field="node" v-bind="attrs" />
49
80
  </p>
50
- <PrismicEmbed v-else-if="node.type === 'embed'" :field="node.oembed" />
81
+ <div
82
+ v-else-if="node.type === 'embed'"
83
+ :data-oembed="node.oembed.embed_url"
84
+ :data-oembed-type="node.oembed.type"
85
+ :data-oembed-provider="node.oembed.provider_name"
86
+ v-html="node.oembed.html"
87
+ v-bind="attrs"
88
+ />
51
89
  <PrismicLink
52
90
  v-else-if="node.type === 'hyperlink'"
53
91
  :field="node.data"
54
92
  :link-resolver="linkResolver"
93
+ v-bind="attrs"
55
94
  ><slot
56
95
  /></PrismicLink>
57
- <span v-else-if="node.type === 'label'" :class="node.data.label"
96
+ <span
97
+ v-else-if="node.type === 'label'"
98
+ :class="node.data.label"
99
+ v-bind="attrs"
58
100
  ><slot
59
101
  /></span>
60
102
  <template v-else v-for="(line, index) in node.text.split('\n')" :key="line"
@@ -1,52 +1,27 @@
1
1
  <script lang="ts" setup>
2
- import type { LinkResolverFunction } from "@prismicio/client"
3
2
  import type { asTree } from "@prismicio/client/richtext"
4
3
 
5
- import type { VueRichTextSerializer } from "./types"
6
-
7
- import PrismicRichTextDefaultComponent from "./PrismicRichTextDefaultComponent.vue"
8
-
9
- const CHILD_TYPE_RENAMES = {
10
- "list-item": "listItem",
11
- "o-list-item": "oListItem",
12
- "group-list-item": "list",
13
- "group-o-list-item": "oList",
14
- } as const
4
+ import type { InternalVueRichTextComponent } from "./types"
15
5
 
16
6
  type PrismicRichTextSerializeProps = {
17
- components?: VueRichTextSerializer
18
7
  children: ReturnType<typeof asTree>["children"]
19
- linkResolver?: LinkResolverFunction
8
+ internalComponents: InternalVueRichTextComponent
20
9
  }
21
10
 
22
11
  const props = defineProps<PrismicRichTextSerializeProps>()
23
12
  defineOptions({ name: "PrismicRichTextSerialize" })
24
-
25
- function getComponent(child: ReturnType<typeof asTree>["children"][number]) {
26
- return (
27
- props.components?.[
28
- CHILD_TYPE_RENAMES[child.type as keyof typeof CHILD_TYPE_RENAMES] ||
29
- (child.type as keyof typeof props.components)
30
- ] || PrismicRichTextDefaultComponent
31
- )
32
- }
33
13
  </script>
34
14
 
35
15
  <template>
36
16
  <component
37
17
  v-for="child in props.children"
38
18
  :key="JSON.stringify(child)"
39
- :is="getComponent(child)"
19
+ :is="internalComponents[child.type].is"
40
20
  :node="child.node"
41
- :link-resolver="
42
- getComponent(child) === PrismicRichTextDefaultComponent
43
- ? props.linkResolver
44
- : undefined
45
- "
21
+ v-bind="internalComponents[child.type].props"
46
22
  ><PrismicRichTextSerialize
47
23
  v-if="child.children.length"
48
24
  :children="child.children"
49
- :components="components"
50
- :link-resolver="linkResolver"
25
+ :internal-components="internalComponents"
51
26
  /></component>
52
27
  </template>
@@ -1,9 +1,10 @@
1
- import type { RTAnyNode, RichTextNodeType } from "@prismicio/client"
2
1
  import type {
3
- DefineComponent,
4
- FunctionalComponent,
5
- defineAsyncComponent,
6
- } from "vue"
2
+ LinkResolverFunction,
3
+ RTAnyNode,
4
+ RichTextNodeType,
5
+ } from "@prismicio/client"
6
+
7
+ import type { VueComponent } from "../types"
7
8
 
8
9
  /**
9
10
  * A map of Rich Text block types to Vue Components. It is used to render Rich
@@ -12,7 +13,7 @@ import type {
12
13
  * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
13
14
  */
14
15
  export type VueRichTextSerializer = Partial<
15
- Record<keyof typeof RichTextNodeType, VueRichTextComponent>
16
+ Record<keyof typeof RichTextNodeType, VueRichTextComponent | VueShorthand>
16
17
  >
17
18
 
18
19
  /**
@@ -27,11 +28,29 @@ export type RichTextComponentProps<TRTNode extends RTAnyNode = RTAnyNode> = {
27
28
  *
28
29
  * @typeParam TRTNode - The type of rich text node(s) this component handles
29
30
  */
30
- type VueRichTextComponent<TRTNode extends RTAnyNode = RTAnyNode> =
31
- // For reference within TypeScript files when `*.vue` type cannot be inferred
32
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/no-explicit-any
33
- | DefineComponent<{}, {}, any>
34
- // Likewise, for reference with TypeScript files.
35
- | ReturnType<typeof defineAsyncComponent>
36
- | DefineComponent<RichTextComponentProps<TRTNode>>
37
- | FunctionalComponent<RichTextComponentProps<TRTNode>>
31
+ type VueRichTextComponent<TRTNode extends RTAnyNode = RTAnyNode> = VueComponent<
32
+ RichTextComponentProps<TRTNode>
33
+ >
34
+
35
+ /**
36
+ * A shorthand definition for {@link VueRichTextSerializer} component types.
37
+ */
38
+ export type VueShorthand = {
39
+ /**
40
+ * The HTML element type rendered for this node type.
41
+ */
42
+ as?: string
43
+
44
+ /**
45
+ * Other attributes to apply to the element type.
46
+ */
47
+ [Attribute: string]: string | boolean | null | undefined
48
+ }
49
+
50
+ export type InternalVueRichTextComponent = Record<
51
+ (typeof RichTextNodeType)[keyof typeof RichTextNodeType],
52
+ {
53
+ is: VueRichTextComponent
54
+ props?: { linkResolver?: LinkResolverFunction; shorthand?: VueShorthand }
55
+ }
56
+ >