// 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, >( 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; };