diff --git a/dev-dist/sw.js b/dev-dist/sw.js
index d3e568e..278d092 100644
--- a/dev-dist/sw.js
+++ b/dev-dist/sw.js
@@ -82,7 +82,7 @@ define(['./workbox-9dc17825'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812"
}, {
"url": "/index.html",
- "revision": "0.3mraah3n9jg"
+ "revision": "0.6dag44kodlo"
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), {
diff --git a/src/App.tsx b/src/App.tsx
index 9b7c16e..6d6a875 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -19,7 +19,12 @@ const AppContent: React.FC = () => {
<>
-
+
} />
} />
diff --git a/src/utils/markdown.ts b/src/utils/markdown.ts
index ce2c9b8..409690f 100644
--- a/src/utils/markdown.ts
+++ b/src/utils/markdown.ts
@@ -56,14 +56,69 @@ renderer.listitem = function(token: any) {
const tokens = token.tokens || [];
let text: string;
- // Используем this.parser.parseInline для обработки токенов (this указывает на renderer)
+ // Блоковые типы токенов, которые нельзя обрабатывать через parseInline
+ const blockTypes = ['list', 'blockquote', 'code', 'heading', 'paragraph', 'hr', 'table'];
+
+ // Обрабатываем токены вручную, избегая parseInline для блоковых элементов
if (tokens.length > 0) {
try {
- text = this.parser.parseInline(tokens);
+ // Разделяем токены на inline и блоковые
+ const inlineTokens: any[] = [];
+ const blockTokens: any[] = [];
+
+ tokens.forEach((t: any) => {
+ if (blockTypes.includes(t.type)) {
+ blockTokens.push(t);
+ } else {
+ inlineTokens.push(t);
+ }
+ });
+
+ // Обрабатываем inline токены только если они есть
+ let inlineText = '';
+ if (inlineTokens.length > 0) {
+ try {
+ inlineText = this.parser.parseInline(inlineTokens);
+ } catch (inlineError) {
+ // Если ошибка при обработке inline, просто игнорируем их
+ console.warn('Error parsing inline tokens in listitem:', inlineError);
+ }
+ }
+
+ // Обрабатываем блоковые токены через parser
+ let blockText = '';
+ if (blockTokens.length > 0) {
+ try {
+ blockText = this.parser.parse(blockTokens);
+ } catch (blockError) {
+ // Если ошибка при обработке блоков, обрабатываем через стандартный renderer
+ console.warn('Error parsing block tokens in listitem:', blockError);
+ // Пытаемся обработать каждый блок отдельно
+ blockText = blockTokens.map((bt: any) => {
+ try {
+ return this.parser.parse([bt]);
+ } catch {
+ return '';
+ }
+ }).join('');
+ }
+ }
+
+ text = inlineText + blockText;
+
+ // Если после обработки текст пустой, используем fallback
+ if (!text || text.trim() === '') {
+ text = token.text || '';
+ }
} catch (error) {
- // Если ошибка, используем fallback
- console.warn('Error parsing list item tokens:', error);
- text = token.text || '';
+ // Если общая ошибка, используем fallback - обрабатываем через стандартный parser
+ try {
+ text = this.parser.parse(tokens);
+ } catch (parseError) {
+ // Последний fallback - используем raw text
+ console.warn('Error parsing list item tokens:', parseError);
+ text = token.text || token.raw || '';
+ }
}
} else {
text = token.text || '';