Библиотека для рендеринга Markdown на основе marked для платформы HarmonyOS
Основные характеристики:
Название | Обязательный | Значение по умолчанию | Описание |
---|---|---|---|
content | Да | Текст в формате Markdown | |
theme | Нет | defaultTheme (аналог интерфейса GitHub) | Тема, цвета и другие настройки |
fontStyle | Нет | {fontColor: Color.Black, fontSize: 16, fontWeight: FontWeight.Normal} | Стиль шрифта |
lineSpace | Нет | 0 | Интервал между элементами |
textLineSpace | Нет | 0 | Интервал между строками текста |
ohpm install @lidary/markdown
import { Markdown } from '@lidary/markdown';
// Установка глобальной темы, которая заменяет встроенные темы
markConfig.setTheme({
themeColor: Color.Red,
link: {
fontColor: Color.Red
}
})
// Установка события клика по изображению
markConfig.registerImageClick = (url?: string) => {
promptAction.showToast({
message: Изображение было нажато: ${url}
,
duration: 1500,
bottom: "center",
})
}
// Установка события клика по ссылке
markConfig.registerLinkClick = (url?: string) => {
promptAction.showToast({
message: Ссылка была нажата: ${url}
,
duration: 1500,
bottom: "center",
})
}
```typescript
Markdown({
content: this.markdownContent,
lineSpace: 6,
// Замена глобальной темы, установленной через markConfig.setTheme (наивысший приоритет)
theme: {
themeColor: Color.Orange,
link: {
fontColor: Color.Orange
}
},
fontStyle: {
fontColor: this.isDark ? Color.White : Color.Black
}
}).backgroundColor(this.isDark ? Color.Black : Color.White)
```> #### Приоритет конфигурации (от высокого к низкому) следующий:
>
> 1. Тема **theme**, переданная через компонент Markdown
>
> 2. Вызов метода `markConfig.setTheme`
>
> 3. Встроенная по умолчанию тема в HMarkdown
---
### Плагины
1. Добавление плагинов
```typescript
// Добавление парсера математических формул (подробнее см. demo)
markConfig.addPlugin([latexBlock(), latexInline()])
// Можно получить свойства, такие как цвет шрифта, отступы и т.д., через that.fontStyle, that.theme, that.lineSpace
@Builder
function BlockBuilder(type: string, token: Tokens.Generic, that: ESObject) {
if (type === 'blockKatex') {
// Можно передать token.text на сервер для генерации svg
Row()
{
Image($r('app.media.latex_test'))
.fillColor(that.fontStyle?.fontColor)
.height(40)
}
.
width('100%')
.justifyContent(FlexAlign.Center)
}
}
@Builder
function InlineBuilder(type: string, token: Tokens.Generic, that: ESObject) {
if (type === 'inlineKatex') {
// Можно передать token.text на сервер для генерации svg
ImageSpan($r('app.media.latex_test'))
.height(40)
.verticalAlign(ImageSpanAlignment.CENTER)
}
}
markConfig.customBlockBuilder = wrapBuilder(BlockBuilder)
markConfig.customInlineBuilder = wrapBuilder(InlineBuilder)
```## Лицензия
Проект использует лицензию [MIT License](https://gitee.com/daryl_code/HMarkdown/blob/main/Markdown/LICENSE). Пожалуйста, используйте и участвуйте в открытом исходном коде.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )