react-spatial 1.5.3 → 1.5.5

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 (282) hide show
  1. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +262 -0
  2. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -0
  3. package/components/BaseLayerSwitcher/index.js +1 -0
  4. package/components/BaseLayerSwitcher/index.js.map +7 -0
  5. package/{src/components → components}/BasicMap/BasicMap.js +80 -170
  6. package/components/BasicMap/BasicMap.js.map +7 -0
  7. package/components/BasicMap/index.js +1 -0
  8. package/components/BasicMap/index.js.map +7 -0
  9. package/{src/components → components}/CanvasSaveButton/CanvasSaveButton.js +133 -278
  10. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -0
  11. package/components/CanvasSaveButton/index.js +1 -0
  12. package/components/CanvasSaveButton/index.js.map +7 -0
  13. package/{src/components → components}/Copyright/Copyright.js +21 -41
  14. package/components/Copyright/Copyright.js.map +7 -0
  15. package/components/Copyright/index.js +1 -0
  16. package/components/Copyright/index.js.map +7 -0
  17. package/components/FeatureExportButton/FeatureExportButton.js +80 -0
  18. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -0
  19. package/components/FeatureExportButton/index.js +1 -0
  20. package/components/FeatureExportButton/index.js.map +7 -0
  21. package/{src/components → components}/FitExtent/FitExtent.js +16 -30
  22. package/components/FitExtent/FitExtent.js.map +7 -0
  23. package/components/FitExtent/index.js +1 -0
  24. package/components/FitExtent/index.js.map +7 -0
  25. package/{src/components → components}/Geolocation/Geolocation.js +60 -110
  26. package/components/Geolocation/Geolocation.js.map +7 -0
  27. package/components/Geolocation/index.js +1 -0
  28. package/components/Geolocation/index.js.map +7 -0
  29. package/{src/components → components}/LayerTree/LayerTree.js +113 -213
  30. package/components/LayerTree/LayerTree.js.map +7 -0
  31. package/components/LayerTree/index.js +1 -0
  32. package/components/LayerTree/index.js.map +7 -0
  33. package/{src/components → components}/MousePosition/MousePosition.js +37 -70
  34. package/components/MousePosition/MousePosition.js.map +7 -0
  35. package/components/MousePosition/index.js +1 -0
  36. package/components/MousePosition/index.js.map +7 -0
  37. package/{src/components → components}/NorthArrow/NorthArrow.js +18 -34
  38. package/components/NorthArrow/NorthArrow.js.map +7 -0
  39. package/components/NorthArrow/index.js +1 -0
  40. package/components/NorthArrow/index.js.map +7 -0
  41. package/{src/components → components}/Overlay/Overlay.js +59 -85
  42. package/components/Overlay/Overlay.js.map +7 -0
  43. package/components/Overlay/index.js +1 -0
  44. package/components/Overlay/index.js.map +7 -0
  45. package/{src/components → components}/Permalink/Permalink.js +64 -147
  46. package/components/Permalink/Permalink.js.map +7 -0
  47. package/components/Permalink/index.js +1 -0
  48. package/components/Permalink/index.js.map +7 -0
  49. package/{src/components → components}/Popup/Popup.js +57 -116
  50. package/components/Popup/Popup.js.map +7 -0
  51. package/components/Popup/index.js +1 -0
  52. package/components/Popup/index.js.map +7 -0
  53. package/{src/components → components}/ResizeHandler/ResizeHandler.js +15 -49
  54. package/components/ResizeHandler/ResizeHandler.js.map +7 -0
  55. package/components/ResizeHandler/index.js +1 -0
  56. package/components/ResizeHandler/index.js.map +7 -0
  57. package/components/RouteSchedule/RouteSchedule.js +268 -0
  58. package/components/RouteSchedule/RouteSchedule.js.map +7 -0
  59. package/components/RouteSchedule/index.js +1 -0
  60. package/components/RouteSchedule/index.js.map +7 -0
  61. package/{src/components → components}/ScaleLine/ScaleLine.js +8 -23
  62. package/components/ScaleLine/ScaleLine.js.map +7 -0
  63. package/components/ScaleLine/index.js +1 -0
  64. package/components/ScaleLine/index.js.map +7 -0
  65. package/{src/components → components}/StopsFinder/StopsFinder.js +74 -103
  66. package/components/StopsFinder/StopsFinder.js.map +7 -0
  67. package/components/StopsFinder/StopsFinderOption.js +44 -0
  68. package/components/StopsFinder/StopsFinderOption.js.map +7 -0
  69. package/components/StopsFinder/index.js +1 -0
  70. package/components/StopsFinder/index.js.map +7 -0
  71. package/{src/components → components}/Zoom/Zoom.js +46 -77
  72. package/components/Zoom/Zoom.js.map +7 -0
  73. package/components/Zoom/index.js +1 -0
  74. package/components/Zoom/index.js.map +7 -0
  75. package/package.json +32 -31
  76. package/{src/propTypes.js → propTypes.js} +30 -16
  77. package/propTypes.js.map +7 -0
  78. package/{src/setupTests.js → setupTests.js} +1 -1
  79. package/setupTests.js.map +7 -0
  80. package/utils/GlobalsForOle.js +94 -0
  81. package/utils/GlobalsForOle.js.map +7 -0
  82. package/utils/KML.js +420 -0
  83. package/utils/KML.js.map +7 -0
  84. package/{src/utils → utils}/KMLFormat.js +29 -32
  85. package/utils/KMLFormat.js.map +7 -0
  86. package/{src/utils → utils}/Styles.js +14 -20
  87. package/utils/Styles.js.map +7 -0
  88. package/{src/utils → utils}/getPolygonPattern.js +6 -34
  89. package/utils/getPolygonPattern.js.map +7 -0
  90. package/{src/utils → utils}/timeUtils.js +5 -22
  91. package/utils/timeUtils.js.map +7 -0
  92. package/.github/workflows/conventional-pr-title.yml +0 -21
  93. package/.github/workflows/main.yml +0 -28
  94. package/.husky/commit-msg +0 -4
  95. package/.husky/post-checkout +0 -4
  96. package/.husky/post-merge +0 -4
  97. package/.husky/post-rebase +0 -4
  98. package/.husky/pre-commit +0 -4
  99. package/.nvmrc +0 -1
  100. package/.whitesource +0 -8
  101. package/CHANGELOG.md +0 -65
  102. package/DEVELOP.md +0 -113
  103. package/__mocks__/mapbox-gl.js +0 -11
  104. package/__mocks__/resize-observer-polyfill.js +0 -9
  105. package/babel.config.js +0 -3
  106. package/commitlint.config.js +0 -1
  107. package/data/topic1.js +0 -119
  108. package/data/topic2.js +0 -28
  109. package/doc/README.md +0 -21
  110. package/doc/doc-config.json +0 -4
  111. package/pull_request_template.md +0 -16
  112. package/renovate.json +0 -4
  113. package/scripts/read-pkg-json.js +0 -17
  114. package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.js +0 -322
  115. package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -69
  116. package/src/components/BaseLayerSwitcher/README.md +0 -61
  117. package/src/components/BaseLayerSwitcher/__snapshots__/BaseLayerSwitcher.test.js.snap +0 -88
  118. package/src/components/BaseLayerSwitcher/index.js +0 -1
  119. package/src/components/BasicMap/BasicMap.test.js +0 -281
  120. package/src/components/BasicMap/README.md +0 -18
  121. package/src/components/BasicMap/index.js +0 -1
  122. package/src/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -148
  123. package/src/components/CanvasSaveButton/README.md +0 -76
  124. package/src/components/CanvasSaveButton/__snapshots__/CanvasSaveButton.test.js.snap +0 -76
  125. package/src/components/CanvasSaveButton/index.js +0 -1
  126. package/src/components/Copyright/Copyright.test.js +0 -134
  127. package/src/components/Copyright/README.md +0 -36
  128. package/src/components/Copyright/index.js +0 -1
  129. package/src/components/FeatureExportButton/FeatureExportButton.js +0 -118
  130. package/src/components/FeatureExportButton/FeatureExportButton.test.js +0 -417
  131. package/src/components/FeatureExportButton/README.md +0 -76
  132. package/src/components/FeatureExportButton/__snapshots__/FeatureExportButton.test.js.snap +0 -67
  133. package/src/components/FeatureExportButton/index.js +0 -1
  134. package/src/components/FitExtent/FitExtent.test.js +0 -48
  135. package/src/components/FitExtent/README.md +0 -34
  136. package/src/components/FitExtent/__snapshots__/FitExtent.test.js.snap +0 -13
  137. package/src/components/FitExtent/index.js +0 -1
  138. package/src/components/Geolocation/Geolocation.test.js +0 -267
  139. package/src/components/Geolocation/README.md +0 -25
  140. package/src/components/Geolocation/__snapshots__/Geolocation.test.js.snap +0 -92
  141. package/src/components/Geolocation/index.js +0 -1
  142. package/src/components/LayerTree/LayerTree.test.js +0 -337
  143. package/src/components/LayerTree/README.md +0 -92
  144. package/src/components/LayerTree/__snapshots__/LayerTree.test.js.snap +0 -1746
  145. package/src/components/LayerTree/index.js +0 -1
  146. package/src/components/MousePosition/MousePosition.test.js +0 -132
  147. package/src/components/MousePosition/README.md +0 -50
  148. package/src/components/MousePosition/__snapshots__/MousePosition.test.js.snap +0 -76
  149. package/src/components/MousePosition/index.js +0 -1
  150. package/src/components/NorthArrow/NorthArrow.test.js +0 -104
  151. package/src/components/NorthArrow/README.md +0 -59
  152. package/src/components/NorthArrow/__snapshots__/NorthArrow.test.js.snap +0 -117
  153. package/src/components/NorthArrow/index.js +0 -1
  154. package/src/components/Overlay/Overlay.test.js +0 -149
  155. package/src/components/Overlay/README.md +0 -59
  156. package/src/components/Overlay/__snapshots__/Overlay.test.js.snap +0 -9
  157. package/src/components/Overlay/index.js +0 -1
  158. package/src/components/Permalink/Permalink.test.js +0 -285
  159. package/src/components/Permalink/README.md +0 -105
  160. package/src/components/Permalink/index.js +0 -1
  161. package/src/components/Popup/Popup.test.js +0 -307
  162. package/src/components/Popup/README.md +0 -93
  163. package/src/components/Popup/__snapshots__/Popup.test.js.snap +0 -180
  164. package/src/components/Popup/index.js +0 -1
  165. package/src/components/README.md +0 -41
  166. package/src/components/ResizeHandler/ResizeHandler.test.js +0 -344
  167. package/src/components/ResizeHandler/index.js +0 -1
  168. package/src/components/RouteSchedule/README.md +0 -118
  169. package/src/components/RouteSchedule/RouteSchedule.js +0 -370
  170. package/src/components/RouteSchedule/RouteSchedule.test.js +0 -113
  171. package/src/components/RouteSchedule/__snapshots__/RouteSchedule.test.js.snap +0 -248
  172. package/src/components/RouteSchedule/index.js +0 -1
  173. package/src/components/ScaleLine/README.md +0 -29
  174. package/src/components/ScaleLine/ScaleLine.test.js +0 -30
  175. package/src/components/ScaleLine/__snapshots__/ScaleLine.test.js.snap +0 -7
  176. package/src/components/ScaleLine/index.js +0 -1
  177. package/src/components/StopsFinder/README.md +0 -50
  178. package/src/components/StopsFinder/StopsFinder.test.js +0 -17
  179. package/src/components/StopsFinder/StopsFinderOption.js +0 -61
  180. package/src/components/StopsFinder/__snapshots__/StopsFinder.test.js.snap +0 -133
  181. package/src/components/StopsFinder/index.js +0 -1
  182. package/src/components/Zoom/README.md +0 -25
  183. package/src/components/Zoom/Zoom.test.js +0 -141
  184. package/src/components/Zoom/__snapshots__/Zoom.test.js.snap +0 -201
  185. package/src/components/Zoom/index.js +0 -1
  186. package/src/styleguidist/ComponentsList.js +0 -52
  187. package/src/styleguidist/StyleGuide.js +0 -277
  188. package/src/styleguidist/styleguidist.css +0 -38
  189. package/src/utils/GlobalsForOle.js +0 -99
  190. package/src/utils/KML.js +0 -594
  191. package/src/utils/KML.test.js +0 -337
  192. package/src/utils/KMLFormat.test.js +0 -50
  193. package/src/utils/__snapshots__/KML.test.js.snap.KML-readFeatures()-and-writeFeatures()-should-read-and-write-lineDash-and-fillPattern-style-for-polygon.canvas-image.png +0 -0
  194. package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-2-(cross)-color-and-(light-blue)-opacity.canvas-image.png +0 -0
  195. package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-3-(diagonal-line-from-bottom-left-tot-top-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
  196. package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-4-(diagonal-line-from-top-left-to-bottom-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
  197. package/src/utils/getPolygonPattern.test.js +0 -61
  198. package/src/utils/timeUtils.test.js +0 -30
  199. package/styleguide.config.js +0 -251
  200. /package/{src/components → components}/BaseLayerSwitcher/BaseLayerSwitcher.md.scss +0 -0
  201. /package/{src/components → components}/BaseLayerSwitcher/BaseLayerSwitcher.scss +0 -0
  202. /package/{src/components → components}/BasicMap/BasicMap.md.scss +0 -0
  203. /package/{src/components → components}/CanvasSaveButton/CanvasSaveButton.md.scss +0 -0
  204. /package/{src/components → components}/Copyright/Copyright.md.scss +0 -0
  205. /package/{src/components → components}/FeatureExportButton/FeatureExportButton.md.scss +0 -0
  206. /package/{src/components → components}/FitExtent/FitExtent.md.scss +0 -0
  207. /package/{src/components → components}/Geolocation/Geolocation.md.scss +0 -0
  208. /package/{src/components → components}/Geolocation/Geolocation.scss +0 -0
  209. /package/{src/components → components}/LayerTree/LayerTree.md.scss +0 -0
  210. /package/{src/components → components}/LayerTree/LayerTree.scss +0 -0
  211. /package/{src/components → components}/MousePosition/MousePosition.md.scss +0 -0
  212. /package/{src/components → components}/NorthArrow/NorthArrow.scss +0 -0
  213. /package/{src/components → components}/Overlay/Overlay.md.scss +0 -0
  214. /package/{src/components → components}/Overlay/Overlay.scss +0 -0
  215. /package/{src/components → components}/Permalink/Permalink.md.scss +0 -0
  216. /package/{src/components → components}/Popup/Popup.md.scss +0 -0
  217. /package/{src/components → components}/Popup/Popup.scss +0 -0
  218. /package/{src/components → components}/RouteSchedule/RouteSchedule.md.scss +0 -0
  219. /package/{src/components → components}/RouteSchedule/RouteSchedule.scss +0 -0
  220. /package/{src/components → components}/ScaleLine/ScaleLine.scss +0 -0
  221. /package/{src/components → components}/Zoom/Zoom.md.scss +0 -0
  222. /package/{src/components → components}/Zoom/Zoom.scss +0 -0
  223. /package/{src/images → images}/RouteSchedule/firstStation.png +0 -0
  224. /package/{src/images → images}/RouteSchedule/lastStation.png +0 -0
  225. /package/{src/images → images}/RouteSchedule/line.png +0 -0
  226. /package/{src/images → images}/RouteSchedule/station.png +0 -0
  227. /package/{src/images → images}/baselayer/baselayer.basebright.png +0 -0
  228. /package/{src/images → images}/baselayer/baselayer.osm.png +0 -0
  229. /package/{src/images → images}/baselayer/baselayer.travic.png +0 -0
  230. /package/{src/images → images}/baselayer/open.topo.map.png +0 -0
  231. /package/{src/images → images}/baselayer/osm.baselayer.hot.png +0 -0
  232. /package/{src/images → images}/baselayer/osm.baselayer.png +0 -0
  233. /package/{src/images → images}/favicon.png +0 -0
  234. /package/{src/images → images}/geops_logo.png +0 -0
  235. /package/{src/images → images}/geops_logo.svg +0 -0
  236. /package/{src/images → images}/geops_qr.png +0 -0
  237. /package/{src/images → images}/mots/bus_poi-blue-01.svg +0 -0
  238. /package/{src/images → images}/mots/bus_poi-grey-01.svg +0 -0
  239. /package/{src/images → images}/mots/bus_round-blue-01.svg +0 -0
  240. /package/{src/images → images}/mots/bus_round-grey-01.svg +0 -0
  241. /package/{src/images → images}/mots/bus_square-blue-01.svg +0 -0
  242. /package/{src/images → images}/mots/bus_square-grey-01.svg +0 -0
  243. /package/{src/images → images}/mots/cable_car_poi-blue-01.svg +0 -0
  244. /package/{src/images → images}/mots/cable_car_poi-grey-01.svg +0 -0
  245. /package/{src/images → images}/mots/cable_car_round-blue-01.svg +0 -0
  246. /package/{src/images → images}/mots/cable_car_round-grey-01.svg +0 -0
  247. /package/{src/images → images}/mots/cable_car_square-blue-01.svg +0 -0
  248. /package/{src/images → images}/mots/cable_car_square-grey-01.svg +0 -0
  249. /package/{src/images → images}/mots/ferry_poi-blue-01.svg +0 -0
  250. /package/{src/images → images}/mots/ferry_poi-grey-01.svg +0 -0
  251. /package/{src/images → images}/mots/ferry_round-blue-01.svg +0 -0
  252. /package/{src/images → images}/mots/ferry_round-grey-01.svg +0 -0
  253. /package/{src/images → images}/mots/ferry_square-blue-01.svg +0 -0
  254. /package/{src/images → images}/mots/ferry_square-grey-01.svg +0 -0
  255. /package/{src/images → images}/mots/funicular_round-blue-01.svg +0 -0
  256. /package/{src/images → images}/mots/funicular_round-grey-01.svg +0 -0
  257. /package/{src/images → images}/mots/funicular_square-blue-01.svg +0 -0
  258. /package/{src/images → images}/mots/gondola_round-blue-01.svg +0 -0
  259. /package/{src/images → images}/mots/rail_poi-blue-01.svg +0 -0
  260. /package/{src/images → images}/mots/rail_poi-grey-01.svg +0 -0
  261. /package/{src/images → images}/mots/rail_round-blue-01.svg +0 -0
  262. /package/{src/images → images}/mots/rail_round-grey-01.svg +0 -0
  263. /package/{src/images → images}/mots/rail_square-blue-01.svg +0 -0
  264. /package/{src/images → images}/mots/rail_square-grey-01.svg +0 -0
  265. /package/{src/images → images}/mots/subway_round blue-01.svg +0 -0
  266. /package/{src/images → images}/mots/subway_round-blue-01.svg +0 -0
  267. /package/{src/images → images}/mots/tram_poi-blue-01.svg +0 -0
  268. /package/{src/images → images}/mots/tram_poi-grey-01.svg +0 -0
  269. /package/{src/images → images}/mots/tram_round-blue-01.svg +0 -0
  270. /package/{src/images → images}/mots/tram_round-grey-01.svg +0 -0
  271. /package/{src/images → images}/mots/tram_square-blue-01.svg +0 -0
  272. /package/{src/images → images}/mots/tram_square-grey-01.svg +0 -0
  273. /package/{src/images → images}/northArrow.svg +0 -0
  274. /package/{src/images → images}/northArrow.url.svg +0 -0
  275. /package/{src/images → images}/northArrowCircle.svg +0 -0
  276. /package/{src/images → images}/northArrowCircle.url.svg +0 -0
  277. /package/{src/themes → themes}/README.md +0 -0
  278. /package/{src/themes → themes}/default/components.scss +0 -0
  279. /package/{src/themes → themes}/default/examples.scss +0 -0
  280. /package/{src/themes → themes}/default/index.scss +0 -0
  281. /package/{src/themes → themes}/default/mixins.scss +0 -0
  282. /package/{src/themes → themes}/default/variables.scss +0 -0
@@ -1,22 +1,20 @@
1
- import React, { useMemo, useState, useEffect } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Autocomplete } from '@material-ui/lab';
4
- import { FaSearch } from 'react-icons/fa';
5
- import TextField from '@material-ui/core/TextField';
6
- import CircularProgress from '@material-ui/core/CircularProgress';
7
- import { StopFinderControl } from 'mobility-toolbox-js/ol';
8
- import { Map } from 'ol';
9
- import { makeStyles } from '@material-ui/core';
10
- import StopsFinderOptions from './StopsFinderOption';
11
-
1
+ import React, { useMemo, useState, useEffect } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { Autocomplete } from "@material-ui/lab";
4
+ import { FaSearch } from "react-icons/fa";
5
+ import TextField from "@material-ui/core/TextField";
6
+ import CircularProgress from "@material-ui/core/CircularProgress";
7
+ import { StopFinderControl } from "mobility-toolbox-js/ol";
8
+ import { Map } from "ol";
9
+ import { makeStyles } from "@material-ui/core";
10
+ import StopsFinderOptions from "./StopsFinderOption";
12
11
  const useStyles = makeStyles(() => {
13
12
  return {
14
13
  popupIndicatorOpen: {
15
- transform: 'rotate(0)',
16
- },
14
+ transform: "rotate(0)"
15
+ }
17
16
  };
18
17
  });
