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