{"version":3,"file":"supabaseClient.DTjRgzO2.mjs","names":[],"sources":["https:/framerusercontent.com/modules/joysIcZgQW98VQCLQZZM/NvKzTy6cSppLyQEtdY9q/cargaSegura.js","https:/framerusercontent.com/modules/2g3iPe5ov3YrO7KlWZl2/TcehVPgHt8biJwo2ndFq/supabaseClient.js"],"sourcesContent":["/**\n * Carga segura de librerías de terceros — Motion\n *\n * Antes el sitio importaba sus librerías (cliente de Supabase, jsPDF, mp4-muxer) con `import(\"https://esm.sh/...\")`, que ejecuta en\n * el navegador de TODOS los usuarios —incluido el administrador— lo que ese servicio entregue ese día: si lo comprometieran (o publicaran\n * una versión maliciosa de un paquete), podrían robar sesiones. Acá cada librería se carga como un <script> con una versión FIJA y su\n * huella digital (`integrity`, SRI): el navegador se niega a ejecutarla si un solo byte cambia. Dos CDN independientes sirven el mismo\n * archivo (si uno falla se prueba el otro); las huellas se verificaron contra los hashes oficiales de jsDelivr / cdnjs (2026-10-22).\n *\n * Para actualizar una librería: bajar el archivo nuevo, calcular su sha384, comprobarlo contra el hash oficial del CDN y cambiar\n * versión + huella acá. Nunca usar \"latest\" ni un rango de versiones.\n */export const LIBRERIAS={supabase:{global:\"supabase\",integridad:\"sha384-BWcjm9OdFth9TbhCxZPdm+gAOUMAzQy9nmTs12ioXdCcbVnJaPMn+fMUoQCLt60R\",fuentes:[\"https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2.117.3/dist/umd/supabase.js\",\"https://unpkg.com/@supabase/supabase-js@2.117.3/dist/umd/supabase.js\"]},jspdf:{global:\"jspdf\",integridad:\"sha384-JcnsjUPPylna1s1fvi1u12X5qjY5OL56iySh75FdtrwhO/SWXgMjoVqcKyIIWOLk\",fuentes:[\"https://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js\",\"https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js\"]},mp4muxer:{global:\"Mp4Muxer\",integridad:\"sha384-SujebcgqCNlLMRSnVkLD+3eWOzsxobv30Bct+0lV+fc1EHHEuvcePwmDgMzpnptj\",fuentes:[\"https://cdn.jsdelivr.net/npm/mp4-muxer@5.1.3/build/mp4-muxer.js\",\"https://unpkg.com/mp4-muxer@5.1.3/build/mp4-muxer.js\"]}};const TIEMPO_POR_FUENTE_MS=5e3;const cargas={};export function cargarLibreriaSegura(lib){if(typeof window===\"undefined\"||typeof document===\"undefined\")return Promise.reject(new Error(\"Sin navegador\"));const w=window;if(w[lib.global])return Promise.resolve(w[lib.global]);if(cargas[lib.global])return cargas[lib.global];const intentar=i=>new Promise((resolve,reject)=>{if(i>=lib.fuentes.length){reject(new Error(`No se pudo cargar \"${lib.global}\" (sin conexi\\xf3n o la huella digital no coincide).`));return;}const s=document.createElement(\"script\");s.src=lib.fuentes[i];s.integrity=lib.integridad;s.crossOrigin=\"anonymous\";s.async=true;const siguiente=()=>{window.clearTimeout(t);try{s.remove();}catch(e){}resolve(intentar(i+1));};const t=window.setTimeout(siguiente,TIEMPO_POR_FUENTE_MS);s.onload=()=>{window.clearTimeout(t);if(w[lib.global])resolve(w[lib.global]);else siguiente();};s.onerror=siguiente;document.head.appendChild(s);});cargas[lib.global]=intentar(0).catch(e=>{delete cargas[lib.global];throw e;});return cargas[lib.global];}\nexport const __FramerMetadata__ = {\"exports\":{\"cargarLibreriaSegura\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LIBRERIAS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./cargaSegura.map","/**\n * Cliente de Supabase compartido — con timeout\n *\n * Reemplaza la función `getSupabaseClient` que hasta ahora estaba\n * copiada y pegada en ~35 componentes distintos. Cada copia hacía\n * `import(\"https://esm.sh/@supabase/supabase-js@2\")` sin ningún límite\n * de tiempo: si ese import se quedaba colgado (esm.sh lento/caído, o\n * cualquier otro problema de red que no llega a ser un error — no hay\n * \"catch\" para algo que nunca resuelve ni rechaza), la promesa quedaba\n * pendiente para siempre y cualquier componente que dependiera de ella\n * (el chequeo de sesión de AccessGuard, el fetch de datos de cada\n * página) se quedaba esperando sin límite — de ahí la pantalla negra\n * que a veces no se recupera nunca, en cualquier página, sin ningún\n * error visible en consola.\n *\n * El intento anterior de arreglar esto (el reintento con backoff en\n * AccessGuard, ver PermisosSidebar.tsx) solo cubre el caso en que la\n * promesa RECHAZA — no ayuda si simplemente nunca se resuelve ni se\n * rechaza. Esta versión le pone un límite de tiempo explícito al\n * import: pasados los 8s, la promesa se da por perdida y rechaza sola,\n * así el código que la espera puede reaccionar (reintentar, mostrar un\n * estado vacío, lo que corresponda) en vez de quedarse colgado.\n *\n * Uso (igual que antes, mismo nombre y firma):\n *   import { getSupabaseClient } from \"./supabaseClient.ts\"\n *\n * Este límite de tiempo cubre la importación de la librería, pero NO\n * las consultas que se hacen después con el cliente ya creado (auth,\n * `.from(...).select(...)`, etc.) — esas dependen de la red de\n * Supabase, no de esm.sh, y pueden colgarse por su cuenta. Para\n * protegerlas con el mismo criterio, envolvé el `await` puntual con\n * `withTimeout(promesa, 8000, \"una descripción corta\")`:\n *   const { data: { session } } = await withTimeout(\n *       supabase.auth.getSession(),\n *       8000,\n *       \"getSession\"\n *   )\n */import{cargarLibreriaSegura,LIBRERIAS}from\"https://framerusercontent.com/modules/joysIcZgQW98VQCLQZZM/NvKzTy6cSppLyQEtdY9q/cargaSegura.js\";// Dos fuentes de 5 s cada una (ver cargaSegura.ts: versión fija + huella digital, ya no se importa nada de esm.sh).\nconst IMPORT_TIMEOUT_MS=12e3;const clientsByKey={};export function withTimeout(promise,ms,label){return new Promise((resolve,reject)=>{const timer=setTimeout(()=>{reject(new Error(`Timeout despu\\xe9s de ${ms}ms: ${label}`));},ms);promise.then(value=>{clearTimeout(timer);resolve(value);},err=>{clearTimeout(timer);reject(err);});});}export function getSupabaseClient(url,anonKey){if(!url||!anonKey)return null;const key=`${url}|${anonKey}`;if(!clientsByKey[key]){clientsByKey[key]=withTimeout(cargarLibreriaSegura(LIBRERIAS.supabase),IMPORT_TIMEOUT_MS,\"import supabase-js\").then(lib=>lib.createClient(url,anonKey)).catch(err=>{// Mismo motivo que antes: si el import, el timeout, o\n// createClient fallan, no dejamos la promesa rota\n// memorizada para siempre — el próximo llamado a\n// getSupabaseClient() vuelve a intentar de cero.\ndelete clientsByKey[key];throw err;});}return clientsByKey[key];}\nexport const __FramerMetadata__ = {\"exports\":{\"withTimeout\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSupabaseClient\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./supabaseClient.map"],"mappings":"oGAWk1B,SAAgB,EAAqB,EAAI,CAAC,GAAU,IAAS,QAAa,OAAO,SAAW,IAAY,OAAO,QAAQ,OAAW,MAAM,eAAe,CAAC,EAAE,IAAM,EAAE,EAAO,GAAG,EAAE,EAAI,QAAQ,OAAO,QAAQ,QAAQ,EAAE,EAAI,OAAO,EAAE,GAAG,EAAO,EAAI,QAAQ,OAAO,EAAO,EAAI,QAAQ,IAAM,EAAS,GAAG,IAAI,SAAS,EAAQ,IAAS,CAAC,GAAG,GAAG,EAAI,QAAQ,OAAO,CAAC,EAAW,MAAM,sBAAsB,EAAI,OAAO,qDAAqD,CAAC,EAAE,MAAO,CAAC,IAAM,EAAE,SAAS,cAAc,QAAQ,EAAE,EAAE,IAAI,EAAI,QAAQ,GAAG,EAAE,UAAU,EAAI,WAAW,EAAE,YAAY,YAAY,EAAE,MAAM,GAAK,IAAM,MAAc,CAAC,EAAO,aAAa,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAE,MAAS,CAAC,CAAC,EAAQ,EAAS,EAAE,CAAC,CAAC,CAAE,EAAQ,EAAE,EAAO,WAAW,EAAU,CAAoB,EAAE,EAAE,WAAW,CAAC,EAAO,aAAa,CAAC,EAAK,EAAE,EAAI,QAAQ,EAAQ,EAAE,EAAI,OAAO,EAAO,EAAU,CAAE,EAAE,EAAE,QAAQ,EAAU,SAAS,KAAK,YAAY,CAAC,CAAE,CAAC,EAAgF,MAA9E,GAAO,EAAI,QAAQ,EAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAA2B,MAA1B,OAAO,EAAO,EAAI,QAAc,CAAE,CAAC,EAAS,EAAO,EAAI,OAAQ,yBAApyD,EAAU,CAAC,SAAS,CAAC,OAAO,WAAW,WAAW,0EAA0E,QAAQ,CAAC,kFAAkF,sEAAsE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,WAAW,0EAA0E,QAAQ,CAAC,iEAAiE,qEAAqE,CAAC,EAAE,SAAS,CAAC,OAAO,WAAW,WAAW,0EAA0E,QAAQ,CAAC,kEAAkE,sDAAsD,CAAC,CAAC,EAAQ,EAAqB,IAAU,EAAO,CAAC,KC2B7xB,SAAgB,EAAY,EAAQ,EAAG,EAAM,CAAC,OAAO,IAAI,SAAS,EAAQ,IAAS,CAAC,IAAM,EAAM,eAAe,CAAC,EAAW,MAAM,yBAAyB,EAAG,MAAM,GAAO,CAAC,CAAE,EAAE,CAAE,EAAE,EAAQ,KAAK,GAAO,CAAC,aAAa,CAAK,EAAE,EAAQ,CAAK,CAAE,EAAE,GAAK,CAAC,aAAa,CAAK,EAAE,EAAO,CAAG,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,SAAgB,EAAkB,EAAI,EAAQ,CAAC,GAAG,CAAC,GAAK,CAAC,EAAQ,OAAO,KAAK,IAAM,EAAI,GAAG,EAAI,GAAG,IAIvY,OAJqZ,EAAa,KAAM,EAAa,GAAK,EAAY,EAAqB,EAAU,QAAQ,EAAE,EAAkB,oBAAoB,CAAC,CAAC,KAAK,GAAK,EAAI,aAAa,EAAI,CAAO,CAAC,CAAC,CAAC,MAAM,GAAK,CAIzlB,MAAzB,OAAO,EAAa,GAAW,CAAI,CAAC,GAAU,EAAa,EAAK,qBAL6E,EACvI,EAAkB,KAAW,EAAa,CAAC"}