/*! Vue Bing Maps v0.0.1, hash:2c8dfe2ac2d080b35165. Created by Kenneth Sullivan. License MIT */ var VueBingMaps=function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="./dist",n(n.s=6)}([function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(e){var o=n(2),i=setTimeout;function r(){}function a(e){if(!(this instanceof a))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function l(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,a._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var o;try{o=n(e._value)}catch(e){return void c(t.promise,e)}s(t.promise,o)}else(1===e._state?s:c)(t.promise,e._value)})):e._deferreds.push(t)}function s(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof a)return e._state=3,e._value=t,void u(e);if("function"==typeof n)return void f((o=n,i=t,function(){o.apply(i,arguments)}),e)}e._state=1,e._value=t,u(e)}catch(t){c(e,t)}var o,i}function c(e,t){e._state=2,e._value=t,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&a._immediateFn(function(){e._handled||a._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(4),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var o,i,r,a,l,s=1,c={},u=!1,d=e.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(e);f=f&&f.setTimeout?f:e,"[object process]"==={}.toString.call(e.process)?o=function(e){t.nextTick(function(){m(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((r=new MessageChannel).port1.onmessage=function(e){m(e.data)},o=function(e){r.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,o=function(e){var t=d.createElement("script");t.onreadystatechange=function(){m(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):o=function(e){setTimeout(m,0,e)}:(a="setImmediate$"+Math.random()+"$",l=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&m(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",l,!1):e.attachEvent("onmessage",l),o=function(t){e.postMessage(a+t,"*")}),f.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n1)for(var n=1;n({__item:null,__itemHandlers:[],itemType:null,initialized:!1,allowedEvents:[]}),computed:{},methods:{getItem(){return this.__item},setItem(e){return this.__item=e,e},getAttachedEventListeners(){let e=this.$listeners||{},t=this.itemType+"-",n=[];for(var o in e)e.hasOwnProperty(o)&&n.push(o.replace(t,""));return n},registerEvents(){let e=this,t=this.itemType,n=e.getAttachedEventListeners(),o=function(e){return r.logger.log(e),{meta:e.primitive&&e.primitive.metadata,x:"function"==typeof e.getX?e.getX():null,y:"function"==typeof e.getY?e.getY():null,pageX:e.pageX,pageY:e.pageY,point:e.point,location:e.location,targetType:e.targetType}};return e.__itemHandlers||(e.__itemHandlers=[]),new Promise((i,a)=>{let l=e.getItem();e.allowedEvents.reduce(function(e,i){return n.filter(function(e){return e===i||e&&e.name===i}).forEach(function(n){var a=typeof n;"undefined"===a?r.logger.log("no user-defined "+t+" event handler for event: "+i):"string"===a?(r.logger.log("setting up default handler for "+t+" event: "+n),e.push({name:i,transform:o,delay:0,once:!1})):"object"===a?e.push({name:i,transform:n.transform,delay:n.delay||0,once:n.once||!1}):r.logger.warn("unknown "+t+" event handler type: ",n)}),e},[]).forEach(t=>{var n,o=function(n){var o=t.transform(n);e.$emit(e.itemType+"-"+t.name,r.deepClone(o))};!0===t.once?Microsoft.Maps.Events.addOne(l,t.name,o):n=t.delay>0?Microsoft.Maps.Events.addThrottledHandler(l,t.name,o,t.delay):Microsoft.Maps.Events.addHandler(l,t.name,o),n&&e.__itemHandlers.push(n)}),i(l)})},unRegisterEvents(){let e=this;return new Promise((t,n)=>{let o=e.__itemHandlers||[];for(;o.length;){var i=o.pop();Microsoft.Maps.Events.removeHandler(i)}t()})}}},void 0,void 0,!1,null,null,null).exports;const c=Object.freeze(["click","dblclick","mapresize","maptypechanged","mousedown","mousemove","mouseout","mouseover","mouseup","mousewheel","rightclick","viewchange","viewchangeend","viewchangestart"]);var u=l({name:"bing-map",mixins:[s],props:{credentials:{type:String,required:!0},options:{type:Object,required:!1,default:()=>({})}},data:()=>({itemType:"map",rendering:!1,apiLoaded:!1,allowedEvents:c}),computed:{mapOptions(){if(!this.apiLoaded)return{};let e=this.options,t={};for(var n in e)if(e.hasOwnProperty(n))switch(n){case"navigationBarOrientation":t[n]=a.toNavigationBarOrientation(e[n]);break;case"mapTypeId":case"supportedMapTypes":t[n]=a.toMapTypeId(e[n]);break;default:t[n]=e[n]}return t}},provide(){return{getMap:this.getItem,loadModule:this.loadModule}},methods:{libLoaded:()=>!!(window.Microsoft&&window.Microsoft.Maps&&window.Microsoft.Maps.Map),getInitCallbackFnName(){return"mapInitializeCallback_"+this._uid},getMapApiUrl(){return i.bingApiUrl.replace("{callback}",this.getInitCallbackFnName()).replace("{credentials}",this.credentials)},loadApi(){let e=this;return r.logger.log("loading api..."),new Promise((t,n)=>{if(e.libLoaded())r.logger.log("api already loaded!"),e.apiLoaded=!0,t();else{r.logger.log("setting map init callback"),window[e.getInitCallbackFnName()]=function(){r.logger.log("map init callback: ",e.getInitCallbackFnName()),delete window[e.getInitCallbackFnName()],e.apiLoaded=!0,t()},r.logger.log("adding bing api to document head url: ",e.getMapApiUrl());let o=document.createElement("script");o.type="text/javascript",o.src=e.getMapApiUrl(),o.async=!0,o.defer=!0,o.onerror=function(t){delete window[e.getInitCallbackFnName()],n(t)},document.head.append(o)}})},loadModule(e){let t=this,n=(e||"").toLowerCase().trim();return new Promise((o,i)=>{if(n)if(t.libLoaded()){let t=r.loadedModules;t||(t=[],r.loadedModules=t),t.item.indexOf(n)>-1?(r.logger.log("Map module "+n+" already loaded, resolving..."),o()):Microsoft.Maps.loadModule(e,{callback(){r.logger.log("Map module "+n+" successfully loaded!"),t.item.push(n),o()},errorCallback(e){r.logger.warn("Map module "+n+" loading failed!"),i(e)}})}else i("This function can only be called after the Bing Map library has been loaded");else i("A module name must be specified")})},draw(){this.render()},render(){let e=this;return new Promise((t,n)=>{e.rendering=this;let o=e.getItem();o&&e.destroy(),Promise.all([e.loadApi(),e.$nextTick()]).then(()=>{o=e.setItem(new Microsoft.Maps.Map(e.$refs.mapContainer,e.mapOptions)),Microsoft.Maps.Events.addOne(o,"viewchangeend",()=>{e.initialized=!0}),t()}).catch(function(e){n(e)}).finally(()=>{e.rendering=!1})})},destroy(){this.initialized=!1;let e=this.getItem();e&&"function"==typeof e.dispose&&(e.dispose(),this.setItem(null))}},mounted(){r.logger.log("mounted lifecycle hook, rendering map..."),this.draw()},beforeDestroy(){r.logger.log("beforeDestroy lifecycle hook, destroying map...");let e=this;e.destroying=!0,e.unRegisterEvents().then(e.destroy).finally(()=>{e.destroying=!1})},activated(){r.logger.log("map activated lifecycle hook, checking criteria for rendering map..."),this.rendering||this.getItem()?r.logger.log("map component activated from initial mounted stated, no action performed here since already performed in mounted hook"):(r.logger.log("map component activated from deactivated state, rendering map..."),this.draw())},deactivated(){r.logger.log("deactivated lifecyle hook, destroying map..."),this.unRegisterEvents().then(this.destroy)}},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{ref:"mapContainer"},[t("div",{staticStyle:{display:"none"}},[this.initialized?this._t("default"):this._e()],2)])},[],!1,null,null,null).exports;const d=Object.freeze(["click","dblclick","mousedown","mouseover","mouseout","mouseup","rightclick"]);var f=l({name:"bing-map-layer",mixins:[s],props:{name:{type:String,required:!1,default(){return"layer-"+this._uid}},visible:{type:Boolean,required:!1,default:()=>!0},zIndex:{type:Number,required:!1,default:()=>0}},data:()=>({itemType:"layer",allowedEvents:d}),watch:{visible(e){let t=this.getItem();t&&t.setVisible(e)},zIndex(e){let t=this.getItem();t&&t.setZIndex(e)}},inject:["getMap"],provide(){return{getLayer:this.getItem}},methods:{render(){let e=this.getItem(),t=this.getMap();t?(e&&(r.logger.log("layer "+this.name+" already exists, destroying previous instance..."),this.destroy()),r.logger.log("creating new layer: "+this.name),(e=this.setItem(new Microsoft.Maps.Layer(this.name))).setVisible(this.visible),this.zIndex&&e.setZIndex(this.zIndex),r.logger.log("adding layer: "+this.name+" to map..."),t.layers.insert(e),this.initialized=!0):r.logger.error("layer render error: map not found!")},destroy(){let e=this.getItem();try{if(e){let t=this.getMap();t&&t.layers.remove(e),"function"==typeof e.dispose&&(r.logger.log("disposing layer "+this.name+"..."),e.dispose())}}finally{this.setItem(null)}}},mounted(){r.logger.log("mounted lifecycle hook, rendering layer"+this.name+"..."),this.render(),this.registerEvents()},beforeDestroy(){r.logger.log("beforeDestroy lifecycle hook, destroying layer "+this.name+"..."),this.destroy()}},function(){var e=this.$createElement;return(this._self._c||e)("div",[this.initialized?this._t("default"):this._e()],2)},[],!1,null,null,null).exports;const p=Object.freeze(["changed","click","dblclick","drag","dragend","dragstart","mousedown","mouseout","mouseover","mouseup"]);var m=l({name:"bing-map-pushpin",mixins:[s],props:{options:{type:Object,required:!1,default:()=>{}},metadata:{type:Object,required:!1,default:()=>null},location:{type:Object,required:!0,validator:e=>e&&"number"==typeof e.latitude&&"number"==typeof e.longitude}},data:()=>({itemType:"push-pin",initialized:!0,allowedEvents:p}),computed:{innerOptions(){let e=this.options,t={};for(var n in e)if(e.hasOwnProperty(n))switch(n){case"anchor":case"textOffset":t[n]=a.toMapPoint(e[n]);break;default:t[n]=r.deepClone(e[n])}return t}},watch:{metadata:{deep:!0,handler(e){let t=this.getItem();t&&(t.metadata=r.deepClone(e))}},location(e){let t=this.getItem();t&&t.setLocation(a.toMapLocation(e))},innerOptions(e){let t=this.getItem();t&&t.setOptions(e)}},inject:["getLayer"],methods:{hasIconTemplate(){return!!(this.$slots&&this.$slots.default&&this.$slots.default.length)},render(){let e=this.getLayer(),t=this.getItem();if(e){t&&this.destroy();let n=r.deepClone(this.innerOptions);(t=this.setItem(new Microsoft.Maps.Pushpin(a.toMapLocation(this.location),n))).metadata=r.deepClone(this.metadata),this.updateIcon(),e.add(t)}else r.logger.error("push-pin render error: layer not found!")},updateIcon(){if(this.hasIconTemplate()){let e=this.getItem();if(e){let t=this.$refs.pinTemplate.innerHTML;e.setOptions({icon:t})}}},destroy(){let e=this.getItem();try{if(e){let t=this.getLayer();t&&t.remove(e)}}finally{this.setItem(null)}}},mounted(){r.logger.log("mounted lifecycle hook, rendering push-pin"+this._uid+"..."),this.render()},beforeUpdate(){r.logger.log("beforeUpdate lifecycle hook, pin "+this._uid)},updated(){r.logger.log("updated lifecycle hook, pin "+this._uid+" updating icon..."),this.updateIcon()},beforeDestroy(){r.logger.log("beforeDestroy lifecycle hook, destroying push-pin "+this._uid+"..."),this.destroy()}},function(){var e=this.$createElement;return(this._self._c||e)("div",{ref:"pinTemplate"},[this.initialized?this._t("default",null,{metadata:this.metadata}):this._e()],2)},[],!1,null,null,null).exports;const h=Object.freeze(["click","infoboxChanged","mouseenter","mouseleave"]);var g=l({name:"bing-map-infobox",mixins:[s],props:{options:{required:!1,type:Object,default:()=>{}}},data:()=>({itemType:"infobox",allowedEvents:h}),inject:["getMap"],watch:{options(e){let t=this.getItem();if(t){let n=this.convertOptions(e||{});t.setOptions(n)}}},methods:{hasHtmlTemplate(){return!!(this.$slots&&this.$slots.default&&this.$slots.default.length)},convertOptions(e){let t=(e?r.deepClone(e):r.deepClone(this.options))||{};for(var n in t)if(t.hasOwnProperty(n))switch(n){case"location":"object"==typeof t.location&&(t.location=a.toMapLocation(t.location));break;case"offset":"object"==typeof t.offset&&(t.offset=a.toMapPoint(t.offset))}return t},setCustomHtml(){if(this.hasHtmlTemplate()){let e=this.getItem();if(e){let t=this.$refs.infoboxContainer.innerHTML;e.setHtmlContent(t)}}},render(){let e=this.getMap(),t=this.getItem();if(e){t&&this.destroy();let n=this.convertOptions(),o=n&&n.location;"object"!=typeof o&&(o=e.getCenter(),n.location=o,n.visible=!1),t=this.setItem(new Microsoft.Maps.Infobox(o,n)),this.setCustomHtml(),t.setMap(e)}else r.logger.error("infobox render error: map not found!")},destroy(){let e=this.getItem();try{if(e){this.getMap()&&e.setMap(null)}}finally{this.setItem(null)}}},mounted(){r.logger.log("mounted lifecycle hook, rendering infobox"+this._uid+"..."),this.render()},updated(){r.logger.log("updated lifecycle hook, infobox "+this._uid+" updating infobox HTML..."),this.setCustomHtml()},beforeDestroy(){r.logger.log("beforeDestroy lifecycle hook, destroying infobox "+this._uid+"..."),this.destroy()}},function(){var e=this.$createElement;return(this._self._c||e)("div",{ref:"infoboxContainer"},[this._t("default")],2)},[],!1,null,null,null).exports;window.Promise||(window.Promise=o.a);t.default={mixins:{componentBase:s},components:{map:u,layer:f,pushpin:m,infobox:g},services:{conversions:a},install(e,t){t&&Object.assign(i,t),r.logger.log("registering bing-map component..."),e.component(u.name,e.extend(u)),r.logger.log("registering bing-map-layer component..."),e.component(f.name,e.extend(f)),r.logger.log("registering bing-map-pushpin component..."),e.component(m.name,e.extend(m)),r.logger.log("registering bing-map-infobox component..."),e.component(g.name,e.extend(g)),r.logger.log("bing map vue plugin installed!")}}}]);