@opengeoweb/core 9.20.2 → 9.22.0

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/index.esm.js CHANGED
@@ -12,7 +12,7 @@ import { useDispatch, useSelector, connect, useStore, Provider } from 'react-red
12
12
  import { ReactSortable } from 'react-sortablejs';
13
13
  import Sortable from 'sortablejs';
14
14
  import { layerTypes, layerUtils, layerActions, layerSelectors, serviceSelectors, serviceActions, mapSelectors, mapActions, mapEnums, uiSelectors, uiTypes, useSetupDialog, filterLayers, getUserAddedServices, uiActions, genericActions, drawtoolSelectors, syncConstants, loadingIndicatorActions, IS_LEGEND_OPEN_BY_DEFAULT, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelectors, syncGroupsSelector, coreModuleConfig, routerUtils, routerModuleConfig } from '@opengeoweb/store';
15
- import { webmapUtils, getCapabilities, WMGetServiceFromStore, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, WMLayer } from '@opengeoweb/webmap';
15
+ import { webmapUtils, getCapabilities, WMGetServiceFromStore, LayerType, handleDateUtilsISOString, wmServiceListener, EVENT_GETCAPABILITIES_START, EVENT_GETCAPABILITIES_READY, getWMSGetFeatureInfoRequestURL, WMLayer } from '@opengeoweb/webmap';
16
16
  import { Box as Box$1, styled as styled$1 } from '@mui/system';
17
17
  import _, { isEqual, range } from 'lodash';
18
18
  import { LayerSelectButtonConnect, LayerSelectConnect, layerSelectConfig } from '@opengeoweb/layer-select';
