UNPKG

usehooks-ts

Version:

React hook library, ready to use, written in Typescript.

42 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); function useScript(src) { var _a = (0, react_1.useState)(src ? 'loading' : 'idle'), status = _a[0], setStatus = _a[1]; (0, react_1.useEffect)(function () { if (!src) { setStatus('idle'); return; } var script = document.querySelector("script[src=\"".concat(src, "\"]")); if (!script) { script = document.createElement('script'); script.src = src; script.async = true; script.setAttribute('data-status', 'loading'); document.body.appendChild(script); var setAttributeFromEvent = function (event) { script === null || script === void 0 ? void 0 : script.setAttribute('data-status', event.type === 'load' ? 'ready' : 'error'); }; script.addEventListener('load', setAttributeFromEvent); script.addEventListener('error', setAttributeFromEvent); } else { setStatus(script.getAttribute('data-status')); } var setStateFromEvent = function (event) { setStatus(event.type === 'load' ? 'ready' : 'error'); }; script.addEventListener('load', setStateFromEvent); script.addEventListener('error', setStateFromEvent); return function () { if (script) { script.removeEventListener('load', setStateFromEvent); script.removeEventListener('error', setStateFromEvent); } }; }, [src]); return status; } exports.default = useScript; //# sourceMappingURL=useScript.js.map