UNPKG

@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
'use strict'; 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);