New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

geolocator

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

geolocator - npm Package Compare versions

Comparing version 2.0.0 to 2.1.0

example/test.html

13

CHANGELOG.md
## Change Log:
### v2.0.0 (2016-06-25)
### v2.1.0 (2016-09-30)
- Feature: Get static Google Maps (image) via `.getStaticMap()` method. [#34](https://github.com/onury/geolocator/issues/34). *Make sure you have enabled Google Static Maps API in Google Developers console.*
- Feature: Ability to style Google Maps. Either set global styles via `geolocator.config()` or corresponding methods such as `.createMap()` or `.getStaticMap()`.
- Revision: Improved desired accuracy logic. Added `maximumWait:Number` and `onProgress:Function` options for `.locate()` method.
- Fix: Changed Geo-IP provider to [FreeGeoIP](https://freegeoip.net). (Wikimedia has shutdown the geo service.) Fixes issue [#36](https://github.com/onury/geolocator/issues/36).
- Fix: Respecting countries with states, other than US. Fixes [#37](https://github.com/onury/geolocator/pull/37).
- Minor revisions, updated dev-dependencies.
Please read the [**API documentation**][api-docs].
### v2.0.0 (2016-06-25)
- Improvement: Better Geolocation accuracy. Fixes issue [#28](https://github.com/onury/geolocator/issues/28).

@@ -30,2 +39,4 @@ - Feature: Watch geographic position.

Please read the [**API documentation**][api-docs].
---

@@ -32,0 +43,0 @@

4

dist/geolocator.min.js

@@ -1,3 +0,3 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("geolocator",[],t):"object"==typeof exports?exports.geolocator=t():e.geolocator=t()}(this,function(){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="dist/",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}var r=o(1),a=n(r);e.exports=a["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e){if((!e||e.addressLookup||e.timezone||e.map)&&!w._.config.google.key)throw new I["default"](I["default"].Code.GOOGLE_KEY_INVALID,"A Google API key is required but it's not set or valid.")}function i(e,t){return g["default"].isObject(e)?e.center=t.coords:e={element:e,center:t.coords},t.formattedAddress&&(e.title=t.formattedAddress),!e.zoom&&t.coords&&g["default"].isNumber(t.coords.accuracy)&&t.coords.accuracy<1500&&(e.zoom=15),e}function u(e){var t=e.element,o=t._geolocatorMapData,n=o&&o.instance||null,r=o&&o.marker||null,a=o&&o.infoWindow||null,i=new google.maps.LatLng(e.center.latitude,e.center.longitude),u={mapTypeId:e.mapTypeId,center:i,zoom:e.zoom};return n?(n.setMapTypeId(u.mapTypeId),n.setCenter(u.center),n.setZoom(u.zoom)):n=new google.maps.Map(e.element,u),a&&(a=null),r&&r instanceof google.maps.Marker&&(google.maps.event.clearInstanceListeners(r),r.setMap(null),r=null),e.marker&&(r=new google.maps.Marker({position:u.center,map:n}),e.title&&(a=new google.maps.InfoWindow,a.setContent(e.title),google.maps.event.addListener(r,"click",function(){a.open(n,r)}))),o={element:t,instance:n,marker:r,infoWindow:a,options:u},t._geolocatorMapData=o,o}function l(e){if(e&&e.address){var t=void 0,o=e.address;g["default"].isString(o.countryCode)&&2===o.countryCode.length?t=o.countryCode:g["default"].isString(o.country)&&2===o.country.length&&(t=o.country),t&&(e.flag=S.FLAG+t.toLowerCase()+".svg")}}function d(e,t){return function(o,n){return o?t(I["default"].create(o),null):(l(n),e.map?(e.map=i(e.map,n),void w.createMap(e.map,function(e,o){return e?t(e,null):(n.map=o,t(null,n))})):t(null,n))}}function s(e,t,o){function n(e){w.getTimeZone(r.coords,function(t,o){return t?e(t,null):(delete o.timestamp,r.timezone=o,r.timestamp=g["default"].time(),void e(null,r))})}var r=g["default"].clone(e,{own:!1});return t.addressLookup||t.timezone?void(t.addressLookup?w.reverseGeocode(r.coords,function(e,a){return e?o(e,null):(r=g["default"].extend({},a,r),r.address=a.address,r.timestamp=g["default"].time(),void(t.timezone?n(o):o(e,r)))}):t.timezone?n(o):o(null,r)):o(null,r)}function c(e,t,o){function n(){r?t(r):o(new I["default"](I["default"].Code.POSITION_UNAVAILABLE))}var r=void 0,a=void 0;a=w.watch(e,function(t,i){return t?a.clear(function(){o(t)}):((!r||i.coords.accuracy<=r.coords.accuracy)&&(r=i),void(a.cycle>1&&r.coords.accuracy<=e.desiredAccuracy&&a.clear(n)))}),a.clear(e.timeout,n)}Object.defineProperty(t,"__esModule",{value:!0});var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},m=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),p=o(2),g=n(p),E=o(3),y=n(E),v=o(4),_=n(v),O=o(5),I=n(O),h=o(6),b=n(h),R=o(7),N=n(R),A=6371,T=3959,S={IP:"//api.ipify.org",FLAG:"//cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/flags/4x3/",GOOGLE_MAPS_API:"//maps.googleapis.com/maps/api/js",GOOGLE_GEOLOCATION:"//www.googleapis.com/geolocation/v1/geolocate",GOOGLE_GEOCODE:"//maps.googleapis.com/maps/api/geocode/json",GOOGLE_TIMEZONE:"//maps.googleapis.com/maps/api/timezone/json",GOOGLE_DISTANCE_MATRIX:"//maps.googleapis.com/maps/api/distancematrix/json"},P={language:"en",https:!0,google:{version:"3",key:""}},w=function(){function e(){r(this,e)}return m(e,null,[{key:"config",value:function(t){return t&&(e._.config=g["default"].extend(P,t)),e._.config}},{key:"createMap",value:function(t,o){g["default"].isPlainObject(t)||(t={element:t}),t=g["default"].extend({element:null,mapTypeId:N["default"].MapTypeId.ROADMAP,title:void 0,marker:!0,zoom:9},t);var n=t.element,r=void 0;if(g["default"].isString(n)?r=document.getElementById(n):g["default"].isJQueryObject(n)?r=n[0]:e.isGoogleLoaded()&&n instanceof google.maps.Map&&(r=n.getDiv()),!g["default"].isElement(r)&&!g["default"].isNode(r))throw new I["default"](I["default"].Code.INVALID_PARAMETERS,"A valid DOM element or element ID is required to create a map.");if(!g["default"].isPlainObject(t.center)||!g["default"].isNumber(t.center.latitude)||!g["default"].isNumber(t.center.longitude))throw new I["default"](I["default"].Code.INVALID_PARAMETERS,"Center coordinates are required to create a map.");t.element=r;var a=e._.config.google.key;e.ensureGoogleLoaded(a,function(e){if(e)throw new I["default"](I["default"].Code.GOOGLE_API_FAILED,String(e.message||e));var n=u(t);o(null,n)})}},{key:"locate",value:function(t,o){function n(o){return t.fallbackToIP?e.locateByIP(t,function(e,t){return e?u(e,null):u(null,t)}):void u(o,null)}function r(e){s(e,t,u)}function i(e){e=I["default"].create(e),n(e)}t=g["default"].extend({enableHighAccuracy:!0,timeout:6e3,maximumAge:0,desiredAccuracy:30,fallbackToIP:!1,addressLookup:!1,timezone:!1,map:void 0},t),t.enableHighAccuracy&&(t.maximumAge=0),a(t);var u=d(t,o);if(e.isGeolocationSupported())t.enableHighAccuracy?c(t,r,i):navigator.geolocation.getCurrentPosition(r,i,t);else{var l=new I["default"](I["default"].Code.GEOLOCATION_NOT_SUPPORTED);n(l)}}},{key:"locateByMobile",value:function(t,o){if(!g["default"].isPlainObject(t))throw new I["default"](I["default"].Code.INVALID_PARAMETERS);var n=d(t,o);t=g["default"].extend({homeMobileCountryCode:void 0,homeMobileNetworkCode:void 0,radioType:void 0,carrier:void 0,fallbackToIP:!1,cellTowers:void 0,wifiAccessPoints:void 0,addressLookup:!1,timezone:!1,map:void 0,raw:!1},t),t.considerIp=t.fallbackToIP,a();var r=e._.config,i=r.google.key||"",u=g["default"].setProtocol(S.GOOGLE_GEOLOCATION,r.https),l={url:u+"?key="+i,headers:{"Content-Type":"application/json"},data:JSON.stringify(t)};y["default"].post(l,function(e,o){var r=Boolean(o)&&g["default"].safeJsonParse(o.responseText);if(e){var a=I["default"].fromGoogleResponse(r);if(a.code===I["default"].Code.UNKNOWN_ERROR)throw new I["default"](I["default"].Code.INTERNAL_ERROR,e.message);return n(a,null)}return r?(r=t.raw?r:{coords:{latitude:r.location.lat,longitude:r.location.lng,accuracy:r.accuracy},timestamp:g["default"].time()},void s(r,t,n)):(e=new I["default"](I["default"].Code.INVALID_RESPONSE),n(e,null))})}},{key:"locateByIP",value:function(t,o){var n=e._.geoIpSource;if(!g["default"].isPlainObject(n))throw new I["default"](I["default"].Code.INVALID_GEO_IP_SOURCE,"Please set a valid Geo-IP Source via geolocator.setGeoIPSource(options).");a(t||{});var r={url:n.url,async:!0,clean:!0};if(n.callbackParam)r.callbackParam=n.callbackParam,r.rootName="geolocator._.cb";else if(!n.globalVar)throw new I["default"](I["default"].Code.INVALID_GEO_IP_SOURCE,"Either callbackParam or globalVar should be set for Geo-IP source.");return y["default"].jsonp(r,function(e,r){if(e)return o(I["default"].create(e),null);if(n.globalVar&&(window[n.globalVar]?(r=g["default"].clone(window[n.globalVar]),delete window[n.globalVar]):r=null),!r)return e=new I["default"](I["default"].Code.INVALID_RESPONSE),o(e,null);g["default"].isPlainObject(n.schema)&&(r=g["default"].mapToSchema(r,n.schema)),r.provider=n.provider||"unknown",l(r),r.coords&&(r.coords.latitude=Number(r.coords.latitude),r.coords.longitude=Number(r.coords.longitude));var a=d(t,o);s(r,t,a)})}},{key:"setGeoIPSource",value:function(t){if(!g["default"].isPlainObject(t))throw new I["default"](I["default"].Code.INVALID_PARAMETERS,"Geo-IP source options is invalid.");if(!g["default"].isStringSet(t.url))throw new I["default"](I["default"].Code.INVALID_PARAMETERS,"Geo-IP source should have a valid URI.");e._.geoIpSource=Object.freeze(t)}},{key:"watch",value:function(t,o){function n(t){var n=g["default"].clone(t,{own:!1});if(i){var r=e.calcDistance({from:t.coords,to:i,formula:e.DistanceFormula.HAVERSINE,unitSystem:i.unitSystem});n.targetReached=r<=i.radius,a&&n.targetReached&&a.clear(function(){return o(null,n)})}return o(null,n)}function r(e){o(I["default"].create(e),null)}if(!e.isGeolocationSupported())return o(new I["default"](I["default"].Code.GEOLOCATION_NOT_SUPPORTED),null),{};var a=void 0,i=void 0;return t=g["default"].extend({enableHighAccuracy:!0,timeout:6e3,maximumAge:0,clearOnError:!1},t),g["default"].isPlainObject(t.target)&&(i=g["default"].extend({radius:.5,unitSystem:e.UnitSystem.METRIC},t.target)),new b["default"](n,r,t)}},{key:"geocode",value:function(t,o){if(g["default"].isString(t))t={address:t};else if(!g["default"].isPlainObject(t))throw new I["default"](I["default"].Code.INVALID_PARAMETERS);a();var n=e._.config;t=g["default"].extend({key:n.google.key||"",language:n.language||"en",raw:!1},t);var r=_["default"].buildGeocodeParams(t,!1),i=g["default"].setProtocol(S.GOOGLE_GEOCODE,n.https),u={url:i+"?"+r},l=d(t,o);_["default"].geocode(u,t.raw,l)}},{key:"reverseGeocode",value:function(t,o){if(g["default"].isString(t))t={placeId:t};else if(!g["default"].isPlainObject(t))throw new I["default"](I["default"].Code.INVALID_PARAMETERS);var n=g["default"].isNumber(t.latitude)&&g["default"].isNumber(t.longitude);if(!g["default"].isString(t.placeId)&&!n)throw new I["default"](I["default"].Code.INVALID_PARAMETERS);a();var r=e._.config;t=g["default"].extend({key:r.google.key||"",language:r.language||"en",raw:!1},t);var i=_["default"].buildGeocodeParams(t,!0),u=g["default"].setProtocol(S.GOOGLE_GEOCODE,r.https),l={url:u+"?"+i},s=d(t,o);_["default"].geocode(l,t.raw,s)}},{key:"addressLookup",value:function(t,o){e.reverseGeocode(t,o)}},{key:"getTimeZone",value:function(t,o){if(!g["default"].isPlainObject(t)||!g["default"].isNumber(t.latitude)||!g["default"].isNumber(t.longitude))throw new I["default"](I["default"].Code.INVALID_PARAMETERS);a();var n=e._.config;t=g["default"].extend({key:n.google.key||"",language:n.language||"en",timestamp:g["default"].time(!0),raw:!1},t);var r=g["default"].setProtocol(S.GOOGLE_TIMEZONE,n.https),i={url:r+"?location="+t.latitude+","+t.longitude+"&timestamp="+t.timestamp+"&language="+t.language+"&key="+t.key};y["default"].xhr(i,function(e,n){var r=Boolean(n)&&g["default"].safeJsonParse(n.responseText);if(e){var a=I["default"].fromGoogleResponse(r);if(a.code===I["default"].Code.UNKNOWN_ERROR)throw new I["default"](I["default"].Code.INTERNAL_ERROR,e.message);return o(a,null)}return r?"OK"!==r.status?(e=I["default"].fromGoogleResponse(r),o(e,null)):(r=t.raw?r:{id:r.timeZoneId,name:r.timeZoneName,abbr:g["default"].abbr(r.timeZoneName,{dots:!1}),dstOffset:r.dstOffset,rawOffset:r.rawOffset,timestamp:t.timestamp},void o(e,r)):(e=new I["default"](I["default"].Code.INVALID_RESPONSE),o(e,null))})}},{key:"getDistanceMatrix",value:function(t,o){a();var n=e._.config.google.key;e.ensureGoogleLoaded(n,function(e){if(e)throw new I["default"](I["default"].Code.GOOGLE_API_FAILED,String(e.message||e));var n=t.origins||t.origin||t.from,r=t.destinations||t.destination||t.to;if(!g["default"].isPlainObject(t)||!g["default"].isString(n)&&!g["default"].isArray(n)&&!g["default"].isPlainObject(n)||!g["default"].isString(r)&&!g["default"].isArray(r)&&!g["default"].isPlainObject(r))throw new I["default"](I["default"].Code.INVALID_PARAMETERS);t.origins=_["default"].toPointList(n),t.destinations=_["default"].toPointList(r),t=g["default"].extend({travelMode:google.maps.TravelMode.DRIVING,avoidFerries:void 0,avoidHighways:void 0,avoidTolls:void 0,unitSystem:google.maps.UnitSystem.METRIC},t);var a=new google.maps.DistanceMatrixService;a.getDistanceMatrix(t,function(e,n){var r=null;n!==google.maps.DistanceMatrixStatus.OK?(r=I["default"].fromGoogleResponse(n),e=null):e=t.raw?e:_["default"].formatDistanceResults(e),o(r,e)})})}},{key:"calcDistance",value:function(t){t=g["default"].extend({formula:e.DistanceFormula.HAVERSINE,unitSystem:e.UnitSystem.METRIC},t);var o=t.from,n=t.to,r=t.unitSystem===e.UnitSystem.METRIC?A:T;if(t.formula===e.DistanceFormula.HAVERSINE){var a=e.degToRad(n.latitude-o.latitude),i=e.degToRad(n.longitude-o.longitude),u=Math.sin(a/2)*Math.sin(a/2)+Math.cos(e.degToRad(o.latitude))*Math.cos(e.degToRad(n.longitude))*Math.sin(i/2)*Math.sin(i/2),l=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u));return r*l}var d=e.degToRad(o.latitude),s=e.degToRad(n.latitude),c=e.degToRad(o.longitude),f=e.degToRad(n.longitude),m=(f-c)*Math.cos((d+s)/2),p=s-d;return Math.sqrt(m*m+p*p)*r}},{key:"getIP",value:function(t){var o=e._.config,n={url:g["default"].setProtocol(S.IP,o.https),async:!0,clean:!0,params:{format:"jsonp"},callbackParam:"callback",rootName:"geolocator._.cb"};return y["default"].jsonp(n,function(e,o){return e?t(I["default"].create(e),null):o?("object"===("undefined"==typeof o?"undefined":f(o))&&(o.timestamp=g["default"].time()),void t(null,o)):(e=new I["default"](I["default"].Code.INVALID_RESPONSE),t(e,null))})}},{key:"ensureGoogleLoaded",value:function(t,o){var n=void 0;if(g["default"].isFunction(t)?o=t:n=t,!e.isGoogleLoaded()){var r={url:S.GOOGLE_MAPS_API,async:!0,callbackParam:"callback",params:{key:n||""},rootName:"geolocator._.cb"};return y["default"].jsonp(r,o)}o()}},{key:"isGoogleLoaded",value:function(){return"google"in window&&google.maps}},{key:"isPositionError",value:function(e){return g["default"].isPositionError(e)}},{key:"isGeoError",value:function(e){return I["default"].isGeoError(e)}},{key:"isGeolocationSupported",value:function(){return navigator&&"geolocation"in navigator}},{key:"kmToMi",value:function(e){return.621371*e}},{key:"miToKm",value:function(e){return e/.621371}},{key:"degToRad",value:function(e){return e*(Math.PI/180)}},{key:"radToDeg",value:function(e){return e*(180/Math.PI)}},{key:"decToDegMinSec",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=0>e?-1:1,n=0>e?"S":"N",r=0>e?"W":"E",a=t?r:n,i=Math.abs(Math.round(1e6*e));return Math.floor(i/1e6)*o+"° "+Math.floor(60*(i/1e6-Math.floor(i/1e6)))+"' "+60*Math.floor(1e5*(60*(i/1e6-Math.floor(i/1e6))-Math.floor(60*(i/1e6-Math.floor(i/1e6)))))/1e5+'" '+a}},{key:"Error",get:function(){return I["default"]}},{key:"MapTypeId",get:function(){return N["default"].MapTypeId}},{key:"LocationType",get:function(){return N["default"].LocationType}},{key:"TravelMode",get:function(){return N["default"].TravelMode}},{key:"UnitSystem",get:function(){return N["default"].UnitSystem}},{key:"RadioType",get:function(){return N["default"].RadioType}},{key:"DistanceFormula",get:function(){return N["default"].DistanceFormula}}]),e}();w._={config:g["default"].extend({},P),cb:{}},w.setGeoIPSource({provider:"wikimedia",url:"https://bits.wikimedia.org/geoiplookup",callbackParam:null,globalVar:"Geo",schema:{ip:"IP",coords:{latitude:"lat",longitude:"lon"},address:{city:"city",state:"region",stateCode:"region",postalCode:"",countryCode:"country",country:"country",region:"region"}}}),t["default"]=w},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},n=Object.prototype.toString,r={noop:function(){},isString:function(e){return"string"==typeof e},isStringSet:function(e){return"string"==typeof e&&e.trim().length>0},isNumber:function(e){return"number"==typeof e},isObject:function(e){var t="undefined"==typeof e?"undefined":o(e);return Boolean(e)&&("object"===t||"function"===t)},isFunction:function(e){return"function"==typeof e},isArray:function(e){return Boolean(e)&&"[object Array]"===n.call(e)},isPlainObject:function(e){return Boolean(e)&&"object"===("undefined"==typeof e?"undefined":o(e))&&"[object Object]"===n.call(e)},isDate:function(e){return Boolean(e)&&"[object Date]"===n.call(e)},isElement:function(e){return e?e instanceof HTMLElement||"object"===("undefined"==typeof e?"undefined":o(e))&&1===e.nodeType:!1},isNode:function(e){return e?e instanceof Node||"object"===("undefined"==typeof e?"undefined":o(e))&&"number"==typeof e.nodeType:!1},isJQueryObject:function(e){return e?"jQuery"in window&&e instanceof window.jQuery&&Boolean(e[0]):!1},isPositionError:function(e){return Boolean(e)&&"[object PositionError]"===n.call(e)},isError:function(e){return e instanceof Error||r.isPositionError(e)},removeQuery:function(e){return e.replace(/\?.*$/,"")},removeProtocol:function(e){return e.replace(/^(.*:)?\/\//,"")},setProtocol:function(e,t){var o=void 0;return o=void 0===t||null===t?window.location.protocol:t?"https:":"http:",e=r.removeProtocol(e),o+"//"+e},trimDots:function(e){return e.replace(/^\.+?(.*?)\.+?$/g,"$1")},encodeURI:function(e){return encodeURIComponent(e).replace(/%20/g,"+")},decodeURI:function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))},toString:function(e){return null===e||void 0===e?"":e.toString&&r.isFunction(e.toString)?e.toString():String(e)},randomString:function(e){return e&&r.isNumber(e)||(e=1),e=-Math.abs(e),Math.random().toString(36).slice(e)},abbr:function(e,t){t=r.extend({upper:!0,dots:!0},t);var o=t.dots?".":"",n=e.match(/(\b\w)/gi).join(o)+o;return t.upper?n.toUpperCase():n},params:function a(e,t){if(!r.isPlainObject(e)||0===Object.keys(e).length)return"";t=r.extend({encode:!0,operator:"=",separator:"&",include:void 0,exclude:void 0},t);var a=[],o=r.isArray(t.include)?t.include:null,n=!o&&r.isArray(t.exclude)?t.exclude:null;return r.forIn(e,function(e,i){if((!o||o.indexOf(i)>=0)&&(!n||n.indexOf(i)<0)){var u=r.toString(e);u=t.encode?r.encodeURI(u):u;var l=t.encode?r.encodeURI(i):i;a.push(l+t.operator+u)}}),a.join(t.separator)},notateGlobalObj:function(e){e=r.trimDots(e);var t=e.split("."),o=window;return"window"!==t[0]&&"document"!==t[0]||t.shift(),t.forEach(function(e){o=o[e]}),o},forIn:function(e,t){var o=void 0;for(o in e)if(t(e[o],o,e)===!1)break},extend:function(e){if(!r.isObject(e))return{};for(var t=void 0,o=void 0,n=arguments.length,a=Array(n>1?n-1:0),i=1;n>i;i++)a[i-1]=arguments[i];return a.forEach(function(n){for(t in n)o=n[t],r.isArray(o)?e[t]=o.concat():r.isDate(o)?e[t]=new Date(o):r.isObject(o)?e[t]=r.extend({},o):e[t]=o}),e},clone:function(e,t){if(!e)return{};r.isArray(t)&&(t={keys:t}),t=r.extend({keys:null,own:!0},t);var o=void 0,n={};return r.forIn(e,function(a,i){o=t.keys?t.keys.indexOf(i)>=0:t.own&&e.hasOwnProperty(i)||!t.own,o&&(r.isObject(a)?n[i]=r.clone(a,t):n[i]=a)}),n},mapToSchema:function(e,t){var o={};return r.forIn(t,function(t,n){r.isPlainObject(t)?o[n]=r.mapToSchema(e,t):o[n]=e[t]}),o},safeJsonParse:function(e){var t=null;try{t=JSON.parse(e)}catch(o){}return t},time:function(e){var t=Date.now();return e?parseInt(t/1e3,10):t}};t["default"]=r},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),i=o(2),u=n(i),l=function(){function e(){r(this,e)}return a(e,null,[{key:"jsonp",value:function(e,t){function o(o,a,u){n&&(clearTimeout(n),n=null),(a||e.clean)&&r.parentNode&&r.parentNode.removeChild(r),d&&delete l[i],t(o,u)}var n=void 0;if(t=u["default"].isFunction(t)?t:u["default"].noop,u["default"].isString(e)&&(e={url:e}),!u["default"].isPlainObject(e))return t(new Error("No options or target URL is provided."));if(e=u["default"].extend({async:!0,defer:!1,timeout:0,params:{},clean:!0},e),u["default"].isString(e.url)===!1||""===e.url.trim())return t(new Error("No target URL is provided."));var r=document.createElement("script"),a=u["default"].isString(e.callbackParam)&&""!==e.callbackParam.trim(),i=void 0,l=void 0,d=u["default"].isString(e.rootName)&&"window"!==e.rootName&&"document"!==e.rootName&&""!==e.rootName.trim();a&&(i="_jsonp_"+u["default"].randomString(10),e.params[e.callbackParam]=d?e.rootName+"."+i:i);var s=u["default"].params(e.params)||"",c=e.url.indexOf("?")>=0?"&":"?",f=s?""+e.url+c+s:e.url;if(i){var m=function(e){o(null,!1,e)};l=d?u["default"].notateGlobalObj(e.rootName):window,l[i]=m}else r.readyState?r.onreadystatechange=function(){"loaded"!==r.readyState&&"complete"!==r.readyState||(r.onreadystatechange=null,o(null))}:r.onload=function(){o(null)};r.onerror=function(t){var n="Could not load source at "+u["default"].removeQuery(e.url);t&&(n+="\n"+(t.message||t)),o(new Error(n))},e.type&&(r.type=e.type),e.charset&&(r.charset=e.charset),e.async&&(r.async=!0),e.defer&&(r.defer=!0),e.crossorigin&&(r.crossorigin=e.crossorigin),r.src=f,document.getElementsByTagName("head")[0].appendChild(r),u["default"].isNumber(e.timeout)&&e.timeout>0&&(n=setTimeout(function(){r.src="",o(new Error("Operation timed out."),!0)},e.timeout))}},{key:"xhr",value:function t(o,n){var t=void 0,r=void 0;if(!("XMLHttpRequest"in window))throw new Error("XMLHttpRequest is not supported!");t=new XMLHttpRequest;var a=u["default"].isFunction(n);n=a?n:u["default"].noop,u["default"].isString(o)&&(o={url:o}),u["default"].isPlainObject(o)?o=u["default"].extend({method:"GET",data:void 0,async:!0,timeout:0,withCredentials:!1,mimeType:void 0,username:"",password:""},o):n(new Error("No options or target URL is provided.")),u["default"].isString(o.url)===!1&&n(new Error("No target URL is provided.")),o.username=String(o.username),o.password=String(o.password),o.method=o.method.toUpperCase(),"POST"!==o.method&&"PUT"!==o.method&&(o.data=void 0),a&&(t.onreadystatechange=function(){if(t.readyState===e.XHR_READY_STATE.DONE)if(200===t.status)n(null,t);else{var o=0===t.status?". Make sure you have permission if this is a cross-domain request.":"";r=new Error("The request returned status: "+t.status+o),n(r,t)}},u["default"].isNumber(o.timeout)&&o.timeout>0&&(t.timeout=o.timeout,t.ontimeout=function(){r=new Error("The request had timed out."),n(r,t)})),t.open(o.method,o.url,o.async,o.username,o.password),u["default"].isPlainObject(o.headers)&&Object.keys(o.headers).forEach(function(e){var n=o.headers[e];t.setRequestHeader(e,n)}),o.mimeType&&t.overrideMimeType(o.mimeType),t.send(o.data)}},{key:"get",value:function(t,o){return e.xhr(t,o)}},{key:"post",value:function(t,o){return t=u["default"].isString(t)?{url:t}:t||{},t.method="POST",e.xhr(t,o)}},{key:"put",value:function(t,o){return t=u["default"].isString(t)?{url:t}:t||{},t.method="PUT",e.xhr(t,o)}},{key:"delete",value:function(t,o){return t=u["default"].isString(t)?{url:t}:t||{},t.method="DELETE",e.xhr(t,o)}}]),e}();l.XHR_READY_STATE={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},t["default"]=l},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),a=n(r),i=o(3),u=n(i),l=o(5),d=n(l),s={toGoogleCoords:function(e){return{lat:e.lat||e.latitude,lng:e.lng||e.longitude}},fromGoogleCoords:function(e){return{latitude:e.latitude||e.lat,longitude:e.longitude||e.lng}},toPointList:function(e){return e=a["default"].isArray(e)?e:[e],e.map(function(e){return a["default"].isString(e)?e:s.toGoogleCoords(e)})},getGeocodeComps:function(e){return{route:e.route,locality:e.locality,administrative_area:e.administrativeArea,postal_code:e.postalCode,country:e.country,region:e.region}},buildGeocodeParams:function(e,t){var o=[],n=a["default"].encodeURI;if(t)e.placeId?o.push("place_id="+e.placeId):e.latitude&&e.longitude&&o.push("latlng="+e.latitude+","+e.longitude);else{e.address&&o.push("address="+n(e.address));var r=s.getGeocodeComps(e);r=a["default"].params(r,{operator:":",separator:"|"}),o.push("components="+r);var i=e.bounds;a["default"].isArray(i)&&4===i.length?o.push("bounds="+i[0]+","+i[1]+"|"+i[2]+","+i[3]):a["default"].isPlainObject(i)&&4===Object.keys(i).length&&o.push("bounds="+i.southwestLat+","+i.southwestLng+"|"+i.northeastLat+","+i.northeastLng)}return o.push("language="+e.language),o.push("key="+e.key),o.join("&")},formatGeocodeResults:function(e){if(!a["default"].isArray(e)||e.length<=0)return{location:null,address:null,formattedAddress:"",type:null,placeId:""};var t=void 0,o=void 0,n={},r=e[0],i=r.address_components;for(t=0;t<i.length;t+=1)o=i[t],o.types&&o.types.length>0&&(n[o.types[0]]=o.long_name,n[o.types[0]+"_s"]=o.short_name);var u="US"===n.country_s,l=r.geometry;return{coords:l&&l.location?{latitude:l.location.lat,longitude:l.location.lng}:null,address:{commonName:n.point_of_interest||n.premise||n.subpremise||n.colloquial_area||"",streetNumber:n.street_number||"",street:n.administrative_area_level_4||n.administrative_area_level_3||n.route||"",route:n.route||"",neighborhood:n.neighborhood||n.administrative_area_level_5||n.administrative_area_level_4||"",town:n.sublocality||n.administrative_area_level_2||"",city:n.locality||n.administrative_area_level_1||"",region:n.administrative_area_level_2||n.administrative_area_level_1||"",postalCode:n.postal_code||"",state:u?n.administrative_area_level_1||"":"",stateCode:u?n.administrative_area_level_1_s||"":"",country:n.country||"",countryCode:n.country_s||""},formattedAddress:r.formatted_address,type:l.location_type||"",placeId:r.place_id,timestamp:a["default"].time()}},geocode:function(e,t,o){u["default"].xhr(e,function(e,n){var r=a["default"].safeJsonParse(n.responseText);null===r?null===e&&(e=new d["default"](d["default"].Code.INVALID_RESPONSE)):"OK"!==r.status?(e=d["default"].fromGoogleResponse(r),r=null):r=t?r:s.formatGeocodeResults(r.results),o(e,r)})},formatDistanceResults:function(e){if(!a["default"].isPlainObject(e))return null;var t=[],o=e.originAddresses,n=e.destinationAddresses,r=e.rows,i=void 0;return o.forEach(function(e,o){n.forEach(function(n,u){i=r[o].elements[u],t.push({from:e,to:n,distance:i.distance,duration:i.duration,fare:i.fare,timestamp:a["default"].time()})})}),t}};t["default"]=s},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},i=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),u=o(2),l=n(u),d=function(){function e(){var t=arguments.length<=0||void 0===arguments[0]?e.Code.UNKNOWN_ERROR:arguments[0],o=arguments[1];r(this,e),o=o||String(t),Object.defineProperty(this,"name",{enumerable:!1,writable:!1,value:"GeoError"}),Object.defineProperty(this,"code",{enumerable:!1,writable:!0,value:t}),Object.defineProperty(this,"message",{enumerable:!1,writable:!0,value:o}),Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,this.constructor):Object.defineProperty(this,"stack",{enumerable:!1,writable:!1,value:new Error(o).stack})}return i(e,null,[{key:"create",value:function(t){if(t instanceof e)return t;if(l["default"].isPositionError(t)&&t.code)switch(t.code){case 1:return new e(e.Code.PERMISSION_DENIED,t.message);case 2:return new e(e.Code.POSITION_UNAVAILABLE,t.message);case 3:return new e(e.Code.TIMEOUT,t.message);default:return new e(e.Code.UNKNOWN_ERROR,t.message||"")}var o=void 0,n=void 0;return"string"==typeof t?o=n=t:"object"===("undefined"==typeof t?"undefined":a(t))&&(o=t.code||t.message,n=t.message||t.code),o&&e.isValidErrorCode(o)?new e(o,n):new e(e.Code.UNKNOWN_ERROR,n)}},{key:"fromGoogleResponse",value:function(t){var o=e.Code.UNKNOWN_ERROR;if(!t)return new e(o);var n=l["default"].isObject(t)?t.status:l["default"].isString(t)?t:null,r="";if(n)r=t.error_message||t.errorMessage,e.Code.hasOwnProperty(n)?o=n:"ZERO_RESULTS"===n?o=e.Code.NOT_FOUND:r=r?o+" ("+r+")":o;else if(t.error){var a=t.reason||t.error.reason;if(r=t.error.message,!a){var i=t.error.errors;a=l["default"].isArray(i)&&i.length>0?i[0].reason:null}if(a)switch(a){case"invalid":o=e.Code.INVALID_REQUEST;break;case"dailyLimitExceeded":o=e.Code.DAILY_LIMIT_EXCEEDED;break;case"keyInvalid":o=e.Code.GOOGLE_KEY_INVALID;break;case"userRateLimitExceeded":o=e.Code.USER_RATE_LIMIT_EXCEEDED;break;case"notFound":o=e.Code.NOT_FOUND;break;case"parseError":o=e.Code.PARSE_ERROR;break;default:o=e.Code.UNKNOWN_ERROR}}return new e(o,r)}},{key:"isGeoError",value:function(t){return t instanceof e}},{key:"isValidErrorCode",value:function(t){var o=void 0;for(o in e.Code)if(e.Code.hasOwnProperty(o)&&t===e.Code[o])return!0;return!1}}]),e}();d.prototype.toString=function(){var e=this.code!==this.message?" ("+this.message+")":"";return this.name+": "+this.code+e},"function"==typeof Object.setPrototypeOf?Object.setPrototypeOf(d.prototype,Error.prototype):d.prototype=Object.create(Error.prototype),d.Code={GEOLOCATION_NOT_SUPPORTED:"GEOLOCATION_NOT_SUPPORTED",INVALID_GEO_IP_SOURCE:"INVALID_GEO_IP_SOURCE",PERMISSION_DENIED:"PERMISSION_DENIED",POSITION_UNAVAILABLE:"POSITION_UNAVAILABLE",TIMEOUT:"TIMEOUT",INVALID_PARAMETERS:"INVALID_PARAMETERS",INVALID_RESPONSE:"INVALID_RESPONSE",INVALID_REQUEST:"INVALID_REQUEST",REQUEST_DENIED:"REQUEST_DENIED",GOOGLE_API_FAILED:"GOOGLE_API_FAILED",OVER_QUERY_LIMIT:"OVER_QUERY_LIMIT",USER_RATE_LIMIT_EXCEEDED:"USER_RATE_LIMIT_EXCEEDED",DAILY_LIMIT_EXCEEDED:"DAILY_LIMIT_EXCEEDED",GOOGLE_KEY_INVALID:"GOOGLE_KEY_INVALID",MAX_ELEMENTS_EXCEEDED:"MAX_ELEMENTS_EXCEEDED",MAX_DIMENSIONS_EXCEEDED:"MAX_DIMENSIONS_EXCEEDED",MAX_WAYPOINTS_EXCEEDED:"MAX_WAYPOINTS_EXCEEDED",PARSE_ERROR:"PARSE_ERROR",NOT_FOUND:"NOT_FOUND",INTERNAL_ERROR:"INTERNAL_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},t["default"]=d},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),i=o(2),u=n(i),l=function(){function e(t,o){var n=this,a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];r(this,e),this.isCleared=!1,this.cycle=0,this._timer=null,this.id=navigator.geolocation.watchPosition(function(e){n.cycle++,u["default"].isFunction(t)&&t(e)},function(e){n.cycle++,u["default"].isFunction(o)&&o(e),a.clearOnError&&n.clear()},a)}return a(e,[{key:"_clear",value:function(){navigator.geolocation.clearWatch(this.id),this.isCleared=!0,this._timer=null}},{key:"clear",value:function(e,t){var o=this,n=u["default"].isNumber(e)?e:0,r=u["default"].isFunction(t)?t:u["default"].isFunction(e)?e:null;if(this._timer&&(clearTimeout(this._timer),this._timer=null),!this.isCleared){if(0===n)return this._clear(),void(r&&r());this._timer=setTimeout(function(){o._clear(),r&&r()},n)}}}]),e}();t["default"]=l},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=Object.freeze({MapTypeId:{HYBRID:"hybrid",ROADMAP:"roadmap",SATELLITE:"satellite",TERRAIN:"terrain"},LocationType:{ROOFTOP:"ROOFTOP",RANGE_INTERPOLATED:"RANGE_INTERPOLATED",GEOMETRIC_CENTER:"GEOMETRIC_CENTER",APPROXIMATE:"APPROXIMATE"
},TravelMode:{DRIVING:"DRIVING",WALKING:"WALKING",BICYCLING:"BICYCLING",TRANSIT:"TRANSIT"},UnitSystem:{METRIC:0,IMPERIAL:1},RadioType:{LTE:"lte",GSM:"gsm",CDMA:"cdma",WCDMA:"wcdma"},DistanceFormula:{HAVERSINE:"haversine",PYTHAGOREAN:"pythagorean"}});t["default"]=o}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("geolocator",[],t):"object"==typeof exports?exports.geolocator=t():e.geolocator=t()}(this,function(){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="dist/",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}var r=o(1),a=n(r);e.exports=a["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e){return!v["default"].isString(e)&&!v["default"].isArray(e)&&!v["default"].isPlainObject(e)}function i(e,t){if(e)return R["default"].create(e);if(!t)return new R["default"](R["default"].Code.REQUEST_FAILED);var o=v["default"].safeJsonParse(t.responseText);return R["default"].fromResponse(o)||o}function u(e){if((!e||e.addressLookup||e.timezone||e.map||e.staticMap)&&!M._.config.google.key)throw new R["default"](R["default"].Code.GOOGLE_KEY_INVALID,"A Google API key is required but it's not set or valid.")}function l(e,t){return v["default"].isObject(e)?e.center=t.coords:e={element:e,center:t.coords},t.formattedAddress&&(e.title=t.formattedAddress),!e.zoom&&t.coords&&v["default"].isNumber(t.coords.accuracy)&&t.coords.accuracy<1500&&(e.zoom=15),e}function d(e){var t=e.element,o=t._geolocatorMapData,n=o&&o.instance||null,r=o&&o.marker||null,a=o&&o.infoWindow||null,i=new google.maps.LatLng(e.center.latitude,e.center.longitude),u={mapTypeId:e.mapTypeId,center:i,zoom:e.zoom,styles:e.styles||null};return n?n.setOptions(u):n=new google.maps.Map(e.element,u),a&&(a=null),r&&r instanceof google.maps.Marker&&(google.maps.event.clearInstanceListeners(r),r.setMap(null),r=null),e.marker&&(r=new google.maps.Marker({position:u.center,map:n}),e.title&&(a=new google.maps.InfoWindow,a.setContent(e.title),google.maps.event.addListener(r,"click",function(){a.open(n,r)}))),o={element:t,instance:n,marker:r,infoWindow:a,options:u},t._geolocatorMapData=o,o}function s(e,t){if(e&&e.address){var o=void 0,n=e.address;if(v["default"].isString(n.countryCode)&&2===n.countryCode.length?o=n.countryCode:v["default"].isString(n.country)&&2===n.country.length&&(o=n.country),o&&(e.flag=P["default"].URL.FLAG+o.toLowerCase()+".svg",t.staticMap)){var r=v["default"].isPlainObject(t.staticMap)?v["default"].clone(t.staticMap):{};r.center=e.coords,e.staticMap=M.getStaticMap(r)}}}function c(e,t){return function(o,n){return o?t(R["default"].create(o),null):(s(n,e),e.map?(e.map=l(e.map,n),void M.createMap(e.map,function(e,o){return e?t(e,null):(n.map=o,t(null,n))})):t(null,n))}}function f(e,t,o){u(),h["default"].geocode(e,M._.config,t,c(t,o))}function m(e,t,o){function n(e){M.getTimeZone(r.coords,function(t,o){return t?e(t,null):(delete o.timestamp,r.timezone=o,r.timestamp=v["default"].time(),void e(null,r))})}var r=v["default"].clone(e,{own:!1});return t.addressLookup||t.timezone?void(t.addressLookup?M.reverseGeocode(r.coords,function(e,a){return e?o(e,null):(r=v["default"].extend({},a,r),r.address=a.address,r.timestamp=v["default"].time(),void(t.timezone?n(o):o(e,r)))}):t.timezone?n(o):o(null,r)):o(null,r)}function p(e,t,o){function n(){r?t(r):o(new R["default"](R["default"].Code.POSITION_UNAVAILABLE))}var r=void 0,a=void 0,i=v["default"].isFunction(e.onProgress)?e.onProgress:v["default"].noop;a=M.watch(e,function(t,u){return t?a.clear(function(){o(t)}):(r=u,void(a.cycle>1&&r.coords.accuracy<=e.desiredAccuracy?a.clear(n):i(r)))}),a.clear(e.maximumWait+100,n)}Object.defineProperty(t,"__esModule",{value:!0});var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),E=o(2),v=n(E),_=o(3),I=n(_),O=o(4),h=n(O),b=o(6),R=n(b),A=o(7),T=n(A),S=o(5),P=n(S),N=6371,w=3959,L={language:"en",https:!0,google:{version:"3",key:"",styles:null}},M=function(){function e(){r(this,e)}return y(e,null,[{key:"config",value:function(t){return t&&(e._.config=v["default"].extend(L,t)),e._.config}},{key:"getStaticMap",value:function(t,o){if(!v["default"].isPlainObject(t)||!t.center)throw new R["default"](R["default"].Code.INVALID_PARAMETERS,"A center address or coordinates are required.");if(v["default"].isString(t.center))return e.geocode(t.center,function(n,r){n&&o(n),t.center=r.coords,o(null,e.getStaticMap(t))});var n=e._.config,r=v["default"].extend({mapTypeId:P["default"].MapTypeId.ROADMAP,size:{width:600,height:300},scale:1,zoom:9,marker:"red",format:P["default"].ImageFormat.PNG,language:n.language||"en",region:null},t),a=v["default"].isPlainObject(r.center)?r.center.latitude+","+r.center.longitude:String(r.center),i=v["default"].isPlainObject(r.size)?r.size.width+"x"+r.size.height:String(r.size),u=P["default"].URL.GOOGLE_SATATIC_MAP+("?center="+a+"&maptype="+r.mapTypeId)+("&size="+i+"&scale="+r.scale+"&zoom="+r.zoom)+("&format="+r.format+"&language="+r.language);if(r.marker){var l=v["default"].isString(r.marker)?r.marker:"red";u+="&markers="+encodeURIComponent("color:"+l+"|"+a)}r.region&&(u+="&region="+r.region),n.google.key&&(u+="&key="+n.google.key);var d=v["default"].isFilledArray(r.styles)?r.styles:v["default"].isFilledArray(n.google.styles)?n.google.styles:null;return d&&(u+="&"+h["default"].mapStylesToParams(d)),v["default"].isFunction(o)?o(null,u):u}},{key:"createMap",value:function(t,o){v["default"].isPlainObject(t)||(t={element:t}),t=v["default"].extend({element:null,mapTypeId:P["default"].MapTypeId.ROADMAP,title:void 0,marker:!0,zoom:9},t);var n=t.element,r=void 0;if(v["default"].isString(n)?r=document.getElementById(n):v["default"].isJQueryObject(n)?r=n[0]:e.isGoogleLoaded()&&n instanceof google.maps.Map&&(r=n.getDiv()),!v["default"].isElement(r)&&!v["default"].isNode(r))throw new R["default"](R["default"].Code.INVALID_PARAMETERS,"A valid DOM element or element ID is required to create a map.");if(!v["default"].isPlainObject(t.center)||!v["default"].isNumber(t.center.latitude)||!v["default"].isNumber(t.center.longitude))throw new R["default"](R["default"].Code.INVALID_PARAMETERS,"Center coordinates are required to create a map.");t.element=r;var a=e._.config,i=a.google.key;t.styles=v["default"].isFilledArray(t.styles)?t.styles:v["default"].isFilledArray(a.google.styles)?a.google.styles:null,e.ensureGoogleLoaded(i,function(e){if(e)throw new R["default"](R["default"].Code.GOOGLE_API_FAILED,String(e.message||e));var n=d(t);o(null,n)})}},{key:"locate",value:function(t,o){function n(o){return t.fallbackToIP?e.locateByIP(t,function(e,t){return e?i(e,null):i(null,t)}):void i(o,null)}function r(e){m(e,t,i)}function a(e){e=R["default"].create(e),n(e)}t=v["default"].extend({enableHighAccuracy:!0,timeout:5e3,maximumWait:1e4,maximumAge:0,desiredAccuracy:30,onProgress:v["default"].noop,fallbackToIP:!1,addressLookup:!1,timezone:!1,map:void 0,staticMap:!1},t),t.enableHighAccuracy&&(t.maximumAge=0),t.timeout<1e3&&(t.timeout=1e3),t.maximumWait<t.timeout&&(t.maximumWait=t.timeout),u(t);var i=c(t,o);if(e.isGeolocationSupported())t.enableHighAccuracy?p(t,r,a):navigator.geolocation.getCurrentPosition(r,a,t);else{var l=new R["default"](R["default"].Code.GEOLOCATION_NOT_SUPPORTED);n(l)}}},{key:"locateByMobile",value:function(t,o){if(!v["default"].isPlainObject(t))throw new R["default"](R["default"].Code.INVALID_PARAMETERS);var n=c(t,o);t=v["default"].extend({homeMobileCountryCode:void 0,homeMobileNetworkCode:void 0,radioType:void 0,carrier:void 0,fallbackToIP:!1,cellTowers:void 0,wifiAccessPoints:void 0,addressLookup:!1,timezone:!1,map:void 0,raw:!1},t),t.considerIp=t.fallbackToIP,u();var r=e._.config,a=r.google.key||"",l=v["default"].setProtocol(P["default"].URL.GOOGLE_GEOLOCATION,r.https),d={url:l+"?key="+a,headers:{"Content-Type":"application/json"},data:JSON.stringify(t)};I["default"].post(d,function(e,o){var r=i(e,o);return R["default"].isGeoError(r)?n(r,null):(r=t.raw?r:{coords:{latitude:r.location.lat,longitude:r.location.lng,accuracy:r.accuracy},timestamp:v["default"].time()},void m(r,t,n))})}},{key:"locateByIP",value:function(t,o){var n=e._.geoIpSource;if(!v["default"].isPlainObject(n))throw new R["default"](R["default"].Code.INVALID_GEO_IP_SOURCE,"Please set a valid Geo-IP Source via geolocator.setGeoIPSource(options).");u(t||{});var r={url:n.url,async:!0,clean:!0};if(n.callbackParam)r.callbackParam=n.callbackParam,r.rootName="geolocator._.cb";else if(!n.globalVar)throw new R["default"](R["default"].Code.INVALID_GEO_IP_SOURCE,"Either callbackParam or globalVar should be set for Geo-IP source.");return I["default"].jsonp(r,function(e,r){if(e)return o(R["default"].create(e),null);if(n.globalVar&&(window[n.globalVar]?(r=v["default"].clone(window[n.globalVar]),delete window[n.globalVar]):r=null),!r)return e=new R["default"](R["default"].Code.INVALID_RESPONSE),o(e,null);v["default"].isPlainObject(n.schema)&&(r=v["default"].mapToSchema(r,n.schema)),r.provider=n.provider||"unknown",s(r,t),r.coords&&(r.coords.latitude=Number(r.coords.latitude),r.coords.longitude=Number(r.coords.longitude));var a=c(t,o);m(r,t,a)})}},{key:"setGeoIPSource",value:function(t){if(!v["default"].isPlainObject(t))throw new R["default"](R["default"].Code.INVALID_PARAMETERS,"Geo-IP source options is invalid.");if(!v["default"].isStringSet(t.url))throw new R["default"](R["default"].Code.INVALID_PARAMETERS,"Geo-IP source should have a valid URI.");e._.geoIpSource=Object.freeze(t)}},{key:"watch",value:function(t,o){function n(t){var n=v["default"].clone(t,{own:!1});if(i){var r=e.calcDistance({from:t.coords,to:i,formula:e.DistanceFormula.HAVERSINE,unitSystem:i.unitSystem});n.targetReached=r<=i.radius,a&&n.targetReached&&a.clear(function(){return o(null,n)})}return o(null,n)}function r(e){o(R["default"].create(e),null)}if(!e.isGeolocationSupported())return o(new R["default"](R["default"].Code.GEOLOCATION_NOT_SUPPORTED),null),{};var a=void 0,i=void 0;return t=v["default"].extend({enableHighAccuracy:!0,timeout:6e3,maximumAge:0,clearOnError:!1},t),v["default"].isPlainObject(t.target)&&(i=v["default"].extend({radius:.5,unitSystem:e.UnitSystem.METRIC},t.target)),new T["default"](n,r,t)}},{key:"geocode",value:function(e,t){f(!1,e,t)}},{key:"reverseGeocode",value:function(e,t){f(!0,e,t)}},{key:"addressLookup",value:function(t,o){e.reverseGeocode(t,o)}},{key:"getTimeZone",value:function(t,o){if(!v["default"].isPlainObject(t)||!v["default"].isNumber(t.latitude)||!v["default"].isNumber(t.longitude))throw new R["default"](R["default"].Code.INVALID_PARAMETERS);u();var n=e._.config;t=v["default"].extend({key:n.google.key||"",language:n.language||"en",timestamp:v["default"].time(!0),raw:!1},t);var r=v["default"].setProtocol(P["default"].URL.GOOGLE_TIMEZONE,n.https),a={url:r+"?location="+t.latitude+","+t.longitude+"&timestamp="+t.timestamp+"&language="+t.language+"&key="+t.key};I["default"].xhr(a,function(e,n){var r=i(e,n);return R["default"].isGeoError(r)?o(r,null):(r=t.raw?r:{id:r.timeZoneId,name:r.timeZoneName,abbr:v["default"].abbr(r.timeZoneName,{dots:!1}),dstOffset:r.dstOffset,rawOffset:r.rawOffset,timestamp:t.timestamp},void o(e,r))})}},{key:"getDistanceMatrix",value:function(t,o){u();var n=e._.config.google.key;e.ensureGoogleLoaded(n,function(e){if(e)throw new R["default"](R["default"].Code.GOOGLE_API_FAILED,String(e.message||e));var n=t.origins||t.origin||t.from,r=t.destinations||t.destination||t.to;if(!v["default"].isPlainObject(t)||a(n)||a(r))throw new R["default"](R["default"].Code.INVALID_PARAMETERS);t.origins=h["default"].toPointList(n),t.destinations=h["default"].toPointList(r),t=v["default"].extend({travelMode:google.maps.TravelMode.DRIVING,avoidFerries:void 0,avoidHighways:void 0,avoidTolls:void 0,unitSystem:google.maps.UnitSystem.METRIC},t);var i=new google.maps.DistanceMatrixService;i.getDistanceMatrix(t,function(e,n){var r=null;n!==google.maps.DistanceMatrixStatus.OK?(r=R["default"].fromResponse(n)||R["default"].fromResponse(e),e=null):e=t.raw?e:h["default"].formatDistanceResults(e),o(r,e)})})}},{key:"calcDistance",value:function(t){t=v["default"].extend({formula:e.DistanceFormula.HAVERSINE,unitSystem:e.UnitSystem.METRIC},t);var o=t.from,n=t.to,r=t.unitSystem===e.UnitSystem.METRIC?N:w;if(t.formula===e.DistanceFormula.HAVERSINE){var a=e.degToRad(n.latitude-o.latitude),i=e.degToRad(n.longitude-o.longitude),u=Math.sin(a/2)*Math.sin(a/2)+Math.cos(e.degToRad(o.latitude))*Math.cos(e.degToRad(n.longitude))*Math.sin(i/2)*Math.sin(i/2),l=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u));return r*l}var d=e.degToRad(o.latitude),s=e.degToRad(n.latitude),c=e.degToRad(o.longitude),f=e.degToRad(n.longitude),m=(f-c)*Math.cos((d+s)/2),p=s-d;return Math.sqrt(m*m+p*p)*r}},{key:"getIP",value:function(t){var o=e._.config,n={url:v["default"].setProtocol(P["default"].URL.IP,o.https),async:!0,clean:!0,params:{format:"jsonp"},callbackParam:"callback",rootName:"geolocator._.cb"};return I["default"].jsonp(n,function(e,o){return e?t(R["default"].create(e),null):o?("object"===("undefined"==typeof o?"undefined":g(o))&&(o.timestamp=v["default"].time()),void t(null,o)):(e=new R["default"](R["default"].Code.INVALID_RESPONSE),t(e,null))})}},{key:"ensureGoogleLoaded",value:function(t,o){var n=void 0;if(v["default"].isFunction(t)?o=t:n=t,!e.isGoogleLoaded()){var r={url:P["default"].URL.GOOGLE_MAPS_API,async:!0,callbackParam:"callback",params:{key:n||""},rootName:"geolocator._.cb"};return I["default"].jsonp(r,o)}o()}},{key:"isGoogleLoaded",value:function(){return"google"in window&&google.maps}},{key:"isPositionError",value:function(e){return v["default"].isPositionError(e)}},{key:"isGeoError",value:function(e){return R["default"].isGeoError(e)}},{key:"isGeolocationSupported",value:function(){return navigator&&"geolocation"in navigator}},{key:"kmToMi",value:function(e){return.621371*e}},{key:"miToKm",value:function(e){return e/.621371}},{key:"degToRad",value:function(e){return e*(Math.PI/180)}},{key:"radToDeg",value:function(e){return e*(180/Math.PI)}},{key:"decToDegMinSec",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=e<0?-1:1,n=e<0?"S":"N",r=e<0?"W":"E",a=t?r:n,i=Math.abs(Math.round(1e6*e));return Math.floor(i/1e6)*o+"° "+Math.floor(60*(i/1e6-Math.floor(i/1e6)))+"' "+60*Math.floor(1e5*(60*(i/1e6-Math.floor(i/1e6))-Math.floor(60*(i/1e6-Math.floor(i/1e6)))))/1e5+'" '+a}},{key:"Error",get:function(){return R["default"]}},{key:"MapTypeId",get:function(){return P["default"].MapTypeId}},{key:"LocationType",get:function(){return P["default"].LocationType}},{key:"TravelMode",get:function(){return P["default"].TravelMode}},{key:"UnitSystem",get:function(){return P["default"].UnitSystem}},{key:"RadioType",get:function(){return P["default"].RadioType}},{key:"DistanceFormula",get:function(){return P["default"].DistanceFormula}},{key:"ImageFormat",get:function(){return P["default"].ImageFormat}}]),e}();M._={config:v["default"].extend({},L),cb:{}},M.setGeoIPSource({provider:"freegeoip",url:"https://freegeoip.net/json",callbackParam:"callback",schema:{ip:"ip",coords:{latitude:"latitude",longitude:"longitude"},address:{city:"city",state:"region_name",stateCode:"region_code",postalCode:"zip_code",countryCode:"country_code",country:"country_name",region:"region_name"},timezone:{id:"time_zone"}}}),t["default"]=M},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=Object.prototype.toString,r={noop:function(){},isString:function(e){return"string"==typeof e},isStringSet:function(e){return"string"==typeof e&&e.trim().length>0},isNumber:function(e){return"number"==typeof e},isObject:function(e){var t="undefined"==typeof e?"undefined":o(e);return Boolean(e)&&("object"===t||"function"===t)},isFunction:function(e){return"function"==typeof e},isArray:function(e){return Boolean(e)&&"[object Array]"===n.call(e)},isFilledArray:function(e){return r.isArray(e)&&e.length>0},isPlainObject:function(e){return Boolean(e)&&"object"===("undefined"==typeof e?"undefined":o(e))&&"[object Object]"===n.call(e)},isDate:function(e){return Boolean(e)&&"[object Date]"===n.call(e)},isElement:function(e){return!!e&&(e instanceof HTMLElement||"object"===("undefined"==typeof e?"undefined":o(e))&&1===e.nodeType)},isNode:function(e){return!!e&&(e instanceof Node||"object"===("undefined"==typeof e?"undefined":o(e))&&"number"==typeof e.nodeType)},isJQueryObject:function(e){return!!e&&("jQuery"in window&&e instanceof window.jQuery&&Boolean(e[0]))},isPositionError:function(e){return Boolean(e)&&"[object PositionError]"===n.call(e)},isError:function(e){return e instanceof Error||r.isPositionError(e)},removeQuery:function(e){return e.replace(/\?.*$/,"")},removeProtocol:function(e){return e.replace(/^(.*:)?\/\//,"")},setProtocol:function(e,t){var o=void 0;return o=void 0===t||null===t?window.location.protocol:t?"https:":"http:",e=r.removeProtocol(e),o+"//"+e},trimDots:function(e){return e.replace(/^\.+?(.*?)\.+?$/g,"$1")},encodeURI:function(e){return encodeURIComponent(e).replace(/%20/g,"+")},decodeURI:function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))},toString:function(e){return null===e||void 0===e?"":e.toString&&r.isFunction(e.toString)?e.toString():String(e)},randomString:function(e){return e&&r.isNumber(e)||(e=1),e=-Math.abs(e),Math.random().toString(36).slice(e)},abbr:function(e,t){t=r.extend({upper:!0,dots:!0},t);var o=t.dots?".":"",n=e.match(/(\b\w)/gi).join(o)+o;return t.upper?n.toUpperCase():n},params:function a(e,t){if(!r.isPlainObject(e)||0===Object.keys(e).length)return"";t=r.extend({encode:!0,operator:"=",separator:"&",include:void 0,exclude:void 0},t);var a=[],o=r.isArray(t.include)?t.include:null,n=!o&&r.isArray(t.exclude)?t.exclude:null;return r.forIn(e,function(e,i){if((!o||o.indexOf(i)>=0)&&(!n||n.indexOf(i)<0)){var u=r.toString(e);u=t.encode?r.encodeURI(u):u;var l=t.encode?r.encodeURI(i):i;a.push(l+t.operator+u)}}),a.join(t.separator)},notateGlobalObj:function(e){e=r.trimDots(e);var t=e.split("."),o=window;return"window"!==t[0]&&"document"!==t[0]||t.shift(),t.forEach(function(e){o=o[e]}),o},forIn:function(e,t){var o=void 0;for(o in e)if(t(e[o],o,e)===!1)break},extend:function(e){if(!r.isObject(e))return{};for(var t=void 0,o=void 0,n=arguments.length,a=Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return a.forEach(function(n){for(t in n)o=n[t],r.isArray(o)?e[t]=o.concat():r.isDate(o)?e[t]=new Date(o):r.isFunction(o)?e[t]=o:r.isObject(o)?e[t]=r.extend({},o):e[t]=o}),e},clone:function(e,t){if(!e)return{};r.isArray(t)&&(t={keys:t}),t=r.extend({keys:null,own:!0},t);var o=void 0,n={};return r.forIn(e,function(a,i){o=t.keys?t.keys.indexOf(i)>=0:t.own&&e.hasOwnProperty(i)||!t.own,o&&(r.isObject(a)?n[i]=r.clone(a,t):n[i]=a)}),n},mapToSchema:function(e,t){var o={};return r.forIn(t,function(t,n){r.isPlainObject(t)?o[n]=r.mapToSchema(e,t):o[n]=e[t]}),o},safeJsonParse:function(e){var t=null;try{t=JSON.parse(e)}catch(o){}return t},time:function(e){var t=Date.now();return e?parseInt(t/1e3,10):t}};t["default"]=r},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t,o){return t=l["default"].isString(t)?{url:t}:t||{},t.method=e,d.xhr(t,o)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),u=o(2),l=n(u),d=function(){function e(){r(this,e)}return i(e,null,[{key:"jsonp",value:function(e,t){function o(o,a,l){n&&(clearTimeout(n),n=null),(a||e.clean)&&r.parentNode&&r.parentNode.removeChild(r),d&&delete u[i],t(o,l)}var n=void 0;if(t=l["default"].isFunction(t)?t:l["default"].noop,l["default"].isString(e)&&(e={url:e}),!l["default"].isPlainObject(e))return t(new Error("No options or target URL is provided."));if(e=l["default"].extend({async:!0,defer:!1,timeout:0,params:{},clean:!0},e),l["default"].isString(e.url)===!1||""===e.url.trim())return t(new Error("No target URL is provided."));var r=document.createElement("script"),a=l["default"].isString(e.callbackParam)&&""!==e.callbackParam.trim(),i=void 0,u=void 0,d=l["default"].isString(e.rootName)&&"window"!==e.rootName&&"document"!==e.rootName&&""!==e.rootName.trim();a&&(i="_jsonp_"+l["default"].randomString(10),e.params[e.callbackParam]=d?e.rootName+"."+i:i);var s=l["default"].params(e.params)||"",c=e.url.indexOf("?")>=0?"&":"?",f=s?""+e.url+c+s:e.url;if(i){var m=function(e){o(null,!1,e)};u=d?l["default"].notateGlobalObj(e.rootName):window,u[i]=m}else r.readyState?r.onreadystatechange=function(){"loaded"!==r.readyState&&"complete"!==r.readyState||(r.onreadystatechange=null,o(null))}:r.onload=function(){o(null)};r.onerror=function(t){var n="Could not load source at "+l["default"].removeQuery(e.url);t&&(n+="\n"+(t.message||t)),o(new Error(n))},e.type&&(r.type=e.type),e.charset&&(r.charset=e.charset),e.async&&(r.async=!0),e.defer&&(r.defer=!0),e.crossorigin&&(r.crossorigin=e.crossorigin),r.src=f,document.getElementsByTagName("head")[0].appendChild(r),l["default"].isNumber(e.timeout)&&e.timeout>0&&(n=setTimeout(function(){r.src="",o(new Error("Operation timed out."),!0)},e.timeout))}},{key:"xhr",value:function t(o,n){var t=void 0,r=void 0;if(!("XMLHttpRequest"in window))throw new Error("XMLHttpRequest is not supported!");t=new XMLHttpRequest;var a=l["default"].isFunction(n);n=a?n:l["default"].noop,l["default"].isString(o)&&(o={url:o}),l["default"].isPlainObject(o)?o=l["default"].extend({method:"GET",data:void 0,async:!0,timeout:0,withCredentials:!1,mimeType:void 0,username:"",password:""},o):n(new Error("No options or target URL is provided.")),l["default"].isString(o.url)===!1&&n(new Error("No target URL is provided.")),o.username=String(o.username),o.password=String(o.password),o.method=o.method.toUpperCase(),"POST"!==o.method&&"PUT"!==o.method&&(o.data=void 0),a&&(t.onreadystatechange=function(){if(t.readyState===e.XHR_READY_STATE.DONE)if(200===t.status)n(null,t);else{var o=0===t.status?". Make sure you have permission if this is a cross-domain request.":"";r=new Error("The request returned status: "+t.status+o),n(r,t)}},l["default"].isNumber(o.timeout)&&o.timeout>0&&(t.timeout=o.timeout,t.ontimeout=function(){r=new Error("The request had timed out."),n(r,t)})),t.open(o.method,o.url,o.async,o.username,o.password),l["default"].isPlainObject(o.headers)&&Object.keys(o.headers).forEach(function(e){var n=o.headers[e];t.setRequestHeader(e,n)}),o.mimeType&&t.overrideMimeType(o.mimeType),t.send(o.data)}},{key:"get",value:function(t,o){return e.xhr(t,o)}},{key:"post",value:function(e,t){return a("POST",e,t)}},{key:"put",value:function(e,t){return a("PUT",e,t)}},{key:"delete",value:function(e,t){return a("DELETE",e,t)}}]),e}();d.XHR_READY_STATE={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},t["default"]=d},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),a=n(r),i=o(3),u=n(i),l=o(5),d=n(l),s=o(6),c=n(s),f={toGoogleCoords:function(e){return{lat:e.lat||e.latitude,lng:e.lng||e.longitude}},fromGoogleCoords:function(e){return{latitude:e.latitude||e.lat,longitude:e.longitude||e.lng}},toPointList:function(e){return e=a["default"].isArray(e)?e:[e],e.map(function(e){return a["default"].isString(e)?e:f.toGoogleCoords(e)})},getGeocodeComps:function(e){return{route:e.route,locality:e.locality,administrative_area:e.administrativeArea,postal_code:e.postalCode,country:e.country,region:e.region}},buildGeocodeParams:function(e,t){var o=[],n=a["default"].encodeURI;if(t)e.placeId?o.push("place_id="+e.placeId):e.latitude&&e.longitude&&o.push("latlng="+e.latitude+","+e.longitude);else{e.address&&o.push("address="+n(e.address));var r=f.getGeocodeComps(e);r=a["default"].params(r,{operator:":",separator:"|"}),o.push("components="+r);var i=e.bounds;a["default"].isArray(i)&&4===i.length?o.push("bounds="+i[0]+","+i[1]+"|"+i[2]+","+i[3]):a["default"].isPlainObject(i)&&4===Object.keys(i).length&&o.push("bounds="+i.southwestLat+","+i.southwestLng+"|"+i.northeastLat+","+i.northeastLng)}return o.push("language="+e.language),o.push("key="+e.key),o.join("&")},formatGeocodeResults:function(e){if(!a["default"].isArray(e)||e.length<=0)return{location:null,address:null,formattedAddress:"",type:null,placeId:""};var t=void 0,o=void 0,n={},r=e[0],i=r.address_components;for(t=0;t<i.length;t+=1)o=i[t],o.types&&o.types.length>0&&(n[o.types[0]]=o.long_name,n[o.types[0]+"_s"]=o.short_name);var u=r.geometry;return{coords:u&&u.location?{latitude:u.location.lat,longitude:u.location.lng}:null,address:{commonName:n.point_of_interest||n.premise||n.subpremise||n.colloquial_area||"",streetNumber:n.street_number||"",street:n.administrative_area_level_4||n.administrative_area_level_3||n.route||"",route:n.route||"",neighborhood:n.neighborhood||n.administrative_area_level_5||n.administrative_area_level_4||"",town:n.sublocality||n.administrative_area_level_2||"",city:n.locality||n.administrative_area_level_1||"",region:n.administrative_area_level_2||n.administrative_area_level_1||"",postalCode:n.postal_code||"",state:n.administrative_area_level_1||"",stateCode:n.administrative_area_level_1_s||"",country:n.country||"",countryCode:n.country_s||""},formattedAddress:r.formatted_address,type:u.location_type||"",placeId:r.place_id,timestamp:a["default"].time()}},geocode:function(e,t,o,n){var r={};if(a["default"].isString(o)){r={};var i=e?"placeId":"address";r[i]=o}else{if(!a["default"].isPlainObject(o))throw new c["default"](c["default"].Code.INVALID_PARAMETERS);r=o}if(e){var l=a["default"].isNumber(o.latitude)&&a["default"].isNumber(o.longitude);if(!a["default"].isString(o.placeId)&&!l)throw new c["default"](c["default"].Code.INVALID_PARAMETERS)}r=a["default"].extend({key:t.google.key||"",language:t.language||"en",raw:!1},r);var s=f.buildGeocodeParams(r,e),m=a["default"].setProtocol(d["default"].URL.GOOGLE_GEOCODE,t.https),p={url:m+"?"+s};u["default"].xhr(p,function(e,t){if(e)return n(c["default"].create(e),null);var r=a["default"].safeJsonParse(t.responseText),i=c["default"].fromResponse(r);return i?n(i,null):(r=o.raw?r:f.formatGeocodeResults(r.results),void n(null,r))})},formatDistanceResults:function(e){if(!a["default"].isPlainObject(e))return null;var t=[],o=e.originAddresses,n=e.destinationAddresses,r=e.rows,i=void 0;return o.forEach(function(e,o){n.forEach(function(n,u){i=r[o].elements[u],t.push({from:e,to:n,distance:i.distance,duration:i.duration,fare:i.fare,timestamp:a["default"].time()})})}),t},mapStylesToParams:function(e){if(!e)return"";a["default"].isArray(e)||(e=[e]);var t=[];return e.forEach(function(e,o,n){var r="";e.stylers&&e.stylers.length>0&&(r+=(e.hasOwnProperty("featureType")?"feature:"+e.featureType:"feature:all")+"|",r+=(e.hasOwnProperty("elementType")?"element:"+e.elementType:"element:all")+"|",e.stylers.forEach(function(e,t,o){var n=Object.keys(e)[0],a=e[n].toString().replace("#","0x");r+=n+":"+a+"|"})),t.push("style="+encodeURIComponent(r))}),t.join("&")}};t["default"]=f},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="//maps.googleapis.com/maps/api",n=Object.freeze({URL:{IP:"//api.ipify.org",FLAG:"//cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/flags/4x3/",GOOGLE_MAPS_API:o+"/js",GOOGLE_SATATIC_MAP:o+"/staticmap",GOOGLE_GEOLOCATION:"//www.googleapis.com/geolocation/v1/geolocate",GOOGLE_GEOCODE:"//maps.googleapis.com/maps/api/geocode/json",GOOGLE_TIMEZONE:"//maps.googleapis.com/maps/api/timezone/json",GOOGLE_DISTANCE_MATRIX:"//maps.googleapis.com/maps/api/distancematrix/json"},MapTypeId:{HYBRID:"hybrid",ROADMAP:"roadmap",SATELLITE:"satellite",TERRAIN:"terrain"},LocationType:{ROOFTOP:"ROOFTOP",RANGE_INTERPOLATED:"RANGE_INTERPOLATED",GEOMETRIC_CENTER:"GEOMETRIC_CENTER",APPROXIMATE:"APPROXIMATE"},TravelMode:{DRIVING:"DRIVING",WALKING:"WALKING",BICYCLING:"BICYCLING",TRANSIT:"TRANSIT"},UnitSystem:{METRIC:0,IMPERIAL:1},RadioType:{LTE:"lte",GSM:"gsm",CDMA:"cdma",WCDMA:"wcdma"},DistanceFormula:{HAVERSINE:"haversine",PYTHAGOREAN:"pythagorean"},ImageFormat:{PNG:"png",PNG_8:"png8",PNG_32:"png32",GIF:"gif",JPG:"jpg",JPG_BASELINE:"jpg-baseline"}});t["default"]=n},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e){return e?"OK"===e?null:"ZERO_RESULTS"===e?c.Code.NOT_FOUND:c.Code.hasOwnProperty(e)?e:null:c.Code.INVALID_RESPONSE}function i(e){switch(e){case"invalid":return c.Code.INVALID_REQUEST;case"dailyLimitExceeded":return c.Code.DAILY_LIMIT_EXCEEDED;case"keyInvalid":return c.Code.GOOGLE_KEY_INVALID;case"userRateLimitExceeded":return c.Code.USER_RATE_LIMIT_EXCEEDED;case"notFound":return c.Code.NOT_FOUND;case"parseError":return c.Code.PARSE_ERROR;default:return null}}Object.defineProperty(t,"__esModule",{value:!0});var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),d=o(2),s=n(d),c=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.Code.UNKNOWN_ERROR,o=arguments[1];r(this,e),o=o||String(t),Object.defineProperty(this,"name",{enumerable:!1,writable:!1,value:"GeoError"}),Object.defineProperty(this,"code",{enumerable:!1,writable:!0,value:t}),Object.defineProperty(this,"message",{enumerable:!1,writable:!0,value:o}),Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,this.constructor):Object.defineProperty(this,"stack",{enumerable:!1,writable:!1,value:new Error(o).stack})}return l(e,null,[{key:"create",value:function(t){if(t instanceof e)return t;var o=void 0,n=void 0;if(s["default"].isPositionError(t)&&t.code){switch(t.code){case 1:o=e.Code.PERMISSION_DENIED;break;case 2:o=e.Code.POSITION_UNAVAILABLE;break;case 3:o=e.Code.TIMEOUT;break;default:o=e.Code.UNKNOWN_ERROR}return new e(o,t.message||"")}return"string"==typeof t?o=n=t:"object"===("undefined"==typeof t?"undefined":u(t))&&(o=t.code||t.message,n=t.message||t.code),o&&e.isValidErrorCode(o)?new e(o,n):new e(e.Code.UNKNOWN_ERROR,n)}},{key:"fromResponse",value:function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!t)return new e(e.Code.INVALID_RESPONSE);var n=void 0;if(s["default"].isString(t)&&(n=a(t)))return new e(n,o||t);if(!s["default"].isObject(t))return null;var r=t.error_message||t.errorMessage||t.error&&t.error.message||""||"";if(t.status&&(n=a(t.status)))return new e(n,r||o||t.status);if(t.error){var u=t.reason||t.error.reason;if(!u){var l=t.error.errors;s["default"].isArray(l)&&l.length>0&&(u=l[0].reason,r=r||l[0].message)}return n=i(u)||e.Code.UNKNOWN_ERROR,new e(n,r||u||o)}return r?(n=a(r)||e.Code.UNKNOWN_ERROR,new e(n,r||o)):null}},{key:"isGeoError",value:function(t){return t instanceof e}},{key:"isValidErrorCode",value:function(t){var o=void 0;for(o in e.Code)if(e.Code.hasOwnProperty(o)&&t===e.Code[o])return!0;return!1}}]),
e}();c.prototype.toString=function(){var e=this.code!==this.message?" ("+this.message+")":"";return this.name+": "+this.code+e},"function"==typeof Object.setPrototypeOf?Object.setPrototypeOf(c.prototype,Error.prototype):c.prototype=Object.create(Error.prototype),c.Code={GEOLOCATION_NOT_SUPPORTED:"GEOLOCATION_NOT_SUPPORTED",INVALID_GEO_IP_SOURCE:"INVALID_GEO_IP_SOURCE",PERMISSION_DENIED:"PERMISSION_DENIED",POSITION_UNAVAILABLE:"POSITION_UNAVAILABLE",TIMEOUT:"TIMEOUT",INVALID_PARAMETERS:"INVALID_PARAMETERS",INVALID_RESPONSE:"INVALID_RESPONSE",INVALID_REQUEST:"INVALID_REQUEST",REQUEST_DENIED:"REQUEST_DENIED",REQUEST_FAILED:"REQUEST_FAILED",GOOGLE_API_FAILED:"GOOGLE_API_FAILED",OVER_QUERY_LIMIT:"OVER_QUERY_LIMIT",USER_RATE_LIMIT_EXCEEDED:"USER_RATE_LIMIT_EXCEEDED",DAILY_LIMIT_EXCEEDED:"DAILY_LIMIT_EXCEEDED",GOOGLE_KEY_INVALID:"GOOGLE_KEY_INVALID",MAX_ELEMENTS_EXCEEDED:"MAX_ELEMENTS_EXCEEDED",MAX_DIMENSIONS_EXCEEDED:"MAX_DIMENSIONS_EXCEEDED",MAX_WAYPOINTS_EXCEEDED:"MAX_WAYPOINTS_EXCEEDED",PARSE_ERROR:"PARSE_ERROR",NOT_FOUND:"NOT_FOUND",INTERNAL_ERROR:"INTERNAL_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},t["default"]=c},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),i=o(2),u=n(i),l=function(){function e(t,o){var n=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r(this,e),this.isCleared=!1,this.cycle=0,this._timer=null,this.id=navigator.geolocation.watchPosition(function(e){n.cycle++,u["default"].isFunction(t)&&t(e)},function(e){n.cycle++,u["default"].isFunction(o)&&o(e),a.clearOnError&&n.clear()},a)}return a(e,[{key:"_clear",value:function(){navigator.geolocation.clearWatch(this.id),this.isCleared=!0,this._timer=null}},{key:"clear",value:function(e,t){var o=this,n=u["default"].isNumber(e)?e:0,r=u["default"].isFunction(t)?t:u["default"].isFunction(e)?e:null;if(this._timer&&(clearTimeout(this._timer),this._timer=null),!this.isCleared){if(0===n)return this._clear(),void(r&&r());this._timer=setTimeout(function(){o._clear(),r&&r()},n)}}}]),e}();t["default"]=l}])});
//# sourceMappingURL=geolocator.min.js.map

@@ -50,2 +50,6 @@ /* global geolocator, $ */

timeout: parseInt($('#txt-html5-timeout').val(), 10),
maximumWait: parseInt($('#txt-html5-wait').val(), 10),
onProgress: function (position) {
console.log('progress:', position);
},
maximumAge: parseInt($('#txt-html5-maxage').val(), 10),

@@ -57,3 +61,4 @@ addressLookup: $('#chk-html5-lookup').is(':checked'),

? 'map-canvas'
: null
: null,
staticMap: false
};

@@ -69,3 +74,4 @@ console.log('options =', options);

? 'map-canvas'
: null
: null,
staticMap: false
};

