{"version":3,"file":"useLanguageExtension.mjs","sources":["../../../../src/components/CodeMirror/useLanguageExtension.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { faro } from '@grafana/faro-web-sdk';\n\nimport { loadLanguageExtension } from './languageLoader';\nimport { type CodeMirrorEditorLanguage, type CodeMirrorExtension } from './types';\n\nexport interface LanguageExtensionState {\n  extension: CodeMirrorExtension | null;\n  error: Error | null;\n}\n\nexport function useLanguageExtension(language?: CodeMirrorEditorLanguage): LanguageExtensionState {\n  const [languageExtension, setLanguageExtension] = useState<CodeMirrorExtension | null>(null);\n  const [error, setError] = useState<Error | null>(null);\n\n  useEffect(() => {\n    let cancelled = false;\n\n    if (!language) {\n      setLanguageExtension(null);\n      setError(null);\n      return;\n    }\n\n    setLanguageExtension(null);\n    setError(null);\n\n    void loadLanguageExtension(language)\n      .then((extension) => {\n        if (!cancelled) {\n          setLanguageExtension(extension);\n          setError(null);\n        }\n      })\n      .catch((caughtError: unknown) => {\n        const error =\n          caughtError instanceof Error\n            ? caughtError\n            : new Error('Failed to load CodeMirror language extension', { cause: caughtError });\n\n        faro?.api?.pushError(error, {\n          context: {\n            type: 'async',\n            source: 'CodeMirror.useLanguageExtension',\n            language,\n          },\n        });\n\n        if (!cancelled) {\n          setLanguageExtension(null);\n          setError(error);\n        }\n      });\n\n    return () => {\n      cancelled = true;\n    };\n  }, [language]);\n\n  return { extension: languageExtension, error };\n}\n"],"names":["error"],"mappings":";;;;;AAYO,SAAS,qBAAqB,QAAA,EAA6D;AAChG,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAqC,IAAI,CAAA;AAC3F,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA;AAAA,IACF;AAEA,IAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,KAAK,qBAAA,CAAsB,QAAQ,CAAA,CAChC,IAAA,CAAK,CAAC,SAAA,KAAc;AACnB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,oBAAA,CAAqB,SAAS,CAAA;AAC9B,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,MACf;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,WAAA,KAAyB;AAnCvC,MAAA,IAAA,EAAA,EAAA,EAAA;AAoCQ,MAAA,MAAMA,MAAAA,GACJ,WAAA,YAAuB,KAAA,GACnB,WAAA,GACA,IAAI,MAAM,8CAAA,EAAgD,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAEtF,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAM,GAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,SAAA,CAAUA,MAAAA,EAAO;AAAA,QAC1B,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,OAAA;AAAA,UACN,MAAA,EAAQ,iCAAA;AAAA,UACR;AAAA;AACF,OACF,CAAA;AAEA,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,QAAA,CAASA,MAAK,CAAA;AAAA,MAChB;AAAA,IACF,CAAC,CAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,OAAO,EAAE,SAAA,EAAW,iBAAA,EAAmB,KAAA,EAAM;AAC/C;;;;"}