/
PrismicRichText.tsx
38 lines (31 loc) · 1.12 KB
/
PrismicRichText.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use client";
import * as prismic from "@prismicio/client";
import * as prismicR from "@prismicio/richtext";
import {
PrismicRichText as ServerPrismicRichText,
PrismicRichTextProps,
} from "./react-server/PrismicRichText";
import { usePrismicContext } from "./usePrismicContext";
export { PrismicRichTextProps };
export const PrismicRichText = function PrismicRichText<
// eslint-disable-next-line @typescript-eslint/no-explicit-any
LinkResolverFunction extends prismic.LinkResolverFunction<any> = prismic.LinkResolverFunction,
>({ components, ...restProps }: PrismicRichTextProps<LinkResolverFunction>) {
const context = usePrismicContext();
const serializer = prismicR.composeSerializers(
typeof components === "object"
? prismicR.wrapMapSerializer(components)
: components,
typeof context.richTextComponents === "object"
? prismicR.wrapMapSerializer(context.richTextComponents)
: context.richTextComponents,
);
return (
<ServerPrismicRichText
components={serializer}
internalLinkComponent={context.internalLinkComponent}
externalLinkComponent={context.externalLinkComponent}
{...restProps}
/>
);
};