@chasemoskal/magical
Version:
web toolkit for lit apps
34 lines • 1.22 kB
JavaScript
import { debounce } from "../toolbox/debounce/debounce.js";
import { createStateSetter } from "./create-state-setter.js";
import { initializeAndGetState } from "./initialize-and-get-state.js";
export function makeUseObjectForView({ stateMap, setupMap, render, getRenderCount, pullStateIndex, pullSetupIndex, }) {
const rerender = debounce(0, render);
return {
state(initial) {
const stateIndex = pullStateIndex();
const [currentValue, previousValue] = initializeAndGetState({
initial,
stateIndex,
stateMap,
}) ?? [];
const setter = createStateSetter({
stateMap,
stateIndex,
rerender,
});
const getter = () => (stateMap.get(stateIndex) ?? [])[0];
return [
currentValue,
setter,
getter,
previousValue,
];
},
setup(e) {
const setupIndex = pullSetupIndex();
if (getRenderCount() === 0)
setupMap.set(setupIndex, e(rerender));
},
};
}
//# sourceMappingURL=make-use-object-for-view.js.map