react-spatial 1.2.2 → 1.2.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/LayerService.js +128 -184
  2. package/LayerService.js.map +7 -1
  3. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
  4. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
  5. package/components/BaseLayerSwitcher/index.js +1 -3
  6. package/components/BaseLayerSwitcher/index.js.map +7 -1
  7. package/components/BasicMap/BasicMap.js +147 -285
  8. package/components/BasicMap/BasicMap.js.map +7 -1
  9. package/components/BasicMap/index.js +1 -3
  10. package/components/BasicMap/index.js.map +7 -1
  11. package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
  12. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
  13. package/components/CanvasSaveButton/index.js +1 -3
  14. package/components/CanvasSaveButton/index.js.map +7 -1
  15. package/components/Copyright/Copyright.js +29 -70
  16. package/components/Copyright/Copyright.js.map +7 -1
  17. package/components/Copyright/index.js +1 -3
  18. package/components/Copyright/index.js.map +7 -1
  19. package/components/FeatureExportButton/FeatureExportButton.js +40 -106
  20. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
  21. package/components/FeatureExportButton/index.js +1 -3
  22. package/components/FeatureExportButton/index.js.map +7 -1
  23. package/components/FilterButton/FilterButton.js +41 -106
  24. package/components/FilterButton/FilterButton.js.map +7 -1
  25. package/components/FilterButton/index.js +1 -3
  26. package/components/FilterButton/index.js.map +7 -1
  27. package/components/FitExtent/FitExtent.js +17 -50
  28. package/components/FitExtent/FitExtent.js.map +7 -1
  29. package/components/FitExtent/index.js +1 -3
  30. package/components/FitExtent/index.js.map +7 -1
  31. package/components/FollowButton/FollowButton.js +41 -111
  32. package/components/FollowButton/FollowButton.js.map +7 -1
  33. package/components/FollowButton/index.js +1 -3
  34. package/components/FollowButton/index.js.map +7 -1
  35. package/components/Geolocation/Geolocation.js +104 -213
  36. package/components/Geolocation/Geolocation.js.map +7 -1
  37. package/components/Geolocation/index.js +1 -3
  38. package/components/Geolocation/index.js.map +7 -1
  39. package/components/LayerTree/LayerTree.js +204 -410
  40. package/components/LayerTree/LayerTree.js.map +7 -1
  41. package/components/LayerTree/index.js +1 -3
  42. package/components/LayerTree/index.js.map +7 -1
  43. package/components/MousePosition/MousePosition.js +61 -130
  44. package/components/MousePosition/MousePosition.js.map +7 -1
  45. package/components/MousePosition/index.js +1 -3
  46. package/components/MousePosition/index.js.map +7 -1
  47. package/components/NorthArrow/NorthArrow.js +22 -62
  48. package/components/NorthArrow/NorthArrow.js.map +7 -1
  49. package/components/NorthArrow/index.js +1 -3
  50. package/components/NorthArrow/index.js.map +7 -1
  51. package/components/Overlay/Overlay.js +83 -130
  52. package/components/Overlay/Overlay.js.map +7 -1
  53. package/components/Overlay/index.js +1 -3
  54. package/components/Overlay/index.js.map +7 -1
  55. package/components/Permalink/Permalink.js +150 -244
  56. package/components/Permalink/Permalink.js.map +7 -1
  57. package/components/Permalink/index.js +1 -3
  58. package/components/Permalink/index.js.map +7 -1
  59. package/components/Popup/Popup.js +106 -233
  60. package/components/Popup/Popup.js.map +7 -1
  61. package/components/Popup/index.js +1 -3
  62. package/components/Popup/index.js.map +7 -1
  63. package/components/ResizeHandler/ResizeHandler.js +58 -113
  64. package/components/ResizeHandler/ResizeHandler.js.map +7 -1
  65. package/components/ResizeHandler/index.js +1 -3
  66. package/components/ResizeHandler/index.js.map +7 -1
  67. package/components/RouteSchedule/RouteSchedule.js +150 -283
  68. package/components/RouteSchedule/RouteSchedule.js.map +7 -1
  69. package/components/RouteSchedule/index.js +1 -3
  70. package/components/RouteSchedule/index.js.map +7 -1
  71. package/components/ScaleLine/ScaleLine.js +21 -45
  72. package/components/ScaleLine/ScaleLine.js.map +7 -1
  73. package/components/ScaleLine/index.js +1 -3
  74. package/components/ScaleLine/index.js.map +7 -1
  75. package/components/Search/Search.js +122 -186
  76. package/components/Search/Search.js.map +7 -1
  77. package/components/Search/SearchService.js +45 -69
  78. package/components/Search/SearchService.js.map +7 -1
  79. package/components/Search/engines/Engine.js +18 -25
  80. package/components/Search/engines/Engine.js.map +7 -1
  81. package/components/Search/engines/StopFinder.js +21 -38
  82. package/components/Search/engines/StopFinder.js.map +7 -1
  83. package/components/Search/index.js +3 -6
  84. package/components/Search/index.js.map +7 -1
  85. package/components/StopsFinder/StopsFinder.js +123 -174
  86. package/components/StopsFinder/StopsFinder.js.map +7 -1
  87. package/components/StopsFinder/StopsFinderOption.js +37 -54
  88. package/components/StopsFinder/StopsFinderOption.js.map +7 -1
  89. package/components/StopsFinder/index.js +1 -3
  90. package/components/StopsFinder/index.js.map +7 -1
  91. package/components/TrackerControl/TrackerControl.js +73 -128
  92. package/components/TrackerControl/TrackerControl.js.map +7 -1
  93. package/components/TrackerControl/index.js +1 -3
  94. package/components/TrackerControl/index.js.map +7 -1
  95. package/components/Zoom/Zoom.js +69 -112
  96. package/components/Zoom/Zoom.js.map +7 -1
  97. package/components/Zoom/index.js +1 -3
  98. package/components/Zoom/index.js.map +7 -1
  99. package/package.json +10 -5
  100. package/propTypes.js +17 -23
  101. package/propTypes.js.map +7 -1
  102. package/setupTests.js +2 -4
  103. package/setupTests.js.map +7 -1
  104. package/themes/README.md +26 -0
  105. package/themes/default/components.scss +0 -1
  106. package/themes/default/examples.scss +0 -1
  107. package/utils/GlobalsForOle.js +63 -64
  108. package/utils/GlobalsForOle.js.map +7 -1
  109. package/utils/KML.js +178 -364
  110. package/utils/KML.js.map +7 -1
  111. package/utils/KMLFormat.js +37 -73
  112. package/utils/KMLFormat.js.map +7 -1
  113. package/utils/Styles.js +24 -32
  114. package/utils/Styles.js.map +7 -1
  115. package/utils/getPolygonPattern.js +11 -44
  116. package/utils/getPolygonPattern.js.map +7 -1
  117. package/utils/timeUtils.js +16 -35
  118. package/utils/timeUtils.js.map +7 -1
  119. package/LayerService.test.js +0 -160
  120. package/LayerService.test.js.map +0 -1
  121. package/Projections.js +0 -16
  122. package/Projections.js.map +0 -1
  123. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
  124. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
  125. package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
  126. package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
  127. package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
  128. package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
  129. package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
  130. package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
  131. package/components/BaseLayerToggler/index.js +0 -3
  132. package/components/BaseLayerToggler/index.js.map +0 -1
  133. package/components/BasicMap/BasicMap.test.js +0 -288
  134. package/components/BasicMap/BasicMap.test.js.map +0 -1
  135. package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
  136. package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
  137. package/components/Copyright/Copyright.test.js +0 -133
  138. package/components/Copyright/Copyright.test.js.map +0 -1
  139. package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
  140. package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
  141. package/components/FilterButton/FilterButton.test.js +0 -48
  142. package/components/FilterButton/FilterButton.test.js.map +0 -1
  143. package/components/FitExtent/FitExtent.test.js +0 -44
  144. package/components/FitExtent/FitExtent.test.js.map +0 -1
  145. package/components/FollowButton/FollowButton.test.js +0 -57
  146. package/components/FollowButton/FollowButton.test.js.map +0 -1
  147. package/components/Geolocation/Geolocation.test.js +0 -263
  148. package/components/Geolocation/Geolocation.test.js.map +0 -1
  149. package/components/LayerTree/LayerTree.test.js +0 -323
  150. package/components/LayerTree/LayerTree.test.js.map +0 -1
  151. package/components/MousePosition/MousePosition.test.js +0 -125
  152. package/components/MousePosition/MousePosition.test.js.map +0 -1
  153. package/components/NorthArrow/NorthArrow.test.js +0 -106
  154. package/components/NorthArrow/NorthArrow.test.js.map +0 -1
  155. package/components/Overlay/Overlay.test.js +0 -145
  156. package/components/Overlay/Overlay.test.js.map +0 -1
  157. package/components/Permalink/Permalink.test.js +0 -267
  158. package/components/Permalink/Permalink.test.js.map +0 -1
  159. package/components/Popup/Popup.test.js +0 -291
  160. package/components/Popup/Popup.test.js.map +0 -1
  161. package/components/ResizeHandler/ResizeHandler.test.js +0 -410
  162. package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
  163. package/components/RouteSchedule/RouteSchedule.test.js +0 -102
  164. package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
  165. package/components/ScaleLine/ScaleLine.test.js +0 -32
  166. package/components/ScaleLine/ScaleLine.test.js.map +0 -1
  167. package/components/Search/Search.test.js +0 -15
  168. package/components/Search/Search.test.js.map +0 -1
  169. package/components/StopsFinder/StopsFinder.test.js +0 -19
  170. package/components/StopsFinder/StopsFinder.test.js.map +0 -1
  171. package/components/TrackerControl/TrackerControl.test.js +0 -17
  172. package/components/TrackerControl/TrackerControl.test.js.map +0 -1
  173. package/components/Zoom/Zoom.test.js +0 -150
  174. package/components/Zoom/Zoom.test.js.map +0 -1
  175. package/styleguidist/ComponentsList.js +0 -52
  176. package/styleguidist/ComponentsList.js.map +0 -1
  177. package/styleguidist/StyleGuide.js +0 -253
  178. package/styleguidist/StyleGuide.js.map +0 -1
  179. package/utils/KML.test.js +0 -163
  180. package/utils/KML.test.js.map +0 -1
  181. package/utils/KMLFormat.test.js +0 -22
  182. package/utils/KMLFormat.test.js.map +0 -1
  183. package/utils/getPolygonPattern.test.js +0 -66
  184. package/utils/getPolygonPattern.test.js.map +0 -1
  185. package/utils/timeUtils.test.js +0 -32
  186. package/utils/timeUtils.test.js.map +0 -1
