@prismicio/helpers
Version:
Set of helpers to manage Prismic data
54 lines (53 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const escapeHTML = require("./escapeHTML.cjs");
const types = require("@prismicio/types");
const asLink = require("../asLink.cjs");
const getLabel = (node) => {
return "data" in node && "label" in node.data ? ` class="${node.data.label}"` : "";
};
const serializeStandardTag = (tag, node, children) => {
return `<${tag}${getLabel(node)}>${children.join("")}</${tag}>`;
};
const serializePreFormatted = (node) => {
return `<pre${getLabel(node)}>${escapeHTML.escapeHTML(node.text)}</pre>`;
};
const serializeImage = (linkResolver, node) => {
let imageTag = `<img src="${node.url}" alt="${escapeHTML.escapeHTML(node.alt)}"${node.copyright ? ` copyright="${escapeHTML.escapeHTML(node.copyright)}"` : ""} />`;
if (node.linkTo) {
imageTag = serializeHyperlink(linkResolver, {
type: types.RichTextNodeType.hyperlink,
data: node.linkTo,
start: 0,
end: 0
}, [imageTag]);
}
return `<p class="block-img">${imageTag}</p>`;
};
const serializeEmbed = (node) => {
return `<div data-oembed="${node.oembed.embed_url}" data-oembed-type="${node.oembed.type}" data-oembed-provider="${node.oembed.provider_name}"${getLabel(node)}>${node.oembed.html}</div>`;
};
const serializeHyperlink = (linkResolver, node, children) => {
switch (node.data.link_type) {
case types.LinkType.Web: {
return `<a href="${escapeHTML.escapeHTML(node.data.url)}" ${node.data.target ? `target="${node.data.target}" ` : ""}rel="noopener noreferrer"${getLabel(node)}>${children.join("")}</a>`;
}
case types.LinkType.Document: {
return `<a href="${asLink.asLink(node.data, linkResolver)}"${getLabel(node)}>${children.join("")}</a>`;
}
case types.LinkType.Media: {
return `<a href="${node.data.url}"${getLabel(node)}>${children.join("")}</a>`;
}
}
};
const serializeSpan = (content) => {
return content ? escapeHTML.escapeHTML(content).replace(/\n/g, "<br />") : "";
};
exports.getLabel = getLabel;
exports.serializeEmbed = serializeEmbed;
exports.serializeHyperlink = serializeHyperlink;
exports.serializeImage = serializeImage;
exports.serializePreFormatted = serializePreFormatted;
exports.serializeSpan = serializeSpan;
exports.serializeStandardTag = serializeStandardTag;
//# sourceMappingURL=serializerHelpers.cjs.map