mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-20 18:25:21 -04:00

Doing this BEFORE the merge prevents a lot of merge conflicts. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { useMemo } from 'react'
|
|
import MarkdownIt from 'markdown-it/lib'
|
|
import type { MarkdownRendererExtension } from '../extensions/base/markdown-renderer-extension'
|
|
|
|
/**
|
|
* Creates a new {@link MarkdownIt markdown-it instance} and configures it using the given {@link MarkdownRendererExtension markdown renderer extensions}.
|
|
*
|
|
* @param extensions The extensions that configure the new markdown-it instance
|
|
* @param allowHtml Defines if html in markdown is allowed
|
|
* @param newlinesAreBreaks Defines if new lines should be treated as line breaks or paragraphs
|
|
* @return the created markdown-it instance
|
|
*/
|
|
export const useConfiguredMarkdownIt = (
|
|
extensions: MarkdownRendererExtension[],
|
|
allowHtml: boolean,
|
|
newlinesAreBreaks: boolean
|
|
): MarkdownIt => {
|
|
return useMemo(() => {
|
|
const newMarkdownIt = new MarkdownIt('default', {
|
|
html: allowHtml,
|
|
breaks: newlinesAreBreaks,
|
|
langPrefix: '',
|
|
typographer: true
|
|
})
|
|
extensions.forEach((extension) => newMarkdownIt.use((markdownIt) => extension.configureMarkdownIt(markdownIt)))
|
|
extensions.forEach((extension) => newMarkdownIt.use((markdownIt) => extension.configureMarkdownItPost(markdownIt)))
|
|
return newMarkdownIt
|
|
}, [allowHtml, extensions, newlinesAreBreaks])
|
|
}
|