@prismicio/vue 5.3.0-pr.88.ee9acb6 → 5.3.0-pr.89.d0f4ac2

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 (134) hide show
  1. package/dist/PrismicImage.vue.d.cts +15 -49
  2. package/dist/PrismicImage.vue.d.cts.map +1 -1
  3. package/dist/PrismicLink.vue.d.cts +57 -52
  4. package/dist/PrismicLink.vue.d.cts.map +1 -1
  5. package/dist/PrismicRichText/PrismicRichText.vue.d.cts +14 -14
  6. package/dist/PrismicRichText/PrismicRichText.vue.d.cts.map +1 -1
  7. package/dist/PrismicRichText/types.d.cts +25 -26
  8. package/dist/PrismicRichText/types.d.cts.map +1 -1
  9. package/dist/PrismicTable/PrismicTable.vue.d.cts +8 -9
  10. package/dist/PrismicTable/PrismicTable.vue.d.cts.map +1 -1
  11. package/dist/PrismicTable/types.d.cts +7 -8
  12. package/dist/PrismicTable/types.d.cts.map +1 -1
  13. package/dist/PrismicText.vue.d.cts +2 -6
  14. package/dist/PrismicText.vue.d.cts.map +1 -1
  15. package/dist/SliceZone/SliceZone.vue.d.cts +3 -14
  16. package/dist/SliceZone/SliceZone.vue.d.cts.map +1 -1
  17. package/dist/SliceZone/types.d.cts +3 -9
  18. package/dist/SliceZone/types.d.cts.map +1 -1
  19. package/dist/createPrismic.d.cts +61 -0
  20. package/dist/createPrismic.d.cts.map +1 -0
  21. package/dist/index.cjs +4 -1
  22. package/dist/index.d.cts +4 -2
  23. package/dist/index.d.ts +4 -2
  24. package/dist/index.js +2 -1
  25. package/dist/package.cjs +1 -1
  26. package/dist/package.cjs.map +1 -1
  27. package/dist/package.js +1 -1
  28. package/dist/package.js.map +1 -1
  29. package/dist/src/PrismicImage.cjs.map +1 -1
  30. package/dist/src/PrismicImage.js.map +1 -1
  31. package/dist/src/PrismicImage.vue.d.ts +15 -49
  32. package/dist/src/PrismicImage.vue.d.ts.map +1 -1
  33. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  34. package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/src/PrismicLink.cjs.map +1 -1
  36. package/dist/src/PrismicLink.js.map +1 -1
  37. package/dist/src/PrismicLink.vue.d.ts +57 -52
  38. package/dist/src/PrismicLink.vue.d.ts.map +1 -1
  39. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs +6 -10
  40. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  41. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js +6 -10
  42. package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/src/PrismicRichText/PrismicRichText.cjs.map +1 -1
  44. package/dist/src/PrismicRichText/PrismicRichText.js.map +1 -1
  45. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts +18 -18
  46. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts.map +1 -1
  47. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs +11 -5
  48. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  49. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js +11 -5
  50. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.cjs.map +1 -1
  52. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.js.map +1 -1
  53. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs +2 -2
  54. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  55. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js +2 -2
  56. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/src/PrismicRichText/PrismicRichTextSerialize.cjs.map +1 -1
  58. package/dist/src/PrismicRichText/PrismicRichTextSerialize.js.map +1 -1
  59. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs +10 -4
  60. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  61. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js +11 -5
  62. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/src/PrismicRichText/index.d.ts +1 -1
  64. package/dist/src/PrismicRichText/types.d.ts +25 -26
  65. package/dist/src/PrismicRichText/types.d.ts.map +1 -1
  66. package/dist/src/PrismicTable/PrismicTable.cjs.map +1 -1
  67. package/dist/src/PrismicTable/PrismicTable.js.map +1 -1
  68. package/dist/src/PrismicTable/PrismicTable.vue.d.ts +10 -11
  69. package/dist/src/PrismicTable/PrismicTable.vue.d.ts.map +1 -1
  70. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs +18 -10
  71. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  72. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js +19 -11
  73. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  74. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs +12 -30
  75. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -1
  76. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js +12 -30
  77. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js.map +1 -1
  78. package/dist/src/PrismicTable/PrismicTableRow.cjs.map +1 -1
  79. package/dist/src/PrismicTable/PrismicTableRow.js.map +1 -1
  80. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  81. package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  82. package/dist/src/PrismicTable/index.d.ts +1 -0
  83. package/dist/src/PrismicTable/types.d.ts +7 -8
  84. package/dist/src/PrismicTable/types.d.ts.map +1 -1
  85. package/dist/src/PrismicText.cjs.map +1 -1
  86. package/dist/src/PrismicText.js.map +1 -1
  87. package/dist/src/PrismicText.vue.d.ts +2 -6
  88. package/dist/src/PrismicText.vue.d.ts.map +1 -1
  89. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  90. package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/src/SliceZone/SliceZone.cjs.map +1 -1
  92. package/dist/src/SliceZone/SliceZone.js.map +1 -1
  93. package/dist/src/SliceZone/SliceZone.vue.d.ts +3 -14
  94. package/dist/src/SliceZone/SliceZone.vue.d.ts.map +1 -1
  95. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  96. package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.js.map +1 -1
  97. package/dist/src/SliceZone/types.d.ts +3 -9
  98. package/dist/src/SliceZone/types.d.ts.map +1 -1
  99. package/dist/src/createPrismic.cjs +33 -0
  100. package/dist/src/createPrismic.cjs.map +1 -0
  101. package/dist/src/createPrismic.d.ts +63 -0
  102. package/dist/src/createPrismic.d.ts.map +1 -0
  103. package/dist/src/createPrismic.js +32 -0
  104. package/dist/src/createPrismic.js.map +1 -0
  105. package/dist/src/lib/isInternalURL.cjs +2 -6
  106. package/dist/src/lib/isInternalURL.cjs.map +1 -1
  107. package/dist/src/lib/isInternalURL.js +2 -6
  108. package/dist/src/lib/isInternalURL.js.map +1 -1
  109. package/dist/src/types.cjs.map +1 -1
  110. package/dist/src/types.d.ts +11 -1
  111. package/dist/src/types.d.ts.map +1 -1
  112. package/dist/src/types.js.map +1 -1
  113. package/dist/types.d.cts +11 -1
  114. package/dist/types.d.cts.map +1 -1
  115. package/package.json +1 -3
  116. package/src/PrismicImage.vue +5 -16
  117. package/src/PrismicLink.vue +26 -26
  118. package/src/PrismicRichText/PrismicRichText.vue +33 -23
  119. package/src/PrismicRichText/PrismicRichTextDefaultComponent.vue +8 -4
  120. package/src/PrismicRichText/PrismicRichTextSerialize.vue +4 -3
  121. package/src/PrismicRichText/index.ts +1 -1
  122. package/src/PrismicRichText/types.ts +57 -29
  123. package/src/PrismicTable/PrismicTable.vue +31 -23
  124. package/src/PrismicTable/PrismicTableDefaultComponents.ts +14 -39
  125. package/src/PrismicTable/PrismicTableRow.vue +2 -2
  126. package/src/PrismicTable/index.ts +2 -0
  127. package/src/PrismicTable/types.ts +41 -23
  128. package/src/PrismicText.vue +2 -6
  129. package/src/SliceZone/SliceZone.vue +3 -14
  130. package/src/SliceZone/types.ts +3 -9
  131. package/src/createPrismic.ts +86 -0
  132. package/src/index.ts +5 -1
  133. package/src/lib/isInternalURL.ts +2 -6
  134. package/src/types.ts +13 -1
