@chayns-components/maps 5.0.0-beta.1000

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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/lib/cjs/components/position-input/PositionInput.js +38 -0
  4. package/lib/cjs/components/position-input/PositionInput.js.map +1 -0
  5. package/lib/cjs/components/position-input/PositionInput.styles.js +19 -0
  6. package/lib/cjs/components/position-input/PositionInput.styles.js.map +1 -0
  7. package/lib/cjs/components/position-input/map-wrapper/MapWrapper.js +180 -0
  8. package/lib/cjs/components/position-input/map-wrapper/MapWrapper.js.map +1 -0
  9. package/lib/cjs/components/position-input/map-wrapper/MapWrapper.styles.js +12 -0
  10. package/lib/cjs/components/position-input/map-wrapper/MapWrapper.styles.js.map +1 -0
  11. package/lib/cjs/components/position-input/map-wrapper/map/Map.js +97 -0
  12. package/lib/cjs/components/position-input/map-wrapper/map/Map.js.map +1 -0
  13. package/lib/cjs/components/position-input/map-wrapper/map/Map.styles.js +13 -0
  14. package/lib/cjs/components/position-input/map-wrapper/map/Map.styles.js.map +1 -0
  15. package/lib/cjs/components/position-input/map-wrapper/map/marker/Marker.js +66 -0
  16. package/lib/cjs/components/position-input/map-wrapper/map/marker/Marker.js.map +1 -0
  17. package/lib/cjs/constants/positionInput.js +24 -0
  18. package/lib/cjs/constants/positionInput.js.map +1 -0
  19. package/lib/cjs/hooks/positionInput.js +37 -0
  20. package/lib/cjs/hooks/positionInput.js.map +1 -0
  21. package/lib/cjs/index.js +14 -0
  22. package/lib/cjs/index.js.map +1 -0
  23. package/lib/cjs/types/positionInput.js +2 -0
  24. package/lib/cjs/types/positionInput.js.map +1 -0
  25. package/lib/esm/components/position-input/PositionInput.js +34 -0
  26. package/lib/esm/components/position-input/PositionInput.js.map +1 -0
  27. package/lib/esm/components/position-input/PositionInput.styles.js +12 -0
  28. package/lib/esm/components/position-input/PositionInput.styles.js.map +1 -0
  29. package/lib/esm/components/position-input/map-wrapper/MapWrapper.js +170 -0
  30. package/lib/esm/components/position-input/map-wrapper/MapWrapper.js.map +1 -0
  31. package/lib/esm/components/position-input/map-wrapper/MapWrapper.styles.js +5 -0
  32. package/lib/esm/components/position-input/map-wrapper/MapWrapper.styles.js.map +1 -0
  33. package/lib/esm/components/position-input/map-wrapper/map/Map.js +89 -0
  34. package/lib/esm/components/position-input/map-wrapper/map/Map.js.map +1 -0
  35. package/lib/esm/components/position-input/map-wrapper/map/Map.styles.js +6 -0
  36. package/lib/esm/components/position-input/map-wrapper/map/Map.styles.js.map +1 -0
  37. package/lib/esm/components/position-input/map-wrapper/map/marker/Marker.js +60 -0
  38. package/lib/esm/components/position-input/map-wrapper/map/marker/Marker.js.map +1 -0
  39. package/lib/esm/constants/positionInput.js +18 -0
  40. package/lib/esm/constants/positionInput.js.map +1 -0
  41. package/lib/esm/hooks/positionInput.js +29 -0
  42. package/lib/esm/hooks/positionInput.js.map +1 -0
  43. package/lib/esm/index.js +3 -0
  44. package/lib/esm/index.js.map +1 -0
  45. package/lib/esm/types/positionInput.js +2 -0
  46. package/lib/esm/types/positionInput.js.map +1 -0
  47. package/lib/types/components/position-input/PositionInput.d.ts +42 -0
  48. package/lib/types/components/position-input/PositionInput.styles.d.ts +2 -0
  49. package/lib/types/components/position-input/map-wrapper/MapWrapper.d.ts +14 -0
  50. package/lib/types/components/position-input/map-wrapper/MapWrapper.styles.d.ts +1 -0
  51. package/lib/types/components/position-input/map-wrapper/map/Map.d.ts +15 -0
  52. package/lib/types/components/position-input/map-wrapper/map/Map.styles.d.ts +1 -0
  53. package/lib/types/components/position-input/map-wrapper/map/marker/Marker.d.ts +12 -0
  54. package/lib/types/constants/positionInput.d.ts +3 -0
  55. package/lib/types/hooks/positionInput.d.ts +2 -0
  56. package/lib/types/index.d.ts +2 -0
  57. package/lib/types/types/positionInput.d.ts +21 -0
  58. package/package.json +90 -0
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDeepCompareEffectForMaps = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _fastEquals = require("fast-equals");
9
+ var _typescriptGuards = require("@googlemaps/typescript-guards");
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ // Note do not touch!
13
+
14
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
+ // @ts-ignore
16
+ const deepCompareEqualsForMaps = (0, _fastEquals.createCustomEqual)(deepEqual => (a, b) => {
17
+ if ((0, _typescriptGuards.isLatLngLiteral)(a) || a instanceof google.maps.LatLng || (0, _typescriptGuards.isLatLngLiteral)(b) || b instanceof google.maps.LatLng) {
18
+ return new google.maps.LatLng(a).equals(new google.maps.LatLng(b));
19
+ }
20
+
21
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return
22
+ return deepEqual(a, b);
23
+ });
24
+ const useDeepCompareMemoize = value => {
25
+ const ref = _react.default.useRef();
26
+ if (!deepCompareEqualsForMaps(value, ref.current)) {
27
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
28
+ ref.current = value;
29
+ }
30
+ return ref.current;
31
+ };
32
+ const useDeepCompareEffectForMaps = (callback, dependencies) => {
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ (0, _react.useEffect)(callback, dependencies.map(useDeepCompareMemoize));
35
+ };
36
+ exports.useDeepCompareEffectForMaps = useDeepCompareEffectForMaps;
37
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":["_react","_interopRequireWildcard","require","_fastEquals","_typescriptGuards","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","deepCompareEqualsForMaps","createCustomEqual","deepEqual","b","isLatLngLiteral","google","maps","LatLng","equals","useDeepCompareMemoize","value","ref","React","useRef","current","useDeepCompareEffectForMaps","callback","dependencies","useEffect","map","exports"],"sources":["../../../src/hooks/positionInput.tsx"],"sourcesContent":["import React, { type EffectCallback, useEffect } from 'react';\nimport { createCustomEqual } from 'fast-equals';\nimport { isLatLngLiteral } from '@googlemaps/typescript-guards';\n\n// Note do not touch!\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst deepCompareEqualsForMaps = createCustomEqual((deepEqual) => (a, b) => {\n if (\n isLatLngLiteral(a) ||\n a instanceof google.maps.LatLng ||\n isLatLngLiteral(b) ||\n b instanceof google.maps.LatLng\n ) {\n return new google.maps.LatLng(a).equals(new google.maps.LatLng(b));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return\n return deepEqual(a, b);\n});\n\nconst useDeepCompareMemoize = (value: any) => {\n const ref = React.useRef();\n\n if (!deepCompareEqualsForMaps(value, ref.current)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ref.current = value;\n }\n\n return ref.current;\n};\n\nexport const useDeepCompareEffectForMaps = (callback: EffectCallback, dependencies: any[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, dependencies.map(useDeepCompareMemoize));\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAAgE,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,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,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEhE;;AAEA;AACA;AACA,MAAMW,wBAAwB,GAAG,IAAAC,6BAAiB,EAAEC,SAAS,IAAK,CAACX,CAAC,EAAEY,CAAC,KAAK;EACxE,IACI,IAAAC,iCAAe,EAACb,CAAC,CAAC,IAClBA,CAAC,YAAYc,MAAM,CAACC,IAAI,CAACC,MAAM,IAC/B,IAAAH,iCAAe,EAACD,CAAC,CAAC,IAClBA,CAAC,YAAYE,MAAM,CAACC,IAAI,CAACC,MAAM,EACjC;IACE,OAAO,IAAIF,MAAM,CAACC,IAAI,CAACC,MAAM,CAAChB,CAAC,CAAC,CAACiB,MAAM,CAAC,IAAIH,MAAM,CAACC,IAAI,CAACC,MAAM,CAACJ,CAAC,CAAC,CAAC;EACtE;;EAEA;EACA,OAAOD,SAAS,CAACX,CAAC,EAAEY,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAMM,qBAAqB,GAAIC,KAAU,IAAK;EAC1C,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAC,CAAC;EAE1B,IAAI,CAACb,wBAAwB,CAACU,KAAK,EAAEC,GAAG,CAACG,OAAO,CAAC,EAAE;IAC/C;IACAH,GAAG,CAACG,OAAO,GAAGJ,KAAK;EACvB;EAEA,OAAOC,GAAG,CAACG,OAAO;AACtB,CAAC;AAEM,MAAMC,2BAA2B,GAAGA,CAACC,QAAwB,EAAEC,YAAmB,KAAK;EAC1F;EACA,IAAAC,gBAAS,EAACF,QAAQ,EAAEC,YAAY,CAACE,GAAG,CAACV,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAACW,OAAA,CAAAL,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "PositionInput", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _PositionInput.default;
10
+ }
11
+ });
12
+ var _PositionInput = _interopRequireDefault(require("./components/position-input/PositionInput"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_PositionInput","_interopRequireDefault","require","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\nexport { default as PositionInput } from './components/position-input/PositionInput';\nexport type { PolygonOptions, Position, IMarker as Marker } from './types/positionInput';\n"],"mappings":";;;;;;;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqF,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":[],"sources":["../../../src/types/positionInput.ts"],"sourcesContent":["export interface PolygonOptions {\n strokeColor: string;\n strokeOpacity: number;\n strokeWeight: number;\n fillColor: string;\n fillOpacity: number;\n clickable: boolean;\n draggable: boolean;\n editable: boolean;\n visible: boolean;\n radius: number;\n zIndex: number;\n}\n\nexport interface Position {\n lat: number;\n lng: number;\n}\n\nexport interface IMarker {\n position: Position;\n id: number;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ import { Input } from '@chayns-components/core';
2
+ import React from 'react';
3
+ import { DEFAULT_POLYGON_OPTIONS, DEFAULT_POSITION } from '../../constants/positionInput';
4
+ import MapWrapper from './map-wrapper/MapWrapper';
5
+ import { StyledPositionInput, StyledPositionInputSearch } from './PositionInput.styles';
6
+ const PositionInput = _ref => {
7
+ let {
8
+ searchPlaceholder,
9
+ apiToken,
10
+ polygonOptions = DEFAULT_POLYGON_OPTIONS,
11
+ initialPosition = DEFAULT_POSITION,
12
+ zoom = 13,
13
+ markers,
14
+ onMarkerRemove,
15
+ onMarkerChange,
16
+ onMarkerAdd
17
+ } = _ref;
18
+ return /*#__PURE__*/React.createElement(StyledPositionInput, null, /*#__PURE__*/React.createElement(StyledPositionInputSearch, null, /*#__PURE__*/React.createElement(Input, {
19
+ id: "auto-complete-input",
20
+ placeholder: searchPlaceholder
21
+ })), /*#__PURE__*/React.createElement(MapWrapper, {
22
+ apiToken: apiToken,
23
+ polygonOptions: polygonOptions,
24
+ initialPosition: initialPosition,
25
+ initialZoom: zoom,
26
+ markers: markers,
27
+ onMarkerAdd: onMarkerAdd,
28
+ onMarkerChange: onMarkerChange,
29
+ onMarkerRemove: onMarkerRemove
30
+ }));
31
+ };
32
+ PositionInput.displayName = 'PositionInput';
33
+ export default PositionInput;
34
+ //# sourceMappingURL=PositionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionInput.js","names":["Input","React","DEFAULT_POLYGON_OPTIONS","DEFAULT_POSITION","MapWrapper","StyledPositionInput","StyledPositionInputSearch","PositionInput","_ref","searchPlaceholder","apiToken","polygonOptions","initialPosition","zoom","markers","onMarkerRemove","onMarkerChange","onMarkerAdd","createElement","id","placeholder","initialZoom","displayName"],"sources":["../../../../src/components/position-input/PositionInput.tsx"],"sourcesContent":["import { Input } from '@chayns-components/core';\nimport React, { FC } from 'react';\nimport { DEFAULT_POLYGON_OPTIONS, DEFAULT_POSITION } from '../../constants/positionInput';\nimport type { IMarker, PolygonOptions, Position } from '../../types/positionInput';\nimport MapWrapper from './map-wrapper/MapWrapper';\nimport { StyledPositionInput, StyledPositionInputSearch } from './PositionInput.styles';\n\nexport type PositionInputProps = {\n /**\n * The api token for google maps.\n */\n apiToken: string;\n /**\n * The position of the center of the map on the initial render.\n */\n initialPosition?: Position;\n /**\n * Markers that should be displayed.\n */\n markers?: IMarker[];\n /**\n * Function to be executed when a marker is added.\n */\n onMarkerAdd?: (marker: IMarker) => void;\n /**\n * Function to be executed when a marker position is changed.\n */\n onMarkerChange?: (markers: IMarker[]) => void;\n /**\n * Function to be executed when a marker is removed.\n */\n onMarkerRemove?: (id: number) => void;\n /**\n * Options to style the polygon.\n */\n polygonOptions?: PolygonOptions;\n /**\n * The placeholder of the search input.\n */\n searchPlaceholder?: string;\n /**\n * The zoom of the map.\n */\n zoom?: number;\n};\n\nconst PositionInput: FC<PositionInputProps> = ({\n searchPlaceholder,\n apiToken,\n polygonOptions = DEFAULT_POLYGON_OPTIONS,\n initialPosition = DEFAULT_POSITION,\n zoom = 13,\n markers,\n onMarkerRemove,\n onMarkerChange,\n onMarkerAdd,\n}) => (\n <StyledPositionInput>\n <StyledPositionInputSearch>\n <Input id=\"auto-complete-input\" placeholder={searchPlaceholder} />\n </StyledPositionInputSearch>\n <MapWrapper\n apiToken={apiToken}\n polygonOptions={polygonOptions}\n initialPosition={initialPosition}\n initialZoom={zoom}\n markers={markers}\n onMarkerAdd={onMarkerAdd}\n onMarkerChange={onMarkerChange}\n onMarkerRemove={onMarkerRemove}\n />\n </StyledPositionInput>\n);\n\nPositionInput.displayName = 'PositionInput';\n\nexport default PositionInput;\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,yBAAyB;AAC/C,OAAOC,KAAK,MAAc,OAAO;AACjC,SAASC,uBAAuB,EAAEC,gBAAgB,QAAQ,+BAA+B;AAEzF,OAAOC,UAAU,MAAM,0BAA0B;AACjD,SAASC,mBAAmB,EAAEC,yBAAyB,QAAQ,wBAAwB;AAyCvF,MAAMC,aAAqC,GAAGC,IAAA;EAAA,IAAC;IAC3CC,iBAAiB;IACjBC,QAAQ;IACRC,cAAc,GAAGT,uBAAuB;IACxCU,eAAe,GAAGT,gBAAgB;IAClCU,IAAI,GAAG,EAAE;IACTC,OAAO;IACPC,cAAc;IACdC,cAAc;IACdC;EACJ,CAAC,GAAAT,IAAA;EAAA,oBACGP,KAAA,CAAAiB,aAAA,CAACb,mBAAmB,qBAChBJ,KAAA,CAAAiB,aAAA,CAACZ,yBAAyB,qBACtBL,KAAA,CAAAiB,aAAA,CAAClB,KAAK;IAACmB,EAAE,EAAC,qBAAqB;IAACC,WAAW,EAAEX;EAAkB,CAAE,CAC1C,CAAC,eAC5BR,KAAA,CAAAiB,aAAA,CAACd,UAAU;IACPM,QAAQ,EAAEA,QAAS;IACnBC,cAAc,EAAEA,cAAe;IAC/BC,eAAe,EAAEA,eAAgB;IACjCS,WAAW,EAAER,IAAK;IAClBC,OAAO,EAAEA,OAAQ;IACjBG,WAAW,EAAEA,WAAY;IACzBD,cAAc,EAAEA,cAAe;IAC/BD,cAAc,EAAEA;EAAe,CAClC,CACgB,CAAC;AAAA,CACzB;AAEDR,aAAa,CAACe,WAAW,GAAG,eAAe;AAE3C,eAAef,aAAa","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import styled from 'styled-components';
2
+ export const StyledPositionInput = styled.div`
3
+ position: relative;
4
+ `;
5
+ export const StyledPositionInputSearch = styled.div`
6
+ position: absolute;
7
+ width: 300px;
8
+ left: 8px;
9
+ top: 8px;
10
+ z-index: 3;
11
+ `;
12
+ //# sourceMappingURL=PositionInput.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionInput.styles.js","names":["styled","StyledPositionInput","div","StyledPositionInputSearch"],"sources":["../../../../src/components/position-input/PositionInput.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledPositionInput = styled.div`\n position: relative;\n`;\n\nexport const StyledPositionInputSearch = styled.div`\n position: absolute;\n width: 300px;\n left: 8px;\n top: 8px;\n z-index: 3;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,mBAAmB,GAAGD,MAAM,CAACE,GAAG;AAC7C;AACA,CAAC;AAED,OAAO,MAAMC,yBAAyB,GAAGH,MAAM,CAACE,GAAG;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,170 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { Wrapper } from '@googlemaps/react-wrapper';
3
+ import { StyledMapWrapper } from './MapWrapper.styles';
4
+ import { Polygon } from '@react-google-maps/api';
5
+ import Marker from './map/marker/Marker';
6
+ import Map from './map/Map';
7
+ const MapWrapper = _ref => {
8
+ let {
9
+ apiToken,
10
+ polygonOptions,
11
+ initialZoom,
12
+ initialPosition,
13
+ markers,
14
+ onMarkerAdd,
15
+ onMarkerRemove,
16
+ onMarkerChange
17
+ } = _ref;
18
+ const [polygonPath, setPolygonPath] = useState();
19
+ const [canPolyDraw, setCanPolyDraw] = useState(false);
20
+ const [zoom, setZoom] = useState(initialZoom);
21
+ const [center, setCenter] = useState(initialPosition);
22
+ const [internalMarkers, setInternalMarkers] = useState();
23
+ const [map, setMap] = useState();
24
+ useEffect(() => {
25
+ if (markers) {
26
+ setInternalMarkers(markers);
27
+ }
28
+ }, [markers]);
29
+ const handleClick = useCallback(e => {
30
+ const latLng = e.latLng?.toJSON();
31
+ if (!latLng) {
32
+ return;
33
+ }
34
+ setInternalMarkers(prevState => {
35
+ if (prevState && prevState.length >= 2) {
36
+ return prevState;
37
+ }
38
+ const newMarker = {
39
+ position: {
40
+ lat: latLng.lat,
41
+ lng: latLng.lng
42
+ },
43
+ id: prevState ? prevState.length : 0
44
+ };
45
+ if (typeof onMarkerAdd === 'function') {
46
+ onMarkerAdd(newMarker);
47
+ }
48
+ return prevState ? [...prevState, newMarker] : [newMarker];
49
+ });
50
+ }, [onMarkerAdd]);
51
+ useEffect(() => {
52
+ if (!internalMarkers) {
53
+ return;
54
+ }
55
+ if (internalMarkers.length !== 2) {
56
+ setCanPolyDraw(false);
57
+ return;
58
+ }
59
+ const path = [{
60
+ lat: internalMarkers[0]?.position.lat ?? 0,
61
+ lng: internalMarkers[0]?.position.lng ?? 0
62
+ }, {
63
+ lat: internalMarkers[0]?.position.lat ?? 0,
64
+ lng: internalMarkers[1]?.position.lng ?? 0
65
+ }, {
66
+ lat: internalMarkers[1]?.position.lat ?? 0,
67
+ lng: internalMarkers[1]?.position.lng ?? 0
68
+ }, {
69
+ lat: internalMarkers[1]?.position.lat ?? 0,
70
+ lng: internalMarkers[0]?.position.lng ?? 0
71
+ }];
72
+ const maxLat = path.reduce((prev, current) => prev.lat > current.lat ? prev : current);
73
+ const minLat = path.reduce((prev, current) => prev.lat < current.lat ? prev : current);
74
+ const maxLng = path.reduce((prev, current) => prev.lng > current.lng ? prev : current);
75
+ const minLng = path.reduce((prev, current) => prev.lng < current.lng ? prev : current);
76
+ const topLeft = path.find(item => item.lat === maxLat.lat && item.lng === minLng.lng);
77
+ const bottomRight = path.find(item => item.lat === minLat.lat && item.lng === maxLng.lng);
78
+ if (!topLeft || !bottomRight) {
79
+ return;
80
+ }
81
+ const centerLat = (topLeft.lat + bottomRight.lat) / 2;
82
+ const centerLng = (topLeft.lng + bottomRight.lng) / 2;
83
+ const polygonCenter = {
84
+ lat: centerLat,
85
+ lng: centerLng
86
+ };
87
+ if (!polygonCenter) {
88
+ return;
89
+ }
90
+ setCanPolyDraw(true);
91
+ setPolygonPath(path);
92
+ }, [internalMarkers]);
93
+ const handleIdle = m => {
94
+ setMap(m);
95
+ setZoom(m.getZoom() ?? 0);
96
+ setCenter(m.getCenter()?.toJSON() ?? {
97
+ lat: 0,
98
+ lng: 0
99
+ });
100
+ };
101
+ const handlePositionChange = position => {
102
+ setCenter(position);
103
+ };
104
+ const handleMarkerChange = useCallback(marker => {
105
+ setInternalMarkers(prevState => {
106
+ const updatedMarkers = (prevState ?? []).map(prevMarker => {
107
+ if (prevMarker.id === marker.id) {
108
+ return {
109
+ ...prevMarker,
110
+ position: marker.position
111
+ };
112
+ }
113
+ return prevMarker;
114
+ });
115
+ if (typeof onMarkerChange === 'function') {
116
+ onMarkerChange(updatedMarkers);
117
+ }
118
+ return updatedMarkers;
119
+ });
120
+ }, [onMarkerChange]);
121
+ const handleMarkerRemove = useCallback(id => {
122
+ setInternalMarkers(prevState => {
123
+ if (typeof onMarkerRemove === 'function') {
124
+ onMarkerRemove(id);
125
+ }
126
+ return prevState ? prevState.filter(marker => marker.id !== id) : [];
127
+ });
128
+ }, [onMarkerRemove]);
129
+ const markerList = useMemo(() => {
130
+ const items = [];
131
+ if (!internalMarkers) {
132
+ return items;
133
+ }
134
+ internalMarkers.forEach(_ref2 => {
135
+ let {
136
+ id,
137
+ position
138
+ } = _ref2;
139
+ items.push(/*#__PURE__*/React.createElement(Marker, {
140
+ key: `marker_${id}`,
141
+ id: id,
142
+ position: position,
143
+ isDraggable: true,
144
+ map: map,
145
+ onChange: handleMarkerChange,
146
+ onRemove: handleMarkerRemove
147
+ }));
148
+ });
149
+ return items;
150
+ }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);
151
+ return useMemo(() => /*#__PURE__*/React.createElement(StyledMapWrapper, null, /*#__PURE__*/React.createElement(Wrapper, {
152
+ apiKey: apiToken,
153
+ libraries: ['places']
154
+ }, /*#__PURE__*/React.createElement(Map, {
155
+ onClick: handleClick,
156
+ onIdle: handleIdle,
157
+ onPositionChange: handlePositionChange,
158
+ center: center,
159
+ zoom: zoom,
160
+ fullscreenControl: false,
161
+ mapTypeControl: false,
162
+ streetViewControl: false
163
+ }, markerList, canPolyDraw && /*#__PURE__*/React.createElement(Polygon, {
164
+ path: polygonPath,
165
+ options: polygonOptions
166
+ })))), [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions]);
167
+ };
168
+ MapWrapper.displayName = 'MapWrapper';
169
+ export default MapWrapper;
170
+ //# sourceMappingURL=MapWrapper.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,5 @@
1
+ import styled from 'styled-components';
2
+ export const StyledMapWrapper = styled.div`
3
+ height: 500px;
4
+ `;
5
+ //# sourceMappingURL=MapWrapper.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapWrapper.styles.js","names":["styled","StyledMapWrapper","div"],"sources":["../../../../../src/components/position-input/map-wrapper/MapWrapper.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledMapWrapper = styled.div`\n height: 500px;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,gBAAgB,GAAGD,MAAM,CAACE,GAAG;AAC1C;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,89 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { StyledMap } from './Map.styles';
3
+ import { useDeepCompareEffectForMaps } from '../../../../hooks/positionInput';
4
+ const Map = _ref => {
5
+ let {
6
+ mapTypeControl,
7
+ fullscreenControl,
8
+ streetViewControl,
9
+ children,
10
+ onClick,
11
+ onIdle,
12
+ zoom,
13
+ center,
14
+ onPositionChange
15
+ } = _ref;
16
+ const [map, setMap] = useState();
17
+ const ref = useRef(null);
18
+ useEffect(() => {
19
+ if (ref.current && !map) {
20
+ setMap(new window.google.maps.Map(ref.current, {}));
21
+ const input = document.getElementById('auto-complete-input');
22
+ if (!input) {
23
+ return;
24
+ }
25
+ const autoComplete = new google.maps.places.Autocomplete(input, {
26
+ // componentRestrictions: { country: ["de"] },
27
+ fields: ['address_component', 'geometry'],
28
+ types: ['(cities)']
29
+ });
30
+ input.placeholder = '';
31
+ autoComplete.addListener('place_changed', () => {
32
+ const place = autoComplete.getPlace();
33
+ const placeLocation = place.geometry?.location;
34
+ if (!placeLocation) {
35
+ return;
36
+ }
37
+ onPositionChange({
38
+ lat: placeLocation.lat(),
39
+ lng: placeLocation.lng()
40
+ });
41
+ });
42
+ }
43
+ }, [ref, map, onPositionChange]);
44
+ useEffect(() => {
45
+ if (map) {
46
+ map.setCenter(center);
47
+ }
48
+ }, [center, map]);
49
+
50
+ // because React does not do deep comparisons, a custom hook is used
51
+ // see discussion in https://github.com/googlemaps/js-samples/issues/946
52
+ useDeepCompareEffectForMaps(() => {
53
+ if (map) {
54
+ map.setOptions({
55
+ mapTypeControl,
56
+ fullscreenControl,
57
+ streetViewControl,
58
+ zoom
59
+ });
60
+ }
61
+ }, [map]);
62
+ useEffect(() => {
63
+ if (map) {
64
+ ['click', 'idle'].forEach(eventName => google.maps.event.clearListeners(map, eventName));
65
+ if (onClick) {
66
+ map.addListener('click', onClick);
67
+ }
68
+ if (onIdle) {
69
+ map.addListener('idle', () => onIdle(map));
70
+ }
71
+ }
72
+ }, [map, onClick, onIdle]);
73
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledMap, {
74
+ ref: ref
75
+ }), React.Children.map(children, child => {
76
+ if (/*#__PURE__*/React.isValidElement(child)) {
77
+ // set the map prop on the child component
78
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
79
+ // @ts-ignore
80
+ return /*#__PURE__*/React.cloneElement(child, {
81
+ map
82
+ });
83
+ }
84
+ return null;
85
+ }));
86
+ };
87
+ Map.displayName = 'Map';
88
+ export default Map;
89
+ //# sourceMappingURL=Map.js.map
@@ -0,0 +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":"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":[]}
@@ -0,0 +1,6 @@
1
+ import styled from 'styled-components';
2
+ export const StyledMap = styled.div`
3
+ height: 100%;
4
+ width: 100%;
5
+ `;
6
+ //# sourceMappingURL=Map.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Map.styles.js","names":["styled","StyledMap","div"],"sources":["../../../../../../src/components/position-input/map-wrapper/map/Map.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledMap = styled.div`\n height: 100%;\n width: 100%;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,SAAS,GAAGD,MAAM,CAACE,GAAG;AACnC;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ import { useEffect, useState } from 'react';
2
+ const Marker = _ref => {
3
+ let {
4
+ id,
5
+ isDraggable,
6
+ position,
7
+ onChange,
8
+ onRemove,
9
+ map
10
+ } = _ref;
11
+ const [pin, setPin] = useState();
12
+ useEffect(() => {
13
+ if (pin) {
14
+ google.maps.event.addListener(pin, 'dragend', evt => {
15
+ const newLat = evt.latLng?.lat();
16
+ const newLng = evt.latLng?.lng();
17
+ if (!newLat || !newLng) {
18
+ return;
19
+ }
20
+ onChange({
21
+ id,
22
+ position: {
23
+ lng: newLng,
24
+ lat: newLat
25
+ }
26
+ });
27
+ });
28
+ google.maps.event.addListener(pin, 'rightclick', () => {
29
+ onRemove(id);
30
+ });
31
+ }
32
+ }, [pin, id, onChange, onRemove]);
33
+ useEffect(() => {
34
+ if (!pin) {
35
+ setPin(new google.maps.Marker({
36
+ map
37
+ }));
38
+ }
39
+
40
+ // remove marker from map on unmount
41
+ return () => {
42
+ if (pin) {
43
+ pin.setMap(null);
44
+ }
45
+ };
46
+ }, [pin, map]);
47
+ useEffect(() => {
48
+ if (pin) {
49
+ pin.setOptions({
50
+ draggable: isDraggable,
51
+ position,
52
+ map
53
+ });
54
+ }
55
+ }, [pin, isDraggable, position, map]);
56
+ return null;
57
+ };
58
+ Marker.displayName = 'Marker';
59
+ export default Marker;
60
+ //# sourceMappingURL=Marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Marker.js","names":["useEffect","useState","Marker","_ref","id","isDraggable","position","onChange","onRemove","map","pin","setPin","google","maps","event","addListener","evt","newLat","latLng","lat","newLng","lng","setMap","setOptions","draggable","displayName"],"sources":["../../../../../../../src/components/position-input/map-wrapper/map/marker/Marker.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react';\nimport type { IMarker, Position } from '../../../../../types/positionInput';\n\nexport type MarkerProps = {\n id: number;\n position: Position;\n isDraggable: boolean;\n onChange: (marker: IMarker) => void;\n onRemove: (id: number) => void;\n map?: google.maps.Map;\n};\n\nconst Marker: FC<MarkerProps> = ({ id, isDraggable, position, onChange, onRemove, map }) => {\n const [pin, setPin] = useState<google.maps.Marker>();\n\n useEffect(() => {\n if (pin) {\n google.maps.event.addListener(pin, 'dragend', (evt: google.maps.MapMouseEvent) => {\n const newLat = evt.latLng?.lat();\n const newLng = evt.latLng?.lng();\n\n if (!newLat || !newLng) {\n return;\n }\n\n onChange({ id, position: { lng: newLng, lat: newLat } });\n });\n\n google.maps.event.addListener(pin, 'rightclick', () => {\n onRemove(id);\n });\n }\n }, [pin, id, onChange, onRemove]);\n\n useEffect(() => {\n if (!pin) {\n setPin(new google.maps.Marker({ map }));\n }\n\n // remove marker from map on unmount\n return () => {\n if (pin) {\n pin.setMap(null);\n }\n };\n }, [pin, map]);\n\n useEffect(() => {\n if (pin) {\n pin.setOptions({\n draggable: isDraggable,\n position,\n map,\n });\n }\n }, [pin, isDraggable, position, map]);\n\n return null;\n};\n\nMarker.displayName = 'Marker';\n\nexport default Marker;\n"],"mappings":"AAAA,SAAaA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAY/C,MAAMC,MAAuB,GAAGC,IAAA,IAA4D;EAAA,IAA3D;IAAEC,EAAE;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAI,CAAC,GAAAN,IAAA;EACnF,MAAM,CAACO,GAAG,EAAEC,MAAM,CAAC,GAAGV,QAAQ,CAAqB,CAAC;EAEpDD,SAAS,CAAC,MAAM;IACZ,IAAIU,GAAG,EAAE;MACLE,MAAM,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACL,GAAG,EAAE,SAAS,EAAGM,GAA8B,IAAK;QAC9E,MAAMC,MAAM,GAAGD,GAAG,CAACE,MAAM,EAAEC,GAAG,CAAC,CAAC;QAChC,MAAMC,MAAM,GAAGJ,GAAG,CAACE,MAAM,EAAEG,GAAG,CAAC,CAAC;QAEhC,IAAI,CAACJ,MAAM,IAAI,CAACG,MAAM,EAAE;UACpB;QACJ;QAEAb,QAAQ,CAAC;UAAEH,EAAE;UAAEE,QAAQ,EAAE;YAAEe,GAAG,EAAED,MAAM;YAAED,GAAG,EAAEF;UAAO;QAAE,CAAC,CAAC;MAC5D,CAAC,CAAC;MAEFL,MAAM,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACL,GAAG,EAAE,YAAY,EAAE,MAAM;QACnDF,QAAQ,CAACJ,EAAE,CAAC;MAChB,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAACM,GAAG,EAAEN,EAAE,EAAEG,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAEjCR,SAAS,CAAC,MAAM;IACZ,IAAI,CAACU,GAAG,EAAE;MACNC,MAAM,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACX,MAAM,CAAC;QAAEO;MAAI,CAAC,CAAC,CAAC;IAC3C;;IAEA;IACA,OAAO,MAAM;MACT,IAAIC,GAAG,EAAE;QACLA,GAAG,CAACY,MAAM,CAAC,IAAI,CAAC;MACpB;IACJ,CAAC;EACL,CAAC,EAAE,CAACZ,GAAG,EAAED,GAAG,CAAC,CAAC;EAEdT,SAAS,CAAC,MAAM;IACZ,IAAIU,GAAG,EAAE;MACLA,GAAG,CAACa,UAAU,CAAC;QACXC,SAAS,EAAEnB,WAAW;QACtBC,QAAQ;QACRG;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAACC,GAAG,EAAEL,WAAW,EAAEC,QAAQ,EAAEG,GAAG,CAAC,CAAC;EAErC,OAAO,IAAI;AACf,CAAC;AAEDP,MAAM,CAACuB,WAAW,GAAG,QAAQ;AAE7B,eAAevB,MAAM","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ export const DEFAULT_POLYGON_OPTIONS = {
2
+ strokeColor: '#000000',
3
+ strokeOpacity: 0.8,
4
+ strokeWeight: 1,
5
+ fillColor: '#808080',
6
+ fillOpacity: 0.25,
7
+ clickable: false,
8
+ draggable: false,
9
+ editable: false,
10
+ visible: true,
11
+ radius: 30000,
12
+ zIndex: 1
13
+ };
14
+ export const DEFAULT_POSITION = {
15
+ lat: 52.067450969671796,
16
+ lng: 7.017417
17
+ };
18
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":["DEFAULT_POLYGON_OPTIONS","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","clickable","draggable","editable","visible","radius","zIndex","DEFAULT_POSITION","lat","lng"],"sources":["../../../src/constants/positionInput.ts"],"sourcesContent":["import type { PolygonOptions, Position } from '../types/positionInput';\n\nexport const DEFAULT_POLYGON_OPTIONS: PolygonOptions = {\n strokeColor: '#000000',\n strokeOpacity: 0.8,\n strokeWeight: 1,\n fillColor: '#808080',\n fillOpacity: 0.25,\n clickable: false,\n draggable: false,\n editable: false,\n visible: true,\n radius: 30000,\n zIndex: 1,\n};\n\nexport const DEFAULT_POSITION: Position = {\n lat: 52.067450969671796,\n lng: 7.017417,\n};\n"],"mappings":"AAEA,OAAO,MAAMA,uBAAuC,GAAG;EACnDC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,GAAG;EAClBC,YAAY,EAAE,CAAC;EACfC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,IAAI;EACjBC,SAAS,EAAE,KAAK;EAChBC,SAAS,EAAE,KAAK;EAChBC,QAAQ,EAAE,KAAK;EACfC,OAAO,EAAE,IAAI;EACbC,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,gBAA0B,GAAG;EACtCC,GAAG,EAAE,kBAAkB;EACvBC,GAAG,EAAE;AACT,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import React, { useEffect } from 'react';
2
+ import { createCustomEqual } from 'fast-equals';
3
+ import { isLatLngLiteral } from '@googlemaps/typescript-guards';
4
+
5
+ // Note do not touch!
6
+
7
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
+ // @ts-ignore
9
+ const deepCompareEqualsForMaps = createCustomEqual(deepEqual => (a, b) => {
10
+ if (isLatLngLiteral(a) || a instanceof google.maps.LatLng || isLatLngLiteral(b) || b instanceof google.maps.LatLng) {
11
+ return new google.maps.LatLng(a).equals(new google.maps.LatLng(b));
12
+ }
13
+
14
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return
15
+ return deepEqual(a, b);
16
+ });
17
+ const useDeepCompareMemoize = value => {
18
+ const ref = React.useRef();
19
+ if (!deepCompareEqualsForMaps(value, ref.current)) {
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21
+ ref.current = value;
22
+ }
23
+ return ref.current;
24
+ };
25
+ export const useDeepCompareEffectForMaps = (callback, dependencies) => {
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ useEffect(callback, dependencies.map(useDeepCompareMemoize));
28
+ };
29
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":["React","useEffect","createCustomEqual","isLatLngLiteral","deepCompareEqualsForMaps","deepEqual","a","b","google","maps","LatLng","equals","useDeepCompareMemoize","value","ref","useRef","current","useDeepCompareEffectForMaps","callback","dependencies","map"],"sources":["../../../src/hooks/positionInput.tsx"],"sourcesContent":["import React, { type EffectCallback, useEffect } from 'react';\nimport { createCustomEqual } from 'fast-equals';\nimport { isLatLngLiteral } from '@googlemaps/typescript-guards';\n\n// Note do not touch!\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst deepCompareEqualsForMaps = createCustomEqual((deepEqual) => (a, b) => {\n if (\n isLatLngLiteral(a) ||\n a instanceof google.maps.LatLng ||\n isLatLngLiteral(b) ||\n b instanceof google.maps.LatLng\n ) {\n return new google.maps.LatLng(a).equals(new google.maps.LatLng(b));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return\n return deepEqual(a, b);\n});\n\nconst useDeepCompareMemoize = (value: any) => {\n const ref = React.useRef();\n\n if (!deepCompareEqualsForMaps(value, ref.current)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ref.current = value;\n }\n\n return ref.current;\n};\n\nexport const useDeepCompareEffectForMaps = (callback: EffectCallback, dependencies: any[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, dependencies.map(useDeepCompareMemoize));\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAyBC,SAAS,QAAQ,OAAO;AAC7D,SAASC,iBAAiB,QAAQ,aAAa;AAC/C,SAASC,eAAe,QAAQ,+BAA+B;;AAE/D;;AAEA;AACA;AACA,MAAMC,wBAAwB,GAAGF,iBAAiB,CAAEG,SAAS,IAAK,CAACC,CAAC,EAAEC,CAAC,KAAK;EACxE,IACIJ,eAAe,CAACG,CAAC,CAAC,IAClBA,CAAC,YAAYE,MAAM,CAACC,IAAI,CAACC,MAAM,IAC/BP,eAAe,CAACI,CAAC,CAAC,IAClBA,CAAC,YAAYC,MAAM,CAACC,IAAI,CAACC,MAAM,EACjC;IACE,OAAO,IAAIF,MAAM,CAACC,IAAI,CAACC,MAAM,CAACJ,CAAC,CAAC,CAACK,MAAM,CAAC,IAAIH,MAAM,CAACC,IAAI,CAACC,MAAM,CAACH,CAAC,CAAC,CAAC;EACtE;;EAEA;EACA,OAAOF,SAAS,CAACC,CAAC,EAAEC,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAMK,qBAAqB,GAAIC,KAAU,IAAK;EAC1C,MAAMC,GAAG,GAAGd,KAAK,CAACe,MAAM,CAAC,CAAC;EAE1B,IAAI,CAACX,wBAAwB,CAACS,KAAK,EAAEC,GAAG,CAACE,OAAO,CAAC,EAAE;IAC/C;IACAF,GAAG,CAACE,OAAO,GAAGH,KAAK;EACvB;EAEA,OAAOC,GAAG,CAACE,OAAO;AACtB,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAGA,CAACC,QAAwB,EAAEC,YAAmB,KAAK;EAC1F;EACAlB,SAAS,CAACiB,QAAQ,EAAEC,YAAY,CAACC,GAAG,CAACR,qBAAqB,CAAC,CAAC;AAChE,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ // noinspection JSUnusedGlobalSymbols
2
+ export { default as PositionInput } from './components/position-input/PositionInput';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default","PositionInput"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\nexport { default as PositionInput } from './components/position-input/PositionInput';\nexport type { PolygonOptions, Position, IMarker as Marker } from './types/positionInput';\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,aAAa,QAAQ,2CAA2C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":[],"sources":["../../../src/types/positionInput.ts"],"sourcesContent":["export interface PolygonOptions {\n strokeColor: string;\n strokeOpacity: number;\n strokeWeight: number;\n fillColor: string;\n fillOpacity: number;\n clickable: boolean;\n draggable: boolean;\n editable: boolean;\n visible: boolean;\n radius: number;\n zIndex: number;\n}\n\nexport interface Position {\n lat: number;\n lng: number;\n}\n\nexport interface IMarker {\n position: Position;\n id: number;\n}\n"],"mappings":"","ignoreList":[]}