/*! angular-google-maps-native v2.0.0 | 2015-08-09 | DEMONTE Jean-Baptiste | jbdemonte@gmail.com | GPL v3 */ !function(n,e){"use strict";function t(e){var t=L.defer();return b("Geocoder").geocode(n.isString(e)?{address:e}:e,function(n,e){e===$.GeocoderStatus.OK?t.resolve(n[0].geometry.location,n):(i("geocode: "+e),t.reject())}),t.promise}function i(){console&&console.error.apply(console,arguments)}function r(n){return(n.ngShow?"("+n.ngShow+")":"")+(n.ngHide?(n.ngShow?" && ":"")+"!("+n.ngHide+")":"")||""}function o(n){return n}function u(n){return n=1*n,isNaN(n)?void 0:n}function c(e){var t,i,r;return e instanceof $.LatLng?e:(n.isArray(e)?(t=u(e[0]),i=u(e[1])):n.isObject(e)&&(t=u(e.lat),i=u(e.lng)),q(t)&&q(i)&&(r=new $.LatLng(t,i)),r)}function a(t){var i,r,o;return!t||t instanceof $.LatLngBounds?t||e:(n.isArray(t)?2===t.length?(i=c(t[0]),r=c(t[1])):4===t.length&&(i=c([t[0],t[1]]),r=c([t[2],t[3]])):"ne"in t&&"sw"in t?(i=c(t.ne),r=c(t.sw)):"n"in t&&"e"in t&&"s"in t&&"w"in t&&(i=c([t.n,t.e]),r=c([t.s,t.w])),i&&r&&(o=new $.LatLngBounds(r,i)),o)}function s(n){return n+="",k(n.charAt(0))+n.substr(1)}function f(n){return n+="",n.charAt(0).toUpperCase()+n.substr(1)}function l(n,e){var t;return function(){return n&&(t=n.apply(e||this,arguments),n=null),t}}function p(n){return k(n.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/^[^_]+_/,""))}function g(n,e,t){T(t,function(t,i){var r=i.match(/^on(ce)?[A-Z]/);r&&$.event["addListener"+(r[1]?"Once":"")](n,p(i),function(n){S(function(){e.$apply(function(){var i=e.$new(!1);i.event=n,M(t)(i)})})})})}function d(e,i,r){var o,u;return j in i&&(u=e.$watch(i[j],function(e){o=e,e&&t(e).then(function(t){n.equals(o,e)&&r(t)})})),u}function m(n,e,t,i,r){function o(n){t.then(function(e){n=r(n),q(n)&&e["set"+f(i)](n)})}var u=k(i);u in e&&n.$watch(e[u],function(n){q(n)&&o(n)}),r===c&&d(n,e,function(n){o(n)})}function v(n,e,t,i){T(i,function(i,r){m(n,e,t,r,i)}),"options"in e&&m(n,e,t,"options",function(n){return T(i,function(e,t){t in n&&(n[t]=e(n[t]))}),n})}function h(e,t,r,o,u){function a(){var n=!0;return T(f,function(e){q(g[e])&&r[e]&&(g[e]=r[e](g[e])),n=n&&q(g[e])}),n}function s(){return a()?(u&&T(p,function(n){n()}),o(g),u):void 0}var f,l,p=[],g={};n.isString(r)?(f=r.split(" "),r={}):f=Object.keys(r),t.options&&(g=M(t.options)(e)),s()||T(f,function(n){var o=!1,u=k(n);u in t&&(o=!0,p.push(e.$watch(t[u],function(e){q(e)&&(g[n]=e,s())}))),r[n]===c&&(l=d(e,t,function(e){g[n]=e,s()}),l&&(o=!0,p.push(l))),o||q(g[n])||i(n+" missing")})}function y(t,i){var o=[i.directive||"gm"+f(k(t))];return n.isArray(i.require)?Array.prototype.push.apply(o,i.require):i.require&&n.isString(i.require)&&o.push(i.require),o.push("^gmMap"),{restrict:"E",scope:!0,require:o,controller:["$scope","$element","$attrs",function(n,o,u){function c(e){var t=r(u),c=p.get();t?n.$watch(t,function(t){a?i.visibility?i.visibility(n,o,u,d,t):a.setMap(t?c:null):(f(e,c,t),i.visibility&&i.visibility(n,o,u,d,t))}):f(e,c,!0)}var a,f,p,d,m=i.name||s(t),y=this,w=L.defer();n.$on("$destroy",function(){a?(i.destroy?i.destroy(n,o,u,a):a.setMap(e),a=e,delete n[m]):w.reject()}),f=l(function(e,r,c){var s=i.opts?e.opts||{}:e;!c&&s.map&&delete s.map,a=i.instantiate?i.instantiate(n,o,u,e):new $[t](e),c&&!s.map&&a.setMap&&a.setMap(r),n[m]=a,g(a,n,u),w.resolve(a)}),y.init=l(function(e){d=e,p=d[d.length-1],p.then(function(e){var t={};i.create&&(u.options&&(t=M(u.options)(n),T(i.main,function(n,e){e in t&&(t[e]=n(t[e]))})),i.create(n,o,u,d,t,c))||h(n,u,i.main,function(t){i.opts?(t.opts=t.opts||{},t.opts.map=e):t.map=e,c(t),v(n,u,y,i.main)},!0)}),u.gmThen&&y.then(function(){M(u.gmThen)(n.$new(!1))})}),y.then=function(n){w.promise.then(n)},y.get=function(){return a}}],link:function(n,e,t,i){i[0].init(i)}}}function w(e,t){return y(e,n.extend({create:function(n,e,t,i,r,o){return t.ngShow||t.ngHide||i[0].then(function(n){n.setMap(i[1].get())}),o(r),!0}},t))}var $,b,L,M,S,T=n.forEach,q=n.isDefined,k=n.lowercase,j="gmAddress";b=function(){var n={};return function(e){return!n.hasOwnProperty(e)&&$[e]&&(n[e]=new $[e]),n[e]}}(),n.module("GoogleMapsNative",[]).provider("gmLibrary",function(){function e(){var n=u.url,e=n.indexOf("?");return-1===e?n+="?":e===n.length-1&&(n+="&"),T(u,function(e,t){-1===o.indexOf(t)&&(n+=t+"="+e+"&")}),u.libraries.length&&(n+="libraries="+u.libraries.join(",")),n}function t(n,t){var o,c=u.callback;return r||(r=!0,i=L.defer(),t.google&&t.google.maps?(i.resolve(),$=t.google.maps):(t[c]=function(){if(delete t[c],$=t.google.maps,!$)throw"google.maps library not found";i.resolve()},o=n[0].createElement("script"),o.type="text/javascript",o.src=e(),n.find("body").append(o))),i.promise}var i,r=!1,o=["url","libraries"],u={url:"https://maps.googleapis.com/maps/api/js",v:3,libraries:[],language:"en",sensor:"false",callback:"__mapLibraryLoaded"};this.configure=function(e){n.extend(u,e)},this.$get=["$document","$window","$rootScope","$q","$parse","$timeout",function(n,e,i,r,o,c){return L=r,M=o,S=c,{populate:function(n){n.google=e.google,i.google=e.google},load:function(){var i;return u.load?(i=L.defer(),u.load(i),i.promise.then(function(){return t(n,e)})):t(n,e)}}}]}).directive("gmMap",["gmLibrary",function(t){return{restrict:"E",scope:!0,controller:["$scope","$element","$attrs",function(i,a,s){function f(n){var e=r(s);e?i.$watch(e,function(e){e&&(p?S(function(){$.event.trigger(p,"resize")}):d(n))}):d(n)}var p,d,m=this,y=L.defer(),w=n.element(document.createElement("DIV"));a.css("position")||a.css("position","relative"),w.css({position:"absolute",top:0,right:0,bottom:0,left:0}),a.append(w),i.$on("$destroy",function(){p?(p=e,delete i.map):y.reject()}),d=l(function(n){S(function(){p=new $.Map(w[0],n),i.map=p,g(p,i,s),y.resolve(p)},100)}),m.init=function(){t.load().then(function(){t.populate(i),h(i,s,{center:c,zoom:u},function(n){f(n),v(i,s,m,{center:c,zoom:u,mapTypeId:o,heading:u,tilt:u})},!0)}),s.gmThen&&m.then(function(){M(s.gmThen)(i.$new(!1))})},m.then=function(n){y.promise.then(n)},m.get=function(){return p}}],link:function(n,e,t,i){i.init()}}}]).directive("gmMarker",function(){return y("Marker",{main:{position:c}})}).directive("gmCircle",function(){return y("Circle",{main:{center:c,radius:u}})}).directive("gmRectangle",function(){return y("Rectangle",{main:{bounds:a}})}).directive("gmInfowindow",function(){return y("InfoWindow",{require:"^?gmMarker",main:{position:c},destroy:function(n,e,t,i){i.close()},create:function(n,e,t,i,r,o){var u=i[0],a=i[1],s=i[2],f=function(n){o(n),t.ngShow||t.ngHide||u.then(function(n){n.open(s.get(),a?a.get():null)})};return a?a.then(function(){f(r)}):h(n,t,{position:c},function(e){f(e),v(n,t,i[0],{position:c})},!0),!0},visibility:function(n,e,t,i,r){var o=i[0].get(),u=i[1],c=i[2];return r?void o.open(c.get(),u?u.get():null):o.close()}})}).directive("gmDirections",function(){return{restrict:"E",scope:!0,require:["gmDirections","^gmMap"],controller:["$scope",function(n){var e=L.defer(),t={result:null,status:""};this._run=function(i){i.origin=c(i.origin)||i.origin,i.destination=c(i.destination)||i.destination,b("DirectionsService").route(i,function(i,r){t.result=i,t.status=r,n.$apply(function(){n.directions={result:i,status:r}}),e.resolve(t)})},this.then=function(n){e.promise.then(n)},this.get=function(){return t}}],link:function(n,e,t,i){var r=i[0],o=i[1];o.then(function(){h(n,t,"origin destination travelMode",function(n){r._run(n)})})}}}).directive("gmRenderer",function(){return y("DirectionsRenderer",{directive:"gmRenderer",name:"renderer",require:"^gmDirections",create:function(n,e,t,i,r,o){var u=i[0],c=i[1],a=i[2];return c.then(function(e){r.map=a.get(),r.directions=e.result,n.$watch("directions",function(n){u.get().setDirections(n.result)}),o(r)}),!0}})}).directive("gmPolyline",function(){return y("Polyline",{main:{path:function(n){return T(n,function(e,t){n[t]=c(e)}),n}}})}).directive("gmPolygon",function(){return y("Polygon",{main:{paths:function(n){return T(n,function(e,t){n[t]=c(e)}),n}}})}).directive("gmGroundoverlay",function(){return y("GroundOverlay",{opts:!0,instantiate:function(n,e,t,i){return new $.GroundOverlay(i.url,i.bounds,i.opts)},create:function(n,e,t,i,r,o){return i[1].then(function(){h(n,t,"url bounds",function(n){n.bounds=a(n.bounds),o(n)},!0)}),!0}})}).directive("gmKmllayer",function(){return y("KmlLayer",{opts:!0,main:{url:o},instantiate:function(n,e,t,i){return new $.KmlLayer(i.url,i.opts)}})}).directive("gmStyledmaptype",function(){return{restrict:"E",require:"^gmMap",link:function(n,t,i,r){r.then(function(t){n.map=t,t.mapTypes.set(i.id,new $.StyledMapType(M(i.styles)(n),i.options?M(i.options)(n):e))})}}}).directive("gmTrafficlayer",function(){return w("TrafficLayer")}).directive("gmBicyclinglayer",function(){return w("BicyclingLayer")}).directive("gmTransitlayer",function(){return w("TransitLayer")}).directive("gmStreetviewpanorama",["gmLibrary",function(n){return{restrict:"E",scope:!0,controller:["$scope","$element","$attrs",function(t,i,a){function s(n){var e=r(a);e?t.$watch(e,function(e){e&&(f?S(function(){$.event.trigger(f,"resize")}):p(n))}):p(n)}var f,p,d=this,m=L.defer();t.$on("$destroy",function(){f?(f=e,delete t.streetViewPanorama):m.reject()}),p=l(function(n){S(function(){f=new $.StreetViewPanorama(i[0],n),t.streetViewPanorama=f,g(f,t,a),m.resolve(f)},100)}),d.init=l(function(){n.load().then(function(){n.populate(t),h(t,a,{position:c},function(n){s(n),v(t,a,d,{position:c,pov:o,zoom:u})},!0)}),a.gmThen&&d.then(function(){M(a.gmThen)(t.$new(!1))})}),d.then=function(n){m.promise.then(n)},d.get=function(){return f}}],link:function(n,e,t,i){i.init()}}}])}(angular);