'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 const NoteEditorContext = createContext(null) type NoteEditorContextProviderProps = { value: string children: JSX.Element | string | (JSX.Element | string)[] } export const NoteEditorContextProvider = memo(({ value, children, }: NoteEditorContextProviderProps) => { const storeRef = useRef() 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 ( {children} ) }) NoteEditorContextProvider.displayName = 'NoteEditorContextProvider' export default NoteEditorContext