{"version":3,"sources":["components/geolocation.js"],"names":["dmx","Component","initialData","support","navigator","geolocation","status","timestamp","coords","attributes","tracking","type","Boolean","default","enable-high-accuracy","max-age","Number","timeout","methods","getCurrentPosition","this","watchPosition","clearWatch","events","success","Event","error","permissiondenied","unavailable","errorCodes","1","2","3","render","node","update","props","data","JSON","stringify","onSuccess","bind","onError","enableHighAccuracy","maximumAge","watching","pos","set","latitude","longitude","altitude","accuracy","altitudeAccuracy","heading","speed","nextTick","dispatchEvent","err","message","code"],"mappings":";;;;;;AAAAA,IAAAC,UAAA,eAEAC,aACAC,UAAAC,UAAAC,YACAC,OAAAF,UAAAC,YAAA,gDAAA,cACAE,UAAA,KACAC,OAAA,MAGAC,YACAC,UACAC,KAAAC,QACAC,SAAA,GAGAC,wBACAH,KAAAC,QACAC,SAAA,GAGAE,WACAJ,KAAAK,OACAH,QAAA,KAGAI,SACAN,KAAAK,OACAH,QAAA,OAIAK,SACAC,mBAAA,WACAC,KAAAD,sBAGAE,cAAA,WACAD,KAAAC,iBAGAC,WAAA,WACAF,KAAAE,eAIAC,QACAC,QAAAC,MACAC,MAAAD,MACAE,iBAAAF,MACAG,YAAAH,MACAR,QAAAQ,OAGAI,YACAC,EAAA,mBACAC,EAAA,cACAC,EAAA,WAGAC,OAAA,SAAAC,GACAd,KAAAe,YAGAA,OAAA,SAAAC,GACAhB,KAAAiB,KAAAlC,SAAAmC,KAAAC,UAAAH,IAAAE,KAAAC,UAAAnB,KAAAgB,SACAhB,KAAAgB,MAAA1B,SACAU,KAAAC,iBAEAD,KAAAE,aACAF,KAAAD,wBAKAA,mBAAA,WACAC,KAAAiB,KAAAlC,SACAC,UAAAC,YAAAc,mBAAAC,KAAAoB,UAAAC,KAAArB,MAAAA,KAAAsB,QAAAD,KAAArB,OACAuB,mBAAAvB,KAAAgB,MAAA,wBACAnB,QAAAG,KAAAgB,MAAAnB,QACA2B,WAAAxB,KAAAgB,MAAA,cAKAf,cAAA,WACAD,KAAAiB,KAAAlC,UAAAiB,KAAAyB,WACAzB,KAAAyB,SAAAzC,UAAAC,YAAAgB,cAAAD,KAAAoB,UAAAC,KAAArB,MAAAA,KAAAsB,QAAAD,KAAArB,OACAuB,mBAAAvB,KAAAgB,MAAA,wBACAnB,QAAAG,KAAAgB,MAAAnB,QACA2B,WAAAxB,KAAAgB,MAAA,eAKAd,WAAA,WACAF,KAAAiB,KAAAlC,SAAAiB,KAAAyB,WACAzC,UAAAC,YAAAiB,WAAAF,KAAAyB,gBACAzB,MAAAyB,WAIAL,UAAA,SAAAM,GACA1B,KAAA2B,IAAA,SAAA,MACA3B,KAAA2B,IAAA,YAAAD,EAAAvC,WACAa,KAAA2B,IAAA,UACAC,SAAAF,EAAAtC,OAAAwC,SACAC,UAAAH,EAAAtC,OAAAyC,UACAC,SAAAJ,EAAAtC,OAAA0C,SACAC,SAAAL,EAAAtC,OAAA2C,SACAC,iBAAAN,EAAAtC,OAAA4C,iBACAC,QAAAP,EAAAtC,OAAA6C,QACAC,MAAAR,EAAAtC,OAAA8C,QAEAtD,IAAAuD,SAAAnC,KAAAoC,cAAAf,KAAArB,KAAA,aAGAsB,QAAA,SAAAe,GACArC,KAAA2B,IAAA,SAAAU,EAAAC,SAAAtC,KAAAS,WAAA4B,EAAAE,OAAA,kBACA3D,IAAAuD,SAAAnC,KAAAoC,cAAAf,KAAArB,KAAAA,KAAAS,WAAA4B,EAAAE,OAAA","file":"../dmxGeolocation/dmxGeolocation.js","sourcesContent":["dmx.Component('geolocation', {\r\n\r\n initialData: {\r\n support: !!navigator.geolocation,\r\n status: navigator.geolocation ? 'Geolocation is not supported by this browser.' : 'Locating...',\r\n timestamp: null,\r\n coords: null // { latitude, longitude, altitude, accuracy, altitudeAccuracy, heading, speed }\r\n },\r\n\r\n attributes: {\r\n tracking: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'enable-high-accuracy': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'max-age': {\r\n type: Number,\r\n default: 30000\r\n },\r\n\r\n timeout: {\r\n type: Number,\r\n default: 27000\r\n }\r\n },\r\n\r\n methods: {\r\n getCurrentPosition: function() {\r\n this.getCurrentPosition();\r\n },\r\n\r\n watchPosition: function() {\r\n this.watchPosition();\r\n },\r\n\r\n clearWatch: function() {\r\n this.clearWatch();\r\n }\r\n },\r\n\r\n events: {\r\n success: Event,\r\n error: Event,\r\n permissiondenied: Event,\r\n unavailable: Event,\r\n timeout: Event\r\n },\r\n\r\n errorCodes: {\r\n 1: 'permissiondenied',\r\n 2: 'unavailable',\r\n 3: 'timeout'\r\n },\r\n\r\n render: function(node) {\r\n this.update({});\r\n },\r\n\r\n update: function(props) {\r\n if (this.data.support && JSON.stringify(props) != JSON.stringify(this.props)) {\r\n if (this.props.tracking) {\r\n this.watchPosition();\r\n } else {\r\n this.clearWatch();\r\n this.getCurrentPosition();\r\n }\r\n }\r\n },\r\n\r\n getCurrentPosition: function() {\r\n if (this.data.support) {\r\n navigator.geolocation.getCurrentPosition(this.onSuccess.bind(this), this.onError.bind(this), {\r\n enableHighAccuracy: this.props['enable-high-accuracy'],\r\n timeout: this.props.timeout,\r\n maximumAge: this.props['max-age']\r\n });\r\n }\r\n },\r\n\r\n watchPosition: function() {\r\n if (this.data.support && !this.watching) {\r\n this.watching = navigator.geolocation.watchPosition(this.onSuccess.bind(this), this.onError.bind(this), {\r\n enableHighAccuracy: this.props['enable-high-accuracy'],\r\n timeout: this.props.timeout,\r\n maximumAge: this.props['max-age']\r\n });\r\n }\r\n },\r\n\r\n clearWatch: function() {\r\n if (this.data.support && this.watching) {\r\n navigator.geolocation.clearWatch(this.watching);\r\n delete this.watching;\r\n }\r\n },\r\n\r\n onSuccess: function(pos) {\r\n this.set('status', 'OK');\r\n this.set('timestamp', pos.timestamp);\r\n this.set('coords', {\r\n latitude : pos.coords.latitude,\r\n\t\t\tlongitude : pos.coords.longitude,\r\n\t\t\taltitude : pos.coords.altitude,\r\n\t\t\taccuracy : pos.coords.accuracy,\r\n\t\t\taltitudeAccuracy : pos.coords.altitudeAccuracy,\r\n\t\t\theading : pos.coords.heading,\r\n\t\t\tspeed : pos.coords.speed\r\n });\r\n dmx.nextTick(this.dispatchEvent.bind(this, 'success'));\r\n },\r\n\r\n onError: function(err) {\r\n this.set('status', err.message || this.errorCodes[err.code] || 'Unknown Error.');\r\n dmx.nextTick(this.dispatchEvent.bind(this, this.errorCodes[err.code] || 'error'));\r\n }\r\n\r\n});\r\n"]}