@opengeoweb/workspace 20.0.1 → 20.1.0-nightly-20261017

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
@@ -35,6 +35,11 @@ var en = {
35
35
  "workspace-menu": "Workspace menu",
36
36
  "workspace-new": "New workspace",
37
37
  "workspace-new-soundings": "New soundings workspace",
38
+ "workspace-template-map": "New map preset",
39
+ "workspace-template-timeseries": "New timeseries preset",
40
+ "workspace-template-soundings": "New sounding preset",
41
+ "workspace-template-warninglist": "New warninglist preset",
42
+ "workspace-template-timeline": "New timeline preset",
38
43
  "workspace-loading": "Loading",
39
44
  "workspace-options": "Options",
40
45
  "workspace-results": "results",
@@ -192,6 +197,11 @@ var fi = {
192
197
  "workspace-menu": "Workspace menu",
193
198
  "workspace-new": "Uusi workspace",
194
199
  "workspace-new-soundings": "Uusi luotaustyötila",
200
+ "workspace-template-map": "Uusi map preset",
201
+ "workspace-template-timeseries": "Uusi timeseries preset",
202
+ "workspace-template-soundings": "Uusi luotauspreset",
203
+ "workspace-template-warninglist": "Uusi varoituslistapreset",
204
+ "workspace-template-timeline": "Uusi aikajanapreset",
195
205
  "workspace-loading": "Ladataan",
196
206
  "workspace-options": "Valinnat",
197
207
  "workspace-results": "tulokset",
@@ -341,6 +351,11 @@ var no = {
341
351
  "workspace-menu": "Arbeidsflater",
342
352
  "workspace-new": "Ny arbeidsflate",
343
353
  "workspace-new-soundings": "New soundings workspace",
354
+ "workspace-template-map": "Ny kartpreset",
355
+ "workspace-template-timeseries": "Ny tidsseriepreset",
356
+ "workspace-template-soundings": "Ny sonderingspreset",
357
+ "workspace-template-warninglist": "Ny varsellistepreset",
358
+ "workspace-template-timeline": "Ny tidslinjepreset",
344
359
  "workspace-loading": "Laster",
345
360
  "workspace-options": "Valg",
346
361
  "workspace-results": "resultater",
@@ -491,6 +506,11 @@ var nl = {
491
506
  "workspace-menu": "Workspace menu",
492
507
  "workspace-new": "Nieuwe workspace",
493
508
  "workspace-new-soundings": "Nieuwe soundings workspace",
509
+ "workspace-template-map": "Nieuwe map preset",
510
+ "workspace-template-timeseries": "Nieuwe timeseries preset",
511
+ "workspace-template-soundings": "Nieuwe sounding preset",
512
+ "workspace-template-warninglist": "Nieuwe warninglist preset",
513
+ "workspace-template-timeline": "Nieuwe timeline preset",
494
514
  "workspace-loading": "Laden",
495
515
  "workspace-options": "Opties",
496
516
  "workspace-results": "resultaten",
@@ -1649,6 +1669,7 @@ var PresetFilterType;
1649
1669
  PresetFilterType["shared"] = "shared";
1650
1670
  PresetFilterType["system"] = "system";
1651
1671
  PresetFilterType["plugin"] = "plugin";
1672
+ PresetFilterType["templates"] = "templates";
1652
1673
  PresetFilterType["favourites"] = "favourites";
1653
1674
  })(PresetFilterType || (PresetFilterType = {}));
1654
1675
 
@@ -1798,6 +1819,11 @@ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(empty
1798
1819
  });
1799
1820
  return emptyWorkspacePreset;
1800
1821
  };
1822
+ var getTemplatePresetTitle = function getTemplatePresetTitle(preset, t) {
1823
+ return preset.titleKey && t ? t(preset.titleKey, {
1824
+ defaultValue: preset.title
1825
+ }) : preset.title;
1826
+ };
1801
1827
  var LOCAL_SOUNDINGS_ID = 'newSoundingsWorkspace';
