react-spatial 1.2.2 → 1.2.3-beta.3

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 (186) hide show
  1. package/LayerService.js +128 -184
  2. package/LayerService.js.map +7 -1
  3. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
  4. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
  5. package/components/BaseLayerSwitcher/index.js +1 -3
  6. package/components/BaseLayerSwitcher/index.js.map +7 -1
  7. package/components/BasicMap/BasicMap.js +147 -285
  8. package/components/BasicMap/BasicMap.js.map +7 -1
  9. package/components/BasicMap/index.js +1 -3
  10. package/components/BasicMap/index.js.map +7 -1
  11. package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
  12. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
  13. package/components/CanvasSaveButton/index.js +1 -3
  14. package/components/CanvasSaveButton/index.js.map +7 -1
  15. package/components/Copyright/Copyright.js +29 -70
  16. package/components/Copyright/Copyright.js.map +7 -1
  17. package/components/Copyright/index.js +1 -3
  18. package/components/Copyright/index.js.map +7 -1
  19. package/components/FeatureExportButton/FeatureExportButton.js +40 -106
  20. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
  21. package/components/FeatureExportButton/index.js +1 -3
  22. package/components/FeatureExportButton/index.js.map +7 -1
  23. package/components/FilterButton/FilterButton.js +41 -106
  24. package/components/FilterButton/FilterButton.js.map +7 -1
  25. package/components/FilterButton/index.js +1 -3
  26. package/components/FilterButton/index.js.map +7 -1
  27. package/components/FitExtent/FitExtent.js +17 -50
  28. package/components/FitExtent/FitExtent.js.map +7 -1
  29. package/components/FitExtent/index.js +1 -3
  30. package/components/FitExtent/index.js.map +7 -1
  31. package/components/FollowButton/FollowButton.js +41 -111
  32. package/components/FollowButton/FollowButton.js.map +7 -1
  33. package/components/FollowButton/index.js +1 -3
  34. package/components/FollowButton/index.js.map +7 -1
  35. package/components/Geolocation/Geolocation.js +104 -213
  36. package/components/Geolocation/Geolocation.js.map +7 -1
  37. package/components/Geolocation/index.js +1 -3
  38. package/components/Geolocation/index.js.map +7 -1
  39. package/components/LayerTree/LayerTree.js +204 -410
  40. package/components/LayerTree/LayerTree.js.map +7 -1
  41. package/components/LayerTree/index.js +1 -3
  42. package/components/LayerTree/index.js.map +7 -1
  43. package/components/MousePosition/MousePosition.js +61 -130
  44. package/components/MousePosition/MousePosition.js.map +7 -1
  45. package/components/MousePosition/index.js +1 -3
  46. package/components/MousePosition/index.js.map +7 -1
  47. package/components/NorthArrow/NorthArrow.js +22 -62
  48. package/components/NorthArrow/NorthArrow.js.map +7 -1
  49. package/components/NorthArrow/index.js +1 -3
  50. package/components/NorthArrow/index.js.map +7 -1
  51. package/components/Overlay/Overlay.js +83 -130
  52. package/components/Overlay/Overlay.js.map +7 -1
  53. package/components/Overlay/index.js +1 -3
  54. package/components/Overlay/index.js.map +7 -1
  55. package/components/Permalink/Permalink.js +150 -244
  56. package/components/Permalink/Permalink.js.map +7 -1
  57. package/components/Permalink/index.js +1 -3
  58. package/components/Permalink/index.js.map +7 -1
  59. package/components/Popup/Popup.js +106 -233
  60. package/components/Popup/Popup.js.map +7 -1
  61. package/components/Popup/index.js +1 -3
  62. package/components/Popup/index.js.map +7 -1
  63. package/components/ResizeHandler/ResizeHandler.js +58 -113
  64. package/components/ResizeHandler/ResizeHandler.js.map +7 -1
  65. package/components/ResizeHandler/index.js +1 -3
  66. package/components/ResizeHandler/index.js.map +7 -1
  67. package/components/RouteSchedule/RouteSchedule.js +150 -283
  68. package/components/RouteSchedule/RouteSchedule.js.map +7 -1
  69. package/components/RouteSchedule/index.js +1 -3
  70. package/components/RouteSchedule/index.js.map +7 -1
  71. package/components/ScaleLine/ScaleLine.js +21 -45
  72. package/components/ScaleLine/ScaleLine.js.map +7 -1
  73. package/components/ScaleLine/index.js +1 -3
  74. package/components/ScaleLine/index.js.map +7 -1
  75. package/components/Search/Search.js +122 -186
  76. package/components/Search/Search.js.map +7 -1
  77. package/components/Search/SearchService.js +45 -69
  78. package/components/Search/SearchService.js.map +7 -1
  79. package/components/Search/engines/Engine.js +18 -25
  80. package/components/Search/engines/Engine.js.map +7 -1
  81. package/components/Search/engines/StopFinder.js +21 -38
  82. package/components/Search/engines/StopFinder.js.map +7 -1
  83. package/components/Search/index.js +3 -6
  84. package/components/Search/index.js.map +7 -1
  85. package/components/StopsFinder/StopsFinder.js +123 -174
  86. package/components/StopsFinder/StopsFinder.js.map +7 -1
  87. package/components/StopsFinder/StopsFinderOption.js +37 -54
  88. package/components/StopsFinder/StopsFinderOption.js.map +7 -1
  89. package/components/StopsFinder/index.js +1 -3
  90. package/components/StopsFinder/index.js.map +7 -1
  91. package/components/TrackerControl/TrackerControl.js +73 -128
  92. package/components/TrackerControl/TrackerControl.js.map +7 -1
  93. package/components/TrackerControl/index.js +1 -3
  94. package/components/TrackerControl/index.js.map +7 -1
  95. package/components/Zoom/Zoom.js +69 -112
  96. package/components/Zoom/Zoom.js.map +7 -1
  97. package/components/Zoom/index.js +1 -3
  98. package/components/Zoom/index.js.map +7 -1
  99. package/package.json +10 -5
  100. package/propTypes.js +17 -23
  101. package/propTypes.js.map +7 -1
  102. package/setupTests.js +2 -4
  103. package/setupTests.js.map +7 -1
  104. package/themes/README.md +26 -0
  105. package/themes/default/components.scss +0 -1
  106. package/themes/default/examples.scss +0 -1
  107. package/utils/GlobalsForOle.js +63 -64
  108. package/utils/GlobalsForOle.js.map +7 -1
  109. package/utils/KML.js +178 -364
  110. package/utils/KML.js.map +7 -1
  111. package/utils/KMLFormat.js +37 -73
  112. package/utils/KMLFormat.js.map +7 -1
  113. package/utils/Styles.js +24 -32
  114. package/utils/Styles.js.map +7 -1
  115. package/utils/getPolygonPattern.js +11 -44
  116. package/utils/getPolygonPattern.js.map +7 -1
  117. package/utils/timeUtils.js +16 -35
  118. package/utils/timeUtils.js.map +7 -1
  119. package/LayerService.test.js +0 -160
  120. package/LayerService.test.js.map +0 -1
  121. package/Projections.js +0 -16
  122. package/Projections.js.map +0 -1
  123. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
  124. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
  125. package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
  126. package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
  127. package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
  128. package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
  129. package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
  130. package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
  131. package/components/BaseLayerToggler/index.js +0 -3
  132. package/components/BaseLayerToggler/index.js.map +0 -1
  133. package/components/BasicMap/BasicMap.test.js +0 -288
  134. package/components/BasicMap/BasicMap.test.js.map +0 -1
  135. package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
  136. package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
  137. package/components/Copyright/Copyright.test.js +0 -133
  138. package/components/Copyright/Copyright.test.js.map +0 -1
  139. package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
  140. package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
  141. package/components/FilterButton/FilterButton.test.js +0 -48
  142. package/components/FilterButton/FilterButton.test.js.map +0 -1
  143. package/components/FitExtent/FitExtent.test.js +0 -44
  144. package/components/FitExtent/FitExtent.test.js.map +0 -1
  145. package/components/FollowButton/FollowButton.test.js +0 -57
  146. package/components/FollowButton/FollowButton.test.js.map +0 -1
  147. package/components/Geolocation/Geolocation.test.js +0 -263
  148. package/components/Geolocation/Geolocation.test.js.map +0 -1
  149. package/components/LayerTree/LayerTree.test.js +0 -323
  150. package/components/LayerTree/LayerTree.test.js.map +0 -1
  151. package/components/MousePosition/MousePosition.test.js +0 -125
  152. package/components/MousePosition/MousePosition.test.js.map +0 -1
  153. package/components/NorthArrow/NorthArrow.test.js +0 -106
  154. package/components/NorthArrow/NorthArrow.test.js.map +0 -1
  155. package/components/Overlay/Overlay.test.js +0 -145
  156. package/components/Overlay/Overlay.test.js.map +0 -1
  157. package/components/Permalink/Permalink.test.js +0 -267
  158. package/components/Permalink/Permalink.test.js.map +0 -1
  159. package/components/Popup/Popup.test.js +0 -291
  160. package/components/Popup/Popup.test.js.map +0 -1
  161. package/components/ResizeHandler/ResizeHandler.test.js +0 -410
  162. package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
  163. package/components/RouteSchedule/RouteSchedule.test.js +0 -102
  164. package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
  165. package/components/ScaleLine/ScaleLine.test.js +0 -32
  166. package/components/ScaleLine/ScaleLine.test.js.map +0 -1
  167. package/components/Search/Search.test.js +0 -15
  168. package/components/Search/Search.test.js.map +0 -1
  169. package/components/StopsFinder/StopsFinder.test.js +0 -19
  170. package/components/StopsFinder/StopsFinder.test.js.map +0 -1
  171. package/components/TrackerControl/TrackerControl.test.js +0 -17
  172. package/components/TrackerControl/TrackerControl.test.js.map +0 -1
  173. package/components/Zoom/Zoom.test.js +0 -150
  174. package/components/Zoom/Zoom.test.js.map +0 -1
  175. package/styleguidist/ComponentsList.js +0 -52
  176. package/styleguidist/ComponentsList.js.map +0 -1
  177. package/styleguidist/StyleGuide.js +0 -253
  178. package/styleguidist/StyleGuide.js.map +0 -1
  179. package/utils/KML.test.js +0 -163
  180. package/utils/KML.test.js.map +0 -1
  181. package/utils/KMLFormat.test.js +0 -22
  182. package/utils/KMLFormat.test.js.map +0 -1
  183. package/utils/getPolygonPattern.test.js +0 -66
  184. package/utils/getPolygonPattern.test.js.map +0 -1
  185. package/utils/timeUtils.test.js +0 -32
  186. package/utils/timeUtils.test.js.map +0 -1
