@prismicio/svelte 1.6.0-alpha.0 → 2.0.0-alpha.1

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 (44) hide show
  1. package/README.md +1 -1
  2. package/dist/PrismicEmbed.svelte +12 -2
  3. package/dist/PrismicEmbed.svelte.d.ts +8 -19
  4. package/dist/PrismicImage.svelte +140 -59
  5. package/dist/PrismicImage.svelte.d.ts +54 -66
  6. package/dist/PrismicLink.svelte +55 -18
  7. package/dist/PrismicLink.svelte.d.ts +30 -40
  8. package/dist/PrismicRichText/DefaultComponent.svelte +31 -22
  9. package/dist/PrismicRichText/DefaultComponent.svelte.d.ts +5 -21
  10. package/dist/PrismicRichText/PrismicRichText.svelte +23 -5
  11. package/dist/PrismicRichText/PrismicRichText.svelte.d.ts +13 -23
  12. package/dist/PrismicRichText/Serialize.svelte +35 -16
  13. package/dist/PrismicRichText/Serialize.svelte.d.ts +8 -19
  14. package/dist/PrismicTable/DefaultComponent.svelte +12 -2
  15. package/dist/PrismicTable/DefaultComponent.svelte.d.ts +7 -19
  16. package/dist/PrismicTable/PrismicTable.svelte +46 -30
  17. package/dist/PrismicTable/PrismicTable.svelte.d.ts +19 -28
  18. package/dist/PrismicText.svelte +49 -23
  19. package/dist/PrismicText.svelte.d.ts +17 -20
  20. package/dist/SliceZone/SliceZone.svelte +53 -9
  21. package/dist/SliceZone/SliceZone.svelte.d.ts +36 -84
  22. package/dist/SliceZone/TodoComponent.svelte +19 -9
  23. package/dist/SliceZone/TodoComponent.svelte.d.ts +8 -20
  24. package/dist/index.d.ts +7 -1
  25. package/dist/kit/PrismicPreview.svelte +107 -58
  26. package/dist/kit/PrismicPreview.svelte.d.ts +21 -30
  27. package/dist/lib/devMsg.js +1 -1
  28. package/dist/types.d.ts +121 -74
  29. package/package.json +27 -24
  30. package/src/PrismicEmbed.svelte +8 -4
  31. package/src/PrismicImage.svelte +65 -69
  32. package/src/PrismicLink.svelte +23 -19
  33. package/src/PrismicRichText/DefaultComponent.svelte +24 -20
  34. package/src/PrismicRichText/PrismicRichText.svelte +15 -11
  35. package/src/PrismicRichText/Serialize.svelte +15 -9
  36. package/src/PrismicTable/DefaultComponent.svelte +10 -2
  37. package/src/PrismicTable/PrismicTable.svelte +37 -43
  38. package/src/PrismicText.svelte +30 -22
  39. package/src/SliceZone/SliceZone.svelte +42 -91
  40. package/src/SliceZone/TodoComponent.svelte +14 -8
  41. package/src/index.ts +10 -1
  42. package/src/kit/PrismicPreview.svelte +30 -22
  43. package/src/lib/devMsg.ts +1 -1
  44. package/src/types.ts +178 -42
@@ -1,85 +1,37 @@
1
- import { SvelteComponent } from "svelte";
2
- import { ComponentCompat } from "../types";
3
- declare const __propDef: {
4
- props: {
5
- /**
6
- * An array of Prismic Slices, such as the `slices` property from a Prismic
7
- * document.
8
- */ slices?: (({
9
- slice_type: string;
10
- } | {
11
- type: string;
12
- }) & {
13
- /**
14
- * If `true`, this Slice has been modified from its original value using a
15
- * mapper and `@prismicio/client`'s `mapSliceZone()`.
16
- *
17
- * @internal
18
- */
19
- __mapped?: true;
20
- })[];
21
- /**
22
- * An object that maps Slice components to their corresponding API IDs.
23
- *
24
- * @example An example map:
25
- *
26
- * ```js
27
- * import BlockQuote from "./BlockQuote.svelte";
28
- * import HeroImage from "./HeroImage.svelte";
29
- *
30
- * const components = {
31
- * block_quote: BlockQuote,
32
- * hero_image: HeroImage,
33
- * };
34
- * ```
35
- */ components?: Record<string, ComponentCompat<any>>;
36
- /**
37
- * Arbitrary data passed to all Slice components as a `context` prop.
38
- */ context?: any;
39
- /**
40
- * The Svelte component rendered if a component mapping from the `components`
41
- * prop cannot be found.
42
- */ defaultComponent?: (new (...args: any[]) => SvelteComponent<{
43
- slice?: ({
44
- slice_type: string;
45
- } | {
46
- type: string;
47
- }) & {
48
- /**
49
- * If `true`, this Slice has been modified from its original value using a
50
- * mapper and `@prismicio/client`'s `mapSliceZone()`.
51
- *
52
- * @internal
53
- */
54
- __mapped?: true;
55
- };
56
- slices?: (({
57
- slice_type: string;
58
- } | {
59
- type: string;
60
- }) & {
61
- /**
62
- * If `true`, this Slice has been modified from its original value using a
63
- * mapper and `@prismicio/client`'s `mapSliceZone()`.
64
- *
65
- * @internal
66
- */
67
- __mapped?: true;
68
- })[];
69
- context?: unknown;
70
- index?: number;
71
- }>) | undefined;
72
- };
73
- events: {
74
- [evt: string]: CustomEvent<any>;
75
- };
76
- slots: {};
77
- exports?: {} | undefined;
78
- bindings?: string | undefined;
1
+ import type { Component } from "svelte";
2
+ import type { SliceComponentProps, SliceZoneLike } from "../types";
3
+ type Props = {
4
+ /**
5
+ * An array of Prismic Slices, such as the `slices` property from a Prismic
6
+ * document.
7
+ */
8
+ slices?: SliceZoneLike;
9
+ /**
10
+ * An object that maps Slice components to their corresponding API IDs.
11
+ *
12
+ * @example An example map:
13
+ *
14
+ * ```js
15
+ * import BlockQuote from "./BlockQuote.svelte";
16
+ * import HeroImage from "./HeroImage.svelte";
17
+ *
18
+ * const components = {
19
+ * block_quote: BlockQuote,
20
+ * hero_image: HeroImage,
21
+ * };
22
+ * ```
23
+ */
24
+ components?: Record<string, Component>;
25
+ /**
26
+ * Arbitrary data passed to all Slice components as a `context` prop.
27
+ */
28
+ context?: any;
29
+ /**
30
+ * The Svelte component rendered if a component mapping from the
31
+ * `components` prop cannot be found.
32
+ */
33
+ defaultComponent?: Component<SliceComponentProps> | undefined;
79
34
  };
80
- export type SliceZoneProps = typeof __propDef.props;
81
- export type SliceZoneEvents = typeof __propDef.events;
82
- export type SliceZoneSlots = typeof __propDef.slots;
83
35
  /**
84
36
  * Component to render an array of Prismic slices.
85
37
  *
@@ -94,6 +46,6 @@ export type SliceZoneSlots = typeof __propDef.slots;
94
46
  * />
95
47
  * ```
96
48
  */
97
- export default class SliceZone extends SvelteComponent<SliceZoneProps, SliceZoneEvents, SliceZoneSlots> {
98
- }
99
- export {};
49
+ declare const SliceZone: Component<Props, {}, "">;
50
+ type SliceZone = ReturnType<typeof SliceZone>;
51
+ export default SliceZone;
@@ -1,12 +1,22 @@
1
- <script>import { DEV } from "esm-env";
2
- export let slice;
3
- const type = "slice_type" in slice ? slice.slice_type : slice.type;
4
- if (DEV) {
5
- console.warn(
6
- `[SliceZone] Could not find a component for Slice type "${type}"`,
7
- slice
8
- );
9
- }
1
+ <script lang="ts">
2
+ import { DEV } from "esm-env";
3
+
4
+ type Props = {
5
+ slice: { slice_type: string } | { type: string };
6
+ };
7
+
8
+ const { slice }: Props = $props();
9
+
10
+ const type = $derived("slice_type" in slice ? slice.slice_type : slice.type);
11
+
12
+ $effect(() => {
13
+ if (DEV) {
14
+ console.warn(
15
+ `[SliceZone] Could not find a component for Slice type "${type}"`,
16
+ $state.snapshot(slice),
17
+ );
18
+ }
19
+ });
10
20
  </script>
11
21
 
12
22
  {#if DEV}
@@ -1,22 +1,10 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- slice: {
5
- slice_type: string;
6
- } | {
7
- type: string;
8
- };
1
+ type Props = {
2
+ slice: {
3
+ slice_type: string;
4
+ } | {
5
+ type: string;
9
6
  };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- exports?: {} | undefined;
15
- bindings?: string | undefined;
16
7
  };
17
- export type TodoComponentProps = typeof __propDef.props;
18
- export type TodoComponentEvents = typeof __propDef.events;
19
- export type TodoComponentSlots = typeof __propDef.slots;
20
- export default class TodoComponent extends SvelteComponent<TodoComponentProps, TodoComponentEvents, TodoComponentSlots> {
21
- }
22
- export {};
8
+ declare const TodoComponent: import("svelte").Component<Props, {}, "">;
9
+ type TodoComponent = ReturnType<typeof TodoComponent>;
10
+ export default TodoComponent;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { RichTextComponents } from "./types";
1
2
  export { default as PrismicEmbed } from "./PrismicEmbed.svelte";
2
3
  export { default as PrismicImage } from "./PrismicImage.svelte";
3
4
  export { default as PrismicLink } from "./PrismicLink.svelte";
@@ -5,4 +6,9 @@ export { default as PrismicRichText } from "./PrismicRichText/PrismicRichText.sv
5
6
  export { default as PrismicTable } from "./PrismicTable/PrismicTable.svelte";
6
7
  export { default as PrismicText } from "./PrismicText.svelte";
7
8
  export { default as SliceZone } from "./SliceZone/SliceZone.svelte";
8
- export type { SvelteRichTextSerializer } from "./types";
9
+ /**
10
+ * @deprecated Replaced with `RichTextComponents`
11
+ */
12
+ export type SvelteRichTextSerializer = RichTextComponents;
13
+ export type { RichTextComponents };
14
+ export type { RichTextComponentProps, SliceComponentProps } from "./types";
@@ -1,61 +1,110 @@
1
- <script>import { onMount } from "svelte";
2
- import { getToolbarSrc } from "@prismicio/client";
3
- import { beforeNavigate, goto, invalidateAll } from "$app/navigation";
4
- export let repositoryName;
5
- export let routePrefix = "preview";
6
- export let routePrefixName = routePrefix;
7
- $: toolbarSrc = getToolbarSrc(repositoryName);
8
- let endingPreview = false;
9
- onMount(() => {
10
- const controller = new AbortController();
11
- window.addEventListener(
12
- "prismicPreviewUpdate",
13
- (event) => {
14
- event.preventDefault();
15
- invalidateAll();
16
- },
17
- { signal: controller.signal }
18
- );
19
- window.addEventListener(
20
- "prismicPreviewEnd",
21
- (event) => {
22
- event.preventDefault();
23
- endingPreview = true;
24
- goto(
25
- new URL(
26
- window.location.pathname.replace(
27
- new RegExp(`^(/${routePrefix}/?$|/${routePrefix}/)`),
28
- "/"
29
- ),
30
- window.location.origin
31
- ),
32
- {
33
- invalidateAll: true,
34
- noScroll: true
35
- }
36
- );
37
- },
38
- { signal: controller.signal }
39
- );
40
- return () => {
41
- controller.abort();
42
- };
43
- });
44
- beforeNavigate((navigation) => {
45
- if (navigation.to && navigation.from?.params?.[routePrefixName] === routePrefix && !(routePrefixName in (navigation.to.params || {}))) {
46
- if (endingPreview) {
47
- endingPreview = false;
48
- return;
49
- }
50
- navigation.cancel();
51
- goto(
52
- new URL(
53
- routePrefix + navigation.to.url.pathname,
54
- navigation.to.url.origin
55
- )
56
- );
57
- }
58
- });
1
+ <script lang="ts">
2
+ import { beforeNavigate, goto, invalidateAll } from "$app/navigation";
3
+ import { getToolbarSrc } from "@prismicio/client";
4
+ import { onMount } from "svelte";
5
+
6
+ type Props = {
7
+ /**
8
+ * The name of your Prismic repository. A Prismic Toolbar will be registered
9
+ * using this repository.
10
+ */
11
+ repositoryName: string;
12
+
13
+ /**
14
+ * The route parameter prefixed during preview sessions.
15
+ */
16
+ routePrefix?: string;
17
+
18
+ /**
19
+ * The name of the preview-specific route parameter prefixed during preview
20
+ * sessions.
21
+ *
22
+ * Only set this value if the route parameter's name differs from the
23
+ * parameter's value.
24
+ */
25
+ routePrefixName?: string;
26
+ };
27
+
28
+ const {
29
+ repositoryName,
30
+ routePrefix = "preview",
31
+ routePrefixName = routePrefix,
32
+ }: Props = $props();
33
+
34
+ const toolbarSrc = $derived(getToolbarSrc(repositoryName));
35
+
36
+ /**
37
+ * Set to `true` when the next `beforeNavigate()` call should not prefix the
38
+ * route.
39
+ */
40
+ let endingPreview = $state(false);
41
+
42
+ // Register Prismic toolbar event handlers to refresh data on content updates.
43
+ onMount(() => {
44
+ const controller = new AbortController();
45
+
46
+ window.addEventListener(
47
+ "prismicPreviewUpdate",
48
+ (event) => {
49
+ event.preventDefault();
50
+ invalidateAll();
51
+ },
52
+ { signal: controller.signal },
53
+ );
54
+ window.addEventListener(
55
+ "prismicPreviewEnd",
56
+ (event) => {
57
+ event.preventDefault();
58
+
59
+ endingPreview = true;
60
+
61
+ goto(
62
+ new URL(
63
+ window.location.pathname.replace(
64
+ new RegExp(`^(/${routePrefix}/?$|/${routePrefix}/)`),
65
+ "/",
66
+ ),
67
+ window.location.origin,
68
+ ),
69
+ {
70
+ invalidateAll: true,
71
+ noScroll: true,
72
+ },
73
+ );
74
+ },
75
+ { signal: controller.signal },
76
+ );
77
+
78
+ return () => {
79
+ controller.abort();
80
+ };
81
+ });
82
+
83
+ beforeNavigate((navigation) => {
84
+ // Prefix links with the preview route parameter if the current
85
+ // route is in a preview session.
86
+ if (
87
+ navigation.to &&
88
+ navigation.from?.params?.[routePrefixName] === routePrefix &&
89
+ !(routePrefixName in (navigation.to.params || {}))
90
+ ) {
91
+ // If this callback is called due to a `prismicPreviewEnd`
92
+ // event, don't prefix the route. The exception is only
93
+ // valid for one call.
94
+ if (endingPreview) {
95
+ endingPreview = false;
96
+ return;
97
+ }
98
+
99
+ navigation.cancel();
100
+ goto(
101
+ new URL(
102
+ routePrefix + navigation.to.url.pathname,
103
+ navigation.to.url.origin,
104
+ ),
105
+ );
106
+ }
107
+ });
59
108
  </script>
60
109
 
61
110
  <svelte:head>
@@ -1,31 +1,22 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- /**
5
- * The name of your Prismic repository. A Prismic Toolbar will be registered
6
- * using this repository.
7
- */ repositoryName: string;
8
- /**
9
- * The route parameter prefixed during preview sessions.
10
- */ routePrefix?: string;
11
- /**
12
- * The name of the preview-specific route parameter prefixed during preview
13
- * sessions.
14
- *
15
- * Only set this value if the route parameter's name differs from the
16
- * parameter's value.
17
- */ routePrefixName?: string;
18
- };
19
- events: {
20
- [evt: string]: CustomEvent<any>;
21
- };
22
- slots: {};
23
- exports?: {} | undefined;
24
- bindings?: string | undefined;
1
+ type Props = {
2
+ /**
3
+ * The name of your Prismic repository. A Prismic Toolbar will be registered
4
+ * using this repository.
5
+ */
6
+ repositoryName: string;
7
+ /**
8
+ * The route parameter prefixed during preview sessions.
9
+ */
10
+ routePrefix?: string;
11
+ /**
12
+ * The name of the preview-specific route parameter prefixed during preview
13
+ * sessions.
14
+ *
15
+ * Only set this value if the route parameter's name differs from the
16
+ * parameter's value.
17
+ */
18
+ routePrefixName?: string;
25
19
  };
26
- export type PrismicPreviewProps = typeof __propDef.props;
27
- export type PrismicPreviewEvents = typeof __propDef.events;
28
- export type PrismicPreviewSlots = typeof __propDef.slots;
29
- export default class PrismicPreview extends SvelteComponent<PrismicPreviewProps, PrismicPreviewEvents, PrismicPreviewSlots> {
30
- }
31
- export {};
20
+ declare const PrismicPreview: import("svelte").Component<Props, {}, "">;
21
+ type PrismicPreview = ReturnType<typeof PrismicPreview>;
22
+ export default PrismicPreview;
@@ -15,5 +15,5 @@ import { version } from "../../package.json";
15
15
  * @returns The `prismic.dev/msg` URL for the given slug.
16
16
  */
17
17
  export const devMsg = (slug) => {
18
- return `https://prismic.dev/msg/react/v${version}/${slug}`;
18
+ return `https://prismic.dev/msg/svelte/v${version}/${slug}`;
19
19
  };
package/dist/types.d.ts CHANGED
@@ -1,84 +1,131 @@
1
- import type * as prismic from "@prismicio/client";
2
- import type { Component, ComponentType, SvelteComponent } from "svelte";
3
- export type SvelteRichTextSerializer = {
4
- heading1?: ComponentCompat<{
5
- node: prismic.RTHeading1Node;
6
- }>;
7
- heading2?: ComponentCompat<{
8
- node: prismic.RTHeading2Node;
9
- }>;
10
- heading3?: ComponentCompat<{
11
- node: prismic.RTHeading3Node;
12
- }>;
13
- heading4?: ComponentCompat<{
14
- node: prismic.RTHeading4Node;
15
- }>;
16
- heading5?: ComponentCompat<{
17
- node: prismic.RTHeading5Node;
18
- }>;
19
- heading6?: ComponentCompat<{
20
- node: prismic.RTHeading6Node;
21
- }>;
22
- paragraph?: ComponentCompat<{
23
- node: prismic.RTParagraphNode;
24
- }>;
25
- preformatted?: ComponentCompat<{
26
- node: prismic.RTPreformattedNode;
27
- }>;
28
- strong?: ComponentCompat<{
29
- node: prismic.RTStrongNode;
30
- }>;
31
- em?: ComponentCompat<{
32
- node: prismic.RTEmNode;
33
- }>;
34
- listItem?: ComponentCompat<{
35
- node: prismic.RTListItemNode;
36
- }>;
37
- oListItem?: ComponentCompat<{
38
- node: prismic.RTOListItemNode;
39
- }>;
40
- list?: ComponentCompat<{
41
- node: prismic.RTListNode;
42
- }>;
43
- oList?: ComponentCompat<{
44
- node: prismic.RTOListNode;
45
- }>;
46
- image?: ComponentCompat<{
47
- node: prismic.RTImageNode;
48
- }>;
49
- embed?: ComponentCompat<{
50
- node: prismic.RTEmbedNode;
51
- }>;
52
- hyperlink?: ComponentCompat<{
53
- node: prismic.RTLinkNode;
54
- }>;
55
- label?: ComponentCompat<{
56
- node: prismic.RTLabelNode;
57
- }>;
58
- span?: ComponentCompat<{
59
- node: prismic.RTSpanNode;
60
- }>;
1
+ import type { RTAnyNode, RTEmNode, RTEmbedNode, RTHeading1Node, RTHeading2Node, RTHeading3Node, RTHeading4Node, RTHeading5Node, RTHeading6Node, RTImageNode, RTLabelNode, RTLinkNode, RTListItemNode, RTListNode, RTOListItemNode, RTOListNode, RTParagraphNode, RTPreformattedNode, RTSpanNode, RTStrongNode, Slice, TableField, TableFieldBody, TableFieldBodyRow, TableFieldDataCell, TableFieldHead, TableFieldHeadRow, TableFieldHeaderCell } from "@prismicio/client";
2
+ import type { Component, Snippet } from "svelte";
3
+ export type RichTextComponents = {
4
+ heading1?: RichTextComponent<RTHeading1Node>;
5
+ heading2?: RichTextComponent<RTHeading2Node>;
6
+ heading3?: RichTextComponent<RTHeading3Node>;
7
+ heading4?: RichTextComponent<RTHeading4Node>;
8
+ heading5?: RichTextComponent<RTHeading5Node>;
9
+ heading6?: RichTextComponent<RTHeading6Node>;
10
+ paragraph?: RichTextComponent<RTParagraphNode>;
11
+ preformatted?: RichTextComponent<RTPreformattedNode>;
12
+ strong?: RichTextComponent<RTStrongNode>;
13
+ em?: RichTextComponent<RTEmNode>;
14
+ listItem?: RichTextComponent<RTListItemNode>;
15
+ oListItem?: RichTextComponent<RTOListItemNode>;
16
+ list?: RichTextComponent<RTListNode>;
17
+ oList?: RichTextComponent<RTOListNode>;
18
+ image?: RichTextComponent<RTImageNode>;
19
+ embed?: RichTextComponent<RTEmbedNode>;
20
+ hyperlink?: RichTextComponent<RTLinkNode>;
21
+ label?: RichTextComponent<RTLabelNode>;
22
+ span?: RichTextComponent<RTSpanNode>;
23
+ };
24
+ export type RichTextComponent<TNode extends RTAnyNode = RTAnyNode> = Component<RichTextComponentProps<TNode>>;
25
+ export type RichTextComponentProps<TNode extends RTAnyNode = RTAnyNode> = {
26
+ node: TNode;
27
+ children: Snippet;
61
28
  };
62
29
  export type TableComponents = {
63
- table?: ComponentTypeCompat<{
64
- table: prismic.TableField<"filled">;
30
+ table?: Component<{
31
+ table: TableField<"filled">;
32
+ children: Snippet;
65
33
  }>;
66
- thead?: ComponentTypeCompat<{
67
- head: prismic.TableFieldHead;
34
+ thead?: Component<{
35
+ head: TableFieldHead;
36
+ children: Snippet;
68
37
  }>;
69
- tbody?: ComponentTypeCompat<{
70
- body: prismic.TableFieldBody;
38
+ tbody?: Component<{
39
+ body: TableFieldBody;
40
+ children: Snippet;
71
41
  }>;
72
- tr?: ComponentTypeCompat<{
73
- row: prismic.TableFieldHeadRow | prismic.TableFieldBodyRow;
42
+ tr?: Component<{
43
+ row: TableFieldHeadRow | TableFieldBodyRow;
44
+ children: Snippet;
74
45
  }>;
75
- th?: ComponentTypeCompat<{
76
- table: prismic.TableFieldHeaderCell;
46
+ th?: Component<{
47
+ cell: TableFieldHeaderCell;
48
+ children: Snippet;
77
49
  }>;
78
- td?: ComponentTypeCompat<{
79
- table: prismic.TableFieldDataCell;
50
+ td?: Component<{
51
+ cell: TableFieldDataCell;
52
+ children: Snippet;
80
53
  }>;
81
54
  };
82
- type ComponentTypeCompat<Props extends Record<string, any> = any> = Component<Props> | ComponentType<SvelteComponent<Props>>;
83
- export type ComponentCompat<Props extends Record<string, any> = any> = Component<Props> | (new (...args: any[]) => SvelteComponent<Partial<Props>>);
55
+ /**
56
+ * Props for a component rendering content from a Prismic Slice using the
57
+ * `<SliceZone>` component.
58
+ *
59
+ * @typeParam TSlice - The Slice passed as a prop.
60
+ * @typeParam TContext - Arbitrary data passed to `<SliceZone>` and made
61
+ * available to all Slice components.
62
+ */
63
+ export type SliceComponentProps<TSlice extends SliceLike = SliceLike, TContext = unknown> = {
64
+ /**
65
+ * Slice data for this component.
66
+ */
67
+ slice: TSlice;
68
+ /**
69
+ * The index of the Slice in the Slice Zone.
70
+ */
71
+ index: number;
72
+ /**
73
+ * All Slices from the Slice Zone to which the Slice belongs.
74
+ */
75
+ slices: SliceZoneLike<TSlice extends SliceLikeGraphQL ? SliceLikeGraphQL : SliceLikeRestV2>;
76
+ /**
77
+ * Arbitrary data passed to `<SliceZone>` and made available to all Slice
78
+ * components.
79
+ */
80
+ context: TContext;
81
+ };
82
+ /**
83
+ * The minimum required properties to represent a Prismic Slice from the Prismic
84
+ * Rest API V2 for the `<SliceZone>` component.
85
+ *
86
+ * If using Prismic's Rest API V2, use the `Slice` export from
87
+ * `@prismicio/types` for a full interface.
88
+ *
89
+ * @typeParam SliceType - Type name of the Slice.
90
+ */
91
+ type SliceLikeRestV2<SliceType extends string = string> = {
92
+ slice_type: Slice<SliceType>["slice_type"];
93
+ };
94
+ /**
95
+ * The minimum required properties to represent a Prismic Slice from the Prismic
96
+ * GraphQL API for the `<SliceZone>` component.
97
+ *
98
+ * @typeParam SliceType - Type name of the Slice.
99
+ */
100
+ type SliceLikeGraphQL<SliceType extends string = string> = {
101
+ type: Slice<SliceType>["slice_type"];
102
+ };
103
+ /**
104
+ * The minimum required properties to represent a Prismic Slice for the
105
+ * `<SliceZone>` component.
106
+ *
107
+ * If using Prismic's Rest API V2, use the `Slice` export from
108
+ * `@prismicio/types` for a full interface.
109
+ *
110
+ * @typeParam SliceType - Type name of the Slice.
111
+ */
112
+ type SliceLike<SliceType extends string = string> = (SliceLikeRestV2<SliceType> | SliceLikeGraphQL<SliceType>) & {
113
+ /**
114
+ * If `true`, this Slice has been modified from its original value using a
115
+ * mapper and `@prismicio/client`'s `mapSliceZone()`.
116
+ *
117
+ * @internal
118
+ */
119
+ __mapped?: true;
120
+ };
121
+ /**
122
+ * A looser version of the `SliceZone` type from `@prismicio/client` using
123
+ * `SliceLike`.
124
+ *
125
+ * If using Prismic's Rest API V2, use the `SliceZone` export from
126
+ * `@prismicio/client` for the full type.
127
+ *
128
+ * @typeParam TSlice - The type(s) of a Slice in the Slice Zone.
129
+ */
130
+ export type SliceZoneLike<TSlice extends SliceLike = SliceLike> = readonly TSlice[];
84
131
  export {};