import { ActionReducer, StateAction } from "../StateManager.js"; import { UnitMetadata, FieldDescriptor } from "../../metadata/UnitMetadata.js"; import { Action } from "../action/DataUnitAction.js"; import StateManager from "../StateManager.js"; class UnitMetadataReducerImpl implements ActionReducer{ public sliceName: string = "unitMetadata"; public reduce(_stateManager:StateManager, currentState: UnitMetadata, action: StateAction): UnitMetadata { if(action.type === Action.METADATA_LOADED){ return action.payload; } return currentState; } } export const UnitMetadataReducer = new UnitMetadataReducerImpl(); export const getMetadata = (stateManager: StateManager): UnitMetadata => { return stateManager.select(UnitMetadataReducer.sliceName, (state: UnitMetadata) => state); }; export const getField = (stateManager: StateManager, fieldName: string): FieldDescriptor|undefined => { const md: UnitMetadata = getMetadata(stateManager); return md ? md.fields.find(fmd => fmd.name === fieldName) : undefined; }