@@ -60,7 +60,6 @@ var en = {
60
60
  "layermanager-header-button-dock": "Dock",
61
61
  "layermanager-header-button-undock": "Undock",
62
62
  "projection-title": "Projection",
63
- "wms-loader-title": "Load WMS layer(s)",
64
63
  "wms-loader-description": "Please enter a wms server, or select one from the list.",
65
64
  "wms-loader-no-data": "No data",
66
65
  "wms-loader-error-http": "Use https or allow Mixed Content in your browser to use this WMS service",
@@ -126,7 +125,6 @@ var fi = {
126
125
  "layermanager-header-button-dock": "ei käännetty",
127
126
  "layermanager-header-button-undock": "ei käännetty",
128
127
  "projection-title": "ei käännetty",
129
- "wms-loader-title": "ei käännetty",
130
128
  "wms-loader-description": "ei käännetty",
131
129
  "wms-loader-no-data": "ei käännetty",
132
130
  "wms-loader-error-http": "ei käännetty",
@@ -155,136 +153,134 @@ var fi = {
155
153
  feature_info_location_info: "ei käännetty"
156
154
  };
157
155
  var no = {
158
- feature_info_title: "ikke oversatt",
159
- feature_info_no_layers: "ikke oversatt",
160
- "add-layer-popup-title": "ikke oversatt",
161
- "add-layer-popup-service-url": "ikke oversatt",
162
- "add-layer-popup-available-services": "ikke oversatt",
163
- "add-layer-popup-available-layers": "ikke oversatt",
164
- "add-layer-popup-reload-layers": "ikke oversatt",
165
- "layermanager-title": "ikke oversatt",
166
- "layermanager-baselayers-title": "ikke oversatt",
167
- "layermanager-baselayers-no-available": "ikke oversatt",
168
- "layermanager-acceptance-time": "ikke oversatt",
169
- "layermanager-dimensions-total-values": "ikke oversatt",
170
- "layermanager-dimensions-title": "ikke oversatt",
171
- "layermanager-dimension-title": "ikke oversatt",
172
- "layermanager-opacity-title": "ikke oversatt",
173
- "layermanager-opacity-tooltip-prefix": "ikke oversatt",
174
- "layermanager-style-title": "ikke oversatt",
175
- "layermanager-layer-error": "ikke oversatt",
176
- "layermanager-layer": "ikke oversatt",
177
- "layermanager-layer-toggle": "ikke oversatt",
178
- "layermanager-layer-select": "ikke oversatt",
179
- "layermanager-layer-drag": "ikke oversatt",
180
- "layermanager-layer-leading": "ikke oversatt",
181
- "layermanager-layer-leading-none": "ikke oversatt",
182
- "layermanager-layer-leading-auto-timestep": "ikke oversatt",
183
- "layermanager-layer-leading-auto-update": "ikke oversatt",
184
- "layermanager-layer-leading-both": "ikke oversatt",
185
- "layermanager-layer-delete": "ikke oversatt",
186
- "layermanager-layer-duplicate": "ikke oversatt",
187
- "layermanager-options": "ikke oversatt",
188
- "layermanager-baselayers-tooltip": "ikke oversatt",
189
- "layermanager-header-button-small": "ikke oversatt",
190
- "layermanager-header-button-medium": "ikke oversatt",
191
- "layermanager-header-button-large": "ikke oversatt",
192
- "layermanager-header-button-dock": "ikke oversatt",
193
- "layermanager-header-button-undock": "ikke oversatt",
194
- "projection-title": "ikke oversatt",
195
- "wms-loader-title": "ikke oversatt",
196
- "wms-loader-description": "ikke oversatt",
197
- "wms-loader-no-data": "ikke oversatt",
198
- "wms-loader-error-http": "ikke oversatt",
199
- "wms-loader-error-valid-service": "ikke oversatt",
200
- "wms-loader-error-valid-url": "ikke oversatt",
201
- "search-title": "ikke oversatt",
202
- "search-title-aria": "ikke oversatt",
203
- "search-find-location": "ikke oversatt",
204
- "search-error": "ikke oversatt",
205
- "syncgroups-title": "ikke oversatt",
206
- "syncgroups-zoom": "ikke oversatt",
207
- "syncgroups-timeslider": "ikke oversatt",
208
- "syncgroups-level": "ikke oversatt",
209
- "syncgroups-add-group": "ikke oversatt",
210
- "syncgroups-remove-group": "ikke oversatt",
211
- "actions-close": "ikke oversatt",
212
- "sentry-start-recording": "ikke oversatt",
213
- "sentry-stop-recording": "ikke oversatt",
214
- "layermanager-acceptance-time-within": "ikke oversatt",
215
- "layermanager-acceptance-time-outside": "ikke oversatt",
216
- "layermanager-acceptance-time-updated": "ikke oversatt",
217
- "layermanager-acceptance-time-off": "ikke oversatt",
218
- "layermanager-acceptance-time-exact": "ikke oversatt",
219
- "layermanager-dimensions-none": "ikke oversatt",
220
- feature_info_marker_info: "ikke oversatt",
221
- feature_info_location_info: "ikke oversatt"
156
+ feature_info_title: "Klikk på kartet for å få mer informasjon.",
157
+ feature_info_no_layers: "Ingen lag lagt til i kartet.",
158
+ "add-layer-popup-title": "Last inn WMS-lag",
159
+ "add-layer-popup-service-url": "Tjeneste-URL",
160
+ "add-layer-popup-available-services": "Tilgjengelige tjenester",
161
+ "add-layer-popup-available-layers": "Tilgjengelige tjenester for {{serviceName}}",
162
+ "add-layer-popup-reload-layers": "Oppdater lag fra tjeneste",
163
+ "layermanager-title": "Layer Manager",
164
+ "layermanager-baselayers-title": "Basislag",
165
+ "layermanager-baselayers-no-available": "Ingen tjenester tilgjengelig",
166
+ "layermanager-acceptance-time": "Aksep.tid",
167
+ "layermanager-dimensions-total-values": "Dimensjonsverdi ({{total_dimensions}} valg)",
168
+ "layermanager-dimensions-title": "Dimensjoner",
169
+ "layermanager-dimension-title": "Dimensjon",
170
+ "layermanager-opacity-title": "Gj.sikt",
171
+ "layermanager-opacity-tooltip-prefix": "Gjennomsiktighet: ",
172
+ "layermanager-style-title": "Style",
173
+ "layermanager-layer-error": "Dette laget kunne ikke bli lastet inn, det eksisterer ikke på serveren",
174
+ "layermanager-layer": "Lag",
175
+ "layermanager-layer-toggle": "Vis/skjul",
176
+ "layermanager-layer-select": "Åpne lagvalg",
177
+ "layermanager-layer-drag": "Dra",
178
+ "layermanager-layer-leading": "Ledende lag",
179
+ "layermanager-layer-leading-none": "Ingen",
180
+ "layermanager-layer-leading-auto-timestep": "Autotidssteg",
181
+ "layermanager-layer-leading-auto-update": "Autooppdater",
182
+ "layermanager-layer-leading-both": "Begge",
183
+ "layermanager-layer-delete": "Slett",
184
+ "layermanager-layer-duplicate": "Duplikat lag",
185
+ "layermanager-options": "Laginnstillinger",
186
+ "layermanager-baselayers-tooltip": "Legg til basislag",
187
+ "layermanager-header-button-small": "liten",
188
+ "layermanager-header-button-medium": "medium",
189
+ "layermanager-header-button-large": "stor",
190
+ "layermanager-header-button-dock": "Dock",
191
+ "layermanager-header-button-undock": "Undock",
192
+ "projection-title": "Projeksjon",
193
+ "wms-loader-description": "Vennligst skriv inn WMS-server eller velg en fra listen.",
194
+ "wms-loader-no-data": "Ingen data",
195
+ "wms-loader-error-http": "Bruk https eller tillat Mixed Content i nettleseren din for å bruke denne WMS-tjenesten",
196
+ "wms-loader-error-valid-service": "Vennligst skriv inn en gyldig WMS-tjeneste",
197
+ "wms-loader-error-valid-url": "Vennligst skriv inn en gyldig URL",
198
+ "search-title": "Søk",
199
+ "search-title-aria": "Kart søk",
200
+ "search-find-location": "Finn min lokasjon",
201
+ "search-error": "Geolocation error: {{error}}",
202
+ "syncgroups-title": "Synkroniser",
203
+ "syncgroups-zoom": "Zoom/Paner",
204
+ "syncgroups-timeslider": "Timeslider",
205
+ "syncgroups-level": "Nivå",
206
+ "syncgroups-add-group": "Legg til ny gruppe til listen",
207
+ "syncgroups-remove-group": "Fjern gruppen fra listen",
208
+ "actions-close": "Lukk",
209
+ "sentry-start-recording": "Start opptak",
210
+ "sentry-stop-recording": "Stopp opptak",
211
+ "layermanager-acceptance-time-within": "Lag: innenfor akseptabelt tidsvundu",
212
+ "layermanager-acceptance-time-outside": "Lag: utenfor akseptabelt tidsvundu",
213
+ "layermanager-acceptance-time-updated": "Lag: oppdatert",
214
+ "layermanager-acceptance-time-off": "av",
215
+ "layermanager-acceptance-time-exact": "eksakt",
216
+ "layermanager-dimensions-none": "Laget har ingen tidsdimensjon",
217
+ feature_info_marker_info: "Hendelse markør info",
218
+ feature_info_location_info: " informasjon for en spesifikk lokasjon"
222
219
  };
223
220
  var nl = {
224
- feature_info_title: "niet vertaald",
225
- feature_info_no_layers: "niet vertaald",
226
- "add-layer-popup-title": "niet vertaald",
227
- "add-layer-popup-service-url": "niet vertaald",
228
- "add-layer-popup-available-services": "niet vertaald",
229
- "add-layer-popup-available-layers": "niet vertaald",
230
- "add-layer-popup-reload-layers": "niet vertaald",
231
- "layermanager-title": "niet vertaald",
232
- "layermanager-baselayers-title": "niet vertaald",
233
- "layermanager-baselayers-no-available": "niet vertaald",
234
- "layermanager-acceptance-time": "niet vertaald",
235
- "layermanager-dimensions-total-values": "niet vertaald",
236
- "layermanager-dimensions-title": "niet vertaald",
237
- "layermanager-dimension-title": "niet vertaald",
238
- "layermanager-opacity-title": "niet vertaald",
239
- "layermanager-opacity-tooltip-prefix": "niet vertaald",
240
- "layermanager-style-title": "niet vertaald",
241
- "layermanager-layer-error": "niet vertaald",
242
- "layermanager-layer": "niet vertaald",
243
- "layermanager-layer-toggle": "niet vertaald",
244
- "layermanager-layer-select": "niet vertaald",
245
- "layermanager-layer-drag": "niet vertaald",
246
- "layermanager-layer-leading": "niet vertaald",
247
- "layermanager-layer-leading-none": "niet vertaald",
248
- "layermanager-layer-leading-auto-timestep": "niet vertaald",
249
- "layermanager-layer-leading-auto-update": "niet vertaald",
250
- "layermanager-layer-leading-both": "niet vertaald",
251
- "layermanager-layer-delete": "niet vertaald",
252
- "layermanager-layer-duplicate": "niet vertaald",
253
- "layermanager-options": "niet vertaald",
254
- "layermanager-baselayers-tooltip": "niet vertaald",
255
- "layermanager-header-button-small": "niet vertaald",
256
- "layermanager-header-button-medium": "niet vertaald",
257
- "layermanager-header-button-large": "niet vertaald",
258
- "layermanager-header-button-dock": "niet vertaald",
259
- "layermanager-header-button-undock": "niet vertaald",
260
- "projection-title": "niet vertaald",
261
- "wms-loader-title": "niet vertaald",
262
- "wms-loader-description": "niet vertaald",
263
- "wms-loader-no-data": "niet vertaald",
264
- "wms-loader-error-http": "niet vertaald",
265
- "wms-loader-error-valid-service": "niet vertaald",
266
- "wms-loader-error-valid-url": "niet vertaald",
267
- "search-title": "niet vertaald",
268
- "search-title-aria": "niet vertaald",
269
- "search-find-location": "niet vertaald",
270
- "search-error": "niet vertaald",
271
- "syncgroups-title": "niet vertaald",
272
- "syncgroups-zoom": "niet vertaald",
273
- "syncgroups-timeslider": "niet vertaald",
274
- "syncgroups-level": "niet vertaald",
275
- "syncgroups-add-group": "niet vertaald",
276
- "syncgroups-remove-group": "niet vertaald",
277
- "actions-close": "niet vertaald",
278
- "sentry-start-recording": "niet vertaald",
279
- "sentry-stop-recording": "niet vertaald",
280
- "layermanager-acceptance-time-within": "niet vertaald",
281
- "layermanager-acceptance-time-outside": "niet vertaald",
282
- "layermanager-acceptance-time-updated": "niet vertaald",
283
- "layermanager-acceptance-time-off": "niet vertaald",
284
- "layermanager-acceptance-time-exact": "niet vertaald",
285
- "layermanager-dimensions-none": "niet vertaald",
286
- feature_info_marker_info: "niet vertaald",
287
- feature_info_location_info: "niet vertaald"
221
+ feature_info_title: "Klik op de kaart voor informatie.",
222
+ feature_info_no_layers: "Geen lagen toegevoegd op de kaart.",
223
+ "add-layer-popup-title": "Laad WMS lagen",
224
+ "add-layer-popup-service-url": "Service-URL",
225
+ "add-layer-popup-available-services": "Beschikbare services",
226
+ "add-layer-popup-available-layers": "Beschikbare lagen voor {{serviceName}}",
227
+ "add-layer-popup-reload-layers": "Lagen opnieuw laden vanaf de service",
228
+ "layermanager-title": "Lagen Manager",
229
+ "layermanager-baselayers-title": "Basislaag",
230
+ "layermanager-baselayers-no-available": "Geen service beschikbaar",
231
+ "layermanager-acceptance-time": "Acc Tijd",
232
+ "layermanager-dimensions-total-values": "Opties voor dimensie ({{total_dimensions}})",
233
+ "layermanager-dimensions-title": "Dimensies",
234
+ "layermanager-dimension-title": "Dimensie",
235
+ "layermanager-opacity-title": "Dekking",
236
+ "layermanager-opacity-tooltip-prefix": "Dekking: ",
237
+ "layermanager-style-title": "Stijl",
238
+ "layermanager-layer-error": "Deze laag kon niet geladen worden: bestaat niet op de server.",
239
+ "layermanager-layer": "Laag",
240
+ "layermanager-layer-toggle": "Zichtbaarheid aan/uit",
241
+ "layermanager-layer-select": "Open de Layer Select",
242
+ "layermanager-layer-drag": "Slepen",
243
+ "layermanager-layer-leading": "Leidende laag",
244
+ "layermanager-layer-leading-none": "Geen",
245
+ "layermanager-layer-leading-auto-timestep": "Auto-tijdsinterval",
246
+ "layermanager-layer-leading-auto-update": "Auto-update",
247
+ "layermanager-layer-leading-both": "Beide",
248
+ "layermanager-layer-delete": "Verwijderen",
249
+ "layermanager-layer-duplicate": "Dupliceren",
250
+ "layermanager-options": "Opties",
251
+ "layermanager-baselayers-tooltip": "Basislagen toevoegen",
252
+ "layermanager-header-button-small": "klein",
253
+ "layermanager-header-button-medium": "middel",
254
+ "layermanager-header-button-large": "groot",
255
+ "layermanager-header-button-dock": "Dock",
256
+ "layermanager-header-button-undock": "Undock",
257
+ "projection-title": "Projectie",
258
+ "wms-loader-description": "Voer een WMS service in of selecteer er een uit de lijst.",
259
+ "wms-loader-no-data": "Geen data",
260
+ "wms-loader-error-http": "Gebruik https of sta Mixed Content toe in je browser om deze WMS service te gebruiken",
261
+ "wms-loader-error-valid-service": "Voer een geldige WMS service in",
262
+ "wms-loader-error-valid-url": "Voer een geldige URL in",
263
+ "search-title": "Zoeken",
264
+ "search-title-aria": "Zoeken op de kaart",
265
+ "search-find-location": "Vind mijn locatie",
266
+ "search-error": "Geolocatie fout: {{error}}",
267
+ "syncgroups-title": "Synchroniseren",
268
+ "syncgroups-zoom": "Zoomvenster",
269
+ "syncgroups-timeslider": "Timeslider",
270
+ "syncgroups-level": "Level",
271
+ "syncgroups-add-group": "Groep toevoegen",
272
+ "syncgroups-remove-group": "Groep verwijderen",
273
+ "actions-close": "Sluiten",
274
+ "sentry-start-recording": "Start opname",
275
+ "sentry-stop-recording": "Stop opname",
276
+ "layermanager-acceptance-time-within": "Laag: binnen de data acceptatie norm",
277
+ "layermanager-acceptance-time-outside": "Laag: verouderd",
278
+ "layermanager-acceptance-time-updated": "Laag: bijgewerkt",
279
+ "layermanager-acceptance-time-off": "uit",
280
+ "layermanager-acceptance-time-exact": "exact",
281
+ "layermanager-dimensions-none": "Laag heeft geen tijd dimensie",
282
+ feature_info_marker_info: "Locatie informatie",
283
+ feature_info_location_info: "Zie informatie voor een specifieke locatie"
288
284
  };
289
285
  var coreTranslations = {
290
286
  en: en,
@@ -2015,8 +2011,7 @@ const HeaderOptions = ({
2015
2011
  shortcutsEnabled,
2016
2012
  onClickDockButton,
2017
2013
  onChangeSize,
2018
- buttonSettings,
2019
- mapWidth
2014
+ buttonSettings
2020
2015
  }) => {
2021
2016
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
2022
2017
  const {
@@ -2044,11 +2039,7 @@ const HeaderOptions = ({
2044
2039
  tooltipTitle: t('layermanager-header-button-small'),
2045
2040
  "data-testid": "collapseSmall-btn",
2046
2041
  onClick: () => {
2047
- if (!isDockedLayerManager) {
2048
- onChangeSize(sizeSmall);
2049
- } else if (mapWidth && mapWidth > sizeSmall.width) {
2050
- onChangeSize(sizeSmall);
2051
- }
2042
+ onChangeSize(sizeSmall);
2052
2043
  },
2053
2044
  className: "collapseSmall-btn"
2054
2045
  }, {
@@ -2057,11 +2048,7 @@ const HeaderOptions = ({
2057
2048
  tooltipTitle: t('layermanager-header-button-medium'),
2058
2049
  "data-testid": "collapseMedium-btn",
2059
2050
  onClick: () => {
2060
- if (!isDockedLayerManager) {
2061
- onChangeSize(sizeMedium);
2062
- } else if (mapWidth && mapWidth > sizeMedium.width) {
2063
- onChangeSize(sizeMedium);
2064
- }
2051
+ onChangeSize(sizeMedium);
2065
2052
  },
2066
2053
  className: "collapseMedium-btn"
2067
2054
  }, {
@@ -2070,11 +2057,7 @@ const HeaderOptions = ({
2070
2057
  tooltipTitle: t('layermanager-header-button-large'),
2071
2058
  "data-testid": "collapseLarge-btn",
2072
2059
  onClick: () => {
2073
- if (!isDockedLayerManager) {
2074
- onChangeSize(sizeLarge);
2075
- } else if (mapWidth && mapWidth > sizeLarge.width) {
2076
- onChangeSize(sizeLarge);
2077
- }
2060
+ onChangeSize(sizeLarge);
2078
2061
  },
2079
2062
  className: "collapseLarge-btn"
2080
2063
  }, {
@@ -6488,8 +6471,7 @@ const HeaderOptionsConnect = ({
6488
6471
  mapId,
6489
6472
  onClickDockButton,
6490
6473
  onChangeSize,
6491
- buttonSettings,
6492
- mapWidth
6474
+ buttonSettings
6493
6475
  }) => {
6494
6476
  const activeMapId = useSelector(store => uiSelectors.getActiveWindowId(store));
6495
6477
  const floatingLmOpen = useSelector(store => uiSelectors.getisDialogOpen(store, uiTypes.DialogTypes.LayerManager));
@@ -6499,8 +6481,7 @@ const HeaderOptionsConnect = ({
6499
6481
  shortcutsEnabled: shortcutsEnabled,
6500
6482
  onClickDockButton: onClickDockButton,
6501
6483
  onChangeSize: onChangeSize,
6502
- buttonSettings: buttonSettings,
6503
- mapWidth: mapWidth
6484
+ buttonSettings: buttonSettings
6504
6485
  });
6505
6486
  };
6506
6487
 
@@ -6693,6 +6674,18 @@ const styles$1 = {
6693
6674
  boxSizing: 'border-box'
6694
6675
  }
6695
6676
  };
6677
+ const getLayerManagerSizeValue = size => {
6678
+ if (!size.width || typeof size.width !== 'number') {
6679
+ return 'sizeLarge';
6680
+ }
6681
+ if (size.width < sizeMedium.width) {
6682
+ return 'sizeSmall';
6683
+ }
6684
+ if (size.width < sizeLarge.width) {
6685
+ return 'sizeMedium';
6686
+ }
6687
+ return 'sizeLarge';
6688
+ };
6696
6689
  const LayerManager = ({
6697
6690
  mapId,
6698
6691
  preloadedAvailableBaseLayers,
@@ -6716,7 +6709,6 @@ const LayerManager = ({
6716
6709
  },
6717
6710
  settings,
6718
6711
  headerSize: _headerSize = 'medium',
6719
- mapWidthRef,
6720
6712
  addLayerComponent
6721
6713
  }) => {
6722
6714
  var _a, _b, _c, _d, _e, _f, _g;
@@ -6731,34 +6723,7 @@ const LayerManager = ({
6731
6723
  renderCounter.count(LayerManager.name);
6732
6724
  const startSizeCalc = calculateStartSize(minSize, _size, _startPosition);
6733
6725
  const [sizeInState, setSizeInState] = React.useState(startSizeCalc);
6734
- const [mapWidth, setMapWidth] = React.useState();
6735
- React.useEffect(() => {
6736
- var _a;
6737
- setMapWidth((_a = mapWidthRef === null || mapWidthRef === void 0 ? void 0 : mapWidthRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth);
6738
- }, [mapWidthRef, setMapWidth]);
6739
- React.useEffect(() => {
6740
- var _a;
6741
- const resizeThreshold = 65;
6742
- if (((_a = mapWidthRef === null || mapWidthRef === void 0 ? void 0 : mapWidthRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) === mapWidth) {
6743
- return;
6744
- }
6745
- if (mapWidth) {
6746
- if (mapWidth < sizeMedium.width + resizeThreshold) {
6747
- setSizeInState(sizeSmall);
6748
- } else if (mapWidth >= sizeMedium.width + resizeThreshold && mapWidth < sizeLarge.width + resizeThreshold && sizeInState.width !== sizeSmall.width) {
6749
- setSizeInState(sizeMedium);
6750
- }
6751
- }
6752
- }, [mapWidth, sizeInState, mapWidthRef]);
6753
- const returnSizeValue = sizeInState => {
6754
- if (sizeInState === sizeSmall) {
6755
- return 'sizeSmall';
6756
- }
6757
- if (sizeInState === sizeMedium) {
6758
- return 'sizeMedium';
6759
- }
6760
- return 'sizeLarge';
6761
- };
6726
+ const dataSize = getLayerManagerSizeValue(sizeInState);
6762
6727
  return jsx(ToolContainerDraggable, Object.assign({
6763
6728
  title: _title,
6764
6729
  startSize: sizeInState,
@@ -6770,7 +6735,7 @@ const LayerManager = ({
6770
6735
  headerSize: _headerSize,
6771
6736
  bounds: bounds,
6772
6737
  "data-testid": "layerManagerWindow",
6773
- "data-size": returnSizeValue(sizeInState),
6738
+ "data-size": dataSize,
6774
6739
  onMouseDown: _onMouseDown,
6775
6740
  order: _order,
6776
6741
  source: _source,
@@ -6779,7 +6744,6 @@ const LayerManager = ({
6779
6744
  isDockedLayerManager: _isDockedLayerManager,
6780
6745
  mapId: mapId,
6781
6746
  onClickDockButton: _onToggleDock,
6782
- mapWidth: mapWidth,
6783
6747
  onChangeSize: ({
6784
6748
  width
6785
6749
  }) => {
@@ -6924,8 +6888,7 @@ const LayerManagerConnect = ({
6924
6888
  mapId: initialMapId = null,
6925
6889
  isMultiMap: _isMultiMap = false,
6926
6890
  isDocked: _isDocked = false,
6927
- source: _source = 'app',
6928
- mapWidthRef
6891
+ source: _source = 'app'
6929
6892
  }) => {
6930
6893
  const dispatch = useDispatch();
6931
6894
  const dialogType = getDialogType(initialMapId, _isMultiMap, _isDocked);
@@ -6991,7 +6954,6 @@ const LayerManagerConnect = ({
6991
6954
  top: 85,
6992
6955
  left: 50
6993
6956
  },
6994
- mapWidthRef: mapWidthRef,
6995
6957
  addLayerComponent: jsx(LayerSelectButtonConnect, {
6996
6958
  mapId: mapId,
6997
6959
  source: _source,
@@ -6999,7 +6961,7 @@ const LayerManagerConnect = ({
6999
6961
  })
7000
6962
  }), !_isDocked && jsx(LayerInfoDialogConnect, {}), !_isDocked && jsx(LayerSelectConnect, {})]
7001
6963
  });
7002
- }, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, _isDocked, _isMultiMap, _leftHeaderComponent, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, _showMapIdInTitle, _title, uiError, uiIsLoading, uiSource, mapWidthRef, _source]);
6964
+ }, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, _isDocked, _isMultiMap, _leftHeaderComponent, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, _showMapIdInTitle, _title, uiError, uiIsLoading, uiSource, _source]);
7003
6965
  };
7004
6966
 
7005
6967
  const LayerManagerMapButtonConnect = ({
@@ -7207,7 +7169,11 @@ const ZoomControlConnect = ({
7207
7169
  const isVisible = useSelector(store => mapSelectors.isZoomControlsVisible(store, mapId));
7208
7170
  const adagucRef = React.useRef(null);
7209
7171
  React.useEffect(() => {
7210
- adagucRef.current = webmapUtils.getWMJSMapById(mapId);
7172
+ const webmapjs = webmapUtils.getWMJSMapById(mapId);
7173
+ if (!webmapjs) {
7174
+ return;
7175
+ }
7176
+ adagucRef.current = webmapjs;
7211
7177
  }, [mapId]);
7212
7178
  const onZoomIn = () => adagucRef.current.zoomIn(undefined);
7213
7179
  const onZoomOut = () => adagucRef.current.zoomOut();
@@ -7685,6 +7651,9 @@ const useTouchZoomPan = (mapIsActive, mapId) => {
7685
7651
  }, []);
7686
7652
  const handleMove = React.useCallback(event => {
7687
7653
  const map = webmapUtils.getWMJSMapById(mapId);
7654
+ if (!map) {
7655
+ return;
7656
+ }
7688
7657
  const targetElem = event.target;
7689
7658
  if (!isCanvasElement(event)) {
7690
7659
  // Elements other than canvas elements are not allowed to be zoomed/panned
@@ -7866,6 +7835,9 @@ const MapViewConnect = _a => {
7866
7835
  const mapChangeDimension = React.useCallback(mapDimensionPayload => {
7867
7836
  if (mapDimensionPayload.dimension) {
7868
7837
  const wmjsMap = webmapUtils.getWMJSMapById(mapId);
7838
+ if (!wmjsMap) {
7839
+ return;
7840
+ }
7869
7841
  const dimension = wmjsMap.getDimension(mapDimensionPayload.dimension.name);
7870
7842
  if (dimension && dimension.currentValue === mapDimensionPayload.dimension.currentValue) {
7871
7843
  return;
@@ -7874,9 +7846,10 @@ const MapViewConnect = _a => {
7874
7846
  dispatch(mapActions.mapChangeDimension(mapDimensionPayload));
7875
7847
  }, [dispatch, mapId]);
7876
7848
  const setTime = React.useCallback(setTimePayload => {
7849
+ var _a;
7877
7850
  const wmjsMap = webmapUtils.getWMJSMapById(mapId);
7878
7851
  /* Check if the map not already has this value set, otherwise this component will re-render */
7879
- if (wmjsMap && wmjsMap.getDimension('time') && wmjsMap.getDimension('time').currentValue === setTimePayload.value) {
7852
+ if (wmjsMap && wmjsMap.getDimension('time') && ((_a = wmjsMap.getDimension('time')) === null || _a === void 0 ? void 0 : _a.currentValue) === setTimePayload.value) {
7880
7853
  return;
7881
7854
  }
7882
7855
  dispatch(genericActions.setTime(setTimePayload));
@@ -8024,6 +7997,9 @@ const MapViewConnect = _a => {
8024
7997
  },
8025
7998
  onWMJSMount: mapId => {
8026
7999
  const wmjsMap = webmapUtils.getWMJSMapById(mapId);
8000
+ if (!wmjsMap) {
8001
+ return;
8002
+ }
8027
8003
  wmjsMap.getListener().addEventListener('onloadstart', onGetMapLoadStart);
8028
8004
  wmjsMap.getListener().addEventListener('onloadready', onGetMapLoadReady);
8029
8005
  wmServiceListener.addEventListener(EVENT_GETCAPABILITIES_START, onGetCapabilitiesLoadStart, true);
@@ -8252,7 +8228,7 @@ const getLayersToUpdate = (layers, mapId) => {
8252
8228
  const wmjsLayer = webmapUtils.getWMLayerById(layer.id).cloneLayer();
8253
8229
  return {
8254
8230
  layerId: layer.id,
8255
- url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, wmjsMap.getMapPin().getXY().x, wmjsMap.getMapPin().getXY().y, 'text/html'),
8231
+ url: getWMSGetFeatureInfoRequestURL(wmjsLayer, wmjsMap.getMapPin().getXY().x, wmjsMap.getMapPin().getXY().y, 'text/html'),
8256
8232
  title: getTitle(layer.id)
8257
8233
  };
8258
8234
  });
@@ -8369,7 +8345,7 @@ const GetFeatureInfoDialog = ({
8369
8345
  right: 10,
8370
8346
  top: 80
8371
8347
  },
8372
- minWidth: 300,
8348
+ minWidth: 100,
8373
8349
  onClose: onClose,
8374
8350
  title: _showMapId ? `${t('feature_info_marker_info')} ${mapId}` : t('feature_info_marker_info'),
8375
8351
  initialMaxHeight: 440,
@@ -8896,11 +8872,15 @@ const AnimationLengthButtonConnect = ({
8896
8872
  }) => {
8897
8873
  const dispatch = useDispatch();
8898
8874
  const isAnimating = useSelector(store => mapSelectors.isAnimating(store, mapId));
8899
- const animationStartTime = useSelector(store => mapSelectors.getAnimationStartTime(store, mapId));
8900
- const animationEndTime = useSelector(store => mapSelectors.getAnimationEndTime(store, mapId));
8875
+ const isAnimationLengthAuto = useSelector(store => mapSelectors.isAnimationLengthAuto(store, mapId));
8876
+ const selectedAnimationStartTime = useSelector(store => mapSelectors.getAnimationStartTime(store, mapId));
8877
+ const {
8878
+ animationStartTime,
8879
+ animationEndTime
8880
+ } = useSelector(store => mapSelectors.getAnimationRange(store, mapId));
8901
8881
  const currentDiffInMinutes = dateUtils.differenceInMinutes(dateUtils.utc(animationEndTime), dateUtils.utc(animationStartTime));
8902
8882
  const handlechangeAnimationLength = length => {
8903
- const animationEndTime = dateUtils.dateToIsoString(dateUtils.add(dateUtils.utc(animationStartTime), {
8883
+ const animationEndTime = dateUtils.dateToIsoString(dateUtils.add(dateUtils.utc(selectedAnimationStartTime), {
8904
8884
  minutes: length
8905
8885
  }));
8906
8886
  dispatch(mapActions.setAnimationEndTime({
@@ -8909,10 +8889,22 @@ const AnimationLengthButtonConnect = ({
8909
8889
  origin: mapEnums.MapActionOrigin.map
8910
8890
  }));
8911
8891
  };
8892
+ const toggleAnimationLengthAuto = React.useCallback(() => {
8893
+ dispatch(mapActions.toggleAnimationLengthAuto({
8894
+ mapId,
8895
+ autoAnimationLength: true,
8896
+ origin: mapEnums.MapActionOrigin.map
8897
+ }));
8898
+ }, [dispatch, mapId]);
8899
+ const autoTimestepLayerId = useSelector(store => mapSelectors.getAutoTimeStepLayerId(store, mapId));
8900
+ const timeStepFromLayer = useSelector(store => layerSelectors.getTimeStepForLayerId(store, autoTimestepLayerId));
8912
8901
  return jsx(AnimationLengthButton, {
8913
8902
  disabled: isAnimating,
8914
8903
  animationLength: currentDiffInMinutes || Number(AnimationLength.Hours24),
8915
- onChangeAnimationLength: handlechangeAnimationLength
8904
+ isAuto: isAnimationLengthAuto,
8905
+ onChangeAnimationLength: handlechangeAnimationLength,
8906
+ toggleAnimationLengthAuto: toggleAnimationLengthAuto,
8907
+ layerHasTimeStep: Boolean(timeStepFromLayer)
8916
8908
  });
8917
8909
  };
8918
8910
 
@@ -9008,8 +9000,6 @@ const OptionsMenuButtonConnect = ({
9008
9000
  };
9009
9001
 
9010
9002
  const connectRedux$2 = connect((store, props) => ({
9011
- animationStartTime: mapSelectors.getAnimationStartTime(store, props.mapId),
9012
- animationEndTime: mapSelectors.getAnimationEndTime(store, props.mapId),
9013
9003
  timeStep: mapSelectors.getMapTimeStep(store, props.mapId),
9014
9004
  linkedMapAnimationInfo: mapSelectors.linkedMapAnimationInfo(store, props.mapId)
9015
9005
  }), {
@@ -9018,14 +9008,16 @@ const connectRedux$2 = connect((store, props) => ({
9018
9008
  });
9019
9009
  const PlayButtonConnect = connectRedux$2(({
9020
9010
  mapId,
9021
- animationStartTime,
9022
- animationEndTime,
9023
9011
  isDisabled,
9024
9012
  timeStep,
9025
9013
  linkedMapAnimationInfo,
9026
9014
  mapStartAnimation,
9027
9015
  mapStopAnimation
9028
9016
  }) => {
9017
+ const {
9018
+ animationStartTime,
9019
+ animationEndTime
9020
+ } = useSelector(store => mapSelectors.getAnimationRange(store, mapId));
9029
9021
  const animationInterval = timeStep || defaultTimeStep;
9030
9022
  const onTogglePlay = () => {
9031
9023
  if (linkedMapAnimationInfo.isAnimating) {
@@ -9223,8 +9215,10 @@ const TimeSliderLegendConnect = ({
9223
9215
  const secondsPerPx = useSelector(store => mapSelectors.getMapTimeSliderSecondsPerPx(store, mapId));
9224
9216
  const timeStep = useSelector(store => mapSelectors.getMapTimeStep(store, mapId));
9225
9217
  const isTimeSliderHoverOn = useSelector(store => mapSelectors.isTimeSliderHoverOn(store, mapId));
9226
- const animationStartTime = useSelector(store => mapSelectors.getAnimationStartTime(store, mapId));
9227
- const animationEndTime = useSelector(store => mapSelectors.getAnimationEndTime(store, mapId));
9218
+ const {
9219
+ animationStartTime,
9220
+ animationEndTime
9221
+ } = useSelector(store => mapSelectors.getAnimationRange(store, mapId));
9228
9222
  const timeSliderSpan = useSelector(store => mapSelectors.getMapTimeSliderSpan(store, mapId));
9229
9223
  const currentTime = dateUtils.unix(Date.now());
9230
9224
  const [dataStartTime, dataEndTime] = useSelector(store => mapSelectors.getDataLimitsFromLayers(store, mapId));
@@ -9678,7 +9672,6 @@ const ConfigurableMapConnect = _a => {
9678
9672
  // eslint-disable-next-line react-hooks/exhaustive-deps
9679
9673
  }, []);
9680
9674
  const mapControlsPositionTop = title ? 24 : 8;
9681
- const mapWidthRef = /*#__PURE__*/React__default.createRef();
9682
9675
  return React__default.useMemo(() => {
9683
9676
  renderCounter.count(`${ConfigurableMapConnect.name}_${mapId}`);
9684
9677
  return jsxs(Box, Object.assign({
@@ -9688,8 +9681,7 @@ const ConfigurableMapConnect = _a => {
9688
9681
  position: 'relative',
9689
9682
  overflow: 'hidden'
9690
9683
  },
9691
- "data-testid": "ConfigurableMap",
9692
- ref: mapWidthRef
9684
+ "data-testid": "ConfigurableMap"
9693
9685
  }, {
9694
9686
  children: [title && jsx(Typography, Object.assign({
9695
9687
  "data-testid": "mapTitle",
@@ -9751,11 +9743,10 @@ const ConfigurableMapConnect = _a => {
9751
9743
  }), jsx(LayerManagerConnect, {
9752
9744
  mapId: mapId,
9753
9745
  bounds: "parent",
9754
- isDocked: true,
9755
- mapWidthRef: mapWidthRef
9746
+ isDocked: true
9756
9747
  })]
9757
9748
  }));
9758
- }, [children, disableTimeSlider, displayDimensionSelectButtonInMap, displayGetFeatureInfoButtonInMap, displayLayerManagerAndLegendButtonInMap, displaySearchButtonInMap, displayTimeInMap, id, mapControls, mapControlsPositionTop, mapId, multiLegend, showClock, shouldAutoFetch, title, mapWidthRef]);
9749
+ }, [children, disableTimeSlider, displayDimensionSelectButtonInMap, displayGetFeatureInfoButtonInMap, displayLayerManagerAndLegendButtonInMap, displaySearchButtonInMap, displayTimeInMap, id, mapControls, mapControlsPositionTop, mapId, multiLegend, showClock, shouldAutoFetch, title]);
9759
9750
  };
9760
9751
 
9761
9752
  var uncurryThis$1 = functionUncurryThis;
@@ -10846,4 +10837,4 @@ const SentryRecordButton = () => {
10846
10837
  }));
10847
10838
  };
10848
10839
 
10849
- export { CORE_NAMESPACE, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, RouterWrapperConnect, SearchControlButtonConnect, SearchControlConnect, SearchDialog, SentryRecordButton, SyncGroupViewerConnect, ThemeWrapperWithModules, TimeSliderConnect, ZoomControlConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, testLayers, translateKeyOutsideComponents, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
10840
+ export { CORE_NAMESPACE, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, RouterWrapperConnect, SearchControlButtonConnect, SearchControlConnect, SearchDialog, SentryRecordButton, SyncGroupViewerConnect, ThemeWrapperWithModules, TimeSliderConnect, ZoomControlConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, testLayers, useFetchServices, useUpdateTimeSpan, useUpdateTimestep };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.20.2",
3
+ "version": "9.22.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -15,7 +15,7 @@
15
15
  "@reduxjs/toolkit": "^1.9.7",
16
16
  "@opengeoweb/webmap-react": "*",
17
17
  "@opengeoweb/webmap": "*",
18
- "@mui/material": "~5.15.11",
18
+ "@mui/material": "^5.16.0",
19
19
  "@opengeoweb/theme": "*",
20
20
  "axios": "1.5.0",
21
21
  "@opengeoweb/layer-select": "*",
@@ -26,8 +26,8 @@
26
26
  "@opengeoweb/snackbar": "*",
27
27
  "react-router-dom": "^6.21.0",
28
28
  "react-draggable": "^4.4.6",
29
- "i18next": "^23.7.11",
30
- "react-i18next": "^13.5.0",
29
+ "i18next": "^23.11.5",
30
+ "react-i18next": "^14.1.2",
31
31
  "dompurify": "^3.0.6",
32
32
  "@sentry/react": "^7.109.0"
33
33
  },
package/src/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import coreTranslations from '../locales/core.json';
2
2
  export * from './lib';
3
- export { translateKeyOutsideComponents, CORE_NAMESPACE, } from './lib/utils/i18n';
3
+ export { CORE_NAMESPACE } from './lib/utils/i18n';
4
4
  export { coreTranslations };
@@ -23,7 +23,6 @@ interface LayerManagerProps {
23
23
  startPosition?: Position;
24
24
  settings?: LayerManagerCustomSettings;
25
25
  headerSize?: HeaderSize;
26
- mapWidthRef?: React.RefObject<HTMLDivElement>;
27
26
  addLayerComponent?: React.ReactElement;
28
27
  }
29
28
  declare const LayerManager: React.FC<LayerManagerProps>;
@@ -13,7 +13,6 @@ interface LayerManagerConnectProps {
13
13
  isMultiMap?: boolean;
14
14
  isDocked?: boolean;
15
15
  source?: uiTypes.Source;
16
- mapWidthRef?: React.RefObject<HTMLDivElement>;
17
16
  }
18
17
  /**
19
18
  * Layer Managerconnected to the store displaying the layers forthe active map Id
@@ -29,7 +29,6 @@ interface HeaderOptionsProps {
29
29
  onClickDockButton: () => void;
30
30
  onChangeSize: (size: Size) => void;
31
31
  buttonSettings?: ToolbarButtonSettings;
32
- mapWidth?: number;
33
32
  }
34
33
  export declare const sizeSmall: {
35
34
  width: number;
@@ -6,7 +6,6 @@ interface HeaderOptionsProps {
6
6
  onClickDockButton: () => void;
7
7
  onChangeSize: (size: Size) => void;
8
8
  buttonSettings?: ToolbarButtonSettings;
9
- mapWidth?: number;
10
9
  }
11
10
  export declare const areShortcutsEnabled: (activeMapId: string, mapId: string, floatingLmOpen: boolean, isDockedLayerManager: boolean) => boolean;
12
11
  declare const HeaderOptionsConnect: React.FC<HeaderOptionsProps>;
@@ -16,8 +16,6 @@ export interface PlayButtonConnectProps {
16
16
  };
17
17
  }
18
18
  declare const connectRedux: import("react-redux").InferableComponentEnhancerWithProps<{
19
- animationStartTime: string | undefined;
20
- animationEndTime: string | undefined;
21
19
  timeStep: number;
22
20
  linkedMapAnimationInfo: {
23
21
  isAnimating: boolean;
@@ -28,7 +26,7 @@ declare const connectRedux: import("react-redux").InferableComponentEnhancerWith
28
26
  mapStopAnimation: import("@reduxjs/toolkit").ActionCreatorWithPayload<import("dist/libs/store/src/store/mapStore/types").SetMapAnimationStopPayload, "mapReducer/mapStopAnimation">;
29
27
  }, PlayButtonConnectProps>;
30
28
  type Props = PlayButtonConnectProps & ConnectedProps<typeof connectRedux>;
31
- export declare const PlayButtonConnect: import("react-redux").ConnectedComponent<({ mapId, animationStartTime, animationEndTime, isDisabled, timeStep, linkedMapAnimationInfo, mapStartAnimation, mapStopAnimation, }: Props) => import("react/jsx-runtime").JSX.Element, {
29
+ export declare const PlayButtonConnect: import("react-redux").ConnectedComponent<({ mapId, isDisabled, timeStep, linkedMapAnimationInfo, mapStartAnimation, mapStopAnimation, }: Props) => import("react/jsx-runtime").JSX.Element, {
32
30
  mapId: string;
33
31
  isDisabled?: boolean | undefined;
34
32
  isAnimating?: boolean | undefined;