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