1802
1828
  var getNewSoundingsWorkspaceListItem = function getNewSoundingsWorkspaceListItem(t) {
1803
1829
  return {
@@ -1879,7 +1905,7 @@ var togglePresetFilter = function togglePresetFilter(filters, id, isSelected, is
1879
1905
  if (filter.id === PresetFilterType.favourites) {
1880
1906
  return isFavouritesEnabled;
1881
1907
  }
1882
- return !isAdmin || filter.id === 'system' || filter.id === 'shared';
1908
+ return !isAdmin || filter.id === PresetFilterType.system || filter.id === PresetFilterType.shared || filter.id === PresetFilterType.templates;
1883
1909
  });
1884
1910
  var allSelected = availableFilters.every(function (filter) {
1885
1911
  return filter.isSelected;
@@ -2074,7 +2100,13 @@ var defaultViewPresetsFilters = [{
2074
2100
  id: PresetFilterType.shared,
2075
2101
  isSelected: true,
2076
2102
  isDisabled: false
2103
+ }, {
2104
+ label: 'shared-filter-template-presets',
2105
+ id: PresetFilterType.templates,
2106
+ isSelected: true,
2107
+ isDisabled: false
2077
2108
  }, favouriteFilterState];
2109
+ var ADMIN_VIEW_PRESET_FILTER_IDS = [PresetFilterType.system, PresetFilterType.shared, PresetFilterType.templates, PresetFilterType.favourites];
2078
2110
  var pluginViewPresetsFilter = {
2079
2111
  label: 'shared-filter-plugin-view-presets',
2080
2112
  id: PresetFilterType.plugin,
@@ -2206,6 +2238,17 @@ var slice$1 = createSlice({
2206
2238
  viewPresetsAdapter.setOne(draft, entity);
2207
2239
  }
2208
2240
  },
2241
+ // the view itself is replaced in viewPresets/listener
2242
+ selectViewTemplate: function selectViewTemplate(draft, action) {
2243
+ var panelId = action.payload.panelId;
2244
+ var entity = draft.entities[panelId];
2245
+ if (entity) {
2246
+ entity.activeViewPresetId = '';
2247
+ entity.error = undefined;
2248
+ entity.isViewPresetListDialogOpen = false;
2249
+ viewPresetsAdapter.setOne(draft, entity);
2250
+ }
2251
+ },
2209
2252
  selectViewPlugin: function selectViewPlugin(draft, action) {
2210
2253
  var _action$payload8 = action.payload,
2211
2254
  panelId = _action$payload8.panelId,
@@ -2920,6 +2963,51 @@ var emptyViewPreset = function emptyViewPreset(componentType) {
2920
2963
  initialProps: initialPropsByType[actualComponentType]
2921
2964
  };
2922
2965
  };
2966
+ var findViewTemplatePreset = function findViewTemplatePreset(templates, presetId) {
2967
+ return presetId ? (templates != null ? templates : []).find(function (template) {
2968
+ return template.id === presetId;
2969
+ }) : undefined;
2970
+ };
2971
+ var findViewTemplatePresetForComponentType = function findViewTemplatePresetForComponentType(templates, componentType) {
2972
+ return componentType ? (templates != null ? templates : []).find(function (template) {
2973
+ return template.componentType === componentType;
2974
+ }) : undefined;
2975
+ };
2976
+ var toTranslatedViewTemplatePreset = function toTranslatedViewTemplatePreset(template, t) {
2977
+ return Object.assign({}, template, {
2978
+ title: getTemplatePresetTitle(template, t),
2979
+ titleKey: undefined
2980
+ });
2981
+ };
2982
+ var toViewPresetFromTemplate = function toViewPresetFromTemplate(template, t) {
2983
+ var _template$initialProp;
2984
+ var componentType = template.componentType;
2985
+ var emptyPreset = emptyViewPreset(componentType);
2986
+ return Object.assign({}, emptyPreset, {
2987
+ title: getTemplatePresetTitle(template, t),
2988
+ "abstract": template["abstract"],
2989
+ description: template.description,
2990
+ initialProps: (_template$initialProp = template.initialProps) != null ? _template$initialProp : emptyPreset.initialProps
2991
+ });
2992
+ };
2993
+ var toViewTemplateListItem = function toViewTemplateListItem(template, t) {
2994
+ var _template$abstract;
2995
+ return {
2996
+ id: template.id,
2997
+ title: getTemplatePresetTitle(template, t),
2998
+ date: '',
2999
+ scope: 'system',
3000
+ "abstract": (_template$abstract = template["abstract"]) != null ? _template$abstract : '',
3001
+ description: template.description,
3002
+ labels: template.labels,
3003
+ isViewTemplate: true
3004
+ };
3005
+ };
3006
+ var toViewTemplateListItems = function toViewTemplateListItems(templates, t) {
3007
+ return (templates != null ? templates : []).map(function (template) {
3008
+ return toViewTemplateListItem(template, t);
3009
+ });
3010
+ };
2923
3011
 
2924
3012
  /* *
2925
3013
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3269,9 +3357,9 @@ var getViewPresetListFiltersForView = createSelector(getViewPresetById, function
3269
3357
  }, function (viewPreset, _scope, isAdmin) {
3270
3358
  var filters = (viewPreset == null ? void 0 : viewPreset.filters) || [];
3271
3359
  if (isAdmin) {
3272
- // Admin users: Only system and shared filters
3360
+ // Admin users: Only system, shared, template and favourite filters
3273
3361
  return filters.filter(function (filter) {
3274
- return filter.id === 'system' || filter.id === 'shared' || filter.id === 'favourites';
3362
+ return ADMIN_VIEW_PRESET_FILTER_IDS.includes(filter.id);
3275
3363
  }).map(function (filter) {
3276
3364
  return Object.assign({}, filter, {
3277
3365
  isDisabled: false
@@ -3348,29 +3436,38 @@ var LABELS_CONFIG_DEFAULT = {
3348
3436
  dataSource: ['Meps', 'Arome Arctic', 'Ecmwf', 'Ensemble', 'AIFS', 'BRIS', 'radar', 'satellite', 'synop']
3349
3437
  };
3350
3438
 
3351
- var getWorkspaceLabelsConfig = /*#__PURE__*/function () {
3352
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(auth) {
3439
+ var TEMPLATE_PRESETS_FILENAME = 'templatePresets.json';
3440
+ var getTemplatePresetsFilename = function getTemplatePresetsFilename() {
3441
+ var _sessionStorageProvid;
3442
+ return ((_sessionStorageProvid = sessionStorageProvider.getConfig()) == null ? void 0 : _sessionStorageProvid.GW_TEMPLATE_PRESETS_FILENAME) || TEMPLATE_PRESETS_FILENAME;
3443
+ };
3444
+ var getTemplatePresets = /*#__PURE__*/function () {
3445
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(filename) {
3446
+ var _response$workspacePr, _response$viewPresets;
3447
+ var response;
3353
3448
  return _regenerator().w(function (_context) {
3354
3449
  while (1) switch (_context.n) {
3355
3450
  case 0:
3356
- if (!hasNoPresetBackend()) {
3357
- _context.n = 1;
3358
- break;
3451
+ if (filename === void 0) {
3452
+ filename = getTemplatePresetsFilename();
3359
3453
  }
3360
- return _context.a(2, LABELS_CONFIG_DEFAULT);
3454
+ _context.n = 1;
3455
+ return fetch("./assets/" + encodeURIComponent(filename)).then(handleResponse);
3361
3456
  case 1:
3362
- return _context.a(2, fetch(getPresetBaseUrl() + "/workspace-labels-config", {
3363
- headers: getHeaders(auth)
3364
- }).then(handleResponse));
3457
+ response = _context.v;
3458
+ return _context.a(2, {
3459
+ workspacePresets: (_response$workspacePr = response == null ? void 0 : response.workspacePresets) != null ? _response$workspacePr : [],
3460
+ viewPresets: (_response$viewPresets = response == null ? void 0 : response.viewPresets) != null ? _response$viewPresets : []
3461
+ });
3365
3462
  }
3366
3463
  }, _callee);
3367
3464
  }));
3368
- return function getWorkspaceLabelsConfig(_x) {
3465
+ return function getTemplatePresets(_x) {
3369
3466
  return _ref.apply(this, arguments);
3370
3467
  };
3371
3468
  }();
3372
- var getWorkspacePreset = /*#__PURE__*/function () {
3373
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(workspaceId, auth) {
3469
+ var getWorkspaceLabelsConfig = /*#__PURE__*/function () {
3470
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(auth) {
3374
3471
  return _regenerator().w(function (_context2) {
3375
3472
  while (1) switch (_context2.n) {
3376
3473
  case 0:
@@ -3378,21 +3475,20 @@ var getWorkspacePreset = /*#__PURE__*/function () {
3378
3475
  _context2.n = 1;
3379
3476
  break;
3380
3477
  }
3381
- return _context2.a(2, extractWorkspacePresetFromJSON(workspaceId));
3478
+ return _context2.a(2, LABELS_CONFIG_DEFAULT);
3382
3479
  case 1:
3383
- return _context2.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3480
+ return _context2.a(2, fetch(getPresetBaseUrl() + "/workspace-labels-config", {
3384
3481
  headers: getHeaders(auth)
3385
3482
  }).then(handleResponse));
3386
3483
  }
3387
3484
  }, _callee2);
3388
3485
  }));
3389
- return function getWorkspacePreset(_x2, _x3) {
3486
+ return function getWorkspaceLabelsConfig(_x2) {
3390
3487
  return _ref2.apply(this, arguments);
3391
3488
  };
3392
3489
  }();
3393
- var getWorkspacePresets = /*#__PURE__*/function () {
3394
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(auth, params) {
3395
- var presetsUrl, searchParams, queryString, url;
3490
+ var getWorkspacePreset = /*#__PURE__*/function () {
3491
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(workspaceId, auth) {
3396
3492
  return _regenerator().w(function (_context3) {
3397
3493
  while (1) switch (_context3.n) {
3398
3494
  case 0:
@@ -3400,33 +3496,21 @@ var getWorkspacePresets = /*#__PURE__*/function () {
3400
3496
  _context3.n = 1;
3401
3497
  break;
3402
3498
  }
3403
- return _context3.a(2, filterWorkspacePresetList(params));
3499
+ return _context3.a(2, extractWorkspacePresetFromJSON(workspaceId));
3404
3500
  case 1:
3405
- presetsUrl = getPresetBaseUrl() + "/workspacepreset";
3406
- searchParams = new URLSearchParams();
3407
- if (params) {
3408
- Object.entries(params).forEach(function (_ref4) {
3409
- var key = _ref4[0],
3410
- value = _ref4[1];
3411
- if (value !== undefined && value !== null) {
3412
- searchParams.append(key, String(value));
3413
- }
3414
- });
3415
- }
3416
- queryString = searchParams.toString();
3417
- url = queryString ? presetsUrl + "?" + queryString : presetsUrl;
3418
- return _context3.a(2, fetch(url, {
3501
+ return _context3.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3419
3502
  headers: getHeaders(auth)
3420
3503
  }).then(handleResponse));
3421
3504
  }
3422
3505
  }, _callee3);
3423
3506
  }));
3424
- return function getWorkspacePresets(_x4, _x5) {
3507
+ return function getWorkspacePreset(_x3, _x4) {
3425
3508
  return _ref3.apply(this, arguments);
3426
3509
  };
3427
3510
  }();
3428
- var getWorkspace = /*#__PURE__*/function () {
3429
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(workspaceId, auth) {
3511
+ var getWorkspacePresets = /*#__PURE__*/function () {
3512
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(auth, params) {
3513
+ var presetsUrl, searchParams, queryString, url;
3430
3514
  return _regenerator().w(function (_context4) {
3431
3515
  while (1) switch (_context4.n) {
3432
3516
  case 0:
@@ -3434,57 +3518,74 @@ var getWorkspace = /*#__PURE__*/function () {
3434
3518
  _context4.n = 1;
3435
3519
  break;
3436
3520
  }
3437
- return _context4.a(2, extractWorkspacePresetFromJSON(workspaceId));
3521
+ return _context4.a(2, filterWorkspacePresetList(params));
3438
3522
  case 1:
3439
- return _context4.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3523
+ presetsUrl = getPresetBaseUrl() + "/workspacepreset";
3524
+ searchParams = new URLSearchParams();
3525
+ if (params) {
3526
+ Object.entries(params).forEach(function (_ref5) {
3527
+ var key = _ref5[0],
3528
+ value = _ref5[1];
3529
+ if (value !== undefined && value !== null) {
3530
+ searchParams.append(key, String(value));
3531
+ }
3532
+ });
3533
+ }
3534
+ queryString = searchParams.toString();
3535
+ url = queryString ? presetsUrl + "?" + queryString : presetsUrl;
3536
+ return _context4.a(2, fetch(url, {
3440
3537
  headers: getHeaders(auth)
3441
3538
  }).then(handleResponse));
3442
3539
  }
3443
3540
  }, _callee4);
3444
3541
  }));
3445
- return function getWorkspace(_x6, _x7) {
3446
- return _ref5.apply(this, arguments);
3542
+ return function getWorkspacePresets(_x5, _x6) {
3543
+ return _ref4.apply(this, arguments);
3447
3544
  };
3448
3545
  }();
3449
- var deleteWorkspace = /*#__PURE__*/function () {
3546
+ var getWorkspace = /*#__PURE__*/function () {
3450
3547
  var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(workspaceId, auth) {
3451
3548
  return _regenerator().w(function (_context5) {
3452
3549
  while (1) switch (_context5.n) {
3453
3550
  case 0:
3551
+ if (!hasNoPresetBackend()) {
3552
+ _context5.n = 1;
3553
+ break;
3554
+ }
3555
+ return _context5.a(2, extractWorkspacePresetFromJSON(workspaceId));
3556
+ case 1:
3454
3557
  return _context5.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3455
- headers: getHeaders(auth),
3456
- method: 'DELETE'
3558
+ headers: getHeaders(auth)
3457
3559
  }).then(handleResponse));
3458
3560
  }
3459
3561
  }, _callee5);
3460
3562
  }));
3461
- return function deleteWorkspace(_x8, _x9) {
3563
+ return function getWorkspace(_x7, _x8) {
3462
3564
  return _ref6.apply(this, arguments);
3463
3565
  };
3464
3566
  }();
3465
- var updateWorkspace = /*#__PURE__*/function () {
3466
- var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(workspaceId, data, auth) {
3567
+ var deleteWorkspace = /*#__PURE__*/function () {
3568
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(workspaceId, auth) {
3467
3569
  return _regenerator().w(function (_context6) {
3468
3570
  while (1) switch (_context6.n) {
3469
3571
  case 0:
3470
3572
  return _context6.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3471
3573
  headers: getHeaders(auth),
3472
- method: 'PUT',
3473
- body: JSON.stringify(data)
3574
+ method: 'DELETE'
3474
3575
  }).then(handleResponse));
3475
3576
  }
3476
3577
  }, _callee6);
3477
3578
  }));
3478
- return function updateWorkspace(_x0, _x1, _x10) {
3579
+ return function deleteWorkspace(_x9, _x0) {
3479
3580
  return _ref7.apply(this, arguments);
3480
3581
  };
3481
3582
  }();
3482
- var saveWorkspacePreset = /*#__PURE__*/function () {
3583
+ var updateWorkspace = /*#__PURE__*/function () {
3483
3584
  var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(workspaceId, data, auth) {
3484
3585
  return _regenerator().w(function (_context7) {
3485
3586
  while (1) switch (_context7.n) {
3486
3587
  case 0:
3487
- return _context7.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId + "/", {
3588
+ return _context7.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3488
3589
  headers: getHeaders(auth),
3489
3590
  method: 'PUT',
3490
3591
  body: JSON.stringify(data)
@@ -3492,52 +3593,69 @@ var saveWorkspacePreset = /*#__PURE__*/function () {
3492
3593
  }
3493
3594
  }, _callee7);
3494
3595
  }));
3495
- return function saveWorkspacePreset(_x11, _x12, _x13) {
3596
+ return function updateWorkspace(_x1, _x10, _x11) {
3496
3597
  return _ref8.apply(this, arguments);
3497
3598
  };
3498
3599
  }();
3499
- var createWorkspace = /*#__PURE__*/function () {
3500
- var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(data, auth) {
3600
+ var saveWorkspacePreset = /*#__PURE__*/function () {
3601
+ var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(workspaceId, data, auth) {
3501
3602
  return _regenerator().w(function (_context8) {
3502
3603
  while (1) switch (_context8.n) {
3503
3604
  case 0:
3504
- return _context8.a(2, fetch(getPresetBaseUrl() + "/workspacepreset", {
3605
+ return _context8.a(2, fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId + "/", {
3505
3606
  headers: getHeaders(auth),
3506
- method: 'POST',
3607
+ method: 'PUT',
3507
3608
  body: JSON.stringify(data)
3508
3609
  }).then(handleResponse));
3509
3610
  }
3510
3611
  }, _callee8);
3511
3612
  }));
3512
- return function createWorkspace(_x14, _x15) {
3613
+ return function saveWorkspacePreset(_x12, _x13, _x14) {
3513
3614
  return _ref9.apply(this, arguments);
3514
3615
  };
3515
3616
  }();
3516
- var saveWorkspacePresetAs = /*#__PURE__*/function () {
3617
+ var createWorkspace = /*#__PURE__*/function () {
3517
3618
  var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9(data, auth) {
3518
- var _response$headers$get;
3519
- var response, headerLocation;
3520
3619
  return _regenerator().w(function (_context9) {
3521
3620
  while (1) switch (_context9.n) {
3522
3621
  case 0:
3523
- _context9.n = 1;
3622
+ return _context9.a(2, fetch(getPresetBaseUrl() + "/workspacepreset", {
3623
+ headers: getHeaders(auth),
3624
+ method: 'POST',
3625
+ body: JSON.stringify(data)
3626
+ }).then(handleResponse));
3627
+ }
3628
+ }, _callee9);
3629
+ }));
3630
+ return function createWorkspace(_x15, _x16) {
3631
+ return _ref0.apply(this, arguments);
3632
+ };
3633
+ }();
3634
+ var saveWorkspacePresetAs = /*#__PURE__*/function () {
3635
+ var _ref1 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0(data, auth) {
3636
+ var _response$headers$get;
3637
+ var response, headerLocation;
3638
+ return _regenerator().w(function (_context0) {
3639
+ while (1) switch (_context0.n) {
3640
+ case 0:
3641
+ _context0.n = 1;
3524
3642
  return fetch(getPresetBaseUrl() + "/workspacepreset", {
3525
3643
  headers: getHeaders(auth),
3526
3644
  method: 'POST',
3527
3645
  body: JSON.stringify(data)
3528
3646
  });
3529
3647
  case 1:
3530
- response = _context9.v;
3531
- _context9.n = 2;
3648
+ response = _context0.v;
3649
+ _context0.n = 2;
3532
3650
  return handleResponse(response);
3533
3651
  case 2:
3534
3652
  headerLocation = (_response$headers$get = response.headers.get('Location')) != null ? _response$headers$get : response.headers.get('location');
3535
- return _context9.a(2, getIdFromUrl(headerLocation));
3653
+ return _context0.a(2, getIdFromUrl(headerLocation));
3536
3654
  }
3537
- }, _callee9);
3655
+ }, _callee0);
3538
3656
  }));
3539
- return function saveWorkspacePresetAs(_x16, _x17) {
3540
- return _ref0.apply(this, arguments);
3657
+ return function saveWorkspacePresetAs(_x17, _x18) {
3658
+ return _ref1.apply(this, arguments);
3541
3659
  };
3542
3660
  }();
3543
3661
 
@@ -3560,15 +3678,18 @@ var workspaceQueryOptions = {
3560
3678
  return [].concat(workspaceQueryOptions.keys.all(), ['list']);
3561
3679
  }
3562
3680
  },
3563
- getWorkspacePreset: function getWorkspacePreset$1(id, credentials) {
3681
+ getTemplatePresets: function getTemplatePresets$1(filename) {
3682
+ if (filename === void 0) {
3683
+ filename = getTemplatePresetsFilename();
3684
+ }
3564
3685
  return queryOptions({
3565
- queryKey: generateWorkspaceQueryKeys(id),
3686
+ queryKey: generateWorkspaceQueryKeys('templates', filename),
3566
3687
  queryFn: function () {
3567
3688
  var _queryFn = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
3568
3689
  return _regenerator().w(function (_context) {
3569
3690
  while (1) switch (_context.n) {
3570
3691
  case 0:
3571
- return _context.a(2, getWorkspacePreset(id, credentials));
3692
+ return _context.a(2, getTemplatePresets(filename));
3572
3693
  }
3573
3694
  }, _callee);
3574
3695
  }));
@@ -3576,18 +3697,19 @@ var workspaceQueryOptions = {
3576
3697
  return _queryFn.apply(this, arguments);
3577
3698
  }
3578
3699
  return queryFn;
3579
- }()
3700
+ }(),
3701
+ staleTime: Infinity
3580
3702
  });
3581
3703
  },
3582
- getWorkspacePresets: function getWorkspacePresets$1(credentials) {
3704
+ getWorkspacePreset: function getWorkspacePreset$1(id, credentials) {
3583
3705
  return queryOptions({
3584
- queryKey: workspaceQueryOptions.keys.lists(),
3706
+ queryKey: generateWorkspaceQueryKeys(id),
3585
3707
  queryFn: function () {
3586
3708
  var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
3587
3709
  return _regenerator().w(function (_context2) {
3588
3710
  while (1) switch (_context2.n) {
3589
3711
  case 0:
3590
- return _context2.a(2, getWorkspacePresets(credentials));
3712
+ return _context2.a(2, getWorkspacePreset(id, credentials));
3591
3713
  }
3592
3714
  }, _callee2);
3593
3715
  }));
@@ -3595,21 +3717,18 @@ var workspaceQueryOptions = {
3595
3717
  return _queryFn2.apply(this, arguments);
3596
3718
  }
3597
3719
  return queryFn;
3598
- }(),
3599
- staleTime: 2 * 60 * 1000,
3600
- refetchOnMount: true
3720
+ }()
3601
3721
  });
