@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Tobit Laboratories AG
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ <div align="center">
2
+ <h1>
3
+ <img src="https://raw.githubusercontent.com/TobitSoftware/chayns-components/master/assets/logo.png" width="600px" alt="chayns-components" />
4
+ </h1>
5
+ <p>A set of beautiful React components for developing your own applications with chayns.</p>
6
+ <div>
7
+ <img src="https://img.shields.io/npm/dm/@chayns-components/typewriter.svg?style=for-the-badge" alt="" />
8
+ <img src="https://img.shields.io/npm/v/@chayns-components/typewriter?style=for-the-badge" alt="" />
9
+ <img src="https://img.shields.io/github/license/TobitSoftware/chayns-components?style=for-the-badge" alt="" />
10
+ <img src="https://img.shields.io/github/contributors/TobitSoftware/chayns-components?style=for-the-badge" alt="" />
11
+ </div>
12
+ </div>
13
+
14
+ ---
15
+
16
+ ## Installation
17
+
18
+ First you need to install the gallery part of the chayns-components.
19
+
20
+ ```bash
21
+ # NPM
22
+ npm install @chayns-components/maps
23
+
24
+ # Yarn
25
+ yarn add @chayns-components/maps
26
+ ```
27
+
28
+ > **Information:** Since the components have now been implemented with the styled-components
29
+ > library, the styles are delivered directly with the components. There is no need to load an extra
30
+ > stylesheet anymore.
31
+
32
+ ## Usage
33
+
34
+ For detailed usage visit the [storybook](https://components.chayns.site/storybook).
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _core = require("@chayns-components/core");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _positionInput = require("../../constants/positionInput");
10
+ var _MapWrapper = _interopRequireDefault(require("./map-wrapper/MapWrapper"));
11
+ var _PositionInput = require("./PositionInput.styles");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const PositionInput = ({
14
+ searchPlaceholder,
15
+ apiToken,
16
+ polygonOptions = _positionInput.DEFAULT_POLYGON_OPTIONS,
17
+ initialPosition = _positionInput.DEFAULT_POSITION,
18
+ zoom = 13,
19
+ markers,
20
+ onMarkerRemove,
21
+ onMarkerChange,
22
+ onMarkerAdd
23
+ }) => /*#__PURE__*/_react.default.createElement(_PositionInput.StyledPositionInput, null, /*#__PURE__*/_react.default.createElement(_PositionInput.StyledPositionInputSearch, null, /*#__PURE__*/_react.default.createElement(_core.Input, {
24
+ id: "auto-complete-input",
25
+ placeholder: searchPlaceholder
26
+ })), /*#__PURE__*/_react.default.createElement(_MapWrapper.default, {
27
+ apiToken: apiToken,
28
+ polygonOptions: polygonOptions,
29
+ initialPosition: initialPosition,
30
+ initialZoom: zoom,
31
+ markers: markers,
32
+ onMarkerAdd: onMarkerAdd,
33
+ onMarkerChange: onMarkerChange,
34
+ onMarkerRemove: onMarkerRemove
35
+ }));
36
+ PositionInput.displayName = 'PositionInput';
37
+ var _default = exports.default = PositionInput;
38
+ //# sourceMappingURL=PositionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionInput.js","names":["_core","require","_react","_interopRequireDefault","_positionInput","_MapWrapper","_PositionInput","e","__esModule","default","PositionInput","searchPlaceholder","apiToken","polygonOptions","DEFAULT_POLYGON_OPTIONS","initialPosition","DEFAULT_POSITION","zoom","markers","onMarkerRemove","onMarkerChange","onMarkerAdd","createElement","StyledPositionInput","StyledPositionInputSearch","Input","id","placeholder","initialZoom","displayName","_default","exports"],"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,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAAwF,SAAAE,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAyCxF,MAAMG,aAAqC,GAAGA,CAAC;EAC3CC,iBAAiB;EACjBC,QAAQ;EACRC,cAAc,GAAGC,sCAAuB;EACxCC,eAAe,GAAGC,+BAAgB;EAClCC,IAAI,GAAG,EAAE;EACTC,OAAO;EACPC,cAAc;EACdC,cAAc;EACdC;AACJ,CAAC,kBACGnB,MAAA,CAAAO,OAAA,CAAAa,aAAA,CAAChB,cAAA,CAAAiB,mBAAmB,qBAChBrB,MAAA,CAAAO,OAAA,CAAAa,aAAA,CAAChB,cAAA,CAAAkB,yBAAyB,qBACtBtB,MAAA,CAAAO,OAAA,CAAAa,aAAA,CAACtB,KAAA,CAAAyB,KAAK;EAACC,EAAE,EAAC,qBAAqB;EAACC,WAAW,EAAEhB;AAAkB,CAAE,CAC1C,CAAC,eAC5BT,MAAA,CAAAO,OAAA,CAAAa,aAAA,CAACjB,WAAA,CAAAI,OAAU;EACPG,QAAQ,EAAEA,QAAS;EACnBC,cAAc,EAAEA,cAAe;EAC/BE,eAAe,EAAEA,eAAgB;EACjCa,WAAW,EAAEX,IAAK;EAClBC,OAAO,EAAEA,OAAQ;EACjBG,WAAW,EAAEA,WAAY;EACzBD,cAAc,EAAEA,cAAe;EAC/BD,cAAc,EAAEA;AAAe,CAClC,CACgB,CACxB;AAEDT,aAAa,CAACmB,WAAW,GAAG,eAAe;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAtB,OAAA,GAE7BC,aAAa","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledPositionInputSearch = exports.StyledPositionInput = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledPositionInput = exports.StyledPositionInput = _styledComponents.default.div`
10
+ position: relative;
11
+ `;
12
+ const StyledPositionInputSearch = exports.StyledPositionInputSearch = _styledComponents.default.div`
13
+ position: absolute;
14
+ width: 300px;
15
+ left: 8px;
16
+ top: 8px;
17
+ z-index: 3;
18
+ `;
19
+ //# sourceMappingURL=PositionInput.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionInput.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledPositionInput","exports","styled","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,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,yBAAM,CAACC,GAAG;AAC7C;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAGF,yBAAM,CAACC,GAAG;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactWrapper = require("@googlemaps/react-wrapper");
9
+ var _MapWrapper = require("./MapWrapper.styles");
10
+ var _api = require("@react-google-maps/api");
11
+ var _Marker = _interopRequireDefault(require("./map/marker/Marker"));
12
+ var _Map = _interopRequireDefault(require("./map/Map"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ 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); }
15
+ 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; }
16
+ const MapWrapper = ({
17
+ apiToken,
18
+ polygonOptions,
19
+ initialZoom,
20
+ initialPosition,
21
+ markers,
22
+ onMarkerAdd,
23
+ onMarkerRemove,
24
+ onMarkerChange
25
+ }) => {
26
+ const [polygonPath, setPolygonPath] = (0, _react.useState)();
27
+ const [canPolyDraw, setCanPolyDraw] = (0, _react.useState)(false);
28
+ const [zoom, setZoom] = (0, _react.useState)(initialZoom);
29
+ const [center, setCenter] = (0, _react.useState)(initialPosition);
30
+ const [internalMarkers, setInternalMarkers] = (0, _react.useState)();
31
+ const [map, setMap] = (0, _react.useState)();
32
+ (0, _react.useEffect)(() => {
33
+ if (markers) {
34
+ setInternalMarkers(markers);
35
+ }
36
+ }, [markers]);
37
+ const handleClick = (0, _react.useCallback)(e => {
38
+ var _e$latLng;
39
+ const latLng = (_e$latLng = e.latLng) === null || _e$latLng === void 0 ? void 0 : _e$latLng.toJSON();
40
+ if (!latLng) {
41
+ return;
42
+ }
43
+ setInternalMarkers(prevState => {
44
+ if (prevState && prevState.length >= 2) {
45
+ return prevState;
46
+ }
47
+ const newMarker = {
48
+ position: {
49
+ lat: latLng.lat,
50
+ lng: latLng.lng
51
+ },
52
+ id: prevState ? prevState.length : 0
53
+ };
54
+ if (typeof onMarkerAdd === 'function') {
55
+ onMarkerAdd(newMarker);
56
+ }
57
+ return prevState ? [...prevState, newMarker] : [newMarker];
58
+ });
59
+ }, [onMarkerAdd]);
60
+ (0, _react.useEffect)(() => {
61
+ var _internalMarkers$, _internalMarkers$2, _internalMarkers$3, _internalMarkers$4, _internalMarkers$5, _internalMarkers$6, _internalMarkers$7, _internalMarkers$8;
62
+ if (!internalMarkers) {
63
+ return;
64
+ }
65
+ if (internalMarkers.length !== 2) {
66
+ setCanPolyDraw(false);
67
+ return;
68
+ }
69
+ const path = [{
70
+ lat: ((_internalMarkers$ = internalMarkers[0]) === null || _internalMarkers$ === void 0 ? void 0 : _internalMarkers$.position.lat) ?? 0,
71
+ lng: ((_internalMarkers$2 = internalMarkers[0]) === null || _internalMarkers$2 === void 0 ? void 0 : _internalMarkers$2.position.lng) ?? 0
72
+ }, {
73
+ lat: ((_internalMarkers$3 = internalMarkers[0]) === null || _internalMarkers$3 === void 0 ? void 0 : _internalMarkers$3.position.lat) ?? 0,
74
+ lng: ((_internalMarkers$4 = internalMarkers[1]) === null || _internalMarkers$4 === void 0 ? void 0 : _internalMarkers$4.position.lng) ?? 0
75
+ }, {
76
+ lat: ((_internalMarkers$5 = internalMarkers[1]) === null || _internalMarkers$5 === void 0 ? void 0 : _internalMarkers$5.position.lat) ?? 0,
77
+ lng: ((_internalMarkers$6 = internalMarkers[1]) === null || _internalMarkers$6 === void 0 ? void 0 : _internalMarkers$6.position.lng) ?? 0
78
+ }, {
79
+ lat: ((_internalMarkers$7 = internalMarkers[1]) === null || _internalMarkers$7 === void 0 ? void 0 : _internalMarkers$7.position.lat) ?? 0,
80
+ lng: ((_internalMarkers$8 = internalMarkers[0]) === null || _internalMarkers$8 === void 0 ? void 0 : _internalMarkers$8.position.lng) ?? 0
81
+ }];
82
+ const maxLat = path.reduce((prev, current) => prev.lat > current.lat ? prev : current);
83
+ const minLat = path.reduce((prev, current) => prev.lat < current.lat ? prev : current);
84
+ const maxLng = path.reduce((prev, current) => prev.lng > current.lng ? prev : current);
85
+ const minLng = path.reduce((prev, current) => prev.lng < current.lng ? prev : current);
86
+ const topLeft = path.find(item => item.lat === maxLat.lat && item.lng === minLng.lng);
87
+ const bottomRight = path.find(item => item.lat === minLat.lat && item.lng === maxLng.lng);
88
+ if (!topLeft || !bottomRight) {
89
+ return;
90
+ }
91
+ const centerLat = (topLeft.lat + bottomRight.lat) / 2;
92
+ const centerLng = (topLeft.lng + bottomRight.lng) / 2;
93
+ const polygonCenter = {
94
+ lat: centerLat,
95
+ lng: centerLng
96
+ };
97
+ if (!polygonCenter) {
98
+ return;
99
+ }
100
+ setCanPolyDraw(true);
101
+ setPolygonPath(path);
102
+ }, [internalMarkers]);
103
+ const handleIdle = m => {
104
+ var _m$getCenter;
105
+ setMap(m);
106
+ setZoom(m.getZoom() ?? 0);
107
+ setCenter(((_m$getCenter = m.getCenter()) === null || _m$getCenter === void 0 ? void 0 : _m$getCenter.toJSON()) ?? {
108
+ lat: 0,
109
+ lng: 0
110
+ });
111
+ };
112
+ const handlePositionChange = position => {
113
+ setCenter(position);
114
+ };
115
+ const handleMarkerChange = (0, _react.useCallback)(marker => {
116
+ setInternalMarkers(prevState => {
117
+ const updatedMarkers = (prevState ?? []).map(prevMarker => {
118
+ if (prevMarker.id === marker.id) {
119
+ return {
120
+ ...prevMarker,
121
+ position: marker.position
122
+ };
123
+ }
124
+ return prevMarker;
125
+ });
126
+ if (typeof onMarkerChange === 'function') {
127
+ onMarkerChange(updatedMarkers);
128
+ }
129
+ return updatedMarkers;
130
+ });
131
+ }, [onMarkerChange]);
132
+ const handleMarkerRemove = (0, _react.useCallback)(id => {
133
+ setInternalMarkers(prevState => {
134
+ if (typeof onMarkerRemove === 'function') {
135
+ onMarkerRemove(id);
136
+ }
137
+ return prevState ? prevState.filter(marker => marker.id !== id) : [];
138
+ });
139
+ }, [onMarkerRemove]);
140
+ const markerList = (0, _react.useMemo)(() => {
141
+ const items = [];
142
+ if (!internalMarkers) {
143
+ return items;
144
+ }
145
+ internalMarkers.forEach(({
146
+ id,
147
+ position
148
+ }) => {
149
+ items.push(/*#__PURE__*/_react.default.createElement(_Marker.default, {
150
+ key: `marker_${id}`,
151
+ id: id,
152
+ position: position,
153
+ isDraggable: true,
154
+ map: map,
155
+ onChange: handleMarkerChange,
156
+ onRemove: handleMarkerRemove
157
+ }));
158
+ });
159
+ return items;
160
+ }, [handleMarkerChange, handleMarkerRemove, internalMarkers, map]);
161
+ return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_MapWrapper.StyledMapWrapper, null, /*#__PURE__*/_react.default.createElement(_reactWrapper.Wrapper, {
162
+ apiKey: apiToken,
163
+ libraries: ['places']
164
+ }, /*#__PURE__*/_react.default.createElement(_Map.default, {
165
+ onClick: handleClick,
166
+ onIdle: handleIdle,
167
+ onPositionChange: handlePositionChange,
168
+ center: center,
169
+ zoom: zoom,
170
+ fullscreenControl: false,
171
+ mapTypeControl: false,
172
+ streetViewControl: false
173
+ }, markerList, canPolyDraw && /*#__PURE__*/_react.default.createElement(_api.Polygon, {
174
+ path: polygonPath,
175
+ options: polygonOptions
176
+ })))), [apiToken, handleClick, center, zoom, markerList, canPolyDraw, polygonPath, polygonOptions]);
177
+ };
178
+ MapWrapper.displayName = 'MapWrapper';
179
+ var _default = exports.default = MapWrapper;
180
+ //# sourceMappingURL=MapWrapper.js.map
@@ -0,0 +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":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMapWrapper = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledMapWrapper = exports.StyledMapWrapper = _styledComponents.default.div`
10
+ height: 500px;
11
+ `;
12
+ //# sourceMappingURL=MapWrapper.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapWrapper.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledMapWrapper","exports","styled","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,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAGE,yBAAM,CAACC,GAAG;AAC1C;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _Map = require("./Map.styles");
9
+ var _positionInput = require("../../../../hooks/positionInput");
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
+ const Map = ({
13
+ mapTypeControl,
14
+ fullscreenControl,
15
+ streetViewControl,
16
+ children,
17
+ onClick,
18
+ onIdle,
19
+ zoom,
20
+ center,
21
+ onPositionChange
22
+ }) => {
23
+ const [map, setMap] = (0, _react.useState)();
24
+ const ref = (0, _react.useRef)(null);
25
+ (0, _react.useEffect)(() => {
26
+ if (ref.current && !map) {
27
+ setMap(new window.google.maps.Map(ref.current, {}));
28
+ const input = document.getElementById('auto-complete-input');
29
+ if (!input) {
30
+ return;
31
+ }
32
+ const autoComplete = new google.maps.places.Autocomplete(input, {
33
+ // componentRestrictions: { country: ["de"] },
34
+ fields: ['address_component', 'geometry'],
35
+ types: ['(cities)']
36
+ });
37
+ input.placeholder = '';
38
+ autoComplete.addListener('place_changed', () => {
39
+ var _place$geometry;
40
+ const place = autoComplete.getPlace();
41
+ const placeLocation = (_place$geometry = place.geometry) === null || _place$geometry === void 0 ? void 0 : _place$geometry.location;
42
+ if (!placeLocation) {
43
+ return;
44
+ }
45
+ onPositionChange({
46
+ lat: placeLocation.lat(),
47
+ lng: placeLocation.lng()
48
+ });
49
+ });
50
+ }
51
+ }, [ref, map, onPositionChange]);
52
+ (0, _react.useEffect)(() => {
53
+ if (map) {
54
+ map.setCenter(center);
55
+ }
56
+ }, [center, map]);
57
+
58
+ // because React does not do deep comparisons, a custom hook is used
59
+ // see discussion in https://github.com/googlemaps/js-samples/issues/946
60
+ (0, _positionInput.useDeepCompareEffectForMaps)(() => {
61
+ if (map) {
62
+ map.setOptions({
63
+ mapTypeControl,
64
+ fullscreenControl,
65
+ streetViewControl,
66
+ zoom
67
+ });
68
+ }
69
+ }, [map]);
70
+ (0, _react.useEffect)(() => {
71
+ if (map) {
72
+ ['click', 'idle'].forEach(eventName => google.maps.event.clearListeners(map, eventName));
73
+ if (onClick) {
74
+ map.addListener('click', onClick);
75
+ }
76
+ if (onIdle) {
77
+ map.addListener('idle', () => onIdle(map));
78
+ }
79
+ }
80
+ }, [map, onClick, onIdle]);
81
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Map.StyledMap, {
82
+ ref: ref
83
+ }), _react.default.Children.map(children, child => {
84
+ if (/*#__PURE__*/_react.default.isValidElement(child)) {
85
+ // set the map prop on the child component
86
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
87
+ // @ts-ignore
88
+ return /*#__PURE__*/_react.default.cloneElement(child, {
89
+ map
90
+ });
91
+ }
92
+ return null;
93
+ }));
94
+ };
95
+ Map.displayName = 'Map';
96
+ var _default = exports.default = Map;
97
+ //# sourceMappingURL=Map.js.map
@@ -0,0 +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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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMap = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledMap = exports.StyledMap = _styledComponents.default.div`
10
+ height: 100%;
11
+ width: 100%;
12
+ `;
13
+ //# sourceMappingURL=Map.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Map.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledMap","exports","styled","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,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,yBAAM,CAACC,GAAG;AACnC;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ const Marker = ({
9
+ id,
10
+ isDraggable,
11
+ position,
12
+ onChange,
13
+ onRemove,
14
+ map
15
+ }) => {
16
+ const [pin, setPin] = (0, _react.useState)();
17
+ (0, _react.useEffect)(() => {
18
+ if (pin) {
19
+ google.maps.event.addListener(pin, 'dragend', evt => {
20
+ var _evt$latLng, _evt$latLng2;
21
+ const newLat = (_evt$latLng = evt.latLng) === null || _evt$latLng === void 0 ? void 0 : _evt$latLng.lat();
22
+ const newLng = (_evt$latLng2 = evt.latLng) === null || _evt$latLng2 === void 0 ? void 0 : _evt$latLng2.lng();
23
+ if (!newLat || !newLng) {
24
+ return;
25
+ }
26
+ onChange({
27
+ id,
28
+ position: {
29
+ lng: newLng,
30
+ lat: newLat
31
+ }
32
+ });
33
+ });
34
+ google.maps.event.addListener(pin, 'rightclick', () => {
35
+ onRemove(id);
36
+ });
37
+ }
38
+ }, [pin, id, onChange, onRemove]);
39
+ (0, _react.useEffect)(() => {
40
+ if (!pin) {
41
+ setPin(new google.maps.Marker({
42
+ map
43
+ }));
44
+ }
45
+
46
+ // remove marker from map on unmount
47
+ return () => {
48
+ if (pin) {
49
+ pin.setMap(null);
50
+ }
51
+ };
52
+ }, [pin, map]);
53
+ (0, _react.useEffect)(() => {
54
+ if (pin) {
55
+ pin.setOptions({
56
+ draggable: isDraggable,
57
+ position,
58
+ map
59
+ });
60
+ }
61
+ }, [pin, isDraggable, position, map]);
62
+ return null;
63
+ };
64
+ Marker.displayName = 'Marker';
65
+ var _default = exports.default = Marker;
66
+ //# sourceMappingURL=Marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Marker.js","names":["_react","require","Marker","id","isDraggable","position","onChange","onRemove","map","pin","setPin","useState","useEffect","google","maps","event","addListener","evt","_evt$latLng","_evt$latLng2","newLat","latLng","lat","newLng","lng","setMap","setOptions","draggable","displayName","_default","exports","default"],"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,IAAAA,MAAA,GAAAC,OAAA;AAYA,MAAMC,MAAuB,GAAGA,CAAC;EAAEC,EAAE;EAAEC,WAAW;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC;AAAI,CAAC,KAAK;EACxF,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAG,IAAAC,eAAQ,EAAqB,CAAC;EAEpD,IAAAC,gBAAS,EAAC,MAAM;IACZ,IAAIH,GAAG,EAAE;MACLI,MAAM,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACP,GAAG,EAAE,SAAS,EAAGQ,GAA8B,IAAK;QAAA,IAAAC,WAAA,EAAAC,YAAA;QAC9E,MAAMC,MAAM,IAAAF,WAAA,GAAGD,GAAG,CAACI,MAAM,cAAAH,WAAA,uBAAVA,WAAA,CAAYI,GAAG,CAAC,CAAC;QAChC,MAAMC,MAAM,IAAAJ,YAAA,GAAGF,GAAG,CAACI,MAAM,cAAAF,YAAA,uBAAVA,YAAA,CAAYK,GAAG,CAAC,CAAC;QAEhC,IAAI,CAACJ,MAAM,IAAI,CAACG,MAAM,EAAE;UACpB;QACJ;QAEAjB,QAAQ,CAAC;UAAEH,EAAE;UAAEE,QAAQ,EAAE;YAAEmB,GAAG,EAAED,MAAM;YAAED,GAAG,EAAEF;UAAO;QAAE,CAAC,CAAC;MAC5D,CAAC,CAAC;MAEFP,MAAM,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACP,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;EAEjC,IAAAK,gBAAS,EAAC,MAAM;IACZ,IAAI,CAACH,GAAG,EAAE;MACNC,MAAM,CAAC,IAAIG,MAAM,CAACC,IAAI,CAACZ,MAAM,CAAC;QAAEM;MAAI,CAAC,CAAC,CAAC;IAC3C;;IAEA;IACA,OAAO,MAAM;MACT,IAAIC,GAAG,EAAE;QACLA,GAAG,CAACgB,MAAM,CAAC,IAAI,CAAC;MACpB;IACJ,CAAC;EACL,CAAC,EAAE,CAAChB,GAAG,EAAED,GAAG,CAAC,CAAC;EAEd,IAAAI,gBAAS,EAAC,MAAM;IACZ,IAAIH,GAAG,EAAE;MACLA,GAAG,CAACiB,UAAU,CAAC;QACXC,SAAS,EAAEvB,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;AAEDN,MAAM,CAAC0B,WAAW,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEf7B,MAAM","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_POSITION = exports.DEFAULT_POLYGON_OPTIONS = void 0;
7
+ const DEFAULT_POLYGON_OPTIONS = exports.DEFAULT_POLYGON_OPTIONS = {
8
+ strokeColor: '#000000',
9
+ strokeOpacity: 0.8,
10
+ strokeWeight: 1,
11
+ fillColor: '#808080',
12
+ fillOpacity: 0.25,
13
+ clickable: false,
14
+ draggable: false,
15
+ editable: false,
16
+ visible: true,
17
+ radius: 30000,
18
+ zIndex: 1
19
+ };
20
+ const DEFAULT_POSITION = exports.DEFAULT_POSITION = {
21
+ lat: 52.067450969671796,
22
+ lng: 7.017417
23
+ };
24
+ //# sourceMappingURL=positionInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionInput.js","names":["DEFAULT_POLYGON_OPTIONS","exports","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":";;;;;;AAEO,MAAMA,uBAAuC,GAAAC,OAAA,CAAAD,uBAAA,GAAG;EACnDE,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;AAEM,MAAMC,gBAA0B,GAAAZ,OAAA,CAAAY,gBAAA,GAAG;EACtCC,GAAG,EAAE,kBAAkB;EACvBC,GAAG,EAAE;AACT,CAAC","ignoreList":[]}