Добавлены новые параметры для компонента 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"
|
||||
}, {
|
||||
"url": "/index.html",
|
||||
"revision": "0.3mraah3n9jg"
|
||||
"revision": "0.6dag44kodlo"
|
||||
}], {});
|
||||
workbox.cleanupOutdatedCaches();
|
||||
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/index.html"), {
|
||||
|
||||
@ -19,7 +19,12 @@ const AppContent: React.FC = () => {
|
||||
<>
|
||||
<NotificationStack />
|
||||
<InstallPrompt />
|
||||
<BrowserRouter>
|
||||
<BrowserRouter
|
||||
future={{
|
||||
v7_startTransition: true,
|
||||
v7_relativeSplatPath: true,
|
||||
}}
|
||||
>
|
||||
<Routes>
|
||||
<Route path="/" element={<LoginPage />} />
|
||||
<Route path="/register" element={<RegisterPage />} />
|
||||
|
||||
@ -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 || '';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user