import React, { useState, useEffect, useCallback, useMemo } from 'react';
import { initializeApp } from 'firebase/app';
import { getAuth, signInWithCustomToken, signInAnonymously, onAuthStateChanged } from 'firebase/auth';
import { getFirestore, doc, setDoc, collection, onSnapshot, updateDoc, deleteDoc, query, orderBy } from 'firebase/firestore';
import { Camera, Zap, AlertTriangle, Leaf, X, Clock, Sun, Droplet, Users, Trash2, Loader2, Feather } from 'lucide-react';
// --- Variáveis Globais do Ambiente (NÃO REMOVER) ---
const appId = typeof __app_id !== 'undefined' ? __app_id : 'succulent-guardian-default';
const firebaseConfig = typeof __firebase_config !== 'undefined' ? JSON.parse(__firebase_config) : {};
const initialAuthToken = typeof __initial_auth_token !== 'undefined' ? __initial_auth_token : null;
// --- FIM Variáveis Globais do Ambiente ---
// Inicializa Firebase (Configurações necessárias para o Immersive Canvas)
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
const auth = getAuth(app);
/**
* Utilitário para converter ArrayBuffer para Base64 (necessário para APIs de Imagem)
* @param {ArrayBuffer} buffer
* @returns {string}
*/
const arrayBufferToBase64 = (buffer) => {
let binary = '';
const bytes = new Uint8Array(buffer);
const len = bytes.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
};
/**
* Função utilitária para chamar a API Gemini com retry e backoff exponencial.
* @param {Array