@opengeoweb/workspace 20.0.0 → 20.0.1

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/dist/index.esm.js CHANGED
@@ -7,7 +7,7 @@ import { chunk, cloneDeep, isEqual, isString } from 'lodash';
7
7
  import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
8
8
  import { queryOptions, useQueryClient, useQuery, useMutation, useIsMutating } from '@tanstack/react-query';
9
9
  import { sessionStorageProvider, isAxiosError, getAxiosErrorMessage, isAuthError, isAxiosAuthError, SHARED_NAMESPACE, safelyInitI18nForTestsAndStories, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, usePrevious, AlertBanner, CustomAccordion, CustomTooltip, linkifyText, dateUtils, SystemScope, SearchHighlight, ToggleMenu, SearchField, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, ConfirmationButtons } from '@opengeoweb/shared';
10
- import { pluginsActions, getPluginState, pluginsReducer, PluginProvider, PluginDebugProvider, OverlayPluginMenuButton, usePluginCatalog } from '@opengeoweb/plugins';
10
+ import { pluginsActions, getPluginState, pluginsReducer, PluginProvider, PluginDebugProvider, OverlayPluginMenuButton, usePluginCatalog, OverlayPluginWindows } from '@opengeoweb/plugins';
11
11
  import { warningsFiltersActions, publicWarningsSelectors, warningsTranslations, WARN_NAMESPACE } from '@opengeoweb/warnings';
12
12
  import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
13
13
  import { isAxiosError as isAxiosError$1 } from 'axios';
@@ -1226,6 +1226,11 @@ var workspacePresetsFallback = [
1226
1226
  * Copyright 2026 - Finnish Meteorological Institute (FMI)
1227
1227
  * Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
1228
1228
  * */
1229
+ /*
1230
+ configureLibraryDefaults([LIB_KEY], {
1231
+ staleTime: 5 * 60 * 1000,
1232
+ });
1233
+ */
1229
1234
  var LIB_KEY = 'workspace-lib';
1230
1235
  var getPresetBaseUrl = function getPresetBaseUrl() {
1231
1236
  var config = sessionStorageProvider.getConfig();
@@ -1647,6 +1652,258 @@ var PresetFilterType;
1647
1652
  PresetFilterType["favourites"] = "favourites";
1648
1653
  })(PresetFilterType || (PresetFilterType = {}));
1649
1654
 
1655
+ /* eslint-disable no-redeclare */
1656
+ /* *
1657
+ * Licensed under the Apache License, Version 2.0 (the "License");
1658
+ * you may not use this file except in compliance with the License.
1659
+ * You may obtain a copy of the License at
1660
+ *
1661
+ * http://www.apache.org/licenses/LICENSE-2.0
1662
+ *
1663
+ * Unless required by applicable law or agreed to in writing, software
1664
+ * distributed under the License is distributed on an "AS IS" BASIS,
1665
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1666
+ * See the License for the specific language governing permissions and
1667
+ * limitations under the License.
1668
+ *
1669
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
1670
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
1671
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
1672
+ * */
1673
+ var getSnackbarMessage$1 = function getSnackbarMessage(action, title, is_shared) {
1674
+ // Trim and add quotes
1675
+ var trimmedTitle = title.trim();
1676
+ switch (action) {
1677
+ case WorkspacePresetAction.DELETE:
1678
+ return {
1679
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1680
+ key: 'workspace-list-success-delete',
1681
+ params: {
1682
+ TITLE: trimmedTitle
1683
+ }
1684
+ };
1685
+ case WorkspacePresetAction.DELETE_SYSTEM_PRESET:
1686
+ return {
1687
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1688
+ key: 'workspace-list-success-delete-system',
1689
+ params: {
1690
+ TITLE: trimmedTitle
1691
+ }
1692
+ };
1693
+ case WorkspacePresetAction.DUPLICATE:
1694
+ return {
1695
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1696
+ key: 'workspace-list-success-duplicate',
1697
+ params: {
1698
+ TITLE: trimmedTitle
1699
+ }
1700
+ };
1701
+ case WorkspacePresetAction.EDIT:
1702
+ return {
1703
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1704
+ key: 'workspace-list-success-edit',
1705
+ params: {
1706
+ TITLE: trimmedTitle
1707
+ }
1708
+ };
1709
+ case WorkspacePresetAction.RESET:
1710
+ return {
1711
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1712
+ key: 'workspace-list-success-reset',
1713
+ params: {
1714
+ TITLE: trimmedTitle
1715
+ }
1716
+ };
1717
+ case WorkspacePresetAction.SHARE:
1718
+ return {
1719
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1720
+ key: is_shared ? 'workspace-list-success-unshare' : 'workspace-list-success-share',
1721
+ params: {
1722
+ TITLE: trimmedTitle
1723
+ }
1724
+ };
1725
+ default:
1726
+ return {
1727
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
1728
+ key: 'workspace-list-success-save',
1729
+ params: {
1730
+ TITLE: trimmedTitle
1731
+ }
1732
+ };
1733
+ }
1734
+ };
1735
+ function getEmptyWorkspaceListItem(t) {
1736
+ return {
1737
+ id: undefined,
1738
+ title: t ? t('workspace-new') : undefined,
1739
+ labels: undefined,
1740
+ scope: 'system',
1741
+ "abstract": '',
1742
+ viewType: 'singleWindow'
1743
+ };
1744
+ }
1745
+ function getEmptyMapWorkspace(t) {
1746
+ return Object.assign({}, getEmptyWorkspaceListItem(t), {
1747
+ views: {
1748
+ allIds: ['1_screen'],
1749
+ byId: {
1750
+ '1_screen': {
1751
+ title: t ? t('workspace-mappreset-new') : undefined,
1752
+ componentType: 'Map',
1753
+ initialProps: {
1754
+ mapPreset: {
1755
+ shouldShowLayerManager: true,
1756
+ dockedLayerManagerSize: 'sizeSmall'
1757
+ },
1758
+ syncGroupsIds: []
1759
+ }
1760
+ }
1761
+ }
1762
+ },
1763
+ mosaicNode: '1_screen'
1764
+ });
1765
+ }
1766
+ var getEmptyWorkspacePreset = function getEmptyWorkspacePreset() {
1767
+ return {
1768
+ scope: 'system',
1769
+ "abstract": '',
1770
+ views: {
1771
+ allIds: ['1_screen'],
1772
+ byId: {
1773
+ '1_screen': {
1774
+ componentType: 'Map',
1775
+ initialProps: {
1776
+ mapPreset: {
1777
+ shouldShowLayerManager: true,
1778
+ dockedLayerManagerSize: 'sizeSmall'
1779
+ },
1780
+ syncGroupsIds: []
1781
+ }
1782
+ }
1783
+ }
1784
+ },
1785
+ mosaicNode: '1_screen',
1786
+ viewType: 'singleWindow',
1787
+ username: 'global'
1788
+ };
1789
+ };
1790
+ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(emptyWorkspaceTitle, emptyMapWorkspaceTitle, customMapPreset) {
1791
+ var customEmptyMapWorkspace = cloneDeep(getEmptyWorkspacePreset());
1792
+ if (customMapPreset) {
1793
+ customEmptyMapWorkspace.views.byId['1_screen'].initialProps.mapPreset = customMapPreset;
1794
+ }
1795
+ customEmptyMapWorkspace.views.byId['1_screen'].title = emptyMapWorkspaceTitle;
1796
+ var emptyWorkspacePreset = Object.assign({}, customEmptyMapWorkspace, {
1797
+ title: emptyWorkspaceTitle
1798
+ });
1799
+ return emptyWorkspacePreset;
1800
+ };
1801
+ var LOCAL_SOUNDINGS_ID = 'newSoundingsWorkspace';
1802
+ var getNewSoundingsWorkspaceListItem = function getNewSoundingsWorkspaceListItem(t) {
1803
+ return {
1804
+ id: LOCAL_SOUNDINGS_ID,
1805
+ title: t ? t('workspace-new-soundings') : 'New soundings workspace',
1806
+ labels: undefined,
1807
+ scope: 'system',
1808
+ "abstract": '',
1809
+ viewType: 'multiWindow'
1810
+ };
1811
+ };
1812
+ function getNewSoundingsWorkspace(t) {
1813
+ return Object.assign({}, getNewSoundingsWorkspaceListItem(t), {
1814
+ views: {
1815
+ allIds: ['1_screen', '2_screen'],
1816
+ byId: {
1817
+ '1_screen': {
1818
+ mosaicNodeId: '1_screen',
1819
+ title: 'New soundings map',
1820
+ componentType: 'Map',
1821
+ initialProps: {
1822
+ mapPreset: {
1823
+ shouldShowLegend: false,
1824
+ shouldShowLayerManager: false
1825
+ }
1826
+ }
1827
+ },
1828
+ '2_screen': {
1829
+ mosaicNodeId: '2_screen',
1830
+ title: 'New soundings view',
1831
+ componentType: 'Soundings',
1832
+ initialProps: {}
1833
+ }
1834
+ }
1835
+ },
1836
+ linking: {
1837
+ '2_screen': ['1_screen']
1838
+ },
1839
+ syncGroups: [{
1840
+ id: 'Features_2_screen',
1841
+ sourcePanelId: '2_screen',
1842
+ type: 'SYNCGROUPS_TYPE_SETFEATURES'
1843
+ }],
1844
+ mosaicNode: {
1845
+ direction: 'row',
1846
+ first: '1_screen',
1847
+ second: '2_screen'
1848
+ }
1849
+ });
1850
+ }
1851
+ var getBEViewsFromState = function getBEViewsFromState(workspace) {
1852
+ var _workspace$views$allI, _workspace$views;
1853
+ var result = [];
1854
+ ((_workspace$views$allI = workspace == null || (_workspace$views = workspace.views) == null ? void 0 : _workspace$views.allIds) != null ? _workspace$views$allI : []).forEach(function (id) {
1855
+ var _workspace$views$byId;
1856
+ var view = (_workspace$views$byId = workspace.views.byId[id]) != null ? _workspace$views$byId : {};
1857
+ result.push({
1858
+ mosaicNodeId: id,
1859
+ title: typeof view.title === 'string' && view.title.trim() ? view.title : id,
1860
+ componentType: view.componentType,
1861
+ initialProps: view.initialProps
1862
+ });
1863
+ });
1864
+ return result;
1865
+ };
1866
+ var togglePresetFilter = function togglePresetFilter(filters, id, isSelected, isAdmin, isFavouritesEnabled) {
1867
+ if (isAdmin === void 0) {
1868
+ isAdmin = false;
1869
+ }
1870
+ if (isFavouritesEnabled === void 0) {
1871
+ isFavouritesEnabled = true;
1872
+ }
1873
+ if (!filters.some(function (filter) {
1874
+ return filter.id === id;
1875
+ })) {
1876
+ return filters;
1877
+ }
1878
+ var availableFilters = filters.filter(function (filter) {
1879
+ if (filter.id === PresetFilterType.favourites) {
1880
+ return isFavouritesEnabled;
1881
+ }
1882
+ return !isAdmin || filter.id === 'system' || filter.id === 'shared';
1883
+ });
1884
+ var allSelected = availableFilters.every(function (filter) {
1885
+ return filter.isSelected;
1886
+ });
1887
+ var allUnselected = availableFilters.every(function (filter) {
1888
+ return filter.id === id ? !isSelected : !filter.isSelected;
1889
+ });
1890
+ return filters.map(function (filter) {
1891
+ if (allSelected) {
1892
+ return Object.assign({}, filter, {
1893
+ isSelected: filter.id === id && isSelected
1894
+ });
1895
+ }
1896
+ if (isAdmin && id !== PresetFilterType.favourites && filter.id !== PresetFilterType.favourites) {
1897
+ return Object.assign({}, filter, {
1898
+ isSelected: filter.id === id
1899
+ });
1900
+ }
1901
+ return Object.assign({}, filter, {
1902
+ isSelected: allUnselected || (filter.id === id ? isSelected : filter.isSelected)
1903
+ });
1904
+ });
1905
+ };
1906
+
1650
1907
  /* *
1651
1908
  * Licensed under the Apache License, Version 2.0 (the "License");
1652
1909
  * you may not use this file except in compliance with the License.
@@ -1684,7 +1941,13 @@ var sharedFilterState = {
1684
1941
  };
1685
1942
  ({
1686
1943
  id: PresetFilterType.plugin});
1687
- var defaultPresetFilterState = [personalFilterState, systemFilterState, sharedFilterState];
1944
+ var favouriteFilterState = {
1945
+ label: 'workspace-favourites',
1946
+ id: PresetFilterType.favourites,
1947
+ isSelected: true,
1948
+ isDisabled: false
1949
+ };
1950
+ var defaultPresetFilterState = [personalFilterState, systemFilterState, sharedFilterState, favouriteFilterState];
1688
1951
  var initialState$2 = {
1689
1952
  error: undefined,
1690
1953
  isWorkspaceListDialogOpen: false,
@@ -1741,58 +2004,11 @@ var slice$2 = createSlice({
1741
2004
  var _action$payload = action.payload,
1742
2005
  id = _action$payload.id,
1743
2006
  isSelected = _action$payload.isSelected,
1744
- isAdmin = _action$payload.isAdmin;
1745
- if (id === PresetFilterType.favourites) {
1746
- draft.favouritesOnly = isSelected;
1747
- draft.workspaceListFilters = draft.workspaceListFilters.map(function (filter) {
1748
- return Object.assign({}, filter, {
1749
- isSelected: true
1750
- });
1751
- });
1752
- return;
1753
- }
1754
- if (draft.favouritesOnly) {
1755
- draft.favouritesOnly = false;
1756
- }
1757
- var relevantFilters = isAdmin ? draft.workspaceListFilters.filter(function (filter) {
1758
- return filter.id === 'system' || filter.id === 'shared';
1759
- }) : draft.workspaceListFilters;
1760
- var index = draft.workspaceListFilters.findIndex(function (filter) {
1761
- return filter.id === id;
1762
- });
1763
- if (index !== -1) {
1764
- if (isAdmin) {
1765
- draft.workspaceListFilters.forEach(function (filter, i) {
1766
- draft.workspaceListFilters[i].isSelected = filter.id === id;
1767
- });
1768
- } else {
1769
- var isAllSelected = relevantFilters.every(function (filter) {
1770
- return filter.isSelected;
1771
- });
1772
- if (isAllSelected) {
1773
- draft.workspaceListFilters.forEach(function (filter, i) {
1774
- draft.workspaceListFilters[i].isSelected = filter.id === id ? isSelected : false;
1775
- });
1776
- } else {
1777
- draft.workspaceListFilters[index] = Object.assign({}, draft.workspaceListFilters[index], {
1778
- isSelected: isSelected
1779
- });
1780
- var isAllUnSelected = relevantFilters.every(function (filter) {
1781
- return !filter.isSelected;
1782
- });
1783
- if (isAllUnSelected) {
1784
- draft.workspaceListFilters.forEach(function (_, i) {
1785
- draft.workspaceListFilters[i].isSelected = true;
1786
- });
1787
- }
1788
- }
1789
- }
1790
- }
2007
+ isAdmin = _action$payload.isAdmin,
2008
+ isFavouritesEnabled = _action$payload.isFavouritesEnabled;
2009
+ draft.workspaceListFilters = togglePresetFilter(draft.workspaceListFilters, id, isSelected, isAdmin, isFavouritesEnabled);
1791
2010
  },
1792
2011
  setSelectAllFilterChip: function setSelectAllFilterChip(draft) {
1793
- if (draft.favouritesOnly) {
1794
- draft.favouritesOnly = false;
1795
- }
1796
2012
  draft.workspaceListFilters = draft.workspaceListFilters.map(function (filter) {
1797
2013
  return Object.assign({}, filter, {
1798
2014
  isSelected: true
@@ -1858,7 +2074,7 @@ var defaultViewPresetsFilters = [{
1858
2074
  id: PresetFilterType.shared,
1859
2075
  isSelected: true,
1860
2076
  isDisabled: false
1861
- }];
2077
+ }, favouriteFilterState];
1862
2078
  var pluginViewPresetsFilter = {
1863
2079
  label: 'shared-filter-plugin-view-presets',
1864
2080
  id: PresetFilterType.plugin,
@@ -2048,64 +2264,17 @@ var slice$1 = createSlice({
2048
2264
  id = _action$payload1.id,
2049
2265
  isSelected = _action$payload1.isSelected,
2050
2266
  panelId = _action$payload1.panelId,
2051
- isAdmin = _action$payload1.isAdmin;
2267
+ isAdmin = _action$payload1.isAdmin,
2268
+ isFavouritesEnabled = _action$payload1.isFavouritesEnabled;
2052
2269
  var entity = draft.entities[panelId];
2053
2270
  if (entity) {
2054
- if (id === PresetFilterType.favourites) {
2055
- entity.favouritesOnly = isSelected;
2056
- entity.filters = entity.filters.map(function (filter) {
2057
- return Object.assign({}, filter, {
2058
- isSelected: true
2059
- });
2060
- });
2061
- return;
2062
- }
2063
- if (entity.favouritesOnly) {
2064
- entity.favouritesOnly = false;
2065
- }
2066
- var relevantFilters = isAdmin ? entity.filters.filter(function (filter) {
2067
- return filter.id === 'system' || filter.id === 'shared';
2068
- }) : entity.filters;
2069
- var index = entity.filters.findIndex(function (filter) {
2070
- return filter.id === id;
2071
- });
2072
- if (index !== -1) {
2073
- if (isAdmin) {
2074
- entity.filters.forEach(function (filter, i) {
2075
- entity.filters[i].isSelected = filter.id === id;
2076
- });
2077
- } else {
2078
- var isAllSelected = relevantFilters.every(function (filter) {
2079
- return filter.isSelected;
2080
- });
2081
- if (isAllSelected) {
2082
- entity.filters.forEach(function (filter, i) {
2083
- entity.filters[i].isSelected = filter.id === id ? isSelected : false;
2084
- });
2085
- } else {
2086
- entity.filters[index] = Object.assign({}, entity.filters[index], {
2087
- isSelected: isSelected
2088
- });
2089
- var isAllUnSelected = relevantFilters.every(function (filter) {
2090
- return !filter.isSelected;
2091
- });
2092
- if (isAllUnSelected) {
2093
- entity.filters.forEach(function (_, i) {
2094
- entity.filters[i].isSelected = true;
2095
- });
2096
- }
2097
- }
2098
- }
2099
- }
2271
+ entity.filters = togglePresetFilter(entity.filters, id, isSelected, isAdmin, isFavouritesEnabled);
2100
2272
  }
2101
2273
  },
2102
2274
  setSelectAllFilterChip: function setSelectAllFilterChip(draft, action) {
2103
2275
  var panelId = action.payload.panelId;
2104
2276
  var entity = draft.entities[panelId];
2105
2277
  if (entity) {
2106
- if (entity.favouritesOnly) {
2107
- entity.favouritesOnly = false;
2108
- }
2109
2278
  entity.filters = entity.filters.map(function (filter) {
2110
2279
  return Object.assign({}, filter, {
2111
2280
  isSelected: true
@@ -2317,218 +2486,6 @@ var slice$1 = createSlice({
2317
2486
  var viewPresetsReducer = slice$1.reducer,
2318
2487
  viewPresetActions = slice$1.actions;
2319
2488
 
2320
- /* eslint-disable no-redeclare */
2321
- /* *
2322
- * Licensed under the Apache License, Version 2.0 (the "License");
2323
- * you may not use this file except in compliance with the License.
2324
- * You may obtain a copy of the License at
2325
- *
2326
- * http://www.apache.org/licenses/LICENSE-2.0
2327
- *
2328
- * Unless required by applicable law or agreed to in writing, software
2329
- * distributed under the License is distributed on an "AS IS" BASIS,
2330
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2331
- * See the License for the specific language governing permissions and
2332
- * limitations under the License.
2333
- *
2334
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
2335
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
2336
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
2337
- * */
2338
- var getSnackbarMessage$1 = function getSnackbarMessage(action, title, is_shared) {
2339
- // Trim and add quotes
2340
- var trimmedTitle = title.trim();
2341
- switch (action) {
2342
- case WorkspacePresetAction.DELETE:
2343
- return {
2344
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2345
- key: 'workspace-list-success-delete',
2346
- params: {
2347
- TITLE: trimmedTitle
2348
- }
2349
- };
2350
- case WorkspacePresetAction.DELETE_SYSTEM_PRESET:
2351
- return {
2352
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2353
- key: 'workspace-list-success-delete-system',
2354
- params: {
2355
- TITLE: trimmedTitle
2356
- }
2357
- };
2358
- case WorkspacePresetAction.DUPLICATE:
2359
- return {
2360
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2361
- key: 'workspace-list-success-duplicate',
2362
- params: {
2363
- TITLE: trimmedTitle
2364
- }
2365
- };
2366
- case WorkspacePresetAction.EDIT:
2367
- return {
2368
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2369
- key: 'workspace-list-success-edit',
2370
- params: {
2371
- TITLE: trimmedTitle
2372
- }
2373
- };
2374
- case WorkspacePresetAction.RESET:
2375
- return {
2376
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2377
- key: 'workspace-list-success-reset',
2378
- params: {
2379
- TITLE: trimmedTitle
2380
- }
2381
- };
2382
- case WorkspacePresetAction.SHARE:
2383
- return {
2384
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2385
- key: is_shared ? 'workspace-list-success-unshare' : 'workspace-list-success-share',
2386
- params: {
2387
- TITLE: trimmedTitle
2388
- }
2389
- };
2390
- default:
2391
- return {
2392
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2393
- key: 'workspace-list-success-save',
2394
- params: {
2395
- TITLE: trimmedTitle
2396
- }
2397
- };
2398
- }
2399
- };
2400
- function getEmptyWorkspaceListItem(t) {
2401
- return {
2402
- id: undefined,
2403
- title: t ? t('workspace-new') : undefined,
2404
- labels: undefined,
2405
- scope: 'system',
2406
- "abstract": '',
2407
- viewType: 'singleWindow'
2408
- };
2409
- }
2410
- function getEmptyMapWorkspace(t) {
2411
- return Object.assign({}, getEmptyWorkspaceListItem(t), {
2412
- views: {
2413
- allIds: ['1_screen'],
2414
- byId: {
2415
- '1_screen': {
2416
- title: t ? t('workspace-mappreset-new') : undefined,
2417
- componentType: 'Map',
2418
- initialProps: {
2419
- mapPreset: {
2420
- shouldShowLayerManager: true,
2421
- dockedLayerManagerSize: 'sizeSmall'
2422
- },
2423
- syncGroupsIds: []
2424
- }
2425
- }
2426
- }
2427
- },
2428
- mosaicNode: '1_screen'
2429
- });
2430
- }
2431
- var getEmptyWorkspacePreset = function getEmptyWorkspacePreset() {
2432
- return {
2433
- scope: 'system',
2434
- "abstract": '',
2435
- views: {
2436
- allIds: ['1_screen'],
2437
- byId: {
2438
- '1_screen': {
2439
- componentType: 'Map',
2440
- initialProps: {
2441
- mapPreset: {
2442
- shouldShowLayerManager: true,
2443
- dockedLayerManagerSize: 'sizeSmall'
2444
- },
2445
- syncGroupsIds: []
2446
- }
2447
- }
2448
- }
2449
- },
2450
- mosaicNode: '1_screen',
2451
- viewType: 'singleWindow',
2452
- username: 'global'
2453
- };
2454
- };
2455
- var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(emptyWorkspaceTitle, emptyMapWorkspaceTitle, customMapPreset) {
2456
- var customEmptyMapWorkspace = cloneDeep(getEmptyWorkspacePreset());
2457
- if (customMapPreset) {
2458
- customEmptyMapWorkspace.views.byId['1_screen'].initialProps.mapPreset = customMapPreset;
2459
- }
2460
- customEmptyMapWorkspace.views.byId['1_screen'].title = emptyMapWorkspaceTitle;
2461
- var emptyWorkspacePreset = Object.assign({}, customEmptyMapWorkspace, {
2462
- title: emptyWorkspaceTitle
2463
- });
2464
- return emptyWorkspacePreset;
2465
- };
2466
- var LOCAL_SOUNDINGS_ID = 'newSoundingsWorkspace';
2467
- var getNewSoundingsWorkspaceListItem = function getNewSoundingsWorkspaceListItem(t) {
2468
- return {
2469
- id: LOCAL_SOUNDINGS_ID,
2470
- title: t ? t('workspace-new-soundings') : 'New soundings workspace',
2471
- labels: undefined,
2472
- scope: 'system',
2473
- "abstract": '',
2474
- viewType: 'multiWindow'
2475
- };
2476
- };
2477
- function getNewSoundingsWorkspace(t) {
2478
- return Object.assign({}, getNewSoundingsWorkspaceListItem(t), {
2479
- views: {
2480
- allIds: ['1_screen', '2_screen'],
2481
- byId: {
2482
- '1_screen': {
2483
- mosaicNodeId: '1_screen',
2484
- title: 'New soundings map',
2485
- componentType: 'Map',
2486
- initialProps: {
2487
- mapPreset: {
2488
- shouldShowLegend: false,
2489
- shouldShowLayerManager: false
2490
- }
2491
- }
2492
- },
2493
- '2_screen': {
2494
- mosaicNodeId: '2_screen',
2495
- title: 'New soundings view',
2496
- componentType: 'Soundings',
2497
- initialProps: {}
2498
- }
2499
- }
2500
- },
2501
- linking: {
2502
- '2_screen': ['1_screen']
2503
- },
2504
- syncGroups: [{
2505
- id: 'Features_2_screen',
2506
- sourcePanelId: '2_screen',
2507
- type: 'SYNCGROUPS_TYPE_SETFEATURES'
2508
- }],
2509
- mosaicNode: {
2510
- direction: 'row',
2511
- first: '1_screen',
2512
- second: '2_screen'
2513
- }
2514
- });
2515
- }
2516
- var getBEViewsFromState = function getBEViewsFromState(workspace) {
2517
- var _workspace$views$allI, _workspace$views;
2518
- var result = [];
2519
- ((_workspace$views$allI = workspace == null || (_workspace$views = workspace.views) == null ? void 0 : _workspace$views.allIds) != null ? _workspace$views$allI : []).forEach(function (id) {
2520
- var _workspace$views$byId;
2521
- var view = (_workspace$views$byId = workspace.views.byId[id]) != null ? _workspace$views$byId : {};
2522
- result.push({
2523
- mosaicNodeId: id,
2524
- title: typeof view.title === 'string' && view.title.trim() ? view.title : id,
2525
- componentType: view.componentType,
2526
- initialProps: view.initialProps
2527
- });
2528
- });
2529
- return result;
2530
- };
2531
-
2532
2489
  var initialState = {
2533
2490
  id: '',
2534
2491
  title: '',
@@ -3314,7 +3271,7 @@ var getViewPresetListFiltersForView = createSelector(getViewPresetById, function
3314
3271
  if (isAdmin) {
3315
3272
  // Admin users: Only system and shared filters
3316
3273
  return filters.filter(function (filter) {
3317
- return filter.id === 'system' || filter.id === 'shared';
3274
+ return filter.id === 'system' || filter.id === 'shared' || filter.id === 'favourites';
3318
3275
  }).map(function (filter) {
3319
3276
  return Object.assign({}, filter, {
3320
3277
  isDisabled: false
@@ -3345,10 +3302,6 @@ var getViewPresetLabelFilters = createSelector(getViewPresetById, function (_sto
3345
3302
  }, function (viewPreset) {
3346
3303
  return viewPreset == null ? void 0 : viewPreset.labelFilters;
3347
3304
  }, selectorMemoizationOptions);
3348
- var getFavouritesOnly$1 = createSelector(getViewPresetById, function (entity) {
3349
- var _entity$favouritesOnl;
3350
- return (_entity$favouritesOnl = entity == null ? void 0 : entity.favouritesOnly) != null ? _entity$favouritesOnl : false;
3351
- });
3352
3305
 
3353
3306
  /* *
3354
3307
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3774,7 +3727,7 @@ var getWorkspaceListFilters = createSelector(function (store) {
3774
3727
  if (isAdmin) {
3775
3728
  // Only return system and shared for admins
3776
3729
  return filters.filter(function (filter) {
3777
- return filter.id === 'system' || filter.id === 'shared';
3730
+ return filter.id === 'system' || filter.id === 'shared' || filter.id === 'favourites';
3778
3731
  }).map(function (filter) {
3779
3732
  return Object.assign({}, filter, {
3780
3733
  isDisabled: false
@@ -3799,17 +3752,6 @@ var getWorkspaceLabelFilters = createSelector(getWorkspaceListStore, function (s
3799
3752
  }, function (state) {
3800
3753
  return state.workspaceLabelFilters;
3801
3754
  }, selectorMemoizationOptions);
3802
- var getFavouritesOnly = createSelector(getWorkspaceListStore, function (state) {
3803
- var _state$favouritesOnly;
3804
- return (_state$favouritesOnly = state == null ? void 0 : state.favouritesOnly) != null ? _state$favouritesOnly : false;
3805
- });
3806
- var filterAndSortFavouritePresets = function filterAndSortFavouritePresets(presets, isFavourite, favouritesOnly) {
3807
- return presets.filter(function (preset) {
3808
- return !favouritesOnly || isFavourite(preset);
3809
- }).sort(function (first, second) {
3810
- return Number(isFavourite(second)) - Number(isFavourite(first));
3811
- });
3812
- };
3813
3755
 
3814
3756
  var emptyWorkspaceBEData = Object.assign({}, getEmptyMapWorkspace(), {
3815
3757
  views: [{
@@ -6310,7 +6252,12 @@ var humanizeLabelStrings = function humanizeLabelStrings(value) {
6310
6252
  return match.toUpperCase();
6311
6253
  });
6312
6254
  };
6313
- var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilters, username, isAdmin, labelFilters, searchQuery) {
6255
+ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilters, username, isAdmin, labelFilters, searchQuery, isFavourite) {
6256
+ if (isFavourite === void 0) {
6257
+ isFavourite = function isFavourite() {
6258
+ return false;
6259
+ };
6260
+ }
6314
6261
  var searchFiltered = searchQuery ? presets.filter(function (preset) {
6315
6262
  var terms = searchQuery.toLowerCase().trim().split(/\s+/).filter(Boolean);
6316
6263
  var fields = [preset.title, preset["abstract"], preset.description].filter(Boolean).map(function (field) {
@@ -6341,7 +6288,7 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
6341
6288
  // Regular users: Keep everything
6342
6289
  return true;
6343
6290
  }) : searchFiltered.filter(function (preset) {
6344
- return selectedIds.includes(PresetFilterType.system) && preset.scope === 'system' || selectedIds.includes(PresetFilterType.personal) && preset.scope === 'user' && preset.username === username || selectedIds.includes(PresetFilterType.shared) && preset.scope === 'user' && preset.is_shared && (isAdmin || preset.username !== username) || selectedIds.includes(PresetFilterType.plugin) && preset.scope === 'plugin';
6291
+ return selectedIds.includes(PresetFilterType.favourites) && isFavourite(preset) || selectedIds.includes(PresetFilterType.system) && preset.scope === 'system' || selectedIds.includes(PresetFilterType.personal) && preset.scope === 'user' && preset.username === username || selectedIds.includes(PresetFilterType.shared) && preset.scope === 'user' && preset.is_shared && (isAdmin || preset.username !== username) || selectedIds.includes(PresetFilterType.plugin) && preset.scope === 'plugin';
6345
6292
  });
6346
6293
  var labelFiltered = function () {
6347
6294
  if (!labelFilters) {
@@ -6409,7 +6356,9 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
6409
6356
  });
6410
6357
  });
6411
6358
  });
6412
- return filteredByQuery;
6359
+ return filteredByQuery.slice().sort(function (first, second) {
6360
+ return Number(isFavourite(second)) - Number(isFavourite(first));
6361
+ });
6413
6362
  };
6414
6363
 
6415
6364
  var VIEW_TYPE_KEY = 'viewType';
@@ -7834,9 +7783,6 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7834
7783
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
7835
7784
  t = _useWorkspaceTranslat.t;
7836
7785
  var favourites = useFavouritePresets('view');
7837
- var selectedFavouritesOnly = useSelector(function (state) {
7838
- return getFavouritesOnly$1(state, panelId);
7839
- });
7840
7786
  var dispatch = useDispatch();
7841
7787
  var queryClient = useQueryClient();
7842
7788
  var store = useStore();
@@ -7844,7 +7790,6 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7844
7790
  currentRole = _useAuthenticationCon.currentRole,
7845
7791
  isLoggedIn = _useAuthenticationCon.isLoggedIn,
7846
7792
  auth = _useAuthenticationCon.auth;
7847
- var favouritesOnly = isLoggedIn && selectedFavouritesOnly;
7848
7793
  var username = (auth == null ? void 0 : auth.username) || '';
7849
7794
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
7850
7795
  var scope = !isAdmin ? 'user' : 'system';
@@ -7913,13 +7858,12 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7913
7858
  }
7914
7859
  return Object.values(viewPresetLabelFilters).flat().length;
7915
7860
  }, [viewPresetLabelFilters]);
7916
- var matchingPresets = React.useMemo(function () {
7861
+ var filteredPresets = React.useMemo(function () {
7917
7862
  if (viewPresets) {
7918
- return [].concat(filterAndSortPresets([].concat(viewPresets, pluginCatalogAsPresets), viewPresetListFilters, username, isAdmin, viewPresetLabelFilters != null ? viewPresetLabelFilters : undefined, viewPresetListSearchQuery));
7863
+ return [].concat(filterAndSortPresets([].concat(viewPresets, pluginCatalogAsPresets), viewPresetListFilters, username, isAdmin, viewPresetLabelFilters != null ? viewPresetLabelFilters : undefined, viewPresetListSearchQuery, favourites.isFavourite));
7919
7864
  }
7920
7865
  return [];
7921
- }, [viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters, viewPresetListSearchQuery, pluginCatalogAsPresets]);
7922
- var filteredPresets = filterAndSortFavouritePresets(matchingPresets, favourites.isFavourite, favouritesOnly);
7866
+ }, [viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters, viewPresetListSearchQuery, favourites.isFavourite, pluginCatalogAsPresets]);
7923
7867
  var labelsFormMethods = useForm({
7924
7868
  defaultValues: {
7925
7869
  labels: viewPresetLabelFilters
@@ -8199,9 +8143,10 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8199
8143
  id: id,
8200
8144
  isSelected: isSelected,
8201
8145
  panelId: panelId,
8202
- isAdmin: isAdmin
8146
+ isAdmin: isAdmin,
8147
+ isFavouritesEnabled: isLoggedIn
8203
8148
  }));
8204
- }, [dispatch, panelId, isAdmin]);
8149
+ }, [dispatch, panelId, isAdmin, isLoggedIn]);
8205
8150
  var setSelectAllFilterChip = React.useCallback(function () {
8206
8151
  dispatch(viewPresetActions.setSelectAllFilterChip({
8207
8152
  panelId: panelId
@@ -8222,7 +8167,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8222
8167
  panelId: panelId
8223
8168
  }));
8224
8169
  }, [dispatch, panelId]);
8225
- var isAllSelectedForFilters = viewPresetListFilters.every(function (filter) {
8170
+ var isAllSelectedForFilters = viewPresetListFilters.filter(function (filter) {
8171
+ return isLoggedIn || filter.id !== 'favourites';
8172
+ }).every(function (filter) {
8226
8173
  return filter.isSelected;
8227
8174
  });
8228
8175
  var showLabelFilterToggle = Boolean(onToggleLabelFilter);
@@ -8329,17 +8276,14 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8329
8276
  },
8330
8277
  children: jsx(Filter, {
8331
8278
  activeLabelFilterCount: activeLabelFilterCount,
8332
- filters: [].concat(viewPresetListFilters.map(function (filter) {
8279
+ filters: viewPresetListFilters.map(function (filter) {
8333
8280
  return Object.assign({}, filter, {
8334
- isSelected: !favouritesOnly && !isAllSelectedForFilters && filter.isSelected
8281
+ label: filter.id === 'favourites' ? t('workspace-favourites') : filter.label,
8282
+ isSelected: !isAllSelectedForFilters && filter.isSelected && (filter.id !== 'favourites' || isLoggedIn),
8283
+ isDisabled: filter.id === 'favourites' ? !isLoggedIn : filter.isDisabled
8335
8284
  });
8336
- }), [{
8337
- id: 'favourites',
8338
- label: t('workspace-favourites'),
8339
- isSelected: favouritesOnly,
8340
- isDisabled: !isLoggedIn
8341
- }]),
8342
- isAllSelected: isAllSelectedForFilters ? !favouritesOnly : false,
8285
+ }),
8286
+ isAllSelected: isAllSelectedForFilters,
8343
8287
  isLabelFilterOpen: isLabelFilterOpen,
8344
8288
  onClickFilterChip: onClickFilterChip,
8345
8289
  onSearch: onSearchFilter,
@@ -8379,7 +8323,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8379
8323
  children: [jsx(WorkspaceSelectList, {
8380
8324
  currentSelectedId: activeViewPresetId || undefined,
8381
8325
  favouritesDisabled: favourites.disabled,
8382
- hideNewWorkspace: shouldHideNewWorkspace || favouritesOnly,
8326
+ hideNewWorkspace: shouldHideNewWorkspace,
8383
8327
  infoOpenPresetId: infoPreset == null ? void 0 : infoPreset.id,
8384
8328
  isAdmin: isAdmin,
8385
8329
  isEditable: isLoggedIn,
@@ -8617,9 +8561,6 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8617
8561
  isLabelFilterOpen = _ref$isLabelFilterOpe === void 0 ? false : _ref$isLabelFilterOpe,
8618
8562
  onToggleLabelFilter = _ref.onToggleLabelFilter;
8619
8563
  var favourites = useFavouritePresets('workspace');
8620
- var selectedFavouritesOnly = useSelector(function (state) {
8621
- return getFavouritesOnly(state);
8622
- });
8623
8564
  var dispatch = useDispatch();
8624
8565
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8625
8566
  t = _useWorkspaceTranslat.t;
@@ -8627,7 +8568,6 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8627
8568
  currentRole = _useAuthenticationCon.currentRole,
8628
8569
  isLoggedIn = _useAuthenticationCon.isLoggedIn,
8629
8570
  auth = _useAuthenticationCon.auth;
8630
- var favouritesOnly = isLoggedIn && selectedFavouritesOnly;
8631
8571
  var username = (auth == null ? void 0 : auth.username) || '';
8632
8572
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
8633
8573
  var scope = !isAdmin ? 'user' : 'system';
@@ -8658,10 +8598,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8658
8598
  }
8659
8599
  return Object.values(labelFilters).flat().length;
8660
8600
  }, [labelFilters]);
8661
- var matchingPresets = React.useMemo(function () {
8662
- return filterAndSortPresets(workspacePresets, selectedFilters, username, isAdmin, labelFilters != null ? labelFilters : undefined, workspaceSearchQuery);
8663
- }, [workspacePresets, selectedFilters, username, isAdmin, labelFilters, workspaceSearchQuery]);
8664
- var filteredPresets = filterAndSortFavouritePresets(matchingPresets, favourites.isFavourite, favouritesOnly);
8601
+ var filteredPresets = React.useMemo(function () {
8602
+ return filterAndSortPresets(workspacePresets, selectedFilters, username, isAdmin, labelFilters != null ? labelFilters : undefined, workspaceSearchQuery, favourites.isFavourite);
8603
+ }, [workspacePresets, selectedFilters, username, isAdmin, labelFilters, workspaceSearchQuery, favourites.isFavourite]);
8665
8604
  var infoPanelAnchorRef = React.useRef(null);
8666
8605
  var _React$useState = React.useState(),
8667
8606
  infoPreset = _React$useState[0],
@@ -8707,9 +8646,10 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8707
8646
  dispatch(workspaceListActions.toggleSelectFilterChip({
8708
8647
  id: id,
8709
8648
  isSelected: isSelected,
8710
- isAdmin: isAdmin
8649
+ isAdmin: isAdmin,
8650
+ isFavouritesEnabled: isLoggedIn
8711
8651
  }));
8712
- }, [dispatch, isAdmin]);
8652
+ }, [dispatch, isAdmin, isLoggedIn]);
8713
8653
  var setSelectAllFilterChip = React.useCallback(function () {
8714
8654
  dispatch(workspaceListActions.setSelectAllFilterChip());
8715
8655
  }, [dispatch]);
@@ -8965,7 +8905,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8965
8905
  return _ref2.apply(this, arguments);
8966
8906
  };
8967
8907
  }();
8968
- var isAllSelected = workspaceListFilters.length > 0 && workspaceListFilters.every(function (filter) {
8908
+ var isAllSelected = workspaceListFilters.length > 0 && workspaceListFilters.filter(function (filter) {
8909
+ return isLoggedIn || filter.id !== 'favourites';
8910
+ }).every(function (filter) {
8969
8911
  return filter.isSelected;
8970
8912
  });
8971
8913
  var shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0 || hasActiveLabelFilters;
@@ -9076,17 +9018,14 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9076
9018
  },
9077
9019
  children: jsx(Filter, {
9078
9020
  activeLabelFilterCount: activeLabelFilterCount,
9079
- filters: [].concat(workspaceListFilters.map(function (filter) {
9021
+ filters: workspaceListFilters.map(function (filter) {
9080
9022
  return Object.assign({}, filter, {
9081
- isSelected: !favouritesOnly && !isAllSelected && filter.isSelected
9023
+ label: filter.id === 'favourites' ? t('workspace-favourites') : filter.label,
9024
+ isSelected: !isAllSelected && filter.isSelected && (filter.id !== 'favourites' || isLoggedIn),
9025
+ isDisabled: filter.id === 'favourites' ? !isLoggedIn : filter.isDisabled
9082
9026
  });
9083
- }), [{
9084
- id: 'favourites',
9085
- label: t('workspace-favourites'),
9086
- isSelected: favouritesOnly,
9087
- isDisabled: !isLoggedIn
9088
- }]),
9089
- isAllSelected: isAllSelected ? !favouritesOnly : false,
9027
+ }),
9028
+ isAllSelected: isAllSelected,
9090
9029
  isLabelFilterOpen: isLabelFilterOpen,
9091
9030
  onClickFilterChip: onClickFilterChip,
9092
9031
  onSearch: searchFilter,
@@ -9118,7 +9057,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9118
9057
  children: [jsx(WorkspaceSelectList, {
9119
9058
  currentSelectedId: currentView.id || '',
9120
9059
  favouritesDisabled: favourites.disabled,
9121
- hideNewWorkspace: shouldHideNewWorkspace || favouritesOnly,
9060
+ hideNewWorkspace: shouldHideNewWorkspace,
9122
9061
  infoOpenPresetId: infoPreset == null ? void 0 : infoPreset.id,
9123
9062
  isAdmin: isAdmin,
9124
9063
  isEditable: isLoggedIn,
@@ -9926,7 +9865,9 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
9926
9865
  var _sessionStorageProvid;
9927
9866
  var hasPluginsConfigured = !!((_sessionStorageProvid = sessionStorageProvider.getConfig()) != null && _sessionStorageProvid.GW_PLUGIN_BACKEND_URL);
9928
9867
  if (hasPluginsConfigured) {
9929
- return [].concat(defaultViewPresetsFilters, [pluginViewPresetsFilter]);
9868
+ return defaultViewPresetsFilters.flatMap(function (filter) {
9869
+ return filter.id === 'favourites' ? [pluginViewPresetsFilter, filter] : [filter];
9870
+ });
9930
9871
  }
9931
9872
  return defaultViewPresetsFilters;
9932
9873
  }, []);
@@ -10075,6 +10016,8 @@ var WorkspaceTileConnect = /*#__PURE__*/React.memo(function (_ref) {
10075
10016
  },
10076
10017
  isOpen: isViewPresetDialogOpen,
10077
10018
  panelId: mosaicNodeId
10019
+ }), jsx(OverlayPluginWindows, {
10020
+ panelId: mosaicNodeId
10078
10021
  })]
10079
10022
  });
10080
10023
  }, isEqual);