@@ -83,19 +83,13 @@ export type SliceComponentProps<
83
83
  TSlice extends SliceLike = SliceLike,
84
84
  TContext = unknown,
85
85
  > = {
86
- /**
87
- * Slice data for this component.
88
- */
86
+ /** Slice data for this component. */
89
87
  slice: TSlice
90
88
 
91
- /**
92
- * The index of the Slice in the Slice Zone.
93
- */
89
+ /** The index of the Slice in the Slice Zone. */
94
90
  index: number
95
91
 
96
- /**
97
- * All Slices from the Slice Zone to which the Slice belongs.
98
- */
92
+ /** All Slices from the Slice Zone to which the Slice belongs. */
99
93
  // TODO: We have to keep this list of Slices general due to circular
100
94
  // reference limtiations. If we had another generic to determine the full
101
95
  // union of Slice types, it would include TSlice. This causes TypeScript to
@@ -0,0 +1,86 @@
1
+ import type { CreateClient } from "@prismicio/client"
2
+ import { isFilled } from "@prismicio/client"
3
+ import { type App, type InjectionKey, inject } from "vue"
4
+
5
+ import type { ComponentOrTagName } from "./types"
6
+
7
+ import type { VueRichTextComponents } from "./PrismicRichText"
8
+ import type { VueTableComponents } from "./PrismicTable"
9
+
10
+ const prismicKey = Symbol.for(
11
+ "@prismicio/vue/plugin",
12
+ ) as InjectionKey<PrismicPlugin>
13
+
14
+ /** Components configuration. */
15
+ type ComponentsConfig = {
16
+ /** The default component rendered for internal URLs. */
17
+ linkInternalComponent?: ComponentOrTagName
18
+
19
+ /** The default component rendered for external URLs. */
20
+ linkExternalComponent?: ComponentOrTagName
21
+
22
+ /**
23
+ * The default components or shorthand definitions for Rich Text and Table
24
+ * fields.
25
+ */
26
+ defaultComponents?: VueRichTextComponents & VueTableComponents
27
+ }
28
+
29
+ /**
30
+ * Prismic Vue plugin interface accessible through `usePrismic()` and
31
+ * `$prismic`.
32
+ */
33
+ export type PrismicPlugin = {
34
+ /** A Prismic client that can be used to query content from a repository. */
35
+ client: ReturnType<CreateClient>
36
+
37
+ /** Helpers to determine if a field is filled. */
38
+ isFilled: typeof isFilled
39
+
40
+ /** @internal */
41
+ readonly componentsConfig?: ComponentsConfig
42
+
43
+ /** @internal */
44
+ install: (app: App) => void
45
+ }
46
+
47
+ /** Prismic Vue plugin configuration. */
48
+ export type PrismicPluginConfig = {
49
+ /** A Prismic client instance to inject into the Vue app. */
50
+ client: ReturnType<CreateClient>
51
+
52
+ /** Components configuration. */
53
+ componentsConfig?: ComponentsConfig
54
+ }
55
+
56
+ /** Creates a Prismic Vue plugin instance that can be used by a Vue app. */
57
+ export const createPrismic = (config: PrismicPluginConfig): PrismicPlugin => {
58
+ return {
59
+ ...config,
60
+ isFilled,
61
+ install(app: App): void {
62
+ app.provide(prismicKey, this)
63
+ app.config.globalProperties.$prismic = this
64
+ },
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Access the Prismic Vue plugin interface.
70
+ *
71
+ * @example
72
+ *
73
+ * ```typescript
74
+ * const { client, isFilled } = usePrismic()
75
+ * ```
76
+ */
77
+ export const usePrismic = (): PrismicPlugin => {
78
+ return inject(prismicKey, { componentsConfig: {} } as PrismicPlugin)
79
+ }
80
+
81
+ declare module "vue" {
82
+ export interface ComponentCustomProperties {
83
+ /** The Prismic Vue plugin interface. */
84
+ $prismic: PrismicPlugin
85
+ }
86
+ }
package/src/index.ts CHANGED
@@ -2,13 +2,14 @@ export { default as PrismicRichText } from "./PrismicRichText/PrismicRichText.vu
2
2
  export type { PrismicRichTextProps } from "./PrismicRichText/PrismicRichText.vue"
3
3
  export { getRichTextComponentProps } from "./PrismicRichText"
4
4
  export type {
5
- VueRichTextSerializer,
5
+ VueRichTextComponents,
6
6
  RichTextComponentProps,
7
7
  } from "./PrismicRichText"
8
8
 
9
9
  export { default as PrismicTable } from "./PrismicTable/PrismicTable.vue"
10
10
  export type { PrismicTableProps } from "./PrismicTable/PrismicTable.vue"
11
11
  export { getTableComponentProps } from "./PrismicTable"
12
+ export type { VueTableComponents } from "./PrismicTable"
12
13
 
13
14
  export { default as PrismicImage } from "./PrismicImage.vue"
14
15
  export type { PrismicImageProps } from "./PrismicImage.vue"
@@ -35,3 +36,6 @@ export type {
35
36
  SliceZoneComponents,
36
37
  SliceZoneLike,
37
38
  } from "./SliceZone"
39
+
40
+ export { createPrismic, usePrismic } from "./createPrismic"
41
+ export type { PrismicPlugin, PrismicPluginConfig } from "./createPrismic"
@@ -7,13 +7,9 @@
7
7
  */
8
8
  // TODO: This does not detect all relative URLs as internal, such as `about` or `./about`. This function assumes relative URLs start with a "/"`.
9
9
  export const isInternalURL = (url: string): boolean => {
10
- /**
11
- * @see Regex101 expression: {@link https://regex101.com/r/1y7iod/1}
12
- */
10
+ /** @see Regex101 expression: {@link https://regex101.com/r/1y7iod/1} */
13
11
  const isInternal = /^\/(?!\/)/.test(url)
14
- /**
15
- * @see Regex101 expression: {@link https://regex101.com/r/RnUseS/1}
16
- */
12
+ /** @see Regex101 expression: {@link https://regex101.com/r/RnUseS/1} */
17
13
  const isSpecialLink = !isInternal && !/^https?:\/\//i.test(url)
18
14
 
19
15
  return isInternal && !isSpecialLink
package/src/types.ts CHANGED
@@ -20,8 +20,20 @@ export type VueComponent<TProps> =
20
20
  | DefineComponent<TProps>
21
21
  | FunctionalComponent<TProps>
22
22
 
23
+ /**
24
+ * A shorthand definition for `<PrismicRichText />` and `<PrismicTable />`
25
+ * component types.
26
+ */
27
+ export type VueComponentShorthand = {
28
+ /** The HTML element type rendered for this node type. */
29
+ as?: string
30
+
31
+ /** Other attributes to apply to the element type. */
32
+ [Attribute: string]: string | boolean | null | undefined
33
+ }
34
+
23
35
  export const isVueComponent = <T>(
24
- component: VueComponent<T> | unknown,
36
+ component: VueComponent<T> | VueComponentShorthand | undefined,
25
37
  ): component is VueComponent<T> => {
26
38
  return (
27
39
  !!component &&