UNPKG

gatsby-source-prismic

Version:

Gatsby source plugin for building websites using Prismic as a data source

43 lines (37 loc) 1.12 kB
import * as prismicH from "@prismicio/helpers"; import { NormalizeConfig, NormalizerDependencies, StructuredTextField, } from "../types"; export const isStructuredTextField = ( value: unknown, ): value is StructuredTextField => { // We must be very loose here. An image element, for example, does not // contain a `text` property. return Array.isArray(value) && value.every((element) => "type" in element); }; export type NormalizeStructuredTextConfig< Value extends StructuredTextField = StructuredTextField, > = NormalizeConfig<Value> & Pick<NormalizerDependencies, "linkResolver" | "htmlSerializer">; export type NormalizedStructuredTextValue<Value extends StructuredTextField> = { html: string; text: string; richText: Value; raw: Value; }; export const structuredText = <Value extends StructuredTextField>( config: NormalizeStructuredTextConfig<Value>, ): NormalizedStructuredTextValue<Value> => { return { html: prismicH.asHTML( config.value, config.linkResolver, config.htmlSerializer, ), text: prismicH.asText(config.value), richText: config.value, raw: config.value, }; };