{"version":3,"sources":["webpack:///./src/views/account/zones/components/ZoneMap.vue?0aba","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./src/views/account/zones/components/ZoneMap.vue?ecc3","webpack:///./src/views/account/zones/components/ZoneMap.vue","webpack:///./src/views/account/zones/components/ZoneMap.vue?464a"],"names":["_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2","_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","id","google","window","defineComponent","name","emits","props","type","String","default","zoom","Number","coordinatesGroup","highlightIndex","editablePolygon","Boolean","draggablePolygon","drawEnabled","showAllZones","editZoneId","data","map","drawingManager","polygons","zonePolygons","textOverlays","mounted","initMap","$store","dispatch","ZoneActions","FETCH_ZONES","pageSize","pageNumber","drawZonesPolygons","methods","_center","this","getCoordinatesCenter","maps","Map","document","getElementById","center","lat","lng","drawing","DrawingManager","drawingMode","OverlayType","POLYGON","drawingControl","drawingControlOptions","position","ControlPosition","TOP_CENTER","drawingModes","polygonOptions","editable","draggable","event","addListener","clearPolygons","newPolygon","overlay","setEditable","setDraggable","setOptions","fillColor","fillOpacity","zIndex","addListeners","path","getPath","getArray","coordinates","latLng","push","$emit","setMap","drawPolygons","polygon","Polygon","paths","zones","strokeWeight","addTextOverlay","zone","clearZonePolygons","toRaw","text","bounds","LatLngBounds","point","extend","getCenter","emptyImage","icon","url","scaledSize","Size","origin","Point","anchor","marker","Marker","label","color","className","fontSize","fontWeight","clearTextOverlays","coordinate","LatLng","centerMap","setCenter","highlightPolygon","index","highlightedPolygon","highlightedBounds","highlightedCoordinate","removeListeners","updatePolygonCoordinates","force","clearListeners","watch","immediate","handler","newVal","$nextTick","computed","getters","filter","z","ZoneModel","convertToMapPolygonFormat","__exports__"],"mappings":"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","file":"js/chunk-444ab47a.e2315140.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ZoneMap.vue?vue&type=style&index=0&id=eaa134d0&lag=scss&lang=css\"","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"zone-map relative\" }\nconst _hoisted_2 = [\"id\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n id: _ctx.id,\n class: \"w-full h-full overflow-auto\"\n }, null, 8, _hoisted_2)\n ]))\n}","\nimport { defineComponent, PropType, toRaw } from 'vue'\nimport { ZoneInterface } from '@/shared/interfaces/zone.interface'\nimport { ZoneActions } from '@/store/modules/zones/actions'\nimport { ZoneModel } from '@/shared/models/zone.model'\nconst google = window.google\n\nexport default defineComponent({\n name: 'ZoneMap',\n emits: ['redirectToGoogleMap', 'drawCompleted', 'polygonDragged'],\n props: {\n id: {\n type: String,\n default: 'zone-map'\n },\n zoom: {\n type: Number,\n default: 15\n },\n coordinatesGroup: {\n type: Array as PropType>>,\n default: () => []\n },\n highlightIndex: {\n type: Number,\n default: -1\n },\n editablePolygon: {\n type: Boolean,\n default: true\n },\n draggablePolygon: {\n type: Boolean,\n default: true\n },\n drawEnabled: {\n type: Boolean,\n default: true\n },\n showAllZones: {\n type: Boolean,\n default: false\n },\n editZoneId: {\n type: [Number, String],\n default: null\n }\n },\n data () {\n return {\n map: {} as any,\n drawingManager: {} as any,\n polygons: [] as any,\n zonePolygons: [] as any,\n textOverlays: [] as any\n }\n },\n async mounted () {\n this.initMap()\n if (this.showAllZones) {\n await this.$store.dispatch(`zones/${ZoneActions.FETCH_ZONES}`, { pageSize: 9999, pageNumber: 1 })\n this.drawZonesPolygons()\n }\n },\n methods: {\n initMap () {\n const _center = this.coordinatesGroup.length ? this.getCoordinatesCenter() : null\n // create a map\n this.map = new google.maps.Map(document.getElementById(this.id)!, {\n center: _center || { lat: 33.312805, lng: 44.361488 },\n zoom: this.zoom\n })\n\n // create DrawingManager to draw action if prop value is enable\n if (this.drawEnabled) {\n this.drawingManager = new google.maps.drawing.DrawingManager({\n drawingMode: google.maps.drawing.OverlayType.POLYGON,\n drawingControl: true,\n drawingControlOptions: {\n position: google.maps.ControlPosition.TOP_CENTER,\n drawingModes: [google.maps.drawing.OverlayType.POLYGON]\n },\n polygonOptions: {\n editable: true,\n draggable: true\n }\n })\n\n // drawing completed\n google.maps.event.addListener(\n this.drawingManager,\n 'overlaycomplete',\n (event: any) => {\n if (event.type === google.maps.drawing.OverlayType.POLYGON) {\n this.clearPolygons()\n // Set new polygon\n const newPolygon = event.overlay as any\n newPolygon.setEditable(true)\n newPolygon.setDraggable(true)\n newPolygon.setOptions({ fillColor: '#000000', fillOpacity: 0.35, zIndex: 100 })\n // listen to drag - drop event\n this.addListeners(newPolygon, true)\n\n // get coordinates of polygon\n const path = newPolygon.getPath().getArray()\n const coordinates = path.map((latLng: any) => ([\n latLng.lat(),\n latLng.lng()\n ]))\n\n this.polygons.push(newPolygon)\n this.$emit('drawCompleted', coordinates)\n }\n }\n )\n\n // start to draw action\n this.drawingManager.setMap(this.map)\n }\n },\n drawPolygons (coordinatesGroup:any) {\n this.clearPolygons()\n for (const coordinates of coordinatesGroup) {\n const polygon = new google.maps.Polygon({\n paths: coordinates,\n editable: this.editablePolygon,\n draggable: this.draggablePolygon,\n map: this.map,\n zIndex: 100\n })\n\n this.polygons.push(polygon)\n this.addListeners(polygon)\n }\n },\n drawZonesPolygons () {\n for (const coordinates of this.zones) {\n const polygon = new google.maps.Polygon({\n paths: coordinates.polygons,\n editable: false,\n draggable: false,\n map: this.map,\n zIndex: 99,\n fillColor: '#13fb03',\n fillOpacity: 0.5,\n strokeWeight: 1.5\n })\n this.addTextOverlay(polygon, coordinates.zone.name)\n this.zonePolygons.push(polygon)\n }\n },\n clearZonePolygons () {\n for (const polygon of this.zonePolygons) {\n toRaw(polygon).setMap(null)\n polygon.setMap(null)\n }\n this.zonePolygons = []\n },\n addTextOverlay (polygon: any, text: string) {\n const path = polygon.getPath().getArray()\n const bounds = new google.maps.LatLngBounds()\n for (const point of path) {\n bounds.extend(point)\n }\n const center = bounds.getCenter()\n // 1p x 1px empty transparent image\n const emptyImage = 'data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='\n const icon = {\n url: emptyImage,\n scaledSize: new google.maps.Size(50, 50), // scaled size\n origin: new google.maps.Point(0, 0), // origin\n anchor: new google.maps.Point(0, 0) // anchor\n }\n const marker = new google.maps.Marker({\n position: center,\n map: this.map,\n icon,\n label: {\n text,\n color: 'black',\n className: 'google-map-zone-label',\n fontSize: '11px',\n fontWeight: 'bold'\n },\n zIndex: 9999\n })\n this.textOverlays.push(marker)\n },\n clearTextOverlays () {\n // remove all overlays\n for (const overlay of this.textOverlays) {\n toRaw(overlay).setMap(null)\n overlay.setMap(null)\n }\n this.textOverlays = []\n },\n getCoordinatesCenter () {\n if (!this.coordinatesGroup.length) return false\n const bounds = new google.maps.LatLngBounds()\n for (const coordinates of this.coordinatesGroup) {\n for (const coordinate of coordinates) {\n const latLng = new google.maps.LatLng(coordinate.lat, coordinate.lng)\n bounds.extend(latLng)\n }\n }\n return bounds.getCenter()\n },\n centerMap () {\n const center = this.getCoordinatesCenter()\n this.map.setCenter(center)\n },\n highlightPolygon (index: number) {\n // remove all polygon highlight\n for (const polygon of this.polygons) {\n polygon.setOptions({ fillColor: '#000000', fillOpacity: 0.35 })\n }\n\n // when index is out of scope\n if (index === -1 || index >= this.polygons.length) {\n return\n }\n\n // highlight target polygon\n const highlightedPolygon = this.polygons[index]\n highlightedPolygon.setOptions({ fillColor: '#13fb03', fillOpacity: 0.5 })\n\n const highlightedBounds = new google.maps.LatLngBounds()\n for (const highlightedCoordinate of this.coordinatesGroup[this.highlightIndex]) {\n const latLng = new google.maps.LatLng(highlightedCoordinate.lat, highlightedCoordinate.lng)\n highlightedBounds.extend(latLng)\n }\n this.map.setCenter(highlightedBounds.getCenter())\n },\n clearPolygons () {\n // remove all polygons\n for (const polygon of this.polygons) {\n this.removeListeners(polygon)\n toRaw(polygon).setMap(null)\n polygon.setMap(null)\n }\n this.polygons = []\n },\n updatePolygonCoordinates (polygon: any) {\n // update polygon coordinates\n const path = polygon.getPath().getArray()\n const coordinates = path.map((latLng:any) => ([\n latLng.lat(),\n latLng.lng()\n ]))\n this.$emit('polygonDragged', coordinates)\n },\n addListeners (polygon:any, force = false) {\n if (this.draggablePolygon || force) {\n google.maps.event.addListener(polygon, 'dragend', () => {\n this.updatePolygonCoordinates(polygon)\n })\n }\n if (this.editablePolygon || force) {\n google.maps.event.addListener(polygon, 'set_at', () => {\n this.updatePolygonCoordinates(polygon)\n })\n\n google.maps.event.addListener(polygon.getPath(), 'set_at', () => {\n this.updatePolygonCoordinates(polygon)\n })\n\n google.maps.event.addListener(polygon.getPath(), 'insert_at', () => {\n this.updatePolygonCoordinates(polygon)\n })\n }\n },\n removeListeners (polygon:any) {\n google.maps.event.clearListeners(polygon, 'dragend')\n google.maps.event.clearListeners(polygon, 'set_at')\n google.maps.event.clearListeners(polygon.getPath(), 'set_at')\n google.maps.event.clearListeners(polygon.getPath(), 'insert_at')\n }\n },\n watch: {\n coordinatesGroup: {\n immediate: true,\n handler (newVal) {\n this.$nextTick(() => {\n this.drawPolygons(newVal)\n if (newVal.length) {\n this.centerMap()\n }\n })\n }\n },\n highlightIndex (newVal) {\n this.highlightPolygon(newVal)\n },\n showAllZones (newVal) {\n if (newVal) {\n this.drawZonesPolygons()\n } else {\n this.clearZonePolygons()\n this.clearTextOverlays()\n }\n }\n },\n computed: {\n zones () {\n let zones = this.$store.getters['zones/getZones']\n if (this.editZoneId) {\n zones = this.$store.getters['zones/getZones'].filter((z: ZoneInterface) => z.id !== this.editZoneId)\n }\n return zones.map((z: ZoneInterface) => {\n return {\n polygons: ZoneModel.convertToMapPolygonFormat(z.polygon),\n zone: z\n }\n })\n }\n }\n})\n","import { render } from \"./ZoneMap.vue?vue&type=template&id=eaa134d0&ts=true\"\nimport script from \"./ZoneMap.vue?vue&type=script&lang=ts\"\nexport * from \"./ZoneMap.vue?vue&type=script&lang=ts\"\n\nimport \"./ZoneMap.vue?vue&type=style&index=0&id=eaa134d0&lag=scss&lang=css\"\n\nimport exportComponent from \"/usr/src/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}