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
@@ -0,0 +1,268 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import PropTypes from "prop-types";
3
+ import {
4
+ RealtimeLayer as TrackerLayer,
5
+ realtimeConfig
6
+ } from "mobility-toolbox-js/ol";
7
+ import { getHoursAndMinutes, getDelayString } from "../../utils/timeUtils";
8
+ import ReactTransitPropTypes from "../../propTypes";
9
+ import firstStation from "../../images/RouteSchedule/firstStation.png";
10
+ import station from "../../images/RouteSchedule/station.png";
11
+ import lastStation from "../../images/RouteSchedule/lastStation.png";
12
+ import line from "../../images/RouteSchedule/line.png";
13
+ const { getBgColor } = realtimeConfig;
14
+ const getDelayColor = (time) => {
15
+ const secs = Math.round(time / 1800 / 2 * 3600 / 1e3);
16
+ if (secs >= 3600) {
17
+ return "dark-red";
18
+ }
19
+ if (secs >= 500) {
20
+ return "middle-red";
21
+ }
22
+ if (secs >= 300) {
23
+ return "light-red";
24
+ }
25
+ if (secs >= 180) {
26
+ return "orange";
27
+ }
28
+ return "green";
29
+ };
30
+ const isNotStop = (stop) => {
31
+ return !stop.arrivalTime && !stop.departureTime;
32
+ };
33
+ const isPassed = (stop, time, stops, idx) => {
34
+ if (isNotStop(stop)) {
35
+ if (stops[idx - 1] && idx > 0) {
36
+ return isPassed(stops[idx - 1], time, stops, idx);
37
+ }
38
+ return true;
39
+ }
40
+ const timeToCompare = stop.aimedDepartureTime || stop.aimedArrivalTime || 0;
41
+ let delayToCompare = stop.departureDelay || stop.arrivalDelay || 0;
42
+ if (delayToCompare < 0) {
43
+ delayToCompare = 0;
44
+ }
45
+ return timeToCompare + delayToCompare <= time;
46
+ };
47
+ const defaultRenderStationImg = (stations, index, isStationPassed, isNotStation) => {
48
+ const { length } = stations;
49
+ let src = station.src || station;
50
+ if (index === 0) {
51
+ src = firstStation.src || firstStation;
52
+ } else if (index === length - 1) {
53
+ src = lastStation.src || lastStation;
54
+ } else if (isNotStation) {
55
+ src = line.src || line;
56
+ }
57
+ return /* @__PURE__ */ React.createElement("img", { src, alt: "routeScheduleLine", className: "rt-route-icon" });
58
+ };
59
+ const RouteStop = ({
60
+ lineInfos,
61
+ onStationClick,
62
+ trackerLayer,
63
+ renderStationImg,
64
+ stop,
65
+ idx
66
+ }) => {
67
+ const {
68
+ arrivalDelay,
69
+ departureDelay,
70
+ state,
71
+ stationName,
72
+ aimedArrivalTime,
73
+ aimedDepartureTime
74
+ } = stop;
75
+ const cancelled = state === "JOURNEY_CANCELLED" || state === "STOP_CANCELLED";
76
+ const { stations } = lineInfos;
77
+ const isFirstStation = idx === 0;
78
+ const isLastStation = idx === stations.length - 1;
79
+ const isNotStation = isNotStop(stop);
80
+ const [isStationPassed, setIsStationPassed] = useState(
81
+ isPassed(stop, trackerLayer.time, stations, idx)
82
+ );
83
+ useEffect(() => {
84
+ let timeout = null;
85
+ if (!isStationPassed && stop.state === "TIME_BASED") {
86
+ timeout = setInterval(() => {
87
+ setIsStationPassed(isPassed(stop, trackerLayer.time, stations, idx));
88
+ }, 2e4);
89
+ }
90
+ return () => {
91
+ clearInterval(timeout);
92
+ };
93
+ }, [stop, isStationPassed, trackerLayer, stations, idx]);
94
+ return /* @__PURE__ */ React.createElement(
95
+ "div",
96
+ {
97
+ role: "button",
98
+ className: [
99
+ "rt-route-station",
100
+ isStationPassed ? " rt-passed" : "",
101
+ isNotStation ? " rt-no-stop" : ""
102
+ ].join(""),
103
+ onClick: (e) => {
104
+ return onStationClick(stop, e);
105
+ },
106
+ tabIndex: 0,
107
+ onKeyPress: (e) => {
108
+ return e.which === 13 && onStationClick(stop, e);
109
+ }
110
+ },
111
+ /* @__PURE__ */ React.createElement("div", { className: "rt-route-delay" }, typeof arrivalDelay === "undefined" || isFirstStation || cancelled ? "" : /* @__PURE__ */ React.createElement(
112
+ "span",
113
+ {
114
+ className: `rt-route-delay-arrival${` ${getDelayColor(
115
+ arrivalDelay
116
+ )}`}`
117
+ },
118
+ `+${getDelayString(arrivalDelay)}`
119
+ ), typeof departureDelay === "undefined" || isLastStation || cancelled ? "" : /* @__PURE__ */ React.createElement(
120
+ "span",
121
+ {
122
+ className: `rt-route-delay-departure${` ${getDelayColor(
123
+ departureDelay
124
+ )}`}`
125
+ },
126
+ `+${getDelayString(departureDelay)}`
127
+ )),
128
+ /* @__PURE__ */ React.createElement("div", { className: "rt-route-times" }, /* @__PURE__ */ React.createElement(
129
+ "span",
130
+ {
131
+ className: `rt-route-time-arrival ${cancelled ? "rt-route-cancelled" : ""}`
132
+ },
133
+ getHoursAndMinutes(aimedArrivalTime)
134
+ ), /* @__PURE__ */ React.createElement(
135
+ "span",
136
+ {
137
+ className: `rt-route-time-departure ${cancelled ? "rt-route-cancelled" : ""}`
138
+ },
139
+ getHoursAndMinutes(aimedDepartureTime)
140
+ )),
141
+ renderStationImg(stations, idx, isStationPassed, isNotStation),
142
+ /* @__PURE__ */ React.createElement("div", { className: cancelled ? "rt-route-cancelled" : "" }, stationName)
143
+ );
144
+ };
145
+ const defaultRenderStation = (props) => {
146
+ const { stationId, arrivalTime, departureTime, stationName } = props.stop;
147
+ return /* @__PURE__ */ React.createElement(
148
+ RouteStop,
149
+ {
150
+ key: (stationId || stationName) + arrivalTime + departureTime,
151
+ ...props
152
+ }
153
+ );
154
+ };
155
+ const renderRouteIdentifier = ({ routeIdentifier, longName }) => {
156
+ if (routeIdentifier) {
157
+ const id = parseInt(routeIdentifier.split(".")[0], 10);
158
+ if (!longName.includes(id)) {
159
+ return ` (${id})`;
160
+ }
161
+ }
162
+ return null;
163
+ };
164
+ const defaultRenderHeader = ({ lineInfos, renderHeaderButtons }) => {
165
+ const {
166
+ type,
167
+ vehicleType,
168
+ shortName,
169
+ longName,
170
+ stroke,
171
+ destination,
172
+ routeIdentifier,
173
+ text_color: textColor
174
+ } = lineInfos;
175
+ return /* @__PURE__ */ React.createElement("div", { className: "rt-route-header" }, /* @__PURE__ */ React.createElement(
176
+ "span",
177
+ {
178
+ className: "rt-route-icon",
179
+ style: {
180
+ /* stylelint-disable-next-line value-keyword-case */
181
+ backgroundColor: stroke || getBgColor(type || vehicleType),
182
+ color: textColor || "black"
183
+ }
184
+ },
185
+ shortName
186
+ ), /* @__PURE__ */ React.createElement("div", { className: "rt-route-title" }, /* @__PURE__ */ React.createElement("span", { className: "rt-route-name" }, destination), /* @__PURE__ */ React.createElement("span", null, longName, renderRouteIdentifier(lineInfos))), /* @__PURE__ */ React.createElement("div", { className: "rt-route-buttons" }, renderHeaderButtons(routeIdentifier)));
187
+ };
188
+ const defaultRenderFooter = (props) => {
189
+ const { lineInfos, renderCopyright } = props;
190
+ if (!lineInfos.operator && !lineInfos.publisher) {
191
+ return null;
192
+ }
193
+ return /* @__PURE__ */ React.createElement("div", { className: "rt-route-footer" }, renderCopyright({ ...props }));
194
+ };
195
+ const defaultRenderLink = (text, url) => {
196
+ return /* @__PURE__ */ React.createElement("div", { className: "rt-route-copyright-link" }, url ? /* @__PURE__ */ React.createElement("a", { href: url, target: "_blank", rel: "noreferrer" }, text) : /* @__PURE__ */ React.createElement(React.Fragment, null, text));
197
+ };
198
+ const defaultRenderCopyright = ({ lineInfos }) => {
199
+ return /* @__PURE__ */ React.createElement("span", { className: "rt-route-copyright" }, lineInfos.operator && defaultRenderLink(lineInfos.operator, lineInfos.operatorUrl), lineInfos.operator && lineInfos.publisher && /* @__PURE__ */ React.createElement("span", null, "\xA0-\xA0"), lineInfos.publisher && defaultRenderLink(lineInfos.publisher, lineInfos.publisherUrl), lineInfos.license && /* @__PURE__ */ React.createElement("span", null, "\xA0("), lineInfos.license && defaultRenderLink(lineInfos.license, lineInfos.licenseUrl), lineInfos.license && ")");
200
+ };
201
+ const propTypes = {
202
+ /**
203
+ * CSS class of the route schedule wrapper.
204
+ */
205
+ className: PropTypes.string,
206
+ /**
207
+ * Trajectory stations informations.
208
+ */
209
+ lineInfos: ReactTransitPropTypes.lineInfos,
210
+ /**
211
+ * Trackerlayer.
212
+ */
213
+ trackerLayer: PropTypes.instanceOf(TrackerLayer).isRequired,
214
+ /**
215
+ * Render Header of the route scheduler.
216
+ */
217
+ renderHeader: PropTypes.func,
218
+ /**
219
+ * Render Footer of the route scheduler.
220
+ */
221
+ renderFooter: PropTypes.func,
222
+ /**
223
+ * Render Copyright of the route scheduler.
224
+ */
225
+ renderCopyright: PropTypes.func,
226
+ /**
227
+ * Render the status of the station image.
228
+ */
229
+ renderStationImg: PropTypes.func,
230
+ /**
231
+ * Render a station.
232
+ */
233
+ renderStation: PropTypes.func,
234
+ /**
235
+ * Function triggered on station's click event.
236
+ */
237
+ onStationClick: PropTypes.func,
238
+ /**
239
+ * Function to render header buttons.
240
+ */
241
+ renderHeaderButtons: PropTypes.func
242
+ };
243
+ const defaultProps = {
244
+ className: "rt-route-schedule",
245
+ lineInfos: null,
246
+ renderHeader: defaultRenderHeader,
247
+ renderStation: defaultRenderStation,
248
+ renderStationImg: defaultRenderStationImg,
249
+ renderCopyright: defaultRenderCopyright,
250
+ renderFooter: defaultRenderFooter,
251
+ renderHeaderButtons: () => {
252
+ return null;
253
+ },
254
+ onStationClick: () => {
255
+ }
256
+ };
257
+ function RouteSchedule(props) {
258
+ const { lineInfos, className, renderStation, renderHeader, renderFooter } = props;
259
+ if (!lineInfos) {
260
+ return null;
261
+ }
262
+ return /* @__PURE__ */ React.createElement("div", { className }, renderHeader({ ...props }), /* @__PURE__ */ React.createElement("div", { className: "rt-route-body" }, lineInfos.stations.map((stop, idx) => {
263
+ return renderStation({ ...props, stop, idx });
264
+ })), renderFooter({ ...props }));
265
+ }
266
+ RouteSchedule.propTypes = propTypes;
267
+ RouteSchedule.defaultProps = defaultProps;
268
+ export default React.memo(RouteSchedule);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/RouteSchedule/RouteSchedule.js"],
4
+ "sourcesContent": ["/* eslint-disable react/no-unused-prop-types */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n RealtimeLayer as TrackerLayer,\n realtimeConfig,\n} from 'mobility-toolbox-js/ol';\nimport { getHoursAndMinutes, getDelayString } from '../../utils/timeUtils';\nimport ReactTransitPropTypes from '../../propTypes';\nimport firstStation from '../../images/RouteSchedule/firstStation.png';\nimport station from '../../images/RouteSchedule/station.png';\nimport lastStation from '../../images/RouteSchedule/lastStation.png';\nimport line from '../../images/RouteSchedule/line.png';\n\nconst { getBgColor } = realtimeConfig;\n\n/**\n * Returns a color class to display the delay.\n * @param {Number} time Delay time in milliseconds.\n */\nconst getDelayColor = (time) => {\n const secs = Math.round(((time / 1800 / 2) * 3600) / 1000);\n if (secs >= 3600) {\n return 'dark-red';\n }\n if (secs >= 500) {\n return 'middle-red';\n }\n if (secs >= 300) {\n return 'light-red';\n }\n if (secs >= 180) {\n return 'orange';\n }\n return 'green';\n};\n\n/**\n * Returns true if the train doesn't stop to the station.\n * @param {Object} stop Station information.\n */\nconst isNotStop = (stop) => {\n return !stop.arrivalTime && !stop.departureTime;\n};\n\n/**\n * Returns if the station has already been passed by the vehicule.\n * @param {Object} stop Station information.\n * @param {number} time The current time to test in ms.\n * @param {Array<Object>} stops the list of all stops of the train.\n * @param {idx} idx The index of the stop object in the stops array.\n */\nconst isPassed = (stop, time, stops, idx) => {\n // If the train doesn't stop to the stop object, we test if the stop just before has been passed or not.\n // if yes the current stop is considered as passed.\n if (isNotStop(stop)) {\n if (stops[idx - 1] && idx > 0) {\n return isPassed(stops[idx - 1], time, stops, idx);\n }\n return true;\n }\n\n // Sometimes stop.departureDelay is undefined.\n const timeToCompare = stop.aimedDepartureTime || stop.aimedArrivalTime || 0;\n let delayToCompare = stop.departureDelay || stop.arrivalDelay || 0;\n\n // It could happens that the delay is negative we simply ignores it.\n if (delayToCompare < 0) {\n delayToCompare = 0;\n }\n\n return timeToCompare + delayToCompare <= time;\n};\n\n/**\n * Returns an image for first, middle or last stations.\n * @param {Number} stations The stations list.\n * @param {Number} index Index of the station in the list.\n * @param {Boolean} isStationPassed If the train is already passed at this station.\n * @param {Boolean} isNotStation If the train doesn't stop to this station.\n */\nconst defaultRenderStationImg = (\n stations,\n index,\n isStationPassed,\n isNotStation,\n) => {\n const { length } = stations;\n let src = station.src || station;\n if (index === 0) {\n src = firstStation.src || firstStation;\n } else if (index === length - 1) {\n src = lastStation.src || lastStation;\n } else if (isNotStation) {\n src = line.src || line;\n }\n return <img src={src} alt=\"routeScheduleLine\" className=\"rt-route-icon\" />;\n};\n\nconst RouteStop = ({\n lineInfos,\n onStationClick,\n trackerLayer,\n renderStationImg,\n stop,\n idx,\n}) => {\n const {\n arrivalDelay,\n departureDelay,\n state,\n stationName,\n aimedArrivalTime,\n aimedDepartureTime,\n } = stop;\n const cancelled = state === 'JOURNEY_CANCELLED' || state === 'STOP_CANCELLED';\n const { stations } = lineInfos;\n const isFirstStation = idx === 0;\n const isLastStation = idx === stations.length - 1;\n const isNotStation = isNotStop(stop);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [isStationPassed, setIsStationPassed] = useState(\n isPassed(stop, trackerLayer.time, stations, idx),\n );\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n let timeout = null;\n // We have to refresh the stop when the state it's time_based\n if (!isStationPassed && stop.state === 'TIME_BASED') {\n timeout = setInterval(() => {\n setIsStationPassed(isPassed(stop, trackerLayer.time, stations, idx));\n }, 20000);\n }\n return () => {\n clearInterval(timeout);\n };\n }, [stop, isStationPassed, trackerLayer, stations, idx]);\n\n return (\n <div\n role=\"button\"\n className={[\n 'rt-route-station',\n isStationPassed ? ' rt-passed' : '',\n isNotStation ? ' rt-no-stop' : '',\n ].join('')}\n onClick={(e) => {\n return onStationClick(stop, e);\n }}\n tabIndex={0}\n onKeyPress={(e) => {\n return e.which === 13 && onStationClick(stop, e);\n }}\n >\n <div className=\"rt-route-delay\">\n {typeof arrivalDelay === 'undefined' || isFirstStation || cancelled ? (\n ''\n ) : (\n <span\n className={`rt-route-delay-arrival${` ${getDelayColor(\n arrivalDelay,\n )}`}`}\n >\n {`+${getDelayString(arrivalDelay)}`}\n </span>\n )}\n {typeof departureDelay === 'undefined' || isLastStation || cancelled ? (\n ''\n ) : (\n <span\n className={`rt-route-delay-departure${` ${getDelayColor(\n departureDelay,\n )}`}`}\n >\n {`+${getDelayString(departureDelay)}`}\n </span>\n )}\n </div>\n <div className=\"rt-route-times\">\n <span\n className={`rt-route-time-arrival ${\n cancelled ? 'rt-route-cancelled' : ''\n }`}\n >\n {getHoursAndMinutes(aimedArrivalTime)}\n </span>\n <span\n className={`rt-route-time-departure ${\n cancelled ? 'rt-route-cancelled' : ''\n }`}\n >\n {getHoursAndMinutes(aimedDepartureTime)}\n </span>\n </div>\n {renderStationImg(stations, idx, isStationPassed, isNotStation)}\n <div className={cancelled ? 'rt-route-cancelled' : ''}>{stationName}</div>\n </div>\n );\n};\n\nconst defaultRenderStation = (props) => {\n const { stationId, arrivalTime, departureTime, stationName } = props.stop;\n // eslint-disable-next-line react/jsx-props-no-spreading\n return (\n <RouteStop\n // Train line can go in circle so begin and end have the same id,\n // using the time in the key should fix the issue.\n key={(stationId || stationName) + arrivalTime + departureTime}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nconst renderRouteIdentifier = ({ routeIdentifier, longName }) => {\n if (routeIdentifier) {\n // first part of the id, without leading zeros.\n const id = parseInt(routeIdentifier.split('.')[0], 10);\n if (!longName.includes(id)) {\n return ` (${id})`;\n }\n }\n return null;\n};\n\nconst defaultRenderHeader = ({ lineInfos, renderHeaderButtons }) => {\n const {\n type,\n vehicleType,\n shortName,\n longName,\n stroke,\n destination,\n routeIdentifier,\n text_color: textColor,\n } = lineInfos;\n return (\n <div className=\"rt-route-header\">\n <span\n className=\"rt-route-icon\"\n style={{\n /* stylelint-disable-next-line value-keyword-case */\n backgroundColor: stroke || getBgColor(type || vehicleType),\n color: textColor || 'black',\n }}\n >\n {shortName}\n </span>\n <div className=\"rt-route-title\">\n <span className=\"rt-route-name\">{destination}</span>\n <span>\n {longName}\n {renderRouteIdentifier(lineInfos)}\n </span>\n </div>\n <div className=\"rt-route-buttons\">\n {renderHeaderButtons(routeIdentifier)}\n </div>\n </div>\n );\n};\n\nconst defaultRenderFooter = (props) => {\n const { lineInfos, renderCopyright } = props;\n if (!lineInfos.operator && !lineInfos.publisher) {\n return null;\n }\n return <div className=\"rt-route-footer\">{renderCopyright({ ...props })}</div>;\n};\n\nconst defaultRenderLink = (text, url) => {\n return (\n <div className=\"rt-route-copyright-link\">\n {url ? (\n <a href={url} target=\"_blank\" rel=\"noreferrer\">\n {text}\n </a>\n ) : (\n <>{text}</>\n )}\n </div>\n );\n};\n\nconst defaultRenderCopyright = ({ lineInfos }) => {\n return (\n <span className=\"rt-route-copyright\">\n {lineInfos.operator &&\n defaultRenderLink(lineInfos.operator, lineInfos.operatorUrl)}\n {lineInfos.operator && lineInfos.publisher && <span>&nbsp;-&nbsp;</span>}\n {lineInfos.publisher &&\n defaultRenderLink(lineInfos.publisher, lineInfos.publisherUrl)}\n {lineInfos.license && <span>&nbsp;(</span>}\n {lineInfos.license &&\n defaultRenderLink(lineInfos.license, lineInfos.licenseUrl)}\n {lineInfos.license && ')'}\n </span>\n );\n};\n\nconst propTypes = {\n /**\n * CSS class of the route schedule wrapper.\n */\n className: PropTypes.string,\n\n /**\n * Trajectory stations informations.\n */\n lineInfos: ReactTransitPropTypes.lineInfos,\n\n /**\n * Trackerlayer.\n */\n trackerLayer: PropTypes.instanceOf(TrackerLayer).isRequired,\n\n /**\n * Render Header of the route scheduler.\n */\n renderHeader: PropTypes.func,\n\n /**\n * Render Footer of the route scheduler.\n */\n renderFooter: PropTypes.func,\n\n /**\n * Render Copyright of the route scheduler.\n */\n renderCopyright: PropTypes.func,\n\n /**\n * Render the status of the station image.\n */\n renderStationImg: PropTypes.func,\n\n /**\n * Render a station.\n */\n renderStation: PropTypes.func,\n\n /**\n * Function triggered on station's click event.\n */\n onStationClick: PropTypes.func,\n\n /**\n * Function to render header buttons.\n */\n renderHeaderButtons: PropTypes.func,\n};\n\nconst defaultProps = {\n className: 'rt-route-schedule',\n lineInfos: null,\n renderHeader: defaultRenderHeader,\n renderStation: defaultRenderStation,\n renderStationImg: defaultRenderStationImg,\n renderCopyright: defaultRenderCopyright,\n renderFooter: defaultRenderFooter,\n renderHeaderButtons: () => {\n return null;\n },\n onStationClick: () => {},\n};\n\n/**\n * RouteSchedule displays information, stops and punctuality about the clicked route.\n */\nfunction RouteSchedule(props) {\n const { lineInfos, className, renderStation, renderHeader, renderFooter } =\n props;\n\n if (!lineInfos) {\n return null;\n }\n\n return (\n <div className={className}>\n {renderHeader({ ...props })}\n <div className=\"rt-route-body\">\n {lineInfos.stations.map((stop, idx) => {\n return renderStation({ ...props, stop, idx });\n })}\n </div>\n {renderFooter({ ...props })}\n </div>\n );\n}\n\nRouteSchedule.propTypes = propTypes;\nRouteSchedule.defaultProps = defaultProps;\n\nexport default React.memo(RouteSchedule);\n"],
5
+ "mappings": "AAEA,OAAO,SAAS,WAAW,gBAAgB;AAC3C,OAAO,eAAe;AACtB;AAAA,EACE,iBAAiB;AAAA,EACjB;AAAA,OACK;AACP,SAAS,oBAAoB,sBAAsB;AACnD,OAAO,2BAA2B;AAClC,OAAO,kBAAkB;AACzB,OAAO,aAAa;AACpB,OAAO,iBAAiB;AACxB,OAAO,UAAU;AAEjB,MAAM,EAAE,WAAW,IAAI;AAMvB,MAAM,gBAAgB,CAAC,SAAS;AAC9B,QAAM,OAAO,KAAK,MAAQ,OAAO,OAAO,IAAK,OAAQ,GAAI;AACzD,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,KAAK;AACf,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,KAAK;AACf,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,KAAK;AACf,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAMA,MAAM,YAAY,CAAC,SAAS;AAC1B,SAAO,CAAC,KAAK,eAAe,CAAC,KAAK;AACpC;AASA,MAAM,WAAW,CAAC,MAAM,MAAM,OAAO,QAAQ;AAG3C,MAAI,UAAU,IAAI,GAAG;AACnB,QAAI,MAAM,MAAM,CAAC,KAAK,MAAM,GAAG;AAC7B,aAAO,SAAS,MAAM,MAAM,CAAC,GAAG,MAAM,OAAO,GAAG;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAGA,QAAM,gBAAgB,KAAK,sBAAsB,KAAK,oBAAoB;AAC1E,MAAI,iBAAiB,KAAK,kBAAkB,KAAK,gBAAgB;AAGjE,MAAI,iBAAiB,GAAG;AACtB,qBAAiB;AAAA,EACnB;AAEA,SAAO,gBAAgB,kBAAkB;AAC3C;AASA,MAAM,0BAA0B,CAC9B,UACA,OACA,iBACA,iBACG;AACH,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM,QAAQ,OAAO;AACzB,MAAI,UAAU,GAAG;AACf,UAAM,aAAa,OAAO;AAAA,EAC5B,WAAW,UAAU,SAAS,GAAG;AAC/B,UAAM,YAAY,OAAO;AAAA,EAC3B,WAAW,cAAc;AACvB,UAAM,KAAK,OAAO;AAAA,EACpB;AACA,SAAO,oCAAC,SAAI,KAAU,KAAI,qBAAoB,WAAU,iBAAgB;AAC1E;AAEA,MAAM,YAAY,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,UAAU,uBAAuB,UAAU;AAC7D,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,iBAAiB,QAAQ;AAC/B,QAAM,gBAAgB,QAAQ,SAAS,SAAS;AAChD,QAAM,eAAe,UAAU,IAAI;AAEnC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C,SAAS,MAAM,aAAa,MAAM,UAAU,GAAG;AAAA,EACjD;AAGA,YAAU,MAAM;AACd,QAAI,UAAU;AAEd,QAAI,CAAC,mBAAmB,KAAK,UAAU,cAAc;AACnD,gBAAU,YAAY,MAAM;AAC1B,2BAAmB,SAAS,MAAM,aAAa,MAAM,UAAU,GAAG,CAAC;AAAA,MACrE,GAAG,GAAK;AAAA,IACV;AACA,WAAO,MAAM;AACX,oBAAc,OAAO;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,MAAM,iBAAiB,cAAc,UAAU,GAAG,CAAC;AAEvD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB,eAAe;AAAA,QACjC,eAAe,gBAAgB;AAAA,MACjC,EAAE,KAAK,EAAE;AAAA,MACT,SAAS,CAAC,MAAM;AACd,eAAO,eAAe,MAAM,CAAC;AAAA,MAC/B;AAAA,MACA,UAAU;AAAA,MACV,YAAY,CAAC,MAAM;AACjB,eAAO,EAAE,UAAU,MAAM,eAAe,MAAM,CAAC;AAAA,MACjD;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,oBACZ,OAAO,iBAAiB,eAAe,kBAAkB,YACxD,KAEA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,yBAAyB,IAAI;AAAA,UACtC;AAAA,QACF,CAAC,EAAE;AAAA;AAAA,MAEF,IAAI,eAAe,YAAY,CAAC;AAAA,IACnC,GAED,OAAO,mBAAmB,eAAe,iBAAiB,YACzD,KAEA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,2BAA2B,IAAI;AAAA,UACxC;AAAA,QACF,CAAC,EAAE;AAAA;AAAA,MAEF,IAAI,eAAe,cAAc,CAAC;AAAA,IACrC,CAEJ;AAAA,IACA,oCAAC,SAAI,WAAU,oBACb;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,yBACT,YAAY,uBAAuB,EACrC;AAAA;AAAA,MAEC,mBAAmB,gBAAgB;AAAA,IACtC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,2BACT,YAAY,uBAAuB,EACrC;AAAA;AAAA,MAEC,mBAAmB,kBAAkB;AAAA,IACxC,CACF;AAAA,IACC,iBAAiB,UAAU,KAAK,iBAAiB,YAAY;AAAA,IAC9D,oCAAC,SAAI,WAAW,YAAY,uBAAuB,MAAK,WAAY;AAAA,EACtE;AAEJ;AAEA,MAAM,uBAAuB,CAAC,UAAU;AACtC,QAAM,EAAE,WAAW,aAAa,eAAe,YAAY,IAAI,MAAM;AAErE,SACE;AAAA,IAAC;AAAA;AAAA,MAGC,MAAM,aAAa,eAAe,cAAc;AAAA,MAE/C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,wBAAwB,CAAC,EAAE,iBAAiB,SAAS,MAAM;AAC/D,MAAI,iBAAiB;AAEnB,UAAM,KAAK,SAAS,gBAAgB,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AACrD,QAAI,CAAC,SAAS,SAAS,EAAE,GAAG;AAC1B,aAAO,KAAK,EAAE;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,sBAAsB,CAAC,EAAE,WAAW,oBAAoB,MAAM;AAClE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd,IAAI;AACJ,SACE,oCAAC,SAAI,WAAU,qBACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA;AAAA,QAEL,iBAAiB,UAAU,WAAW,QAAQ,WAAW;AAAA,QACzD,OAAO,aAAa;AAAA,MACtB;AAAA;AAAA,IAEC;AAAA,EACH,GACA,oCAAC,SAAI,WAAU,oBACb,oCAAC,UAAK,WAAU,mBAAiB,WAAY,GAC7C,oCAAC,cACE,UACA,sBAAsB,SAAS,CAClC,CACF,GACA,oCAAC,SAAI,WAAU,sBACZ,oBAAoB,eAAe,CACtC,CACF;AAEJ;AAEA,MAAM,sBAAsB,CAAC,UAAU;AACrC,QAAM,EAAE,WAAW,gBAAgB,IAAI;AACvC,MAAI,CAAC,UAAU,YAAY,CAAC,UAAU,WAAW;AAC/C,WAAO;AAAA,EACT;AACA,SAAO,oCAAC,SAAI,WAAU,qBAAmB,gBAAgB,EAAE,GAAG,MAAM,CAAC,CAAE;AACzE;AAEA,MAAM,oBAAoB,CAAC,MAAM,QAAQ;AACvC,SACE,oCAAC,SAAI,WAAU,6BACZ,MACC,oCAAC,OAAE,MAAM,KAAK,QAAO,UAAS,KAAI,gBAC/B,IACH,IAEA,0DAAG,IAAK,CAEZ;AAEJ;AAEA,MAAM,yBAAyB,CAAC,EAAE,UAAU,MAAM;AAChD,SACE,oCAAC,UAAK,WAAU,wBACb,UAAU,YACT,kBAAkB,UAAU,UAAU,UAAU,WAAW,GAC5D,UAAU,YAAY,UAAU,aAAa,oCAAC,cAAK,WAAa,GAChE,UAAU,aACT,kBAAkB,UAAU,WAAW,UAAU,YAAY,GAC9D,UAAU,WAAW,oCAAC,cAAK,OAAO,GAClC,UAAU,WACT,kBAAkB,UAAU,SAAS,UAAU,UAAU,GAC1D,UAAU,WAAW,GACxB;AAEJ;AAEA,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA,EAIhB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAKrB,WAAW,sBAAsB;AAAA;AAAA;AAAA;AAAA,EAKjC,cAAc,UAAU,WAAW,YAAY,EAAE;AAAA;AAAA;AAAA;AAAA,EAKjD,cAAc,UAAU;AAAA;AAAA;AAAA;AAAA,EAKxB,cAAc,UAAU;AAAA;AAAA;AAAA;AAAA,EAKxB,iBAAiB,UAAU;AAAA;AAAA;AAAA;AAAA,EAK3B,kBAAkB,UAAU;AAAA;AAAA;AAAA;AAAA,EAK5B,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA,EAKzB,gBAAgB,UAAU;AAAA;AAAA;AAAA;AAAA,EAK1B,qBAAqB,UAAU;AACjC;AAEA,MAAM,eAAe;AAAA,EACnB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,qBAAqB,MAAM;AACzB,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB,MAAM;AAAA,EAAC;AACzB;AAKA,SAAS,cAAc,OAAO;AAC5B,QAAM,EAAE,WAAW,WAAW,eAAe,cAAc,aAAa,IACtE;AAEF,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SACE,oCAAC,SAAI,aACF,aAAa,EAAE,GAAG,MAAM,CAAC,GAC1B,oCAAC,SAAI,WAAU,mBACZ,UAAU,SAAS,IAAI,CAAC,MAAM,QAAQ;AACrC,WAAO,cAAc,EAAE,GAAG,OAAO,MAAM,IAAI,CAAC;AAAA,EAC9C,CAAC,CACH,GACC,aAAa,EAAE,GAAG,MAAM,CAAC,CAC5B;AAEJ;AAEA,cAAc,YAAY;AAC1B,cAAc,eAAe;AAE7B,eAAe,MAAM,KAAK,aAAa;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ export { default } from "./RouteSchedule";
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/RouteSchedule/index.js"],
4
+ "sourcesContent": ["export { default } from './RouteSchedule';\n"],
5
+ "mappings": "AAAA,SAAS,eAAe;",
6
+ "names": []
7
+ }
@@ -1,50 +1,35 @@
1
- import React, { useRef, useEffect } from 'react';
2
- import PropTypes from 'prop-types';
3
- import OLScaleLine from 'ol/control/ScaleLine';
4
- import OLMap from 'ol/Map';
5
-
1
+ import React, { useRef, useEffect } from "react";
2
+ import PropTypes from "prop-types";
3
+ import OLScaleLine from "ol/control/ScaleLine";
4
+ import OLMap from "ol/Map";
6
5
  const propTypes = {
7
6
  /**
8
7
  * ol/map.
9
8
  */
10
9
  map: PropTypes.instanceOf(OLMap).isRequired,
11
-
12
10
  /**
13
11
  * Options for ol/control/ScaleLine.
14
12
  * See https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html
15
13
  */
16
- options: PropTypes.object,
14
+ options: PropTypes.object
17
15
  };
