import { create } from 'zustand'; interface ModelInfo { fileName: string; fileSize: number; url: string; } interface FineTuning { posX: number; posY: number; posZ: number; rotY: number; } type AnchorMode = 'tracking' | 'manual' | 'fine-tuning'; type InspectionResult = 'pending' | 'approved' | 'rejected'; type RenderMode = 'solid' | 'wireframe'; export interface ChecklistItem { id: string; label: string; status: 'pending' | 'approved' | 'rejected'; note: string; } const defaultChecklist: ChecklistItem[] = [ { id: 'dimensions', label: 'Dimensões Gerais', status: 'pending', note: '' }, { id: 'plates', label: 'Posição das Placas', status: 'pending', note: '' }, { id: 'holes', label: 'Diâmetro dos Furos', status: 'pending', note: '' }, { id: 'weld', label: 'Especificação da Solda', status: 'pending', note: '' }, ]; interface ModelStore { model: ModelInfo | null; setModel: (model: ModelInfo | null) => void; fineTuning: FineTuning; setFineTuning: (ft: Partial) => void; resetFineTuning: () => void; anchorMode: AnchorMode; setAnchorMode: (mode: AnchorMode) => void; inspectionResult: InspectionResult; setInspectionResult: (result: InspectionResult) => void; xrSupported: boolean | null; setXrSupported: (supported: boolean | null) => void; opacity: number; setOpacity: (opacity: number) => void; renderMode: RenderMode; setRenderMode: (mode: RenderMode) => void; checklist: ChecklistItem[]; setChecklistItemStatus: (id: string, status: 'approved' | 'rejected') => void; setChecklistItemNote: (id: string, note: string) => void; resetChecklist: () => void; } const defaultFineTuning: FineTuning = { posX: 0, posY: 0, posZ: 0, rotY: 0 }; export const useModelStore = create((set) => ({ model: null, setModel: (model) => set({ model }), fineTuning: { ...defaultFineTuning }, setFineTuning: (ft) => set((state) => ({ fineTuning: { ...state.fineTuning, ...ft } })), resetFineTuning: () => set({ fineTuning: { ...defaultFineTuning } }), anchorMode: 'manual', setAnchorMode: (anchorMode) => set({ anchorMode }), inspectionResult: 'pending', setInspectionResult: (inspectionResult) => set({ inspectionResult }), xrSupported: null, setXrSupported: (xrSupported) => set({ xrSupported }), opacity: 1, setOpacity: (opacity) => set({ opacity }), renderMode: 'solid', setRenderMode: (renderMode) => set({ renderMode }), checklist: defaultChecklist.map(i => ({ ...i })), setChecklistItemStatus: (id, status) => set((state) => ({ checklist: state.checklist.map(item => item.id === id ? { ...item, status } : item ), })), setChecklistItemNote: (id, note) => set((state) => ({ checklist: state.checklist.map(item => item.id === id ? { ...item, note } : item ), })), resetChecklist: () => set({ checklist: defaultChecklist.map(i => ({ ...i })) }), }));