qwc2 2025.12.18 → 2025.12.24

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 (71) hide show
  1. package/actions/display.js +6 -6
  2. package/actions/theme.js +4 -19
  3. package/components/AppMenu.js +1 -1
  4. package/components/AttributeForm.js +7 -7
  5. package/components/AttributeTableWidget.js +2 -2
  6. package/components/AutoEditForm.js +6 -3
  7. package/components/EditComboField.js +1 -4
  8. package/components/IdentifyViewer.js +33 -34
  9. package/components/ImportLayer.js +78 -79
  10. package/components/OverviewMapButton.js +147 -0
  11. package/components/PluginsContainer.js +2 -2
  12. package/components/ResizeableWindow.js +8 -1
  13. package/components/SearchBox.js +2 -2
  14. package/components/SideBar.js +1 -0
  15. package/components/StandardApp.js +1 -2
  16. package/components/ThemeLayersListWindow.js +10 -1
  17. package/components/{map3d/View3DSwitcher.js → ViewSwitcher.js} +74 -29
  18. package/components/map/OlMap.js +1 -1
  19. package/components/map3d/Map3D.js +50 -48
  20. package/components/map3d/MapControls3D.js +4 -1
  21. package/components/map3d/drawtool/EditTool3D.js +1 -1
  22. package/components/map3d/layers/WFSLayer3D.js +1 -1
  23. package/components/share/ShareQRCode.js +1 -1
  24. package/{plugins/map3d/style/OverviewMap3D.css → components/style/OverviewMapButton.css} +4 -4
  25. package/components/style/ViewSwitcher.css +36 -0
  26. package/components/widgets/ColorButton.js +2 -2
  27. package/components/widgets/CopyButton.js +1 -1
  28. package/components/widgets/LayerCatalogWidget.js +4 -4
  29. package/libs/openlayers.js +11 -11
  30. package/package.json +54 -55
  31. package/plugins/API.js +4 -4
  32. package/plugins/FeatureForm.js +2 -2
  33. package/plugins/FeatureSearch.js +12 -12
  34. package/plugins/GeometryDigitizer.js +12 -13
  35. package/plugins/Map.js +11 -4
  36. package/plugins/MapFilter.js +12 -12
  37. package/plugins/MapTip.js +1 -1
  38. package/plugins/ObliqueView.js +115 -51
  39. package/plugins/Print.js +79 -91
  40. package/plugins/Routing.js +1 -1
  41. package/plugins/Share.js +5 -5
  42. package/plugins/TimeManager.js +1 -2
  43. package/plugins/View3D.js +135 -123
  44. package/plugins/map/RedliningSupport.js +3 -3
  45. package/plugins/map3d/Draw3D.js +4 -4
  46. package/plugins/map3d/ExportObjects3D.js +1 -1
  47. package/plugins/map3d/HideObjects3D.js +7 -7
  48. package/plugins/map3d/Identify3D.js +1 -1
  49. package/plugins/map3d/LayerTree3D.js +1 -1
  50. package/plugins/map3d/MapExport3D.js +25 -25
  51. package/plugins/map3d/Measure3D.js +1 -1
  52. package/plugins/map3d/OverviewMap3D.js +27 -102
  53. package/plugins/map3d/TopBar3D.js +7 -7
  54. package/plugins/style/ObliqueView.css +27 -11
  55. package/reducers/display.js +2 -2
  56. package/reducers/layers.js +11 -11
  57. package/scripts/gen-plugin-docs.js +11 -4
  58. package/scripts/makeIconkit.js +2 -2
  59. package/scripts/themesConfig.js +5 -5
  60. package/scripts/updateTranslations.js +2 -2
  61. package/utils/CoordinatesUtils.js +1 -1
  62. package/utils/EditingUtils.js +6 -6
  63. package/utils/FeatureStyles.js +1 -1
  64. package/utils/LayerUtils.js +73 -74
  65. package/utils/MiscUtils.js +10 -3
  66. package/utils/PermaLinkUtils.js +68 -71
  67. package/utils/SearchProviders.js +2 -2
  68. package/utils/ServiceLayerUtils.js +12 -12
  69. package/utils/ThemeUtils.js +1 -1
  70. package/utils/VectorLayerUtils.js +3 -3
  71. package/components/map3d/style/View3DSwitcher.css +0 -19
