Browse Source
* 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>dependabot/npm_and_yarn/examples/excalidraw/with-nextjs/next-14.2.21
45 changed files with 179 additions and 169 deletions
@ -1,3 +1,37 @@
@@ -1,3 +1,37 @@
|
||||
import { unstable_createStore } from "jotai"; |
||||
// 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 = unstable_createStore(); |
||||
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; |
||||
}; |
||||
|
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { atom, createStore, type PrimitiveAtom } from "jotai"; |
||||
import { createIsolation } from "jotai-scope"; |
||||
|
||||
const jotai = createIsolation(); |
||||
|
||||
export { atom, PrimitiveAtom }; |
||||
export const { useAtom, useSetAtom, useAtomValue, useStore } = jotai; |
||||
export const EditorJotaiProvider: ReturnType< |
||||
typeof createIsolation |
||||
>["Provider"] = jotai.Provider; |
||||
|
||||
export const editorJotaiStore: ReturnType<typeof createStore> = createStore(); |
||||
@ -1,28 +0,0 @@
@@ -1,28 +0,0 @@
|
||||
import type { PrimitiveAtom } from "jotai"; |
||||
import { unstable_createStore, useAtom } from "jotai"; |
||||
import { useLayoutEffect } from "react"; |
||||
|
||||
export const jotaiScope = Symbol(); |
||||
export const jotaiStore = unstable_createStore(); |
||||
|
||||
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; |
||||
}; |
||||
Loading…
Reference in new issue