@chayns-components/maps 5.0.0-beta.837 → 5.0.0-beta.841
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/position-input/map-wrapper/MapWrapper.js +1 -1
- package/lib/cjs/components/position-input/map-wrapper/MapWrapper.js.map +1 -1
- package/lib/cjs/components/position-input/map-wrapper/map/Map.js +1 -1
- package/lib/cjs/components/position-input/map-wrapper/map/Map.js.map +1 -1
- package/lib/esm/components/position-input/map-wrapper/MapWrapper.js +1 -1
- package/lib/esm/components/position-input/map-wrapper/MapWrapper.js.map +1 -1
- package/lib/esm/components/position-input/map-wrapper/map/Map.js +1 -1
- package/lib/esm/components/position-input/map-wrapper/map/Map.js.map +1 -1
- package/package.json +10 -10
|
@@ -146,7 +146,7 @@ const MapWrapper = ({
|
|
|
146
146
|
id,
|
|
147
147
|
position
|
|
148
148
|
}) => {
|
|
149
|
-
items.push(
|
|
149
|
+
items.push(/*#__PURE__*/_react.default.createElement(_Marker.default, {
|
|
150
150
|
key: `marker_${id}`,
|
|
151
151
|
id: id,
|
|
152
152
|
position: position,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapWrapper.js","names":["_react","_interopRequireWildcard","require","_reactWrapper","_MapWrapper","_api","_Marker","_interopRequireDefault","_Map","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MapWrapper","apiToken","polygonOptions","initialZoom","initialPosition","markers","onMarkerAdd","onMarkerRemove","onMarkerChange","polygonPath","setPolygonPath","useState","canPolyDraw","setCanPolyDraw","zoom","setZoom","center","setCenter","internalMarkers","setInternalMarkers","map","setMap","useEffect","handleClick","useCallback","_e$latLng","latLng","toJSON","prevState","length","newMarker","position","lat","lng","id","_internalMarkers$","_internalMarkers$2","_internalMarkers$3","_internalMarkers$4","_internalMarkers$5","_internalMarkers$6","_internalMarkers$7","_internalMarkers$8","path","maxLat","reduce","prev","current","minLat","maxLng","minLng","topLeft","find","item","bottomRight","centerLat","centerLng","polygonCenter","handleIdle","m","_m$getCenter","getZoom","getCenter","handlePositionChange","handleMarkerChange","marker","updatedMarkers","prevMarker","handleMarkerRemove","filter","markerList","useMemo","items","forEach","push","createElement","key","isDraggable","onChange","onRemove","StyledMapWrapper","Wrapper","apiKey","libraries","onClick","onIdle","onPositionChange","fullscreenControl","mapTypeControl","streetViewControl","Polygon","options","displayName","_default","exports"],"sources":["../../../../../src/components/position-input/map-wrapper/MapWrapper.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Wrapper } from '@googlemaps/react-wrapper';\nimport { StyledMapWrapper } from './MapWrapper.styles';\nimport type { IMarker, PolygonOptions, Position } from '../../../types/positionInput';\nimport { Polygon } from '@react-google-maps/api';\nimport Marker from './map/marker/Marker';\nimport Map from './map/Map';\n\nexport type MapWrapperProps = {\n apiToken: string;\n polygonOptions: PolygonOptions;\n initialZoom: number;\n initialPosition: Position;\n markers?: IMarker[];\n onMarkerAdd?: (marker: IMarker) => void;\n onMarkerRemove?: (id: number) => void;\n onMarkerChange?: (markers: IMarker[]) => void;\n};\n\nconst MapWrapper: FC<MapWrapperProps> = ({\n apiToken,\n polygonOptions,\n initialZoom,\n initialPosition,\n markers,\n onMarkerAdd,\n onMarkerRemove,\n onMarkerChange,\n}) => {\n const [polygonPath, setPolygonPath] = useState<Position[]>();\n const [canPolyDraw, setCanPolyDraw] = useState(false);\n const [zoom, setZoom] = useState(initialZoom);\n const [center, setCenter] = useState<Position>(initialPosition);\n const [internalMarkers, setInternalMarkers] = useState<IMarker[]>();\n const [map, setMap] = useState<google.maps.Map>();\n\n useEffect(() => {\n if (markers) {\n setInternalMarkers(markers);\n }\n }, [markers]);\n\n const handleClick = useCallback(\n (e: google.maps.MapMouseEvent) => {\n const latLng = e.latLng?.toJSON();\n\n if (!latLng) {\n return;\n }\n\n setInternalMarkers((prevState) => {\n if (prevState && prevState.length >= 2) {\n return prevState;\n }\n\n const newMarker: IMarker = {\n position: { lat: latLng.lat, lng: latLng.lng },\n id: prevState ? prevState.length : 0,\n };\n\n if (typeof onMarkerAdd === 'function') {\n onMarkerAdd(newMarker);\n }\n\n return prevState ? [...prevState, newMarker] : [newMarker];\n });\n },\n [onMarkerAdd],\n );\n\n useEffect(() => {\n if (!internalMarkers) {\n return;\n }\n\n if (internalMarkers.length !== 2) {\n setCanPolyDraw(false);\n\n return;\n }\n\n const path: Position[] = [\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n ];\n\n const maxLat = path.reduce((prev, current) => (prev.lat > current.lat ? prev : current));\n const minLat = path.reduce((prev, current) => (prev.lat < current.lat ? prev : current));\n const maxLng = path.reduce((prev, current) => (prev.lng > current.lng ? prev : current));\n const minLng = path.reduce((prev, current) => (prev.lng < current.lng ? prev : current));\n\n const topLeft = path.find((item) => item.lat === maxLat.lat && item.lng === minLng.lng);\n const bottomRight = path.find((item) => item.lat === minLat.lat && item.lng === maxLng.lng);\n\n if (!topLeft || !bottomRight) {\n return;\n }\n\n const centerLat = (topLeft.lat + bottomRight.lat) / 2;\n const centerLng = (topLeft.lng + bottomRight.lng) / 2;\n\n const polygonCenter = {\n lat: centerLat,\n lng: centerLng,\n };\n\n if (!polygonCenter) {\n return;\n }\n\n setCanPolyDraw(true);\n setPolygonPath(path);\n }, [internalMarkers]);\n\n const handleIdle = (m: google.maps.Map) => {\n setMap(m);\n setZoom(m.getZoom() ?? 0);\n setCenter(m.getCenter()?.toJSON() ?? { lat: 0, lng: 0 });\n };\n\n const handlePositionChange = (position: Position) => {\n setCenter(position);\n };\n\n const handleMarkerChange = useCallback(\n (marker: IMarker) => {\n setInternalMarkers((prevState) => {\n const updatedMarkers = (prevState ?? []).map((prevMarker) => {\n if (prevMarker.id === marker.id) {\n return { ...prevMarker, position: marker.position };\n }\n return prevMarker;\n });\n\n if (typeof onMarkerChange === 'function') {\n onMarkerChange(updatedMarkers);\n }\n\n return updatedMarkers;\n });\n },\n [onMarkerChange],\n );\n\n const handleMarkerRemove = useCallback(\n (id: number) => {\n setInternalMarkers((prevState) => {\n if (typeof onMarkerRemove === 'function') {\n onMarkerRemove(id);\n }\n\n return prevState ? prevState.filter((marker) => marker.id !== id) : [];\n });\n },\n [onMarkerRemove],\n );\n\n const markerList = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalMarkers) {\n return items;\n }\n\n internalMarkers.forEach(({ id, position }) => {\n items.push(\n <Marker\n key={`marker_${id}`}\n id={id}\n position={position}\n isDraggable\n map={map}\n onChange={handleMarkerChange}\n onRemove={handleMarkerRemove}\n />,\n );\n });\n\n return items;\n }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);\n\n return useMemo(\n () => (\n <StyledMapWrapper>\n <Wrapper apiKey={apiToken} libraries={['places']}>\n {/* ToDo find better solution */}\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <Map\n onClick={handleClick}\n onIdle={handleIdle}\n onPositionChange={handlePositionChange}\n center={center}\n zoom={zoom}\n fullscreenControl={false}\n mapTypeControl={false}\n streetViewControl={false}\n >\n {markerList}\n {canPolyDraw && <Polygon path={polygonPath} options={polygonOptions} />}\n </Map>\n </Wrapper>\n </StyledMapWrapper>\n ),\n [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions],\n );\n};\n\nMapWrapper.displayName = 'MapWrapper';\n\nexport default MapWrapper;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,IAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,IAAA,GAAAD,sBAAA,CAAAL,OAAA;AAA4B,SAAAK,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAa5B,MAAMW,UAA+B,GAAGA,CAAC;EACrCC,QAAQ;EACRC,cAAc;EACdC,WAAW;EACXC,eAAe;EACfC,OAAO;EACPC,WAAW;EACXC,cAAc;EACdC;AACJ,CAAC,KAAK;EACF,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAa,CAAC;EAC5D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EACrD,MAAM,CAACG,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAJ,eAAQ,EAACR,WAAW,CAAC;EAC7C,MAAM,CAACa,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAN,eAAQ,EAAWP,eAAe,CAAC;EAC/D,MAAM,CAACc,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAR,eAAQ,EAAY,CAAC;EACnE,MAAM,CAACS,GAAG,EAAEC,MAAM,CAAC,GAAG,IAAAV,eAAQ,EAAkB,CAAC;EAEjD,IAAAW,gBAAS,EAAC,MAAM;IACZ,IAAIjB,OAAO,EAAE;MACTc,kBAAkB,CAACd,OAAO,CAAC;IAC/B;EACJ,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,MAAMkB,WAAW,GAAG,IAAAC,kBAAW,EAC1B5C,CAA4B,IAAK;IAAA,IAAA6C,SAAA;IAC9B,MAAMC,MAAM,IAAAD,SAAA,GAAG7C,CAAC,CAAC8C,MAAM,cAAAD,SAAA,uBAARA,SAAA,CAAUE,MAAM,CAAC,CAAC;IAEjC,IAAI,CAACD,MAAM,EAAE;MACT;IACJ;IAEAP,kBAAkB,CAAES,SAAS,IAAK;MAC9B,IAAIA,SAAS,IAAIA,SAAS,CAACC,MAAM,IAAI,CAAC,EAAE;QACpC,OAAOD,SAAS;MACpB;MAEA,MAAME,SAAkB,GAAG;QACvBC,QAAQ,EAAE;UAAEC,GAAG,EAAEN,MAAM,CAACM,GAAG;UAAEC,GAAG,EAAEP,MAAM,CAACO;QAAI,CAAC;QAC9CC,EAAE,EAAEN,SAAS,GAAGA,SAAS,CAACC,MAAM,GAAG;MACvC,CAAC;MAED,IAAI,OAAOvB,WAAW,KAAK,UAAU,EAAE;QACnCA,WAAW,CAACwB,SAAS,CAAC;MAC1B;MAEA,OAAOF,SAAS,GAAG,CAAC,GAAGA,SAAS,EAAEE,SAAS,CAAC,GAAG,CAACA,SAAS,CAAC;IAC9D,CAAC,CAAC;EACN,CAAC,EACD,CAACxB,WAAW,CAChB,CAAC;EAED,IAAAgB,gBAAS,EAAC,MAAM;IAAA,IAAAa,iBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA;IACZ,IAAI,CAACxB,eAAe,EAAE;MAClB;IACJ;IAEA,IAAIA,eAAe,CAACW,MAAM,KAAK,CAAC,EAAE;MAC9BhB,cAAc,CAAC,KAAK,CAAC;MAErB;IACJ;IAEA,MAAM8B,IAAgB,GAAG,CACrB;MACIX,GAAG,EAAE,EAAAG,iBAAA,GAAAjB,eAAe,CAAC,CAAC,CAAC,cAAAiB,iBAAA,uBAAlBA,iBAAA,CAAoBJ,QAAQ,CAACC,GAAG,KAAI,CAAC;MAC1CC,GAAG,EAAE,EAAAG,kBAAA,GAAAlB,eAAe,CAAC,CAAC,CAAC,cAAAkB,kBAAA,uBAAlBA,kBAAA,CAAoBL,QAAQ,CAACE,GAAG,KAAI;IAC7C,CAAC,EACD;MACID,GAAG,EAAE,EAAAK,kBAAA,GAAAnB,eAAe,CAAC,CAAC,CAAC,cAAAmB,kBAAA,uBAAlBA,kBAAA,CAAoBN,QAAQ,CAACC,GAAG,KAAI,CAAC;MAC1CC,GAAG,EAAE,EAAAK,kBAAA,GAAApB,eAAe,CAAC,CAAC,CAAC,cAAAoB,kBAAA,uBAAlBA,kBAAA,CAAoBP,QAAQ,CAACE,GAAG,KAAI;IAC7C,CAAC,EACD;MACID,GAAG,EAAE,EAAAO,kBAAA,GAAArB,eAAe,CAAC,CAAC,CAAC,cAAAqB,kBAAA,uBAAlBA,kBAAA,CAAoBR,QAAQ,CAACC,GAAG,KAAI,CAAC;MAC1CC,GAAG,EAAE,EAAAO,kBAAA,GAAAtB,eAAe,CAAC,CAAC,CAAC,cAAAsB,kBAAA,uBAAlBA,kBAAA,CAAoBT,QAAQ,CAACE,GAAG,KAAI;IAC7C,CAAC,EACD;MACID,GAAG,EAAE,EAAAS,kBAAA,GAAAvB,eAAe,CAAC,CAAC,CAAC,cAAAuB,kBAAA,uBAAlBA,kBAAA,CAAoBV,QAAQ,CAACC,GAAG,KAAI,CAAC;MAC1CC,GAAG,EAAE,EAAAS,kBAAA,GAAAxB,eAAe,CAAC,CAAC,CAAC,cAAAwB,kBAAA,uBAAlBA,kBAAA,CAAoBX,QAAQ,CAACE,GAAG,KAAI;IAC7C,CAAC,CACJ;IAED,MAAMW,MAAM,GAAGD,IAAI,CAACE,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAMD,IAAI,CAACd,GAAG,GAAGe,OAAO,CAACf,GAAG,GAAGc,IAAI,GAAGC,OAAQ,CAAC;IACxF,MAAMC,MAAM,GAAGL,IAAI,CAACE,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAMD,IAAI,CAACd,GAAG,GAAGe,OAAO,CAACf,GAAG,GAAGc,IAAI,GAAGC,OAAQ,CAAC;IACxF,MAAME,MAAM,GAAGN,IAAI,CAACE,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAMD,IAAI,CAACb,GAAG,GAAGc,OAAO,CAACd,GAAG,GAAGa,IAAI,GAAGC,OAAQ,CAAC;IACxF,MAAMG,MAAM,GAAGP,IAAI,CAACE,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAMD,IAAI,CAACb,GAAG,GAAGc,OAAO,CAACd,GAAG,GAAGa,IAAI,GAAGC,OAAQ,CAAC;IAExF,MAAMI,OAAO,GAAGR,IAAI,CAACS,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACrB,GAAG,KAAKY,MAAM,CAACZ,GAAG,IAAIqB,IAAI,CAACpB,GAAG,KAAKiB,MAAM,CAACjB,GAAG,CAAC;IACvF,MAAMqB,WAAW,GAAGX,IAAI,CAACS,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACrB,GAAG,KAAKgB,MAAM,CAAChB,GAAG,IAAIqB,IAAI,CAACpB,GAAG,KAAKgB,MAAM,CAAChB,GAAG,CAAC;IAE3F,IAAI,CAACkB,OAAO,IAAI,CAACG,WAAW,EAAE;MAC1B;IACJ;IAEA,MAAMC,SAAS,GAAG,CAACJ,OAAO,CAACnB,GAAG,GAAGsB,WAAW,CAACtB,GAAG,IAAI,CAAC;IACrD,MAAMwB,SAAS,GAAG,CAACL,OAAO,CAAClB,GAAG,GAAGqB,WAAW,CAACrB,GAAG,IAAI,CAAC;IAErD,MAAMwB,aAAa,GAAG;MAClBzB,GAAG,EAAEuB,SAAS;MACdtB,GAAG,EAAEuB;IACT,CAAC;IAED,IAAI,CAACC,aAAa,EAAE;MAChB;IACJ;IAEA5C,cAAc,CAAC,IAAI,CAAC;IACpBH,cAAc,CAACiC,IAAI,CAAC;EACxB,CAAC,EAAE,CAACzB,eAAe,CAAC,CAAC;EAErB,MAAMwC,UAAU,GAAIC,CAAkB,IAAK;IAAA,IAAAC,YAAA;IACvCvC,MAAM,CAACsC,CAAC,CAAC;IACT5C,OAAO,CAAC4C,CAAC,CAACE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB5C,SAAS,CAAC,EAAA2C,YAAA,GAAAD,CAAC,CAACG,SAAS,CAAC,CAAC,cAAAF,YAAA,uBAAbA,YAAA,CAAejC,MAAM,CAAC,CAAC,KAAI;MAAEK,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAE,CAAC,CAAC;EAC5D,CAAC;EAED,MAAM8B,oBAAoB,GAAIhC,QAAkB,IAAK;IACjDd,SAAS,CAACc,QAAQ,CAAC;EACvB,CAAC;EAED,MAAMiC,kBAAkB,GAAG,IAAAxC,kBAAW,EACjCyC,MAAe,IAAK;IACjB9C,kBAAkB,CAAES,SAAS,IAAK;MAC9B,MAAMsC,cAAc,GAAG,CAACtC,SAAS,IAAI,EAAE,EAAER,GAAG,CAAE+C,UAAU,IAAK;QACzD,IAAIA,UAAU,CAACjC,EAAE,KAAK+B,MAAM,CAAC/B,EAAE,EAAE;UAC7B,OAAO;YAAE,GAAGiC,UAAU;YAAEpC,QAAQ,EAAEkC,MAAM,CAAClC;UAAS,CAAC;QACvD;QACA,OAAOoC,UAAU;MACrB,CAAC,CAAC;MAEF,IAAI,OAAO3D,cAAc,KAAK,UAAU,EAAE;QACtCA,cAAc,CAAC0D,cAAc,CAAC;MAClC;MAEA,OAAOA,cAAc;IACzB,CAAC,CAAC;EACN,CAAC,EACD,CAAC1D,cAAc,CACnB,CAAC;EAED,MAAM4D,kBAAkB,GAAG,IAAA5C,kBAAW,EACjCU,EAAU,IAAK;IACZf,kBAAkB,CAAES,SAAS,IAAK;MAC9B,IAAI,OAAOrB,cAAc,KAAK,UAAU,EAAE;QACtCA,cAAc,CAAC2B,EAAE,CAAC;MACtB;MAEA,OAAON,SAAS,GAAGA,SAAS,CAACyC,MAAM,CAAEJ,MAAM,IAAKA,MAAM,CAAC/B,EAAE,KAAKA,EAAE,CAAC,GAAG,EAAE;IAC1E,CAAC,CAAC;EACN,CAAC,EACD,CAAC3B,cAAc,CACnB,CAAC;EAED,MAAM+D,UAAU,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC7B,MAAMC,KAAqB,GAAG,EAAE;IAEhC,IAAI,CAACtD,eAAe,EAAE;MAClB,OAAOsD,KAAK;IAChB;IAEAtD,eAAe,CAACuD,OAAO,CAAC,CAAC;MAAEvC,EAAE;MAAEH;IAAS,CAAC,KAAK;MAC1CyC,KAAK,CAACE,IAAI,eACNvG,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAAClG,OAAA,CAAAK,OAAM;QACH8F,GAAG,EAAE,UAAU1C,EAAE,EAAG;QACpBA,EAAE,EAAEA,EAAG;QACPH,QAAQ,EAAEA,QAAS;QACnB8C,WAAW;QACXzD,GAAG,EAAEA,GAAI;QACT0D,QAAQ,EAAEd,kBAAmB;QAC7Be,QAAQ,EAAEX;MAAmB,CAChC,CACL,CAAC;IACL,CAAC,CAAC;IAEF,OAAOI,KAAK;EAChB,CAAC,EAAE,CAACR,kBAAkB,EAAEI,kBAAkB,EAAElD,eAAe,EAAEE,GAAG,CAAC,CAAC;EAElE,OAAO,IAAAmD,cAAO,EACV,mBACIpG,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACpG,WAAA,CAAAyG,gBAAgB,qBACb7G,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACrG,aAAA,CAAA2G,OAAO;IAACC,MAAM,EAAEjF,QAAS;IAACkF,SAAS,EAAE,CAAC,QAAQ;EAAE,gBAI7ChH,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAAChG,IAAA,CAAAG,OAAG;IACAsG,OAAO,EAAE7D,WAAY;IACrB8D,MAAM,EAAE3B,UAAW;IACnB4B,gBAAgB,EAAEvB,oBAAqB;IACvC/C,MAAM,EAAEA,MAAO;IACfF,IAAI,EAAEA,IAAK;IACXyE,iBAAiB,EAAE,KAAM;IACzBC,cAAc,EAAE,KAAM;IACtBC,iBAAiB,EAAE;EAAM,GAExBnB,UAAU,EACV1D,WAAW,iBAAIzC,MAAA,CAAAW,OAAA,CAAA6F,aAAA,CAACnG,IAAA,CAAAkH,OAAO;IAAC/C,IAAI,EAAElC,WAAY;IAACkF,OAAO,EAAEzF;EAAe,CAAE,CACrE,CACA,CACK,CACrB,EACD,CAACD,QAAQ,EAAEsB,WAAW,EAAEP,MAAM,EAAEF,IAAI,EAAEwD,UAAU,EAAE1D,WAAW,EAAEH,WAAW,EAAEP,cAAc,CAC9F,CAAC;AACL,CAAC;AAEDF,UAAU,CAAC4F,WAAW,GAAG,YAAY;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAhH,OAAA,GAEvBkB,UAAU","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MapWrapper.js","names":["_react","_interopRequireWildcard","require","_reactWrapper","_MapWrapper","_api","_Marker","_interopRequireDefault","_Map","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MapWrapper","apiToken","polygonOptions","initialZoom","initialPosition","markers","onMarkerAdd","onMarkerRemove","onMarkerChange","polygonPath","setPolygonPath","useState","canPolyDraw","setCanPolyDraw","zoom","setZoom","center","setCenter","internalMarkers","setInternalMarkers","map","setMap","useEffect","handleClick","useCallback","_e$latLng","latLng","toJSON","prevState","length","newMarker","position","lat","lng","id","_internalMarkers$","_internalMarkers$2","_internalMarkers$3","_internalMarkers$4","_internalMarkers$5","_internalMarkers$6","_internalMarkers$7","_internalMarkers$8","path","maxLat","reduce","prev","current","minLat","maxLng","minLng","topLeft","find","item","bottomRight","centerLat","centerLng","polygonCenter","handleIdle","m","_m$getCenter","getZoom","getCenter","handlePositionChange","handleMarkerChange","marker","updatedMarkers","prevMarker","handleMarkerRemove","filter","markerList","useMemo","items","forEach","push","createElement","key","isDraggable","onChange","onRemove","StyledMapWrapper","Wrapper","apiKey","libraries","onClick","onIdle","onPositionChange","fullscreenControl","mapTypeControl","streetViewControl","Polygon","options","displayName","_default","exports"],"sources":["../../../../../src/components/position-input/map-wrapper/MapWrapper.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Wrapper } from '@googlemaps/react-wrapper';\nimport { StyledMapWrapper } from './MapWrapper.styles';\nimport type { IMarker, PolygonOptions, Position } from '../../../types/positionInput';\nimport { Polygon } from '@react-google-maps/api';\nimport Marker from './map/marker/Marker';\nimport Map from './map/Map';\n\nexport type MapWrapperProps = {\n apiToken: string;\n polygonOptions: PolygonOptions;\n initialZoom: number;\n initialPosition: Position;\n markers?: IMarker[];\n onMarkerAdd?: (marker: IMarker) => void;\n onMarkerRemove?: (id: number) => void;\n onMarkerChange?: (markers: IMarker[]) => void;\n};\n\nconst MapWrapper: FC<MapWrapperProps> = ({\n apiToken,\n polygonOptions,\n initialZoom,\n initialPosition,\n markers,\n onMarkerAdd,\n onMarkerRemove,\n onMarkerChange,\n}) => {\n const [polygonPath, setPolygonPath] = useState<Position[]>();\n const [canPolyDraw, setCanPolyDraw] = useState(false);\n const [zoom, setZoom] = useState(initialZoom);\n const [center, setCenter] = useState<Position>(initialPosition);\n const [internalMarkers, setInternalMarkers] = useState<IMarker[]>();\n const [map, setMap] = useState<google.maps.Map>();\n\n useEffect(() => {\n if (markers) {\n setInternalMarkers(markers);\n }\n }, [markers]);\n\n const handleClick = useCallback(\n (e: google.maps.MapMouseEvent) => {\n const latLng = e.latLng?.toJSON();\n\n if (!latLng) {\n return;\n }\n\n setInternalMarkers((prevState) => {\n if (prevState && prevState.length >= 2) {\n return prevState;\n }\n\n const newMarker: IMarker = {\n position: { lat: latLng.lat, lng: latLng.lng },\n id: prevState ? prevState.length : 0,\n };\n\n if (typeof onMarkerAdd === 'function') {\n onMarkerAdd(newMarker);\n }\n\n return prevState ? [...prevState, newMarker] : [newMarker];\n });\n },\n [onMarkerAdd],\n );\n\n useEffect(() => {\n if (!internalMarkers) {\n return;\n }\n\n if (internalMarkers.length !== 2) {\n setCanPolyDraw(false);\n\n return;\n }\n\n const path: Position[] = [\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n ];\n\n const maxLat = path.reduce((prev, current) => (prev.lat > current.lat ? prev : current));\n const minLat = path.reduce((prev, current) => (prev.lat < current.lat ? prev : current));\n const maxLng = path.reduce((prev, current) => (prev.lng > current.lng ? prev : current));\n const minLng = path.reduce((prev, current) => (prev.lng < current.lng ? prev : current));\n\n const topLeft = path.find((item) => item.lat === maxLat.lat && item.lng === minLng.lng);\n const bottomRight = path.find((item) => item.lat === minLat.lat && item.lng === maxLng.lng);\n\n if (!topLeft || !bottomRight) {\n return;\n }\n\n const centerLat = (topLeft.lat + bottomRight.lat) / 2;\n const centerLng = (topLeft.lng + bottomRight.lng) / 2;\n\n const polygonCenter = {\n lat: centerLat,\n lng: centerLng,\n };\n\n if (!polygonCenter) {\n return;\n }\n\n setCanPolyDraw(true);\n setPolygonPath(path);\n }, [internalMarkers]);\n\n const handleIdle = (m: google.maps.Map) => {\n setMap(m);\n setZoom(m.getZoom() ?? 0);\n setCenter(m.getCenter()?.toJSON() ?? { lat: 0, lng: 0 });\n };\n\n const handlePositionChange = (position: Position) => {\n setCenter(position);\n };\n\n const handleMarkerChange = useCallback(\n (marker: IMarker) => {\n setInternalMarkers((prevState) => {\n const updatedMarkers = (prevState ?? []).map((prevMarker) => {\n if (prevMarker.id === marker.id) {\n return { ...prevMarker, position: marker.position };\n }\n return prevMarker;\n });\n\n if (typeof onMarkerChange === 'function') {\n onMarkerChange(updatedMarkers);\n }\n\n return updatedMarkers;\n });\n },\n [onMarkerChange],\n );\n\n const handleMarkerRemove = useCallback(\n (id: number) => {\n setInternalMarkers((prevState) => {\n if (typeof onMarkerRemove === 'function') {\n onMarkerRemove(id);\n }\n\n return prevState ? prevState.filter((marker) => marker.id !== id) : [];\n });\n },\n [onMarkerRemove],\n );\n\n const markerList = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalMarkers) {\n return items;\n }\n\n internalMarkers.forEach(({ id, position }) => {\n items.push(\n <Marker\n key={`marker_${id}`}\n id={id}\n position={position}\n isDraggable\n map={map}\n onChange={handleMarkerChange}\n onRemove={handleMarkerRemove}\n />,\n );\n });\n\n return items;\n }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);\n\n return useMemo(\n () => (\n <StyledMapWrapper>\n <Wrapper apiKey={apiToken} libraries={['places']}>\n {/* ToDo find better solution */}\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <Map\n onClick={handleClick}\n onIdle={handleIdle}\n onPositionChange={handlePositionChange}\n center={center}\n zoom={zoom}\n fullscreenControl={false}\n mapTypeControl={false}\n streetViewControl={false}\n >\n {markerList}\n {canPolyDraw && <Polygon path={polygonPath} options={polygonOptions} />}\n </Map>\n </Wrapper>\n </StyledMapWrapper>\n ),\n [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions],\n );\n};\n\nMapWrapper.displayName = 'MapWrapper';\n\nexport default MapWrapper;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -81,7 +81,7 @@ const Map = ({
|
|
|
81
81
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Map.StyledMap, {
|
|
82
82
|
ref: ref
|
|
83
83
|
}), _react.default.Children.map(children, child => {
|
|
84
|
-
if (
|
|
84
|
+
if (/*#__PURE__*/_react.default.isValidElement(child)) {
|
|
85
85
|
// set the map prop on the child component
|
|
86
86
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
87
87
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.js","names":["_react","_interopRequireWildcard","require","_Map","_positionInput","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Map","mapTypeControl","fullscreenControl","streetViewControl","children","onClick","onIdle","zoom","center","onPositionChange","map","setMap","useState","ref","useRef","useEffect","current","window","google","maps","input","document","getElementById","autoComplete","places","Autocomplete","fields","types","placeholder","addListener","_place$geometry","place","getPlace","placeLocation","geometry","location","lat","lng","setCenter","useDeepCompareEffectForMaps","setOptions","forEach","eventName","event","clearListeners","createElement","Fragment","StyledMap","React","Children","child","isValidElement","cloneElement","displayName","_default","exports"],"sources":["../../../../../../src/components/position-input/map-wrapper/map/Map.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useEffect, useRef, useState } from 'react';\nimport { StyledMap } from './Map.styles';\nimport type { Position } from '../../../../types/positionInput';\nimport { useDeepCompareEffectForMaps } from '../../../../hooks/positionInput';\n\nexport type MapProps = {\n onClick: (event: google.maps.MapMouseEvent) => void;\n onIdle: (event: google.maps.Map) => void;\n onPositionChange: (position: Position) => void;\n children: ReactElement;\n center: Position;\n zoom: number;\n fullscreenControl: boolean;\n mapTypeControl: boolean;\n streetViewControl: boolean;\n};\n\nconst Map: FC<MapProps> = ({\n mapTypeControl,\n fullscreenControl,\n streetViewControl,\n children,\n onClick,\n onIdle,\n zoom,\n center,\n onPositionChange,\n}) => {\n const [map, setMap] = useState<google.maps.Map>();\n\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && !map) {\n setMap(new window.google.maps.Map(ref.current, {}));\n\n const input = document.getElementById('auto-complete-input') as HTMLInputElement;\n\n if (!input) {\n return;\n }\n\n const autoComplete = new google.maps.places.Autocomplete(input, {\n // componentRestrictions: { country: [\"de\"] },\n fields: ['address_component', 'geometry'],\n types: ['(cities)'],\n });\n\n input.placeholder = '';\n\n autoComplete.addListener('place_changed', () => {\n const place = autoComplete.getPlace();\n\n const placeLocation = place.geometry?.location;\n\n if (!placeLocation) {\n return;\n }\n\n onPositionChange({ lat: placeLocation.lat(), lng: placeLocation.lng() });\n });\n }\n }, [ref, map, onPositionChange]);\n\n useEffect(() => {\n if (map) {\n map.setCenter(center);\n }\n }, [center, map]);\n\n // because React does not do deep comparisons, a custom hook is used\n // see discussion in https://github.com/googlemaps/js-samples/issues/946\n useDeepCompareEffectForMaps(() => {\n if (map) {\n map.setOptions({ mapTypeControl, fullscreenControl, streetViewControl, zoom });\n }\n }, [map]);\n\n useEffect(() => {\n if (map) {\n ['click', 'idle'].forEach((eventName) =>\n google.maps.event.clearListeners(map, eventName),\n );\n\n if (onClick) {\n map.addListener('click', onClick);\n }\n\n if (onIdle) {\n map.addListener('idle', () => onIdle(map));\n }\n }\n }, [map, onClick, onIdle]);\n\n return (\n <>\n <StyledMap ref={ref} />\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // set the map prop on the child component\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return React.cloneElement(child, { map });\n }\n return null;\n })}\n </>\n );\n};\n\nMap.displayName = 'Map';\n\nexport default Map;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Map.js","names":["_react","_interopRequireWildcard","require","_Map","_positionInput","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Map","mapTypeControl","fullscreenControl","streetViewControl","children","onClick","onIdle","zoom","center","onPositionChange","map","setMap","useState","ref","useRef","useEffect","current","window","google","maps","input","document","getElementById","autoComplete","places","Autocomplete","fields","types","placeholder","addListener","_place$geometry","place","getPlace","placeLocation","geometry","location","lat","lng","setCenter","useDeepCompareEffectForMaps","setOptions","forEach","eventName","event","clearListeners","createElement","Fragment","StyledMap","React","Children","child","isValidElement","cloneElement","displayName","_default","exports"],"sources":["../../../../../../src/components/position-input/map-wrapper/map/Map.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useEffect, useRef, useState } from 'react';\nimport { StyledMap } from './Map.styles';\nimport type { Position } from '../../../../types/positionInput';\nimport { useDeepCompareEffectForMaps } from '../../../../hooks/positionInput';\n\nexport type MapProps = {\n onClick: (event: google.maps.MapMouseEvent) => void;\n onIdle: (event: google.maps.Map) => void;\n onPositionChange: (position: Position) => void;\n children: ReactElement;\n center: Position;\n zoom: number;\n fullscreenControl: boolean;\n mapTypeControl: boolean;\n streetViewControl: boolean;\n};\n\nconst Map: FC<MapProps> = ({\n mapTypeControl,\n fullscreenControl,\n streetViewControl,\n children,\n onClick,\n onIdle,\n zoom,\n center,\n onPositionChange,\n}) => {\n const [map, setMap] = useState<google.maps.Map>();\n\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && !map) {\n setMap(new window.google.maps.Map(ref.current, {}));\n\n const input = document.getElementById('auto-complete-input') as HTMLInputElement;\n\n if (!input) {\n return;\n }\n\n const autoComplete = new google.maps.places.Autocomplete(input, {\n // componentRestrictions: { country: [\"de\"] },\n fields: ['address_component', 'geometry'],\n types: ['(cities)'],\n });\n\n input.placeholder = '';\n\n autoComplete.addListener('place_changed', () => {\n const place = autoComplete.getPlace();\n\n const placeLocation = place.geometry?.location;\n\n if (!placeLocation) {\n return;\n }\n\n onPositionChange({ lat: placeLocation.lat(), lng: placeLocation.lng() });\n });\n }\n }, [ref, map, onPositionChange]);\n\n useEffect(() => {\n if (map) {\n map.setCenter(center);\n }\n }, [center, map]);\n\n // because React does not do deep comparisons, a custom hook is used\n // see discussion in https://github.com/googlemaps/js-samples/issues/946\n useDeepCompareEffectForMaps(() => {\n if (map) {\n map.setOptions({ mapTypeControl, fullscreenControl, streetViewControl, zoom });\n }\n }, [map]);\n\n useEffect(() => {\n if (map) {\n ['click', 'idle'].forEach((eventName) =>\n google.maps.event.clearListeners(map, eventName),\n );\n\n if (onClick) {\n map.addListener('click', onClick);\n }\n\n if (onIdle) {\n map.addListener('idle', () => onIdle(map));\n }\n }\n }, [map, onClick, onIdle]);\n\n return (\n <>\n <StyledMap ref={ref} />\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // set the map prop on the child component\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return React.cloneElement(child, { map });\n }\n return null;\n })}\n </>\n );\n};\n\nMap.displayName = 'Map';\n\nexport default Map;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapWrapper.js","names":["React","useCallback","useEffect","useMemo","useState","Wrapper","StyledMapWrapper","Polygon","Marker","Map","MapWrapper","_ref","apiToken","polygonOptions","initialZoom","initialPosition","markers","onMarkerAdd","onMarkerRemove","onMarkerChange","polygonPath","setPolygonPath","canPolyDraw","setCanPolyDraw","zoom","setZoom","center","setCenter","internalMarkers","setInternalMarkers","map","setMap","handleClick","e","latLng","toJSON","prevState","length","newMarker","position","lat","lng","id","path","maxLat","reduce","prev","current","minLat","maxLng","minLng","topLeft","find","item","bottomRight","centerLat","centerLng","polygonCenter","handleIdle","m","getZoom","getCenter","handlePositionChange","handleMarkerChange","marker","updatedMarkers","prevMarker","handleMarkerRemove","filter","markerList","items","forEach","_ref2","push","createElement","key","isDraggable","onChange","onRemove","apiKey","libraries","onClick","onIdle","onPositionChange","fullscreenControl","mapTypeControl","streetViewControl","options","displayName"],"sources":["../../../../../src/components/position-input/map-wrapper/MapWrapper.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Wrapper } from '@googlemaps/react-wrapper';\nimport { StyledMapWrapper } from './MapWrapper.styles';\nimport type { IMarker, PolygonOptions, Position } from '../../../types/positionInput';\nimport { Polygon } from '@react-google-maps/api';\nimport Marker from './map/marker/Marker';\nimport Map from './map/Map';\n\nexport type MapWrapperProps = {\n apiToken: string;\n polygonOptions: PolygonOptions;\n initialZoom: number;\n initialPosition: Position;\n markers?: IMarker[];\n onMarkerAdd?: (marker: IMarker) => void;\n onMarkerRemove?: (id: number) => void;\n onMarkerChange?: (markers: IMarker[]) => void;\n};\n\nconst MapWrapper: FC<MapWrapperProps> = ({\n apiToken,\n polygonOptions,\n initialZoom,\n initialPosition,\n markers,\n onMarkerAdd,\n onMarkerRemove,\n onMarkerChange,\n}) => {\n const [polygonPath, setPolygonPath] = useState<Position[]>();\n const [canPolyDraw, setCanPolyDraw] = useState(false);\n const [zoom, setZoom] = useState(initialZoom);\n const [center, setCenter] = useState<Position>(initialPosition);\n const [internalMarkers, setInternalMarkers] = useState<IMarker[]>();\n const [map, setMap] = useState<google.maps.Map>();\n\n useEffect(() => {\n if (markers) {\n setInternalMarkers(markers);\n }\n }, [markers]);\n\n const handleClick = useCallback(\n (e: google.maps.MapMouseEvent) => {\n const latLng = e.latLng?.toJSON();\n\n if (!latLng) {\n return;\n }\n\n setInternalMarkers((prevState) => {\n if (prevState && prevState.length >= 2) {\n return prevState;\n }\n\n const newMarker: IMarker = {\n position: { lat: latLng.lat, lng: latLng.lng },\n id: prevState ? prevState.length : 0,\n };\n\n if (typeof onMarkerAdd === 'function') {\n onMarkerAdd(newMarker);\n }\n\n return prevState ? [...prevState, newMarker] : [newMarker];\n });\n },\n [onMarkerAdd],\n );\n\n useEffect(() => {\n if (!internalMarkers) {\n return;\n }\n\n if (internalMarkers.length !== 2) {\n setCanPolyDraw(false);\n\n return;\n }\n\n const path: Position[] = [\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n ];\n\n const maxLat = path.reduce((prev, current) => (prev.lat > current.lat ? prev : current));\n const minLat = path.reduce((prev, current) => (prev.lat < current.lat ? prev : current));\n const maxLng = path.reduce((prev, current) => (prev.lng > current.lng ? prev : current));\n const minLng = path.reduce((prev, current) => (prev.lng < current.lng ? prev : current));\n\n const topLeft = path.find((item) => item.lat === maxLat.lat && item.lng === minLng.lng);\n const bottomRight = path.find((item) => item.lat === minLat.lat && item.lng === maxLng.lng);\n\n if (!topLeft || !bottomRight) {\n return;\n }\n\n const centerLat = (topLeft.lat + bottomRight.lat) / 2;\n const centerLng = (topLeft.lng + bottomRight.lng) / 2;\n\n const polygonCenter = {\n lat: centerLat,\n lng: centerLng,\n };\n\n if (!polygonCenter) {\n return;\n }\n\n setCanPolyDraw(true);\n setPolygonPath(path);\n }, [internalMarkers]);\n\n const handleIdle = (m: google.maps.Map) => {\n setMap(m);\n setZoom(m.getZoom() ?? 0);\n setCenter(m.getCenter()?.toJSON() ?? { lat: 0, lng: 0 });\n };\n\n const handlePositionChange = (position: Position) => {\n setCenter(position);\n };\n\n const handleMarkerChange = useCallback(\n (marker: IMarker) => {\n setInternalMarkers((prevState) => {\n const updatedMarkers = (prevState ?? []).map((prevMarker) => {\n if (prevMarker.id === marker.id) {\n return { ...prevMarker, position: marker.position };\n }\n return prevMarker;\n });\n\n if (typeof onMarkerChange === 'function') {\n onMarkerChange(updatedMarkers);\n }\n\n return updatedMarkers;\n });\n },\n [onMarkerChange],\n );\n\n const handleMarkerRemove = useCallback(\n (id: number) => {\n setInternalMarkers((prevState) => {\n if (typeof onMarkerRemove === 'function') {\n onMarkerRemove(id);\n }\n\n return prevState ? prevState.filter((marker) => marker.id !== id) : [];\n });\n },\n [onMarkerRemove],\n );\n\n const markerList = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalMarkers) {\n return items;\n }\n\n internalMarkers.forEach(({ id, position }) => {\n items.push(\n <Marker\n key={`marker_${id}`}\n id={id}\n position={position}\n isDraggable\n map={map}\n onChange={handleMarkerChange}\n onRemove={handleMarkerRemove}\n />,\n );\n });\n\n return items;\n }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);\n\n return useMemo(\n () => (\n <StyledMapWrapper>\n <Wrapper apiKey={apiToken} libraries={['places']}>\n {/* ToDo find better solution */}\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <Map\n onClick={handleClick}\n onIdle={handleIdle}\n onPositionChange={handlePositionChange}\n center={center}\n zoom={zoom}\n fullscreenControl={false}\n mapTypeControl={false}\n streetViewControl={false}\n >\n {markerList}\n {canPolyDraw && <Polygon path={polygonPath} options={polygonOptions} />}\n </Map>\n </Wrapper>\n </StyledMapWrapper>\n ),\n [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions],\n );\n};\n\nMapWrapper.displayName = 'MapWrapper';\n\nexport default MapWrapper;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MapWrapper.js","names":["React","useCallback","useEffect","useMemo","useState","Wrapper","StyledMapWrapper","Polygon","Marker","Map","MapWrapper","_ref","apiToken","polygonOptions","initialZoom","initialPosition","markers","onMarkerAdd","onMarkerRemove","onMarkerChange","polygonPath","setPolygonPath","canPolyDraw","setCanPolyDraw","zoom","setZoom","center","setCenter","internalMarkers","setInternalMarkers","map","setMap","handleClick","e","latLng","toJSON","prevState","length","newMarker","position","lat","lng","id","path","maxLat","reduce","prev","current","minLat","maxLng","minLng","topLeft","find","item","bottomRight","centerLat","centerLng","polygonCenter","handleIdle","m","getZoom","getCenter","handlePositionChange","handleMarkerChange","marker","updatedMarkers","prevMarker","handleMarkerRemove","filter","markerList","items","forEach","_ref2","push","createElement","key","isDraggable","onChange","onRemove","apiKey","libraries","onClick","onIdle","onPositionChange","fullscreenControl","mapTypeControl","streetViewControl","options","displayName"],"sources":["../../../../../src/components/position-input/map-wrapper/MapWrapper.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Wrapper } from '@googlemaps/react-wrapper';\nimport { StyledMapWrapper } from './MapWrapper.styles';\nimport type { IMarker, PolygonOptions, Position } from '../../../types/positionInput';\nimport { Polygon } from '@react-google-maps/api';\nimport Marker from './map/marker/Marker';\nimport Map from './map/Map';\n\nexport type MapWrapperProps = {\n apiToken: string;\n polygonOptions: PolygonOptions;\n initialZoom: number;\n initialPosition: Position;\n markers?: IMarker[];\n onMarkerAdd?: (marker: IMarker) => void;\n onMarkerRemove?: (id: number) => void;\n onMarkerChange?: (markers: IMarker[]) => void;\n};\n\nconst MapWrapper: FC<MapWrapperProps> = ({\n apiToken,\n polygonOptions,\n initialZoom,\n initialPosition,\n markers,\n onMarkerAdd,\n onMarkerRemove,\n onMarkerChange,\n}) => {\n const [polygonPath, setPolygonPath] = useState<Position[]>();\n const [canPolyDraw, setCanPolyDraw] = useState(false);\n const [zoom, setZoom] = useState(initialZoom);\n const [center, setCenter] = useState<Position>(initialPosition);\n const [internalMarkers, setInternalMarkers] = useState<IMarker[]>();\n const [map, setMap] = useState<google.maps.Map>();\n\n useEffect(() => {\n if (markers) {\n setInternalMarkers(markers);\n }\n }, [markers]);\n\n const handleClick = useCallback(\n (e: google.maps.MapMouseEvent) => {\n const latLng = e.latLng?.toJSON();\n\n if (!latLng) {\n return;\n }\n\n setInternalMarkers((prevState) => {\n if (prevState && prevState.length >= 2) {\n return prevState;\n }\n\n const newMarker: IMarker = {\n position: { lat: latLng.lat, lng: latLng.lng },\n id: prevState ? prevState.length : 0,\n };\n\n if (typeof onMarkerAdd === 'function') {\n onMarkerAdd(newMarker);\n }\n\n return prevState ? [...prevState, newMarker] : [newMarker];\n });\n },\n [onMarkerAdd],\n );\n\n useEffect(() => {\n if (!internalMarkers) {\n return;\n }\n\n if (internalMarkers.length !== 2) {\n setCanPolyDraw(false);\n\n return;\n }\n\n const path: Position[] = [\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[0]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[1]?.position.lng ?? 0,\n },\n {\n lat: internalMarkers[1]?.position.lat ?? 0,\n lng: internalMarkers[0]?.position.lng ?? 0,\n },\n ];\n\n const maxLat = path.reduce((prev, current) => (prev.lat > current.lat ? prev : current));\n const minLat = path.reduce((prev, current) => (prev.lat < current.lat ? prev : current));\n const maxLng = path.reduce((prev, current) => (prev.lng > current.lng ? prev : current));\n const minLng = path.reduce((prev, current) => (prev.lng < current.lng ? prev : current));\n\n const topLeft = path.find((item) => item.lat === maxLat.lat && item.lng === minLng.lng);\n const bottomRight = path.find((item) => item.lat === minLat.lat && item.lng === maxLng.lng);\n\n if (!topLeft || !bottomRight) {\n return;\n }\n\n const centerLat = (topLeft.lat + bottomRight.lat) / 2;\n const centerLng = (topLeft.lng + bottomRight.lng) / 2;\n\n const polygonCenter = {\n lat: centerLat,\n lng: centerLng,\n };\n\n if (!polygonCenter) {\n return;\n }\n\n setCanPolyDraw(true);\n setPolygonPath(path);\n }, [internalMarkers]);\n\n const handleIdle = (m: google.maps.Map) => {\n setMap(m);\n setZoom(m.getZoom() ?? 0);\n setCenter(m.getCenter()?.toJSON() ?? { lat: 0, lng: 0 });\n };\n\n const handlePositionChange = (position: Position) => {\n setCenter(position);\n };\n\n const handleMarkerChange = useCallback(\n (marker: IMarker) => {\n setInternalMarkers((prevState) => {\n const updatedMarkers = (prevState ?? []).map((prevMarker) => {\n if (prevMarker.id === marker.id) {\n return { ...prevMarker, position: marker.position };\n }\n return prevMarker;\n });\n\n if (typeof onMarkerChange === 'function') {\n onMarkerChange(updatedMarkers);\n }\n\n return updatedMarkers;\n });\n },\n [onMarkerChange],\n );\n\n const handleMarkerRemove = useCallback(\n (id: number) => {\n setInternalMarkers((prevState) => {\n if (typeof onMarkerRemove === 'function') {\n onMarkerRemove(id);\n }\n\n return prevState ? prevState.filter((marker) => marker.id !== id) : [];\n });\n },\n [onMarkerRemove],\n );\n\n const markerList = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalMarkers) {\n return items;\n }\n\n internalMarkers.forEach(({ id, position }) => {\n items.push(\n <Marker\n key={`marker_${id}`}\n id={id}\n position={position}\n isDraggable\n map={map}\n onChange={handleMarkerChange}\n onRemove={handleMarkerRemove}\n />,\n );\n });\n\n return items;\n }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);\n\n return useMemo(\n () => (\n <StyledMapWrapper>\n <Wrapper apiKey={apiToken} libraries={['places']}>\n {/* ToDo find better solution */}\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <Map\n onClick={handleClick}\n onIdle={handleIdle}\n onPositionChange={handlePositionChange}\n center={center}\n zoom={zoom}\n fullscreenControl={false}\n mapTypeControl={false}\n streetViewControl={false}\n >\n {markerList}\n {canPolyDraw && <Polygon path={polygonPath} options={polygonOptions} />}\n </Map>\n </Wrapper>\n </StyledMapWrapper>\n ),\n [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions],\n );\n};\n\nMapWrapper.displayName = 'MapWrapper';\n\nexport default MapWrapper;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -73,7 +73,7 @@ const Map = _ref => {
|
|
|
73
73
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledMap, {
|
|
74
74
|
ref: ref
|
|
75
75
|
}), React.Children.map(children, child => {
|
|
76
|
-
if (
|
|
76
|
+
if (/*#__PURE__*/React.isValidElement(child)) {
|
|
77
77
|
// set the map prop on the child component
|
|
78
78
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
79
79
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.js","names":["React","useEffect","useRef","useState","StyledMap","useDeepCompareEffectForMaps","Map","_ref","mapTypeControl","fullscreenControl","streetViewControl","children","onClick","onIdle","zoom","center","onPositionChange","map","setMap","ref","current","window","google","maps","input","document","getElementById","autoComplete","places","Autocomplete","fields","types","placeholder","addListener","place","getPlace","placeLocation","geometry","location","lat","lng","setCenter","setOptions","forEach","eventName","event","clearListeners","createElement","Fragment","Children","child","isValidElement","cloneElement","displayName"],"sources":["../../../../../../src/components/position-input/map-wrapper/map/Map.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useEffect, useRef, useState } from 'react';\nimport { StyledMap } from './Map.styles';\nimport type { Position } from '../../../../types/positionInput';\nimport { useDeepCompareEffectForMaps } from '../../../../hooks/positionInput';\n\nexport type MapProps = {\n onClick: (event: google.maps.MapMouseEvent) => void;\n onIdle: (event: google.maps.Map) => void;\n onPositionChange: (position: Position) => void;\n children: ReactElement;\n center: Position;\n zoom: number;\n fullscreenControl: boolean;\n mapTypeControl: boolean;\n streetViewControl: boolean;\n};\n\nconst Map: FC<MapProps> = ({\n mapTypeControl,\n fullscreenControl,\n streetViewControl,\n children,\n onClick,\n onIdle,\n zoom,\n center,\n onPositionChange,\n}) => {\n const [map, setMap] = useState<google.maps.Map>();\n\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && !map) {\n setMap(new window.google.maps.Map(ref.current, {}));\n\n const input = document.getElementById('auto-complete-input') as HTMLInputElement;\n\n if (!input) {\n return;\n }\n\n const autoComplete = new google.maps.places.Autocomplete(input, {\n // componentRestrictions: { country: [\"de\"] },\n fields: ['address_component', 'geometry'],\n types: ['(cities)'],\n });\n\n input.placeholder = '';\n\n autoComplete.addListener('place_changed', () => {\n const place = autoComplete.getPlace();\n\n const placeLocation = place.geometry?.location;\n\n if (!placeLocation) {\n return;\n }\n\n onPositionChange({ lat: placeLocation.lat(), lng: placeLocation.lng() });\n });\n }\n }, [ref, map, onPositionChange]);\n\n useEffect(() => {\n if (map) {\n map.setCenter(center);\n }\n }, [center, map]);\n\n // because React does not do deep comparisons, a custom hook is used\n // see discussion in https://github.com/googlemaps/js-samples/issues/946\n useDeepCompareEffectForMaps(() => {\n if (map) {\n map.setOptions({ mapTypeControl, fullscreenControl, streetViewControl, zoom });\n }\n }, [map]);\n\n useEffect(() => {\n if (map) {\n ['click', 'idle'].forEach((eventName) =>\n google.maps.event.clearListeners(map, eventName),\n );\n\n if (onClick) {\n map.addListener('click', onClick);\n }\n\n if (onIdle) {\n map.addListener('idle', () => onIdle(map));\n }\n }\n }, [map, onClick, onIdle]);\n\n return (\n <>\n <StyledMap ref={ref} />\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // set the map prop on the child component\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return React.cloneElement(child, { map });\n }\n return null;\n })}\n </>\n );\n};\n\nMap.displayName = 'Map';\n\nexport default Map;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Map.js","names":["React","useEffect","useRef","useState","StyledMap","useDeepCompareEffectForMaps","Map","_ref","mapTypeControl","fullscreenControl","streetViewControl","children","onClick","onIdle","zoom","center","onPositionChange","map","setMap","ref","current","window","google","maps","input","document","getElementById","autoComplete","places","Autocomplete","fields","types","placeholder","addListener","place","getPlace","placeLocation","geometry","location","lat","lng","setCenter","setOptions","forEach","eventName","event","clearListeners","createElement","Fragment","Children","child","isValidElement","cloneElement","displayName"],"sources":["../../../../../../src/components/position-input/map-wrapper/map/Map.tsx"],"sourcesContent":["import React, { FC, type ReactElement, useEffect, useRef, useState } from 'react';\nimport { StyledMap } from './Map.styles';\nimport type { Position } from '../../../../types/positionInput';\nimport { useDeepCompareEffectForMaps } from '../../../../hooks/positionInput';\n\nexport type MapProps = {\n onClick: (event: google.maps.MapMouseEvent) => void;\n onIdle: (event: google.maps.Map) => void;\n onPositionChange: (position: Position) => void;\n children: ReactElement;\n center: Position;\n zoom: number;\n fullscreenControl: boolean;\n mapTypeControl: boolean;\n streetViewControl: boolean;\n};\n\nconst Map: FC<MapProps> = ({\n mapTypeControl,\n fullscreenControl,\n streetViewControl,\n children,\n onClick,\n onIdle,\n zoom,\n center,\n onPositionChange,\n}) => {\n const [map, setMap] = useState<google.maps.Map>();\n\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current && !map) {\n setMap(new window.google.maps.Map(ref.current, {}));\n\n const input = document.getElementById('auto-complete-input') as HTMLInputElement;\n\n if (!input) {\n return;\n }\n\n const autoComplete = new google.maps.places.Autocomplete(input, {\n // componentRestrictions: { country: [\"de\"] },\n fields: ['address_component', 'geometry'],\n types: ['(cities)'],\n });\n\n input.placeholder = '';\n\n autoComplete.addListener('place_changed', () => {\n const place = autoComplete.getPlace();\n\n const placeLocation = place.geometry?.location;\n\n if (!placeLocation) {\n return;\n }\n\n onPositionChange({ lat: placeLocation.lat(), lng: placeLocation.lng() });\n });\n }\n }, [ref, map, onPositionChange]);\n\n useEffect(() => {\n if (map) {\n map.setCenter(center);\n }\n }, [center, map]);\n\n // because React does not do deep comparisons, a custom hook is used\n // see discussion in https://github.com/googlemaps/js-samples/issues/946\n useDeepCompareEffectForMaps(() => {\n if (map) {\n map.setOptions({ mapTypeControl, fullscreenControl, streetViewControl, zoom });\n }\n }, [map]);\n\n useEffect(() => {\n if (map) {\n ['click', 'idle'].forEach((eventName) =>\n google.maps.event.clearListeners(map, eventName),\n );\n\n if (onClick) {\n map.addListener('click', onClick);\n }\n\n if (onIdle) {\n map.addListener('idle', () => onIdle(map));\n }\n }\n }, [map, onClick, onIdle]);\n\n return (\n <>\n <StyledMap ref={ref} />\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // set the map prop on the child component\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return React.cloneElement(child, { map });\n }\n return null;\n })}\n </>\n );\n};\n\nMap.displayName = 'Map';\n\nexport default Map;\n"],"mappings":"AAAA,OAAOA,KAAK,IAA2BC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACjF,SAASC,SAAS,QAAQ,cAAc;AAExC,SAASC,2BAA2B,QAAQ,iCAAiC;AAc7E,MAAMC,GAAiB,GAAGC,IAAA,IAUpB;EAAA,IAVqB;IACvBC,cAAc;IACdC,iBAAiB;IACjBC,iBAAiB;IACjBC,QAAQ;IACRC,OAAO;IACPC,MAAM;IACNC,IAAI;IACJC,MAAM;IACNC;EACJ,CAAC,GAAAT,IAAA;EACG,MAAM,CAACU,GAAG,EAAEC,MAAM,CAAC,GAAGf,QAAQ,CAAkB,CAAC;EAEjD,MAAMgB,GAAG,GAAGjB,MAAM,CAAC,IAAI,CAAC;EAExBD,SAAS,CAAC,MAAM;IACZ,IAAIkB,GAAG,CAACC,OAAO,IAAI,CAACH,GAAG,EAAE;MACrBC,MAAM,CAAC,IAAIG,MAAM,CAACC,MAAM,CAACC,IAAI,CAACjB,GAAG,CAACa,GAAG,CAACC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;MAEnD,MAAMI,KAAK,GAAGC,QAAQ,CAACC,cAAc,CAAC,qBAAqB,CAAqB;MAEhF,IAAI,CAACF,KAAK,EAAE;QACR;MACJ;MAEA,MAAMG,YAAY,GAAG,IAAIL,MAAM,CAACC,IAAI,CAACK,MAAM,CAACC,YAAY,CAACL,KAAK,EAAE;QAC5D;QACAM,MAAM,EAAE,CAAC,mBAAmB,EAAE,UAAU,CAAC;QACzCC,KAAK,EAAE,CAAC,UAAU;MACtB,CAAC,CAAC;MAEFP,KAAK,CAACQ,WAAW,GAAG,EAAE;MAEtBL,YAAY,CAACM,WAAW,CAAC,eAAe,EAAE,MAAM;QAC5C,MAAMC,KAAK,GAAGP,YAAY,CAACQ,QAAQ,CAAC,CAAC;QAErC,MAAMC,aAAa,GAAGF,KAAK,CAACG,QAAQ,EAAEC,QAAQ;QAE9C,IAAI,CAACF,aAAa,EAAE;UAChB;QACJ;QAEApB,gBAAgB,CAAC;UAAEuB,GAAG,EAAEH,aAAa,CAACG,GAAG,CAAC,CAAC;UAAEC,GAAG,EAAEJ,aAAa,CAACI,GAAG,CAAC;QAAE,CAAC,CAAC;MAC5E,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAACrB,GAAG,EAAEF,GAAG,EAAED,gBAAgB,CAAC,CAAC;EAEhCf,SAAS,CAAC,MAAM;IACZ,IAAIgB,GAAG,EAAE;MACLA,GAAG,CAACwB,SAAS,CAAC1B,MAAM,CAAC;IACzB;EACJ,CAAC,EAAE,CAACA,MAAM,EAAEE,GAAG,CAAC,CAAC;;EAEjB;EACA;EACAZ,2BAA2B,CAAC,MAAM;IAC9B,IAAIY,GAAG,EAAE;MACLA,GAAG,CAACyB,UAAU,CAAC;QAAElC,cAAc;QAAEC,iBAAiB;QAAEC,iBAAiB;QAAEI;MAAK,CAAC,CAAC;IAClF;EACJ,CAAC,EAAE,CAACG,GAAG,CAAC,CAAC;EAEThB,SAAS,CAAC,MAAM;IACZ,IAAIgB,GAAG,EAAE;MACL,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC0B,OAAO,CAAEC,SAAS,IAChCtB,MAAM,CAACC,IAAI,CAACsB,KAAK,CAACC,cAAc,CAAC7B,GAAG,EAAE2B,SAAS,CACnD,CAAC;MAED,IAAIhC,OAAO,EAAE;QACTK,GAAG,CAACgB,WAAW,CAAC,OAAO,EAAErB,OAAO,CAAC;MACrC;MAEA,IAAIC,MAAM,EAAE;QACRI,GAAG,CAACgB,WAAW,CAAC,MAAM,EAAE,MAAMpB,MAAM,CAACI,GAAG,CAAC,CAAC;MAC9C;IACJ;EACJ,CAAC,EAAE,CAACA,GAAG,EAAEL,OAAO,EAAEC,MAAM,CAAC,CAAC;EAE1B,oBACIb,KAAA,CAAA+C,aAAA,CAAA/C,KAAA,CAAAgD,QAAA,qBACIhD,KAAA,CAAA+C,aAAA,CAAC3C,SAAS;IAACe,GAAG,EAAEA;EAAI,CAAE,CAAC,EACtBnB,KAAK,CAACiD,QAAQ,CAAChC,GAAG,CAACN,QAAQ,EAAGuC,KAAK,IAAK;IACrC,iBAAIlD,KAAK,CAACmD,cAAc,CAACD,KAAK,CAAC,EAAE;MAC7B;MACA;MACA;MACA,oBAAOlD,KAAK,CAACoD,YAAY,CAACF,KAAK,EAAE;QAAEjC;MAAI,CAAC,CAAC;IAC7C;IACA,OAAO,IAAI;EACf,CAAC,CACH,CAAC;AAEX,CAAC;AAEDX,GAAG,CAAC+C,WAAW,GAAG,KAAK;AAEvB,eAAe/C,GAAG","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/maps",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.841",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"url": "https://github.com/TobitSoftware/chayns-components/issues"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@babel/cli": "^7.25.
|
|
53
|
-
"@babel/core": "^7.25.
|
|
54
|
-
"@babel/preset-env": "^7.25.
|
|
55
|
-
"@babel/preset-react": "^7.
|
|
56
|
-
"@babel/preset-typescript": "^7.
|
|
52
|
+
"@babel/cli": "^7.25.7",
|
|
53
|
+
"@babel/core": "^7.25.7",
|
|
54
|
+
"@babel/preset-env": "^7.25.7",
|
|
55
|
+
"@babel/preset-react": "^7.25.7",
|
|
56
|
+
"@babel/preset-typescript": "^7.25.7",
|
|
57
57
|
"@types/google.maps": "^3.58.1",
|
|
58
|
-
"@types/react": "^18.3.
|
|
58
|
+
"@types/react": "^18.3.11",
|
|
59
59
|
"@types/react-dom": "^18.3.0",
|
|
60
60
|
"@types/styled-components": "^5.1.34",
|
|
61
61
|
"@types/uuid": "^10.0.0",
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"react": "^18.3.1",
|
|
66
66
|
"react-dom": "^18.3.1",
|
|
67
67
|
"styled-components": "^6.1.13",
|
|
68
|
-
"typescript": "^5.6.
|
|
68
|
+
"typescript": "^5.6.3"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
71
|
+
"@chayns-components/core": "^5.0.0-beta.841",
|
|
72
72
|
"@googlemaps/react-wrapper": "^1.1.42",
|
|
73
73
|
"@googlemaps/typescript-guards": "^2.0.3",
|
|
74
74
|
"@react-google-maps/api": "^2.19.3",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"publishConfig": {
|
|
85
85
|
"access": "public"
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "e463c64df725dbbf31144ac73cfe0c9a9f385571"
|
|
88
88
|
}
|