@@ -11,11 +11,11 @@ import ReducerIndex from '../reducers/index';
11
11
  ReducerIndex.register("display", displayReducer);
12
12
  export var TOGGLE_FULLSCREEN = 'TOGGLE_FULLSCREEN';
13
13
  export var SET_VIEW_3D_MODE = 'SET_VIEW_3D_MODE';
14
- export var View3DMode = {
15
- DISABLED: 0,
16
- FULLSCREEN: 1,
17
- SPLITSCREEN: 2,
18
- DISABLING: 3
14
+ export var ViewMode = {
15
+ _2D: 0,
16
+ _3DFullscreen: 1,
17
+ _3DSplitscreen: 2,
18
+ _Oblique: 3
19
19
  };
20
20
  export function toggleFullscreen(fullscreen) {
21
21
  if (fullscreen) {
@@ -28,7 +28,7 @@ export function toggleFullscreen(fullscreen) {
28
28
  fullscreen: fullscreen
29
29
  };
30
30
  }
31
- export function setView3dMode(mode) {
31
+ export function setViewMode(mode) {
32
32
  return {
33
33
  type: SET_VIEW_3D_MODE,
34
34
  mode: mode
package/actions/theme.js CHANGED
@@ -23,7 +23,7 @@ import ReducerIndex from '../reducers/index';
23
23
  import themeReducer from '../reducers/theme';
24
24
  ReducerIndex.register("theme", themeReducer);
25
25
  import isEmpty from 'lodash.isempty';
26
- import { setView3dMode, View3DMode } from '../actions/display';
26
+ import { ViewMode } from '../actions/display';
27
27
  import { setCurrentTask } from '../actions/task';
28
28
  import ConfigUtils from '../utils/ConfigUtils';
29
29
  import CoordinatesUtils from '../utils/CoordinatesUtils';
@@ -54,7 +54,6 @@ export function setThemeLayersList(theme) {
54
54
  }
55
55
  export function finishThemeSetup(dispatch, theme, themes, layerConfigs, insertPos, permalinkLayers, externalLayerRestorer, visibleBgLayer, initialTheme) {
56
56
  var _theme$config;
57
- var initialView = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;
58
57
  // Create layer
59
58
  var themeLayer = ThemeUtils.createThemeLayer(theme, themes);
60
59
  var layers = [themeLayer];
@@ -145,19 +144,6 @@ export function finishThemeSetup(dispatch, theme, themes, layerConfigs, insertPo
145
144
  type: SET_CURRENT_THEME,
146
145
  theme: theme
147
146
  });
148
- if (initialView === null) {
149
- if (theme.startupView === "2d") {
150
- dispatch(setView3dMode(View3DMode.DISABLED));
151
- } else if (theme.startupView === "3d2d") {
152
- dispatch(setView3dMode(View3DMode.SPLITSCREEN));
153
- } else if (theme.startupView === "3d") {
154
- dispatch(setView3dMode(View3DMode.FULLSCREEN));
155
- }
156
- } else {
157
- UrlParams.updateParams({
158
- v: initialView
159
- });
160
- }
161
147
  dispatch({
162
148
  type: SWITCHING_THEME,
163
149
  switching: false
@@ -176,7 +162,6 @@ export function setCurrentTheme(theme, themes) {
176
162
  var permalinkLayers = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
177
163
  var themeLayerRestorer = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
178
164
  var externalLayerRestorer = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;
179
- var initialView = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;
180
165
  return function (dispatch, getState) {
181
166
  var _getState$layers;
182
167
  var curLayers = ((_getState$layers = getState().layers) === null || _getState$layers === void 0 ? void 0 : _getState$layers.flat) || [];
@@ -249,7 +234,7 @@ export function setCurrentTheme(theme, themes) {
249
234
  });
250
235
 
251
236
  // Preserve extent if desired and possible
252
- if (getState().display.view3dMode !== View3DMode.FULLSCREEN) {
237
+ if (getState().display.viewMode !== ViewMode._3DFullscreen) {
253
238
  var curCrs = getState().map.projection;
254
239
  if (preserve && !initialExtent && curCrs === theme.mapCrs) {
255
240
  var curBounds = getState().map.bbox.bounds;
@@ -332,13 +317,13 @@ export function setCurrentTheme(theme, themes) {
332
317
  dispatch(showNotification("missinglayers", LocaleUtils.tr("app.missinglayers", diff.join(", ")), NotificationType.WARN, true));
333
318
  }
334
319
  }
335
- finishThemeSetup(dispatch, newTheme, themes, layerConfigs, insertPos, permalinkLayers, externalLayerRestorer, visibleBgLayer, initialTheme, initialView);
320
+ finishThemeSetup(dispatch, newTheme, themes, layerConfigs, insertPos, permalinkLayers, externalLayerRestorer, visibleBgLayer, initialTheme);
336
321
  });
337
322
  } else {
338
323
  if (!isEmpty(missingThemeLayers)) {
339
324
  dispatch(showNotification("missinglayers", LocaleUtils.tr("app.missinglayers", Object.keys(missingThemeLayers).join(", ")), NotificationType.WARN, true));
340
325
  }
341
- finishThemeSetup(dispatch, theme, themes, layerConfigs, insertPos, permalinkLayers, externalLayerRestorer, visibleBgLayer, initialTheme, initialView);
326
+ finishThemeSetup(dispatch, theme, themes, layerConfigs, insertPos, permalinkLayers, externalLayerRestorer, visibleBgLayer, initialTheme);
342
327
  }
343
328
  };
344
329
  }
@@ -308,7 +308,7 @@ var AppMenu = /*#__PURE__*/function (_React$Component) {
308
308
  tabIndex: -1
309
309
  }, /*#__PURE__*/React.createElement("div", {
310
310
  className: "appmenu-menu",
311
- inert: visible ? undefined : "true",
311
+ inert: !visible,
312
312
  onMouseLeave: this.clearFocus,
313
313
  ref: function ref(el) {
314
314
  _this3.menuEl = el;
@@ -711,15 +711,15 @@ var AttributeForm = /*#__PURE__*/function (_React$Component) {
711
711
  var featureData = new FormData();
712
712
  featureData.set('feature', JSON.stringify(feature));
713
713
  Object.entries(featureUploads).forEach(function (_ref9) {
714
- var _ref10 = _slicedToArray(_ref9, 2),
715
- key = _ref10[0],
716
- value = _ref10[1];
714
+ var _ref0 = _slicedToArray(_ref9, 2),
715
+ key = _ref0[0],
716
+ value = _ref0[1];
717
717
  return featureData.set('file:' + key, value);
718
718
  });
719
- Object.entries(relationUploads).forEach(function (_ref11) {
720
- var _ref12 = _slicedToArray(_ref11, 2),
721
- key = _ref12[0],
722
- value = _ref12[1];
719
+ Object.entries(relationUploads).forEach(function (_ref1) {
720
+ var _ref10 = _slicedToArray(_ref1, 2),
721
+ key = _ref10[0],
722
+ value = _ref10[1];
723
723
  return featureData.set('relfile:' + _this.props.editContext.mapPrefix + "." + key, value);
724
724
  });
725
725
  if (_this.state.captchaResponse) {
@@ -956,12 +956,12 @@ var AttributeTableWidget = /*#__PURE__*/function (_React$Component) {
956
956
  var _ref8, _ref9, _match$layer$translat, _match$layer$translat2, _match$sublayer;
957
957
  layerTitle = (_ref8 = (_ref9 = (_match$layer$translat = (_match$layer$translat2 = match.layer.translations) === null || _match$layer$translat2 === void 0 || (_match$layer$translat2 = _match$layer$translat2.layertree) === null || _match$layer$translat2 === void 0 ? void 0 : _match$layer$translat2[layerName]) !== null && _match$layer$translat !== void 0 ? _match$layer$translat : editConfig.layerTitle) !== null && _ref9 !== void 0 ? _ref9 : match === null || match === void 0 || (_match$sublayer = match.sublayer) === null || _match$sublayer === void 0 ? void 0 : _match$sublayer.title) !== null && _ref8 !== void 0 ? _ref8 : layerName;
958
958
  } else {
959
- var _this2$props$layers$f, _ref10, _translations$layertr, _translations$layertr2;
959
+ var _this2$props$layers$f, _ref0, _translations$layertr, _translations$layertr2;
960
960
  // Note: geometry-less tables are filtered from the theme sublayers
961
961
  var translations = (_this2$props$layers$f = _this2.props.layers.find(function (layer) {
962
962
  return layer.wms_name === wmsName;
963
963
  })) === null || _this2$props$layers$f === void 0 ? void 0 : _this2$props$layers$f.translations;
964
- layerTitle = (_ref10 = (_translations$layertr = translations === null || translations === void 0 || (_translations$layertr2 = translations.layertree) === null || _translations$layertr2 === void 0 ? void 0 : _translations$layertr2[layerName]) !== null && _translations$layertr !== void 0 ? _translations$layertr : editConfig.layerTitle) !== null && _ref10 !== void 0 ? _ref10 : layerName;
964
+ layerTitle = (_ref0 = (_translations$layertr = translations === null || translations === void 0 || (_translations$layertr2 = translations.layertree) === null || _translations$layertr2 === void 0 ? void 0 : _translations$layertr2[layerName]) !== null && _translations$layertr !== void 0 ? _translations$layertr : editConfig.layerTitle) !== null && _ref0 !== void 0 ? _ref0 : layerName;
965
965
  }
966
966
  var value = wmsName + "#" + layerName;
967
967
  return /*#__PURE__*/React.createElement("option", {
@@ -1,5 +1,8 @@
1
+ var _excluded = ["multiline"];
1
2
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
3
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
4
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
5
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
3
6
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
4
7
  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
5
8
  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
@@ -22,7 +25,6 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
22
25
  */
23
26
 
24
27
  import React from 'react';
25
- import omit from 'lodash.omit';
26
28
  import PropTypes from 'prop-types';
27
29
  import EditComboField from './EditComboField';
28
30
  import EditUploadField from './EditUploadField';
@@ -38,8 +40,9 @@ var AutoEditForm = /*#__PURE__*/function (_React$Component) {
38
40
  }
39
41
  _this = _callSuper(this, AutoEditForm, [].concat(args));
40
42
  _defineProperty(_this, "renderField", function (field) {
41
- var multiline = (field.constraints || {}).multiline;
42
- var constraints = omit(field.constraints || {}, ["multiline"]);
43
+ var _ref = field.constraints || {},
44
+ multiline = _ref.multiline,
45
+ constraints = _objectWithoutProperties(_ref, _excluded);
43
46
  var readOnly = _this.props.readOnly || constraints.readOnly;
44
47
  var value = (_this.props.values || {})[field.id];
45
48
  if (value === undefined || value === null) {
@@ -59,7 +59,7 @@ var EditComboField = /*#__PURE__*/function (_React$Component) {
59
59
  var items = new Set();
60
60
  try {
61
61
  items = new Set(JSON.parse('[' + _this.props.value.slice(1, -1) + ']'));
62
- } catch (e) {
62
+ } catch (_unused) {
63
63
  // pass
64
64
  }
65
65
  var serializeValue = function serializeValue(value, enabled) {
@@ -135,7 +135,6 @@ var EditComboField = /*#__PURE__*/function (_React$Component) {
135
135
  value: function componentDidMount() {
136
136
  var _this2 = this;
137
137
  if (this.props.values) {
138
- // eslint-disable-next-line
139
138
  this.setState({
140
139
  values: this.props.values,
141
140
  showPlaceholder: !this.hasEmptyValue(this.props.values)
@@ -143,7 +142,6 @@ var EditComboField = /*#__PURE__*/function (_React$Component) {
143
142
  } else if (this.props.keyvalrel) {
144
143
  var _this$props$filterExp;
145
144
  KeyValCache.get(this.props.editIface, this.props.keyvalrel, (_this$props$filterExp = this.props.filterExpr) !== null && _this$props$filterExp !== void 0 ? _this$props$filterExp : null).then(function (values) {
146
- // eslint-disable-next-line
147
145
  _this2.setState({
148
146
  values: values,
149
147
  showPlaceholder: !_this2.hasEmptyValue(values)
@@ -158,7 +156,6 @@ var EditComboField = /*#__PURE__*/function (_React$Component) {
158
156
  if (this.props.keyvalrel && this.props.filterExpr !== prevProps.filterExpr) {
159
157
  var _this$props$filterExp2;
160
158
  KeyValCache.get(this.props.editIface, this.props.keyvalrel, (_this$props$filterExp2 = this.props.filterExpr) !== null && _this$props$filterExp2 !== void 0 ? _this$props$filterExp2 : null).then(function (values) {
161
- // eslint-disable-next-line
162
159
  _this3.setState({
163
160
  values: values,
164
161
  showPlaceholder: !_this3.hasEmptyValue(values)
@@ -25,6 +25,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
25
25
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26
26
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
27
27
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
28
+ import htmlReactParser, { domToReact } from 'html-react-parser';
28
29
  /**
29
30
  * Copyright 2016-2024 Sourcepole AG
30
31
  * All rights reserved.
@@ -38,10 +39,8 @@ import axios from 'axios';
38
39
  import clone from 'clone';
39
40
  import DOMPurify from 'dompurify';
40
41
  import FileSaver from 'file-saver';
41
- import htmlReactParser, { domToReact } from 'html-react-parser';
42
42
  import JSZip from 'jszip';
43
43
  import isEmpty from 'lodash.isempty';
44
- import omit from 'lodash.omit';
45
44
  import PropTypes from 'prop-types';
46
45
  import { setActiveLayerInfo } from '../actions/layerinfo';
47
46
  import { LayerRole, addLayerFeatures, removeLayer, changeLayerProperty } from '../actions/layers';
@@ -80,8 +79,8 @@ var BuiltinExporters = [{
80
79
  var featureCollection = {
81
80
  type: "FeatureCollection",
82
81
  features: Object.values(json).flat().map(function (entry) {
83
- var feature = omit(entry, EXCLUDE_PROPS);
84
- feature.properties = omit(feature.properties, EXCLUDE_ATTRS);
82
+ var feature = MiscUtils.objectOmit(entry, EXCLUDE_PROPS);
83
+ feature.properties = MiscUtils.objectOmit(feature.properties, EXCLUDE_ATTRS);
85
84
  if (feature.geometry) {
86
85
  feature.crs = {
87
86
  type: "name",
@@ -221,7 +220,7 @@ var BuiltinExporters = [{
221
220
  var geojson = {
222
221
  type: "FeatureCollection",
223
222
  features: features.map(function (entry) {
224
- return omit(entry, EXCLUDE_PROPS);
223
+ return MiscUtils.objectOmit(entry, EXCLUDE_PROPS);
225
224
  })
226
225
  };
227
226
  var layerOptions = _objectSpread(_objectSpread({}, options), {}, {
@@ -275,11 +274,11 @@ var BuiltinExporters = [{
275
274
  "export": function _export(json, callback) {
276
275
  import('xlsx').then(function (xlsx) {
277
276
  var document = xlsx.utils.book_new();
278
- Object.entries(json).forEach(function (_ref10) {
277
+ Object.entries(json).forEach(function (_ref0) {
279
278
  var _features$0$propertie2, _features$3;
280
- var _ref11 = _slicedToArray(_ref10, 2),
281
- layerName = _ref11[0],
282
- features = _ref11[1];
279
+ var _ref1 = _slicedToArray(_ref0, 2),
280
+ layerName = _ref1[0],
281
+ features = _ref1[1];
283
282
  var exportAttrs = Object.keys((_features$0$propertie2 = (_features$3 = features[0]) === null || _features$3 === void 0 ? void 0 : _features$3.properties) !== null && _features$0$propertie2 !== void 0 ? _features$0$propertie2 : {}).filter(function (attr) {
284
283
  return !EXCLUDE_ATTRS.includes(attr);
285
284
  });
@@ -460,12 +459,12 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
460
459
  });
461
460
  if (exporter) {
462
461
  if (!_this.props.exportGeometry) {
463
- json = Object.entries(json).reduce(function (res, _ref14) {
464
- var _ref15 = _slicedToArray(_ref14, 2),
465
- layerId = _ref15[0],
466
- features = _ref15[1];
462
+ json = Object.entries(json).reduce(function (res, _ref12) {
463
+ var _ref13 = _slicedToArray(_ref12, 2),
464
+ layerId = _ref13[0],
465
+ features = _ref13[1];
467
466
  return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, layerId, features.map(function (feature) {
468
- return omit(feature, ['geometry']);
467
+ return MiscUtils.objectOmit(feature, ['geometry']);
469
468
  })));
470
469
  }, {});
471
470
  }
@@ -491,10 +490,10 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
491
490
  style: {
492
491
  maxHeight: _this.state.currentResult ? '10em' : 'initial'
493
492
  }
494
- }, Object.entries(_this.state.resultTree).map(function (_ref16) {
495
- var _ref17 = _slicedToArray(_ref16, 2),
496
- layerid = _ref17[0],
497
- features = _ref17[1];
493
+ }, Object.entries(_this.state.resultTree).map(function (_ref14) {
494
+ var _ref15 = _slicedToArray(_ref14, 2),
495
+ layerid = _ref15[0],
496
+ features = _ref15[1];
498
497
  if (features.length === 0) {
499
498
  return null;
500
499
  }
@@ -925,10 +924,10 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
925
924
  }, /*#__PURE__*/React.createElement("option", {
926
925
  disabled: true,
927
926
  value: ""
928
- }, LocaleUtils.tr("identify.selectreport")), Object.entries(_this.state.reports).map(function (_ref19) {
929
- var _ref20 = _slicedToArray(_ref19, 2),
930
- layername = _ref20[0],
931
- reports = _ref20[1];
927
+ }, LocaleUtils.tr("identify.selectreport")), Object.entries(_this.state.reports).map(function (_ref17) {
928
+ var _ref18 = _slicedToArray(_ref17, 2),
929
+ layername = _ref18[0],
930
+ reports = _ref18[1];
932
931
  return reports.map(function (report, idx) {
933
932
  return /*#__PURE__*/React.createElement("option", {
934
933
  key: layername + "::" + idx,
@@ -1221,10 +1220,10 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
1221
1220
  var _this2 = this;
1222
1221
  var body = null;
1223
1222
  var resultTree = this.state.selectedLayer !== '' ? _defineProperty({}, this.state.selectedLayer, this.state.resultTree[this.state.selectedLayer]) : this.state.resultTree;
1224
- var flatResults = Object.entries(resultTree).map(function (_ref23) {
1225
- var _ref24 = _slicedToArray(_ref23, 2),
1226
- layerid = _ref24[0],
1227
- features = _ref24[1];
1223
+ var flatResults = Object.entries(resultTree).map(function (_ref21) {
1224
+ var _ref22 = _slicedToArray(_ref21, 2),
1225
+ layerid = _ref22[0],
1226
+ features = _ref22[1];
1228
1227
  return features.map(function (feature) {
1229
1228
  return [layerid, feature];
1230
1229
  });
@@ -1252,10 +1251,10 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
1252
1251
  } else if (this.props.resultDisplayMode === 'flat') {
1253
1252
  body = /*#__PURE__*/React.createElement("div", {
1254
1253
  className: "identify-flat-results-list"
1255
- }, Object.entries(resultTree).map(function (_ref25) {
1256
- var _ref26 = _slicedToArray(_ref25, 2),
1257
- layerid = _ref26[0],
1258
- features = _ref26[1];
1254
+ }, Object.entries(resultTree).map(function (_ref23) {
1255
+ var _ref24 = _slicedToArray(_ref23, 2),
1256
+ layerid = _ref24[0],
1257
+ features = _ref24[1];
1259
1258
  return features.map(function (feature) {
1260
1259
  return _this2.renderResultAttributes(layerid, feature, 'identify-result-frame');
1261
1260
  });
@@ -1269,10 +1268,10 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
1269
1268
  body = /*#__PURE__*/React.createElement("div", {
1270
1269
  className: "identify-compare-results",
1271
1270
  style: _style
1272
- }, results.map(function (_ref27) {
1273
- var _ref28 = _slicedToArray(_ref27, 2),
1274
- layerid = _ref28[0],
1275
- feature = _ref28[1];
1271
+ }, results.map(function (_ref25) {
1272
+ var _ref26 = _slicedToArray(_ref25, 2),
1273
+ layerid = _ref26[0],
1274
+ feature = _ref26[1];
1276
1275
  return _this2.renderResultAttributes(layerid, feature, 'identify-result-frame');
1277
1276
  }));
1278
1277
  } else if (this.state.currentPage < flatResults.length) {