react-spatial 1.2.0 → 1.2.3-beta.2
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/Projections.js +29 -12
- package/Projections.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 +207 -397
- 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 +85 -132
- 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 +151 -231
- 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 +60 -115
- 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 +153 -285
- 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 +20 -15
- package/propTypes.js +17 -23
- package/propTypes.js.map +7 -1
- package/setupTests.js +2 -4
- package/setupTests.js.map +7 -1
- 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/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,466 +1,276 @@
|
|
|
1
|
-
import React, { Component } from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*/
|
|
8
|
-
layerService: PropTypes.object,
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* CSS class to apply on the container.
|
|
12
|
-
*/
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { Layer, getLayersAsFlatArray } from "mobility-toolbox-js/ol";
|
|
4
|
+
import { unByKey } from "ol/Observable";
|
|
5
|
+
const propTypes = {
|
|
6
|
+
layers: PropTypes.arrayOf(Layer),
|
|
13
7
|
className: PropTypes.string,
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Padding left to apply on each level.
|
|
17
|
-
*/
|
|
18
8
|
padding: PropTypes.number,
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Determine if the item is hidden in the tree or not.
|
|
22
|
-
*
|
|
23
|
-
* @param {object} item The item to hide or not.
|
|
24
|
-
*
|
|
25
|
-
* @return {bool} true if the item is not displayed in the tree
|
|
26
|
-
*/
|
|
27
9
|
isItemHidden: PropTypes.func,
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Determine the className used by the div containing the parent and its children.
|
|
31
|
-
*/
|
|
32
10
|
getParentClassName: PropTypes.func,
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Custom function to render an item in the tree.
|
|
36
|
-
*
|
|
37
|
-
* @param {object} item The item to render.
|
|
38
|
-
*
|
|
39
|
-
* @return {node} A jsx node.
|
|
40
|
-
*/
|
|
41
11
|
renderItem: PropTypes.func,
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Custom function to render only the content of an item in the tree.
|
|
45
|
-
*
|
|
46
|
-
* @param {object} item The item to render.
|
|
47
|
-
*
|
|
48
|
-
* @return {node} A jsx node.
|
|
49
|
-
*/
|
|
50
12
|
renderItemContent: PropTypes.func,
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Custom function to render custom content before the list of children of an item.
|
|
54
|
-
*
|
|
55
|
-
* @param {object} item The item to render.
|
|
56
|
-
*
|
|
57
|
-
* @return {node} A jsx node.
|
|
58
|
-
*/
|
|
59
13
|
renderBeforeItem: PropTypes.func,
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Custom function to render custom content after the list of children of an item.
|
|
63
|
-
*
|
|
64
|
-
* @param {object} item The item to render.
|
|
65
|
-
*
|
|
66
|
-
* @return {node} A jsx node.
|
|
67
|
-
*/
|
|
68
14
|
renderAfterItem: PropTypes.func,
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Object holding title for the layer tree's buttons.
|
|
72
|
-
*/
|
|
15
|
+
renderLabel: PropTypes.func,
|
|
73
16
|
titles: PropTypes.shape({
|
|
74
|
-
/**
|
|
75
|
-
* aria-label on checkbox to show layer.
|
|
76
|
-
*/
|
|
77
17
|
layerShow: PropTypes.string,
|
|
78
|
-
/**
|
|
79
|
-
* aria-label on checkbox to hide layer.
|
|
80
|
-
*/
|
|
81
18
|
layerHide: PropTypes.string,
|
|
82
|
-
/**
|
|
83
|
-
* title on button to show sublayers.
|
|
84
|
-
*/
|
|
85
19
|
subLayerShow: PropTypes.string,
|
|
86
|
-
|
|
87
|
-
* title on button to show sublayers.
|
|
88
|
-
*/
|
|
89
|
-
subLayerHide: PropTypes.string,
|
|
20
|
+
subLayerHide: PropTypes.string
|
|
90
21
|
}),
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Boolean determining whether children collapse/expand when their parent is toggled
|
|
94
|
-
* @param {...(boolean|function)} expandChildren Boolean or function returning a boolean.
|
|
95
|
-
* @return {boolean} True or false
|
|
96
|
-
*/
|
|
97
22
|
expandChildren: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Translation function.
|
|
101
|
-
* @param {function} Translation function returning the translated string.
|
|
102
|
-
*/
|
|
103
|
-
t: PropTypes.func,
|
|
23
|
+
t: PropTypes.func
|
|
104
24
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
className: 'rs-layer-tree',
|
|
25
|
+
const defaultProps = {
|
|
26
|
+
layers: [],
|
|
27
|
+
className: "rs-layer-tree",
|
|
109
28
|
padding: 30,
|
|
110
|
-
isItemHidden:
|
|
29
|
+
isItemHidden: () => {
|
|
111
30
|
return false;
|
|
112
31
|
},
|
|
113
|
-
getParentClassName:
|
|
114
|
-
return
|
|
32
|
+
getParentClassName: () => {
|
|
33
|
+
return void 0;
|
|
115
34
|
},
|
|
116
35
|
renderItem: null,
|
|
117
36
|
renderItemContent: null,
|
|
118
37
|
renderBeforeItem: null,
|
|
119
38
|
renderAfterItem: null,
|
|
39
|
+
renderLabel: (layer, layerComp) => {
|
|
40
|
+
const { t } = layerComp.props;
|
|
41
|
+
return t(layer.name);
|
|
42
|
+
},
|
|
120
43
|
titles: {
|
|
121
|
-
layerShow:
|
|
122
|
-
layerHide:
|
|
123
|
-
subLayerShow:
|
|
124
|
-
subLayerHide:
|
|
44
|
+
layerShow: "Show layer",
|
|
45
|
+
layerHide: "Hide layer",
|
|
46
|
+
subLayerShow: "Show sublayer",
|
|
47
|
+
subLayerHide: "Hide sublayer"
|
|
125
48
|
},
|
|
126
|
-
t:
|
|
49
|
+
t: (s) => {
|
|
127
50
|
return s;
|
|
128
51
|
},
|
|
129
|
-
expandChildren: false
|
|
52
|
+
expandChildren: false
|
|
130
53
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var initialExpandedLayers =
|
|
145
|
-
layerService && layerService.getLayers()
|
|
146
|
-
? this.getExpandedLayers(
|
|
147
|
-
layerService.getLayers().filter(function (l) {
|
|
148
|
-
return (
|
|
149
|
-
!isItemHidden(l) &&
|
|
150
|
-
l.getVisibleChildren().filter(function (c) {
|
|
151
|
-
return !isItemHidden(c);
|
|
152
|
-
}).length
|
|
153
|
-
);
|
|
154
|
-
})
|
|
155
|
-
)
|
|
156
|
-
: [];
|
|
157
|
-
|
|
54
|
+
class LayerTree extends Component {
|
|
55
|
+
constructor(props) {
|
|
56
|
+
super(props);
|
|
57
|
+
const { layers, isItemHidden } = this.props;
|
|
58
|
+
const initialExpandedLayers = layers ? this.getExpandedLayers(
|
|
59
|
+
layers.filter((l) => {
|
|
60
|
+
return !isItemHidden(l) && (l.children || []).filter((child) => {
|
|
61
|
+
return child.visible;
|
|
62
|
+
}).filter((c) => {
|
|
63
|
+
return !isItemHidden(c);
|
|
64
|
+
}).length;
|
|
65
|
+
})
|
|
66
|
+
) : [];
|
|
158
67
|
this.state = {
|
|
159
|
-
|
|
68
|
+
rootLayer: new Layer(),
|
|
160
69
|
expandedLayers: initialExpandedLayers,
|
|
70
|
+
revision: 0
|
|
161
71
|
};
|
|
162
|
-
this.updateLayers = this.updateLayers.bind(this);
|
|
163
72
|
this.olKeys = [];
|
|
164
73
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
LayerTree.prototype.componentDidUpdate = function componentDidUpdate (prevProps) {
|
|
175
|
-
var ref = this.props;
|
|
176
|
-
var layerService = ref.layerService;
|
|
177
|
-
|
|
178
|
-
if (layerService !== prevProps.layerService) {
|
|
179
|
-
this.updateLayerService();
|
|
74
|
+
componentDidMount() {
|
|
75
|
+
this.updateLayers();
|
|
76
|
+
}
|
|
77
|
+
componentDidUpdate(prevProps) {
|
|
78
|
+
const { layers } = this.props;
|
|
79
|
+
if (layers !== prevProps.layers) {
|
|
80
|
+
this.updateLayers();
|
|
180
81
|
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
LayerTree.prototype.onInputClick = function onInputClick (layer, toggle) {
|
|
190
|
-
if ( toggle === void 0 ) toggle = false;
|
|
191
|
-
|
|
82
|
+
}
|
|
83
|
+
componentWillUnmount() {
|
|
84
|
+
unByKey(this.olKeys);
|
|
85
|
+
this.olKeys = [];
|
|
86
|
+
}
|
|
87
|
+
onInputClick(layer, toggle = false) {
|
|
192
88
|
if (toggle) {
|
|
193
89
|
this.onToggle(layer);
|
|
194
|
-
} else {
|
|
90
|
+
} else if (layer.setVisible) {
|
|
195
91
|
layer.setVisible(!layer.visible);
|
|
92
|
+
} else {
|
|
93
|
+
layer.visible = !layer.visible;
|
|
196
94
|
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
var expandedLayers = ref.expandedLayers;
|
|
202
|
-
var pos = expandedLayers.indexOf(layer);
|
|
95
|
+
}
|
|
96
|
+
onToggle(layer) {
|
|
97
|
+
const { expandedLayers } = this.state;
|
|
98
|
+
const pos = expandedLayers.indexOf(layer);
|
|
203
99
|
if (pos > -1) {
|
|
204
100
|
expandedLayers.splice(pos, 1);
|
|
205
101
|
} else {
|
|
206
|
-
expandedLayers.push
|
|
102
|
+
expandedLayers.push(...this.getExpandedLayers([layer]));
|
|
207
103
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
*
|
|
216
|
-
* @param {Layer} layers Initially expanded layers
|
|
217
|
-
* @return {Array.<Layer>} Initially expanded layers and all its always expanded ancestors
|
|
218
|
-
*/
|
|
219
|
-
LayerTree.prototype.getExpandedLayers = function getExpandedLayers (layers) {
|
|
220
|
-
var ref = this.props;
|
|
221
|
-
var isItemHidden = ref.isItemHidden;
|
|
222
|
-
var children = layers.flatMap(function (l) {
|
|
223
|
-
return l.children.filter(function (c) {
|
|
224
|
-
return !isItemHidden(c) && c.get('isAlwaysExpanded');
|
|
104
|
+
this.setState({ expandedLayers });
|
|
105
|
+
}
|
|
106
|
+
getExpandedLayers(layers) {
|
|
107
|
+
const { isItemHidden } = this.props;
|
|
108
|
+
const children = layers.flatMap((l) => {
|
|
109
|
+
return l.children.filter((c) => {
|
|
110
|
+
return !isItemHidden(c) && c.get("isAlwaysExpanded");
|
|
225
111
|
});
|
|
226
112
|
});
|
|
227
|
-
|
|
228
113
|
if (!children.length) {
|
|
229
114
|
return layers;
|
|
230
115
|
}
|
|
231
|
-
return layers
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
116
|
+
return [...layers, this.getExpandedLayers(children)].flat();
|
|
117
|
+
}
|
|
118
|
+
updateLayers() {
|
|
119
|
+
const { layers, expandChildren } = this.props;
|
|
120
|
+
let rootLayer = new Layer();
|
|
121
|
+
if (Array.isArray(layers)) {
|
|
122
|
+
if (layers.length === 1) {
|
|
123
|
+
[rootLayer] = layers;
|
|
124
|
+
}
|
|
125
|
+
rootLayer = new Layer({ children: layers });
|
|
126
|
+
} else {
|
|
127
|
+
rootLayer = layers;
|
|
241
128
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
: expandChildren
|
|
255
|
-
) {
|
|
256
|
-
this.setState({
|
|
257
|
-
expandedLayers: layers.flatMap(function (l) {
|
|
258
|
-
return this$1.expandLayer(l);
|
|
259
|
-
}),
|
|
129
|
+
getLayersAsFlatArray(rootLayer).forEach((layer) => {
|
|
130
|
+
this.olKeys.push(
|
|
131
|
+
layer.on("propertychange", (evt) => {
|
|
132
|
+
const { revision } = this.state;
|
|
133
|
+
this.setState({ revision: revision + 1 });
|
|
134
|
+
})
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
const state = { rootLayer };
|
|
138
|
+
if (typeof expandChildren === "function" ? expandChildren(layers) : expandChildren) {
|
|
139
|
+
state.expandedLayers = rootLayer.children.flatMap((l) => {
|
|
140
|
+
return this.expandLayer(l);
|
|
260
141
|
});
|
|
261
142
|
}
|
|
262
|
-
this.setState(
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
LayerTree.prototype.expandLayer = function expandLayer (layer, expLayers) {
|
|
268
|
-
var this$1 = this;
|
|
269
|
-
if ( expLayers === void 0 ) expLayers = [];
|
|
270
|
-
|
|
271
|
-
var ref = this.props;
|
|
272
|
-
var isItemHidden = ref.isItemHidden;
|
|
143
|
+
this.setState(state);
|
|
144
|
+
}
|
|
145
|
+
expandLayer(layer, expLayers = []) {
|
|
146
|
+
const { isItemHidden } = this.props;
|
|
273
147
|
if (layer.visible && !isItemHidden(layer)) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
});
|
|
281
|
-
return expLayers.concat( children, [layer]);
|
|
148
|
+
const children = layer.children.filter((c) => {
|
|
149
|
+
return !isItemHidden(c) && !c.get("isAlwaysExpanded");
|
|
150
|
+
}).flatMap((c) => {
|
|
151
|
+
return this.expandLayer(c, expLayers);
|
|
152
|
+
});
|
|
153
|
+
return [...expLayers, ...children, layer];
|
|
282
154
|
}
|
|
283
155
|
return expLayers;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
var isItemHidden = ref.isItemHidden;
|
|
292
|
-
var tabIndex = 0;
|
|
293
|
-
|
|
294
|
-
if (
|
|
295
|
-
!layer.children.filter(function (c) {
|
|
296
|
-
return !isItemHidden(c);
|
|
297
|
-
}).length
|
|
298
|
-
) {
|
|
299
|
-
// We forbid focus on keypress event for first level layers and layers without children.
|
|
156
|
+
}
|
|
157
|
+
renderInput(layer) {
|
|
158
|
+
const { titles, isItemHidden } = this.props;
|
|
159
|
+
let tabIndex = 0;
|
|
160
|
+
if (!(layer.children || []).filter((c) => {
|
|
161
|
+
return !isItemHidden(c);
|
|
162
|
+
}).length) {
|
|
300
163
|
tabIndex = -1;
|
|
301
164
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
return !isItemHidden(c);
|
|
330
|
-
}).length ||
|
|
331
|
-
layer.get('isAlwaysExpanded')
|
|
332
|
-
) {
|
|
165
|
+
const inputType = layer.get("group") ? "radio" : "checkbox";
|
|
166
|
+
return /* @__PURE__ */ React.createElement("label", {
|
|
167
|
+
className: `rs-layer-tree-input rs-layer-tree-input-${inputType} rs-${inputType}`,
|
|
168
|
+
tabIndex,
|
|
169
|
+
title: layer.visible ? titles.layerHide : titles.layerShow,
|
|
170
|
+
"aria-label": layer.visible ? titles.layerHide : titles.layerShow,
|
|
171
|
+
onKeyPress: (e) => {
|
|
172
|
+
if (e.which === 13) {
|
|
173
|
+
this.onInputClick(layer);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}, /* @__PURE__ */ React.createElement("input", {
|
|
177
|
+
type: inputType,
|
|
178
|
+
tabIndex: -1,
|
|
179
|
+
checked: layer.visible,
|
|
180
|
+
readOnly: true,
|
|
181
|
+
onClick: () => {
|
|
182
|
+
return this.onInputClick(layer);
|
|
183
|
+
}
|
|
184
|
+
}), /* @__PURE__ */ React.createElement("span", null));
|
|
185
|
+
}
|
|
186
|
+
renderArrow(layer) {
|
|
187
|
+
const { isItemHidden } = this.props;
|
|
188
|
+
const { expandedLayers } = this.state;
|
|
189
|
+
if (!(layer.children || []).filter((c) => {
|
|
190
|
+
return !isItemHidden(c);
|
|
191
|
+
}).length || layer.get("isAlwaysExpanded")) {
|
|
333
192
|
return null;
|
|
334
193
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
LayerTree.prototype.renderToggleButton = function renderToggleButton (layer) {
|
|
345
|
-
var this$1 = this;
|
|
346
|
-
|
|
347
|
-
var ref = this.props;
|
|
348
|
-
var t = ref.t;
|
|
349
|
-
var titles = ref.titles;
|
|
350
|
-
var isItemHidden = ref.isItemHidden;
|
|
351
|
-
var ref$1 = this.state;
|
|
352
|
-
var expandedLayers = ref$1.expandedLayers;
|
|
353
|
-
var onInputClick = function () {
|
|
354
|
-
this$1.onInputClick(
|
|
194
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
195
|
+
className: `rs-layer-tree-arrow rs-layer-tree-arrow-${!expandedLayers.includes(layer) ? "collapsed" : "expanded"}`
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
renderToggleButton(layer) {
|
|
199
|
+
const { t, titles, isItemHidden, renderLabel } = this.props;
|
|
200
|
+
const { expandedLayers } = this.state;
|
|
201
|
+
const onInputClick = () => {
|
|
202
|
+
this.onInputClick(
|
|
355
203
|
layer,
|
|
356
|
-
layer.children.filter(
|
|
204
|
+
(layer.children || []).filter((c) => {
|
|
357
205
|
return !isItemHidden(c);
|
|
358
|
-
}).length && !layer.get(
|
|
206
|
+
}).length && !layer.get("isAlwaysExpanded")
|
|
359
207
|
);
|
|
360
208
|
};
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
return (
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
var padding = ref$1.padding;
|
|
393
|
-
var getParentClassName = ref$1.getParentClassName;
|
|
394
|
-
var ref$2 = this.state;
|
|
395
|
-
var expandedLayers = ref$2.expandedLayers;
|
|
396
|
-
|
|
397
|
-
var children = expandedLayers.includes(layer)
|
|
398
|
-
? [].concat( layer.children.filter(function (c) {
|
|
399
|
-
return !isItemHidden(c);
|
|
400
|
-
}) )
|
|
401
|
-
: [];
|
|
402
|
-
|
|
209
|
+
const title = `${t(layer.name)} ${expandedLayers.includes(layer) ? titles.subLayerHide : titles.subLayerShow}`;
|
|
210
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
211
|
+
role: "button",
|
|
212
|
+
tabIndex: 0,
|
|
213
|
+
className: "rs-layer-tree-toggle",
|
|
214
|
+
title,
|
|
215
|
+
"aria-expanded": expandedLayers.includes(layer),
|
|
216
|
+
"aria-label": title,
|
|
217
|
+
onClick: onInputClick,
|
|
218
|
+
onKeyPress: onInputClick
|
|
219
|
+
}, /* @__PURE__ */ React.createElement("div", null, renderLabel(layer, this)), this.renderArrow(layer));
|
|
220
|
+
}
|
|
221
|
+
renderItemContent(layer) {
|
|
222
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, this.renderInput(layer), this.renderToggleButton(layer));
|
|
223
|
+
}
|
|
224
|
+
renderItem(layer, level) {
|
|
225
|
+
const { isItemHidden } = this.props;
|
|
226
|
+
const { expandedLayers } = this.state;
|
|
227
|
+
const {
|
|
228
|
+
renderItem,
|
|
229
|
+
renderItemContent,
|
|
230
|
+
renderBeforeItem,
|
|
231
|
+
renderAfterItem,
|
|
232
|
+
padding,
|
|
233
|
+
getParentClassName
|
|
234
|
+
} = this.props;
|
|
235
|
+
const children = expandedLayers.includes(layer) ? [
|
|
236
|
+
...(layer.children || []).filter((c) => {
|
|
237
|
+
return !isItemHidden(c);
|
|
238
|
+
})
|
|
239
|
+
] : [];
|
|
403
240
|
if (renderItem) {
|
|
404
241
|
return renderItem(layer, this.onInputClick, this.onToggle);
|
|
405
242
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
)
|
|
423
|
-
);
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
LayerTree.prototype.renderTree = function renderTree () {
|
|
427
|
-
var this$1 = this;
|
|
428
|
-
|
|
429
|
-
var ref = this.props;
|
|
430
|
-
var isItemHidden = ref.isItemHidden;
|
|
431
|
-
var ref$1 = this.state;
|
|
432
|
-
var layers = ref$1.layers;
|
|
433
|
-
|
|
434
|
-
if (!layers) {
|
|
243
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
244
|
+
className: getParentClassName(),
|
|
245
|
+
key: layer.key
|
|
246
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
247
|
+
className: `rs-layer-tree-item ${layer.visible ? "rs-visible" : ""}`,
|
|
248
|
+
style: {
|
|
249
|
+
paddingLeft: `${padding * level}px`
|
|
250
|
+
}
|
|
251
|
+
}, renderItemContent ? renderItemContent(layer, this) : this.renderItemContent(layer)), renderBeforeItem && renderBeforeItem(layer, level, this), [...children].reverse().map((child) => {
|
|
252
|
+
return this.renderItem(child, level + 1);
|
|
253
|
+
}), renderAfterItem && renderAfterItem(layer, level, this));
|
|
254
|
+
}
|
|
255
|
+
renderTree() {
|
|
256
|
+
const { isItemHidden } = this.props;
|
|
257
|
+
const { rootLayer } = this.state;
|
|
258
|
+
if (!rootLayer?.children?.length) {
|
|
435
259
|
return null;
|
|
436
260
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
};
|
|
451
|
-
|
|
452
|
-
LayerTree.prototype.render = function render () {
|
|
453
|
-
var ref = this.props;
|
|
454
|
-
var className = ref.className;
|
|
455
|
-
return React.createElement( 'div', { className: className }, this.renderTree());
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
return LayerTree;
|
|
459
|
-
}(Component));
|
|
460
|
-
|
|
261
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, rootLayer.children.filter((l) => {
|
|
262
|
+
return !isItemHidden(l);
|
|
263
|
+
}).reverse().map((l) => {
|
|
264
|
+
return this.renderItem(l, 0);
|
|
265
|
+
}));
|
|
266
|
+
}
|
|
267
|
+
render() {
|
|
268
|
+
const { className } = this.props;
|
|
269
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
270
|
+
className
|
|
271
|
+
}, this.renderTree());
|
|
272
|
+
}
|
|
273
|
+
}
|
|
461
274
|
LayerTree.propTypes = propTypes;
|
|
462
275
|
LayerTree.defaultProps = defaultProps;
|
|
463
|
-
|
|
464
276
|
export default LayerTree;
|
|
465
|
-
|
|
466
|
-
//# sourceMappingURL=LayerTree.js.map
|