@grafana/ui
Version:
Grafana Components Library
51 lines (46 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var faroWebSdk = require('@grafana/faro-web-sdk');
var languageLoader = require('./languageLoader.cjs');
;
function useLanguageExtension(language) {
const [languageExtension, setLanguageExtension] = React.useState(null);
const [error, setError] = React.useState(null);
React.useEffect(() => {
let cancelled = false;
if (!language) {
setLanguageExtension(null);
setError(null);
return;
}
setLanguageExtension(null);
setError(null);
void languageLoader.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 = faroWebSdk.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 };
}
exports.useLanguageExtension = useLanguageExtension;
//# sourceMappingURL=useLanguageExtension.cjs.map