UNPKG

@chasemoskal/magical

Version:

web toolkit for lit apps

34 lines 1.22 kB
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