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