react-defold
Version:
Defold component for react
31 lines (28 loc) • 1.24 kB
JavaScript
import { useState, useEffect } from 'react';
function useEmbedScript(script, ref, external, timeout) {
var _a = useState(true), loading = _a[0], setLoading = _a[1];
var _b = useState(false), error = _b[0]; _b[1];
var handleReadyStateChange = function () { return setLoading(false); };
useEffect(function () {
var loader = document.createElement('script');
loader.type = 'text/javascript';
loader.async = true;
loader.defer = true;
loader.src = script;
loader.onload = handleReadyStateChange;
var parent = ref && ref.current ? ref.current : document.body;
var scripts = Array.from(parent.getElementsByTagName('script'));
var exists = scripts.find(function (s) { return s.src === script; });
if (exists)
exists.remove();
parent.appendChild(loader);
return function () {
loader.onload = null;
loader.onreadystatechange = function () { return void 0; };
document.body.removeChild(loader);
};
}, []);
return { loading: loading, error: error, complete: !loading && !error };
}
export { useEmbedScript };
//# sourceMappingURL=useEmbedScript.js.map