@prismicio/vue 5.3.0-canary.320f423 → 5.3.0-canary.553482e

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 (74) hide show
  1. package/dist/PrismicImage.vue.d.cts +4 -4
  2. package/dist/PrismicLink.vue.d.cts +4 -4
  3. package/dist/PrismicRichText/PrismicRichText.vue.d.cts +6 -10
  4. package/dist/PrismicRichText/PrismicRichText.vue.d.cts.map +1 -1
  5. package/dist/PrismicRichText/types.d.cts +25 -26
  6. package/dist/PrismicRichText/types.d.cts.map +1 -1
  7. package/dist/PrismicTable/PrismicTable.vue.d.cts +2 -6
  8. package/dist/PrismicTable/PrismicTable.vue.d.cts.map +1 -1
  9. package/dist/PrismicTable/types.d.cts +7 -8
  10. package/dist/PrismicTable/types.d.cts.map +1 -1
  11. package/dist/PrismicText.vue.d.cts +2 -2
  12. package/dist/PrismicText.vue.d.cts.map +1 -1
  13. package/dist/SliceZone/SliceZone.vue.d.cts +2 -2
  14. package/dist/SliceZone/SliceZone.vue.d.cts.map +1 -1
  15. package/dist/package.cjs +1 -1
  16. package/dist/package.cjs.map +1 -1
  17. package/dist/package.js +1 -1
  18. package/dist/package.js.map +1 -1
  19. package/dist/src/PrismicImage.vue.d.ts +4 -4
  20. package/dist/src/PrismicLink.vue.d.ts +4 -4
  21. package/dist/src/PrismicLink.vue.d.ts.map +1 -1
  22. package/dist/src/PrismicRichText/PrismicRichText.cjs.map +1 -1
  23. package/dist/src/PrismicRichText/PrismicRichText.js.map +1 -1
  24. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts +6 -10
  25. package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts.map +1 -1
  26. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs +2 -4
  27. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  28. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js +2 -4
  29. package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.cjs.map +1 -1
  31. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.js.map +1 -1
  32. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs +2 -2
  33. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  34. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js +2 -2
  35. package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/src/PrismicRichText/PrismicRichTextSerialize.cjs.map +1 -1
  37. package/dist/src/PrismicRichText/PrismicRichTextSerialize.js.map +1 -1
  38. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs +10 -4
  39. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  40. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js +11 -5
  41. package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/src/PrismicRichText/types.d.ts +25 -26
  43. package/dist/src/PrismicRichText/types.d.ts.map +1 -1
  44. package/dist/src/PrismicTable/PrismicTable.cjs.map +1 -1
  45. package/dist/src/PrismicTable/PrismicTable.js.map +1 -1
  46. package/dist/src/PrismicTable/PrismicTable.vue.d.ts +4 -8
  47. package/dist/src/PrismicTable/PrismicTable.vue.d.ts.map +1 -1
  48. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs +8 -8
  49. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  50. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js +8 -8
  51. package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs +12 -30
  53. package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -1
  54. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js +12 -30
  55. package/dist/src/PrismicTable/PrismicTableDefaultComponents.js.map +1 -1
  56. package/dist/src/PrismicTable/types.d.ts +7 -8
  57. package/dist/src/PrismicTable/types.d.ts.map +1 -1
  58. package/dist/src/PrismicText.vue.d.ts +2 -2
  59. package/dist/src/SliceZone/SliceZone.vue.d.ts +2 -2
  60. package/dist/src/types.cjs.map +1 -1
  61. package/dist/src/types.d.ts +11 -1
  62. package/dist/src/types.d.ts.map +1 -1
  63. package/dist/src/types.js.map +1 -1
  64. package/dist/types.d.cts +11 -1
  65. package/dist/types.d.cts.map +1 -1
  66. package/package.json +1 -3
  67. package/src/PrismicRichText/PrismicRichText.vue +13 -15
  68. package/src/PrismicRichText/PrismicRichTextDefaultComponent.vue +8 -4
  69. package/src/PrismicRichText/PrismicRichTextSerialize.vue +4 -3
  70. package/src/PrismicRichText/types.ts +57 -29
  71. package/src/PrismicTable/PrismicTable.vue +14 -18
  72. package/src/PrismicTable/PrismicTableDefaultComponents.ts +14 -39
  73. package/src/PrismicTable/types.ts +41 -23
  74. package/src/types.ts +13 -1
