mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-26 01:14:21 +02:00 
			
		
		
		
	 8551823da9
			
		
	
	8551823da9
	
	
	
		
			
			* 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;
 | |
| };
 |