the-platform
Version:
React Hooks and Suspense-ready Components for Web API's and elements
50 lines (36 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useScript = useScript;
exports.Script = exports.ScriptResource = void 0;
var _createResource = require("./createResource");
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var ScriptResource = (0, _createResource.createResource)(function (src) {
return new Promise(function (resolve, reject) {
var script = document.createElement('script');
script.src = src;
script.onload = function () {
return resolve(script);
};
script.onerror = reject; // @todo decide if this is sensible.
// script.async = true
document.body.appendChild(script);
});
});
exports.ScriptResource = ScriptResource;
var Script = function Script(_ref) {
var children = _ref.children,
rest = _objectWithoutProperties(_ref, ["children"]);
ScriptResource.read(rest.src);
if (typeof children === 'function') {
return children();
}
return children;
};
exports.Script = Script;
function useScript(_ref2) {
var src = _ref2.src;
return ScriptResource.read(src);
}