@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
87 lines (86 loc) • 6.13 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const serializerHelpers = require("../lib/serializerHelpers.cjs");
const serialize = require("../richtext/serialize.cjs");
const wrapMapSerializer = require("../richtext/wrapMapSerializer.cjs");
const composeSerializers = require("../richtext/composeSerializers.cjs");
const createHTMLRichTextSerializer = (linkResolver, serializer) => {
const useSerializerOrDefault = (nodeSerializerOrShorthand, defaultWithShorthand) => {
if (typeof nodeSerializerOrShorthand === "function") {
return (payload) => {
return (nodeSerializerOrShorthand == null ? void 0 : nodeSerializerOrShorthand(payload)) || defaultWithShorthand(payload);
};
}
return defaultWithShorthand;
};
const mapSerializer = {
heading1: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading1, serializerHelpers.serializeStandardTag("h1", serializer == null ? void 0 : serializer.heading1)),
heading2: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading2, serializerHelpers.serializeStandardTag("h2", serializer == null ? void 0 : serializer.heading2)),
heading3: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading3, serializerHelpers.serializeStandardTag("h3", serializer == null ? void 0 : serializer.heading3)),
heading4: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading4, serializerHelpers.serializeStandardTag("h4", serializer == null ? void 0 : serializer.heading4)),
heading5: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading5, serializerHelpers.serializeStandardTag("h5", serializer == null ? void 0 : serializer.heading5)),
heading6: useSerializerOrDefault(serializer == null ? void 0 : serializer.heading6, serializerHelpers.serializeStandardTag("h6", serializer == null ? void 0 : serializer.heading6)),
paragraph: useSerializerOrDefault(serializer == null ? void 0 : serializer.paragraph, serializerHelpers.serializeStandardTag("p", serializer == null ? void 0 : serializer.paragraph)),
preformatted: useSerializerOrDefault(serializer == null ? void 0 : serializer.preformatted, serializerHelpers.serializePreFormatted(serializer == null ? void 0 : serializer.preformatted)),
strong: useSerializerOrDefault(serializer == null ? void 0 : serializer.strong, serializerHelpers.serializeStandardTag("strong", serializer == null ? void 0 : serializer.strong)),
em: useSerializerOrDefault(serializer == null ? void 0 : serializer.em, serializerHelpers.serializeStandardTag("em", serializer == null ? void 0 : serializer.em)),
listItem: useSerializerOrDefault(serializer == null ? void 0 : serializer.listItem, serializerHelpers.serializeStandardTag("li", serializer == null ? void 0 : serializer.listItem)),
oListItem: useSerializerOrDefault(serializer == null ? void 0 : serializer.oListItem, serializerHelpers.serializeStandardTag("li", serializer == null ? void 0 : serializer.oListItem)),
list: useSerializerOrDefault(serializer == null ? void 0 : serializer.list, serializerHelpers.serializeStandardTag("ul", serializer == null ? void 0 : serializer.list)),
oList: useSerializerOrDefault(serializer == null ? void 0 : serializer.oList, serializerHelpers.serializeStandardTag("ol", serializer == null ? void 0 : serializer.oList)),
image: useSerializerOrDefault(serializer == null ? void 0 : serializer.image, serializerHelpers.serializeImage(linkResolver, serializer == null ? void 0 : serializer.image)),
embed: useSerializerOrDefault(serializer == null ? void 0 : serializer.embed, serializerHelpers.serializeEmbed(serializer == null ? void 0 : serializer.embed)),
hyperlink: useSerializerOrDefault(serializer == null ? void 0 : serializer.hyperlink, serializerHelpers.serializeHyperlink(linkResolver, serializer == null ? void 0 : serializer.hyperlink)),
label: useSerializerOrDefault(serializer == null ? void 0 : serializer.label, serializerHelpers.serializeStandardTag("span", serializer == null ? void 0 : serializer.label)),
span: useSerializerOrDefault(serializer == null ? void 0 : serializer.span, serializerHelpers.serializeSpan())
};
return wrapMapSerializerWithStringChildren(mapSerializer);
};
const wrapMapSerializerWithStringChildren = (mapSerializer) => {
const modifiedMapSerializer = {};
for (const tag in mapSerializer) {
const tagSerializer = mapSerializer[tag];
if (tagSerializer) {
modifiedMapSerializer[tag] = (payload) => {
return tagSerializer({
...payload,
// @ts-expect-error - merging blockSerializer types causes TS to bail to a never type
children: payload.children.join("")
});
};
}
}
return 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 = composeSerializers.composeSerializers((type, node, text, children, key) => (
// TypeScript doesn't narrow the type correctly here since it is now in a callback function, so we have to cast it here.
config.serializer(type, node, text, children.join(""), key)
), createHTMLRichTextSerializer(config.linkResolver));
} else {
serializer = createHTMLRichTextSerializer(config.linkResolver, config.serializer);
}
} else {
serializer = createHTMLRichTextSerializer(config.linkResolver);
}
return serialize.serialize(richTextField, serializer).join("");
} else {
return null;
}
};
exports.asHTML = asHTML;
//# sourceMappingURL=asHTML.cjs.map