react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
41 lines (38 loc) • 1.58 kB
JavaScript
'use client';
import { useEditedContentRenderer } from "../editor/useEditedContentRenderer.mjs";
import { useMarkdownContext } from "./MarkdownProvider.mjs";
import { getContent, getContentNodeByKeyPath, getMarkdownMetadata } from "@intlayer/core";
import { useEditorLocale } from "@intlayer/editor-react";
//#region src/markdown/MarkdownRenderer.tsx
const MarkdownRenderer = ({ dictionaryKey, keyPath, children, locale }) => {
const { renderMarkdown } = useMarkdownContext();
const editedContentContext = useEditedContentRenderer({
dictionaryKey,
keyPath,
children
});
if (typeof editedContentContext !== "string") {
const transformedEditedContent = getContent(editedContentContext, {
dictionaryKey,
keyPath
}, locale);
if (typeof transformedEditedContent !== "string") {
console.error(`Incorrect Markdown content. Edited Markdown content type: ${typeof transformedEditedContent}. Expected string. Value ${JSON.stringify(transformedEditedContent)}`);
return renderMarkdown(children);
}
return renderMarkdown(transformedEditedContent);
}
return renderMarkdown(editedContentContext);
};
const MarkdownMetadataRenderer = ({ dictionaryKey, keyPath, children, metadataKeyPath }) => {
const editedContentContext = useEditedContentRenderer({
dictionaryKey,
keyPath,
children
});
const currentLocale = useEditorLocale();
return getContentNodeByKeyPath(getMarkdownMetadata(editedContentContext), metadataKeyPath, currentLocale);
};
//#endregion
export { MarkdownMetadataRenderer, MarkdownRenderer };
//# sourceMappingURL=MarkdownRenderer.mjs.map