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.
Files changed (185) hide show
  1. package/LayerService.js +128 -184
  2. package/LayerService.js.map +7 -1
  3. package/Projections.js +29 -12
  4. package/Projections.js.map +7 -1
  5. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
  6. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
  7. package/components/BaseLayerSwitcher/index.js +1 -3
  8. package/components/BaseLayerSwitcher/index.js.map +7 -1
  9. package/components/BasicMap/BasicMap.js +147 -285
  10. package/components/BasicMap/BasicMap.js.map +7 -1
  11. package/components/BasicMap/index.js +1 -3
  12. package/components/BasicMap/index.js.map +7 -1
  13. package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
  14. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
  15. package/components/CanvasSaveButton/index.js +1 -3
  16. package/components/CanvasSaveButton/index.js.map +7 -1
  17. package/components/Copyright/Copyright.js +29 -70
  18. package/components/Copyright/Copyright.js.map +7 -1
  19. package/components/Copyright/index.js +1 -3
  20. package/components/Copyright/index.js.map +7 -1
  21. package/components/FeatureExportButton/FeatureExportButton.js +40 -106
  22. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
  23. package/components/FeatureExportButton/index.js +1 -3
  24. package/components/FeatureExportButton/index.js.map +7 -1
  25. package/components/FilterButton/FilterButton.js +41 -106
  26. package/components/FilterButton/FilterButton.js.map +7 -1
  27. package/components/FilterButton/index.js +1 -3
  28. package/components/FilterButton/index.js.map +7 -1
  29. package/components/FitExtent/FitExtent.js +17 -50
  30. package/components/FitExtent/FitExtent.js.map +7 -1
  31. package/components/FitExtent/index.js +1 -3
  32. package/components/FitExtent/index.js.map +7 -1
  33. package/components/FollowButton/FollowButton.js +41 -111
  34. package/components/FollowButton/FollowButton.js.map +7 -1
  35. package/components/FollowButton/index.js +1 -3
  36. package/components/FollowButton/index.js.map +7 -1
  37. package/components/Geolocation/Geolocation.js +104 -213
  38. package/components/Geolocation/Geolocation.js.map +7 -1
  39. package/components/Geolocation/index.js +1 -3
  40. package/components/Geolocation/index.js.map +7 -1
  41. package/components/LayerTree/LayerTree.js +207 -397
  42. package/components/LayerTree/LayerTree.js.map +7 -1
  43. package/components/LayerTree/index.js +1 -3
  44. package/components/LayerTree/index.js.map +7 -1
  45. package/components/MousePosition/MousePosition.js +61 -130
  46. package/components/MousePosition/MousePosition.js.map +7 -1
  47. package/components/MousePosition/index.js +1 -3
  48. package/components/MousePosition/index.js.map +7 -1
  49. package/components/NorthArrow/NorthArrow.js +22 -62
  50. package/components/NorthArrow/NorthArrow.js.map +7 -1
  51. package/components/NorthArrow/index.js +1 -3
  52. package/components/NorthArrow/index.js.map +7 -1
  53. package/components/Overlay/Overlay.js +85 -132
  54. package/components/Overlay/Overlay.js.map +7 -1
  55. package/components/Overlay/index.js +1 -3
  56. package/components/Overlay/index.js.map +7 -1
  57. package/components/Permalink/Permalink.js +151 -231
  58. package/components/Permalink/Permalink.js.map +7 -1
  59. package/components/Permalink/index.js +1 -3
  60. package/components/Permalink/index.js.map +7 -1
  61. package/components/Popup/Popup.js +106 -233
  62. package/components/Popup/Popup.js.map +7 -1
  63. package/components/Popup/index.js +1 -3
  64. package/components/Popup/index.js.map +7 -1
  65. package/components/ResizeHandler/ResizeHandler.js +60 -115
  66. package/components/ResizeHandler/ResizeHandler.js.map +7 -1
  67. package/components/ResizeHandler/index.js +1 -3
  68. package/components/ResizeHandler/index.js.map +7 -1
  69. package/components/RouteSchedule/RouteSchedule.js +153 -285
  70. package/components/RouteSchedule/RouteSchedule.js.map +7 -1
  71. package/components/RouteSchedule/index.js +1 -3
  72. package/components/RouteSchedule/index.js.map +7 -1
  73. package/components/ScaleLine/ScaleLine.js +21 -45
  74. package/components/ScaleLine/ScaleLine.js.map +7 -1
  75. package/components/ScaleLine/index.js +1 -3
  76. package/components/ScaleLine/index.js.map +7 -1
  77. package/components/Search/Search.js +122 -186
  78. package/components/Search/Search.js.map +7 -1
  79. package/components/Search/SearchService.js +45 -69
  80. package/components/Search/SearchService.js.map +7 -1
  81. package/components/Search/engines/Engine.js +18 -25
  82. package/components/Search/engines/Engine.js.map +7 -1
  83. package/components/Search/engines/StopFinder.js +21 -38
  84. package/components/Search/engines/StopFinder.js.map +7 -1
  85. package/components/Search/index.js +3 -6
  86. package/components/Search/index.js.map +7 -1
  87. package/components/StopsFinder/StopsFinder.js +123 -174
  88. package/components/StopsFinder/StopsFinder.js.map +7 -1
  89. package/components/StopsFinder/StopsFinderOption.js +37 -54
  90. package/components/StopsFinder/StopsFinderOption.js.map +7 -1
  91. package/components/StopsFinder/index.js +1 -3
  92. package/components/StopsFinder/index.js.map +7 -1
  93. package/components/TrackerControl/TrackerControl.js +73 -128
  94. package/components/TrackerControl/TrackerControl.js.map +7 -1
  95. package/components/TrackerControl/index.js +1 -3
  96. package/components/TrackerControl/index.js.map +7 -1
  97. package/components/Zoom/Zoom.js +69 -112
  98. package/components/Zoom/Zoom.js.map +7 -1
  99. package/components/Zoom/index.js +1 -3
  100. package/components/Zoom/index.js.map +7 -1
  101. package/package.json +20 -15
  102. package/propTypes.js +17 -23
  103. package/propTypes.js.map +7 -1
  104. package/setupTests.js +2 -4
  105. package/setupTests.js.map +7 -1
  106. package/themes/default/components.scss +0 -1
  107. package/themes/default/examples.scss +0 -1
  108. package/utils/GlobalsForOle.js +63 -64
  109. package/utils/GlobalsForOle.js.map +7 -1
  110. package/utils/KML.js +178 -364
  111. package/utils/KML.js.map +7 -1
  112. package/utils/KMLFormat.js +37 -73
  113. package/utils/KMLFormat.js.map +7 -1
  114. package/utils/Styles.js +24 -32
  115. package/utils/Styles.js.map +7 -1
  116. package/utils/getPolygonPattern.js +11 -44
  117. package/utils/getPolygonPattern.js.map +7 -1
  118. package/utils/timeUtils.js +16 -35
  119. package/utils/timeUtils.js.map +7 -1
  120. package/LayerService.test.js +0 -160
  121. package/LayerService.test.js.map +0 -1
  122. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
  123. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
  124. package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
  125. package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
  126. package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
  127. package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
  128. package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
  129. package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
  130. package/components/BaseLayerToggler/index.js +0 -3
  131. package/components/BaseLayerToggler/index.js.map +0 -1
  132. package/components/BasicMap/BasicMap.test.js +0 -288
  133. package/components/BasicMap/BasicMap.test.js.map +0 -1
  134. package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
  135. package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
  136. package/components/Copyright/Copyright.test.js +0 -133
  137. package/components/Copyright/Copyright.test.js.map +0 -1
  138. package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
  139. package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
  140. package/components/FilterButton/FilterButton.test.js +0 -48
  141. package/components/FilterButton/FilterButton.test.js.map +0 -1
  142. package/components/FitExtent/FitExtent.test.js +0 -44
  143. package/components/FitExtent/FitExtent.test.js.map +0 -1
  144. package/components/FollowButton/FollowButton.test.js +0 -57
  145. package/components/FollowButton/FollowButton.test.js.map +0 -1
  146. package/components/Geolocation/Geolocation.test.js +0 -263
  147. package/components/Geolocation/Geolocation.test.js.map +0 -1
  148. package/components/LayerTree/LayerTree.test.js +0 -323
  149. package/components/LayerTree/LayerTree.test.js.map +0 -1
  150. package/components/MousePosition/MousePosition.test.js +0 -125
  151. package/components/MousePosition/MousePosition.test.js.map +0 -1
  152. package/components/NorthArrow/NorthArrow.test.js +0 -106
  153. package/components/NorthArrow/NorthArrow.test.js.map +0 -1
  154. package/components/Overlay/Overlay.test.js +0 -145
  155. package/components/Overlay/Overlay.test.js.map +0 -1
  156. package/components/Permalink/Permalink.test.js +0 -267
  157. package/components/Permalink/Permalink.test.js.map +0 -1
  158. package/components/Popup/Popup.test.js +0 -291
  159. package/components/Popup/Popup.test.js.map +0 -1
  160. package/components/ResizeHandler/ResizeHandler.test.js +0 -410
  161. package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
  162. package/components/RouteSchedule/RouteSchedule.test.js +0 -102
  163. package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
  164. package/components/ScaleLine/ScaleLine.test.js +0 -32
  165. package/components/ScaleLine/ScaleLine.test.js.map +0 -1
  166. package/components/Search/Search.test.js +0 -15
  167. package/components/Search/Search.test.js.map +0 -1
  168. package/components/StopsFinder/StopsFinder.test.js +0 -19
  169. package/components/StopsFinder/StopsFinder.test.js.map +0 -1
  170. package/components/TrackerControl/TrackerControl.test.js +0 -17
  171. package/components/TrackerControl/TrackerControl.test.js.map +0 -1
  172. package/components/Zoom/Zoom.test.js +0 -150
  173. package/components/Zoom/Zoom.test.js.map +0 -1
  174. package/styleguidist/ComponentsList.js +0 -52
  175. package/styleguidist/ComponentsList.js.map +0 -1
  176. package/styleguidist/StyleGuide.js +0 -253
  177. package/styleguidist/StyleGuide.js.map +0 -1
  178. package/utils/KML.test.js +0 -163
  179. package/utils/KML.test.js.map +0 -1
  180. package/utils/KMLFormat.test.js +0 -22
  181. package/utils/KMLFormat.test.js.map +0 -1
  182. package/utils/getPolygonPattern.test.js +0 -66
  183. package/utils/getPolygonPattern.test.js.map +0 -1
  184. package/utils/timeUtils.test.js +0 -32
  185. package/utils/timeUtils.test.js.map +0 -1