@@ -1,10 +1,29 @@
1
1
  import type {
2
2
  LinkResolverFunction,
3
3
  RTAnyNode,
4
- RichTextNodeType,
4
+ RTEmNode,
5
+ RTEmbedNode,
6
+ RTHeading1Node,
7
+ RTHeading2Node,
8
+ RTHeading3Node,
9
+ RTHeading4Node,
10
+ RTHeading5Node,
11
+ RTHeading6Node,
12
+ RTImageNode,
13
+ RTLabelNode,
14
+ RTLinkNode,
15
+ RTListItemNode,
16
+ RTListNode,
17
+ RTOListItemNode,
18
+ RTOListNode,
19
+ RTParagraphNode,
20
+ RTPreformattedNode,
21
+ RTSpanNode,
22
+ RTStrongNode,
23
+ RichTextNodeTypes,
5
24
  } from "@prismicio/client"
6
25
 
7
- import type { VueComponent } from "../types"
26
+ import type { VueComponent, VueComponentShorthand } from "../types"
8
27
 
9
28
  /**
10
29
  * A map of Rich Text block types to Vue Components. It is used to render Rich
@@ -12,13 +31,37 @@ import type { VueComponent } from "../types"
12
31
  *
13
32
  * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
14
33
  */
15
- export type VueRichTextSerializer = Partial<
16
- Record<keyof typeof RichTextNodeType, VueRichTextComponent | VueShorthand>
17
- >
34
+ export type VueRichTextSerializer = {
35
+ heading1?: RichTextComponentProps<RTHeading1Node> | VueComponentShorthand
36
+ heading2?: RichTextComponentProps<RTHeading2Node> | VueComponentShorthand
37
+ heading3?: RichTextComponentProps<RTHeading3Node> | VueComponentShorthand
38
+ heading4?: RichTextComponentProps<RTHeading4Node> | VueComponentShorthand
39
+ heading5?: RichTextComponentProps<RTHeading5Node> | VueComponentShorthand
40
+ heading6?: RichTextComponentProps<RTHeading6Node> | VueComponentShorthand
41
+ paragraph?: RichTextComponentProps<RTParagraphNode> | VueComponentShorthand
42
+ preformatted?:
43
+ | RichTextComponentProps<RTPreformattedNode>
44
+ | VueComponentShorthand
45
+ strong?: RichTextComponentProps<RTStrongNode> | VueComponentShorthand
46
+ em?: RichTextComponentProps<RTEmNode> | VueComponentShorthand
47
+ listItem?: RichTextComponentProps<RTListItemNode> | VueComponentShorthand
48
+ oListItem?: RichTextComponentProps<RTOListItemNode> | VueComponentShorthand
49
+ list?: RichTextComponentProps<RTListNode> | VueComponentShorthand
50
+ oList?: RichTextComponentProps<RTOListNode> | VueComponentShorthand
51
+ image?:
52
+ | RichTextComponentProps<RTImageNode>
53
+ | Omit<VueComponentShorthand, "as">
54
+ embed?: RichTextComponentProps<RTEmbedNode> | VueComponentShorthand
55
+ hyperlink?:
56
+ | RichTextComponentProps<RTLinkNode>
57
+ | Omit<VueComponentShorthand, "as">
58
+ label?:
59
+ | RichTextComponentProps<RTLabelNode>
60
+ | Omit<VueComponentShorthand, "as">
61
+ span?: RichTextComponentProps<RTSpanNode>
62
+ }
18
63
 
19
- /**
20
- * Props for a component rendering nodes from a Prismic rich text field.
21
- */
64
+ /** Props for a component rendering nodes from a Prismic rich text field. */
22
65
  export type RichTextComponentProps<TRTNode extends RTAnyNode = RTAnyNode> = {
23
66
  node: TRTNode
24
67
  }
