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.
- package/LayerService.js +128 -184
- package/LayerService.js.map +7 -1
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
- package/components/BaseLayerSwitcher/index.js +1 -3
- package/components/BaseLayerSwitcher/index.js.map +7 -1
- package/components/BasicMap/BasicMap.js +147 -285
- package/components/BasicMap/BasicMap.js.map +7 -1
- package/components/BasicMap/index.js +1 -3
- package/components/BasicMap/index.js.map +7 -1
- package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
- package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
- package/components/CanvasSaveButton/index.js +1 -3
- package/components/CanvasSaveButton/index.js.map +7 -1
- package/components/Copyright/Copyright.js +29 -70
- package/components/Copyright/Copyright.js.map +7 -1
- package/components/Copyright/index.js +1 -3
- package/components/Copyright/index.js.map +7 -1
- package/components/FeatureExportButton/FeatureExportButton.js +40 -106
- package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
- package/components/FeatureExportButton/index.js +1 -3
- package/components/FeatureExportButton/index.js.map +7 -1
- package/components/FilterButton/FilterButton.js +41 -106
- package/components/FilterButton/FilterButton.js.map +7 -1
- package/components/FilterButton/index.js +1 -3
- package/components/FilterButton/index.js.map +7 -1
- package/components/FitExtent/FitExtent.js +17 -50
- package/components/FitExtent/FitExtent.js.map +7 -1
- package/components/FitExtent/index.js +1 -3
- package/components/FitExtent/index.js.map +7 -1
- package/components/FollowButton/FollowButton.js +41 -111
- package/components/FollowButton/FollowButton.js.map +7 -1
- package/components/FollowButton/index.js +1 -3
- package/components/FollowButton/index.js.map +7 -1
- package/components/Geolocation/Geolocation.js +104 -213
- package/components/Geolocation/Geolocation.js.map +7 -1
- package/components/Geolocation/index.js +1 -3
- package/components/Geolocation/index.js.map +7 -1
- package/components/LayerTree/LayerTree.js +204 -410
- package/components/LayerTree/LayerTree.js.map +7 -1
- package/components/LayerTree/index.js +1 -3
- package/components/LayerTree/index.js.map +7 -1
- package/components/MousePosition/MousePosition.js +61 -130
- package/components/MousePosition/MousePosition.js.map +7 -1
- package/components/MousePosition/index.js +1 -3
- package/components/MousePosition/index.js.map +7 -1
- package/components/NorthArrow/NorthArrow.js +22 -62
- package/components/NorthArrow/NorthArrow.js.map +7 -1
- package/components/NorthArrow/index.js +1 -3
- package/components/NorthArrow/index.js.map +7 -1
- package/components/Overlay/Overlay.js +83 -130
- package/components/Overlay/Overlay.js.map +7 -1
- package/components/Overlay/index.js +1 -3
- package/components/Overlay/index.js.map +7 -1
- package/components/Permalink/Permalink.js +150 -244
- package/components/Permalink/Permalink.js.map +7 -1
- package/components/Permalink/index.js +1 -3
- package/components/Permalink/index.js.map +7 -1
- package/components/Popup/Popup.js +106 -233
- package/components/Popup/Popup.js.map +7 -1
- package/components/Popup/index.js +1 -3
- package/components/Popup/index.js.map +7 -1
- package/components/ResizeHandler/ResizeHandler.js +58 -113
- package/components/ResizeHandler/ResizeHandler.js.map +7 -1
- package/components/ResizeHandler/index.js +1 -3
- package/components/ResizeHandler/index.js.map +7 -1
- package/components/RouteSchedule/RouteSchedule.js +150 -283
- package/components/RouteSchedule/RouteSchedule.js.map +7 -1
- package/components/RouteSchedule/index.js +1 -3
- package/components/RouteSchedule/index.js.map +7 -1
- package/components/ScaleLine/ScaleLine.js +21 -45
- package/components/ScaleLine/ScaleLine.js.map +7 -1
- package/components/ScaleLine/index.js +1 -3
- package/components/ScaleLine/index.js.map +7 -1
- package/components/Search/Search.js +122 -186
- package/components/Search/Search.js.map +7 -1
- package/components/Search/SearchService.js +45 -69
- package/components/Search/SearchService.js.map +7 -1
- package/components/Search/engines/Engine.js +18 -25
- package/components/Search/engines/Engine.js.map +7 -1
- package/components/Search/engines/StopFinder.js +21 -38
- package/components/Search/engines/StopFinder.js.map +7 -1
- package/components/Search/index.js +3 -6
- package/components/Search/index.js.map +7 -1
- package/components/StopsFinder/StopsFinder.js +123 -174
- package/components/StopsFinder/StopsFinder.js.map +7 -1
- package/components/StopsFinder/StopsFinderOption.js +37 -54
- package/components/StopsFinder/StopsFinderOption.js.map +7 -1
- package/components/StopsFinder/index.js +1 -3
- package/components/StopsFinder/index.js.map +7 -1
- package/components/TrackerControl/TrackerControl.js +73 -128
- package/components/TrackerControl/TrackerControl.js.map +7 -1
- package/components/TrackerControl/index.js +1 -3
- package/components/TrackerControl/index.js.map +7 -1
- package/components/Zoom/Zoom.js +69 -112
- package/components/Zoom/Zoom.js.map +7 -1
- package/components/Zoom/index.js +1 -3
- package/components/Zoom/index.js.map +7 -1
- package/package.json +10 -5
- package/propTypes.js +17 -23
- package/propTypes.js.map +7 -1
- package/setupTests.js +2 -4
- package/setupTests.js.map +7 -1
- package/themes/README.md +26 -0
- package/themes/default/components.scss +0 -1
- package/themes/default/examples.scss +0 -1
- package/utils/GlobalsForOle.js +63 -64
- package/utils/GlobalsForOle.js.map +7 -1
- package/utils/KML.js +178 -364
- package/utils/KML.js.map +7 -1
- package/utils/KMLFormat.js +37 -73
- package/utils/KMLFormat.js.map +7 -1
- package/utils/Styles.js +24 -32
- package/utils/Styles.js.map +7 -1
- package/utils/getPolygonPattern.js +11 -44
- package/utils/getPolygonPattern.js.map +7 -1
- package/utils/timeUtils.js +16 -35
- package/utils/timeUtils.js.map +7 -1
- package/LayerService.test.js +0 -160
- package/LayerService.test.js.map +0 -1
- package/Projections.js +0 -16
- package/Projections.js.map +0 -1
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
- package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
- package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
- package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
- package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
- package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
- package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
- package/components/BaseLayerToggler/index.js +0 -3
- package/components/BaseLayerToggler/index.js.map +0 -1
- package/components/BasicMap/BasicMap.test.js +0 -288
- package/components/BasicMap/BasicMap.test.js.map +0 -1
- package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
- package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
- package/components/Copyright/Copyright.test.js +0 -133
- package/components/Copyright/Copyright.test.js.map +0 -1
- package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
- package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
- package/components/FilterButton/FilterButton.test.js +0 -48
- package/components/FilterButton/FilterButton.test.js.map +0 -1
- package/components/FitExtent/FitExtent.test.js +0 -44
- package/components/FitExtent/FitExtent.test.js.map +0 -1
- package/components/FollowButton/FollowButton.test.js +0 -57
- package/components/FollowButton/FollowButton.test.js.map +0 -1
- package/components/Geolocation/Geolocation.test.js +0 -263
- package/components/Geolocation/Geolocation.test.js.map +0 -1
- package/components/LayerTree/LayerTree.test.js +0 -323
- package/components/LayerTree/LayerTree.test.js.map +0 -1
- package/components/MousePosition/MousePosition.test.js +0 -125
- package/components/MousePosition/MousePosition.test.js.map +0 -1
- package/components/NorthArrow/NorthArrow.test.js +0 -106
- package/components/NorthArrow/NorthArrow.test.js.map +0 -1
- package/components/Overlay/Overlay.test.js +0 -145
- package/components/Overlay/Overlay.test.js.map +0 -1
- package/components/Permalink/Permalink.test.js +0 -267
- package/components/Permalink/Permalink.test.js.map +0 -1
- package/components/Popup/Popup.test.js +0 -291
- package/components/Popup/Popup.test.js.map +0 -1
- package/components/ResizeHandler/ResizeHandler.test.js +0 -410
- package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
- package/components/RouteSchedule/RouteSchedule.test.js +0 -102
- package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
- package/components/ScaleLine/ScaleLine.test.js +0 -32
- package/components/ScaleLine/ScaleLine.test.js.map +0 -1
- package/components/Search/Search.test.js +0 -15
- package/components/Search/Search.test.js.map +0 -1
- package/components/StopsFinder/StopsFinder.test.js +0 -19
- package/components/StopsFinder/StopsFinder.test.js.map +0 -1
- package/components/TrackerControl/TrackerControl.test.js +0 -17
- package/components/TrackerControl/TrackerControl.test.js.map +0 -1
- package/components/Zoom/Zoom.test.js +0 -150
- package/components/Zoom/Zoom.test.js.map +0 -1
- package/styleguidist/ComponentsList.js +0 -52
- package/styleguidist/ComponentsList.js.map +0 -1
- package/styleguidist/StyleGuide.js +0 -253
- package/styleguidist/StyleGuide.js.map +0 -1
- package/utils/KML.test.js +0 -163
- package/utils/KML.test.js.map +0 -1
- package/utils/KMLFormat.test.js +0 -22
- package/utils/KMLFormat.test.js.map +0 -1
- package/utils/getPolygonPattern.test.js +0 -66
- package/utils/getPolygonPattern.test.js.map +0 -1
- package/utils/timeUtils.test.js +0 -32
- package/utils/timeUtils.test.js.map +0 -1
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
{
|
|
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
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
{
|
|
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
|
|
2
|
-
export { default as StopFinder } from
|
|
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
|
-
{
|
|
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
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { Autocomplete } from
|
|
4
|
-
import { FaSearch } from
|
|
5
|
-
import TextField from
|
|
6
|
-
import CircularProgress from
|
|
7
|
-
import { StopFinderControl } from
|
|
8
|
-
import { Map } from
|
|
9
|
-
import { makeStyles } from
|
|
10
|
-
import StopsFinderOptions from
|
|
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:
|
|
16
|
-
}
|
|
14
|
+
transform: "rotate(0)"
|
|
15
|
+
}
|
|
17
16
|
};
|
|
18
17
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
52
|
-
apiKey
|
|
53
|
-
target: document.createElement(
|
|
54
|
-
element: document.createElement(
|
|
55
|
-
render:
|
|
56
|
-
|
|
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
|
|
54
|
+
return () => {
|
|
55
|
+
};
|
|
69
56
|
}
|
|
70
|
-
|
|
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
|
|
63
|
+
limit,
|
|
77
64
|
mots: mots && mots.toString(),
|
|
78
|
-
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
|
|
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
|
-
|
|
97
|
-
useEffect(function () {
|
|
81
|
+
refLocation
|
|
82
|
+
]);
|
|
83
|
+
useEffect(() => {
|
|
98
84
|
if (!control) {
|
|
99
|
-
return
|
|
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
|
-
|
|
125
|
-
|
|
107
|
+
const textFieldProps = {
|
|
108
|
+
...(autocompleteProps || {}).textFieldProps || {}
|
|
109
|
+
};
|
|
110
|
+
const autocProps = { ...autocompleteProps };
|
|
126
111
|
delete autocProps.textFieldProps;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
+
}
|