import { create } from 'zustand'; import { WindParameters, BuildingDimensions, CalculationResults } from '../types'; import { calculateWindLoad } from '../calculations/windCalculations'; interface WindStore { inputs: { parameters: WindParameters; dimensions: BuildingDimensions; }; results: CalculationResults | null; setParameters: (params: Partial) => void; setDimensions: (dims: Partial) => void; calculate: () => void; } const initialParameters: WindParameters = { basicWindSpeed: 120, exposureCategory: 'C', riskCategory: 'II', enclosureClassification: 'Enclosed', kzt: 1.0, ke: 1.0, }; const initialDimensions: BuildingDimensions = { ridgeHeight: 15, eaveHeight: 15, // Flat/Low slope effectively if same? Or check calc. width: 40, length: 50, roofType: 'Gable', }; export const useWindStore = create((set, get) => ({ inputs: { parameters: initialParameters, dimensions: initialDimensions, }, results: null, setParameters: (params) => { set((state) => ({ inputs: { ...state.inputs, parameters: { ...state.inputs.parameters, ...params }, }, })); get().calculate(); }, setDimensions: (dims) => { set((state) => ({ inputs: { ...state.inputs, dimensions: { ...state.inputs.dimensions, ...dims }, }, })); get().calculate(); }, calculate: () => { const { parameters, dimensions } = get().inputs; console.log("Calculating with:", parameters, dimensions); const results = calculateWindLoad(parameters, dimensions); set({ results }); }, }));