3602
3722
  },
3603
- saveWorkspacePreset: function saveWorkspacePreset$1(id, data, credentials) {
3723
+ getWorkspacePresets: function getWorkspacePresets$1(credentials) {
3604
3724
  return queryOptions({
3605
- queryKey: generateWorkspaceQueryKeys(id),
3606
- staleTime: 0,
3725
+ queryKey: workspaceQueryOptions.keys.lists(),
3607
3726
  queryFn: function () {
3608
3727
  var _queryFn3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
3609
3728
  return _regenerator().w(function (_context3) {
3610
3729
  while (1) switch (_context3.n) {
3611
3730
  case 0:
3612
- return _context3.a(2, saveWorkspacePreset(id, data, credentials));
3731
+ return _context3.a(2, getWorkspacePresets(credentials));
3613
3732
  }
3614
3733
  }, _callee3);
3615
3734
  }));
@@ -3617,19 +3736,21 @@ var workspaceQueryOptions = {
3617
3736
  return _queryFn3.apply(this, arguments);
3618
3737
  }
3619
3738
  return queryFn;
3620
- }()
3739
+ }(),
3740
+ staleTime: 2 * 60 * 1000,
3741
+ refetchOnMount: true
3621
3742
  });
3622
3743
  },
3623
- saveWorkspacePresetAs: function saveWorkspacePresetAs$1(data, credentials) {
3744
+ saveWorkspacePreset: function saveWorkspacePreset$1(id, data, credentials) {
3624
3745
  return queryOptions({
3625
- queryKey: generateWorkspaceQueryKeys('save-as'),
3746
+ queryKey: generateWorkspaceQueryKeys(id),
3626
3747
  staleTime: 0,
3627
3748
  queryFn: function () {
3628
3749
  var _queryFn4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
3629
3750
  return _regenerator().w(function (_context4) {
3630
3751
  while (1) switch (_context4.n) {
3631
3752
  case 0:
3632
- return _context4.a(2, saveWorkspacePresetAs(data, credentials));
3753
+ return _context4.a(2, saveWorkspacePreset(id, data, credentials));
3633
3754
  }
3634
3755
  }, _callee4);
3635
3756
  }));
@@ -3639,6 +3760,26 @@ var workspaceQueryOptions = {
3639
3760
  return queryFn;
3640
3761
  }()
3641
3762
  });