@@ -1,482 +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
- * 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
- var defaultProps = {
117
- layerService: undefined,
118
- className: 'rs-layer-tree',
25
+ const defaultProps = {
26
+ layers: [],
27
+ className: "rs-layer-tree",
119
28
  padding: 30,
120
- isItemHidden: function () {
29
+ isItemHidden: () => {
121
30
  return false;
122
31
  },
123
- getParentClassName: function () {
124
- return undefined;
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: function (layer, layerComp) {
131
- var ref = layerComp.props;
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: 'Show layer',
137
- layerHide: 'Hide layer',
138
- subLayerShow: 'Show sublayer',
139
- subLayerHide: 'Hide sublayer',
44
+ layerShow: "Show layer",
45
+ layerHide: "Hide layer",
46
+ subLayerShow: "Show sublayer",
47
+ subLayerHide: "Hide sublayer"
140
48
  },
141
- t: function (s) {
49
+ t: (s) => {
142
50
  return s;
143
51
  },
144
- expandChildren: false,
52
+ expandChildren: false
145
53
  };
146
-
147
- /**
148
- * The LayerTree component renders an interface for toggling
149
- * [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers)
150
- * and their corresponding child layers.
151
- */
152
-
153
- var LayerTree = /*@__PURE__*/(function (Component) {
154
- function LayerTree(props) {
155
- Component.call(this, props);
156
- var ref = this.props;
157
- var layerService = ref.layerService;
158
- var isItemHidden = ref.isItemHidden;
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
- layers: layerService ? layerService.getLayers() : [],
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
- if ( Component ) LayerTree.__proto__ = Component;
182
- LayerTree.prototype = Object.create( Component && Component.prototype );
183
- LayerTree.prototype.constructor = LayerTree;
184
-
185
- LayerTree.prototype.componentDidMount = function componentDidMount () {
186
- this.updateLayerService();
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
- LayerTree.prototype.componentWillUnmount = function componentWillUnmount () {
199
- var ref = this.props;
200
- var layerService = ref.layerService;
201
- layerService.un('change:visible', this.updateLayers);
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
- LayerTree.prototype.onToggle = function onToggle (layer) {
215
- var ref = this.state;
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.apply(expandedLayers, this.getExpandedLayers([layer]));
102
+ expandedLayers.push(...this.getExpandedLayers([layer]));
222
103
  }
223
-
224
- this.setState({ expandedLayers: expandedLayers });
225
- };
226
-
227
- /**
228
- * Get the always expanded ancestors (isAlwaysExpanded=true) of the given layers
229
- * together with the (given) initially expanded layers
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.concat( [this.getExpandedLayers(children)]).flat();
247
- };
248
-
249
- LayerTree.prototype.updateLayerService = function updateLayerService () {
250
- var ref = this.props;
251
- var layerService = ref.layerService;
252
- if (layerService) {
253
- layerService.un('change:visible', this.updateLayers);
254
- this.updateLayers();
255
- 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;
256
128
  }
257
- };
258
-
259
- LayerTree.prototype.updateLayers = function updateLayers () {
260
- var this$1 = this;
261
-
262
- var ref = this.props;
263
- var layerService = ref.layerService;
264
- var expandChildren = ref.expandChildren;
265
- var layers = layerService.getLayers();
266
- if (
267
- typeof expandChildren === 'function'
268
- ? expandChildren(layers)
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
- layers: layers,
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
- var children = layer.children
290
- .filter(function (c) {
291
- return !isItemHidden(c) && !c.get('isAlwaysExpanded');
292
- })
293
- .flatMap(function (c) {
294
- return this$1.expandLayer(c, expLayers);
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
- LayerTree.prototype.renderInput = function renderInput (layer) {
302
- var this$1 = this;
303
-
304
- var ref = this.props;
305
- var titles = ref.titles;
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
- var inputType = layer.get('radioGroup') ? 'radio' : 'checkbox';
319
- return (
320
- // eslint-disable-next-line jsx-a11y/label-has-associated-control,jsx-a11y/no-noninteractive-element-interactions
321
- React.createElement( 'label', {
322
- 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) {
323
- if (e.which === 13) {
324
- this$1.onInputClick(layer);
325
- }
326
- } },
327
- React.createElement( 'input', {
328
- type: inputType, tabIndex: -1, checked: layer.visible, readOnly: true, onClick: function () {
329
- return this$1.onInputClick(layer);
330
- } }),
331
- React.createElement( 'span', null )
332
- )
333
- );
334
- };
335
-
336
- LayerTree.prototype.renderArrow = function renderArrow (layer) {
337
- var ref = this.props;
338
- var isItemHidden = ref.isItemHidden;
339
- var ref$1 = this.state;
340
- var expandedLayers = ref$1.expandedLayers;
341
-
342
- if (
343
- !layer.children.filter(function (c) {
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
- return (
352
- React.createElement( 'div', {
353
- className: ("rs-layer-tree-arrow rs-layer-tree-arrow-" + (!expandedLayers.includes(layer) ? 'collapsed' : 'expanded')) })
354
- );
355
- };
356
-
357
- // Render a button which expands/collapse the layer if there is children
358
- // or simulate a click on the input otherwise.
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(function (c) {
204
+ (layer.children || []).filter((c) => {
373
205
  return !isItemHidden(c);
374
- }).length && !layer.get('isAlwaysExpanded')
206
+ }).length && !layer.get("isAlwaysExpanded")
375
207
  );
376
208
  };
377
- var title = (t(layer.name)) + " " + (!expandedLayers.includes(layer)
378
- ? titles.subLayerShow
379
- : titles.subLayerHide);
380
- return (
381
- React.createElement( 'div', {
382
- role: "button", tabIndex: 0, className: "rs-layer-tree-toggle", title: title, 'aria-expanded': expandedLayers.includes(layer), 'aria-label': title, onClick: onInputClick, onKeyPress: onInputClick },
383
- React.createElement( 'div', null, renderLabel(layer, this) ),
384
- this.renderArrow(layer)
385
- )
386
- );
387
- };
388
-
389
- LayerTree.prototype.renderItemContent = function renderItemContent (layer) {
390
- return (
391
- React.createElement( React.Fragment, null,
392
- this.renderInput(layer),
393
- this.renderToggleButton(layer)
394
- )
395
- );
396
- };
397
-
398
- LayerTree.prototype.renderItem = function renderItem (layer, level) {
399
- var this$1 = this;
400
-
401
- var ref = this.props;
402
- var isItemHidden = ref.isItemHidden;
403
- var ref$1 = this.props;
404
- var renderItem = ref$1.renderItem;
405
- var renderItemContent = ref$1.renderItemContent;
406
- var renderBeforeItem = ref$1.renderBeforeItem;
407
- var renderAfterItem = ref$1.renderAfterItem;
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
- return (
424
- React.createElement( 'div', { className: getParentClassName(), key: layer.key },
425
- React.createElement( 'div', {
426
- className: ("rs-layer-tree-item " + (layer.visible ? 'rs-visible' : '')), style: {
427
- paddingLeft: ((padding * level) + "px"),
428
- } },
429
- renderItemContent
430
- ? renderItemContent(layer, this)
431
- : this.renderItemContent(layer)
432
- ),
433
- renderBeforeItem && renderBeforeItem(layer, level, this),
434
- [].concat( children ).reverse().map(function (child) {
435
- return this$1.renderItem(child, level + 1);
436
- }),
437
- renderAfterItem && renderAfterItem(layer, level, this)
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
- return (
455
- React.createElement( React.Fragment, null,
456
- layers
457
- .filter(function (l) {
458
- return !isItemHidden(l);
459
- })
460
- .reverse()
461
- .map(function (l) {
462
- return this$1.renderItem(l, 0);
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