18
-
19
16
  const defaultProps = {
20
- options: {},
17
+ options: {}
21
18
  };
22
-
23
- /**
24
- * The ScaleLine component creates an
25
- * [ol/control/ScaleLine](https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html)
26
- * for an [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).
27
- */
28
19
  function ScaleLine({ map, options, ...other }) {
29
20
  const ref = useRef();
30
-
31
21
  useEffect(() => {
32
22
  const control = new OLScaleLine({
33
23
  ...options,
34
- ...{ target: ref.current },
24
+ ...{ target: ref.current }
35
25
  });
36
-
37
26
  map.addControl(control);
38
27
  return () => {
39
28
  map.removeControl(control);
40
29
  };
41
30
  }, [map, options]);
42
-
43
- // eslint-disable-next-line react/jsx-props-no-spreading
44
- return <div className="rs-scale-line" ref={ref} {...other} />;
31
+ return /* @__PURE__ */ React.createElement("div", { className: "rs-scale-line", ref, ...other });
45
32
  }
46
-
47
33
  ScaleLine.propTypes = propTypes;
48
34
  ScaleLine.defaultProps = defaultProps;
49
-
50
35
  export default React.memo(ScaleLine);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScaleLine/ScaleLine.js"],
4
+ "sourcesContent": ["import React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport OLScaleLine from 'ol/control/ScaleLine';\nimport OLMap from 'ol/Map';\n\nconst propTypes = {\n /**\n * ol/map.\n */\n map: PropTypes.instanceOf(OLMap).isRequired,\n\n /**\n * Options for ol/control/ScaleLine.\n * See https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html\n */\n options: PropTypes.object,\n};\n\nconst defaultProps = {\n options: {},\n};\n\n/**\n * The ScaleLine component creates an\n * [ol/control/ScaleLine](https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html)\n * for an [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\nfunction ScaleLine({ map, options, ...other }) {\n const ref = useRef();\n\n useEffect(() => {\n const control = new OLScaleLine({\n ...options,\n ...{ target: ref.current },\n });\n\n map.addControl(control);\n return () => {\n map.removeControl(control);\n };\n }, [map, options]);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <div className=\"rs-scale-line\" ref={ref} {...other} />;\n}\n\nScaleLine.propTypes = propTypes;\nScaleLine.defaultProps = defaultProps;\n\nexport default React.memo(ScaleLine);\n"],
5
+ "mappings": "AAAA,OAAO,SAAS,QAAQ,iBAAiB;AACzC,OAAO,eAAe;AACtB,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAElB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA,EAIhB,KAAK,UAAU,WAAW,KAAK,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjC,SAAS,UAAU;AACrB;AAEA,MAAM,eAAe;AAAA,EACnB,SAAS,CAAC;AACZ;AAOA,SAAS,UAAU,EAAE,KAAK,SAAS,GAAG,MAAM,GAAG;AAC7C,QAAM,MAAM,OAAO;AAEnB,YAAU,MAAM;AACd,UAAM,UAAU,IAAI,YAAY;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG,EAAE,QAAQ,IAAI,QAAQ;AAAA,IAC3B,CAAC;AAED,QAAI,WAAW,OAAO;AACtB,WAAO,MAAM;AACX,UAAI,cAAc,OAAO;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,KAAK,OAAO,CAAC;AAGjB,SAAO,oCAAC,SAAI,WAAU,iBAAgB,KAAW,GAAG,OAAO;AAC7D;AAEA,UAAU,YAAY;AACtB,UAAU,eAAe;AAEzB,eAAe,MAAM,KAAK,SAAS;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ export { default } from "./ScaleLine";
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScaleLine/index.js"],
4
+ "sourcesContent": ["export { default } from './ScaleLine';\n"],
5
+ "mappings": "AAAA,SAAS,eAAe;",
6
+ "names": []
7
+ }