feat: workflow add note node (#5164)
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
'use client'
|
||||
|
||||
import {
|
||||
createContext,
|
||||
memo,
|
||||
useRef,
|
||||
} from 'react'
|
||||
import { LexicalComposer } from '@lexical/react/LexicalComposer'
|
||||
import { LinkNode } from '@lexical/link'
|
||||
import {
|
||||
ListItemNode,
|
||||
ListNode,
|
||||
} from '@lexical/list'
|
||||
import { createNoteEditorStore } from './store'
|
||||
import theme from './theme'
|
||||
|
||||
type NoteEditorStore = ReturnType<typeof createNoteEditorStore>
|
||||
const NoteEditorContext = createContext<NoteEditorStore | null>(null)
|
||||
|
||||
type NoteEditorContextProviderProps = {
|
||||
value: string
|
||||
children: JSX.Element | string | (JSX.Element | string)[]
|
||||
}
|
||||
export const NoteEditorContextProvider = memo(({
|
||||
value,
|
||||
children,
|
||||
}: NoteEditorContextProviderProps) => {
|
||||
const storeRef = useRef<NoteEditorStore>()
|
||||
|
||||
if (!storeRef.current)
|
||||
storeRef.current = createNoteEditorStore()
|
||||
|
||||
let initialValue = null
|
||||
try {
|
||||
initialValue = JSON.parse(value)
|
||||
}
|
||||
catch (e) {
|
||||
|
||||
}
|
||||
|
||||
const initialConfig = {
|
||||
namespace: 'note-editor',
|
||||
nodes: [
|
||||
LinkNode,
|
||||
ListNode,
|
||||
ListItemNode,
|
||||
],
|
||||
editorState: !initialValue?.root.children.length ? null : JSON.stringify(initialValue),
|
||||
onError: (error: Error) => {
|
||||
throw error
|
||||
},
|
||||
theme,
|
||||
}
|
||||
|
||||
return (
|
||||
<NoteEditorContext.Provider value={storeRef.current}>
|
||||
<LexicalComposer initialConfig={{ ...initialConfig }}>
|
||||
{children}
|
||||
</LexicalComposer>
|
||||
</NoteEditorContext.Provider>
|
||||
)
|
||||
})
|
||||
NoteEditorContextProvider.displayName = 'NoteEditorContextProvider'
|
||||
|
||||
export default NoteEditorContext
|
Reference in New Issue
Block a user