@@ -28,29 +71,14 @@ export type RichTextComponentProps<TRTNode extends RTAnyNode = RTAnyNode> = {
28
71
  *
29
72
  * @typeParam TRTNode - The type of rich text node(s) this component handles
30
73
  */
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
- }
74
+ export type VueRichTextComponent<TRTNode extends RTAnyNode = RTAnyNode> =
75
+ VueComponent<RichTextComponentProps<TRTNode>>
49
76
 
50
- export type InternalVueRichTextComponent = Record<
51
- (typeof RichTextNodeType)[keyof typeof RichTextNodeType],
77
+ export type InternalVueRichTextComponents = Record<
78
+ RichTextNodeTypes,
52
79
  {
53
80
  is: VueRichTextComponent
54
- props?: { linkResolver?: LinkResolverFunction; shorthand?: VueShorthand }
81
+ linkResolver?: LinkResolverFunction
82
+ shorthand?: VueComponentShorthand
55
83
  }
56
84
  >
@@ -2,8 +2,8 @@
2
2
  import { type TableField, isFilled } from "@prismicio/client"
3
3
  import { computed } from "vue"
4
4
 
5
- import type { VueShorthand } from "../PrismicRichText/types"
6
- import { type ComponentOrTagName, isVueComponent } from "../types"
5
+ import type { ComponentOrTagName, VueComponentShorthand } from "../types"
6
+ import { isVueComponent } from "../types"
7
7
  import type { InternalVueTableComponents, VueTableComponents } from "./types"
8
8
 
9
9
  import type { VueRichTextSerializer } from "../PrismicRichText"
@@ -11,13 +11,9 @@ import type { VueRichTextSerializer } from "../PrismicRichText"
11
11
  import { defaultTableComponents } from "./PrismicTableDefaultComponents"
12
12
  import PrismicTableRow from "./PrismicTableRow.vue"
13
13
 
