tahamajs/RR / Docs /visualizer /react /hooks /useModuleState.js
tahamajs's picture
download
raw
1.76 kB
/**
* react/hooks/useModuleState.js
* =============================
* Ergonomic hook for accessing and mutating module state transitions and substate flags.
*/
import { useModuleStore } from '../store/useModuleStore.js';
import { ROUTING_MATRIX, validateModuleState } from '../components/visualization/routing_matrix.js';
export function useModuleState() {
const activeModule = useModuleStore(s => s.activeModule);
const activeCategory = useModuleStore(s => s.activeCategory);
const activeSubcategory = useModuleStore(s => s.activeSubcategory);
const activeState = useModuleStore(s => s.activeState);
const activeSubstate = useModuleStore(s => s.activeSubstate);
const timelinePosition = useModuleStore(s => s.timelinePosition);
const setState = useModuleStore.getState().setState;
const setSubstate = useModuleStore.getState().setSubstate;
const setTimeline = useModuleStore.getState().setTimeline;
const setActiveModule = useModuleStore.getState().setActiveModule;
const transitionTo = (nextState) => {
if (activeModule) {
validateModuleState(activeModule, nextState, activeSubstate);
}
setState(nextState);
};
const toggleSubstate = (substateName) => {
const nextSub = activeSubstate === substateName ? null : substateName;
if (activeModule && nextSub) {
validateModuleState(activeModule, activeState, nextSub);
}
setSubstate(nextSub);
};
const currentConfig = activeModule ? ROUTING_MATRIX[activeModule] : null;
return {
activeModule,
activeCategory,
activeSubcategory,
activeState,
activeSubstate,
timelinePosition,
currentConfig,
transitionTo,
toggleSubstate,
setTimeline,
setActiveModule,
};
}
export default useModuleState;

Xet Storage Details

Size:
1.76 kB
·
Xet hash:
13e6d66ba8e0bf4b2d9bfdf88c979f96bccc5951682a72ab14ebe354ab23a942

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.