Добавлены новые параметры для компонента BrowserRouter в App.tsx для поддержки будущих функций. Обновлена логика обработки токенов в markdown.ts для улучшения обработки блоковых и инлайн элементов, включая обработку ошибок и использование fallback для пустого текста.
This commit is contained in:
parent
a78d976bcf
commit
4b3bc3e024
@ -82,7 +82,7 @@ define(['./workbox-9dc17825'], (function (workbox) { 'use strict';
|
|||||||
"revision": "3ca0b8505b4bec776b69afdba2768812"
|
"revision": "3ca0b8505b4bec776b69afdba2768812"
|
||||||
}, {
|
}, {
|
||||||
"url": "/index.html",
|
"url": "/index.html",
|
||||||
"revision": "0.3mraah3n9jg"
|
"revision": "0.6dag44kodlo"
|
||||||
}], {});
|
}], {});
|
||||||
workbox.cleanupOutdatedCaches();
|
workbox.cleanupOutdatedCaches();
|
||||||
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), {
|
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), {
|
||||||
|
|||||||
@ -19,7 +19,12 @@ const AppContent: React.FC = () => {
|
|||||||
<>
|
<>
|
||||||
<NotificationStack />
|
<NotificationStack />
|
||||||
<InstallPrompt />
|
<InstallPrompt />
|
||||||
<BrowserRouter>
|
<BrowserRouter
|
||||||
|
future={{
|
||||||
|
v7_startTransition: true,
|
||||||
|
v7_relativeSplatPath: true,
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<LoginPage />} />
|
<Route path="/" element={<LoginPage />} />
|
||||||
<Route path="/register" element={<RegisterPage />} />
|
<Route path="/register" element={<RegisterPage />} />
|
||||||
|
|||||||
@ -56,15 +56,70 @@ renderer.listitem = function(token: any) {
|
|||||||
const tokens = token.tokens || [];
|
const tokens = token.tokens || [];
|
||||||
let text: string;
|
let text: string;
|
||||||
|
|
||||||
// Используем this.parser.parseInline для обработки токенов (this указывает на renderer)
|
// Блоковые типы токенов, которые нельзя обрабатывать через parseInline
|
||||||
|
const blockTypes = ['list', 'blockquote', 'code', 'heading', 'paragraph', 'hr', 'table'];
|
||||||
|
|
||||||
|
// Обрабатываем токены вручную, избегая parseInline для блоковых элементов
|
||||||
if (tokens.length > 0) {
|
if (tokens.length > 0) {
|
||||||
try {
|
try {
|
||||||
text = this.parser.parseInline(tokens);
|
// Разделяем токены на inline и блоковые
|
||||||
} catch (error) {
|
const inlineTokens: any[] = [];
|
||||||
// Если ошибка, используем fallback
|
const blockTokens: any[] = [];
|
||||||
console.warn('Error parsing list item tokens:', error);
|
|
||||||
|
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 || '';
|
text = token.text || '';
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Если общая ошибка, используем 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 {
|
} else {
|
||||||
text = token.text || '';
|
text = token.text || '';
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user