UNPKG

@terrible-lexical/markdown

Version:

This package contains Markdown helpers and functionality for Lexical.

118 lines (108 loc) 2.61 kB
/** @module @terrible-lexical/markdown */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer, } from './MarkdownTransformers'; import type {ElementNode} from 'terrible-lexical'; import {createMarkdownExport} from './MarkdownExport'; import {createMarkdownImport} from './MarkdownImport'; import {registerMarkdownShortcuts} from './MarkdownShortcuts'; import { BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, HEADING, HIGHLIGHT, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, STRIKETHROUGH, UNORDERED_LIST, } from './MarkdownTransformers'; const ELEMENT_TRANSFORMERS: Array<ElementTransformer> = [ HEADING, QUOTE, CODE, UNORDERED_LIST, ORDERED_LIST, ]; // Order of text format transformers matters: // // - code should go first as it prevents any transformations inside // - then longer tags match (e.g. ** or __ should go before * or _) const TEXT_FORMAT_TRANSFORMERS: Array<TextFormatTransformer> = [ INLINE_CODE, BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, HIGHLIGHT, ITALIC_STAR, ITALIC_UNDERSCORE, STRIKETHROUGH, ]; const TEXT_MATCH_TRANSFORMERS: Array<TextMatchTransformer> = [LINK]; const TRANSFORMERS: Array<Transformer> = [ ...ELEMENT_TRANSFORMERS, ...TEXT_FORMAT_TRANSFORMERS, ...TEXT_MATCH_TRANSFORMERS, ]; function $convertFromMarkdownString( markdown: string, transformers: Array<Transformer> = TRANSFORMERS, node?: ElementNode, ): void { const importMarkdown = createMarkdownImport(transformers); return importMarkdown(markdown, node); } function $convertToMarkdownString( transformers: Array<Transformer> = TRANSFORMERS, node?: ElementNode, ): string { const exportMarkdown = createMarkdownExport(transformers); return exportMarkdown(node); } export { $convertFromMarkdownString, $convertToMarkdownString, BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, ELEMENT_TRANSFORMERS, ElementTransformer, HEADING, HIGHLIGHT, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, registerMarkdownShortcuts, STRIKETHROUGH, TEXT_FORMAT_TRANSFORMERS, TEXT_MATCH_TRANSFORMERS, TextFormatTransformer, TextMatchTransformer, Transformer, TRANSFORMERS, UNORDERED_LIST, };