This commit is contained in:
rosetta
2026-01-30 05:01:05 +02:00
commit 83f38dc63f
327 changed files with 18725 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
import { createContext, useState } from 'react';
export const MemoryContext = createContext<any>({});
export function MemoryProvider({children}) {
const [memory, setMemory] = useState({});
return (
<MemoryContext.Provider value={{memory, setMemory}}>
{children}
</MemoryContext.Provider>
)
}

View File

@@ -0,0 +1,27 @@
import { useContext } from "react";
import { MemoryContext } from "./MemoryProvider";
export function useMemory<T>(selector : string, def : T, writable : boolean = true) : [T, (value: T | ((prevValue: T) => T)) => void] {
const {memory, setMemory} = useContext(MemoryContext);
const value = () => {
if(memory[selector] == undefined){
return def;
}
return memory[selector];
};
const setValue = (value: T | ((prevValue: T) => T)) => {
if (!writable && memory[selector] == undefined) {
return;
}
const newValue = typeof value === "function" ?
(value as (prevValue: T) => T)(memory[selector] ?? def)
: value;
setMemory((prev : any) => ({
...prev,
[selector]: typeof value === "function"
? (value as (prevValue: T) => T)(prev[selector] ?? def)
: newValue,
}));
}
return [value(), setValue];
}

View File

@@ -0,0 +1,12 @@
import { useContext } from "react";
import { MemoryContext } from "./MemoryProvider";
export function useMemoryClean() {
const {setMemory} = useContext(MemoryContext);
const clean = () => {
setMemory({});
}
return clean;
}