{"version":3,"sources":["../src/components/AlertManager/useAlertForm.ts"],"sourcesContent":["import { create } from 'zustand';\n\n// Estrutura genérica para itens de destinatários\nexport interface RecipientItem {\n  id: string;\n  name: string;\n  [key: string]: unknown; // Permite propriedades adicionais (ex: abbreviation, parentId, etc)\n}\n\n// Estrutura genérica para categorias de destinatários (legado - mantido para compatibilidade)\nexport interface RecipientCategory {\n  key: string; // ex: 'escola', 'turma', 'alunos', 'instituicoes'\n  label: string; // ex: 'Escola', 'Turma', 'Alunos', 'Instituições'\n  availableItems: RecipientItem[]; // Itens disponíveis para seleção\n  selectedIds: string[]; // IDs dos itens selecionados\n  allSelected: boolean; // Se todos os itens foram selecionados\n  parentKey?: string; // Chave da categoria pai (para hierarquia)\n  dependsOn?: string[]; // Array de chaves das categorias das quais esta depende\n}\n\ninterface AlertFormData {\n  title: string;\n  message: string;\n  image: File | string | null;\n  date: string;\n  time: string;\n  sendToday: boolean;\n  sendCopyToEmail: boolean;\n  recipientCategories: Record<string, RecipientCategory>; // Categorias dinâmicas\n}\n\ninterface AlertFormStore extends AlertFormData {\n  // Actions\n  setTitle: (title: string) => void;\n  setMessage: (message: string) => void;\n  setImage: (image: File | string | null) => void;\n  setDate: (date: string) => void;\n  setTime: (time: string) => void;\n  setSendToday: (sendToday: boolean) => void;\n  setSendCopyToEmail: (sendCopyToEmail: boolean) => void;\n\n  // Ações dinâmicas para destinatários\n  initializeCategory: (category: RecipientCategory) => void;\n  updateCategoryItems: (key: string, items: RecipientItem[]) => void;\n  updateCategorySelection: (\n    key: string,\n    selectedIds: string[],\n    allSelected: boolean\n  ) => void;\n  clearCategorySelection: (key: string) => void;\n\n  resetForm: () => void;\n}\n\nconst initialState: AlertFormData = {\n  title: '',\n  message: '',\n  image: null,\n  date: '',\n  time: '',\n  sendToday: false,\n  sendCopyToEmail: false,\n  recipientCategories: {},\n};\n\nexport const useAlertFormStore = create<AlertFormStore>((set) => ({\n  ...initialState,\n\n  // Step 1 - Mensagem\n  setTitle: (title) => set({ title }),\n\n  setMessage: (message) => set({ message }),\n\n  setImage: (image) => set({ image }),\n\n  // Step 2 - Destinatários (Dinâmico)\n  initializeCategory: (category) =>\n    set((state) => ({\n      recipientCategories: {\n        ...state.recipientCategories,\n        [category.key]: {\n          ...category,\n          selectedIds: category.selectedIds || [],\n          allSelected: category.allSelected || false,\n        },\n      },\n    })),\n\n  updateCategoryItems: (key, items) =>\n    set((state) => {\n      const base =\n        state.recipientCategories[key] ??\n        ({\n          key,\n          label: key,\n          availableItems: [],\n          selectedIds: [],\n          allSelected: false,\n        } as RecipientCategory);\n      return {\n        recipientCategories: {\n          ...state.recipientCategories,\n          [key]: { ...base, availableItems: items },\n        },\n      };\n    }),\n\n  updateCategorySelection: (key, selectedIds, allSelected) =>\n    set((state) => {\n      const base =\n        state.recipientCategories[key] ??\n        ({\n          key,\n          label: key,\n          availableItems: [],\n          selectedIds: [],\n          allSelected: false,\n        } as RecipientCategory);\n      return {\n        recipientCategories: {\n          ...state.recipientCategories,\n          [key]: { ...base, selectedIds, allSelected },\n        },\n      };\n    }),\n\n  clearCategorySelection: (key) =>\n    set((state) => {\n      const base =\n        state.recipientCategories[key] ??\n        ({\n          key,\n          label: key,\n          availableItems: [],\n          selectedIds: [],\n          allSelected: false,\n        } as RecipientCategory);\n      return {\n        recipientCategories: {\n          ...state.recipientCategories,\n          [key]: { ...base, selectedIds: [], allSelected: false },\n        },\n      };\n    }),\n\n  // Step 3 - Data de envio\n  setDate: (date) => set({ date }),\n\n  setTime: (time) => set({ time }),\n\n  setSendToday: (sendToday: boolean) => {\n    // Ao desmarcar, o campo volta a ser editável e deve ficar vazio para o\n    // usuário escolher — sobrescrever com \"agora\" apagaria a escolha dele.\n    if (!sendToday) {\n      set({ sendToday, date: '', time: '' });\n      return;\n    }\n\n    // Marcado: preenche com data e hora atuais (envio imediato)\n    const now = new Date();\n    const year = now.getFullYear();\n    const month = String(now.getMonth() + 1).padStart(2, '0');\n    const day = String(now.getDate()).padStart(2, '0');\n    const hours = String(now.getHours()).padStart(2, '0');\n    const minutes = String(now.getMinutes()).padStart(2, '0');\n\n    set({\n      sendToday,\n      date: `${year}-${month}-${day}`,\n      time: `${hours}:${minutes}`,\n    });\n  },\n\n  setSendCopyToEmail: (sendCopyToEmail) => set({ sendCopyToEmail }),\n\n  // Reset form\n  resetForm: () => set(initialState),\n}));\n"],"mappings":"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","names":[]}