@kontent-ai/rich-text-resolver-markdown
v3.0.3
Published
Kontent.ai rich text Markdown transformer - converts Portable Text to Markdown
Readme
@kontent-ai/rich-text-resolver-markdown
[!NOTE] This is part of the @kontent-ai/rich-text-resolver monorepo. For general information and other packages, see the main README.
Requires: @kontent-ai/rich-text-resolver as peer dependency
Markdown transformation utilities for Kontent.ai rich text. This package provides tools for converting Portable Text blocks to Markdown format.
Installation
npm i --save @kontent-ai/rich-text-resolver-markdown
npm i --save @kontent-ai/rich-text-resolver # peer dependencyExamples
Markdown Resolution
Markdown resolution using toMarkdown function built on top of @portabletext/to-html package with custom markdown-specific resolvers.
import {
transformToPortableText,
} from "@kontent-ai/rich-text-resolver";
import {
toMarkdown,
PortableTextMarkdownResolvers,
} from "@kontent-ai/rich-text-resolver-markdown";
const richTextValue = "<rich text html>";
const linkedItems = ["<array of linked items>"]; // e.g. from SDK
const portableText = transformToPortableText(richTextValue);
const resolvers: PortableTextMarkdownResolvers = {
components: {
types: {
componentOrItem: ({ value }) => {
const linkedItem = linkedItems.find(
(item) => item.system.codename === value.componentOrItem._ref
);
switch (linkedItem?.system.type) {
case "component_type_codename": {
return `**${linkedItem?.elements.text_element.value}**\n\n`;
}
default: {
return `Resolver for type ${linkedItem?.system.type} not implemented.\n\n`;
}
}
},
},
marks: {
contentItemLink: ({ children, value }) => {
return `[${children}](https://website.com/${value.contentItemLink._ref})`;
},
},
},
};
const resolvedMarkdown = toMarkdown(portableText, resolvers);