esri-loader
Version:
A tiny library to help load ArcGIS API for JavaScript modules in non-Dojo applications
3 lines (2 loc) • 2.68 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.esriLoader=e.esriLoader||{})}(this,function(e){"use strict";var t={Promise:"undefined"!=typeof window?window.Promise:void 0},n="4.25",o="next";function i(e){if(e.toLowerCase()===o)return o;e=e&&e.match(/^(\d)\.(\d+)/);return e&&{major:parseInt(e[1],10),minor:parseInt(e[2],10)}}function d(e){return"https://js.arcgis.com/".concat(e=void 0===e?n:e,"/")}function a(e){return!e||i(e)?(t=d(r=void 0===(r=e)?n:r),(r=i(r))===o||3!==r.major?"".concat(t,"esri/themes/light/main.css"):(r=r.minor<=10?"js/":"","".concat(t).concat(r,"esri/css/esri.css"))):e;var r,t}function s(e,r){var t,n=a(e),e=(t=n,document.querySelector('link[href*="'.concat(t,'"]')));return e||(t=n,(n=document.createElement("link")).rel="stylesheet",n.href=t,n=e=n,(r=r)?(r=document.querySelector(r)).parentNode.insertBefore(n,r):document.head.appendChild(n)),e}var r={};function u(e,r,t){var n,o,i,a;t&&(i=t,a=function(e){i(e.error||new Error("There was an error attempting to load ".concat(o.src))),o.removeEventListener("error",a,!1)},(o=e).addEventListener("error",a,!1),n=a);var c=function(){r(e),e.removeEventListener("load",c,!1),n&&e.removeEventListener("error",n,!1)};e.addEventListener("load",c,!1)}function f(){return document.querySelector("script[data-esri-loader]")}function l(){var e=window.require;return e&&e.on}function c(e){var i={};[r,e=void 0===e?{}:e].forEach(function(e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=e[r])});var a=i.version,c=i.url||d(a);return new t.Promise(function(e,r){var t,n,o=f();o?(t=o.getAttribute("src"))!==c?r(new Error("The ArcGIS API for JavaScript is already loaded (".concat(t,")."))):l()?e(o):u(o,e,r):l()?r(new Error("The ArcGIS API for JavaScript is already loaded.")):((n=i.css)&&s(!0===n?a:n,i.insertCssBefore),t=c,(n=document.createElement("script")).type="text/javascript",n.src=t,n.setAttribute("data-esri-loader","loading"),u(o=n,function(){o.setAttribute("data-esri-loader","loaded"),e(o)},r),document.body.appendChild(o))})}function v(r){return new t.Promise(function(t,e){var n=window.require.on("error",e);window.require(r,function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];n.remove(),t(e)})})}e.utils=t,e.loadModules=function(e,r){if(void 0===r&&(r={}),l())return v(e);var t=(t=f())&&t.getAttribute("src");return!r.url&&t&&(r.url=t),c(r).then(function(){return v(e)})},e.getScript=f,e.isLoaded=l,e.loadScript=c,e.setDefaultOptions=function(e){r=e=void 0===e?{}:e},e.loadCss=s,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=esri-loader.min.js.map