{"version":3,"file":"Map.mjs","names":["React","useRef","useState","useEffect","MapContext","ol","DragRotateAndZoom","defaults","defaultInteractions","Select","OlSelect","Style","OlStyle","Icon","OlIcon","click","olClick","GeoLocation","fromLonLat","usePrevious","last","Map","t0","$","_c","children","zoom","center","projection","sendSelected","sendType","SelectedPin","changeLat","changeLong","setPosition","width","height","addressBar","popoverOverlayProps","additionalOnclickFeature","popoverRef","setSelectInteraction","setPopoverOverlay","setMapObject","mapRef","map","setMap","selected","setSelected","markingType","setMarkingType","count","setCount","mapClicked","setMapclicked","prevCount","t1","options","view","View","interactions","extend","layers","controls","overlays","mapObject","setTarget","current","popoverOverlay","Overlay","element","autoPan","addOverlay","pointSelect","condition","_temp","filter","_temp2","multi","hitTolerance","style","image","anchor","anchorXUnits","anchorYUnits","src","on","e_0","currentFeature","e","currentFeaturesProperties","getProperties","getGeometry","getCoordinates","Object","keys","length","addInteraction","undefined","t2","Symbol","for","t3","t4","t5","t6","t7","id","type","postSelected","t8","getView","setZoom","t9","t10","t11","e_1","forEachFeatureAtPixel","pixel","a","values_","geometry","flatCoordinates","t12","setCenter","t13","t14","t15","t16","getview","getprojection","t17","t18","t19","marginLeft","marginTop","t20","t21","t22","t23","f","getType"],"sources":["../../../src/map-library/Map/Map.jsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport './Map.css';\nimport MapContext from './MapContext';\nimport * as ol from 'ol';\nimport {\n  DragRotateAndZoom,\n  defaults as defaultInteractions,\n  Select as OlSelect\n} from 'ol/interaction';\nimport { Style as OlStyle, Icon as OlIcon } from 'ol/style';\n\nimport { click as olClick } from 'ol/events/condition';\nimport GeoLocation from '../geoLocation/GeoLocation';\nimport { fromLonLat } from 'ol/proj';\nimport { usePrevious } from '../../utilities/usePrevious';\nimport { last } from 'lodash-es';\n\nexport const Map = ({\n  children,\n  zoom,\n  center,\n  projection,\n  addInteractions,\n  sendSelected,\n  sendType,\n  SelectedPin,\n  changeLat,\n  changeLong,\n  setPosition,\n  width,\n  height,\n  addressBar,\n  popoverOverlayProps,\n  additionalOnclickFeature,\n  popoverRef,\n  setSelectInteraction,\n  setPopoverOverlay,\n  setMapObject\n}) => {\n  const mapRef = useRef();\n  const [map, setMap] = useState(null);\n  const [selected, setSelected] = useState();\n  const [markingType, setMarkingType] = useState();\n  const [count, setCount] = useState(0);\n  const [mapClicked, setMapclicked] = useState(false);\n\n  const prevCount = usePrevious(count);\n\n  // on component mount\n  useEffect(() => {\n    const options = {\n      view: new ol.View({\n        center: fromLonLat(center),\n        zoom,\n        projection\n      }),\n      interactions: defaultInteractions().extend([new DragRotateAndZoom()]),\n      layers: [],\n      controls: [],\n      overlays: []\n    };\n\n    const mapObject = new ol.Map(options);\n    mapObject.setTarget(mapRef.current);\n\n    let popoverOverlay;\n    if (popoverRef) {\n      popoverOverlay = new ol.Overlay({\n        element: popoverRef?.current,\n        autoPan: true,\n        ...popoverOverlayProps\n      });\n      mapObject.addOverlay(popoverOverlay);\n\n      if (setPopoverOverlay) {\n        setPopoverOverlay(popoverOverlay);\n      }\n    }\n\n    setMap(mapObject);\n\n    if (setMapObject) {\n      setMapObject(mapObject);\n    }\n\n    const pointSelect = new OlSelect({\n      condition: (e) => {\n        return olClick(e);\n      },\n      filter: (f) => {\n        if (f.getGeometry().getType() === 'Point') {\n          return true;\n        }\n      },\n      multi: true,\n      hitTolerance: 10,\n      style: new OlStyle({\n        image: new OlIcon({\n          anchor: [0.5, 48],\n          anchorXUnits: 'fraction',\n          anchorYUnits: 'pixels',\n          src: SelectedPin\n        })\n      })\n    });\n    pointSelect.on('select', (e) => {\n      const currentFeature = last(e.selected);\n      const currentFeaturesProperties = currentFeature?.getProperties();\n\n      if (popoverOverlay && popoverRef?.current && currentFeaturesProperties) {\n        popoverOverlay.setPosition(\n          currentFeature?.getGeometry().getCoordinates()\n        );\n      }\n\n      if (\n        additionalOnclickFeature &&\n        (!currentFeaturesProperties ||\n          (currentFeaturesProperties &&\n            Object.keys(currentFeaturesProperties)?.length > 1))\n      ) {\n        additionalOnclickFeature(currentFeaturesProperties);\n      }\n    });\n\n    mapObject.addInteraction(pointSelect);\n\n    if (setSelectInteraction) {\n      setSelectInteraction(pointSelect);\n    }\n    return () => mapObject.setTarget(undefined);\n  }, []);\n\n  useEffect(() => {\n    sendSelected(selected);\n  }, [sendSelected, selected]);\n\n  useEffect(() => {\n    sendType(markingType);\n  }, [sendType, markingType]);\n\n  const postSelected = (id, type) => {\n    setSelected(id);\n    setMarkingType(type);\n  };\n  // console.log('ID, TYPE', selected, markingType);\n\n  // zoom change handler\n  useEffect(() => {\n    if (!map) return;\n\n    map.getView().setZoom(zoom);\n  }, [zoom]);\n\n  // click event handler\n  useEffect(() => {\n    if (!map) return;\n\n    map.on('click', (e) => {\n      setMapclicked(true);\n      map.forEachFeatureAtPixel(\n        e.pixel,\n        // a => setSelected(a.values_.geometry.flatCoordinates[2])\n        (a) =>\n          postSelected(\n            a.values_.geometry.flatCoordinates[2],\n            a.values_.geometry.flatCoordinates[3]\n          )\n      );\n    });\n  }, [map]);\n\n  // center change handler - Caused issue of recentering the map on each map selection when passed.\n  useEffect(() => {\n    if (!map) return;\n    setCount(zoom);\n    if (zoom === prevCount && !mapClicked) {\n      map.getView().setCenter(center);\n    }\n  }, [center]);\n\n  useEffect(() => {\n    if (!map) return;\n\n    if (!mapClicked) {\n      map.getView().setCenter(center);\n    }\n  }, [map]);\n\n  useEffect(() => {\n    if (!map) return;\n    map.getview().getprojection(projection);\n  }, [projection]);\n\n  return (\n    <MapContext.Provider value={{ map }}>\n      {addressBar && (\n        <div style={{ marginLeft: 35, marginTop: -6 }}>\n          <GeoLocation\n            // sendSelected={setCenter}\n            center={center}\n            changeLat={changeLat}\n            changeLong={changeLong}\n            setPosition={setPosition}\n          />\n        </div>\n      )}\n\n      <div ref={mapRef} style={{ height: height || '85vh', width: width }}>\n        {children}\n      </div>\n    </MapContext.Provider>\n  );\n};\n"],"mappings":"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"}