@@ -1 +1,7 @@
1
- {"version":3,"file":"SearchService.js","sources":["../../../src/components/Search/SearchService.js"],"sourcesContent":["class SearchService {\n constructor({ apiKey, engines, setSuggestions }) {\n this.engines = engines;\n this.setSuggestions = setSuggestions;\n Object.entries(this.engines).forEach(([, e]) => {\n return e.setApiKey(apiKey);\n });\n }\n\n countItems(section) {\n return this.engines[section].items && this.engines[section].items.length;\n }\n\n render(item) {\n return this.engines[item.section].render(item);\n }\n\n value(item) {\n return this.engines[item.section].constructor.value(item);\n }\n\n search(value) {\n Object.entries(this.engines).forEach(([section, engine], position) => {\n engine.search(value).then((items) => {\n engine.setItems(items);\n this.upsert(section, engine.getItems(items), position);\n });\n });\n }\n\n sectionCollapsed(section) {\n return this.engines[section].collapsed;\n }\n\n toggleSection(toggledSection) {\n Object.entries(this.engines).forEach(([section, engine], position) => {\n engine.collapse(!(section === toggledSection && engine.collapsed));\n this.upsert(section, engine.getItems(), position);\n });\n }\n\n upsert(section, items, position) {\n this.setSuggestions((oldSuggestions) => {\n const sectionIndex = oldSuggestions.findIndex((s) => {\n return s.section === section;\n });\n const start = sectionIndex === -1 ? position : sectionIndex;\n const deleteCount = sectionIndex === -1 ? 0 : 1;\n const newSuggestions = [...oldSuggestions];\n newSuggestions.splice(start, deleteCount, { section, items });\n return newSuggestions;\n });\n }\n}\n\nexport default SearchService;\n"],"names":["this","const"],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Search/SearchService.js"],
4
+ "sourcesContent": ["class SearchService {\n constructor({ apiKey, engines, setSuggestions }) {\n this.engines = engines;\n this.setSuggestions = setSuggestions;\n Object.entries(this.engines).forEach(([, e]) => {\n return e.setApiKey(apiKey);\n });\n }\n\n countItems(section) {\n return this.engines[section].items && this.engines[section].items.length;\n }\n\n render(item) {\n return this.engines[item.section].render(item);\n }\n\n value(item) {\n return this.engines[item.section].constructor.value(item);\n }\n\n search(value) {\n Object.entries(this.engines).forEach(([section, engine], position) => {\n engine.search(value).then((items) => {\n engine.setItems(items);\n this.upsert(section, engine.getItems(items), position);\n });\n });\n }\n\n sectionCollapsed(section) {\n return this.engines[section].collapsed;\n }\n\n toggleSection(toggledSection) {\n Object.entries(this.engines).forEach(([section, engine], position) => {\n engine.collapse(!(section === toggledSection && engine.collapsed));\n this.upsert(section, engine.getItems(), position);\n });\n }\n\n upsert(section, items, position) {\n this.setSuggestions((oldSuggestions) => {\n const sectionIndex = oldSuggestions.findIndex((s) => {\n return s.section === section;\n });\n const start = sectionIndex === -1 ? position : sectionIndex;\n const deleteCount = sectionIndex === -1 ? 0 : 1;\n const newSuggestions = [...oldSuggestions];\n newSuggestions.splice(start, deleteCount, { section, items });\n return newSuggestions;\n });\n }\n}\n\nexport default SearchService;\n"],
5
+ "mappings": "AAAA,MAAM,cAAc;AAAA,EAClB,YAAY,EAAE,QAAQ,SAAS,eAAe,GAAG;AAC/C,SAAK,UAAU;AACf,SAAK,iBAAiB;AACtB,WAAO,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM;AAC9C,aAAO,EAAE,UAAU,MAAM;AAAA,IAC3B,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,SAAS;AAClB,WAAO,KAAK,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,MAAM;AAAA,EACpE;AAAA,EAEA,OAAO,MAAM;AACX,WAAO,KAAK,QAAQ,KAAK,SAAS,OAAO,IAAI;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM;AACV,WAAO,KAAK,QAAQ,KAAK,SAAS,YAAY,MAAM,IAAI;AAAA,EAC1D;AAAA,EAEA,OAAO,OAAO;AACZ,WAAO,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa;AACpE,aAAO,OAAO,KAAK,EAAE,KAAK,CAAC,UAAU;AACnC,eAAO,SAAS,KAAK;AACrB,aAAK,OAAO,SAAS,OAAO,SAAS,KAAK,GAAG,QAAQ;AAAA,MACvD,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,iBAAiB,SAAS;AACxB,WAAO,KAAK,QAAQ,SAAS;AAAA,EAC/B;AAAA,EAEA,cAAc,gBAAgB;AAC5B,WAAO,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa;AACpE,aAAO,SAAS,EAAE,YAAY,kBAAkB,OAAO,UAAU;AACjE,WAAK,OAAO,SAAS,OAAO,SAAS,GAAG,QAAQ;AAAA,IAClD,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,SAAS,OAAO,UAAU;AAC/B,SAAK,eAAe,CAAC,mBAAmB;AACtC,YAAM,eAAe,eAAe,UAAU,CAAC,MAAM;AACnD,eAAO,EAAE,YAAY;AAAA,MACvB,CAAC;AACD,YAAM,QAAQ,iBAAiB,KAAK,WAAW;AAC/C,YAAM,cAAc,iBAAiB,KAAK,IAAI;AAC9C,YAAM,iBAAiB,CAAC,GAAG,cAAc;AACzC,qBAAe,OAAO,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;AAC5D,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,eAAe;",
6
+ "names": []
7
+ }
@@ -1,26 +1,19 @@
1
- var Engine = function Engine() {
2
- this.collapsed = true;
3
- this.items = [];
4
- };
5
-
6
- Engine.prototype.collapse = function collapse (collapsed) {
7
- this.collapsed = collapsed;
8
- };
9
-
10
- Engine.prototype.getItems = function getItems () {
11
- return this.collapsed ? this.items.slice(0, 2) : this.items;
12
- };
13
-
14
- Engine.prototype.setApiKey = function setApiKey (apiKey) {
15
- this.apiKey = apiKey;
16
- };
17
-
18
- Engine.prototype.setItems = function setItems (items) {
19
- if ( items === void 0 ) items = [];
20
-
21
- this.items = items;
22
- };
23
-
1
+ class Engine {
2
+ constructor() {
3
+ this.collapsed = true;
4
+ this.items = [];
5
+ }
6
+ collapse(collapsed) {
7
+ this.collapsed = collapsed;
8
+ }
9
+ getItems() {
10
+ return this.collapsed ? this.items.slice(0, 2) : this.items;
11
+ }
12
+ setApiKey(apiKey) {
13
+ this.apiKey = apiKey;
14
+ }
15
+ setItems(items = []) {
16
+ this.items = items;
17
+ }
18
+ }
24
19
  export default Engine;
