From 1e22e085e6c28d3220c7544f96a81b1a65428347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=9E=92?= Date: Sat, 7 Dec 2024 13:51:01 +0800 Subject: [PATCH] feat: update models, enhance extension --- package.json | 2 +- src/assets/img/models/AIDC-AI.png | Bin 0 -> 4267 bytes .../Header/WebCopilotSettingsModal/index.jsx | 105 ++++++++++++++++++ src/components/Header/index.jsx | 12 +- src/i18n/locales/de.json | 5 + src/i18n/locales/en.json | 5 + src/i18n/locales/es.json | 5 + src/i18n/locales/fr.json | 5 + src/i18n/locales/it.json | 5 + src/i18n/locales/ja.json | 5 + src/i18n/locales/ko.json | 5 + src/i18n/locales/ru.json | 5 + src/i18n/locales/zh-CN.json | 5 + src/i18n/locales/zh-TW.json | 5 + src/main.jsx | 4 +- src/pages/chat/components/AiMessage.jsx | 4 +- src/pages/chat/components/ChatInput/index.jsx | 5 +- .../components/MultiPanelMessages/index.jsx | 10 +- src/pages/chat/index.jsx | 17 ++- .../web-copilot/components/WordExplainer.jsx | 74 +++++++++--- src/store/app.js | 8 +- src/store/storage.js | 7 ++ src/utils/chat.js | 26 +++-- src/utils/env.js | 1 + src/utils/models.js | 8 +- src/utils/types.ts | 8 ++ src/utils/use.js | 39 +++++-- 27 files changed, 325 insertions(+), 55 deletions(-) create mode 100644 src/assets/img/models/AIDC-AI.png create mode 100644 src/components/Header/WebCopilotSettingsModal/index.jsx diff --git a/package.json b/package.json index 82629ea..30532cf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "silo", "private": true, - "version": "1.6.2", + "version": "1.6.3", "type": "module", "scripts": { "dev": "vite", diff --git a/src/assets/img/models/AIDC-AI.png b/src/assets/img/models/AIDC-AI.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc9613027ed92fe18beb0ed08443cb7232de718 GIT binary patch literal 4267 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 NSl+y2iZt;``#&2&GeZCX literal 0 HcmV?d00001 diff --git a/src/components/Header/WebCopilotSettingsModal/index.jsx b/src/components/Header/WebCopilotSettingsModal/index.jsx new file mode 100644 index 0000000..67d4225 --- /dev/null +++ b/src/components/Header/WebCopilotSettingsModal/index.jsx @@ -0,0 +1,105 @@ +import { useEffect, useState, forwardRef, useImperativeHandle } from 'react'; +import { Dialog, Button, Textarea, Space } from 'tdesign-react'; +import { getAllTextModels } from '@src/utils/models'; + +import { useTranslation } from 'react-i18next'; +import ModelOption from '@src/components/ModelOption'; +import { Select } from 'tdesign-react'; +import { + useLocalStorageAtom, + useLocalStorageJSONAtom, +} from '@src/store/storage'; +import { LOCAL_STORAGE_KEY } from '@src/utils/types'; +const allTextModels = getAllTextModels(); + +const WebCopilotSettings = forwardRef((props, ref) => { + const { t } = useTranslation(); + const [isOpen, setIsOpen] = useState(false); + const [selectedModels, setSelectedModels] = useState([]); + const [prompt, setPrompt] = useState(''); + const [activeModels, setActiveModels] = useLocalStorageJSONAtom( + LOCAL_STORAGE_KEY.WORD_EXPLAINER_ACTIVE_MODELS + ); + const [activePrompt, setActivePrompt] = useLocalStorageAtom( + LOCAL_STORAGE_KEY.WORD_EXPLAINER_PROMPT + ); + + useImperativeHandle(ref, () => ({ + open: () => setIsOpen(true), + close: () => setIsOpen(false), + })); + + useEffect(() => { + setSelectedModels(activeModels); + setPrompt(activePrompt); + }, [activeModels, activePrompt]); + + const handleSave = () => { + setActiveModels(selectedModels); + setActivePrompt(prompt); + setIsOpen(false); + }; + + return ( + setIsOpen(false)} + header={t('webCopilot.settings')} + footer={ + + + + + } + > +
+
+
+ {t('webCopilot.selectModel')} +
+ +
+ +
+
+ {t('webCopilot.prompt')} +
+