{"version":3,"sources":["webpack:///./src/pages/MapPage/Map/MapLocateButton.vue?ca10","webpack:///./src/pages/MapPage/Map/MapLocateButton.vue","webpack:///src/pages/MapPage/Map/MapLocateButton.vue","webpack:///./src/pages/MapPage/Map/MapLocateButton.vue?f443","webpack:///./src/pages/MapPage/Map/MapLocateButton.vue?70ff"],"names":["scopedSlots","_vm","on","staticStyle","attrs","_c","staticRenderFns","render","component"],"mappings":"2IAAA,W,iGCA0G,W,IAAI,OAACA,UAAYC,G,OAAY,EAAC,SAAW,Q,MAAI,C,KAAa,I,YAAqC,O,4BAA+B,G,IAAmC,IAAQ,G,MAAG,UAAa,EAAC,GAAG,C,MAAM,CAAI,4BAAG,aAAC,sBAAC,MAAQA,GAAgB,kBAAGC,IAAO,I,GAAkB,CAAqB,uBAA8B,cAAG,OAAO,MAAW,EAAI,YAAqKC,GAAW,GAAC,yB,CAAsC,SAAQ,qGAAM,MAAC,kCAACC,YAAM,CAAC,SAAW,WAA8B,aAAG,MAAC,QAA2B,OAAIC,MAAG,EAAS,0B,GAAQ,CAAW,yBAC9wB,WACGC,OAEJ,KAASC,O,wKCyBT,GACA,uBACA,gBACA,OACA,2BACA,oBACA,gBACA,kBACA,UACA,kCAGA,0CACA,gDACA,qBACA,2DAGA,OACA,mBACA,QACA,6BACA,0CACA,qBACA,sCAEA,sBACA,2BACA,uBACA,+BAEA,0BAGA,uCACA,0DACA,qCACA,uBACA,uBACA,QAIA,SACA,wBACA,kBACA,0CACA,oCACA,sCACA,wCACA,uBAGA,0BACA,oBACA,2BACA,4BACA,yCACA,wCACA,0CAEA,sBACA,uBAGA,4BACA,0BACA,sCACA,sCACA,KACA,2DACA,2BACA,iEAEA,kCACA,iEAEA,4CACA,mCACA,wCAGA,+CAGA,OAFA,oBACA,4BACA,4BAGA,mBACA,qCAEA,cAIA,mBACA,0BC7HsX,I,wBCQlXC,EAAY,eACd,EACA,EACAF,GACA,EACA,KACA,KACA,MAIa,aAAAE,E","file":"js/chunk-496664ba.e56d8f24.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLocateButton.vue?vue&type=style&index=0&id=87f4f34a&prod&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-tooltip',{attrs:{\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"label\":\"Gå til din posisjon\",\"aria-label\":\"Gå til din posisjon\",\"small\":\"\",\"data-v-step\":\"5\",\"fab\":\"\"},on:{\"click\":_vm.toggleLocate}},on),[_c('v-icon',{attrs:{\"color\":_vm.iconColor}},[_vm._v(\"gps_fixed\")])],1)]}}])},[_c('span',[_vm._v(\"Gå til din posisjon\")])]),_c('v-fade-transition',[(_vm.locateActive && _vm.$vuetify.breakpoint.smAndDown)?_c('v-btn',{class:_vm.trackingActive ? 'white--text' : '',staticStyle:{\"position\":\"absolute\",\"bottom\":\"0px\",\"right\":\"50px\"},attrs:{\"color\":_vm.trackingActive ? 'blue' : ''},on:{\"click\":_vm.toggleTracking}},[_c('v-icon',{attrs:{\"size\":\"16\"}},[_vm._v(\"mdi-navigation\")]),_vm._v(\"\\n      \"+_vm._s(_vm.trackingActive ? \"Følger\" : \"Følg meg\")+\"\\n    \")],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <v-tooltip left>\r\n      <template v-slot:activator=\"{ on }\">\r\n        <v-btn label=\"Gå til din posisjon\"\r\n                aria-label=\"Gå til din posisjon\" small v-on=\"on\" data-v-step=\"5\" fab @click=\"toggleLocate\">\r\n          <v-icon :color=\"iconColor\">gps_fixed</v-icon>\r\n        </v-btn>\r\n      </template>\r\n      <span>Gå til din posisjon</span>\r\n    </v-tooltip>\r\n    <v-fade-transition>\r\n      <v-btn\r\n        v-if=\"locateActive && $vuetify.breakpoint.smAndDown\"\r\n        style=\"position: absolute; bottom: 0px; right: 50px;\"\r\n        :color=\"trackingActive ? 'blue' : ''\"\r\n        :class=\"trackingActive ? 'white--text' : ''\"\r\n        @click=\"toggleTracking\"\r\n      >\r\n        <v-icon size=\"16\">mdi-navigation</v-icon>\r\n        {{ trackingActive ? \"Følger\" : \"Følg meg\" }}\r\n      </v-btn>\r\n    </v-fade-transition>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { loadModules } from \"esri-loader\";\r\nimport { mapState } from \"vuex\";\r\nexport default {\r\n  name: \"MapLocateButton\",\r\n  data: function() {\r\n    return {\r\n      locateButtonViewModel: null,\r\n      trackViewModel: null,\r\n      locateActive: false,\r\n      trackingActive: false,\r\n      heading: 0,\r\n      runLoadLocateOnSceneViewLoad: false\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapState([\"is3d\", \"sceneViewLoaded\"]),\r\n    iconColor() {\r\n      return this.locateActive || this.trackingActive ? \"blue\" : \"\";\r\n    }\r\n  },\r\n  watch: {\r\n    is3d(newVal, oldVal) {\r\n      if (newVal !== oldVal) {\r\n        if (this.locateButtonViewModel) {\r\n          this.locateButtonViewModel.cancelLocate();\r\n          this.locateActive = false;\r\n          this.locateButtonViewModel.destroy();\r\n        }\r\n        if (this.trackViewModel) {\r\n          this.trackViewModel.stop();\r\n          this.trackingActive = false;\r\n          this.trackViewModel.destroy();\r\n        }\r\n        this.loadLocateButton();\r\n      }\r\n    },\r\n    sceneViewLoaded(newVal) {\r\n      if (newVal && this.locateActive && this.runLoadLocateOnSceneViewLoad) {\r\n        this.runLoadLocateOnSceneViewLoad = false;\r\n        setTimeout(() => {\r\n          this.loadLocateButton();\r\n        }, 3000);\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    toggleLocate() {\r\n      this.locateActive\r\n        ? this.locateButtonViewModel.cancelLocate()\r\n        : this.locateButtonViewModel.locate();\r\n      this.locateActive = !this.locateActive;\r\n      if (!this.locateActive && this.trackingActive) {\r\n        this.toggleTracking();\r\n      }\r\n    },\r\n    toggleTracking() {\r\n      this.trackingActive\r\n        ? this.trackViewModel.stop()\r\n        : this.trackViewModel.start();\r\n      this.trackingActive = !this.trackingActive;\r\n      if (this.locateActive && this.trackingActive) {\r\n        this.locateButtonViewModel.cancelLocate();\r\n      }\r\n      if (!this.trackingActive) {\r\n        this.locateActive = false;\r\n      }\r\n    },\r\n    loadLocateButton: function() {\r\n      loadModules([\r\n        \"esri/widgets/Locate/LocateViewModel\",\r\n        \"esri/widgets/Track/TrackViewModel\"\r\n      ]).then(\r\n        function([LocateViewModel, TrackViewModel]) {\r\n          this.trackViewModel = new TrackViewModel({\r\n            view: this.is3d ? this.$theSceneViewObject : this.$theMapViewObject\r\n          });\r\n          this.locateButtonViewModel = new LocateViewModel({\r\n            view: this.is3d ? this.$theSceneViewObject : this.$theMapViewObject\r\n          });\r\n          this.trackViewModel.on(\"track\", evt => {\r\n            if (evt.position.coords.heading !== null) {\r\n              this.heading = evt.position.coords.heading;\r\n            }\r\n          });\r\n          this.trackViewModel.goToOverride = (view, goToParams) => {\r\n            goToParams.target.scale = null;\r\n            goToParams.target.rotation = this.heading;\r\n            return view.goTo(goToParams.target, goToParams.options);\r\n          };\r\n\r\n          if (this.locateActive) {\r\n            this.locateButtonViewModel.locate();\r\n          }\r\n        }.bind(this)\r\n      );\r\n    }\r\n  },\r\n  mounted() {\r\n    this.loadLocateButton();\r\n  }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style>\r\n.vertical-v-btn-toggle {\r\n  flex-direction: column;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLocateButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLocateButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MapLocateButton.vue?vue&type=template&id=87f4f34a\"\nimport script from \"./MapLocateButton.vue?vue&type=script&lang=js\"\nexport * from \"./MapLocateButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./MapLocateButton.vue?vue&type=style&index=0&id=87f4f34a&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}