mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-11-04 12:54:23 +01:00 
			
		
		
		
	* feat: update jotai in excalidraw package * feat: update jotai in excalidraw-app * fix: exports from excalidraw/jotai * fix: use isolated react hooks * test: use jotai provider in <Trans /> test * remove unused package * refactor & make safer --------- Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			795 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			795 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// eslint-disable-next-line no-restricted-imports
 | 
						|
import {
 | 
						|
  atom,
 | 
						|
  Provider,
 | 
						|
  useAtom,
 | 
						|
  useAtomValue,
 | 
						|
  useSetAtom,
 | 
						|
  createStore,
 | 
						|
  type PrimitiveAtom,
 | 
						|
} from "jotai";
 | 
						|
import { useLayoutEffect } from "react";
 | 
						|
 | 
						|
export const appJotaiStore = createStore();
 | 
						|
 | 
						|
export { atom, Provider, useAtom, useAtomValue, useSetAtom };
 | 
						|
 | 
						|
export const useAtomWithInitialValue = <
 | 
						|
  T extends unknown,
 | 
						|
  A extends PrimitiveAtom<T>,
 | 
						|
>(
 | 
						|
  atom: A,
 | 
						|
  initialValue: T | (() => T),
 | 
						|
) => {
 | 
						|
  const [value, setValue] = useAtom(atom);
 | 
						|
 | 
						|
  useLayoutEffect(() => {
 | 
						|
    if (typeof initialValue === "function") {
 | 
						|
      // @ts-ignore
 | 
						|
      setValue(initialValue());
 | 
						|
    } else {
 | 
						|
      setValue(initialValue);
 | 
						|
    }
 | 
						|
    // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
						|
  }, []);
 | 
						|
 | 
						|
  return [value, setValue] as const;
 | 
						|
};
 |