3763
+ },
3764
+ saveWorkspacePresetAs: function saveWorkspacePresetAs$1(data, credentials) {
3765
+ return queryOptions({
3766
+ queryKey: generateWorkspaceQueryKeys('save-as'),
3767
+ staleTime: 0,
3768
+ queryFn: function () {
3769
+ var _queryFn5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
3770
+ return _regenerator().w(function (_context5) {
3771
+ while (1) switch (_context5.n) {
3772
+ case 0:
3773
+ return _context5.a(2, saveWorkspacePresetAs(data, credentials));
3774
+ }
3775
+ }, _callee5);
3776
+ }));
3777
+ function queryFn() {
3778
+ return _queryFn5.apply(this, arguments);
3779
+ }
3780
+ return queryFn;
3781
+ }()
3782
+ });
3642
3783
  }
3643
3784
  };
3644
3785
 
@@ -4783,17 +4924,62 @@ viewPresetsListener.startListening({
4783
4924
  return effect;
4784
4925
  }()
4785
4926
  });
4786
- // select view preset
4787
4927
  viewPresetsListener.startListening({
4788
- actionCreator: viewPresetActions.selectViewPreset,
4928
+ actionCreator: viewPresetActions.selectViewTemplate,
4789
4929
  effect: function () {
4790
4930
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(_ref4, listenerApi) {
4791
- var payload, panelId, _payload$viewPresetId, viewPresetId, isMapAnimating;
4931
+ var payload, panelId, template, isMapAnimating, viewPreset;
4792
4932
  return _regenerator().w(function (_context3) {
4793
4933
  while (1) switch (_context3.n) {
4794
4934
  case 0:
4795
4935
  payload = _ref4.payload;
4796
4936
  listenerApi.cancelActiveListeners();
4937
+ panelId = payload.panelId, template = payload.template;
4938
+ isMapAnimating = mapSelectors.isAnimating(listenerApi.getState(), panelId);
4939
+ if (isMapAnimating) {
4940
+ listenerApi.dispatch(mapActions.mapStopAnimation({
4941
+ mapId: panelId
4942
+ }));
4943
+ }
4944
+ viewPreset = toViewPresetFromTemplate(template); // A map keeps its state in the store, so it needs to be reset explicitly,
4945
+ // the other modules pick up the initialProps of the new view themselves
4946
+ if (viewPreset.componentType === 'Map') {
4947
+ listenerApi.dispatch(mapActions.setMapPreset({
4948
+ mapId: panelId,
4949
+ initialProps: viewPreset.initialProps
4950
+ }));
4951
+ }
4952
+ listenerApi.dispatch(workspaceActions.updateWorkspaceView({
4953
+ mosaicNodeId: panelId,
4954
+ viewPreset: viewPreset
4955
+ }));
4956
+ listenerApi.dispatch(viewPresetActions.fetchedViewPreset({
4957
+ panelId: panelId,
4958
+ viewPresetId: '',
4959
+ viewPreset: viewPreset
4960
+ }));
4961
+ case 1:
4962
+ return _context3.a(2);
4963
+ }
4964
+ }, _callee3);
4965
+ }));
4966
+ function effect(_x5, _x6) {
4967
+ return _effect2.apply(this, arguments);
4968
+ }
4969
+ return effect;
4970
+ }()
4971
+ });
4972
+ // select view preset
4973
+ viewPresetsListener.startListening({
4974
+ actionCreator: viewPresetActions.selectViewPreset,
4975
+ effect: function () {
4976
+ var _effect3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(_ref5, listenerApi) {
4977
+ var payload, panelId, _payload$viewPresetId, viewPresetId, isMapAnimating;
4978
+ return _regenerator().w(function (_context4) {
4979
+ while (1) switch (_context4.n) {
4980
+ case 0:
4981
+ payload = _ref5.payload;
4982
+ listenerApi.cancelActiveListeners();
4797
4983
  panelId = payload.panelId, _payload$viewPresetId = payload.viewPresetId, viewPresetId = _payload$viewPresetId === void 0 ? '' : _payload$viewPresetId;
4798
4984
  isMapAnimating = mapSelectors.isAnimating(listenerApi.getState(), panelId);
4799
4985
  if (isMapAnimating) {
@@ -4824,12 +5010,12 @@ viewPresetsListener.startListening({
4824
5010
  }));
4825
5011
  }
4826
5012
  case 1:
4827
- return _context3.a(2);
5013
+ return _context4.a(2);
4828
5014
  }
4829
- }, _callee3);
5015
+ }, _callee4);
4830
5016
  }));