@@ -1,466 +1,276 @@
1
- import React, { Component } from 'react';
2
- import PropTypes from 'prop-types';
3
-
4
- var propTypes = {
5
- /**
6
- * Layers provider.
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
- var defaultProps = {
107
- layerService: undefined,
108
- className: 'rs-layer-tree',
25
+ const defaultProps = {
26
+ layers: [],
27
+ className: "rs-layer-tree",
109
28
  padding: 30,
110
- isItemHidden: function () {
29
+ isItemHidden: () => {
111
30
  return false;
112
31
  },
113
- getParentClassName: function () {
114
- return undefined;
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: 'Show layer',
122
- layerHide: 'Hide layer',
123
- subLayerShow: 'Show sublayer',
124
- subLayerHide: 'Hide sublayer',
44
+ layerShow: "Show layer",
45
+ layerHide: "Hide layer",
46
+ subLayerShow: "Show sublayer",
47
+ subLayerHide: "Hide sublayer"
125
48
  },
126
- t: function (s) {
49
+ t: (s) => {
127
50
  return s;
128
51
  },
129
- expandChildren: false,
52
+ expandChildren: false
130
53
  };
131
-
132
- /**
133
- * The LayerTree component renders an interface for toggling
134
- * [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers)
135
- * and their corresponding child layers.
136
- */
137
-
138
- var LayerTree = /*@__PURE__*/(function (Component) {
139
- function LayerTree(props) {
140
- Component.call(this, props);
141
- var ref = this.props;
142
- var layerService = ref.layerService;
143
- var isItemHidden = ref.isItemHidden;
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
- layers: layerService ? layerService.getLayers() : [],
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
- if ( Component ) LayerTree.__proto__ = Component;
167
- LayerTree.prototype = Object.create( Component && Component.prototype );
168
- LayerTree.prototype.constructor = LayerTree;
169
-
170
- LayerTree.prototype.componentDidMount = function componentDidMount () {
171
- this.updateLayerService();
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
- LayerTree.prototype.componentWillUnmount = function componentWillUnmount () {
184
- var ref = this.props;
185
- var layerService = ref.layerService;
186
- layerService.un('change:visible', this.updateLayers);
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
- LayerTree.prototype.onToggle = function onToggle (layer) {
200
- var ref = this.state;
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.apply(expandedLayers, this.getExpandedLayers([layer]));
102
+ expandedLayers.push(...this.getExpandedLayers([layer]));
207
103
  }
208
-
209
- this.setState({ expandedLayers: expandedLayers });
210
- };
211
-
212
- /**
213
- * Get the always expanded ancestors (isAlwaysExpanded=true) of the given layers
214
- * together with the (given) initially expanded layers
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.concat( [this.getExpandedLayers(children)]).flat();
232
- };
233
-
234
- LayerTree.prototype.updateLayerService = function updateLayerService () {
235
- var ref = this.props;
236
- var layerService = ref.layerService;
237
- if (layerService) {
238
- layerService.un('change:visible', this.updateLayers);
239
- this.updateLayers();
240
- layerService.on('change:visible', this.updateLayers);
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
- LayerTree.prototype.updateLayers = function updateLayers () {
245
- var this$1 = this;
246
-
247
- var ref = this.props;
248
- var layerService = ref.layerService;
249
- var expandChildren = ref.expandChildren;
250
- var layers = layerService.getLayers();
251
- if (
252
- typeof expandChildren === 'function'
253
- ? expandChildren(layers)
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
- layers: layers,
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
- var children = layer.children
275
- .filter(function (c) {
276
- return !isItemHidden(c) && !c.get('isAlwaysExpanded');
277
- })
278
- .flatMap(function (c) {
279
- return this$1.expandLayer(c, expLayers);
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
- LayerTree.prototype.renderInput = function renderInput (layer) {
287
- var this$1 = this;
288
-
289
- var ref = this.props;
290
- var titles = ref.titles;
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
- var inputType = layer.get('radioGroup') ? 'radio' : 'checkbox';
304
- return (
305
- // eslint-disable-next-line jsx-a11y/label-has-associated-control,jsx-a11y/no-noninteractive-element-interactions
306
- React.createElement( 'label', {
307
- className: ("rs-layer-tree-input rs-layer-tree-input-" + inputType + " rs-" + inputType), tabIndex: tabIndex, title: layer.visible ? titles.layerHide : titles.layerShow, 'aria-label': layer.visible ? titles.layerHide : titles.layerShow, onKeyPress: function (e) {
308
- if (e.which === 13) {
309
- this$1.onInputClick(layer);
310
- }
311
- } },
312
- React.createElement( 'input', {
313
- type: inputType, tabIndex: -1, checked: layer.visible, readOnly: true, onClick: function () {
314
- return this$1.onInputClick(layer);
315
- } }),
316
- React.createElement( 'span', null )
317
- )
318
- );
319
- };
320
-
321
- LayerTree.prototype.renderArrow = function renderArrow (layer) {
322
- var ref = this.props;
323
- var isItemHidden = ref.isItemHidden;
324
- var ref$1 = this.state;
325
- var expandedLayers = ref$1.expandedLayers;
326
-
327
- if (
328
- !layer.children.filter(function (c) {
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
- return (
337
- React.createElement( 'div', {
338
- className: ("rs-layer-tree-arrow rs-layer-tree-arrow-" + (!expandedLayers.includes(layer) ? 'collapsed' : 'expanded')) })
339
- );
340
- };
341
-
342
- // Render a button which expands/collapse the layer if there is children
343
- // or simulate a click on the input otherwise.
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(function (c) {
204
+ (layer.children || []).filter((c) => {
357
205
  return !isItemHidden(c);
358
- }).length && !layer.get('isAlwaysExpanded')
206
+ }).length && !layer.get("isAlwaysExpanded")
359
207
  );
360
208
  };
361
- var title = (t(layer.name)) + " " + (!expandedLayers.includes(layer)
362
- ? titles.subLayerShow
363
- : titles.subLayerHide);
364
- return (
365
- React.createElement( 'div', {
366
- role: "button", tabIndex: 0, className: "rs-layer-tree-toggle", title: title, 'aria-expanded': expandedLayers.includes(layer), 'aria-label': title, onClick: onInputClick, onKeyPress: onInputClick },
367
- React.createElement( 'div', null, t(layer.name) ),
368
- this.renderArrow(layer)
369
- )
370
- );
371
- };
372
-
373
- LayerTree.prototype.renderItemContent = function renderItemContent (layer) {
374
- return (
375
- React.createElement( React.Fragment, null,
376
- this.renderInput(layer),
377
- this.renderToggleButton(layer)
378
- )
379
- );
380
- };
381
-
382
- LayerTree.prototype.renderItem = function renderItem (layer, level) {
383
- var this$1 = this;
384
-
385
- var ref = this.props;
386
- var isItemHidden = ref.isItemHidden;
387
- var ref$1 = this.props;
388
- var renderItem = ref$1.renderItem;
389
- var renderItemContent = ref$1.renderItemContent;
390
- var renderBeforeItem = ref$1.renderBeforeItem;
391
- var renderAfterItem = ref$1.renderAfterItem;
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
- return (
408
- React.createElement( 'div', { className: getParentClassName(), key: layer.key },
409
- React.createElement( 'div', {
410
- className: ("rs-layer-tree-item " + (layer.visible ? 'rs-visible' : '')), style: {
411
- paddingLeft: ((padding * level) + "px"),
412
- } },
413
- renderItemContent
414
- ? renderItemContent(layer, this)
415
- : this.renderItemContent(layer)
416
- ),
417
- renderBeforeItem && renderBeforeItem(layer, level, this),
418
- [].concat( children ).reverse().map(function (child) {
419
- return this$1.renderItem(child, level + 1);
420
- }),
421
- renderAfterItem && renderAfterItem(layer, level, this)
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
- return (
439
- React.createElement( React.Fragment, null,
440
- layers
441
- .filter(function (l) {
442
- return !isItemHidden(l);
443
- })
444
- .reverse()
445
- .map(function (l) {
446
- return this$1.renderItem(l, 0);
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