UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

83 lines (81 loc) 7.23 kB
const require_serializerHelpers = require('../lib/serializerHelpers.cjs'); const require_serialize = require('../richtext/serialize.cjs'); const require_wrapMapSerializer = require('../richtext/wrapMapSerializer.cjs'); const require_composeSerializers = require('../richtext/composeSerializers.cjs'); //#region src/helpers/asHTML.ts /** * Creates a HTML rich text serializer with a given link resolver and provide * sensible and safe defaults for every node type * * @internal */ const createHTMLRichTextSerializer = (linkResolver, serializer) => { const useSerializerOrDefault = (nodeSerializerOrShorthand, defaultWithShorthand) => { if (typeof nodeSerializerOrShorthand === "function") return ((payload) => { return (nodeSerializerOrShorthand === null || nodeSerializerOrShorthand === void 0 ? void 0 : nodeSerializerOrShorthand(payload)) || defaultWithShorthand(payload); }); return defaultWithShorthand; }; return wrapMapSerializerWithStringChildren({ heading1: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading1, require_serializerHelpers.serializeStandardTag("h1", serializer === null || serializer === void 0 ? void 0 : serializer.heading1)), heading2: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading2, require_serializerHelpers.serializeStandardTag("h2", serializer === null || serializer === void 0 ? void 0 : serializer.heading2)), heading3: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading3, require_serializerHelpers.serializeStandardTag("h3", serializer === null || serializer === void 0 ? void 0 : serializer.heading3)), heading4: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading4, require_serializerHelpers.serializeStandardTag("h4", serializer === null || serializer === void 0 ? void 0 : serializer.heading4)), heading5: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading5, require_serializerHelpers.serializeStandardTag("h5", serializer === null || serializer === void 0 ? void 0 : serializer.heading5)), heading6: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.heading6, require_serializerHelpers.serializeStandardTag("h6", serializer === null || serializer === void 0 ? void 0 : serializer.heading6)), paragraph: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.paragraph, require_serializerHelpers.serializeStandardTag("p", serializer === null || serializer === void 0 ? void 0 : serializer.paragraph)), preformatted: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.preformatted, require_serializerHelpers.serializePreFormatted(serializer === null || serializer === void 0 ? void 0 : serializer.preformatted)), strong: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.strong, require_serializerHelpers.serializeStandardTag("strong", serializer === null || serializer === void 0 ? void 0 : serializer.strong)), em: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.em, require_serializerHelpers.serializeStandardTag("em", serializer === null || serializer === void 0 ? void 0 : serializer.em)), listItem: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.listItem, require_serializerHelpers.serializeStandardTag("li", serializer === null || serializer === void 0 ? void 0 : serializer.listItem)), oListItem: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.oListItem, require_serializerHelpers.serializeStandardTag("li", serializer === null || serializer === void 0 ? void 0 : serializer.oListItem)), list: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.list, require_serializerHelpers.serializeStandardTag("ul", serializer === null || serializer === void 0 ? void 0 : serializer.list)), oList: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.oList, require_serializerHelpers.serializeStandardTag("ol", serializer === null || serializer === void 0 ? void 0 : serializer.oList)), image: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.image, require_serializerHelpers.serializeImage(linkResolver, serializer === null || serializer === void 0 ? void 0 : serializer.image)), embed: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.embed, require_serializerHelpers.serializeEmbed(serializer === null || serializer === void 0 ? void 0 : serializer.embed)), hyperlink: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.hyperlink, require_serializerHelpers.serializeHyperlink(linkResolver, serializer === null || serializer === void 0 ? void 0 : serializer.hyperlink)), label: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.label, require_serializerHelpers.serializeStandardTag("span", serializer === null || serializer === void 0 ? void 0 : serializer.label)), span: useSerializerOrDefault(serializer === null || serializer === void 0 ? void 0 : serializer.span, require_serializerHelpers.serializeSpan()) }); }; /** * Wraps a map serializer into a regular function serializer. The given map * serializer should accept children as a string, not as an array of strings * like `@prismicio/client/richtext`'s `wrapMapSerializer`. * * @param mapSerializer - Map serializer to wrap * * @returns A regular function serializer */ const wrapMapSerializerWithStringChildren = (mapSerializer) => { const modifiedMapSerializer = {}; for (const tag in mapSerializer) { const tagSerializer = mapSerializer[tag]; if (tagSerializer) modifiedMapSerializer[tag] = (payload) => { return tagSerializer({ ...payload, children: payload.children.join("") }); }; } return require_wrapMapSerializer.wrapMapSerializer(modifiedMapSerializer); }; const asHTML = (richTextField, ...configObjectOrTuple) => { if (richTextField) { const [configObjectOrLinkResolver, maybeSerializer] = configObjectOrTuple; let config; if (typeof configObjectOrLinkResolver === "function" || configObjectOrLinkResolver == null) config = { linkResolver: configObjectOrLinkResolver, serializer: maybeSerializer }; else config = { ...configObjectOrLinkResolver }; let serializer; if (config.serializer) if (typeof config.serializer === "function") serializer = require_composeSerializers.composeSerializers((type, node, text, children, key) => config.serializer(type, node, text, children.join(""), key), createHTMLRichTextSerializer(config.linkResolver)); else serializer = createHTMLRichTextSerializer(config.linkResolver, config.serializer); else serializer = createHTMLRichTextSerializer(config.linkResolver); return require_serialize.serialize(richTextField, serializer).join(""); } else return null; }; //#endregion exports.asHTML = asHTML; //# sourceMappingURL=asHTML.cjs.map