4831
- function effect(_x5, _x6) {
4832
- return _effect2.apply(this, arguments);
5017
+ function effect(_x7, _x8) {
5018
+ return _effect3.apply(this, arguments);
4833
5019
  }
4834
5020
  return effect;
4835
5021
  }()
@@ -4838,19 +5024,19 @@ viewPresetsListener.startListening({
4838
5024
  viewPresetsListener.startListening({
4839
5025
  actionCreator: viewPresetActions.onSuccessViewPresetAction,
4840
5026
  effect: function () {
4841
- var _effect3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(_ref5, listenerApi) {
5027
+ var _effect4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(_ref6, listenerApi) {
4842
5028
  var payload, action, viewPresetId, title, panelId, is_shared, activeMapPresetId, hasChanges;
4843
- return _regenerator().w(function (_context4) {
4844
- while (1) switch (_context4.n) {
5029
+ return _regenerator().w(function (_context5) {
5030
+ while (1) switch (_context5.n) {
4845
5031
  case 0:
4846
- payload = _ref5.payload;
5032
+ payload = _ref6.payload;
4847
5033
  listenerApi.cancelActiveListeners();
4848
5034
  action = payload.action, viewPresetId = payload.viewPresetId, title = payload.title, panelId = payload.panelId; // eslint-disable-next-line @typescript-eslint/naming-convention
4849
5035
  is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
4850
- _context4.n = 1;
5036
+ _context5.n = 1;
4851
5037
  return getQueryClient().invalidateQueries(viewpresetQueryOptions.getViewPreset(viewPresetId));
4852
5038
  case 1:
4853
- _context4.n = 2;
5039
+ _context5.n = 2;
4854
5040
  return getQueryClient().invalidateQueries({
4855
5041
  queryKey: viewpresetQueryOptions.keys.lists()
4856
5042
  });
@@ -4882,12 +5068,12 @@ viewPresetsListener.startListening({
4882
5068
  // TODO: use error handling of mapPreset https://gitlab.com/opengeoweb/opengeoweb/-/issues/3043
4883
5069
  }
4884
5070
  case 3:
4885
- return _context4.a(2);
5071
+ return _context5.a(2);
4886
5072
  }
4887
- }, _callee4);
5073
+ }, _callee5);
4888
5074
  }));
4889
- function effect(_x7, _x8) {
4890
- return _effect3.apply(this, arguments);
5075
+ function effect(_x9, _x0) {
5076
+ return _effect4.apply(this, arguments);
4891
5077
  }
4892
5078
  return effect;
4893
5079
  }()
@@ -5941,6 +6127,13 @@ var useFavouritePresets = function useFavouritePresets(type) {
5941
6127
  };
5942
6128
  };
5943
6129
 
6130
+ var useViewTemplatePresets = function useViewTemplatePresets() {
6131
+ return useQuery(Object.assign({}, workspaceQueryOptions.getTemplatePresets(), {
6132
+ select: function select(response) {
6133
+ return response.viewPresets;
6134
+ }
6135
+ }));
6136
+ };
5944
6137
  var useDeleteViewPreset = function useDeleteViewPreset() {
5945
6138
  var _useAuthenticationCon = useAuthenticationContext(),
5946
6139
  auth = _useAuthenticationCon.auth;
@@ -6280,7 +6473,14 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
6280
6473
  var isAllSelected = expectedIdsForAll.every(function (id) {
6281
6474
  return selectedIds.includes(id);
6282
6475
  });
6476
+ // Templates are filtered by their own chip instead of by scope
6477
+ var isTemplate = function isTemplate(preset) {
6478
+ return Boolean(preset.isViewTemplate) || Boolean(preset.isWorkspaceTemplate);
6479
+ };
6283
6480
  var scopeFiltered = isAllSelected ? searchFiltered.filter(function (preset) {
6481
+ if (isTemplate(preset)) {
6482
+ return true;
6483
+ }
6284
6484
  if (isAdmin) {
6285
6485
  // Admin users: Only system + shared, never personal
6286
6486
  return preset.scope === 'system' || preset.scope === 'plugin' || preset.scope === 'user' && preset.is_shared;
@@ -6288,6 +6488,9 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
6288
6488
  // Regular users: Keep everything
6289
6489
  return true;
6290
6490
  }) : searchFiltered.filter(function (preset) {
6491
+ if (isTemplate(preset)) {
6492
+ return selectedIds.includes(PresetFilterType.templates);
6493
+ }
6291
6494
  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';
6292
6495
  });
6293
6496
  var labelFiltered = function () {
@@ -6322,27 +6525,31 @@ var filterAndSortPresets = function filterAndSortPresets(presets, selectedFilter
6322
6525
  };
6323
6526
  return scopeFiltered.filter(matchesLabelFilters);
6324
6527
  }();
6325
- var systemPresets = labelFiltered.filter(function (preset) {
6528
+ var templatePresets = labelFiltered.filter(isTemplate);
6529
+ var storedPresets = labelFiltered.filter(function (preset) {
6530
+ return !isTemplate(preset);
6531
+ });
6532
+ var systemPresets = storedPresets.filter(function (preset) {
6326
6533
  return preset.scope === 'system';
6327
6534
  }).sort(function (presetA, presetB) {
6328
6535
  return presetA.title.localeCompare(presetB.title);
6329
6536
  });
6330
- var personalPresets = labelFiltered.filter(function (preset) {
6537
+ var personalPresets = storedPresets.filter(function (preset) {
6331
6538
  return preset.scope === 'user' && preset.username === username;
6332
6539
  }).sort(function (presetA, presetB) {
6333
6540
  return presetA.title.localeCompare(presetB.title);
6334
6541
  });
6335
- var sharedPresets = labelFiltered.filter(function (preset) {
6542
+ var sharedPresets = storedPresets.filter(function (preset) {
6336
6543
  return preset.scope === 'user' && preset.username !== username;
6337
6544
  }).sort(function (presetA, presetB) {
6338
6545
  return presetA.title.localeCompare(presetB.title);
6339
6546
  });
6340
- var pluginPresets = labelFiltered.filter(function (preset) {
6547
+ var pluginPresets = storedPresets.filter(function (preset) {
6341
6548
  return preset.scope === 'plugin';
6342
6549
  }).sort(function (presetA, presetB) {
6343
6550
  return presetA.title.localeCompare(presetB.title);
6344
6551
  });
6345
- var filteredByQuery = [].concat(systemPresets, personalPresets, sharedPresets, pluginPresets).filter(function (preset) {
6552
+ var filteredByQuery = [].concat(templatePresets, systemPresets, personalPresets, sharedPresets, pluginPresets).filter(function (preset) {
6346
6553
  if (!searchQuery) {
6347
6554
  return true;
6348
6555
  }
@@ -7405,8 +7612,10 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7405
7612
  event.stopPropagation();
7406
7613
  onOpenPresetInfo == null || onOpenPresetInfo(workspacePreset);
7407
7614
  };
7408
- var canDelete = (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin) && Boolean(workspacePreset.id);
7409
- var isNewPreset = !workspacePreset.id || workspacePreset.id === LOCAL_SOUNDINGS_ID;
7615
+ var isViewTemplate = Boolean(workspacePreset.isViewTemplate);
7616
+ var isTemplate = isViewTemplate || Boolean(workspacePreset.isWorkspaceTemplate);
7617
+ var canDelete = (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin) && Boolean(workspacePreset.id) && !isTemplate;
7618
+ var isNewPreset = !workspacePreset.id || workspacePreset.id === LOCAL_SOUNDINGS_ID || isTemplate;
7410
7619
  var menuItems = [{
7411
7620
  text: t('workspace-duplicate'),
7412
7621
  action: function action() {
@@ -7425,7 +7634,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7425
7634
  isDisabled: isNewPreset
7426
7635
  }];
7427
7636
  // Show "Edit" if it's your own user-scoped preset OR you're an admin
7428
- if (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin) {
7637
+ if (!isTemplate && (workspacePreset.scope === SystemScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username || isAdmin)) {
7429
7638
  menuItems.push({
7430
7639
  text: t('workspace-edit'),
7431
7640
  action: function action() {
@@ -7476,7 +7685,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7476
7685
  }
7477
7686
  return 'workspace-version';
7478
7687
  };
7479
- var showInfoIcon = !!workspacePreset.id && workspacePreset.id !== LOCAL_SOUNDINGS_ID;
7688
+ var showInfoIcon = !!workspacePreset.id && workspacePreset.id !== LOCAL_SOUNDINGS_ID && !isTemplate;
7480
7689
  return jsx(ListItem, {
7481
7690
  disablePadding: true,
7482
7691
  sx: {
@@ -7507,7 +7716,8 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7507
7716
  "aria-label": testIdPrefix,
7508
7717
  "data-testid": testIdPrefix + "-selectListRow",
7509
7718
  onClick: function onClick(event) {
7510
- if (event.ctrlKey || event.metaKey) {
7719
+ // A template has no workspace of its own to open in a new tab
7720
+ if ((event.ctrlKey || event.metaKey) && !isViewTemplate) {
7511
7721
  var url = getWorkspaceRouteUrl(workspacePreset.id);
7512
7722
  window.open(url, '_blank');
7513
7723
  } else {
@@ -7626,7 +7836,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7626
7836
  children: jsx(Info, {
7627
7837
  fontSize: "small"
7628
7838
  })
7629
- }), workspacePreset.scope !== 'plugin' && jsx(ToggleMenu, {
7839
+ }), workspacePreset.scope !== 'plugin' && !isViewTemplate && jsx(ToggleMenu, {
7630
7840
  buttonTestId: testIdPrefix + "-listOptionsButton",
7631
7841
  isDefaultOpen: isOptionsMenuOpen,
7632
7842
  menuItems: menuItems,
@@ -7720,7 +7930,7 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
7720
7930
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
7721
7931
  t = _useWorkspaceTranslat.t;
7722
7932
  var items = React.useMemo(function () {
7723
- var newPresetsTruthy = newPresets && newPresets.length > 0 ? newPresets : [getEmptyWorkspaceListItem(t), getNewSoundingsWorkspaceListItem(t)];
7933
+ var newPresetsTruthy = newPresets != null ? newPresets : [];
7724
7934
  var favourites = workspacePresets.filter(function (preset) {
7725
7935
  return isFavourite == null ? void 0 : isFavourite(preset);
7726
7936
  });
@@ -7728,7 +7938,7 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
7728
7938
  return !(isFavourite != null && isFavourite(preset));
7729
7939
  });
7730
7940
  return [].concat(favourites, !hideNewWorkspace ? newPresetsTruthy : [], otherPresets);
7731
- }, [hideNewWorkspace, newPresets, workspacePresets, isFavourite, t]);
7941
+ }, [hideNewWorkspace, newPresets, workspacePresets, isFavourite]);
7732
7942
  return jsxs(Box, {
7733
7943
  "data-testid": testIdPrefix + "-selectList",
7734
7944
  sx: {
@@ -7774,6 +7984,7 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
7774
7984
  };
7775
7985
 
7776
7986
  var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7987
+ var _findViewTemplatePres, _ref8;
7777
7988
  var panelId = _ref.panelId,
7778
7989
  _ref$isLabelFilterOpe = _ref.isLabelFilterOpen,
7779
7990
  isLabelFilterOpen = _ref$isLabelFilterOpe === void 0 ? false : _ref$isLabelFilterOpe,
@@ -7835,6 +8046,11 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7835
8046
  var _useViewPresets = useViewPresets(),
7836
8047
  viewPresets = _useViewPresets.data,
7837
8048
  isViewPresetsListFetching = _useViewPresets.isFetching;
8049
+ var _useViewTemplatePrese = useViewTemplatePresets(),
8050
+ viewTemplatePresets = _useViewTemplatePrese.data;
8051
+ var templateListItems = React.useMemo(function () {
8052
+ return toViewTemplateListItems(viewTemplatePresets, t);
8053
+ }, [viewTemplatePresets, t]);
7838
8054
  var viewPresetListFilters = useSelector(function (store) {
7839
8055
  return getViewPresetListFiltersForView(store, panelId, scope, isAdmin);
7840
8056
  });
@@ -7859,11 +8075,8 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7859
8075
  return Object.values(viewPresetLabelFilters).flat().length;
7860
8076
  }, [viewPresetLabelFilters]);
7861
8077
  var filteredPresets = React.useMemo(function () {
7862
- if (viewPresets) {
7863
- return [].concat(filterAndSortPresets([].concat(viewPresets, pluginCatalogAsPresets), viewPresetListFilters, username, isAdmin, viewPresetLabelFilters != null ? viewPresetLabelFilters : undefined, viewPresetListSearchQuery, favourites.isFavourite));
7864
- }
7865
- return [];
7866
- }, [viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters, viewPresetListSearchQuery, favourites.isFavourite, pluginCatalogAsPresets]);
8078
+ return filterAndSortPresets([].concat(viewPresets != null ? viewPresets : [], pluginCatalogAsPresets, templateListItems), viewPresetListFilters, username, isAdmin, viewPresetLabelFilters != null ? viewPresetLabelFilters : undefined, viewPresetListSearchQuery, favourites.isFavourite);
8079
+ }, [viewPresets, viewPresetListFilters, username, isAdmin, viewPresetLabelFilters, viewPresetListSearchQuery, favourites.isFavourite, pluginCatalogAsPresets, templateListItems]);
7867
8080
  var labelsFormMethods = useForm({
7868
8081
  defaultValues: {
7869
8082
  labels: viewPresetLabelFilters
@@ -7924,16 +8137,22 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7924
8137
  }, [dispatch, panelId, pluginCatalog]);
7925
8138
  var selectViewPreset = React.useCallback(/*#__PURE__*/function () {
7926
8139
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(viewPresetId) {
7927
- var plugin;
8140
+ var plugin, template;
7928
8141
  return _regenerator().w(function (_context) {
7929
8142
  while (1) switch (_context.n) {
7930
8143
  case 0:
7931
- plugin = pluginCatalog == null ? void 0 : pluginCatalog[viewPresetId]; // only on loading a plugin view from outside geoweb, not when selecting a regular preset
8144
+ plugin = pluginCatalog == null ? void 0 : pluginCatalog[viewPresetId];
8145
+ template = findViewTemplatePreset(viewTemplatePresets, viewPresetId); // only on loading a plugin view from outside geoweb, not when selecting a regular preset
7932
8146
  if (plugin) {
7933
8147
  dispatch(viewPresetActions.selectViewPlugin({
7934
8148
  panelId: panelId,
7935
8149
  pluginMetaData: plugin
7936
8150
  }));
8151
+ } else if (template) {
8152
+ dispatch(viewPresetActions.selectViewTemplate({
8153
+ panelId: panelId,
8154
+ template: toTranslatedViewTemplatePreset(template, t)
8155
+ }));
7937
8156
  } else {
7938
8157
  dispatch(viewPresetActions.selectViewPreset({
7939
8158
  panelId: panelId,
@@ -7948,7 +8167,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7948
8167
  return function (_x) {
7949
8168
  return _ref4.apply(this, arguments);
7950
8169
  };
7951
- }(), [dispatch, panelId, pluginCatalog]);
8170
+ }(), [dispatch, panelId, pluginCatalog, t, viewTemplatePresets]);
7952
8171
  var refreshViewPresets = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
7953
8172
  return _regenerator().w(function (_context2) {
7954
8173
  while (1) switch (_context2.n) {
@@ -8173,7 +8392,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8173
8392
  return filter.isSelected;
8174
8393
  });
8175
8394
  var showLabelFilterToggle = Boolean(onToggleLabelFilter);
8176
- var shouldHideNewWorkspace = !isAllSelectedForFilters || viewPresetListSearchQuery.length > 0 || hasActiveLabelFilters;
8395
+ var activeTemplateId = (_findViewTemplatePres = findViewTemplatePresetForComponentType(viewTemplatePresets, viewComponentType)) == null ? void 0 : _findViewTemplatePres.id;
8177
8396
  var closeInfo = React.useCallback(function () {
8178
8397
  setInfoPreset(undefined);
8179
8398
  }, []);
@@ -8321,16 +8540,12 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8321
8540
  minHeight: 0
8322
8541
  },
8323
8542
  children: [jsx(WorkspaceSelectList, {
8324
- currentSelectedId: activeViewPresetId || undefined,
8543
+ currentSelectedId: (_ref8 = activeViewPresetId || activeTemplateId) != null ? _ref8 : undefined,
8325
8544
  favouritesDisabled: favourites.disabled,
8326
- hideNewWorkspace: shouldHideNewWorkspace,
8327
8545
  infoOpenPresetId: infoPreset == null ? void 0 : infoPreset.id,
8328
8546
  isAdmin: isAdmin,
8329
8547
  isEditable: isLoggedIn,
8330
8548
  isFavourite: favourites.isFavourite,
8331
- newPresets: [Object.assign({}, getEmptyWorkspaceListItem(t), {
8332
- title: t('workspace-mappreset-new')
8333
- })],
8334
8549
  onClickWorkspacePreset: selectViewPreset,
8335
8550
  onClickWorkspacePresetOption: onClickViewPresetOption,
8336
8551
  onOpenPresetInfo: onOpenPresetInfo,
@@ -9062,6 +9277,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9062
9277
  isAdmin: isAdmin,
9063
9278
  isEditable: isLoggedIn,
9064
9279
  isFavourite: favourites.isFavourite,
9280
+ newPresets: [getEmptyWorkspaceListItem(t), getNewSoundingsWorkspaceListItem(t)],
9065
9281
  onClickWorkspacePreset: onClickWorkspacePreset,
9066
9282
  onClickWorkspacePresetOption: onClickWorkspacePresetOption,
9067
9283
  onOpenPresetInfo: onOpenPresetInfo,
@@ -11944,6 +12160,106 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11944
12160
  });
11945
12161
  };
11946
12162
 
12163
+ var workspacePresets$1 = [
12164
+ {
12165
+ titleKey: "workspace-new",
12166
+ title: "New workspace",
12167
+ scope: "system",
12168
+ abstract: "",
12169
+ viewType: "singleWindow",
12170
+ mosaicNode: "1_screen",
12171
+ views: {
12172
+ allIds: [
12173
+ "1_screen"
12174
+ ],
12175
+ byId: {
12176
+ "1_screen": {
12177
+ titleKey: "workspace-mappreset-new",
12178
+ title: "New map preset",
12179
+ componentType: "Map",
12180
+ initialProps: {
12181
+ mapPreset: {
12182
+ shouldShowLayerManager: true,
12183
+ dockedLayerManagerSize: "sizeSmall"
12184
+ },
12185
+ syncGroupsIds: [
12186
+ ]
12187
+ }
12188
+ }
12189
+ }
12190
+ }
12191
+ }
12192
+ ];
12193
+ var viewPresets = [
12194
+ {
12195
+ id: "template-map",
12196
+ titleKey: "workspace-template-map",
12197
+ title: "New map preset",
12198
+ componentType: "Map",
12199
+ initialProps: {
12200
+ mapPreset: {
12201
+ shouldShowLayerManager: true,
12202
+ dockedLayerManagerSize: "sizeSmall"
12203
+ },
12204
+ syncGroupsIds: [
12205
+ ]
12206
+ }
12207
+ },
12208
+ {
12209
+ id: "template-timeseries",
12210
+ titleKey: "workspace-template-timeseries",
12211
+ title: "New timeseries preset",
12212
+ componentType: "TimeSeries",
12213
+ initialProps: {
12214
+ plotPreset: {
12215
+ mapId: "",
12216
+ plots: [
12217
+ ],
12218
+ parameters: [
12219
+ ]
12220
+ },
12221
+ services: [
12222
+ ],
12223
+ syncGroupsIds: [
12224
+ ]
12225
+ }
12226
+ },
12227
+ {
12228
+ id: "template-soundings",
12229
+ titleKey: "workspace-template-soundings",
12230
+ title: "New sounding preset",
12231
+ componentType: "Soundings",
12232
+ initialProps: {
12233
+ selectedSources: {
12234
+ },
12235
+ selectedLocations: {
12236
+ },
12237
+ syncGroupsIds: [
12238
+ ]
12239
+ }
12240
+ },
12241
+ {
12242
+ id: "template-warninglist",
12243
+ titleKey: "workspace-template-warninglist",
12244
+ title: "New warninglist preset",
12245
+ componentType: "WarningList",
12246
+ initialProps: {
12247
+ }
12248
+ },
12249
+ {
12250
+ id: "template-timeline",
12251
+ titleKey: "workspace-template-timeline",
12252
+ title: "New timeline preset",
12253
+ componentType: "WarningsTimeline",
12254
+ initialProps: {
12255
+ }
12256
+ }
12257
+ ];
12258
+ var templatePresets = {
12259
+ workspacePresets: workspacePresets$1,
12260
+ viewPresets: viewPresets
12261
+ };
12262
+
11947
12263
  var workspacePresets = [
11948
12264
  {
11949
12265
  id: "screenConfigRadarTemp",
@@ -13240,6 +13556,7 @@ var createUserPreferencesEndpoints = function createUserPreferencesEndpoints() {
13240
13556
  };
13241
13557
 
13242
13558
  var defaultWorkspacePresets = workspacePresets;
13559
+ var templatePresetsFixture = templatePresets;
13243
13560
  // Transforms full workspace presets to list items
13244
13561
  var workspacePresetList = defaultWorkspacePresets.map(function (preset) {
13245
13562
  var _preset$abstract;
@@ -13253,7 +13570,9 @@ var workspacePresetList = defaultWorkspacePresets.map(function (preset) {
13253
13570
  username: preset.username
13254
13571
  };
13255
13572
  });
13256
- var workspaceEndpoints = [].concat(createUserPreferencesEndpoints(), [http["delete"](/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
13573
+ var workspaceEndpoints = [].concat(createUserPreferencesEndpoints(), [http.get(/\/assets\/templatePresets\.json$/, function () {
13574
+ return HttpResponse.json(templatePresetsFixture);
13575
+ }), http["delete"](/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
13257
13576
  return _regenerator().w(function (_context) {
13258
13577
  while (1) switch (_context.n) {
13259
13578
  case 0:
@@ -13339,4 +13658,4 @@ var workspaceEndpoints = [].concat(createUserPreferencesEndpoints(), [http["dele
13339
13658
  }, _callee6);
13340
13659
  })))]);
13341
13660
 
13342
- export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, defaultViewPresetsFilters, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
13661
+ export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, defaultViewPresetsFilters, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, templatePresetsFixture, viewPresetActions, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };