@opengeoweb/core 15.2.0 → 15.3.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
@@ -48,6 +48,7 @@ var en = {
48
48
  "layermanager-title": "Layer Manager",
49
49
  "layermanager-baselayers-title": "Base layer",
50
50
  "layermanager-baselayers-no-available": "No service available",
51
+ "layermanager-sourcename-no-available": "No source available",
51
52
  "layermanager-overlayers-title": "Select overlayer",
52
53
  "layermanager-overlayers-overlayer": "Overlayer",
53
54
  "layermanager-acceptance-time": "Acc Time",
@@ -58,6 +59,7 @@ var en = {
58
59
  "layermanager-opacity-tooltip-prefix": "Opacity: ",
59
60
  "layermanager-style-title": "Style",
60
61
  "layermanager-layer-error": "This layer could not be loaded: does not exist on the server.",
62
+ "layermanager-service": "Source",
61
63
  "layermanager-layer": "Layer",
62
64
  "layermanager-layer-multi": "Layers",
63
65
  "layermanager-layer-toggle": "Toggle visibility",
@@ -313,6 +315,7 @@ var nl = {
313
315
  "layermanager-title": "Lagen Manager",
314
316
  "layermanager-baselayers-title": "Basislaag",
315
317
  "layermanager-baselayers-no-available": "Geen service beschikbaar",
318
+ "layermanager-sourcename-no-available": "Geen bron beschikbaar",
316
319
  "layermanager-overlayers-title": "Selecteer een overlayer",
317
320
  "layermanager-overlayers-overlayer": "Overlayer",
318
321
  "layermanager-acceptance-time": "Acc Tijd",
@@ -323,6 +326,7 @@ var nl = {
323
326
  "layermanager-opacity-tooltip-prefix": "Dekking: ",
324
327
  "layermanager-style-title": "Stijl",
325
328
  "layermanager-layer-error": "Deze laag kon niet geladen worden: bestaat niet op de server.",
329
+ "layermanager-service": "Bron",
326
330
  "layermanager-layer": "Laag",
327
331
  "layermanager-layer-toggle": "Zichtbaarheid aan/uit",
328
332
  "layermanager-layer-select": "Open de Layer Select",
@@ -1759,6 +1763,7 @@ var HeaderOptions = function HeaderOptions(_ref) {
1759
1763
  var iconButtonSize = 30;
1760
1764
  var columnClasses = {
1761
1765
  column1: 'column-1',
1766
+ columnService: 'column-service',
1762
1767
  column2: 'column-2',
1763
1768
  column3: 'column-3',
1764
1769
  column4: 'column-4',
@@ -1774,9 +1779,10 @@ var DELETE_MORE_BUTTONS = 3;
1774
1779
  var MISSING = 4;
1775
1780
  var leftButtonsWidth = iconButtonSize * DRAG_VISIBILITY_LEADING_BUTTONS + MISSING;
1776
1781
  var rightButtonsWidth = iconButtonSize * DELETE_MORE_BUTTONS;
1782
+ var opacityWidth = 45;
1777
1783
  var acceptanceTimeWidth = 65;
1778
1784
  var loadDurationWidth = 50;
1779
- var nonFlexibleAreaWidth = leftButtonsWidth + rightButtonsWidth + acceptanceTimeWidth + loadDurationWidth;
1785
+ var nonFlexibleAreaWidth = leftButtonsWidth + rightButtonsWidth + opacityWidth + acceptanceTimeWidth + loadDurationWidth;
1780
1786
  var flexibleAreaWidth = "(100% - " + nonFlexibleAreaWidth + "px)";
1781
1787
  var leftButtonsStyle = {
1782
1788
  width: leftButtonsWidth,
@@ -1821,18 +1827,24 @@ var layerManagerStyle = {
1821
1827
  '.baseLayer': {
1822
1828
  width: "calc(" + flexibleAreaWidth + " * 0.25)"
1823
1829
  },
1830
+ // layerService
1831
+ '.column-service': Object.assign({
1832
+ width: "calc(" + flexibleAreaWidth + " * 0.20)"
1833
+ }, columnCollapseStyle),
1824
1834
  // layerName
1825
1835
  '.column-2': Object.assign({
1826
1836
  width: "calc(" + flexibleAreaWidth + " * 0.25)"
1827
1837
  }, columnCollapseStyle),
1828
1838
  // style
1829
1839
  '.column-3': Object.assign({
1830
- width: "calc(" + flexibleAreaWidth + " * 0.25)"
1840
+ width: "calc(" + flexibleAreaWidth + " * 0.20)"
1831
1841
  }, columnCollapseStyle),
1832
1842
  // opacity
1833
1843
  '.column-4': Object.assign({
1834
- width: "calc(" + flexibleAreaWidth + " * 0.15)"
1835
- }, columnCollapseStyle),
1844
+ width: opacityWidth
1845
+ }, columnCollapseStyle, {
1846
+ flexGrow: 0
1847
+ }),
1836
1848
  // dimensions
1837
1849
  '.column-5': Object.assign({
1838
1850
  width: "calc(" + flexibleAreaWidth + " * 0.35)"
@@ -1854,7 +1866,7 @@ var layerManagerStyle = {
1854
1866
  },
1855
1867
  // layer missing warning
1856
1868
  '.column-7': {
1857
- width: "calc(" + flexibleAreaWidth + " * 0.75 + " + acceptanceTimeWidth + "px + " + loadDurationWidth + "px)"
1869
+ width: "calc(" + flexibleAreaWidth + " * 0.65 + " + opacityWidth + "px + " + acceptanceTimeWidth + "px + " + loadDurationWidth + "px)"
1858
1870
  },
1859
1871
  // sizes: mini
1860
1872
  '.enable-btn-mini': {
@@ -1877,7 +1889,7 @@ var layerManagerStyle = {
1877
1889
  '.enable-btn-mini': {
1878
1890
  display: 'inline-flex'
1879
1891
  },
1880
- '.activateLayer-btn, .enable-btn, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
1892
+ '.activateLayer-btn, .enable-btn, .column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
1881
1893
  display: 'none'
1882
1894
  },
1883
1895
  '.addLayer-column, .setProjection-column, .overlayers-column': {
@@ -1911,7 +1923,7 @@ var layerManagerStyle = {
1911
1923
  // sizes: medium
1912
1924
  '@container (max-width: 600px)': {
1913
1925
  '.layermanager': {
1914
- '.column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
1926
+ '.column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
1915
1927
  display: 'none'
1916
1928
  },
1917
1929
  '.columnLayerName, .baseLayer': {
@@ -2107,7 +2119,7 @@ var styles$2 = {
2107
2119
  }
2108
2120
  };
2109
2121
  var DescriptionRow = function DescriptionRow(_ref2) {
2110
- var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerName$t2, _settings$layerName2, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
2122
+ var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerServic, _settings$layerServic2, _settings$layerName$t2, _settings$layerName2, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
2111
2123
  var settings = _ref2.settings,
2112
2124
  addLayerComponent = _ref2.addLayerComponent,
2113
2125
  _ref2$onToggleCollaps = _ref2.onToggleCollapsed,
@@ -2138,6 +2150,11 @@ var DescriptionRow = function DescriptionRow(_ref2) {
2138
2150
  sx: styles$2.text,
2139
2151
  children: (_settings$layerName$t = settings == null || (_settings$layerName = settings.layerName) == null ? void 0 : _settings$layerName.title) != null ? _settings$layerName$t : t('layermanager-layer')
2140
2152
  })
2153
+ }), jsx(RowItemCollapse$1, {
2154
+ className: columnClasses.columnService,
2155
+ collapsedColumns: collapsedColumns,
2156
+ onToggleCollapsed: onToggleCollapsed,
2157
+ title: (_settings$layerServic = settings == null || (_settings$layerServic2 = settings.layerService) == null ? void 0 : _settings$layerServic2.title) != null ? _settings$layerServic : t('layermanager-service')
2141
2158
  }), jsx(RowItemCollapse$1, {
2142
2159
  className: columnClasses.column2,
2143
2160
  collapsedColumns: collapsedColumns,
@@ -3189,6 +3206,30 @@ var EnableLayerConnect = function EnableLayerConnect(_ref) {
3189
3206
  });
3190
3207
  };
3191
3208
 
3209
+ var LayerService = function LayerService(_ref) {
3210
+ var serviceName = _ref.serviceName,
3211
+ _ref$isEnabled = _ref.isEnabled,
3212
+ isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,
3213
+ tooltipPrefix = _ref.tooltipPrefix;
3214
+ var _useCoreTranslation = useCoreTranslation(),
3215
+ t = _useCoreTranslation.t;
3216
+ var nonEmptyTooltipPrefix = tooltipPrefix != null ? tooltipPrefix : t('layermanager-service') + ":";
3217
+ return jsx(Tooltip, {
3218
+ title: nonEmptyTooltipPrefix + " " + (serviceName === '' ? t('layermanager-sourcename-no-available') : serviceName),
3219
+ children: jsx(Typography, {
3220
+ sx: {
3221
+ fontSize: 12,
3222
+ fontWeight: 500,
3223
+ color: isEnabled ? 'geowebColors.layerManager.tableRowDefaultText.color' : 'geowebColors.layerManager.tableRowDisabledText.color',
3224
+ textOverflow: 'ellipsis',
3225
+ overflow: 'hidden',
3226
+ whiteSpace: 'nowrap'
3227
+ },
3228
+ children: serviceName === '' ? t('layermanager-sourcename-no-available') : serviceName
3229
+ })
3230
+ });
3231
+ };
3232
+
3192
3233
  /* *
3193
3234
  * Licensed under the Apache License, Version 2.0 (the "License");
3194
3235
  * you may not use this file except in compliance with the License.
@@ -3990,6 +4031,8 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
3990
4031
  var layerId = _ref8.layerId,
3991
4032
  layer = _ref8.layer,
3992
4033
  layerName = _ref8.layerName,
4034
+ _ref8$layerServiceNam = _ref8.layerServiceName,
4035
+ layerServiceName = _ref8$layerServiceNam === void 0 ? '' : _ref8$layerServiceNam,
3993
4036
  services = _ref8.services,
3994
4037
  mapId = _ref8.mapId,
3995
4038
  _ref8$isEDRLayer = _ref8.isEDRLayer,
@@ -4107,7 +4150,9 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
4107
4150
  style: layer.style
4108
4151
  }),
4109
4152
  isEDRLayer: isEDRLayer,
4110
- layerName: layerName
4153
+ isEnabled: isEnabled,
4154
+ layerName: layerName,
4155
+ layerServiceName: layerServiceName
4111
4156
  }), jsx(Grid, {
4112
4157
  alignItems: "center",
4113
4158
  className: columnClasses.column1,
@@ -4122,6 +4167,13 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
4122
4167
  onChangeActive: onClickRow,
4123
4168
  onChangeEnable: changeEnable
4124
4169
  })
4170
+ }), jsx(RowItemCollapse, {
4171
+ className: columnClasses.columnService,
4172
+ collapsedColumns: collapsedColumns,
4173
+ children: jsx(LayerService, {
4174
+ isEnabled: isEnabled,
4175
+ serviceName: layerServiceName
4176
+ })
4125
4177
  }), jsx(RowItemCollapse, {
4126
4178
  className: columnClasses.column2,
4127
4179
  collapsedColumns: collapsedColumns,
@@ -4233,7 +4285,9 @@ var Accordion = function Accordion(_ref0) {
4233
4285
  LeftButtons = _ref0.LeftButtons,
4234
4286
  LoadDuration = _ref0.LoadDuration,
4235
4287
  _ref0$isEDRLayer = _ref0.isEDRLayer,
4236
- isEDRLayer = _ref0$isEDRLayer === void 0 ? false : _ref0$isEDRLayer;
4288
+ isEDRLayer = _ref0$isEDRLayer === void 0 ? false : _ref0$isEDRLayer,
4289
+ layerServiceName = _ref0.layerServiceName,
4290
+ isEnabled = _ref0.isEnabled;
4237
4291
  var _useCoreTranslation3 = useCoreTranslation(),
4238
4292
  t = _useCoreTranslation3.t;
4239
4293
  var displayLayerName = isEDRLayer ? t('layermanager-EDR') + layerName : layerName;
@@ -4264,11 +4318,23 @@ var Accordion = function Accordion(_ref0) {
4264
4318
  }),
4265
4319
  children: jsxs(Grid, {
4266
4320
  container: true,
4267
- spacing: 3,
4321
+ spacing: 2,
4268
4322
  sx: {
4269
4323
  padding: '16px 32px'
4270
4324
  },
4271
4325
  children: [jsxs(Grid, {
4326
+ container: true,
4327
+ direction: "column",
4328
+ size: 12,
4329
+ children: [jsx(Grid, {
4330
+ children: t('layermanager-service')
4331
+ }), jsx(Grid, {
4332
+ children: jsx(LayerService, {
4333
+ isEnabled: isEnabled,
4334
+ serviceName: layerServiceName
4335
+ })
4336
+ })]
4337
+ }), jsxs(Grid, {
4272
4338
  container: true,
4273
4339
  children: [jsx(Grid, {
4274
4340
  children: t('layermanager-style-title')
@@ -4877,6 +4943,9 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
4877
4943
  var layerDisplayName = useSelector(function (store) {
4878
4944
  return layerSelectors.getLayerDisplayName(store, layerId);
4879
4945
  });
4946
+ var layerServiceName = useSelector(function (store) {
4947
+ return layerSelectors.getLayerServiceName(store, layerId);
4948
+ });
4880
4949
  var layerType = useSelector(function (store) {
4881
4950
  return layerSelectors.getLayerType(store, layerId);
4882
4951
  });
@@ -4941,6 +5010,7 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
4941
5010
  mapId: mapId,
4942
5011
  tooltipPrefix: settings == null || (_settings$opacity = settings.opacity) == null ? void 0 : _settings$opacity.tooltipPrefix
4943
5012
  }),
5013
+ layerServiceName: layerServiceName,
4944
5014
  layerServicesLayout: settings != null && (_settings$renderLayer = settings.renderLayer) != null && _settings$renderLayer.Element ? jsx(settings.renderLayer.Element, {
4945
5015
  layerId: layerId,
4946
5016
  mapId: mapId
@@ -5498,6 +5568,10 @@ var styles$1 = {
5498
5568
  display: 'inline-block',
5499
5569
  padding: '0 6px'
5500
5570
  }};
5571
+ var minSize = {
5572
+ width: 100,
5573
+ height: 126
5574
+ };
5501
5575
  var getLayerManagerSizeValue = function getLayerManagerSizeValue(size) {
5502
5576
  if (!size.width || typeof size.width !== 'number') {
5503
5577
  return 'sizeLarge';
@@ -5532,8 +5606,19 @@ var LayerManager = function LayerManager(_ref) {
5532
5606
  isDockedLayerManager = _ref$isDockedLayerMan === void 0 ? false : _ref$isDockedLayerMan,
5533
5607
  _ref$onToggleDock = _ref.onToggleDock,
5534
5608
  onToggleDock = _ref$onToggleDock === void 0 ? function () {} : _ref$onToggleDock,
5609
+ _ref$onDockedLayerMan = _ref.onDockedLayerManagerDragEnd,
5610
+ onDockedLayerManagerDragEnd = _ref$onDockedLayerMan === void 0 ? function () {} : _ref$onDockedLayerMan,
5611
+ _ref$onDockedLayerMan2 = _ref.onDockedLayerManagerSizeChange,
5612
+ onDockedLayerManagerSizeChange = _ref$onDockedLayerMan2 === void 0 ? function () {} : _ref$onDockedLayerMan2,
5613
+ _ref$onDockedLayerMan3 = _ref.onDockedLayerManagerDimensionsChange,
5614
+ onDockedLayerManagerDimensionsChange = _ref$onDockedLayerMan3 === void 0 ? function () {} : _ref$onDockedLayerMan3,
5535
5615
  _ref$size = _ref.size,
5536
5616
  size = _ref$size === void 0 ? sizeLarge : _ref$size,
5617
+ _ref$startDraggablePo = _ref.startDraggablePosition,
5618
+ startDraggablePosition = _ref$startDraggablePo === void 0 ? {
5619
+ x: 0,
5620
+ y: 0
5621
+ } : _ref$startDraggablePo,
5537
5622
  _ref$startPosition = _ref.startPosition,
5538
5623
  startPosition = _ref$startPosition === void 0 ? {
5539
5624
  top: 85,
@@ -5547,10 +5632,6 @@ var LayerManager = function LayerManager(_ref) {
5547
5632
  defaultCollapsedColumns = _ref$defaultCollapsed === void 0 ? {} : _ref$defaultCollapsed;
5548
5633
  var _useCoreTranslation = useCoreTranslation(),
5549
5634
  t = _useCoreTranslation.t;
5550
- var minSize = {
5551
- width: 100,
5552
- height: 126
5553
- };
5554
5635
  var theme = useTheme();
5555
5636
  renderCounter.count(LayerManager.name);
5556
5637
  var nonEmptyTitle = title != null ? title : t('layermanager-title');
@@ -5559,10 +5640,63 @@ var LayerManager = function LayerManager(_ref) {
5559
5640
  sizeInState = _React$useState[0],
5560
5641
  setSizeInState = _React$useState[1];
5561
5642
  var dataSize = getLayerManagerSizeValue(sizeInState);
5643
+ var wasOpenRef = React.useRef(isOpen);
5644
+ React.useLayoutEffect(function () {
5645
+ var isOpening = isOpen && !wasOpenRef.current;
5646
+ if (isDockedLayerManager && isOpening) {
5647
+ setSizeInState(calculateStartSize(minSize, size, startPosition));
5648
+ }
5649
+ wasOpenRef.current = isOpen;
5650
+ }, [isDockedLayerManager, isOpen, size, startPosition]);
5562
5651
  var _React$useState2 = React.useState(defaultCollapsedColumns),
5563
5652
  collapsedColumns = _React$useState2[0],
5564
5653
  setCollapsedColumns = _React$useState2[1];
5565
5654
  var stopWheelEventPropagationRef = useWheelStopPropagation();
5655
+ var handleDragEnd = React.useCallback(function (_position, dragSize) {
5656
+ if (isDockedLayerManager) {
5657
+ onDockedLayerManagerDragEnd(_position);
5658
+ onDockedLayerManagerSizeChange(getLayerManagerSizeValue(dragSize));
5659
+ onDockedLayerManagerDimensionsChange({
5660
+ width: dragSize.width,
5661
+ height: dragSize.height
5662
+ });
5663
+ }
5664
+ if (dragSize !== sizeInState) {
5665
+ setSizeInState(dragSize);
5666
+ }
5667
+ }, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerDragEnd, onDockedLayerManagerSizeChange, sizeInState]);
5668
+ var handleResizeStop = React.useCallback(function (_event, _direction, node) {
5669
+ var width = node.offsetWidth,
5670
+ height = node.offsetHeight;
5671
+ setSizeInState({
5672
+ width: width,
5673
+ height: height
5674
+ });
5675
+ if (isDockedLayerManager) {
5676
+ onDockedLayerManagerSizeChange(getLayerManagerSizeValue({
5677
+ width: width}));
5678
+ onDockedLayerManagerDimensionsChange({
5679
+ width: width,
5680
+ height: height
5681
+ });
5682
+ }
5683
+ }, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerSizeChange]);
5684
+ var handleChangeSize = React.useCallback(function (_ref2) {
5685
+ var width = _ref2.width;
5686
+ setSizeInState(function (prevSizeInState) {
5687
+ var nextSizeInState = Object.assign({}, prevSizeInState, {
5688
+ width: width
5689
+ });
5690
+ if (isDockedLayerManager) {
5691
+ onDockedLayerManagerSizeChange(getLayerManagerSizeValue(Object.assign({}, nextSizeInState)));
5692
+ onDockedLayerManagerDimensionsChange({
5693
+ width: width,
5694
+ height: nextSizeInState.height
5695
+ });
5696
+ }
5697
+ return nextSizeInState;
5698
+ });
5699
+ }, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerSizeChange]);
5566
5700
  return jsx(ToolContainerDraggable, {
5567
5701
  bounds: bounds,
5568
5702
  className: "layermanager",
@@ -5575,34 +5709,20 @@ var LayerManager = function LayerManager(_ref) {
5575
5709
  minHeight: minSize.height,
5576
5710
  minWidth: minSize.width,
5577
5711
  onClose: onClose,
5578
- onDragEnd: function onDragEnd(_position, dragSize) {
5579
- if (dragSize !== sizeInState) {
5580
- setSizeInState(dragSize);
5581
- }
5582
- },
5712
+ onDragEnd: handleDragEnd,
5583
5713
  onMouseDown: onMouseDown,
5584
- onResizeStop: function onResizeStop(_event, _direction, node) {
5585
- var width = node.offsetWidth,
5586
- height = node.offsetHeight;
5587
- setSizeInState({
5588
- width: width,
5589
- height: height
5590
- });
5591
- },
5714
+ onResizeStop: handleResizeStop,
5592
5715
  order: order,
5716
+ resetPositionOnOpen: isDockedLayerManager,
5593
5717
  rightHeaderComponent: jsx(HeaderOptionsConnect, {
5594
5718
  buttonSettings: settings == null || (_settings$toolbar3 = settings.toolbar) == null ? void 0 : _settings$toolbar3.controlButtonSettings,
5595
5719
  isDockedLayerManager: isDockedLayerManager,
5596
5720
  mapId: mapId,
5597
- onChangeSize: function onChangeSize(_ref2) {
5598
- var width = _ref2.width;
5599
- setSizeInState(Object.assign({}, sizeInState, {
5600
- width: width
5601
- }));
5602
- },
5721
+ onChangeSize: handleChangeSize,
5603
5722
  onClickDockButton: onToggleDock
5604
5723
  }),
5605
5724
  source: source,
5725
+ startDraggablePosition: startDraggablePosition,
5606
5726
  startPosition: startPosition,
5607
5727
  startSize: sizeInState,
5608
5728
  sx: Object.assign({}, layerManagerStyle, theme.palette.geowebColors.layerManager.root),
@@ -5786,6 +5906,12 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
5786
5906
  var dockedLayerManagerSize = useSelector(function (store) {
5787
5907
  return mapSelectors.getDockedLayerManagerSize(store, mapId);
5788
5908
  });
5909
+ var dockedLayerManagerPosition = useSelector(function (store) {
5910
+ return mapSelectors.getDockedLayerManagerPosition(store, mapId);
5911
+ });
5912
+ var dockedLayerManagerDimensions = useSelector(function (store) {
5913
+ return mapSelectors.getDockedLayerManagerDimensions(store, mapId);
5914
+ });
5789
5915
  var _useSetupDialog = useSetupDialog(dialogType, source),
5790
5916
  dialogOrder = _useSetupDialog.dialogOrder,
5791
5917
  setDialogOrder = _useSetupDialog.setDialogOrder,
@@ -5804,13 +5930,16 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
5804
5930
  type: uiTypes.DialogTypes.LayerManager,
5805
5931
  mapId: mapId,
5806
5932
  setOpen: true,
5807
- source: source
5933
+ source: source,
5934
+ origin: mapEnums.MapActionOrigin.map
5808
5935
  }));
5809
5936
  } else {
5810
5937
  // Close the floating layer manager and open docked layer manager
5811
5938
  dispatch(uiActions.setToggleOpenDialog({
5812
5939
  type: uiTypes.DialogTypes.DockedLayerManager + "-" + mapId,
5813
- setOpen: true
5940
+ setOpen: true,
5941
+ mapId: mapId,
5942
+ origin: mapEnums.MapActionOrigin.map
5814
5943
  }));
5815
5944
  }
5816
5945
  }, [dispatch, isDocked, mapId, onCloseDialog, source]);
@@ -5831,13 +5960,50 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
5831
5960
  isOpen: isDialogOpen,
5832
5961
  mapId: mapId || initialMapId,
5833
5962
  onClose: onCloseDialog,
5963
+ onDockedLayerManagerDimensionsChange: function onDockedLayerManagerDimensionsChange(dimensions) {
5964
+ if (!isDocked) {
5965
+ return;
5966
+ }
5967
+ dispatch(mapActions.setDockedLayerManagerDimensions({
5968
+ mapId: mapId,
5969
+ dockedLayerManagerDimensions: dimensions,
5970
+ origin: mapEnums.MapActionOrigin.map
5971
+ }));
5972
+ },
5973
+ onDockedLayerManagerDragEnd: function onDockedLayerManagerDragEnd(position) {
5974
+ if (!isDocked) {
5975
+ return;
5976
+ }
5977
+ dispatch(mapActions.setDockedLayerManagerPosition({
5978
+ mapId: mapId,
5979
+ dockedLayerManagerPosition: {
5980
+ x: position.x,
5981
+ y: position.y
5982
+ },
5983
+ origin: mapEnums.MapActionOrigin.map
5984
+ }));
5985
+ },
5986
+ onDockedLayerManagerSizeChange: function onDockedLayerManagerSizeChange(size) {
5987
+ if (!isDocked) {
5988
+ return;
5989
+ }
5990
+ dispatch(mapActions.setDockedLayerManagerSize({
5991
+ mapId: mapId,
5992
+ dockedLayerManagerSize: size,
5993
+ origin: mapEnums.MapActionOrigin.map
5994
+ }));
5995
+ },
5834
5996
  onMouseDown: setDialogOrder,
5835
5997
  onToggleDock: onToggleDock,
5836
5998
  order: dialogOrder,
5837
5999
  preloadedAvailableBaseLayers: preloadedAvailableBaseLayers,
5838
6000
  preloadedBaseServices: preloadedBaseServices,
5839
- size: isDocked ? returnCorrectSize(dockedLayerManagerSize) : sizeLarge,
6001
+ size: isDocked ? dockedLayerManagerDimensions || returnCorrectSize(dockedLayerManagerSize) : sizeLarge,
5840
6002
  source: uiSource,
6003
+ startDraggablePosition: isDocked ? dockedLayerManagerPosition : {
6004
+ x: 0,
6005
+ y: 0
6006
+ },
5841
6007
  startPosition: isDocked ? {
5842
6008
  top: 60,
5843
6009
  right: 16
@@ -5850,7 +6016,7 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
5850
6016
  source: uiSource
5851
6017
  }), !isDocked && jsx(LayerSelectConnect, {})]
5852
6018
  });
5853
- }, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, isDocked, isMultiMap, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource]);
6019
+ }, [bounds, dialogOrder, dispatch, dockedLayerManagerPosition, dockedLayerManagerDimensions, dockedLayerManagerSize, initialMapId, isDialogOpen, isDocked, isMultiMap, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource]);
5854
6020
  };
5855
6021
 
5856
6022
  var LayerManagerMapButtonConnect = function LayerManagerMapButtonConnect(_ref) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "15.2.0",
3
+ "version": "15.3.0",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,22 +8,22 @@
8
8
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
9
9
  },
10
10
  "dependencies": {
11
- "@opengeoweb/shared": "15.2.0",
11
+ "@opengeoweb/shared": "15.3.0",
12
12
  "react-redux": "^9.2.0",
13
- "@opengeoweb/store": "15.2.0",
14
- "@opengeoweb/time-slider": "15.2.0",
13
+ "@opengeoweb/store": "15.3.0",
14
+ "@opengeoweb/time-slider": "15.3.0",
15
15
  "@reduxjs/toolkit": "^2.6.1",
16
- "@opengeoweb/webmap-react": "15.2.0",
17
- "@opengeoweb/webmap": "15.2.0",
18
- "@opengeoweb/theme": "15.2.0",
16
+ "@opengeoweb/webmap-react": "15.3.0",
17
+ "@opengeoweb/webmap": "15.3.0",
18
+ "@opengeoweb/theme": "15.3.0",
19
19
  "axios": "^1.7.7",
20
- "@opengeoweb/layer-select": "15.2.0",
20
+ "@opengeoweb/layer-select": "15.3.0",
21
21
  "lodash": "^4.17.21",
22
22
  "ol": "^10.4.0",
23
23
  "react-sortablejs": "^6.1.4",
24
24
  "sortablejs": "^1.15.1",
25
25
  "@mui/system": "^7.3.2",
26
- "@opengeoweb/snackbar": "15.2.0",
26
+ "@opengeoweb/snackbar": "15.3.0",
27
27
  "react-router-dom": "^6.21.0",
28
28
  "react-draggable": "^4.4.6",
29
29
  "i18next": "^25.0.1",
@@ -31,7 +31,7 @@
31
31
  "dompurify": "^3.0.6",
32
32
  "@mui/material": "^7.0.1",
33
33
  "@tanstack/react-query": "^5.85.5",
34
- "@opengeoweb/api": "15.2.0",
34
+ "@opengeoweb/api": "15.3.0",
35
35
  "@types/geojson": "^7946.0.14",
36
36
  "@turf/turf": "^7.2.0",
37
37
  "proj4": "^2.15.0"
@@ -4,6 +4,7 @@ interface LayerRowUnstyledProps {
4
4
  layerId?: string;
5
5
  layer?: layerTypes.Layer;
6
6
  layerName?: string;
7
+ layerServiceName?: string;
7
8
  mapId: string;
8
9
  isEDRLayer?: boolean;
9
10
  onLayerRowClick?: (layerId?: string) => void;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface LayerServiceProps {
3
+ serviceName: string;
4
+ isEnabled?: boolean;
5
+ tooltipPrefix?: string;
6
+ }
7
+ declare const LayerService: React.FC<LayerServiceProps>;
8
+ export default LayerService;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import type { Position, DraggableSize, HeaderSize } from '@opengeoweb/shared';
3
- import type { layerTypes, serviceTypes, uiTypes } from '@opengeoweb/store';
2
+ import type { DraggablePosition, Position, DraggableSize, HeaderSize } from '@opengeoweb/shared';
3
+ import type { layerTypes, mapTypes, serviceTypes, uiTypes } from '@opengeoweb/store';
4
4
  import type { LayerManagerCustomSettings } from './LayerManagerUtils';
5
5
  interface LayerManagerProps {
6
6
  mapId: string;
@@ -17,7 +17,11 @@ interface LayerManagerProps {
17
17
  error?: string;
18
18
  isDockedLayerManager?: boolean;
19
19
  onToggleDock?: () => void;
20
+ onDockedLayerManagerDragEnd?: (position: DraggablePosition) => void;
21
+ onDockedLayerManagerSizeChange?: (size: mapTypes.DockedLayerManagerSize) => void;
22
+ onDockedLayerManagerDimensionsChange?: (dimensions: mapTypes.DockedLayerManagerDimensions) => void;
20
23
  size?: DraggableSize;
24
+ startDraggablePosition?: DraggablePosition;
21
25
  startPosition?: Position;
22
26
  settings?: LayerManagerCustomSettings;
23
27
  headerSize?: HeaderSize;
@@ -3,6 +3,7 @@ import type { DimensionTooltipGenerator, SingleValueComponentProps } from './Lay
3
3
  import type { Size, ToolbarButtonSettings } from './LayerManagerHeaderOptions';
4
4
  export declare const columnClasses: {
5
5
  column1: string;
6
+ columnService: string;
6
7
  column2: string;
7
8
  column3: string;
8
9
  column4: string;
@@ -45,6 +46,18 @@ export declare const layerManagerStyle: {
45
46
  '.baseLayer': {
46
47
  width: string;
47
48
  };
49
+ '.column-service': {
50
+ height: string;
51
+ alignContent: string;
52
+ alignItems: string;
53
+ display: string;
54
+ justifyContent: string;
55
+ whiteSpace: string;
56
+ overflow: string;
57
+ color: string;
58
+ flexGrow: number;
59
+ width: string;
60
+ };
48
61
  '.column-2': {
49
62
  height: string;
50
63
  alignContent: string;
@@ -70,6 +83,7 @@ export declare const layerManagerStyle: {
70
83
  width: string;
71
84
  };
72
85
  '.column-4': {
86
+ flexGrow: number;
73
87
  height: string;
74
88
  alignContent: string;
75
89
  alignItems: string;
@@ -78,8 +92,7 @@ export declare const layerManagerStyle: {
78
92
  whiteSpace: string;
79
93
  overflow: string;
80
94
  color: string;
81
- flexGrow: number;
82
- width: string;
95
+ width: number;
83
96
  };
84
97
  '.column-5': {
85
98
  height: string;
@@ -138,7 +151,7 @@ export declare const layerManagerStyle: {
138
151
  '.enable-btn-mini': {
139
152
  display: string;
140
153
  };
141
- '.activateLayer-btn, .enable-btn, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
154
+ '.activateLayer-btn, .enable-btn, .column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
142
155
  display: string;
143
156
  };
144
157
  '.addLayer-column, .setProjection-column, .overlayers-column': {
@@ -171,7 +184,7 @@ export declare const layerManagerStyle: {
171
184
  };
172
185
  '@container (max-width: 600px)': {
173
186
  '.layermanager': {
174
- '.column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
187
+ '.column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
175
188
  display: string;
176
189
  };
177
190
  '.columnLayerName, .baseLayer': {
@@ -229,6 +242,9 @@ export interface LayerManagerCustomSettings {
229
242
  tooltipTitle?: string;
230
243
  icon?: React.ReactNode;
231
244
  };
245
+ layerService?: {
246
+ title: string;
247
+ };
232
248
  layerName?: {
233
249
  title: string;
234
250
  };
@@ -1,9 +1,9 @@
1
1
  import type { Feature, View } from 'ol';
2
- import type { TimeSliderStartCenterEndTime } from '@opengeoweb/store';
2
+ import type { TimeSliderStartEndStep } from '@opengeoweb/store';
3
3
  import type { Dimension, RefTimeDimensionModes } from '@opengeoweb/webmap';
4
4
  import type { MapLocation, OnInitializeLayerProps, TimeContextType, UpdateLayerInfoPayload } from '@opengeoweb/webmap-react';
5
- export declare const makePrefetchTimeSpan: (timeSliderStartCenterEndTime: TimeSliderStartCenterEndTime, isAnimating: boolean, prefetchList: number[]) => TimeContextType;
6
- export declare const usePrefetchTimeSpan: (timeSliderStartCenterEndTime: TimeSliderStartCenterEndTime, isAnimating: boolean, animationList: number[], refTimeDimensionModes?: RefTimeDimensionModes) => TimeContextType;
5
+ export declare const makePrefetchTimeSpan: (timeSliderStartCenterEndTime: TimeSliderStartEndStep, isAnimating: boolean, prefetchList: number[]) => TimeContextType;
6
+ export declare const usePrefetchTimeSpan: (timeSliderStartCenterEndTime: TimeSliderStartEndStep, isAnimating: boolean, animationList: number[], refTimeDimensionModes?: RefTimeDimensionModes) => TimeContextType;
7
7
  export declare const makeLayerInfoPayload: (payload: OnInitializeLayerProps, mapDimensions: Dimension[], mapId: string) => UpdateLayerInfoPayload;
8
8
  export declare const getCenterOfLinkedFeature: (feature: Feature | undefined, srs: string) => MapLocation | null;
9
9
  interface UseFitAndHighlightWarningFeatureOptions {