25
-
26
- //# sourceMappingURL=Engine.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"Engine.js","sources":["../../../../src/components/Search/engines/Engine.js"],"sourcesContent":["class Engine {\n constructor() {\n this.collapsed = true;\n this.items = [];\n }\n\n collapse(collapsed) {\n this.collapsed = collapsed;\n }\n\n getItems() {\n return this.collapsed ? this.items.slice(0, 2) : this.items;\n }\n\n setApiKey(apiKey) {\n this.apiKey = apiKey;\n }\n\n setItems(items = []) {\n this.items = items;\n }\n}\n\nexport default Engine;\n"],"names":[],"mappings":"AAAA,IAAM,MAAM,GACV,eAAW,GAAG;AAChB,EAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,EAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAC;AACH;iBACE,6BAAQ,CAAC,SAAS,EAAE;AACtB,EAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7B,EAAC;AACH;iBACE,6BAAQ,GAAG;AACb,EAAI,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9D,EAAC;AACH;iBACE,+BAAS,CAAC,MAAM,EAAE;AACpB,EAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAC;AACH;iBACE,6BAAQ,CAAC,KAAU,EAAE;iCAAP,GAAG;AAAK;AACxB,EAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EACD;AACD;AACA,eAAe,MAAM,CAAC;"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/Search/engines/Engine.js"],
4
+ "sourcesContent": ["class Engine {\n constructor() {\n this.collapsed = true;\n this.items = [];\n }\n\n collapse(collapsed) {\n this.collapsed = collapsed;\n }\n\n getItems() {\n return this.collapsed ? this.items.slice(0, 2) : this.items;\n }\n\n setApiKey(apiKey) {\n this.apiKey = apiKey;\n }\n\n setItems(items = []) {\n this.items = items;\n }\n}\n\nexport default Engine;\n"],
5
+ "mappings": "AAAA,MAAM,OAAO;AAAA,EACX,cAAc;AACZ,SAAK,YAAY;AACjB,SAAK,QAAQ,CAAC;AAAA,EAChB;AAAA,EAEA,SAAS,WAAW;AAClB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,YAAY,KAAK,MAAM,MAAM,GAAG,CAAC,IAAI,KAAK;AAAA,EACxD;AAAA,EAEA,UAAU,QAAQ;AAChB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS,QAAQ,CAAC,GAAG;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;AAEA,eAAe;",
6
+ "names": []
7
+ }
@@ -1,47 +1,30 @@
1
- import React from 'react';
2
-
3
- import { StopsAPI } from 'mobility-toolbox-js/api';
4
- import Engine from './Engine';
5
-
6
- var StopFinder = /*@__PURE__*/(function (Engine) {
7
- function StopFinder(endpoint, options) {
8
- if ( endpoint === void 0 ) endpoint = 'https://api.geops.io/stops/v1/';
9
- if ( options === void 0 ) options = {};
10
-
11
- Engine.call(this);
1
+ import React from "react";
2
+ import { StopsAPI } from "mobility-toolbox-js/api";
3
+ import Engine from "./Engine";
4
+ class StopFinder extends Engine {
5
+ constructor(endpoint = "https://api.geops.io/stops/v1/", options = {}) {
6
+ super();
12
7
  this.options = options;
13
- // apiKey is passed as key in StopsAPI, delete to avoid duplicates.
14
8
  delete this.options.apiKey;
15
9
  this.api = new StopsAPI({
16
10
  url: endpoint,
17
- apiKey: options.apiKey,
11
+ apiKey: options.apiKey
18
12
  });
19
13
  }
20
-
21
- if ( Engine ) StopFinder.__proto__ = Engine;
22
- StopFinder.prototype = Object.create( Engine && Engine.prototype );
23
- StopFinder.prototype.constructor = StopFinder;
24
-
25
- StopFinder.prototype.search = function search (value) {
26
- return this.api.search(Object.assign({}, {q: encodeURIComponent(value)},
27
- this.options));
28
- };
29
-
30
- StopFinder.prototype.setApiKey = function setApiKey (apiKey) {
14
+ search(value) {
15
+ return this.api.search({
16
+ q: encodeURIComponent(value),
17
+ ...this.options
18
+ });
19
+ }
20
+ setApiKey(apiKey) {
31
21
  this.api.apiKey = apiKey;
32
- };
33
-
34
- StopFinder.prototype.render = function render (item) {
35
- return React.createElement( 'div', null, item.properties.name );
36
- };
37
-
38
- StopFinder.value = function value (item) {
22
+ }
23
+ render(item) {
24
+ return /* @__PURE__ */ React.createElement("div", null, item.properties.name);
25
+ }
26
+ static value(item) {
39
27
  return item.properties.name;
40
- };
41
-
42
- return StopFinder;
43
- }(Engine));
44
-
28
+ }
29
+ }
45
30
  export default StopFinder;
46
-
47
- //# sourceMappingURL=StopFinder.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"StopFinder.js","sources":["../../../../src/components/Search/engines/StopFinder.js"],"sourcesContent":["import React from 'react';\n\nimport { StopsAPI } from 'mobility-toolbox-js/api';\nimport Engine from './Engine';\n\nclass StopFinder extends Engine {\n constructor(endpoint = 'https://api.geops.io/stops/v1/', options = {}) {\n super();\n this.options = options;\n // apiKey is passed as key in StopsAPI, delete to avoid duplicates.\n delete this.options.apiKey;\n this.api = new StopsAPI({\n url: endpoint,\n apiKey: options.apiKey,\n });\n }\n\n search(value) {\n return this.api.search({\n q: encodeURIComponent(value),\n ...this.options,\n });\n }\n\n setApiKey(apiKey) {\n this.api.apiKey = apiKey;\n }\n\n render(item) {\n return <div>{item.properties.name}</div>;\n }\n\n static value(item) {\n return item.properties.name;\n }\n}\n\nexport default StopFinder;\n"],"names":["super"],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B;AACA,SAAS,QAAQ,QAAQ,yBAAyB,CAAC;AACnD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B;AACA,IAAM,UAAU,GAAe;EAC7B,mBAAW,CAAC,QAA2C,EAAE,OAAY,EAAE;uCAAnD,GAAG;qCAAyC,GAAG;AAAK;AAC1E,IAAIA,WAAK,KAAC,CAAC,CAAC;AACZ,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC;AAC5B,MAAM,GAAG,EAAE,QAAQ;AACnB,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM;AAC5B,KAAK,CAAC,CAAC;AACP;;;;gDAAG;AACH;AACA,uBAAE,yBAAM,CAAC,KAAK,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBACrB,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAC;AAClC,MAAS,IAAI,CAAC,OAAO,CAChB,CAAC,CAAC;AACP,IAAG;AACH;AACA,uBAAE,+BAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,IAAG;AACH;AACA,uBAAE,yBAAM,CAAC,IAAI,EAAE;AACf,IAAI,OAAO,sBAAC,YAAK,IAAI,CAAC,UAAU,CAAC,IAAK,EAAM,CAAC;AAC7C,IAAG;AACH;AACA,EAAE,WAAO,uBAAK,CAAC,IAAI,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAChC;;;EA7ByB,SA8BxB;AACD;AACA,eAAe,UAAU,CAAC;"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/Search/engines/StopFinder.js"],
4
+ "sourcesContent": ["import React from 'react';\n\nimport { StopsAPI } from 'mobility-toolbox-js/api';\nimport Engine from './Engine';\n\nclass StopFinder extends Engine {\n constructor(endpoint = 'https://api.geops.io/stops/v1/', options = {}) {\n super();\n this.options = options;\n // apiKey is passed as key in StopsAPI, delete to avoid duplicates.\n delete this.options.apiKey;\n this.api = new StopsAPI({\n url: endpoint,\n apiKey: options.apiKey,\n });\n }\n\n search(value) {\n return this.api.search({\n q: encodeURIComponent(value),\n ...this.options,\n });\n }\n\n setApiKey(apiKey) {\n this.api.apiKey = apiKey;\n }\n\n render(item) {\n return <div>{item.properties.name}</div>;\n }\n\n static value(item) {\n return item.properties.name;\n }\n}\n\nexport default StopFinder;\n"],
5
+ "mappings": "AAAA,OAAO,WAAW;AAElB,SAAS,gBAAgB;AACzB,OAAO,YAAY;AAEnB,MAAM,mBAAmB,OAAO;AAAA,EAC9B,YAAY,WAAW,kCAAkC,UAAU,CAAC,GAAG;AACrE,UAAM;AACN,SAAK,UAAU;AAEf,WAAO,KAAK,QAAQ;AACpB,SAAK,MAAM,IAAI,SAAS;AAAA,MACtB,KAAK;AAAA,MACL,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,OAAO;AACZ,WAAO,KAAK,IAAI,OAAO;AAAA,MACrB,GAAG,mBAAmB,KAAK;AAAA,MAC3B,GAAG,KAAK;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAAQ;AAChB,SAAK,IAAI,SAAS;AAAA,EACpB;AAAA,EAEA,OAAO,MAAM;AACX,WAAO,oCAAC,aAAK,KAAK,WAAW,IAAK;AAAA,EACpC;AAAA,EAEA,OAAO,MAAM,MAAM;AACjB,WAAO,KAAK,WAAW;AAAA,EACzB;AACF;AAEA,eAAe;",
6
+ "names": []
7
+ }
@@ -1,6 +1,3 @@
1
- export { default as Engine } from './engines/Engine';
2
- export { default as StopFinder } from './engines/StopFinder';
3
-
4
- export { default } from './Search';
5
-
6
- //# sourceMappingURL=index.js.map
1
+ export { default as Engine } from "./engines/Engine";
2
+ export { default as StopFinder } from "./engines/StopFinder";
3
+ export { default } from "./Search";
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Search/index.js"],"sourcesContent":["export { default as Engine } from './engines/Engine';\nexport { default as StopFinder } from './engines/StopFinder';\n\nexport { default } from './Search';\n"],"names":[],"mappings":"AAAA,SAAS,OAAO,IAAI,MAAM,QAAQ,kBAAkB,CAAC;AACrD,SAAS,OAAO,IAAI,UAAU,QAAQ,sBAAsB,CAAC;AAC7D;AACA,SAAS,OAAO,QAAQ,UAAU,CAAC;"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Search/index.js"],
4
+ "sourcesContent": ["export { default as Engine } from './engines/Engine';\nexport { default as StopFinder } from './engines/StopFinder';\n\nexport { default } from './Search';\n"],
5
+ "mappings": "AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,wBAAwB;",
6
+ "names": []
7
+ }
@@ -1,85 +1,72 @@
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
-
12
- var useStyles = makeStyles(function () {
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
+ 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
- function StopsFinder(ref) {
21
- var agencies = ref.agencies;
22
- var apiKey = ref.apiKey;
23
- var autocompleteProps = ref.autocompleteProps;
24
- var bbox = ref.bbox;
25
- var field = ref.field;
26
- var limit = ref.limit;
27
- var map = ref.map;
28
- var mots = ref.mots;
29
- var onSelect = ref.onSelect;
30
- var radius = ref.radius;
31
- var refLocation = ref.refLocation;
32
- var renderAutocomplete = ref.renderAutocomplete;
33
- var url = ref.url;
34
-
35
- var classes = useStyles();
36
- var ref$1 = useState('');
37
- var inputValue = ref$1[0];
38
- var setInputValue = ref$1[1];
39
- var ref$2 = useState([]);
40
- var suggestions = ref$2[0];
41
- var setSuggestions = ref$2[1];
42
- var ref$3 = useState(false);
43
- var isLoading = ref$3[0];
44
- var setLoading = ref$3[1];
45
- var ref$4 = useState(false);
46
- var isOpen = ref$4[0];
47
- var setOpen = ref$4[1];
48
-
49
- var control = useMemo(function () {
18
+ function StopsFinder({
19
+ agencies,
20
+ apiKey,
21
+ autocompleteProps,
22
+ bbox,
23
+ field,
24
+ limit,
25
+ map,
26
+ mots,
27
+ onSelect,
28
+ radius,
29
+ refLocation,
30
+ renderAutocomplete,
31
+ url
32
+ }) {
33
+ const classes = useStyles();
34
+ const [inputValue, setInputValue] = useState("");
35
+ const [suggestions, setSuggestions] = useState([]);
36
+ const [isLoading, setLoading] = useState(false);
37
+ const [isOpen, setOpen] = useState(false);
38
+ const control = useMemo(() => {
50
39
  return new StopFinderControl({
51
- url: url,
52
- apiKey: apiKey,
53
- target: document.createElement('div'),
54
- element: document.createElement('div'),
55
- render: function render(newSuggestions) {
56
- if ( newSuggestions === void 0 ) newSuggestions = [];
57
-
58
- setSuggestions(newSuggestions);
40
+ url,
41
+ apiKey,
42
+ target: document.createElement("div"),
43
+ element: document.createElement("div"),
44
+ render(newSuggestions = { features: [] }) {
45
+ setSuggestions(newSuggestions.features);
59
46
  setLoading(false);
60
- },
47
+ }
61
48
  });
62
49
  }, [apiKey, url]);
63
-
64
- useEffect(function () {
50
+ useEffect(() => {
65
51
  if (!inputValue) {
66
52
  setSuggestions([]);
67
53
  setLoading(false);
68
- return function () {};
54
+ return () => {
55
+ };
69
56
  }
70
- var abortController = new AbortController();
57
+ const abortController = new AbortController();
71
58
  setLoading(true);
72
59
  control.apiParams = {
73
60
  prefAgencies: agencies && agencies.toString(),
74
61
  bbox: bbox && bbox.toString(),
75
62
  field: field && field.toString(),
76
- limit: limit,
63
+ limit,
77
64
  mots: mots && mots.toString(),
78
- radius: radius,
79
- ref_location: refLocation && refLocation.toString(),
65
+ radius,
66
+ ref_location: refLocation && refLocation.toString()
80
67
  };
81
68
  control.search(inputValue, abortController);
82
- return function () {
69
+ return () => {
83
70
  abortController.abort();
84
71
  };
85
72
  }, [
@@ -91,25 +78,21 @@ function StopsFinder(ref) {
91
78
  limit,
92
79
  mots,
93
80
  radius,
94
- refLocation ]);
95
-
96
- // Ensure the control is not associated to the wrong map
97
- useEffect(function () {
81
+ refLocation
82
+ ]);
83
+ useEffect(() => {
98
84
  if (!control) {
99
- return function () {};
85
+ return () => {
86
+ };
100
87
  }
101
-
102
88
  control.map = map;
103
-
104
- return function () {
89
+ return () => {
105
90
  control.map = null;
106
91
  };
107
92
  }, [map, control]);
108
-
109
93
  if (!control) {
110
94
  return null;
111
95
  }
112
-
113
96
  if (renderAutocomplete) {
114
97
  return renderAutocomplete(
115
98
  suggestions,
@@ -121,126 +104,95 @@ function StopsFinder(ref) {
121
104
  setLoading
122
105
  );
123
106
  }
124
- var textFieldProps = Object.assign({}, ((autocompleteProps || {}).textFieldProps || {}));
125
- var autocProps = Object.assign({}, autocompleteProps);
107
+ const textFieldProps = {
108
+ ...(autocompleteProps || {}).textFieldProps || {}
109
+ };
110
+ const autocProps = { ...autocompleteProps };
126
111
  delete autocProps.textFieldProps;
127
-
128
- return (
129
- React.createElement( Autocomplete, Object.assign({},
130
- { fullWidth: true, autoComplete: true, autoHighlight: true, selectOnFocus: true, getOptionLabel: function (option) {
131
- return option.properties.name;
132
- }, onChange: function (evt, value, reason) {
133
- if (onSelect && reason === 'select-option') {
134
- onSelect(value, evt);
112
+ return /* @__PURE__ */ React.createElement(Autocomplete, {
113
+ fullWidth: true,
114
+ autoComplete: true,
115
+ autoHighlight: true,
116
+ selectOnFocus: true,
117
+ getOptionLabel: (option) => {
118
+ return option.properties.name;
119
+ },
120
+ onChange: (evt, value, reason) => {
121
+ if (onSelect && reason === "select-option") {
122
+ onSelect(value, evt);
123
+ }
124
+ },
125
+ popupIcon: /* @__PURE__ */ React.createElement(FaSearch, {
126
+ focusable: false,
127
+ size: 15
128
+ }),
129
+ renderInput: (params) => {
130
+ return /* @__PURE__ */ React.createElement(TextField, {
131
+ label: "Search stops",
132
+ ...{
133
+ ...params,
134
+ ...textFieldProps
135
+ },
136
+ InputProps: {
137
+ ...params.InputProps,
138
+ endAdornment: /* @__PURE__ */ React.createElement(React.Fragment, null, isLoading && /* @__PURE__ */ React.createElement(CircularProgress, {
139
+ size: 20
140
+ }), params.InputProps.endAdornment)
135
141
  }
136
- }, popupIcon: React.createElement( FaSearch, { focusable: false, size: 15 }), renderInput: function (params) {
137
- return (
138
- React.createElement( TextField, Object.assign({},
139
- { label: "Search stops" }, Object.assign({}, params,
140
- textFieldProps), { InputProps: Object.assign({}, params.InputProps,
141
- {endAdornment: (
142
- React.createElement( React.Fragment, null,
143
- isLoading && React.createElement( CircularProgress, { size: 20 }),
144
- params.InputProps.endAdornment
145
- )
146
- )}) }))
147
- );
148
- }, renderOption: function (option) {
149
- return React.createElement( StopsFinderOptions, { option: option });
150
- } }, autocProps, { classes: Object.assign({}, classes, autocompleteProps.classes), inputValue: inputValue, open: isOpen, options: suggestions, loading: isLoading, onOpen: function () {
151
- setOpen(true);
152
- }, onClose: function () {
153
- setOpen(false);
154
- }, onInputChange: function (evt, val) {
155
- setInputValue(val);
156
- } }))
157
- );
142
+ });
143
+ },
144
+ renderOption: (option) => {
145
+ return /* @__PURE__ */ React.createElement(StopsFinderOptions, {
146
+ option
147
+ });
148
+ },
149
+ ...autocProps,
150
+ classes: { ...classes, ...autocompleteProps.classes },
151
+ inputValue,
152
+ open: isOpen,
153
+ options: suggestions,
154
+ loading: isLoading,
155
+ onOpen: () => {
156
+ setOpen(true);
157
+ },
158
+ onClose: () => {
159
+ setOpen(false);
160
+ },
161
+ onInputChange: (evt, val) => {
162
+ setInputValue(val);
163
+ }
164
+ });
158
165
  }
159
-
160
166
  StopsFinder.propTypes = {
161
- /**
162
- * Array or a comma separated list of agencies which should be available.
163
- * Order of these agencies chooses which agency will be preferred.
164
- * Available values : sbb, db
165
- */
166
167
  agencies: PropTypes.oneOfType([
167
168
  PropTypes.string,
168
- PropTypes.arrayOf(PropTypes.string) ]),
169
-
170
- /**
171
- * geOps api key to access the StopsFinder service.
172
- */
169
+ PropTypes.arrayOf(PropTypes.string)
170
+ ]),
173
171
  apiKey: PropTypes.string,
174
-
175
- /**
176
- * Properties apply to the default [MUI Autocomplete component](https://material-ui.com/api/autocomplete/).
177
- * We add a custom properties textFieldProps for the default [MUI TextField component](https://material-ui.com/api/text-field/) used by the Autocomplete.
178
- */
179
172
  autocompleteProps: PropTypes.object,
180
-
181
- /**
182
- * minX,minY,maxX,maxY coordinates in WGS84 wherein the station should lie.
183
- */
184
173
  bbox: PropTypes.oneOfType([
185
174
  PropTypes.string,
186
- PropTypes.arrayOf(PropTypes.number) ]),
187
-
188
- /**
189
- * Array or a comma separated list of fields which should be used for look up.
190
- * Available values : id, name, coords
191
- */
175
+ PropTypes.arrayOf(PropTypes.number)
176
+ ]),
192
177
  field: PropTypes.oneOfType([
193
178
  PropTypes.string,
194
- PropTypes.arrayOf(PropTypes.string) ]),
195
-
196
- /**
197
- * Control how many matches will be returned.
198
- */
179
+ PropTypes.arrayOf(PropTypes.string)
180
+ ]),
199
181
  limit: PropTypes.number,
200
-
201
- /**
202
- * A map.
203
- */
204
182
  map: PropTypes.instanceOf(Map).isRequired,
205
-
206
- /**
207
- * Array or a comma separated list of mode of transpaorts which should be available.
208
- * Available values : bus, ferry, gondola, tram, rail, funicular, cable_car, subway
209
- */
210
183
  mots: PropTypes.oneOfType([
211
184
  PropTypes.string,
212
- PropTypes.arrayOf(PropTypes.string) ]),
213
-
214
- /**
215
- * Function called when a suggestion is selected.
216
- */
185
+ PropTypes.arrayOf(PropTypes.string)
186
+ ]),
217
187
  onSelect: PropTypes.func,
218
-
219
- /**
220
- * Radius around refLocation in meters that is most relevant.
221
- * Used as granularity for location rank.
222
- */
223
188
  radius: PropTypes.number,
224
-
225
- /**
226
- * Coordinates in WGS84 (in lat,lon order) used to rank stops close to this position higher.
227
- * Available values : id, name, coords
228
- */
229
189
  refLocation: PropTypes.oneOfType([
230
190
  PropTypes.string,
231
- PropTypes.arrayOf(PropTypes.number) ]),
232
-
233
- /**
234
- * Function to render a different autocomplete input than the default one.
235
- */
191
+ PropTypes.arrayOf(PropTypes.number)
192
+ ]),
236
193
  renderAutocomplete: PropTypes.func,
237
-
238
- /**
239
- * Url of the geOps StopsFinder service.
240
- */
241
- url: PropTypes.string,
194
+ url: PropTypes.string
242
195
  };
243
-
244
196
  StopsFinder.defaultProps = {
245
197
  agencies: null,
246
198
  apiKey: null,
@@ -253,9 +205,6 @@ StopsFinder.defaultProps = {
253
205
  radius: null,
254
206
  refLocation: null,
255
207
  url: null,
256
- renderAutocomplete: null,
208
+ renderAutocomplete: null
257
209
  };
258
-
259
210
  export default StopsFinder;
260
-
261
- //# sourceMappingURL=StopsFinder.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"StopsFinder.js","sources":["../../../src/components/StopsFinder/StopsFinder.js"],"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 = []) {\n setSuggestions(newSuggestions);\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"],"names":["const"],"mappings":"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"}
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
+ }