@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
83 lines (81 loc) • 7.23 kB
JavaScript
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