14
- /**
15
- * Props for `<PrismicTable />`.
16
- */
14
+ /** Props for `<PrismicTable />`. */
17
15
  export type PrismicTableProps = {
18
- /**
19
- * The Prismic table field to render.
20
- */
16
+ /** The Prismic table field to render. */
21
17
  field: TableField | undefined
22
18
 
23
19
  /**
@@ -55,11 +51,11 @@ function getInternalComponent(type: keyof VueTableComponents) {
55
51
 
56
52
  return {
57
53
  is: defaultTableComponents[type],
58
- shorthand: maybeComponentOrShorthand as VueShorthand,
54
+ shorthand: maybeComponentOrShorthand as VueComponentShorthand,
59
55
  }
60
56
  }
61
57
 
62
- const tableComponents = computed<InternalVueTableComponents>(() => {
58
+ const internalTableComponents = computed<InternalVueTableComponents>(() => {
63
59
  return {
64
60
  table: getInternalComponent("table"),
65
61
  thead: getInternalComponent("thead"),
@@ -74,34 +70,34 @@ const tableComponents = computed<InternalVueTableComponents>(() => {
74
70
  <template>
75
71
  <component
76
72
  v-if="isFilled.table(field)"
77
- :is="tableComponents.table.is"
73
+ :is="internalTableComponents.table.is"
78
74
  :table="field"
79
- v-bind="{ ...$attrs, ...tableComponents.table.shorthand }"
75
+ v-bind="{ ...$attrs, ...internalTableComponents.table.shorthand }"
80
76
  >
81
77
  <component
82
78
  v-if="field.head"
83
- :is="tableComponents.thead.is"
79
+ :is="internalTableComponents.thead.is"
84
80
  :head="field.head"
85
- v-bind="tableComponents.thead.shorthand"
81
+ v-bind="internalTableComponents.thead.shorthand"
86
82
  >
87
83
  <PrismicTableRow
88
84
  v-for="row in field.head.rows"
89
85
  :key="row.key"
90
86
  :row="row"
91
- :internalTableComponents="tableComponents"
87
+ :internalTableComponents="internalTableComponents"
92
88
  :components="components"
93
89
  />
94
90
  </component>
95
91
  <component
96
- :is="tableComponents.tbody.is"
92
+ :is="internalTableComponents.tbody.is"
97
93
  :body="field.body"
98
- v-bind="tableComponents.tbody.shorthand"
94
+ v-bind="internalTableComponents.tbody.shorthand"
99
95
  >
100
96
  <PrismicTableRow
101
97
  v-for="row in field.body.rows"
102
98
  :key="row.key"
103
99
  :row="row"
104
- :internalTableComponents="tableComponents"
100
+ :internalTableComponents="internalTableComponents"
105
101
  :components="components"
106
102
  />
107
103
  </component>
@@ -1,69 +1,44 @@
1
1
  import { defineComponent, h } from "vue"
2
- import type { PropType } from "vue"
3
2
 
4
- import type { DefaultVueTableComponents } from "./types"
3
+ import type { VueTableComponents } from "./types"
5
4
 
6
5
  import * as getTableComponentProps from "./getTableComponentProps"
7
6
 
8
- export const defaultTableComponents: DefaultVueTableComponents = {
7
+ export const defaultTableComponents: Required<VueTableComponents> = {
9
8
  table: defineComponent({
10
- props: {
11
- ...getTableComponentProps.table(),
12
- as: { type: String as PropType<string | undefined> },
13
- },
9
+ props: getTableComponentProps.table(),
14
10
  setup(props, { attrs, slots }) {
15
- return () =>
16
- h(props.as ?? "table", attrs, slots.default ? slots.default() : [])
11
+ return () => h("table", attrs, slots.default ? slots.default() : [])
17
12
  },
18
13
  }),
19
14
  thead: defineComponent({
20
- props: {
21
- ...getTableComponentProps.thead(),
22
- as: { type: String as PropType<string | undefined> },
23
- },
15
+ props: getTableComponentProps.thead(),
24
16
  setup(props, { attrs, slots }) {
25
- return () =>
26
- h(props.as ?? "thead", attrs, slots.default ? slots.default() : [])
17
+ return () => h("thead", attrs, slots.default ? slots.default() : [])
27
18
  },
28
19
  }),
29
20
  tbody: defineComponent({
30
- props: {
31
- ...getTableComponentProps.tbody(),
32
- as: { type: String as PropType<string | undefined> },
33
- },
21
+ props: getTableComponentProps.tbody(),
34
22
  setup(props, { attrs, slots }) {
35
- return () =>
36
- h(props.as ?? "tbody", attrs, slots.default ? slots.default() : [])
23
+ return () => h("tbody", attrs, slots.default ? slots.default() : [])
37
24
  },
38
25
  }),
39
26
  tr: defineComponent({
40
- props: {
41
- ...getTableComponentProps.tr(),
42
- as: { type: String as PropType<string | undefined> },
43
- },
27
+ props: getTableComponentProps.tr(),
44
28
  setup(props, { attrs, slots }) {
45
- return () =>
46
- h(props.as ?? "tr", attrs, slots.default ? slots.default() : [])
29
+ return () => h("tr", attrs, slots.default ? slots.default() : [])
47
30
  },
48
31
  }),
49
32
  th: defineComponent({
50
- props: {
51
- ...getTableComponentProps.th(),
52
- as: { type: String as PropType<string | undefined> },
53
- },
33
+ props: getTableComponentProps.th(),
54
34
  setup(props, { attrs, slots }) {
55
- return () =>
56
- h(props.as ?? "th", attrs, slots.default ? slots.default() : [])
35
+ return () => h("th", attrs, slots.default ? slots.default() : [])
57
36
  },
58
37
  }),
59
38
  td: defineComponent({
60
- props: {
61
- ...getTableComponentProps.td(),
62
- as: { type: String as PropType<string | undefined> },
63
- },
39
+ props: getTableComponentProps.td(),
64
40
  setup(props, { attrs, slots }) {
65
- return () =>
66
- h(props.as ?? "td", attrs, slots.default ? slots.default() : [])
41
+ return () => h("td", attrs, slots.default ? slots.default() : [])
67
42
  },
68
43
  }),
69
44
  }
@@ -8,8 +8,7 @@ import type {
8
8
  TableFieldHeaderCell,
9
9
  } from "@prismicio/client"
10
10
 
11
- import type { VueShorthand } from "../PrismicRichText/types"
12
- import type { VueComponent } from "../types"
11
+ import type { VueComponent, VueComponentShorthand } from "../types"
13
12
 
14
13
  /**
15
14
  * A map of Table block types to Vue Components. It is used to render table
@@ -18,30 +17,49 @@ import type { VueComponent } from "../types"
18
17
  * @see Templating Table fields from Prismic {@link https://prismic.io/docs/table}
19
18
  */
20
19
  export type VueTableComponents = {
21
- table?: VueComponent<{ table: TableField<"filled"> }> | VueShorthand
22
- thead?: VueComponent<{ head: TableFieldHead }> | VueShorthand
23
- tbody?: VueComponent<{ body: TableFieldBody }> | VueShorthand
20
+ table?:
21
+ | VueComponent<{ table: TableField<"filled"> }>
22
+ | Omit<VueComponentShorthand, "as">
23
+ thead?:
24
+ | VueComponent<{ head: TableFieldHead }>
25
+ | Omit<VueComponentShorthand, "as">
26
+ tbody?:
27
+ | VueComponent<{ body: TableFieldBody }>
28
+ | Omit<VueComponentShorthand, "as">
24
29
  tr?:
25
30
  | VueComponent<{ row: TableFieldBodyRow | TableFieldHeadRow }>
26
- | VueShorthand
27
- th?: VueComponent<{ cell: TableFieldHeaderCell }> | VueShorthand
28
- td?: VueComponent<{ cell: TableFieldDataCell }> | VueShorthand
29
- }
30
-
31
- export type DefaultVueTableComponents = {
32
- table: VueComponent<{ table: TableField<"filled">; as?: string }>
33
- thead: VueComponent<{ head: TableFieldHead; as?: string }>
34
- tbody: VueComponent<{ body: TableFieldBody; as?: string }>
35
- tr: VueComponent<{ row: TableFieldBodyRow | TableFieldHeadRow; as?: string }>
36
- th: VueComponent<{ cell: TableFieldHeaderCell; as?: string }>
37
- td: VueComponent<{ cell: TableFieldDataCell; as?: string }>
31
+ | Omit<VueComponentShorthand, "as">
32
+ th?:
33
+ | VueComponent<{ cell: TableFieldHeaderCell }>
34
+ | Omit<VueComponentShorthand, "as">
35
+ td?:
36
+ | VueComponent<{ cell: TableFieldDataCell }>
37
+ | Omit<VueComponentShorthand, "as">
38
38
  }
39
39
 
40
40
  export type InternalVueTableComponents = {
41
- table: { is: VueTableComponents["table"]; shorthand?: VueShorthand }
42
- thead: { is: VueTableComponents["thead"]; shorthand?: VueShorthand }
43
- tbody: { is: VueTableComponents["tbody"]; shorthand?: VueShorthand }
44
- tr: { is: VueTableComponents["tr"]; shorthand?: VueShorthand }
45
- th: { is: VueTableComponents["th"]; shorthand?: VueShorthand }
46
- td: { is: VueTableComponents["td"]; shorthand?: VueShorthand }
41
+ table: {
42
+ is: VueTableComponents["table"]
43
+ shorthand?: Omit<VueComponentShorthand, "as">
44
+ }
45
+ thead: {
46
+ is: VueTableComponents["thead"]
47
+ shorthand?: Omit<VueComponentShorthand, "as">
48
+ }
49
+ tbody: {
50
+ is: VueTableComponents["tbody"]
51
+ shorthand?: Omit<VueComponentShorthand, "as">
52
+ }
53
+ tr: {
54
+ is: VueTableComponents["tr"]
55
+ shorthand?: Omit<VueComponentShorthand, "as">
56
+ }
57
+ th: {
58
+ is: VueTableComponents["th"]
59
+ shorthand?: Omit<VueComponentShorthand, "as">
60
+ }
61
+ td: {
62
+ is: VueTableComponents["td"]
63
+ shorthand?: Omit<VueComponentShorthand, "as">
64
+ }
47
65
  }
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 &&