the-platform
Version:
React Hooks and Suspense-ready Components for Web API's and elements
51 lines (40 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Preload = exports.PreloadResource = 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 PreloadResource = (0, _createResource.createResource)(load, function (_ref) {
var href = _ref.href,
as = _ref.as;
return "".concat(href, ".").concat(as);
});
exports.PreloadResource = PreloadResource;
function load(_ref2) {
var href = _ref2.href,
as = _ref2.as,
_ref2$media = _ref2.media,
media = _ref2$media === void 0 ? 'all' : _ref2$media;
return new Promise(function (resolve, reject) {
var link = document.createElement('link');
link.rel = 'preload';
link.as = as;
link.media = media;
link.href = href;
link.onload = resolve;
link.onerror = reject;
document.body.appendChild(link);
});
}
var Preload = function Preload(_ref3) {
var children = _ref3.children,
rest = _objectWithoutProperties(_ref3, ["children"]);
PreloadResource.read(rest);
if (typeof children === 'function') {
return children();
}
return children;
};
exports.Preload = Preload;