Commit 547611b7 authored by Michael Poluektov's avatar Michael Poluektov
Browse files

Merge branch 'dev' of https://github.com/open-webui/open-webui into remove-ollama

parents 204a4fbe 1b2ae7bb
......@@ -134,8 +134,10 @@
"Continue Response": "Настави одговор",
"Continue with {{provider}}": "",
"Controls": "",
"Copied": "",
"Copied shared chat URL to clipboard!": "Адреса дељеног ћаскања ископирана у оставу!",
"Copy": "Копирај",
"Copy Code": "",
"Copy last code block": "Копирај последњи блок кода",
"Copy last response": "Копирај последњи одговор",
"Copy Link": "Копирај везу",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "ДНЛ",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "",
"Running": "",
"Save": "Сачувај",
......
......@@ -134,8 +134,10 @@
"Continue Response": "Fortsätt svar",
"Continue with {{provider}}": "",
"Controls": "",
"Copied": "",
"Copied shared chat URL to clipboard!": "Kopierad delad chatt-URL till urklipp!",
"Copy": "Kopiera",
"Copy Code": "",
"Copy last code block": "Kopiera sista kodblock",
"Copy last response": "Kopiera sista svar",
"Copy Link": "Kopiera länk",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "",
"Running": "Kör",
"Save": "Spara",
......
......@@ -134,8 +134,10 @@
"Continue Response": "ตอบสนองต่อไป",
"Continue with {{provider}}": "ดำเนินการต่อด้วย {{provider}}",
"Controls": "การควบคุม",
"Copied": "",
"Copied shared chat URL to clipboard!": "คัดลอก URL แชทที่แชร์ไปยังคลิปบอร์ดแล้ว!",
"Copy": "คัดลอก",
"Copy Code": "",
"Copy last code block": "คัดลอกบล็อกโค้ดสุดท้าย",
"Copy last response": "คัดลอกการตอบสนองล่าสุด",
"Copy Link": "คัดลอกลิงก์",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "รัน Llama 2, Code Llama และโมเดลอื่นๆ ปรับแต่งและสร้างของคุณเอง",
"Running": "กำลังทำงาน",
"Save": "บันทึก",
......
......@@ -134,8 +134,10 @@
"Continue Response": "",
"Continue with {{provider}}": "",
"Controls": "",
"Copied": "",
"Copied shared chat URL to clipboard!": "",
"Copy": "",
"Copy Code": "",
"Copy last code block": "",
"Copy last response": "",
"Copy Link": "",
......@@ -499,6 +501,7 @@
"Rosé Pine": "",
"Rosé Pine Dawn": "",
"RTL": "",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "",
"Running": "",
"Save": "",
......
......@@ -134,8 +134,10 @@
"Continue Response": "Yanıta Devam Et",
"Continue with {{provider}}": "{{provider}} ile devam et",
"Controls": "",
"Copied": "",
"Copied shared chat URL to clipboard!": "Paylaşılan sohbet URL'si panoya kopyalandı!",
"Copy": "Kopyala",
"Copy Code": "",
"Copy last code block": "Son kod bloğunu kopyala",
"Copy last response": "Son yanıtı kopyala",
"Copy Link": "Bağlantıyı Kopyala",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "",
"Running": "Çalışıyor",
"Save": "Kaydet",
......
......@@ -134,8 +134,10 @@
"Continue Response": "Продовжити відповідь",
"Continue with {{provider}}": "Продовжити з {{provider}}",
"Controls": "Керування",
"Copied": "Скопійовано",
"Copied shared chat URL to clipboard!": "Скопійовано URL-адресу спільного чату в буфер обміну!",
"Copy": "Копіювати",
"Copy Code": "Копіювати код",
"Copy last code block": "Копіювати останній блок коду",
"Copy last response": "Копіювати останню відповідь",
"Copy Link": "Копіювати посилання",
......@@ -375,7 +377,7 @@
"Memory deleted successfully": "Пам'ять успішно видалено",
"Memory updated successfully": "Пам'ять успішно оновлено",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Повідомлення, які ви надішлете після створення посилання, не будуть доступні для інших. Користувачі, які мають URL, зможуть переглядати спільний чат.",
"Min P": "",
"Min P": "Min P",
"Minimum Score": "Мінімальний бал",
"Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"Run": "Запустити",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "Запустіть Llama 2, Code Llama та інші моделі. Налаштуйте та створіть власну.",
"Running": "Виконується",
"Save": "Зберегти",
......@@ -509,7 +512,7 @@
"Scan": "Сканування",
"Scan complete!": "Сканування завершено!",
"Scan for documents from {{path}}": "Сканування документів з {{path}}",
"Scroll to bottom when switching between branches": "",
"Scroll to bottom when switching between branches": "Перемотувати до кінця при перемиканні між гілками",
"Search": "Пошук",
"Search a model": "Шукати модель",
"Search Chats": "Пошук в чатах",
......
......@@ -134,8 +134,10 @@
"Continue Response": "Tiếp tục trả lời",
"Continue with {{provider}}": "Tiếp tục với {{provider}}",
"Controls": "",
"Copied": "",
"Copied shared chat URL to clipboard!": "Đã sao chép link chia sẻ trò chuyện vào clipboard!",
"Copy": "Sao chép",
"Copy Code": "",
"Copy last code block": "Sao chép khối mã cuối cùng",
"Copy last response": "Sao chép phản hồi cuối cùng",
"Copy Link": "Sao chép link",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "Chạy Llama 2, Code Llama và các mô hình khác. Tùy chỉnh hoặc mô hình riêng của bạn.",
"Running": "Đang chạy",
"Save": "Lưu",
......
......@@ -134,8 +134,10 @@
"Continue Response": "继续生成",
"Continue with {{provider}}": "使用 {{provider}} 继续",
"Controls": "对话高级设置",
"Copied": "已复制",
"Copied shared chat URL to clipboard!": "已复制此对话分享链接至剪贴板!",
"Copy": "复制",
"Copy Code": "复制代码",
"Copy last code block": "复制最后一个代码块中的代码",
"Copy last response": "复制最后一次回复内容",
"Copy Link": "复制链接",
......@@ -499,6 +501,7 @@
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "从右至左",
"Run": "运行",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "运行 Llama 2、Code Llama 和其他模型。自定义和创建您自己的模型。",
"Running": "运行中",
"Save": "保存",
......@@ -509,7 +512,7 @@
"Scan": "立即扫描",
"Scan complete!": "扫描完成!",
"Scan for documents from {{path}}": "从 {{path}} 扫描文档",
"Scroll to bottom when switching between branches": "",
"Scroll to bottom when switching between branches": "在分支间切换时滚动到底部",
"Search": "搜索",
"Search a model": "搜索模型",
"Search Chats": "搜索对话",
......
......@@ -134,8 +134,10 @@
"Continue Response": "繼續回應",
"Continue with {{provider}}": "使用 {{provider}} 繼續",
"Controls": "控制項",
"Copied": "",
"Copied shared chat URL to clipboard!": "已複製共用對話 URL 到剪貼簿!",
"Copy": "複製",
"Copy Code": "",
"Copy last code block": "複製最後一個程式碼區塊",
"Copy last response": "複製最後一個回應",
"Copy Link": "複製連結",
......@@ -499,6 +501,7 @@
"Rosé Pine": "玫瑰松",
"Rosé Pine Dawn": "黎明玫瑰松",
"RTL": "從右到左",
"Run": "",
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "執行 Llama 2、Code Llama 和其他模型。自訂並建立您自己的模型。",
"Running": "運作中",
"Save": "儲存",
......
......@@ -9,7 +9,7 @@ import { WEBUI_BASE_URL } from '$lib/constants';
const convertLatexToSingleLine = (content) => {
// Patterns to match multiline LaTeX blocks
const patterns = [
/(\$\$[\s\S]*?\$\$)/g, // Match $$ ... $$
/(\$\$\s[\s\S]*?\s\$\$)/g, // Match $$ ... $$
/(\\\[[\s\S]*?\\\])/g, // Match \[ ... \]
/(\\begin\{[a-z]+\}[\s\S]*?\\end\{[a-z]+\})/g // Match \begin{...} ... \end{...}
];
......@@ -25,7 +25,8 @@ const convertLatexToSingleLine = (content) => {
export const sanitizeResponseContent = (content: string) => {
// replace single backslash with double backslash
content = content.replace(/\\/g, '\\\\');
content = content.replace(/\\\\/g, '\\\\\\\\');
content = convertLatexToSingleLine(content);
// First, temporarily replace valid <video> tags with a placeholder
......@@ -87,7 +88,7 @@ export const replaceTokens = (content, char, user) => {
};
export const revertSanitizedResponseContent = (content: string) => {
return content.replaceAll('&lt;', '<').replaceAll('&gt;', '>');
return content.replaceAll('&lt;', '<').replaceAll('&gt;', '>').replaceAll('\\\\', '\\');
};
export function unescapeHtml(html: string) {
......
import katex from 'katex';
const inlineRule = /^(\${1,2})(?!\$)((?:\\.|[^\\\n])*?(?:\\.|[^\\\n\$]))\1(?=[\s?!\.,:?!。,:]|$)/;
const inlineRuleNonStandard = /^(\${1,2})(?!\$)((?:\\.|[^\\\n])*?(?:\\.|[^\\\n\$]))\1/; // Non-standard, even if there are no spaces before and after $ or $$, try to parse
const blockRule = /^(\${1,2})\n((?:\\[^]|[^\\])+?)\n\1(?:\n|$)/;
export default function(options = {}) {
return {
extensions: [
inlineKatex(options, createRenderer(options, false)),
blockKatex(options, createRenderer(options, true)),
],
};
}
function createRenderer(options, newlineAfter) {
return (token) => katex.renderToString(token.text, { ...options, displayMode: token.displayMode }) + (newlineAfter ? '\n' : '');
}
function inlineKatex(options, renderer) {
const nonStandard = options && options.nonStandard;
const ruleReg = nonStandard ? inlineRuleNonStandard : inlineRule;
return {
name: 'inlineKatex',
level: 'inline',
start(src) {
let index;
let indexSrc = src;
while (indexSrc) {
index = indexSrc.indexOf('$');
if (index === -1) {
return;
}
const f = nonStandard ? index > -1 : index === 0 || indexSrc.charAt(index - 1) === ' ';
if (f) {
const possibleKatex = indexSrc.substring(index);
if (possibleKatex.match(ruleReg)) {
return index;
}
}
indexSrc = indexSrc.substring(index + 1).replace(/^\$+/, '');
}
},
tokenizer(src, tokens) {
const match = src.match(ruleReg);
if (match) {
return {
type: 'inlineKatex',
raw: match[0],
text: match[2].trim(),
displayMode: match[1].length === 2,
};
}
},
renderer,
};
}
function blockKatex(options, renderer) {
return {
name: 'blockKatex',
level: 'block',
tokenizer(src, tokens) {
const match = src.match(blockRule);
if (match) {
return {
type: 'blockKatex',
raw: match[0],
text: match[2].trim(),
displayMode: match[1].length === 2,
};
}
},
renderer,
};
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment