UNPKG

@shopify/hydrogen-react

Version:

React components, hooks, and utilities for creating custom Shopify storefronts

53 lines (52 loc) 1.53 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require$$0 = require("react"); const SCRIPTS_LOADED = {}; function loadScript(src, options) { const isScriptLoaded = SCRIPTS_LOADED[src]; if (isScriptLoaded) { return isScriptLoaded; } const promise = new Promise((resolve, reject) => { const script = document.createElement("script"); if (options == null ? void 0 : options.module) { script.type = "module"; } else { script.type = "text/javascript"; } script.src = src; script.onload = () => { resolve(true); }; script.onerror = () => { reject(false); }; if ((options == null ? void 0 : options.in) === "head") { document.head.appendChild(script); } else { document.body.appendChild(script); } }); SCRIPTS_LOADED[src] = promise; return promise; } function useLoadScript(url, options) { const [status, setStatus] = require$$0.useState("loading"); const stringifiedOptions = JSON.stringify(options); require$$0.useEffect(() => { async function loadScriptWrapper() { try { setStatus("loading"); await loadScript(url, options); setStatus("done"); } catch (error) { setStatus("error"); } } loadScriptWrapper(); }, [url, stringifiedOptions, options]); return status; } exports.loadScript = loadScript; exports.useLoadScript = useLoadScript; //# sourceMappingURL=load-script.js.map