@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.
- package/dist/PrismicImage.vue.d.cts +15 -49
- package/dist/PrismicImage.vue.d.cts.map +1 -1
- package/dist/PrismicLink.vue.d.cts +57 -52
- package/dist/PrismicLink.vue.d.cts.map +1 -1
- package/dist/PrismicRichText/PrismicRichText.vue.d.cts +14 -14
- package/dist/PrismicRichText/PrismicRichText.vue.d.cts.map +1 -1
- package/dist/PrismicRichText/types.d.cts +25 -26
- package/dist/PrismicRichText/types.d.cts.map +1 -1
- package/dist/PrismicTable/PrismicTable.vue.d.cts +8 -9
- package/dist/PrismicTable/PrismicTable.vue.d.cts.map +1 -1
- package/dist/PrismicTable/types.d.cts +7 -8
- package/dist/PrismicTable/types.d.cts.map +1 -1
- package/dist/PrismicText.vue.d.cts +2 -6
- package/dist/PrismicText.vue.d.cts.map +1 -1
- package/dist/SliceZone/SliceZone.vue.d.cts +3 -14
- package/dist/SliceZone/SliceZone.vue.d.cts.map +1 -1
- package/dist/SliceZone/types.d.cts +3 -9
- package/dist/SliceZone/types.d.cts.map +1 -1
- package/dist/createPrismic.d.cts +61 -0
- package/dist/createPrismic.d.cts.map +1 -0
- package/dist/index.cjs +4 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/src/PrismicImage.cjs.map +1 -1
- package/dist/src/PrismicImage.js.map +1 -1
- package/dist/src/PrismicImage.vue.d.ts +15 -49
- package/dist/src/PrismicImage.vue.d.ts.map +1 -1
- package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicLink.cjs.map +1 -1
- package/dist/src/PrismicLink.js.map +1 -1
- package/dist/src/PrismicLink.vue.d.ts +57 -52
- package/dist/src/PrismicLink.vue.d.ts.map +1 -1
- package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs +6 -10
- package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js +6 -10
- package/dist/src/PrismicLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichText.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichText.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts +18 -18
- package/dist/src/PrismicRichText/PrismicRichText.vue.d.ts.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs +11 -5
- package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js +11 -5
- package/dist/src/PrismicRichText/PrismicRichText.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs +2 -2
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/src/PrismicRichText/PrismicRichTextDefaultComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.js.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs +10 -4
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js +11 -5
- package/dist/src/PrismicRichText/PrismicRichTextSerialize.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicRichText/index.d.ts +1 -1
- package/dist/src/PrismicRichText/types.d.ts +25 -26
- package/dist/src/PrismicRichText/types.d.ts.map +1 -1
- package/dist/src/PrismicTable/PrismicTable.cjs.map +1 -1
- package/dist/src/PrismicTable/PrismicTable.js.map +1 -1
- package/dist/src/PrismicTable/PrismicTable.vue.d.ts +10 -11
- package/dist/src/PrismicTable/PrismicTable.vue.d.ts.map +1 -1
- package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs +18 -10
- package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js +19 -11
- package/dist/src/PrismicTable/PrismicTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs +12 -30
- package/dist/src/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -1
- package/dist/src/PrismicTable/PrismicTableDefaultComponents.js +12 -30
- package/dist/src/PrismicTable/PrismicTableDefaultComponents.js.map +1 -1
- package/dist/src/PrismicTable/PrismicTableRow.cjs.map +1 -1
- package/dist/src/PrismicTable/PrismicTableRow.js.map +1 -1
- package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicTable/PrismicTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/PrismicTable/index.d.ts +1 -0
- package/dist/src/PrismicTable/types.d.ts +7 -8
- package/dist/src/PrismicTable/types.d.ts.map +1 -1
- package/dist/src/PrismicText.cjs.map +1 -1
- package/dist/src/PrismicText.js.map +1 -1
- package/dist/src/PrismicText.vue.d.ts +2 -6
- package/dist/src/PrismicText.vue.d.ts.map +1 -1
- package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/PrismicText.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/SliceZone/SliceZone.cjs.map +1 -1
- package/dist/src/SliceZone/SliceZone.js.map +1 -1
- package/dist/src/SliceZone/SliceZone.vue.d.ts +3 -14
- package/dist/src/SliceZone/SliceZone.vue.d.ts.map +1 -1
- package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
- package/dist/src/SliceZone/SliceZone.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/src/SliceZone/types.d.ts +3 -9
- package/dist/src/SliceZone/types.d.ts.map +1 -1
- package/dist/src/createPrismic.cjs +33 -0
- package/dist/src/createPrismic.cjs.map +1 -0
- package/dist/src/createPrismic.d.ts +63 -0
- package/dist/src/createPrismic.d.ts.map +1 -0
- package/dist/src/createPrismic.js +32 -0
- package/dist/src/createPrismic.js.map +1 -0
- package/dist/src/lib/isInternalURL.cjs +2 -6
- package/dist/src/lib/isInternalURL.cjs.map +1 -1
- package/dist/src/lib/isInternalURL.js +2 -6
- package/dist/src/lib/isInternalURL.js.map +1 -1
- package/dist/src/types.cjs.map +1 -1
- package/dist/src/types.d.ts +11 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/types.d.cts +11 -1
- package/dist/types.d.cts.map +1 -1
- package/package.json +1 -3
- package/src/PrismicImage.vue +5 -16
- package/src/PrismicLink.vue +26 -26
- package/src/PrismicRichText/PrismicRichText.vue +33 -23
- package/src/PrismicRichText/PrismicRichTextDefaultComponent.vue +8 -4
- package/src/PrismicRichText/PrismicRichTextSerialize.vue +4 -3
- package/src/PrismicRichText/index.ts +1 -1
- package/src/PrismicRichText/types.ts +57 -29
- package/src/PrismicTable/PrismicTable.vue +31 -23
- package/src/PrismicTable/PrismicTableDefaultComponents.ts +14 -39
- package/src/PrismicTable/PrismicTableRow.vue +2 -2
- package/src/PrismicTable/index.ts +2 -0
- package/src/PrismicTable/types.ts +41 -23
- package/src/PrismicText.vue +2 -6
- package/src/SliceZone/SliceZone.vue +3 -14
- package/src/SliceZone/types.ts +3 -9
- package/src/createPrismic.ts +86 -0
- package/src/index.ts +5 -1
- package/src/lib/isInternalURL.ts +2 -6
- package/src/types.ts +13 -1
package/src/SliceZone/types.ts
CHANGED
|
@@ -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
|
-
|
|
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"
|
package/src/lib/isInternalURL.ts
CHANGED
|
@@ -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> |
|
|
36
|
+
component: VueComponent<T> | VueComponentShorthand | undefined,
|
|
25
37
|
): component is VueComponent<T> => {
|
|
26
38
|
return (
|
|
27
39
|
!!component &&
|