@emmveqz/react-components
Version:
Diverse Components for React
37 lines (36 loc) • 1.38 kB
JavaScript
;
//
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
//
const useExternalScript = (url) => {
const [status, setStatus] = (0, react_1.useState)('loading');
(0, react_1.useEffect)(() => {
if (!url) {
setStatus('idle');
return;
}
let script = document.querySelector(`script[src="${url}"]`);
const handleScript = (e) => {
setStatus(e.type === 'load' ? 'ready' : 'error');
};
if (!script) {
script = document.createElement('script');
script.type = 'application/javascript';
script.src = url;
script.async = true;
document.body.appendChild(script);
script.addEventListener('load', handleScript);
script.addEventListener('error', handleScript);
}
script.addEventListener('load', handleScript);
script.addEventListener('error', handleScript);
// eslint-disable-next-line consistent-return
return () => {
script === null || script === void 0 ? void 0 : script.removeEventListener('load', handleScript);
script === null || script === void 0 ? void 0 : script.removeEventListener('error', handleScript);
};
}, [url]);
return status;
};
exports.default = useExternalScript;