@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
51 lines (50 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadScript = loadScript;
exports.loadCSS = loadCSS;
const env_1 = require("../env");
const types_1 = require("../types");
/**
* opt.async defaults to `true`.
* No other options are set by default.
*/
async function loadScript(src, opt) {
if ((0, env_1.isServerSide)())
return;
return await new Promise((resolve, reject) => {
const s = (0, types_1._objectAssign)(document.createElement('script'), {
src,
async: true,
...opt,
onload: resolve,
onerror: (_event, _source, _lineno, _colno, err) => {
reject(err || new Error(`loadScript failed: ${src}`));
},
});
document.head.append(s);
});
}
/**
* Default options:
* rel: 'stylesheet'
*
* No other options are set by default.
*/
async function loadCSS(href, opt) {
if ((0, env_1.isServerSide)())
return;
return await new Promise((resolve, reject) => {
const link = (0, types_1._objectAssign)(document.createElement('link'), {
href,
rel: 'stylesheet',
// type seems to be unnecessary: https://stackoverflow.com/a/5409146/4919972
// type: 'text/css',
...opt,
onload: resolve,
onerror: (_event, _source, _lineno, _colno, err) => {
reject(err || new Error(`loadCSS failed: ${href}`));
},
});
document.head.append(link);
});
}