{"version":3,"sources":["../src/hooks/useInstitution.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { BaseApiClient } from '../types/api';\n\nexport interface InstitutionData {\n  id: string;\n  name: string;\n  companyName: string;\n  type: string;\n  domain: string;\n  email: string;\n  phone: string;\n  active: boolean;\n  mainLogo: string | null;\n  internalLogo: string | null;\n  icon: string | null;\n  favicon: string | null;\n  loginImage: string | null;\n  theme: string | null;\n  city: string | null;\n  state: string | null;\n}\n\nexport interface UseInstitutionConfig {\n  apiClient: BaseApiClient;\n  institutionId: string | null;\n}\n\nexport function useInstitution(config: UseInstitutionConfig) {\n  const [institution, setInstitution] = useState<InstitutionData | null>(null);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState<Error | null>(null);\n\n  useEffect(() => {\n    if (!config.institutionId) return;\n\n    let cancelled = false;\n\n    const fetchInstitution = async () => {\n      setLoading(true);\n      setInstitution(null);\n      setError(null);\n      try {\n        const { data: response } = await config.apiClient.get<{\n          data: InstitutionData;\n        }>('/institution/filter', {\n          params: { filter: config.institutionId },\n        });\n        if (!cancelled) setInstitution(response.data);\n      } catch (err) {\n        if (!cancelled) setError(err as Error);\n      } finally {\n        if (!cancelled) setLoading(false);\n      }\n    };\n\n    fetchInstitution();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [config.institutionId, config.apiClient]);\n\n  return { institution, loading, error };\n}\n\nexport function useInstitutionId() {\n  const [institutionId, setInstitutionId] = useState<string | null>(() => {\n    return (\n      document\n        .querySelector('meta[name=\"institution-id\"]')\n        ?.getAttribute('content') ?? null\n    );\n  });\n\n  useEffect(() => {\n    const metaTag = document.querySelector('meta[name=\"institution-id\"]');\n\n    if (!metaTag) return;\n\n    const observer = new MutationObserver(() => {\n      const newValue = metaTag.getAttribute('content');\n      setInstitutionId(newValue);\n    });\n\n    observer.observe(metaTag, {\n      attributes: true,\n      attributeFilter: ['content'],\n    });\n\n    return () => observer.disconnect();\n  }, []);\n\n  return institutionId;\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AA2B7B,SAAS,eAAe,QAA8B;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiC,IAAI;AAC3E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,YAAU,MAAM;AACd,QAAI,CAAC,OAAO,cAAe;AAE3B,QAAI,YAAY;AAEhB,UAAM,mBAAmB,YAAY;AACnC,iBAAW,IAAI;AACf,qBAAe,IAAI;AACnB,eAAS,IAAI;AACb,UAAI;AACF,cAAM,EAAE,MAAM,SAAS,IAAI,MAAM,OAAO,UAAU,IAE/C,uBAAuB;AAAA,UACxB,QAAQ,EAAE,QAAQ,OAAO,cAAc;AAAA,QACzC,CAAC;AACD,YAAI,CAAC,UAAW,gBAAe,SAAS,IAAI;AAAA,MAC9C,SAAS,KAAK;AACZ,YAAI,CAAC,UAAW,UAAS,GAAY;AAAA,MACvC,UAAE;AACA,YAAI,CAAC,UAAW,YAAW,KAAK;AAAA,MAClC;AAAA,IACF;AAEA,qBAAiB;AAEjB,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,OAAO,eAAe,OAAO,SAAS,CAAC;AAE3C,SAAO,EAAE,aAAa,SAAS,MAAM;AACvC;AAEO,SAAS,mBAAmB;AACjC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,MAAM;AACtE,WACE,SACG,cAAc,6BAA6B,GAC1C,aAAa,SAAS,KAAK;AAAA,EAEnC,CAAC;AAED,YAAU,MAAM;AACd,UAAM,UAAU,SAAS,cAAc,6BAA6B;AAEpE,QAAI,CAAC,QAAS;AAEd,UAAM,WAAW,IAAI,iBAAiB,MAAM;AAC1C,YAAM,WAAW,QAAQ,aAAa,SAAS;AAC/C,uBAAiB,QAAQ;AAAA,IAC3B,CAAC;AAED,aAAS,QAAQ,SAAS;AAAA,MACxB,YAAY;AAAA,MACZ,iBAAiB,CAAC,SAAS;AAAA,IAC7B,CAAC;AAED,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}