19
-
20
18
  function StopsFinder({
21
19
  agencies,
22
20
  apiKey,
@@ -30,32 +28,31 @@ function StopsFinder({
30
28
  radius,
31
29
  refLocation,
32
30
  renderAutocomplete,
33
- url,
31
+ url
34
32
  }) {
35
33
  const classes = useStyles();
36
- const [inputValue, setInputValue] = useState('');
34
+ const [inputValue, setInputValue] = useState("");
37
35
  const [suggestions, setSuggestions] = useState([]);
38
36
  const [isLoading, setLoading] = useState(false);
39
37
  const [isOpen, setOpen] = useState(false);
40
-
41
38
  const control = useMemo(() => {
42
39
  return new StopFinderControl({
43
40
  url,
44
41
  apiKey,
45
- target: document.createElement('div'),
46
- element: document.createElement('div'),
42
+ target: document.createElement("div"),
43
+ element: document.createElement("div"),
47
44
  render(newSuggestions = { features: [] }) {
48
45
  setSuggestions(newSuggestions.features);
49
46
  setLoading(false);
50
- },
47
+ }
51
48
  });
52
49
  }, [apiKey, url]);
53
-
54
50
  useEffect(() => {
55
51
  if (!inputValue) {
56
52
  setSuggestions([]);
57
53
  setLoading(false);
58
- return () => {};
54
+ return () => {
55
+ };
59
56
  }
60
57
  const abortController = new AbortController();
61
58
  setLoading(true);
@@ -66,7 +63,7 @@ function StopsFinder({
66
63
  limit,
67
64
  mots: mots && mots.toString(),
68
65
  radius,
69
- ref_location: refLocation && refLocation.toString(),
66
+ ref_location: refLocation && refLocation.toString()
70
67
  };
71
68
  control.search(inputValue, abortController);
72
69
  return () => {
@@ -81,26 +78,21 @@ function StopsFinder({
81
78
  limit,
82
79
  mots,
83
80
  radius,
84
- refLocation,
81
+ refLocation
85
82
  ]);
86
-
87
- // Ensure the control is not associated to the wrong map
88
83
  useEffect(() => {
89
84
  if (!control) {
90
- return () => {};
85
+ return () => {
86
+ };
91
87
  }
92
-
93
88
  control.map = map;
94
-
95
89
  return () => {
96
90
  control.map = null;
97
91
  };
98
92
  }, [map, control]);
99
-
100
93
  if (!control) {
101
94
  return null;
102
95
  }
103
-
104
96
  if (renderAutocomplete) {
105
97
  return renderAutocomplete(
106
98
  suggestions,
@@ -109,74 +101,67 @@ function StopsFinder({
109
101
  isOpen,
110
102
  setOpen,
111
103
  isLoading,
112
- setLoading,
104
+ setLoading
113
105
  );
114
106
  }
115
107
  const textFieldProps = {
116
- ...((autocompleteProps || {}).textFieldProps || {}),
108
+ ...(autocompleteProps || {}).textFieldProps || {}
117
109
  };
118
110
  const autocProps = { ...autocompleteProps };
119
111
  delete autocProps.textFieldProps;
120
-
121
- return (
122
- <Autocomplete
123
- fullWidth
124
- autoComplete
125
- autoHighlight
126
- selectOnFocus
127
- getOptionLabel={(option) => {
112
+ return /* @__PURE__ */ React.createElement(
113
+ Autocomplete,
114
+ {
115
+ fullWidth: true,
116
+ autoComplete: true,
117
+ autoHighlight: true,
118
+ selectOnFocus: true,
119
+ getOptionLabel: (option) => {
128
120
  return option.properties.name;
129
- }}
130
- onChange={(evt, value, reason) => {
131
- if (onSelect && reason === 'select-option') {
121
+ },
122
+ onChange: (evt, value, reason) => {
123
+ if (onSelect && reason === "select-option") {
132
124
  onSelect(value, evt);
133
125
  }
134
- }}
135
- popupIcon={<FaSearch focusable={false} size={15} />}
136
- renderInput={(params) => {
137
- return (
138
- <TextField
139
- label="Search stops"
140
- // eslint-disable-next-line react/jsx-props-no-spreading
141
- {...{
126
+ },
127
+ popupIcon: /* @__PURE__ */ React.createElement(FaSearch, { focusable: false, size: 15 }),
128
+ renderInput: (params) => {
129
+ return /* @__PURE__ */ React.createElement(
130
+ TextField,
131
+ {
132
+ label: "Search stops",
133
+ ...{
142
134
  ...params,
143
- ...textFieldProps,
144
- }}
145
- InputProps={{
135
+ ...textFieldProps
136
+ },
137
+ InputProps: {
146
138
  ...params.InputProps,
147
- endAdornment: (
148
- <>
149
- {isLoading && <CircularProgress size={20} />}
150
- {params.InputProps.endAdornment}
151
- </>
152
- ),
153
- }}
154
- />
139
+ endAdornment: /* @__PURE__ */ React.createElement(React.Fragment, null, isLoading && /* @__PURE__ */ React.createElement(CircularProgress, { size: 20 }), params.InputProps.endAdornment)
140
+ }
141
+ }
155
142
  );
156
- }}
157
- renderOption={(option) => {
158
- return <StopsFinderOptions option={option} />;
159
- }}
160
- // eslint-disable-next-line react/jsx-props-no-spreading
161
- {...autocProps}
162
- classes={{ ...classes, ...autocompleteProps.classes }}
163
- inputValue={inputValue}
164
- open={isOpen}
165
- options={suggestions}
166
- loading={isLoading}
167
- onOpen={() => {
143
+ },
144
+ renderOption: (option) => {
145
+ return /* @__PURE__ */ React.createElement(StopsFinderOptions, { option });
146
+ },
147
+ ...autocProps,
148
+ classes: { ...classes, ...autocompleteProps.classes },
149
+ inputValue,
150
+ open: isOpen,
151
+ options: suggestions,
152
+ loading: isLoading,
153
+ onOpen: () => {
168
154
  setOpen(true);
169
- }}
170
- onClose={() => {
155
+ },
156
+ onClose: () => {
171
157
  setOpen(false);
172
- }}
173
- onInputChange={(evt, val) => {
158
+ },
159
+ onInputChange: (evt, val) => {
174
160
  setInputValue(val);
175
- }}
176
- />
161
+ }
162
+ }
177
163
  );
178
164
  }
179
-
180
165
  StopsFinder.propTypes = {
181
166
  /**
182
167
  * Array or a comma separated list of agencies which should be available.
@@ -185,87 +170,74 @@ StopsFinder.propTypes = {
185
170
  */
186
171
  agencies: PropTypes.oneOfType([
187
172
  PropTypes.string,
188
- PropTypes.arrayOf(PropTypes.string),
173
+ PropTypes.arrayOf(PropTypes.string)
189
174
  ]),
190
-
191
175
  /**
192
176
  * geOps api key to access the StopsFinder service.
193
177
  */
194
178
  apiKey: PropTypes.string,
195
-
196
179
  /**
197
180
  * Properties apply to the default [MUI Autocomplete component](https://material-ui.com/api/autocomplete/).
198
181
  * We add a custom properties textFieldProps for the default [MUI TextField component](https://material-ui.com/api/text-field/) used by the Autocomplete.
199
182
  */
200
183
  autocompleteProps: PropTypes.object,
201
-
202
184
  /**
203
185
  * minX,minY,maxX,maxY coordinates in WGS84 wherein the station should lie.
204
186
  */
205
187
  bbox: PropTypes.oneOfType([
206
188
  PropTypes.string,
207
- PropTypes.arrayOf(PropTypes.number),
189
+ PropTypes.arrayOf(PropTypes.number)
208
190
  ]),
209
-
210
191
  /**
211
192
  * Array or a comma separated list of fields which should be used for look up.
212
193
  * Available values : id, name, coords
213
194
  */
214
195
  field: PropTypes.oneOfType([
215
196
  PropTypes.string,
216
- PropTypes.arrayOf(PropTypes.string),
197
+ PropTypes.arrayOf(PropTypes.string)
217
198
  ]),
218
-
219
199
  /**
220
200
  * Control how many matches will be returned.
221
201
  */
222
202
  limit: PropTypes.number,
223
-
224
203
  /**
225
204
  * A map.
226
205
  */
227
206
  map: PropTypes.instanceOf(Map).isRequired,
228
-
229
207
  /**
230
208
  * Array or a comma separated list of mode of transpaorts which should be available.
231
209
  * Available values : bus, ferry, gondola, tram, rail, funicular, cable_car, subway
232
210
  */
233
211
  mots: PropTypes.oneOfType([
234
212
  PropTypes.string,
235
- PropTypes.arrayOf(PropTypes.string),
213
+ PropTypes.arrayOf(PropTypes.string)
236
214
  ]),
237
-
238
215
  /**
239
216
  * Function called when a suggestion is selected.
240
217
  */
241
218
  onSelect: PropTypes.func,
242
-
243
219
  /**
244
220
  * Radius around refLocation in meters that is most relevant.
245
221
  * Used as granularity for location rank.
246
222
  */
247
223
  radius: PropTypes.number,
248
-
249
224
  /**
250
225
  * Coordinates in WGS84 (in lat,lon order) used to rank stops close to this position higher.
251
226
  * Available values : id, name, coords
252
227
  */
253
228
  refLocation: PropTypes.oneOfType([
254
229
  PropTypes.string,
255
- PropTypes.arrayOf(PropTypes.number),
230
+ PropTypes.arrayOf(PropTypes.number)
256
231
  ]),
257
-
258
232
  /**
259
233
  * Function to render a different autocomplete input than the default one.
260
234
  */
261
235
  renderAutocomplete: PropTypes.func,
262
-
263
236
  /**
264
237
  * Url of the geOps StopsFinder service.
265
238
  */
266
- url: PropTypes.string,
239
+ url: PropTypes.string
267
240
  };
268
-
269
241
  StopsFinder.defaultProps = {
270
242
  agencies: null,
271
243
  apiKey: null,
@@ -278,7 +250,6 @@ StopsFinder.defaultProps = {
278
250
  radius: null,
279
251
  refLocation: null,
280
252
  url: null,
281
- renderAutocomplete: null,
253
+ renderAutocomplete: null
282
254
  };
283
-
284
255
  export default StopsFinder;
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StopsFinder/StopsFinder.js"],
4
+ "sourcesContent": ["import React, { useMemo, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Autocomplete } from '@material-ui/lab';\nimport { FaSearch } from 'react-icons/fa';\nimport TextField from '@material-ui/core/TextField';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { StopFinderControl } from 'mobility-toolbox-js/ol';\nimport { Map } from 'ol';\nimport { makeStyles } from '@material-ui/core';\nimport StopsFinderOptions from './StopsFinderOption';\n\nconst useStyles = makeStyles(() => {\n return {\n popupIndicatorOpen: {\n transform: 'rotate(0)',\n },\n };\n});\n\nfunction StopsFinder({\n agencies,\n apiKey,\n autocompleteProps,\n bbox,\n field,\n limit,\n map,\n mots,\n onSelect,\n radius,\n refLocation,\n renderAutocomplete,\n url,\n}) {\n const classes = useStyles();\n const [inputValue, setInputValue] = useState('');\n const [suggestions, setSuggestions] = useState([]);\n const [isLoading, setLoading] = useState(false);\n const [isOpen, setOpen] = useState(false);\n\n const control = useMemo(() => {\n return new StopFinderControl({\n url,\n apiKey,\n target: document.createElement('div'),\n element: document.createElement('div'),\n render(newSuggestions = { features: [] }) {\n setSuggestions(newSuggestions.features);\n setLoading(false);\n },\n });\n }, [apiKey, url]);\n\n useEffect(() => {\n if (!inputValue) {\n setSuggestions([]);\n setLoading(false);\n return () => {};\n }\n const abortController = new AbortController();\n setLoading(true);\n control.apiParams = {\n prefAgencies: agencies && agencies.toString(),\n bbox: bbox && bbox.toString(),\n field: field && field.toString(),\n limit,\n mots: mots && mots.toString(),\n radius,\n ref_location: refLocation && refLocation.toString(),\n };\n control.search(inputValue, abortController);\n return () => {\n abortController.abort();\n };\n }, [\n agencies,\n bbox,\n control,\n field,\n inputValue,\n limit,\n mots,\n radius,\n refLocation,\n ]);\n\n // Ensure the control is not associated to the wrong map\n useEffect(() => {\n if (!control) {\n return () => {};\n }\n\n control.map = map;\n\n return () => {\n control.map = null;\n };\n }, [map, control]);\n\n if (!control) {\n return null;\n }\n\n if (renderAutocomplete) {\n return renderAutocomplete(\n suggestions,\n inputValue,\n setInputValue,\n isOpen,\n setOpen,\n isLoading,\n setLoading,\n );\n }\n const textFieldProps = {\n ...((autocompleteProps || {}).textFieldProps || {}),\n };\n const autocProps = { ...autocompleteProps };\n delete autocProps.textFieldProps;\n\n return (\n <Autocomplete\n fullWidth\n autoComplete\n autoHighlight\n selectOnFocus\n getOptionLabel={(option) => {\n return option.properties.name;\n }}\n onChange={(evt, value, reason) => {\n if (onSelect && reason === 'select-option') {\n onSelect(value, evt);\n }\n }}\n popupIcon={<FaSearch focusable={false} size={15} />}\n renderInput={(params) => {\n return (\n <TextField\n label=\"Search stops\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...{\n ...params,\n ...textFieldProps,\n }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {isLoading && <CircularProgress size={20} />}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n />\n );\n }}\n renderOption={(option) => {\n return <StopsFinderOptions option={option} />;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...autocProps}\n classes={{ ...classes, ...autocompleteProps.classes }}\n inputValue={inputValue}\n open={isOpen}\n options={suggestions}\n loading={isLoading}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n onInputChange={(evt, val) => {\n setInputValue(val);\n }}\n />\n );\n}\n\nStopsFinder.propTypes = {\n /**\n * Array or a comma separated list of agencies which should be available.\n * Order of these agencies chooses which agency will be preferred.\n * Available values : sbb, db\n */\n agencies: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * geOps api key to access the StopsFinder service.\n */\n apiKey: PropTypes.string,\n\n /**\n * Properties apply to the default [MUI Autocomplete component](https://material-ui.com/api/autocomplete/).\n * We add a custom properties textFieldProps for the default [MUI TextField component](https://material-ui.com/api/text-field/) used by the Autocomplete.\n */\n autocompleteProps: PropTypes.object,\n\n /**\n * minX,minY,maxX,maxY coordinates in WGS84 wherein the station should lie.\n */\n bbox: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n\n /**\n * Array or a comma separated list of fields which should be used for look up.\n * Available values : id, name, coords\n */\n field: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * Control how many matches will be returned.\n */\n limit: PropTypes.number,\n\n /**\n * A map.\n */\n map: PropTypes.instanceOf(Map).isRequired,\n\n /**\n * Array or a comma separated list of mode of transpaorts which should be available.\n * Available values : bus, ferry, gondola, tram, rail, funicular, cable_car, subway\n */\n mots: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * Function called when a suggestion is selected.\n */\n onSelect: PropTypes.func,\n\n /**\n * Radius around refLocation in meters that is most relevant.\n * Used as granularity for location rank.\n */\n radius: PropTypes.number,\n\n /**\n * Coordinates in WGS84 (in lat,lon order) used to rank stops close to this position higher.\n * Available values : id, name, coords\n */\n refLocation: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n\n /**\n * Function to render a different autocomplete input than the default one.\n */\n renderAutocomplete: PropTypes.func,\n\n /**\n * Url of the geOps StopsFinder service.\n */\n url: PropTypes.string,\n};\n\nStopsFinder.defaultProps = {\n agencies: null,\n apiKey: null,\n autocompleteProps: {},\n bbox: null,\n field: null,\n limit: null,\n mots: null,\n onSelect: null,\n radius: null,\n refLocation: null,\n url: null,\n renderAutocomplete: null,\n};\n\nexport default StopsFinder;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ import React, { lazy, Suspense } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { makeStyles } from "@material-ui/core";
4
+ const ext = "_round-blue-01.svg";
5
+ const iconForMot = {};
6
+ [
7
+ "bus",
8
+ "ferry",
9
+ "gondola",
10
+ "tram",
11
+ "rail",
12
+ "funicular",
13
+ "cable_car",
14
+ "subway"
15
+ ].forEach((mot) => {
16
+ iconForMot[mot] = lazy(() => {
17
+ return import(`../../images/mots/${mot}${ext}`);
18
+ });
19
+ });
20
+ const useStyles = makeStyles((theme) => {
21
+ return {
22
+ flex: {
23
+ display: "flex",
24
+ alignItems: "center"
25
+ },
26
+ icon: {
27
+ marginRight: theme.spacing(2)
28
+ }
29
+ };
30
+ });
31
+ function StopsFinderOption({ option }) {
32
+ const classes = useStyles();
33
+ return /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement("div", null) }, /* @__PURE__ */ React.createElement("div", { className: classes.flex }, Object.entries(option.properties.mot).map(([key, value]) => {
34
+ if (value) {
35
+ const MotIcon = iconForMot[key];
36
+ return /* @__PURE__ */ React.createElement("span", { className: classes.icon, key }, /* @__PURE__ */ React.createElement(MotIcon, null));
37
+ }
38
+ return /* @__PURE__ */ React.createElement(React.Fragment, null);
39
+ }), /* @__PURE__ */ React.createElement("span", null, option.properties.name)));
40
+ }
41
+ StopsFinderOption.propTypes = {
42
+ option: PropTypes.object.isRequired
43
+ };
44
+ export default React.memo(StopsFinderOption);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StopsFinder/StopsFinderOption.js"],
4
+ "sourcesContent": ["import React, { lazy, Suspense } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\n\nconst ext = '_round-blue-01.svg';\nconst iconForMot = {};\n[\n 'bus',\n 'ferry',\n 'gondola',\n 'tram',\n 'rail',\n 'funicular',\n 'cable_car',\n 'subway',\n].forEach((mot) => {\n iconForMot[mot] = lazy(() => {\n return import(`../../images/mots/${mot}${ext}`);\n });\n});\n\nconst useStyles = makeStyles((theme) => {\n return {\n flex: {\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n };\n});\n\nfunction StopsFinderOption({ option }) {\n const classes = useStyles();\n\n return (\n <Suspense fallback={<div />}>\n <div className={classes.flex}>\n {Object.entries(option.properties.mot).map(([key, value]) => {\n if (value) {\n const MotIcon = iconForMot[key];\n return (\n <span className={classes.icon} key={key}>\n <MotIcon />\n </span>\n );\n }\n return <></>;\n })}\n <span>{option.properties.name}</span>\n </div>\n </Suspense>\n );\n}\n\nStopsFinderOption.propTypes = {\n option: PropTypes.object.isRequired,\n};\n\nexport default React.memo(StopsFinderOption);\n"],
5
+ "mappings": "AAAA,OAAO,SAAS,MAAM,gBAAgB;AACtC,OAAO,eAAe;AACtB,SAAS,kBAAkB;AAE3B,MAAM,MAAM;AACZ,MAAM,aAAa,CAAC;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,QAAQ,CAAC,QAAQ;AACjB,aAAW,GAAG,IAAI,KAAK,MAAM;AAC3B,WAAO,OAAO,qBAAqB,GAAG,GAAG,GAAG;AAAA,EAC9C,CAAC;AACH,CAAC;AAED,MAAM,YAAY,WAAW,CAAC,UAAU;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,MACJ,aAAa,MAAM,QAAQ,CAAC;AAAA,IAC9B;AAAA,EACF;AACF,CAAC;AAED,SAAS,kBAAkB,EAAE,OAAO,GAAG;AACrC,QAAM,UAAU,UAAU;AAE1B,SACE,oCAAC,YAAS,UAAU,oCAAC,WAAI,KACvB,oCAAC,SAAI,WAAW,QAAQ,QACrB,OAAO,QAAQ,OAAO,WAAW,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAC3D,QAAI,OAAO;AACT,YAAM,UAAU,WAAW,GAAG;AAC9B,aACE,oCAAC,UAAK,WAAW,QAAQ,MAAM,OAC7B,oCAAC,aAAQ,CACX;AAAA,IAEJ;AACA,WAAO,wDAAE;AAAA,EACX,CAAC,GACD,oCAAC,cAAM,OAAO,WAAW,IAAK,CAChC,CACF;AAEJ;AAEA,kBAAkB,YAAY;AAAA,EAC5B,QAAQ,UAAU,OAAO;AAC3B;AAEA,eAAe,MAAM,KAAK,iBAAiB;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ export { default } from "./StopsFinder";
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StopsFinder/index.js"],
4
+ "sourcesContent": ["export { default } from './StopsFinder';\n"],
5
+ "mappings": "AAAA,SAAS,eAAe;",
6
+ "names": []
7
+ }
@@ -3,61 +3,53 @@ import React, {
3
3
  useRef,
4
4
  useCallback,
5
5
  useState,
6
- useMemo,
7
- } from 'react';
8
- import PropTypes from 'prop-types';
9
- import { FaPlus, FaMinus } from 'react-icons/fa';
10
- import { ZoomSlider } from 'ol/control';
11
- import OLMap from 'ol/Map';
12
- import { easeOut } from 'ol/easing';
13
- import { unByKey } from 'ol/Observable';
14
-
6
+ useMemo
7
+ } from "react";
8
+ import PropTypes from "prop-types";
9
+ import { FaPlus, FaMinus } from "react-icons/fa";
10
+ import { ZoomSlider } from "ol/control";
11
+ import OLMap from "ol/Map";
12
+ import { easeOut } from "ol/easing";
13
+ import { unByKey } from "ol/Observable";
15
14
  const propTypes = {
16
15
  /**
17
16
  * An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).
18
17
  */
19
18
  map: PropTypes.instanceOf(OLMap).isRequired,
20
-
21
19
  /**
22
20
  * The zoom delta applied on each click.
23
21
  */
24
22
  delta: PropTypes.number,
25
-
26
23
  /**
27
24
  * Titles HTML attribtues for button.
28
25
  */
29
26
  titles: PropTypes.shape({
30
27
  zoomIn: PropTypes.string,
31
- zoomOut: PropTypes.string,
28
+ zoomOut: PropTypes.string
32
29
  }),
33
-
34
30
  /**
35
31
  * Children content of the zoom in button.
36
32
  */
37
33
  zoomInChildren: PropTypes.node,
38
-
39
34
  /**
40
35
  * Children content of the zoom out button.
41
36
  */
42
37
  zoomOutChildren: PropTypes.node,
43
-
44
38
  /**
45
39
  * Display a slider to zoom.
46
40
  */
47
- zoomSlider: PropTypes.bool,
41
+ zoomSlider: PropTypes.bool
48
42
  };
49
-
50
43
  const defaultProps = {
51
44
  titles: {
52
- zoomIn: 'Zoom in',
53
- zoomOut: 'Zoom out',
45
+ zoomIn: "Zoom in",
46
+ zoomOut: "Zoom out"
54
47
  },
55
- zoomInChildren: <FaPlus focusable={false} />,
56
- zoomOutChildren: <FaMinus focusable={false} />,
48
+ zoomInChildren: /* @__PURE__ */ React.createElement(FaPlus, { focusable: false }),
49
+ zoomOutChildren: /* @__PURE__ */ React.createElement(FaMinus, { focusable: false }),
57
50
  zoomSlider: false,
58
- delta: 1,
51
+ delta: 1
59
52
  };
60
-
61
53
  const updateZoom = (map, delta) => {
62
54
  const view = map.getView();
63
55
  const currentZoom = view.getZoom();
@@ -69,14 +61,9 @@ const updateZoom = (map, delta) => {
69
61
  view.animate({
70
62
  zoom: constrainedZoom,
71
63
  duration: 250,
72
- easing: easeOut,
64
+ easing: easeOut
73
65
  });
74
66
  };
75
-
76
- /**
77
- * The Zoom component creates a zoom wrapper containing zoom-in and zoom-out buttons
78
- * and an optional [ol/ZoomSlider](https://openlayers.org/en/latest/apidoc/module-ol_control_ZoomSlider-ZoomSlider.html).
79
- */
80
67
  function Zoom({
81
68
  map,
82
69
  titles,
@@ -88,51 +75,36 @@ function Zoom({
88
75
  }) {
89
76
  const ref = useRef();
90
77
  const [currentZoom, setZoom] = useState();
91
-
92
78
  const zoomIn = useCallback(
93
79
  (evt) => {
94
80
  if (!evt.which || evt.which === 13) {
95
81
  updateZoom(map, delta);
96
82
  }
97
83
  },
98
- [delta, map],
84
+ [delta, map]
99
85
  );
100
-
101
86
  const zoomOut = useCallback(
102
87
  (evt) => {
103
88
  if (!evt.which || evt.which === 13) {
104
89
  updateZoom(map, -delta);
105
90
  }
106
91
  },
107
- [delta, map],
92
+ [delta, map]
108
93
  );
109
-
110
94
  const zoomInDisabled = useMemo(() => {
111
- return (
112
- currentZoom >=
113
- map.getView().getConstrainedZoom(map.getView().getMaxZoom())
114
- );
95
+ return currentZoom >= map.getView().getConstrainedZoom(map.getView().getMaxZoom());
115
96
  }, [currentZoom, map]);
116
-
117
97
  const zoomOutDisabled = useMemo(() => {
118
- return (
119
- currentZoom <=
120
- map.getView().getConstrainedZoom(map.getView().getMinZoom())
121
- );
98
+ return currentZoom <= map.getView().getConstrainedZoom(map.getView().getMinZoom());
122
99
  }, [currentZoom, map]);
123
-
124
100
  useEffect(() => {
125
- // Trigger zoom update to disable zooms on max and min
126
- const listenerKey = map.on('moveend', () => {
101
+ const listenerKey = map.on("moveend", () => {
127
102
  setZoom(map.getView().getZoom());
128
103
  });
129
-
130
104
  let control;
131
105
  if (zoomSlider && ref.current) {
132
106
  control = new ZoomSlider();
133
- // We don't want to navigate to the zoom slider using TAB navigation.
134
107
  control.element.firstElementChild.tabIndex = -1;
135
- // Set the zoom slider in the custom control wrapper.
136
108
  control.setTarget(ref.current);
137
109
  map.addControl(control);
138
110
  }
@@ -143,38 +115,35 @@ function Zoom({
143
115
  }
144
116
  };
145
117
  }, [map, zoomSlider]);
146
-
147
118
  return (
148
119
  // eslint-disable-next-line react/jsx-props-no-spreading
149
- <div className="rs-zooms-bar" {...other}>
150
- <button
151
- type="button"
152
- tabIndex={0}
153
- className="rs-zoom-in"
154
- title={titles.zoomIn}
155
- onClick={zoomIn}
156
- onKeyPress={zoomIn}
157
- disabled={zoomInDisabled}
158
- >
159
- {zoomInChildren}
160
- </button>
161
- {zoomSlider ? <div className="rs-zoomslider-wrapper" ref={ref} /> : null}
162
- <button
163
- type="button"
164
- tabIndex={0}
165
- className="rs-zoom-out"
166
- title={titles.zoomOut}
167
- onClick={zoomOut}
168
- onKeyPress={zoomOut}
169
- disabled={zoomOutDisabled}
170
- >
171
- {zoomOutChildren}
172
- </button>
173
- </div>
120
+ /* @__PURE__ */ React.createElement("div", { className: "rs-zooms-bar", ...other }, /* @__PURE__ */ React.createElement(
121
+ "button",
122
+ {
123
+ type: "button",
124
+ tabIndex: 0,
125
+ className: "rs-zoom-in",
126
+ title: titles.zoomIn,
127
+ onClick: zoomIn,
128
+ onKeyPress: zoomIn,
129
+ disabled: zoomInDisabled
130
+ },
131
+ zoomInChildren
132
+ ), zoomSlider ? /* @__PURE__ */ React.createElement("div", { className: "rs-zoomslider-wrapper", ref }) : null, /* @__PURE__ */ React.createElement(
133
+ "button",
134
+ {
135
+ type: "button",
136
+ tabIndex: 0,
137
+ className: "rs-zoom-out",
138
+ title: titles.zoomOut,
139
+ onClick: zoomOut,
140
+ onKeyPress: zoomOut,
141
+ disabled: zoomOutDisabled
142
+ },
143
+ zoomOutChildren
144
+ ))
174
145
  );
175
146
  }
176
-
177
147
  Zoom.propTypes = propTypes;
178
148
  Zoom.defaultProps = defaultProps;
179
-
180
149
  export default React.memo(Zoom);