{"version":3,"sources":["components/LeafletMap/index.tsx"],"names":["props","icon","iconSize","iconUrl","mapRef","coordinates","zoom","position","setPosition","isRendering","getCoordinatesFromAddress","address","a","get","response","data","console","log","updateMap","setTimeout","current","leafletElement","invalidateSize","lat","lon","window","addEventListener","removeEventListener","center","ref","attribution","url"],"mappings":"6fAoFe,UAxEI,SAACA,GACnB,IAAMC,EAAO,IAAEA,KAAK,CACnBC,SAAU,CAAC,GAAI,IACfC,QAAS,YAAY,0CAGhBC,EAAS,iBAAO,MAEdC,EAA2BL,EAA3BK,YAR4B,EAQDL,EAAdM,YARe,MAQR,GARQ,IASJ,mBAASD,GATL,mBAS7BE,EAT6B,KASnBC,EATmB,OAUE,mBAAS,GAVX,mBAWhCC,GAXgC,WAWT,GAErBC,EAA4B,SAAOC,GAAP,OAA0B,O,OAAA,uGAEzC,OAFyC,kBAEnC,EAAAC,EAAMC,IAAI,4DAA8DF,GAFrC,cAEpDG,EAFoD,yBAGnDA,EAASC,MAH0C,sCAK1DC,QAAQC,IAAI,8BAAZ,MAL0D,+DAoBtDC,EAAY,WACjBC,YAAW,WACVf,EAAOgB,QAAQC,eAAeC,mBAC5B,IAwBJ,OArBA,qBAAU,WAYT,OAXIb,IACEJ,GAAgBA,EAAY,IAAOA,EAAY,IAlBzB,O,OAAA,6GACf,OADe,SACTK,EAA0BV,EAAMW,SADvB,QACtBI,EADsB,QAEnB,KAAI,EACSA,EAAK,GAAlBQ,EADI,EACJA,IAAKC,EADD,EACCA,IACTf,GACHD,EAAY,CAACe,EAAKC,KALQ,4CAuBxB,KAEHC,OAAOC,iBAAiB,YAAaR,GAG/B,WACNT,GAAc,EAEV,KACHgB,OAAOE,oBAAoB,YAAaT,MAGxC,IAEEX,GAAaA,EAAS,IAAOA,EAAS,GAK1C,kBAAC,IAAD,CAAKqB,OAAQrB,EAAUD,KAAMA,EAAMuB,IAAKzB,GACvC,kBAAC,IAAD,CAAW0B,YAAY,wFAAuFC,IAAI,uDAClH,kBAAC,IAAD,CAAQxB,SAAUA,EAAUN,KAAMA,KAN5B","file":"assets/js/12.chunk.js?cb=49305362ddcad9030f53","sourcesContent":["import React, { useEffect, useState, useRef } from \"react\";\nimport { Map, Marker, TileLayer } from \"react-leaflet\";\nimport L from \"leaflet\";\nimport axios from \"axios\";\nimport { getAssetUrl, hasWindow } from \"@utils\";\n\ninterface IProps {\n\taddress?: string;\n\tcoordinates?: number[];\n\tzoom?: number;\n}\n\nconst LeafletMap = (props: IProps) => {\n\tconst icon = L.icon({\n\t\ticonSize: [25, 41],\n\t\ticonUrl: getAssetUrl(\"/assets/images/icons/marker-icon.png\"),\n\t});\n\n\tconst mapRef = useRef(null);\n\n\tconst { coordinates, zoom = 15 } = props;\n\tconst [position, setPosition] = useState(coordinates);\n\tconst [updateCount, setUpdateCount] = useState(0);\n\tlet isRendering: boolean = true;\n\n\tconst getCoordinatesFromAddress = async (address: string) => {\n\t\ttry {\n\t\t\tconst response = await axios.get(\"https://nominatim.openstreetmap.org/search?format=json&q=\" + address);\n\t\t\treturn response.data;\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Error while getting address\", e);\n\t\t\tthrow e;\n\t\t}\n\t};\n\n\tconst getCoords = async () => {\n\t\tconst data = await getCoordinatesFromAddress(props.address);\n\t\tif (data[0]) {\n\t\t\tconst { lat, lon } = data[0];\n\t\t\tif (isRendering) {\n\t\t\t\tsetPosition([lat, lon]);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst updateMap = () => {\n\t\tsetTimeout(() => {\n\t\t\tmapRef.current.leafletElement.invalidateSize();\n\t\t}, 0);\n\t};\n\n\tuseEffect(() => {\n\t\tif (isRendering) {\n\t\t\tif (!coordinates || !coordinates[0] || !coordinates[1]) {\n\t\t\t\tgetCoords();\n\t\t\t}\n\t\t}\n\n\t\tif (hasWindow) {\n\t\t\t/* update map when tab changed so tiles are drawn correctly */\n\t\t\twindow.addEventListener(\"tabChange\", updateMap);\n\t\t}\n\n\t\treturn () => {\n\t\t\tisRendering = false;\n\n\t\t\tif (hasWindow) {\n\t\t\t\twindow.removeEventListener(\"tabChange\", updateMap);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tif (!position || !position[0] || !position[1]) {\n\t\treturn <></>;\n\t}\n\n\treturn (\n\t\t<Map center={position} zoom={zoom} ref={mapRef}>\n\t\t\t<TileLayer attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMapin</a> tekijät' url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\" />\n\t\t\t<Marker position={position} icon={icon} />\n\t\t</Map>\n\t);\n};\n\nexport default LeafletMap;\n"],"sourceRoot":""}