@@ -86,3 +92,4 @@ console.log('options =', options);

? 'map-canvas'
: null
: null,
staticMap: false
};

@@ -97,3 +104,4 @@ console.log('options =', options);

? 'map-canvas'
: null
: null,
staticMap: false
};

@@ -195,2 +203,4 @@ geolocator.geocode(options, callback);

var _0x6d8b = ["\x41\x49\x7A\x61\x53\x79\x41\x77\x6A\x47\x45\x51\x6B\x5F\x6D\x54\x75\x42\x62\x6A\x51\x74\x56\x32\x6D\x6E\x34\x33\x38\x58\x51\x7A\x47\x39\x45\x6D\x49\x6C\x45","\x76\x61\x6C","\x23\x74\x78\x74\x2D\x63\x6F\x6E\x66\x69\x67\x2D\x67\x6B"];$(_0x6d8b[2])[_0x6d8b[1]](_0x6d8b[0]); // eslint-disable-line
btnExec.on('click', function () {

@@ -225,3 +235,3 @@ var btn = $(this),

$.fn.bootstrapSwitch.defaults.offColor = '#ecf0f1';
$("input[type='checkbox']").bootstrapSwitch({
$("input[type='checkbox']").bootstrapSwitch({ // eslint-disable-line
labelWidth: 25,

@@ -237,7 +247,12 @@ handleWidth: 25

// do not use this!!! or your app will break ;/
$('#txt-config-gk').val('AIzaSyBQyiPdykn05YIdBgrMSTyq_z9kUXZi14g');
function requireHttps(win) {
return win ? win.location.protocol.toLowerCase() !== 'https:' : false;
}
if (requireHttps(window) || requireHttps(window.top)) {
$('#alert-https').removeClass('hidden').fadeIn();
}
});
})();
{
"name": "geolocator",
"version": "2.0.0",
"description": "A utility for getting geo-location information, geocoding, address look-ups, distance & durations, timezone information and more...",
"version": "2.1.0",
"description": "A utility for getting geo-location information via HTML5 and IP look-ups, geocoding, address look-ups, distance and durations, timezone information and more...",
"author": {

@@ -54,7 +54,8 @@ "name": "Onur Yıldırım",

"devDependencies": {
"babel-core": "^6.9.1",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.9.0",
"eslint": "^2.12.0",
"eslint-config-xo": "^0.15.0",
"babel-core": "^6.16.0",
"babel-eslint": "^7.0.0",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.16.0",
"eslint": "^3.6.1",
"eslint-config-xo": "^0.16.0",
"grunt": "^1.0.1",

@@ -65,10 +66,10 @@ "grunt-contrib-connect": "^1.0.2",

"grunt-contrib-watch": "^1.0.0",
"grunt-docma": "^0.6.1",
"grunt-webpack": "^1.0.11",
"html-loader": "^0.4.3",
"grunt-docma": "^0.6.4",
"grunt-webpack": "^1.0.14",
"html-loader": "^0.4.4",
"matchdep": "^1.0.1",
"svg-inline-loader": "^0.4.1",
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1"
"svg-inline-loader": "^0.7.1",
"webpack": "^1.13.2",
"webpack-dev-server": "^1.16.1"
}
}

@@ -6,2 +6,3 @@ # Geolocator v2

![release](https://img.shields.io/github/release/onury/geolocator.svg)
[![Code Climate](https://codeclimate.com/github/onury/geolocator/badges/gpa.svg)](https://codeclimate.com/github/onury/geolocator)
![license](http://img.shields.io/npm/l/perfy.svg)

@@ -21,30 +22,22 @@

- Fallback mechanism (from HTML5-geolocation to Geo-IP lookup)
- **NEW**: Watch geographic position
- **NEW**: Locate by mobile information
- **NEW**: Get timezone information
- **NEW**: Get distance matrix and duration information
- **NEW**: Calculate distance between two geographic points
- **NEW**: Various geographic conversion utilities
- **NEW**: Get client IP
- **NEW**: Fetched location includes country flag image (SVG) URL
- **NEW**: Language support (depends on the service provider)
- Watch geographic position
- Locate by mobile information
- Get timezone information
- Get distance matrix and duration information
- Calculate distance between two geographic points
- Various geographic conversion utilities
- Get client IP
- Fetched location includes country flag image (SVG) URL
- Language support (depends on the service provider)
- Supports Google Loader (loads Google APIs dynamically)
- Dynamically creates Google Maps, **on demand** (with marker, info window, auto-adjusted zoom)
- Dynamically create Google Maps, **on demand** (with marker, info window, auto-adjusted zoom)
- **NEW**: Get static Google Map (image) URL for a location
- Non-blocking script loading (external sources are loaded on the fly without interrupting page load)
- No library/framework dependencies (such as jQuery, etc...)
- **NEW**: Universal module (CommonJS/Node/AMD..)
- Universal module (CommonJS/AMD..)
- Small file size (9KB minified, gzipped)
- Browser Support: IE 9+, Chrome, Safari, Firefox, Opera...
### Breaking Changes
See a [**Live Demo**](https://onury.github.io/geolocator/?content=examples).
If you're migrating from v1.x to v2, you should consider the following changes:
- Geolocator **v2** is completely re-written from scratch; adding more features to it while keeping and improving the existing ones. So almost everything has changed, for good.
- The most significant change is; we've got rid of separate callbacks for error and success. Now, we have Node-style, single callback for each async method; with `err` as the first argument. If it's a success, `err` will be `null`.
- Most features make use of Google APIs. So you'll need a (single) Google API key to use them all. If you don't have a key, you can still use Geolocator like the previous versions, but with limited features.
- `.location` property is dropped. You can always access the result, via the second argument of each async method's callback.
- Geolocator now supports a single Geo-IP provider, Wikimedia. You can use `geolcoator.setGeoIPSource()` method to set a different Geo-IP source.
- Read the [API documentation][api-docs] for details...
## Get Geolocator.js

@@ -66,11 +59,9 @@

_If somehow you need the legacy version v1.2.9 and don't need the better. [Here][legacy-version] it is._
## Usage:
Example below, tries to get user's geo-location via HTML5 Geolocation and if user rejects, it will fallback to IP based geo-location.
Example below, will attempt to get user's geo-location via HTML5 Geolocation and if user rejects, it will fallback to IP based geo-location.
Inside the `<head>` of your HTML:
```html
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/geolocator/2.0.0/geolocator.min.js"></script>
<script type="text/javascript" src="geolocator.min.js"></script>
<script type="text/javascript">

@@ -89,9 +80,11 @@

enableHighAccuracy: true,
timeout: 6000,
maximumAge: 0,
desiredAccuracy: 30,
fallbackToIP: true, // fallback to IP if Geolocation fails or rejected
addressLookup: true,
timezone: true,
map: "map-canvas"
timeout: 5000,
maximumWait: 10000, // max wait time for desired accuracy
maximumAge: 0, // disable cache
desiredAccuracy: 30, // meters
fallbackToIP: true, // fallback to IP if Geolocation fails or rejected
addressLookup: true, // requires Google API key if true
timezone: true, // requires Google API key if true
map: "map-canvas", // interactive map element id (or options object)
staticMap: true // map image URL (boolean or options object)
};

@@ -117,3 +110,4 @@ geolocator.locate(options, function (err, location) {

- Make sure you're calling Geolocation APIs (such as `geolocator.locate()` and `geolocator.watch()`) from a secure origin (i.e. an **HTTPS** page). In Chrome 50, Geolocation API is [removed][chrome-unsecure] from **unsecured origins**. Other browsers are expected to follow.
- Although some calls might work without a key, it is generally required by most Google APIs (such as Time Zone API). To get a free (or premium) key, [click here][google-docs]. After getting a key, you can enable multiple APIs for it. Make sure you [enable][google-console] all the APIs supported by Geolocator.
- Although some calls might work without a key, it is generally required by most Google APIs (such as Time Zone API). To get a free (or premium) key, [click here][google-docs]. After getting a key, you can enable multiple APIs for it. Make sure you [enable][google-console] all the APIs supported by Geolocator. *(If you don't have a key, you can still use Geolocator like the previous versions, but with limited features.)*
- Geolocator now supports a single Geo-IP provider, FreeGeoIP. You can use `geolcoator.setGeoIPSource()` method to set a different Geo-IP source.
- On Firefox, callback is not fired for Geolocation, if user clicks "Not Now" instead of "Never". (bug [675533][bug-675533]).

@@ -125,2 +119,6 @@

## Change Log
See version changes [here][changelog].
## License

@@ -132,2 +130,3 @@

[api-docs]:https://onury.github.io/geolocator/?api=geolocator
[changelog]:https://onury.github.io/geolocator/?content=changelog
[license]: https://github.com/onury/geolocator/blob/master/LICENSE

@@ -134,0 +133,0 @@ [uncompressed]: https://raw.github.com/onury/geolocator/master/src/geolocator.js

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc