@prismicio/react 2.0.0-beta.3 → 2.0.0-beta.7

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/index.d.ts CHANGED
@@ -31,7 +31,7 @@ interface LinkProps {
31
31
  /**
32
32
  * Props for `<PrismicLink>`.
33
33
  */
34
- declare type PrismicLinkProps<InternalComponent extends string | React.ComponentType<LinkProps> = string | React.ComponentType<LinkProps>, ExternalComponent extends string | React.ComponentType<LinkProps> = string | React.ComponentType<LinkProps>, LinkResolverFunction extends prismicH.LinkResolverFunction<any> = prismicH.LinkResolverFunction> = ComponentProps<InternalComponent> & ComponentProps<ExternalComponent> & {
34
+ declare type PrismicLinkProps<InternalComponent extends string | React.ComponentType<LinkProps> = string | React.ComponentType<LinkProps>, ExternalComponent extends string | React.ComponentType<LinkProps> = string | React.ComponentType<LinkProps>, LinkResolverFunction extends prismicH.LinkResolverFunction = prismicH.LinkResolverFunction> = Omit<ComponentProps<InternalComponent> & ComponentProps<ExternalComponent>, keyof LinkProps> & {
35
35
  /**
36
36
  * The Link Resolver used to resolve links.
37
37
  *
@@ -72,17 +72,17 @@ declare type PrismicLinkProps<InternalComponent extends string | React.Component
72
72
  *
73
73
  * @see Learn about Prismic Link fields {@link https://prismic.io/docs/core-concepts/link-content-relationship}
74
74
  */
75
- field?: prismicT.LinkField;
75
+ field: prismicT.LinkField | null | undefined;
76
76
  } | {
77
77
  /**
78
78
  * The Prismic document to link.
79
79
  */
80
- document?: prismicT.PrismicDocument;
80
+ document: prismicT.PrismicDocument | null | undefined;
81
81
  } | {
82
82
  /**
83
83
  * The URL to link.
84
84
  */
85
- href?: string;
85
+ href: string | null | undefined;
86
86
  });
87
87
  /**
88
88
  * React component that renders a link from a Prismic Link field.
@@ -99,7 +99,7 @@ declare type PrismicLinkProps<InternalComponent extends string | React.Component
99
99
  * @returns The internal or external link component depending on whether the
100
100
  * link is internal or external.
101
101
  */
102
- declare const PrismicLink: <InternalComponent extends string | React.ComponentType<LinkProps> = "a", ExternalComponent extends string | React.ComponentType<LinkProps> = "a", LinkResolverFunction extends prismicH.LinkResolverFunction<any> = prismicH.LinkResolverFunction<string>>(props: PrismicLinkProps<InternalComponent, ExternalComponent, LinkResolverFunction>) => JSX.Element | null;
102
+ declare const PrismicLink: <InternalComponent extends string | React.ComponentType<LinkProps>, ExternalComponent extends string | React.ComponentType<LinkProps>, LinkResolverFunction extends prismicH.LinkResolverFunction<string>>(props: PrismicLinkProps<InternalComponent, ExternalComponent, LinkResolverFunction>) => JSX.Element | null;
103
103
 
104
104
  /**
105
105
  * A function mapping Rich Text block types to React Components. It is used to
@@ -233,12 +233,13 @@ declare type PrismicTextProps = {
233
233
  * @example Rendering a Rich Text field as plain text.
234
234
  *
235
235
  * ```jsx
236
- * <PrismicText field={document.data.content} />
236
+ * <PrismicText field={document.data.content} />;
237
237
  * ```
238
238
  *
239
239
  * @param props - Props for the component.
240
240
  *
241
241
  * @returns The Rich Text field's content as plain text.
242
+ *
242
243
  * @see Learn about Rich Text fields {@link https://prismic.io/docs/core-concepts/rich-text-title}
243
244
  */
244
245
  declare const PrismicText: (props: PrismicTextProps) => JSX.Element | null;
@@ -286,12 +287,12 @@ declare type PrismicRichTextProps = {
286
287
  *
287
288
  * ```jsx
288
289
  * (type, node, content, children) => {
289
- * switch (type) {
290
- * case 'heading1': {
291
- * return <Heading>{chidlren}</Heading>
292
- * }
293
- * }
294
- * }
290
+ * switch (type) {
291
+ * case "heading1": {
292
+ * return <Heading>{chidlren}</Heading>;
293
+ * }
294
+ * }
295
+ * };
295
296
  * ```
296
297
  */
297
298
  components?: JSXMapSerializer | JSXFunctionSerializer;
@@ -327,23 +328,24 @@ declare type PrismicRichTextProps = {
327
328
  * @example Rendering a Rich Text field using the default HTMl elements.
328
329
  *
329
330
  * ```jsx
330
- * <PrismicRichText field={document.data.content} />
331
+ * <PrismicRichText field={document.data.content} />;
331
332
  * ```
332
333
  *
333
334
  * @example Rendering a Rich Text field using a custom set of React components.
334
335
  *
335
336
  * ```jsx
336
337
  * <PrismicRichText
337
- * field={document.data.content}
338
- * components={{
339
- * heading1: ({ children }) => <Heading>{children}</Heading>
340
- * }}
341
- * />
338
+ * field={document.data.content}
339
+ * components={{
340
+ * heading1: ({ children }) => <Heading>{children}</Heading>,
341
+ * }}
342
+ * />;
342
343
  * ```
343
344
  *
344
345
  * @param props - Props for the component.
345
346
  *
346
347
  * @returns The Rich Text field's content as React components.
348
+ *
347
349
  * @see Learn about Rich Text fields {@link https://prismic.io/docs/core-concepts/rich-text-title}
348
350
  * @see Learn about Rich Text serializers {@link https://prismic.io/docs/core-concepts/html-serializer}
349
351
  */
@@ -418,6 +420,35 @@ declare type SliceZoneComponents<TSlice extends SliceLike = SliceLike, TContext
418
420
  * cannot be found in `<SliceZone>`.
419
421
  */
420
422
  declare const TODOSliceComponent: <TSlice extends SliceLike<string>, TContext>({ slice, }: SliceComponentProps<TSlice, TContext>) => JSX.Element | null;
423
+ /**
424
+ * Arguments for a `<SliceZone>` `resolver` function.
425
+ */
426
+ declare type SliceZoneResolverArgs<TSlice extends SliceLike = SliceLike> = {
427
+ /**
428
+ * The Slice to resolve to a React component.
429
+ */
430
+ slice: TSlice;
431
+ /**
432
+ * The name of the Slice.
433
+ */
434
+ sliceName: TSlice["slice_type"];
435
+ /**
436
+ * The index of the Slice in the Slice Zone.
437
+ */
438
+ i: number;
439
+ };
440
+ /**
441
+ * A function that determines the rendered React component for each Slice in the
442
+ * Slice Zone. If a nullish value is returned, the component will fallback to
443
+ * the `components` or `defaultComponent` props to determine the rendered component.
444
+ *
445
+ * @deprecated Use the `components` prop instead.
446
+ *
447
+ * @param args - Arguments for the resolver function.
448
+ *
449
+ * @returns The React component to render for a Slice.
450
+ */
451
+ declare type SliceZoneResolver<TSlice extends SliceLike = SliceLike, TContext = unknown> = (args: SliceZoneResolverArgs<TSlice>) => SliceComponentType<TSlice, TContext> | undefined | null;
421
452
  /**
422
453
  * React props for the `<SliceZone>` component.
423
454
  *
@@ -433,6 +464,17 @@ declare type SliceZoneProps<TSlice extends SliceLike = SliceLike, TContext = unk
433
464
  * A record mapping Slice types to React components.
434
465
  */
435
466
  components?: SliceZoneComponents<TSlice, TContext>;
467
+ /**
468
+ * A function that determines the rendered React component for each Slice in
469
+ * the Slice Zone.
470
+ *
471
+ * @deprecated Use the `components` prop instead.
472
+ *
473
+ * @param args - Arguments for the resolver function.
474
+ *
475
+ * @returns The React component to render for a Slice.
476
+ */
477
+ resolver?: SliceZoneResolver<TSlice, TContext>;
436
478
  /**
437
479
  * The React component rendered if a component mapping from the `components`
438
480
  * prop cannot be found.
@@ -453,10 +495,12 @@ declare type SliceZoneProps<TSlice extends SliceLike = SliceLike, TContext = unk
453
495
  *
454
496
  * @typeParam TSlice - The type(s) of a Slice in the Slice Zone.
455
497
  * @typeParam TContext - Arbitrary data made available to all Slice components.
498
+ *
456
499
  * @returns The Slice Zone's content as React components.
500
+ *
457
501
  * @see Learn about Prismic Slices and Slice Zones {@link https://prismic.io/docs/core-concepts/slices}
458
502
  */
459
- declare const SliceZone: <TSlice extends SliceLike<string>, TContext>({ slices, components, defaultComponent, context, }: SliceZoneProps<TSlice, TContext>) => JSX.Element;
503
+ declare const SliceZone: <TSlice extends SliceLike<string>, TContext>({ slices, components, resolver, defaultComponent, context, }: SliceZoneProps<TSlice, TContext>) => JSX.Element;
460
504
 
461
505
  /**
462
506
  * Props for `<PrismicToolbar>`.
@@ -505,15 +549,62 @@ declare type ClientHookReturnType<TData = unknown> = [
505
549
  state: Pick<StateMachineState<TData>, "state" | "error">
506
550
  ];
507
551
 
552
+ declare type UsePrismicPreviewResolverArgs = {
553
+ /**
554
+ * An optional `@prismicio/client` instance to override the Client provided to
555
+ * `<PrismicProvider>`
556
+ */
557
+ client?: _prismicio_client.Client;
558
+ /**
559
+ * A function that maps a Prismic document to a URL within your app.
560
+ */
561
+ linkResolver?: Parameters<_prismicio_client.Client["resolvePreviewURL"]>[0]["linkResolver"];
562
+ /**
563
+ * A fallback URL if the Link Resolver does not return a value.
564
+ */
565
+ defaultURL?: Parameters<_prismicio_client.Client["resolvePreviewURL"]>[0]["defaultURL"];
566
+ /**
567
+ * The preview token (also known as a ref) that will be used to query preview
568
+ * content from the Prismic repository.
569
+ */
570
+ previewToken?: Parameters<_prismicio_client.Client["resolvePreviewURL"]>[0]["previewToken"];
571
+ /**
572
+ * The previewed document that will be used to determine the destination URL.
573
+ */
574
+ documentID?: Parameters<_prismicio_client.Client["resolvePreviewURL"]>[0]["documentID"];
575
+ /**
576
+ * A function to automatically navigate to the resolved URL. If a function is
577
+ * not provded, `usePreviewResolver` will not navigate to the URL.
578
+ *
579
+ * @param url - The resolved preview URL.
580
+ */
581
+ navigate?: (url: string) => unknown;
582
+ };
583
+ /**
584
+ * Resolve a preview session's URL. The resolved URL can be used to redirect to
585
+ * the previewed document.
586
+ *
587
+ * If a `navigate` function is provided, the hook will automatically navigate to
588
+ * the previewed document's URL.
589
+ *
590
+ * @param args - Arguments to configure how a URL is resolved.
591
+ *
592
+ * @returns A tuple containing the resolved URL and the hook's state.
593
+ */
594
+ declare const usePrismicPreviewResolver: (args?: UsePrismicPreviewResolverArgs) => ClientHookReturnType<string>;
595
+
508
596
  /**
509
597
  * A hook that queries content from the Prismic repository.
510
598
  *
511
599
  * @remarks
512
600
  * An additional `@prismicio/client` instance can be provided at `params.client`.
601
+ *
513
602
  * @typeParam TDocument - Type of Prismic documents returned
603
+ *
514
604
  * @param params - Parameters to filter, sort, and paginate results
515
605
  *
516
606
  * @returns The composable payload {@link ClientHookReturnType}
607
+ *
517
608
  * @see Underlying `@prismicio/client` method {@link proto.get}
518
609
  */
519
610
  declare const usePrismicDocuments: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -523,10 +614,13 @@ declare const usePrismicDocuments: <TDocument extends prismicT.PrismicDocument<R
523
614
  *
524
615
  * @remarks
525
616
  * An additional `@prismicio/client` instance can be provided at `params.client`.
617
+ *
526
618
  * @typeParam TDocument - Type of the Prismic document returned
619
+ *
527
620
  * @param params - Parameters to filter, sort, and paginate results
528
621
  *
529
622
  * @returns The composable payload {@link ClientHookReturnType}
623
+ *
530
624
  * @see Underlying `@prismicio/client` method {@link proto.getFirst}
531
625
  */
532
626
  declare const useFirstPrismicDocument: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument>;
@@ -536,10 +630,13 @@ declare const useFirstPrismicDocument: <TDocument extends prismicT.PrismicDocume
536
630
  *
537
631
  * @remarks
538
632
  * An additional `@prismicio/client` instance can be provided at `params.client`.
633
+ *
539
634
  * @typeParam TDocument - Type of Prismic documents returned
635
+ *
540
636
  * @param params - Parameters to filter and sort results
541
637
  *
542
638
  * @returns The composable payload {@link ClientHookReturnType}
639
+ *
543
640
  * @see Underlying `@prismicio/client` method {@link proto.getAll}
544
641
  */
545
642
  declare const useAllPrismicDocumentsDangerously: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(params?: (Partial<Omit<_prismicio_client.BuildQueryURLArgs, "page">> & {
@@ -550,11 +647,14 @@ declare const useAllPrismicDocumentsDangerously: <TDocument extends prismicT.Pri
550
647
  *
551
648
  * @remarks
552
649
  * An additional `@prismicio/client` instance can be provided at `params.client`.
650
+ *
553
651
  * @typeParam TDocument - Type of the Prismic document returned
652
+ *
554
653
  * @param id - ID of the document
555
654
  * @param params - Parameters to filter, sort, and paginate results
556
655
  *
557
656
  * @returns The composable payload {@link ClientHookReturnType}
657
+ *
558
658
  * @see Underlying `@prismicio/client` method {@link proto.getByID}
559
659
  */
560
660
  declare const usePrismicDocumentByID: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(id: string, params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument>;
@@ -563,11 +663,14 @@ declare const usePrismicDocumentByID: <TDocument extends prismicT.PrismicDocumen
563
663
  *
564
664
  * @remarks
565
665
  * An additional `@prismicio/client` instance can be provided at `params.client`.
666
+ *
566
667
  * @typeParam TDocument - Type of Prismic documents returned
668
+ *
567
669
  * @param ids - A list of document IDs
568
670
  * @param params - Parameters to filter, sort, and paginate results
569
671
  *
570
672
  * @returns The composable payload {@link ClientHookReturnType}
673
+ *
571
674
  * @see Underlying `@prismicio/client` method {@link proto.getByIDs}
572
675
  */
573
676
  declare const usePrismicDocumentsByIDs: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(id: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -576,11 +679,14 @@ declare const usePrismicDocumentsByIDs: <TDocument extends prismicT.PrismicDocum
576
679
  *
577
680
  * @remarks
578
681
  * An additional `@prismicio/client` instance can be provided at `params.client`.
682
+ *
579
683
  * @typeParam TDocument - Type of Prismic documents returned
684
+ *
580
685
  * @param ids - A list of document IDs
581
686
  * @param params - Parameters to filter and sort results
582
687
  *
583
688
  * @returns The composable payload {@link ClientHookReturnType}
689
+ *
584
690
  * @see Underlying `@prismicio/client` method {@link proto.getAllByIDs}
585
691
  */
586
692
  declare const useAllPrismicDocumentsByIDs: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(id: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
@@ -590,12 +696,15 @@ declare const useAllPrismicDocumentsByIDs: <TDocument extends prismicT.PrismicDo
590
696
  *
591
697
  * @remarks
592
698
  * An additional `@prismicio/client` instance can be provided at `params.client`.
699
+ *
593
700
  * @typeParam TDocument - Type of the Prismic document returned
701
+ *
594
702
  * @param documentType - The API ID of the document's Custom Type
595
703
  * @param uid - UID of the document
596
704
  * @param params - Parameters to filter, sort, and paginate results
597
705
  *
598
706
  * @returns The composable payload {@link ClientHookReturnType}
707
+ *
599
708
  * @see Underlying `@prismicio/client` method {@link proto.getByUID}
600
709
  */
601
710
  declare const usePrismicDocumentByUID: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, uid: string, params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument>;
@@ -605,12 +714,15 @@ declare const usePrismicDocumentByUID: <TDocument extends prismicT.PrismicDocume
605
714
  *
606
715
  * @remarks
607
716
  * An additional `@prismicio/client` instance can be provided at `params.client`.
717
+ *
608
718
  * @typeParam TDocument - Type of the Prismic document returned
719
+ *
609
720
  * @param documentType - The API ID of the document's Custom Type
610
721
  * @param uids - A list of document UIDs.
611
722
  * @param params - Parameters to filter, sort, and paginate results
612
723
  *
613
724
  * @returns The composable payload {@link ClientHookReturnType}
725
+ *
614
726
  * @see Underlying `@prismicio/client` method {@link proto.getByUID}
615
727
  */
616
728
  declare const usePrismicDocumentsByUIDs: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, uids: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -620,12 +732,15 @@ declare const usePrismicDocumentsByUIDs: <TDocument extends prismicT.PrismicDocu
620
732
  *
621
733
  * @remarks
622
734
  * An additional `@prismicio/client` instance can be provided at `params.client`.
735
+ *
623
736
  * @typeParam TDocument - Type of the Prismic document returned
737
+ *
624
738
  * @param documentType - The API ID of the document's Custom Type
625
739
  * @param uids - A list of document UIDs.
626
740
  * @param params - Parameters to filter, sort, and paginate results
627
741
  *
628
742
  * @returns The composable payload {@link ClientHookReturnType}
743
+ *
629
744
  * @see Underlying `@prismicio/client` method {@link proto.getByUID}
630
745
  */
631
746
  declare const useAllPrismicDocumentsByUIDs: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, uids: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
@@ -635,11 +750,14 @@ declare const useAllPrismicDocumentsByUIDs: <TDocument extends prismicT.PrismicD
635
750
  *
636
751
  * @remarks
637
752
  * An additional `@prismicio/client` instance can be provided at `params.client`.
753
+ *
638
754
  * @typeParam TDocument - Type of the Prismic document returned
755
+ *
639
756
  * @param documentType - The API ID of the singleton Custom Type
640
757
  * @param params - Parameters to filter, sort, and paginate results
641
758
  *
642
759
  * @returns The composable payload {@link ClientHookReturnType}
760
+ *
643
761
  * @see Underlying `@prismicio/client` method {@link proto.getSingle}
644
762
  */
645
763
  declare const useSinglePrismicDocument: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument>;
@@ -648,11 +766,14 @@ declare const useSinglePrismicDocument: <TDocument extends prismicT.PrismicDocum
648
766
  *
649
767
  * @remarks
650
768
  * An additional `@prismicio/client` instance can be provided at `params.client`.
769
+ *
651
770
  * @typeParam TDocument - Type of Prismic documents returned
771
+ *
652
772
  * @param documentType - The API ID of the Custom Type
653
773
  * @param params - Parameters to filter, sort, and paginate results
654
774
  *
655
775
  * @returns The composable payload {@link ClientHookReturnType}
776
+ *
656
777
  * @see Underlying `@prismicio/client` method {@link proto.getByType}
657
778
  */
658
779
  declare const usePrismicDocumentsByType: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -662,11 +783,14 @@ declare const usePrismicDocumentsByType: <TDocument extends prismicT.PrismicDocu
662
783
  *
663
784
  * @remarks
664
785
  * An additional `@prismicio/client` instance can be provided at `params.client`.
786
+ *
665
787
  * @typeParam TDocument - Type of Prismic documents returned
788
+ *
666
789
  * @param documentType - The API ID of the Custom Type
667
790
  * @param params - Parameters to filter and sort results
668
791
  *
669
792
  * @returns The composable payload {@link ClientHookReturnType}
793
+ *
670
794
  * @see Underlying `@prismicio/client` method {@link proto.getAllByType}
671
795
  */
672
796
  declare const useAllPrismicDocumentsByType: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(documentType: string, params?: (Partial<Omit<_prismicio_client.BuildQueryURLArgs, "page">> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
@@ -675,11 +799,14 @@ declare const useAllPrismicDocumentsByType: <TDocument extends prismicT.PrismicD
675
799
  *
676
800
  * @remarks
677
801
  * An additional `@prismicio/client` instance can be provided at `params.client`.
802
+ *
678
803
  * @typeParam TDocument - Type of Prismic documents returned
804
+ *
679
805
  * @param tag - The tag that must be included on a document
680
806
  * @param params - Parameters to filter, sort, and paginate results
681
807
  *
682
808
  * @returns The composable payload {@link ClientHookReturnType}
809
+ *
683
810
  * @see Underlying `@prismicio/client` method {@link proto.getByTag}
684
811
  */
685
812
  declare const usePrismicDocumentsByTag: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string, params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -688,11 +815,14 @@ declare const usePrismicDocumentsByTag: <TDocument extends prismicT.PrismicDocum
688
815
  *
689
816
  * @remarks
690
817
  * An additional `@prismicio/client` instance can be provided at `params.client`.
818
+ *
691
819
  * @typeParam TDocument - Type of Prismic documents returned
820
+ *
692
821
  * @param tag - The tag that must be included on a document
693
822
  * @param params - Parameters to filter and sort results
694
823
  *
695
824
  * @returns The composable payload {@link ClientHookReturnType}
825
+ *
696
826
  * @see Underlying `@prismicio/client` method {@link proto.getAllByTag}
697
827
  */
698
828
  declare const useAllPrismicDocumentsByTag: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string, params?: (Partial<Omit<_prismicio_client.BuildQueryURLArgs, "page">> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
@@ -702,11 +832,14 @@ declare const useAllPrismicDocumentsByTag: <TDocument extends prismicT.PrismicDo
702
832
  *
703
833
  * @remarks
704
834
  * An additional `@prismicio/client` instance can be provided at `params.client`.
835
+ *
705
836
  * @typeParam TDocument - Type of Prismic documents returned
837
+ *
706
838
  * @param tags - A list of tags that must be included on a document
707
839
  * @param params - Parameters to filter, sort, and paginate results
708
840
  *
709
841
  * @returns The composable payload {@link ClientHookReturnType}
842
+ *
710
843
  * @see Underlying `@prismicio/client` method {@link proto.getByTags}
711
844
  */
712
845
  declare const usePrismicDocumentsBySomeTags: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -716,11 +849,14 @@ declare const usePrismicDocumentsBySomeTags: <TDocument extends prismicT.Prismic
716
849
  *
717
850
  * @remarks
718
851
  * An additional `@prismicio/client` instance can be provided at `params.client`.
852
+ *
719
853
  * @typeParam TDocument - Type of Prismic documents returned
854
+ *
720
855
  * @param tags - A list of tags that must be included on a document
721
856
  * @param params - Parameters to filter and sort results
722
857
  *
723
858
  * @returns The composable payload {@link ClientHookReturnType}
859
+ *
724
860
  * @see Underlying `@prismicio/client` method {@link proto.getAllByTags}
725
861
  */
726
862
  declare const useAllPrismicDocumentsBySomeTags: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string[], params?: (Partial<Omit<_prismicio_client.BuildQueryURLArgs, "page">> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
@@ -730,11 +866,14 @@ declare const useAllPrismicDocumentsBySomeTags: <TDocument extends prismicT.Pris
730
866
  *
731
867
  * @remarks
732
868
  * An additional `@prismicio/client` instance can be provided at `params.client`.
869
+ *
733
870
  * @typeParam TDocument - Type of Prismic documents returned
871
+ *
734
872
  * @param tags - A list of tags that must be included on a document
735
873
  * @param params - Parameters to filter, sort, and paginate results
736
874
  *
737
875
  * @returns The composable payload {@link ClientHookReturnType}
876
+ *
738
877
  * @see Underlying `@prismicio/client` method {@link proto.getByTags}
739
878
  */
740
879
  declare const usePrismicDocumentsByEveryTag: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string[], params?: (Partial<_prismicio_client.BuildQueryURLArgs> & HookOnlyParameters) | undefined) => ClientHookReturnType<prismicT.Query<TDocument>>;
@@ -744,13 +883,16 @@ declare const usePrismicDocumentsByEveryTag: <TDocument extends prismicT.Prismic
744
883
  *
745
884
  * @remarks
746
885
  * An additional `@prismicio/client` instance can be provided at `params.client`.
886
+ *
747
887
  * @typeParam TDocument - Type of Prismic documents returned
888
+ *
748
889
  * @param tags - A list of tags that must be included on a document
749
890
  * @param params - Parameters to filter and sort results
750
891
  *
751
892
  * @returns The composable payload {@link ClientHookReturnType}
893
+ *
752
894
  * @see Underlying `@prismicio/client` method {@link proto.getAllByTags}
753
895
  */
754
896
  declare const useAllPrismicDocumentsByEveryTag: <TDocument extends prismicT.PrismicDocument<Record<string, prismicT.AnyRegularField | prismicT.GroupField<Record<string, prismicT.AnyRegularField>> | prismicT.SliceZone<prismicT.Slice<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>> | prismicT.SharedSlice<string, prismicT.SharedSliceVariation<string, Record<string, prismicT.AnyRegularField>, Record<string, prismicT.AnyRegularField>>>>>, string, string>>(tag: string[], params?: (Partial<Omit<_prismicio_client.BuildQueryURLArgs, "page">> & HookOnlyParameters) | undefined) => ClientHookReturnType<TDocument[]>;
755
897
 
756
- export { JSXFunctionSerializer, JSXMapSerializer, LinkProps, PrismicClientHookState, PrismicContextValue, PrismicLink, PrismicLinkProps, PrismicProvider, PrismicProviderProps, PrismicRichText, PrismicRichTextProps, PrismicText, PrismicTextProps, PrismicToolbar, PrismicToolbarProps, SliceComponentProps, SliceComponentType, SliceLike, SliceZone, SliceZoneComponents, SliceZoneLike, SliceZoneProps, TODOSliceComponent, useAllPrismicDocumentsByEveryTag, useAllPrismicDocumentsByIDs, useAllPrismicDocumentsBySomeTags, useAllPrismicDocumentsByTag, useAllPrismicDocumentsByType, useAllPrismicDocumentsByUIDs, useAllPrismicDocumentsDangerously, useFirstPrismicDocument, usePrismicClient, usePrismicContext, usePrismicDocumentByID, usePrismicDocumentByUID, usePrismicDocuments, usePrismicDocumentsByEveryTag, usePrismicDocumentsByIDs, usePrismicDocumentsBySomeTags, usePrismicDocumentsByTag, usePrismicDocumentsByType, usePrismicDocumentsByUIDs, useSinglePrismicDocument };
898
+ export { JSXFunctionSerializer, JSXMapSerializer, LinkProps, PrismicClientHookState, PrismicContextValue, PrismicLink, PrismicLinkProps, PrismicProvider, PrismicProviderProps, PrismicRichText, PrismicRichTextProps, PrismicText, PrismicTextProps, PrismicToolbar, PrismicToolbarProps, SliceComponentProps, SliceComponentType, SliceLike, SliceZone, SliceZoneComponents, SliceZoneLike, SliceZoneProps, SliceZoneResolver, TODOSliceComponent, UsePrismicPreviewResolverArgs, useAllPrismicDocumentsByEveryTag, useAllPrismicDocumentsByIDs, useAllPrismicDocumentsBySomeTags, useAllPrismicDocumentsByTag, useAllPrismicDocumentsByType, useAllPrismicDocumentsByUIDs, useAllPrismicDocumentsDangerously, useFirstPrismicDocument, usePrismicClient, usePrismicContext, usePrismicDocumentByID, usePrismicDocumentByUID, usePrismicDocuments, usePrismicDocumentsByEveryTag, usePrismicDocumentsByIDs, usePrismicDocumentsBySomeTags, usePrismicDocumentsByTag, usePrismicDocumentsByType, usePrismicDocumentsByUIDs, usePrismicPreviewResolver, useSinglePrismicDocument };
package/dist/index.mjs CHANGED
@@ -255,13 +255,24 @@ const TODOSliceComponent = __PRODUCTION__ ? () => null : ({
255
255
  const SliceZone = ({
256
256
  slices = [],
257
257
  components = {},
258
+ resolver,
258
259
  defaultComponent = TODOSliceComponent,
259
260
  context = {}
260
261
  }) => {
261
262
  const renderedSlices = React.useMemo(() => {
262
263
  return slices.map((slice, index) => {
263
- const Comp = components[slice.slice_type] || defaultComponent;
264
- const key = JSON.stringify(slice);
264
+ let Comp = components[slice.slice_type] || defaultComponent;
265
+ if (resolver) {
266
+ const resolvedComp = resolver({
267
+ slice,
268
+ sliceName: slice.slice_type,
269
+ i: index
270
+ });
271
+ if (resolvedComp) {
272
+ Comp = resolvedComp;
273
+ }
274
+ }
275
+ const key = `${index}-${JSON.stringify(slice)}`;
265
276
  return /* @__PURE__ */ React.createElement(Comp, {
266
277
  key,
267
278
  slice,
@@ -328,15 +339,15 @@ const getParamHookDependencies = (params) => {
328
339
  const isParams = (value) => {
329
340
  return typeof value === "object" && value !== null && !Array.isArray(value);
330
341
  };
331
- const useStatefulPrismicClientMethod = (methodName, args) => {
342
+ const useStatefulPrismicClientMethod = (methodName, args, explicitClient) => {
332
343
  const lastArg = args[args.length - 1];
333
344
  const {
334
- client: explicitClient,
345
+ client: lastArgExplicitClient,
335
346
  skip,
336
347
  ...params
337
348
  } = isParams(lastArg) ? lastArg : {};
338
349
  const argsWithoutParams = isParams(lastArg) ? args.slice(0, -1) : args;
339
- const client = usePrismicClient(explicitClient);
350
+ const client = usePrismicClient(explicitClient || lastArgExplicitClient);
340
351
  const [state, dispatch] = React.useReducer(reducer, initialState);
341
352
  React.useEffect(() => {
342
353
  if (state.state === "idle" && !skip) {
@@ -360,6 +371,25 @@ const useStatefulPrismicClientMethod = (methodName, args) => {
360
371
  ], [state]);
361
372
  };
362
373
 
374
+ const usePrismicPreviewResolver = (args = {}) => {
375
+ const result = useStatefulPrismicClientMethod("resolvePreviewURL", [
376
+ {
377
+ linkResolver: args.linkResolver,
378
+ defaultURL: args.defaultURL || "/",
379
+ previewToken: args.previewToken,
380
+ documentID: args.documentID
381
+ }
382
+ ], args.client);
383
+ const [resolvedURL] = result;
384
+ const { navigate } = args;
385
+ React.useEffect(() => {
386
+ if (resolvedURL && navigate) {
387
+ navigate(resolvedURL);
388
+ }
389
+ }, [resolvedURL, navigate]);
390
+ return result;
391
+ };
392
+
363
393
  const usePrismicDocuments = (...args) => useStatefulPrismicClientMethod("get", args);
364
394
  const useFirstPrismicDocument = (...args) => useStatefulPrismicClientMethod("getFirst", args);
365
395
  const useAllPrismicDocumentsDangerously = (...args) => useStatefulPrismicClientMethod("dangerouslyGetAll", args);
@@ -379,5 +409,5 @@ const useAllPrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMe
379
409
  const usePrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod("getByEveryTag", args);
380
410
  const useAllPrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod("getAllByEveryTag", args);
381
411
 
382
- export { PrismicLink, PrismicProvider, PrismicRichText, PrismicText, PrismicToolbar, SliceZone, TODOSliceComponent, useAllPrismicDocumentsByEveryTag, useAllPrismicDocumentsByIDs, useAllPrismicDocumentsBySomeTags, useAllPrismicDocumentsByTag, useAllPrismicDocumentsByType, useAllPrismicDocumentsByUIDs, useAllPrismicDocumentsDangerously, useFirstPrismicDocument, usePrismicClient, usePrismicContext, usePrismicDocumentByID, usePrismicDocumentByUID, usePrismicDocuments, usePrismicDocumentsByEveryTag, usePrismicDocumentsByIDs, usePrismicDocumentsBySomeTags, usePrismicDocumentsByTag, usePrismicDocumentsByType, usePrismicDocumentsByUIDs, useSinglePrismicDocument };
412
+ export { PrismicLink, PrismicProvider, PrismicRichText, PrismicText, PrismicToolbar, SliceZone, TODOSliceComponent, useAllPrismicDocumentsByEveryTag, useAllPrismicDocumentsByIDs, useAllPrismicDocumentsBySomeTags, useAllPrismicDocumentsByTag, useAllPrismicDocumentsByType, useAllPrismicDocumentsByUIDs, useAllPrismicDocumentsDangerously, useFirstPrismicDocument, usePrismicClient, usePrismicContext, usePrismicDocumentByID, usePrismicDocumentByUID, usePrismicDocuments, usePrismicDocumentsByEveryTag, usePrismicDocumentsByIDs, usePrismicDocumentsBySomeTags, usePrismicDocumentsByTag, usePrismicDocumentsByType, usePrismicDocumentsByUIDs, usePrismicPreviewResolver, useSinglePrismicDocument };
383
413
  //# sourceMappingURL=index.mjs.map