@opengeoweb/store 9.36.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,3 +5,7 @@ This library was generated with [Nx](https://nx.dev).
5
5
  ## Running unit tests
6
6
 
7
7
  Run `nx test store` to execute the unit tests via [Jest](https://jestjs.io).
8
+
9
+ ### TypeScript Documentation
10
+
11
+ - [TypeScript Docs](https://opengeoweb.gitlab.io/opengeoweb/typescript-docs/store/)
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, getCapabilities } from '@opengeoweb/webmap';
1
+ import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
2
2
  import { createAction, createSlice, createSelector, createListenerMiddleware, isAnyOf, createEntityAdapter } from '@reduxjs/toolkit';
3
3
  import { getGeoJson, moveFeature, createInterSections, getLastEmptyFeatureIndex, defaultLayers, addSelectionTypeToGeoJSON, getFeatureCollection, emptyGeoJSON, defaultIntersectionStyleProperties } from '@opengeoweb/webmap-react';
4
4
  export { defaultLayers } from '@opengeoweb/webmap-react';
@@ -2285,14 +2285,16 @@ var createUIDialogElement = function createUIDialogElement(_ref) {
2285
2285
  type = _ref.type,
2286
2286
  setOpen = _ref.setOpen,
2287
2287
  _ref$source = _ref.source,
2288
- source = _ref$source === void 0 ? 'app' : _ref$source;
2288
+ source = _ref$source === void 0 ? 'app' : _ref$source,
2289
+ sourcePanelId = _ref.sourcePanelId;
2289
2290
  return {
2290
2291
  activeMapId: activeMapId,
2291
2292
  isOpen: setOpen,
2292
2293
  type: type,
2293
2294
  source: source,
2294
2295
  isLoading: false,
2295
- error: undefined
2296
+ error: undefined,
2297
+ sourcePanelId: sourcePanelId
2296
2298
  };
2297
2299
  };
2298
2300
  var initialState$5 = {
@@ -2350,11 +2352,15 @@ var slice$6 = createSlice({
2350
2352
  setToggleOpenDialog: function setToggleOpenDialog(draft, action) {
2351
2353
  var _action$payload2 = action.payload,
2352
2354
  type = _action$payload2.type,
2353
- setOpen = _action$payload2.setOpen;
2355
+ setOpen = _action$payload2.setOpen,
2356
+ sourcePanelId = _action$payload2.sourcePanelId;
2354
2357
  if (!draft.dialogs[type]) {
2355
2358
  return;
2356
2359
  }
2357
2360
  draft.dialogs[type].isOpen = setOpen;
2361
+ if (sourcePanelId) {
2362
+ draft.dialogs[type].sourcePanelId = sourcePanelId;
2363
+ }
2358
2364
  if (setOpen) {
2359
2365
  draft.order = moveToTop(draft.order, type);
2360
2366
  }
@@ -3172,6 +3178,19 @@ var getDialogSource = createSelector(getDialogDetailsByType, function (details)
3172
3178
  var getActiveWindowId = createSelector(getUiStore, function (store) {
3173
3179
  return store == null ? void 0 : store.activeWindowId;
3174
3180
  }, selectorMemoizationOptions);
3181
+ /**
3182
+ * Gets the panelId of which the dialog is opened from
3183
+ *
3184
+ * Example: getSourcePanelId(store, 'publicWarnings')
3185
+ * @param {object} store store object from which the panelId state will be extracted
3186
+ * @returns {string} the dialog type
3187
+ */
3188
+ var getSourcePanelId = createSelector(function (store, dialogType) {
3189
+ var _store$ui;
3190
+ return (_store$ui = store.ui) == null ? void 0 : _store$ui.dialogs[dialogType];
3191
+ }, function (dialog) {
3192
+ return (dialog == null ? void 0 : dialog.sourcePanelId) || '';
3193
+ }, selectorMemoizationOptions);
3175
3194
  /**
3176
3195
  * Gets if this is the active window
3177
3196
  *
@@ -3193,12 +3212,12 @@ var getDialogError = createSelector(getDialogDetailsByType, function (details) {
3193
3212
  var getUiDialogsByActiveMapId = function getUiDialogsByActiveMapId(store, mapId) {
3194
3213
  if (store && store.ui && store.ui.order) {
3195
3214
  var foundDialogsIds = store.ui.order.filter(function (id) {
3196
- var _store$ui;
3197
- return ((_store$ui = store.ui) == null || (_store$ui = _store$ui.dialogs[id]) == null ? void 0 : _store$ui.activeMapId) === mapId;
3215
+ var _store$ui2;
3216
+ return ((_store$ui2 = store.ui) == null || (_store$ui2 = _store$ui2.dialogs[id]) == null ? void 0 : _store$ui2.activeMapId) === mapId;
3198
3217
  });
3199
3218
  var foundDialogs = foundDialogsIds.reduce(function (list, id) {
3200
- var _store$ui2;
3201
- var dialog = (_store$ui2 = store.ui) == null ? void 0 : _store$ui2.dialogs[id];
3219
+ var _store$ui3;
3220
+ var dialog = (_store$ui3 = store.ui) == null ? void 0 : _store$ui3.dialogs[id];
3202
3221
  if (dialog) {
3203
3222
  return list.concat(dialog);
3204
3223
  }
@@ -3220,6 +3239,7 @@ var selectors$6 = /*#__PURE__*/Object.freeze({
3220
3239
  getDialogOrder: getDialogOrder,
3221
3240
  getDialogSource: getDialogSource,
3222
3241
  getIsActiveWindowId: getIsActiveWindowId,
3242
+ getSourcePanelId: getSourcePanelId,
3223
3243
  getUiDialogsByActiveMapId: getUiDialogsByActiveMapId,
3224
3244
  getUiStore: getUiStore,
3225
3245
  getisDialogOpen: getisDialogOpen,
@@ -4128,7 +4148,10 @@ var getTime = createSelector(getSyncSourceBySourceId, function (store) {
4128
4148
  return store && store.payloadByType && store.payloadByType[SYNCGROUPS_TYPE_SETTIME] ? store.payloadByType[SYNCGROUPS_TYPE_SETTIME].value : null;
4129
4149
  }, selectorMemoizationOptions);
4130
4150
  var selectLinkedState = createSelector(synchronizationGroupStore, function (syncState) {
4131
- return syncState.linkedState;
4151
+ return (syncState == null ? void 0 : syncState.linkedState) || {
4152
+ links: {},
4153
+ sharedData: {}
4154
+ };
4132
4155
  });
4133
4156
  var getLinkedMaps = createSelector([selectLinkedState, function (store, panelId) {
4134
4157
  return panelId;
@@ -4145,7 +4168,8 @@ var getLinkedFeatureProviders = function getLinkedFeatureProviders(linkedState,
4145
4168
  var selectSharedData = createSelector([selectLinkedState, function (store, panelId) {
4146
4169
  return panelId;
4147
4170
  }], function (linkedState, panelId) {
4148
- return (linkedState == null ? void 0 : linkedState.sharedData[panelId]) || {};
4171
+ var sharedDataForPanel = linkedState.sharedData[panelId];
4172
+ return sharedDataForPanel || {};
4149
4173
  });
4150
4174
  var selectLinkedPanelId = createSelector([selectLinkedState, function (_, mapViewId) {
4151
4175
  return mapViewId;
@@ -4179,6 +4203,17 @@ var selectLinkedFeatures = createSelector([function (linkedState) {
4179
4203
  });
4180
4204
  return features;
4181
4205
  });
4206
+ var selectLinkedFormFeatures = createSelector([function (linkedState) {
4207
+ return linkedState;
4208
+ }, getLinkedFeatureProviders], function (linkedState, featureProviders) {
4209
+ var features = featureProviders.flatMap(function (providerId) {
4210
+ var _linkedState$sharedDa2;
4211
+ return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) == null ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
4212
+ }).filter(function (f) {
4213
+ return f !== undefined;
4214
+ });
4215
+ return features;
4216
+ });
4182
4217
  var getSelectedFeature = createSelector([
4183
4218
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
4184
4219
  function (state, mapId) {
@@ -4222,6 +4257,7 @@ var selectors$4 = /*#__PURE__*/Object.freeze({
4222
4257
  getSynchronizationGroupStore: getSynchronizationGroupStore,
4223
4258
  getTime: getTime,
4224
4259
  selectLinkedFeatures: selectLinkedFeatures,
4260
+ selectLinkedFormFeatures: selectLinkedFormFeatures,
4225
4261
  selectLinkedPanelId: selectLinkedPanelId,
4226
4262
  selectMapViewsForPanelId: selectMapViewsForPanelId,
4227
4263
  selectSharedData: selectSharedData
@@ -4252,15 +4288,6 @@ var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4252
4288
  return getLinkedMaps(store, panelId);
4253
4289
  });
4254
4290
  var dispatch = useDispatch();
4255
- useEffect(function () {
4256
- return function () {
4257
- if (panelId) {
4258
- dispatch(actions.deleteSharedData({
4259
- panelId: panelId
4260
- }));
4261
- }
4262
- };
4263
- }, [dispatch, panelId]);
4264
4291
  useEffect(function () {
4265
4292
  var diff = Object.assign({}, sharedData, data);
4266
4293
  if (panelId && (linkedMaps == null ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
@@ -4270,6 +4297,15 @@ var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
4270
4297
  }));
4271
4298
  }
4272
4299
  }, [panelId, linkedMaps, data, sharedData, dispatch]);
4300
+ useEffect(function () {
4301
+ return function () {
4302
+ if (panelId) {
4303
+ dispatch(actions.deleteSharedData({
4304
+ panelId: panelId
4305
+ }));
4306
+ }
4307
+ };
4308
+ }, [dispatch, panelId]);
4273
4309
  return sharedData;
4274
4310
  };
4275
4311
 
@@ -6820,7 +6856,7 @@ var fetchService = /*#__PURE__*/function () {
6820
6856
  case 0:
6821
6857
  _context.prev = 0;
6822
6858
  _context.next = 3;
6823
- return getCapabilities.getLayersFlattenedFromService(service.serviceUrl);
6859
+ return queryWMSLayers(service.serviceUrl);
6824
6860
  case 3:
6825
6861
  layers = _context.sent;
6826
6862
  listenerApi.dispatch(serviceActions.serviceSetLayers(Object.assign({}, service, {
@@ -7492,33 +7528,6 @@ routerListener.startListening({
7492
7528
  }()
7493
7529
  });
7494
7530
 
7495
- /* *
7496
- * Licensed under the Apache License, Version 2.0 (the "License");
7497
- * you may not use this file except in compliance with the License.
7498
- * You may obtain a copy of the License at
7499
- *
7500
- * http://www.apache.org/licenses/LICENSE-2.0
7501
- *
7502
- * Unless required by applicable law or agreed to in writing, software
7503
- * distributed under the License is distributed on an "AS IS" BASIS,
7504
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7505
- * See the License for the specific language governing permissions and
7506
- * limitations under the License.
7507
- *
7508
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7509
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
7510
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7511
- * */
7512
- var routerReducersMap = {
7513
- router: reducer$1
7514
- };
7515
- var routerMiddlewares = [routerListener.middleware];
7516
- var routerModuleConfig = {
7517
- id: 'router',
7518
- reducersMap: routerReducersMap,
7519
- middlewares: routerMiddlewares
7520
- };
7521
-
7522
7531
  /* *
7523
7532
  * Licensed under the Apache License, Version 2.0 (the "License");
7524
7533
  * you may not use this file except in compliance with the License.
@@ -8016,6 +8025,33 @@ drawingToolListener.startListening({
8016
8025
  }()
8017
8026
  });
8018
8027
 
8028
+ /* *
8029
+ * Licensed under the Apache License, Version 2.0 (the "License");
8030
+ * you may not use this file except in compliance with the License.
8031
+ * You may obtain a copy of the License at
8032
+ *
8033
+ * http://www.apache.org/licenses/LICENSE-2.0
8034
+ *
8035
+ * Unless required by applicable law or agreed to in writing, software
8036
+ * distributed under the License is distributed on an "AS IS" BASIS,
8037
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8038
+ * See the License for the specific language governing permissions and
8039
+ * limitations under the License.
8040
+ *
8041
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8042
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
8043
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
8044
+ * */
8045
+ var routerReducersMap = {
8046
+ router: reducer$1
8047
+ };
8048
+ var routerMiddlewares = [routerListener.middleware];
8049
+ var routerModuleConfig = {
8050
+ id: 'router',
8051
+ reducersMap: routerReducersMap,
8052
+ middlewares: routerMiddlewares
8053
+ };
8054
+
8019
8055
  /* *
8020
8056
  * Licensed under the Apache License, Version 2.0 (the "License");
8021
8057
  * you may not use this file except in compliance with the License.
@@ -8533,4 +8569,4 @@ var StoreProvider = function StoreProvider(_ref2) {
8533
8569
  });
8534
8570
  };
8535
8571
 
8536
- export { IS_LEGEND_OPEN_BY_DEFAULT, StoreProvider, coreModuleConfig, coreModuleMiddlewares, coreModuleReducersMap, createCustomStore, drawtoolActions, drawtoolMiddlewares, drawtoolModuleConfig, reducer as drawtoolReducer, drawtoolReducersMap, selectors as drawtoolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$4 as genericSelectors, types$1 as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, initialState$3 as initialState, layerActions, reducer$6 as layerReducer, selectors$7 as layerSelectors, types$5 as layerTypes, utils$2 as layerUtils, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$3 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, selectors$2 as mapSelectors, mapStoreActions, mapStoreMiddlewares, mapStoreModuleConfig, mapStoreReducers, types$4 as mapTypes, mapUtils, routerActions, routerMiddlewares, routerModuleConfig, routerReducersMap, utils as routerUtils, selectorMemoizationOptions, serviceActions, selectors$1 as serviceSelectors, types as serviceTypes, setUserAddedServices, storeTestSettings, storeTestUtils, utils$1 as storeUtils, constants$2 as syncConstants, actions as syncGroupsActions, syncGroupsListener, reducer$3 as syncGroupsReducer, selector as syncGroupsSelector, selectors$5 as syncGroupsSelectors, types$2 as syncGroupsTypes, types$2 as types, uiActions, uiModuleConfig, reducer$5 as uiReducer, selectors$6 as uiSelectors, types$3 as uiTypes, useSetupDialog, useUpdateSharedData, reducer$4 as webmapReducer };
8572
+ export { IS_LEGEND_OPEN_BY_DEFAULT, StoreProvider, coreModuleConfig, coreModuleMiddlewares, coreModuleReducersMap, createCustomStore, drawingToolListener, drawtoolActions, drawtoolMiddlewares, drawtoolModuleConfig, reducer as drawtoolReducer, drawtoolReducersMap, selectors as drawtoolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$4 as genericSelectors, types$1 as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, initialState$3 as initialState, layerActions, reducer$6 as layerReducer, selectors$7 as layerSelectors, types$5 as layerTypes, utils$2 as layerUtils, layersListener, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$3 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, selectors$2 as mapSelectors, mapStoreActions, mapStoreMiddlewares, mapStoreModuleConfig, mapStoreReducers, types$4 as mapTypes, mapUiListener, mapUtils, metronomeListener, routerActions, routerListener, routerMiddlewares, routerModuleConfig, reducer$1 as routerReducer, routerReducersMap, utils as routerUtils, selectorMemoizationOptions, serviceActions, serviceListener, reducer$2 as serviceReducer, selectors$1 as serviceSelectors, types as serviceTypes, setUserAddedServices, storeTestSettings, storeTestUtils, utils$1 as storeUtils, constants$2 as syncConstants, actions as syncGroupsActions, syncGroupsListener, reducer$3 as syncGroupsReducer, selector as syncGroupsSelector, selectors$5 as syncGroupsSelectors, types$2 as syncGroupsTypes, types$2 as types, uiActions, uiModuleConfig, reducer$5 as uiReducer, selectors$6 as uiSelectors, types$3 as uiTypes, useSetupDialog, useUpdateSharedData, reducer$4 as webmapReducer };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/store",
3
- "version": "9.36.0",
3
+ "version": "10.0.0",
4
4
  "description": "GeoWeb Store library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,6 +1,5 @@
1
- export { drawtoolActions } from './reducer';
2
1
  export * as drawtoolSelectors from './selectors';
3
2
  export * from './config';
4
3
  export type { DrawToolItem, DrawtoolModuleStore } from './reducer';
5
4
  export * from './utils';
6
- export { reducer as drawtoolReducer } from './reducer';
5
+ export { drawtoolActions, reducer as drawtoolReducer } from './reducer';
@@ -44,6 +44,17 @@ export declare const selectLinkedFeatures: ((state: any, mapId: string) => {
44
44
  }> & {
45
45
  clearCache: () => void;
46
46
  };
47
+ export declare const selectLinkedFormFeatures: ((state: any, mapId: string) => {
48
+ id: string;
49
+ geoJSON: import("geojson").FeatureCollection<import("geojson").Geometry, import("geojson").GeoJsonProperties>;
50
+ }[]) & import("reselect").OutputSelectorFields<(args_0: LinkedState, args_1: string[]) => {
51
+ id: string;
52
+ geoJSON: import("geojson").FeatureCollection<import("geojson").Geometry, import("geojson").GeoJsonProperties>;
53
+ }[], {
54
+ clearCache: () => void;
55
+ }> & {
56
+ clearCache: () => void;
57
+ };
47
58
  export declare const getSelectedFeature: ((state: SynchronizationGroupState, mapId: string) => {
48
59
  lat: number;
49
60
  lon: number;
@@ -37,6 +37,10 @@ export interface PotentialData {
37
37
  geoJSON: GeoJSON.FeatureCollection;
38
38
  }[];
39
39
  selectedFeatureId?: string;
40
+ formFeatures?: {
41
+ id: string;
42
+ geoJSON: GeoJSON.FeatureCollection;
43
+ }[];
40
44
  hoverId?: string;
41
45
  }
42
46
  export interface LinkedState {
@@ -3,6 +3,12 @@ export * from './ui';
3
3
  export * from './generic';
4
4
  export { genericListener } from './generic/listener';
5
5
  export { mapListener } from './mapStore/map/listener';
6
+ export { serviceListener } from './mapStore/service/listener';
7
+ export { routerListener } from './router/listener';
8
+ export { drawingToolListener } from './drawingtool/listener';
9
+ export { layersListener } from './mapStore/layers/listeners';
10
+ export { mapUiListener } from './mapStore/map/mapUiListener';
11
+ export { metronomeListener } from './mapStore/map/metronomeListener';
6
12
  export * from './router';
7
13
  export * from './drawingtool';
8
14
  export * from './types';
@@ -1,4 +1,4 @@
1
- export { serviceActions } from './reducer';
1
+ export { serviceActions, reducer as serviceReducer } from './reducer';
2
2
  export * as serviceSelectors from './selectors';
3
3
  export * as serviceTypes from './types';
4
4
  export * from './localStorage';
@@ -1,3 +1,3 @@
1
- export { routerActions } from './reducer';
1
+ export { routerActions, reducer as routerReducer } from './reducer';
2
2
  export * as routerUtils from './utils';
3
3
  export * from './config';
@@ -5,9 +5,10 @@ interface CreateUIDialogElementProps {
5
5
  type: DialogType;
6
6
  setOpen: boolean;
7
7
  source?: Source;
8
+ sourcePanelId?: string;
8
9
  }
9
10
  export declare const moveToTop: <Type>(list: Type[], element: Type) => Type[];
10
- export declare const createUIDialogElement: ({ activeMapId, type, setOpen, source, }: CreateUIDialogElementProps) => UIType;
11
+ export declare const createUIDialogElement: ({ activeMapId, type, setOpen, source, sourcePanelId, }: CreateUIDialogElementProps) => UIType;
11
12
  export declare const initialState: UIStoreType;
12
13
  export declare const slice: import("@reduxjs/toolkit").Slice<UIStoreType, {
13
14
  registerDialog: (draft: Draft<UIStoreType>, action: PayloadAction<UIRegisterDialogPayload>) => void;
@@ -77,6 +77,18 @@ export declare const getActiveWindowId: ((state: UIModuleState) => string) & imp
77
77
  }> & {
78
78
  clearCache: () => void;
79
79
  };
80
+ /**
81
+ * Gets the panelId of which the dialog is opened from
82
+ *
83
+ * Example: getSourcePanelId(store, 'publicWarnings')
84
+ * @param {object} store store object from which the panelId state will be extracted
85
+ * @returns {string} the dialog type
86
+ */
87
+ export declare const getSourcePanelId: ((state: UIModuleState, dialogType: string) => string) & import("reselect").OutputSelectorFields<(args_0: UIType | undefined) => string, {
88
+ clearCache: () => void;
89
+ }> & {
90
+ clearCache: () => void;
91
+ };
80
92
  /**
81
93
  * Gets if this is the active window
82
94
  *
@@ -28,6 +28,7 @@ export interface UIType {
28
28
  source?: Source;
29
29
  isLoading?: boolean;
30
30
  error?: string;
31
+ sourcePanelId?: string;
31
32
  }
32
33
  export interface UIStoreType {
33
34
  order: DialogType[];
@@ -58,6 +59,7 @@ export interface UIToggleDialogPayload {
58
59
  setOpen: boolean;
59
60
  origin?: string;
60
61
  mapId?: string;
62
+ sourcePanelId?: string;
61
63
  }
62
64
  export interface UIOrderDialogPayload {
63
65
  type: DialogType;