| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | '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
 |