UNPKG

@emmveqz/react-components

Version:
37 lines (36 loc) 1.38 kB
"use strict"; // 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;