| 
                        12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
                        - import {
 -   createContext,
 -   useContext,
 -   useRef,
 - } from 'react'
 - import {
 -   create,
 -   useStore as useZustandStore,
 - } from 'zustand'
 - import type {
 -   FileEntity,
 - } from './types'
 - 
 - type Shape = {
 -   files: FileEntity[]
 -   setFiles: (files: FileEntity[]) => void
 - }
 - 
 - export const createFileStore = (
 -   value: FileEntity[] = [],
 -   onChange?: (files: FileEntity[]) => void,
 - ) => {
 -   return create<Shape>(set => ({
 -     files: value ? [...value] : [],
 -     setFiles: (files) => {
 -       set({ files })
 -       onChange?.(files)
 -     },
 -   }))
 - }
 - 
 - type FileStore = ReturnType<typeof createFileStore>
 - export const FileContext = createContext<FileStore | null>(null)
 - 
 - export function useStore<T>(selector: (state: Shape) => T): T {
 -   const store = useContext(FileContext)
 -   if (!store)
 -     throw new Error('Missing FileContext.Provider in the tree')
 - 
 -   return useZustandStore(store, selector)
 - }
 - 
 - export const useFileStore = () => {
 -   return useContext(FileContext)!
 - }
 - 
 - type FileProviderProps = {
 -   children: React.ReactNode
 -   value?: FileEntity[]
 -   onChange?: (files: FileEntity[]) => void
 - }
 - export const FileContextProvider = ({
 -   children,
 -   value,
 -   onChange,
 - }: FileProviderProps) => {
 -   const storeRef = useRef<FileStore | undefined>(undefined)
 - 
 -   if (!storeRef.current)
 -     storeRef.current = createFileStore(value, onChange)
 - 
 -   return (
 -     <FileContext.Provider value={storeRef.current}>
 -       {children}
 -     </FileContext.Provider>
 -   )
 - }
 
 
  |