@grafana/ui
Version:
Grafana Components Library
47 lines (44 loc) • 1.41 kB
JavaScript
import { useState, useEffect } from 'react';
import { faro } from '@grafana/faro-web-sdk';
import { loadLanguageExtension } from './languageLoader.mjs';
;
function useLanguageExtension(language) {
const [languageExtension, setLanguageExtension] = useState(null);
const [error, setError] = useState(null);
useEffect(() => {
let cancelled = false;
if (!language) {
setLanguageExtension(null);
setError(null);
return;
}
setLanguageExtension(null);
setError(null);
void loadLanguageExtension(language).then((extension) => {
if (!cancelled) {
setLanguageExtension(extension);
setError(null);
}
}).catch((caughtError) => {
var _a, _b;
const error2 = caughtError instanceof Error ? caughtError : new Error("Failed to load CodeMirror language extension", { cause: caughtError });
(_b = (_a = faro) == null ? void 0 : _a.api) == null ? void 0 : _b.pushError(error2, {
context: {
type: "async",
source: "CodeMirror.useLanguageExtension",
language
}
});
if (!cancelled) {
setLanguageExtension(null);
setError(error2);
}
});
return () => {
cancelled = true;
};
}, [language]);
return { extension: languageExtension, error };
}
export { useLanguageExtension };
//# sourceMappingURL=useLanguageExtension.mjs.map