google-maps-promise
Version:
Wrapper for asynchronously load Google Maps API with Promise.
1 lines • 1.84 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(e.GoogleMapsPromise={})}(this,function(e){"use strict";var n,t,l,i,r,o={url:"https://maps.googleapis.com/maps/api/js",key:null,client:null,version:"3.32",channel:null,libraries:[],language:null,region:null,windowCallbackName:"__google_maps_api_provider_initializator__"},s=window;function a(){e.urlSettings=Object.assign({},o),i=!1,l=new Promise(function(e,l){n=e,t=l})}function u(){a(),void 0!==s.google&&delete s.google,void 0!==s[e.urlSettings.windowCallbackName]&&delete s[e.urlSettings.windowCallbackName],r&&(r.parentElement&&r.parentElement.removeChild(r),r=null)}e.urlSettings=Object.assign({},o),a(),e.load=function(){return i||(i=!0,s.google&&s.google.maps?n(s.google.maps):((r=document.createElement("script")).type="text/javascript",r.src=(a=["callback="+(e.urlSettings.windowCallbackName||o.windowCallbackName)],e.urlSettings.key&&a.push("key="+e.urlSettings.key),e.urlSettings.client?a.push("client="+e.urlSettings.client,"v="+(e.urlSettings.version||o.version)):e.urlSettings.version&&a.push("v="+e.urlSettings.version),e.urlSettings.channel&&a.push("channel="+e.urlSettings.channel),e.urlSettings.libraries.length>0&&a.push("libraries="+e.urlSettings.libraries.join(",")),e.urlSettings.language&&a.push("language="+e.urlSettings.language),e.urlSettings.region&&a.push("region="+e.urlSettings.region),(e.urlSettings.url||o.url)+"?"+a.join("&")),r.onerror=function(){return t(new URIError("The script "+(r&&r.src)+" is not accessible."))},s[e.urlSettings.windowCallbackName]=function(){return n(s.google.maps)},document.body.appendChild(r))),l;var a},e.release=function(){return i?l.then(u):(u(),Promise.resolve())},e.defaultUrlSettings=o,Object.defineProperty(e,"__esModule",{value:!0})});