4.6.8-alpha (#804)

* perf: redirect request and err log replace

perf: dataset openapi

feat: session

fix: retry input error

feat: 468 doc

sub page

feat: standard sub

perf: rerank tip

perf: rerank tip

perf: api sdk

perf: openapi

sub plan

perf: sub ui

fix: ts

* perf: init log

* fix: variable select

* sub page

* icon

* perf: llm model config

* perf: menu ux

* perf: system store

* perf: publish app name

* fix: init data

* perf: flow edit ux

* fix: value type format and ux

* fix prompt editor default value (#13)

* fix prompt editor default value

* fix prompt editor update when not focus

* add key with variable

---------

Co-authored-by: Archer <545436317@qq.com>

* fix: value type

* doc

* i18n

* import path

* home page

* perf: mongo session running

* fix: ts

* perf: use toast

* perf: flow edit

* perf: sse response

* slider ui

* fetch error

* fix prompt editor rerender when not focus by key defaultvalue (#14)

* perf: prompt editor

* feat: dataset search concat

* perf: doc

* fix:ts

* perf: doc

* fix json editor onblur value (#15)

* faq

* vector model default config

* ipv6

---------

Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
This commit is contained in:
Archer
2024-02-01 21:57:41 +08:00
committed by GitHub
parent fc19c4cf09
commit 34602b25df
285 changed files with 10345 additions and 11223 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useRef } from 'react';
import { useState, useRef, useTransition, useEffect } from 'react';
import { LexicalComposer } from '@lexical/react/LexicalComposer';
import { PlainTextPlugin } from '@lexical/react/LexicalPlainTextPlugin';
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
@@ -11,11 +11,12 @@ import styles from './index.module.scss';
import VariablePlugin from './plugins/VariablePlugin';
import { VariableNode } from './plugins/VariablePlugin/node';
import { EditorState, LexicalEditor } from 'lexical';
import { textToEditorState } from './utils';
import OnBlurPlugin from './plugins/OnBlurPlugin';
import MyIcon from '../../Icon';
import { PickerMenuItemType } from './type.d';
import { EditorVariablePickerType } from './type.d';
import { getNanoid } from '@fastgpt/global/common/string/tools';
import FocusPlugin from './plugins/FocusPlugin';
import { textToEditorState } from './utils';
export default function Editor({
h = 200,
@@ -25,31 +26,34 @@ export default function Editor({
variables,
onChange,
onBlur,
defaultValue,
value,
placeholder = ''
}: {
h?: number;
showResize?: boolean;
showOpenModal?: boolean;
onOpenModal?: () => void;
variables: PickerMenuItemType[];
variables: EditorVariablePickerType[];
onChange?: (editorState: EditorState) => void;
onBlur?: (editor: LexicalEditor) => void;
defaultValue?: string;
value?: string;
placeholder?: string;
}) {
const key = useRef(getNanoid(6));
const [key, setKey] = useState(getNanoid(6));
const [_, startSts] = useTransition();
const [height, setHeight] = useState(h);
const [initialConfig, setInitialConfig] = useState({
const [focus, setFocus] = useState(false);
const initialConfig = {
namespace: 'promptEditor',
nodes: [VariableNode],
editorState: textToEditorState(defaultValue),
editorState: textToEditorState(value),
onError: (error: Error) => {
throw error;
}
});
const initialY = useRef(0);
};
const initialY = useRef(0);
const handleMouseDown = (e: React.MouseEvent) => {
initialY.current = e.clientY;
@@ -68,9 +72,14 @@ export default function Editor({
document.addEventListener('mouseup', handleMouseUp);
};
useEffect(() => {
if (focus) return;
setKey(getNanoid(6));
}, [value, variables, focus]);
return (
<Box position={'relative'} width={'full'} h={`${height}px`} cursor={'text'}>
<LexicalComposer initialConfig={initialConfig} key={key.current}>
<LexicalComposer initialConfig={initialConfig} key={key}>
<PlainTextPlugin
contentEditable={<ContentEditable className={styles.contentEditable} />}
placeholder={
@@ -100,7 +109,14 @@ export default function Editor({
ErrorBoundary={LexicalErrorBoundary}
/>
<HistoryPlugin />
<OnChangePlugin onChange={(e) => onChange?.(e)} />
<FocusPlugin focus={focus} setFocus={setFocus} />
<OnChangePlugin
onChange={(e) => {
startSts(() => {
onChange?.(e);
});
}}
/>
<VariablePickerPlugin variables={variables} />
<VariablePlugin variables={variables} />
<OnBlurPlugin onBlur={onBlur} />