@seznam/szn-select
Version:
Accessible HTML selectbox with customizable UI. Based on web components and easy to integrate with various frameworks like React or Angular.
49 lines (43 loc) • 2.29 kB
JavaScript
;
var makeSznSelectBundleScript = function (global) {
// eslint-disable-line no-unused-vars
var BUNDLES = {
ELEMENT_ES2016: 'es2016',
ELEMENT_ES3: 'es3',
ELEMENTS_ES2016: 'bundle-elements.es2016',
ELEMENTS_ES3: 'bundle-elements.es3',
ALL_CE: 'bundle-full.ce',
ALL_ES2016: 'bundle-full.es2016',
ALL_ES3: 'bundle-full.es3'
};
var DEFAULT_PACKAGE_URL = 'https://cdn.jsdelivr.net/npm/@seznam/szn-select@1.x/';
function makeBundleLoadScript(urlsConfiguration, useAsyncLoading) {
if (typeof self === 'undefined') {
throw new Error('The loader can only be used at the client-side');
}
if (global.SznElements && global.SznElements['szn-tethered'] && global.SznElements['szn-select']) {
return null; // already loaded
}
var bundleUrl = getSznSelectBundleUrl(urlsConfiguration);
var script = document.createElement('script');
script.async = useAsyncLoading;
script.defer = useAsyncLoading;
script.src = bundleUrl;
return script;
}
function getSznSelectBundleUrl(urlsConfiguration) {
// Firefox 52-based browsers (e.g. Palemoon) have faulty support for for-scoped const variable declarations
var firefoxVersionMatch = navigator.userAgent.match(/ Firefox\/(\d+)/);
var firefoxVersion = firefoxVersionMatch && parseInt(firefoxVersionMatch[1], 10);
var supportsForConst = !firefoxVersion || firefoxVersion > 52;
var es2016Supported = supportsForConst && global.Proxy && Array.prototype.includes;
var runtimeLoaded = global.SznElements && global.SznElements.init && global.SznElements.injectStyles;
var dependenciesLoaded = runtimeLoaded && global.SznElements['szn-tethered'];
var bundleToLoad = dependenciesLoaded ? es2016Supported ? BUNDLES.ELEMENT_ES2016 : BUNDLES.ELEMENT_ES3 : runtimeLoaded ? es2016Supported ? BUNDLES.ELEMENTS_ES2016 : BUNDLES.ELEMENTS_ES3 : global.customElements ? BUNDLES.ALL_CE : es2016Supported ? BUNDLES.ALL_ES2016 : BUNDLES.ALL_ES3;
return urlsConfiguration[bundleToLoad] || function () {
var baseUrl = urlsConfiguration["package"] || DEFAULT_PACKAGE_URL;
return /\/$/.test(baseUrl) ? baseUrl : "".concat(baseUrl, "/");
}() + "szn-select.".concat(bundleToLoad, ".min.js");
}
return makeBundleLoadScript;
}(self);