@zengenti/contensis-react-base 3.0.2-beta.2 → 3.0.2-beta.21

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.
Files changed (110) hide show
  1. package/cjs/{App-ee485b92.js → App-21a7d836.js} +120 -432
  2. package/cjs/App-21a7d836.js.map +1 -0
  3. package/cjs/ContensisDeliveryApi-c079b03a.js +231 -0
  4. package/cjs/ContensisDeliveryApi-c079b03a.js.map +1 -0
  5. package/cjs/{RouteLoader-3aa6456e.js → RouteLoader-7f0d107a.js} +23 -37
  6. package/{esm/RouteLoader-5171c63f.js.map → cjs/RouteLoader-7f0d107a.js.map} +1 -1
  7. package/cjs/{ToJs-a9a8522b.js → ToJs-6e9cfa69.js} +3 -4
  8. package/cjs/{ToJs-a9a8522b.js.map → ToJs-6e9cfa69.js.map} +1 -1
  9. package/cjs/client.js +20 -27
  10. package/cjs/client.js.map +1 -1
  11. package/cjs/contensis-react-base.js +124 -188
  12. package/cjs/contensis-react-base.js.map +1 -1
  13. package/cjs/forms.js +1488 -272
  14. package/cjs/forms.js.map +1 -1
  15. package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-7c363211.js} +1 -4
  16. package/cjs/{fromJSLeaveImmer-e74c673c.js.map → fromJSLeaveImmer-7c363211.js.map} +1 -1
  17. package/cjs/{login-840860bc.js → login-2a6b5be0.js} +64 -113
  18. package/cjs/login-2a6b5be0.js.map +1 -0
  19. package/cjs/{reducers-3a4f8971.js → reducers-9afb5f89.js} +14 -31
  20. package/cjs/reducers-9afb5f89.js.map +1 -0
  21. package/cjs/redux.js +17 -17
  22. package/cjs/redux.js.map +1 -1
  23. package/cjs/routing.js +6 -7
  24. package/cjs/routing.js.map +1 -1
  25. package/cjs/{sagas-8a20e424.js → sagas-e04b94c1.js} +225 -301
  26. package/cjs/sagas-e04b94c1.js.map +1 -0
  27. package/cjs/search.js +68 -94
  28. package/cjs/search.js.map +1 -1
  29. package/cjs/{selectors-656da4b7.js → selectors-bcca60f4.js} +89 -8
  30. package/cjs/selectors-bcca60f4.js.map +1 -0
  31. package/cjs/urls-6fcaf4c6.js.map +1 -1
  32. package/cjs/user.js +4 -13
  33. package/cjs/user.js.map +1 -1
  34. package/cjs/util.js +45 -53
  35. package/cjs/util.js.map +1 -1
  36. package/cjs/{version-78dfc3bd.js → version-4077e706.js} +50 -159
  37. package/cjs/version-4077e706.js.map +1 -0
  38. package/cjs/version-fe28099e.js +98 -0
  39. package/cjs/version-fe28099e.js.map +1 -0
  40. package/esm/{App-640239d2.js → App-2af18a99.js} +102 -412
  41. package/esm/App-2af18a99.js.map +1 -0
  42. package/esm/ContensisDeliveryApi-5660ee0e.js +227 -0
  43. package/esm/ContensisDeliveryApi-5660ee0e.js.map +1 -0
  44. package/esm/{RouteLoader-5171c63f.js → RouteLoader-6eac364e.js} +22 -36
  45. package/{cjs/RouteLoader-3aa6456e.js.map → esm/RouteLoader-6eac364e.js.map} +1 -1
  46. package/esm/{ToJs-4e02a04d.js → ToJs-9b30636a.js} +3 -4
  47. package/esm/{ToJs-4e02a04d.js.map → ToJs-9b30636a.js.map} +1 -1
  48. package/esm/client.js +15 -22
  49. package/esm/client.js.map +1 -1
  50. package/esm/contensis-react-base.js +119 -183
  51. package/esm/contensis-react-base.js.map +1 -1
  52. package/esm/forms.js +1490 -274
  53. package/esm/forms.js.map +1 -1
  54. package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-e2dacd63.js} +1 -4
  55. package/esm/{fromJSLeaveImmer-0114ffcf.js.map → fromJSLeaveImmer-e2dacd63.js.map} +1 -1
  56. package/esm/{login-57395c9c.js → login-71ff3fcb.js} +63 -112
  57. package/esm/login-71ff3fcb.js.map +1 -0
  58. package/esm/{reducers-8e5d6232.js → reducers-3d5c37d1.js} +14 -31
  59. package/esm/reducers-3d5c37d1.js.map +1 -0
  60. package/esm/redux.js +9 -8
  61. package/esm/redux.js.map +1 -1
  62. package/esm/routing.js +3 -4
  63. package/esm/routing.js.map +1 -1
  64. package/esm/{sagas-e576b6f6.js → sagas-933a8fc8.js} +177 -254
  65. package/esm/sagas-933a8fc8.js.map +1 -0
  66. package/esm/search.js +69 -95
  67. package/esm/search.js.map +1 -1
  68. package/esm/{selectors-a5e5835b.js → selectors-74de49a3.js} +75 -8
  69. package/esm/selectors-74de49a3.js.map +1 -0
  70. package/esm/urls-eac9a747.js.map +1 -1
  71. package/esm/user.js +6 -15
  72. package/esm/user.js.map +1 -1
  73. package/esm/util.js +42 -53
  74. package/esm/util.js.map +1 -1
  75. package/esm/version-b15807c5.js +87 -0
  76. package/esm/version-b15807c5.js.map +1 -0
  77. package/esm/{version-e3a5ec66.js → version-ef107106.js} +37 -142
  78. package/esm/version-ef107106.js.map +1 -0
  79. package/models/redux/appstate.d.ts +1 -0
  80. package/models/routing/redux/selectors.d.ts +2 -1
  81. package/models/search/models/Queries.d.ts +2 -1
  82. package/models/search/models/Search.d.ts +2 -0
  83. package/models/search/models/SearchActions.d.ts +3 -3
  84. package/models/search/redux/actions.d.ts +6 -6
  85. package/models/search/redux/util.d.ts +1 -1
  86. package/models/search/search/expressions.d.ts +1 -1
  87. package/models/server/features/linkdepth-api/search.d.ts +1 -1
  88. package/models/util/ContensisDeliveryApi.d.ts +6 -0
  89. package/models/util/index.d.ts +1 -0
  90. package/package.json +1 -1
  91. package/cjs/App-ee485b92.js.map +0 -1
  92. package/cjs/actions-8dc9e8de.js +0 -87
  93. package/cjs/actions-8dc9e8de.js.map +0 -1
  94. package/cjs/login-840860bc.js.map +0 -1
  95. package/cjs/reducers-3a4f8971.js.map +0 -1
  96. package/cjs/sagas-8a20e424.js.map +0 -1
  97. package/cjs/selectors-656da4b7.js.map +0 -1
  98. package/cjs/version-78dfc3bd.js.map +0 -1
  99. package/cjs/version-eba6d09b.js +0 -20
  100. package/cjs/version-eba6d09b.js.map +0 -1
  101. package/esm/App-640239d2.js.map +0 -1
  102. package/esm/actions-180948dd.js +0 -72
  103. package/esm/actions-180948dd.js.map +0 -1
  104. package/esm/login-57395c9c.js.map +0 -1
  105. package/esm/reducers-8e5d6232.js.map +0 -1
  106. package/esm/sagas-e576b6f6.js.map +0 -1
  107. package/esm/selectors-a5e5835b.js.map +0 -1
  108. package/esm/version-2485e2fb.js +0 -15
  109. package/esm/version-2485e2fb.js.map +0 -1
  110. package/esm/version-e3a5ec66.js.map +0 -1
@@ -1,15 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var selectors = require('./selectors-656da4b7.js');
4
- var effects = require('@redux-saga/core/effects');
5
3
  var redux = require('redux');
6
4
  var thunkMiddleware = require('redux-thunk');
7
5
  var createSagaMiddleware = require('redux-saga');
8
6
  var reduxInjectors = require('redux-injectors');
9
7
  var immer = require('immer');
10
8
  var merge = require('deepmerge');
11
- var actions = require('./actions-8dc9e8de.js');
12
- var reducers = require('./reducers-3a4f8971.js');
9
+ var selectors = require('./selectors-bcca60f4.js');
10
+ var reducers = require('./reducers-9afb5f89.js');
13
11
 
14
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
13
 
@@ -40,7 +38,7 @@ const GET_NODE_TREE = `${ACTION_PREFIX}_GET_NODE_TREE`;
40
38
  const SET_NODE_TREE = `${ACTION_PREFIX}_SET_NODE_TREE`;
41
39
  const GET_NODE_TREE_ERROR = `${ACTION_PREFIX}_GET_NODE_TREE_ERROR`;
42
40
 
43
- var navigation$1 = /*#__PURE__*/Object.freeze({
41
+ var navigation = /*#__PURE__*/Object.freeze({
44
42
  __proto__: null,
45
43
  GET_NODE_TREE: GET_NODE_TREE,
46
44
  SET_NODE_TREE: SET_NODE_TREE,
@@ -63,14 +61,12 @@ var NavigationReducer = immer.produce((state, action) => {
63
61
  state.isReady = true;
64
62
  return;
65
63
  }
66
-
67
64
  case GET_NODE_TREE_ERROR:
68
65
  {
69
66
  state.error.isError = true;
70
67
  state.error.message = action.error || 'Unknown error occurred';
71
68
  return;
72
69
  }
73
-
74
70
  default:
75
71
  return;
76
72
  }
@@ -91,6 +87,7 @@ const combineMerge = (target, source, options) => {
91
87
  };
92
88
 
93
89
  const initialState$1 = {
90
+ canonicalPath: null,
94
91
  currentHostname: null,
95
92
  currentPath: '/',
96
93
  currentNode: {},
@@ -109,13 +106,12 @@ const initialState$1 = {
109
106
  };
110
107
  var RoutingReducer = immer.produce((state, action) => {
111
108
  switch (action.type) {
112
- case actions.SET_ANCESTORS:
109
+ case selectors.SET_ANCESTORS:
113
110
  {
114
111
  state.currentNodeAncestors = action.ancestors;
115
112
  return;
116
113
  }
117
-
118
- case actions.SET_ENTRY:
114
+ case selectors.SET_ENTRY:
119
115
  {
120
116
  const {
121
117
  entry,
@@ -125,11 +121,11 @@ var RoutingReducer = immer.produce((state, action) => {
125
121
  isError = false,
126
122
  isLoading = false,
127
123
  notFound = false,
128
- statusCode
124
+ statusCode,
125
+ currentPath
129
126
  } = action;
130
127
  let defaultStatus = 200;
131
128
  if (notFound === true && isError === false) defaultStatus = 404;else if (isError === true) defaultStatus = statusCode || 500;
132
-
133
129
  if (!entry) {
134
130
  state.entryID = null;
135
131
  state.entry = null;
@@ -139,6 +135,7 @@ var RoutingReducer = immer.produce((state, action) => {
139
135
  state.isLoading = isLoading;
140
136
  state.notFound = notFound;
141
137
  state.statusCode = statusCode || defaultStatus;
138
+ state.canonicalPath = currentPath;
142
139
  } else {
143
140
  state.entryID = action.id;
144
141
  state.entry = entry;
@@ -147,7 +144,7 @@ var RoutingReducer = immer.produce((state, action) => {
147
144
  state.isLoading = isLoading;
148
145
  state.notFound = notFound;
149
146
  state.statusCode = statusCode || defaultStatus;
150
-
147
+ state.canonicalPath = entry.sys.uri || currentPath;
151
148
  if (mappedEntry && Object.keys(mappedEntry).length > 0) {
152
149
  state.mappedEntry = mappedEntry;
153
150
  state.entry = {
@@ -155,88 +152,78 @@ var RoutingReducer = immer.produce((state, action) => {
155
152
  };
156
153
  }
157
154
  }
158
-
159
155
  if (!node) {
160
156
  state.currentNode = null;
161
157
  } else {
162
158
  // On Set Node, we reset all dependants.
163
- state.currentNode = node; // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
-
159
+ state.currentNode = node;
160
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
165
161
  const {
166
162
  entry,
167
163
  ...nodeWithoutEntry
168
164
  } = node; // We have the entry stored elsewhere, so lets not keep it twice.
169
-
170
165
  state.currentNode = nodeWithoutEntry;
171
166
  }
172
-
173
167
  return;
174
168
  }
175
-
176
- case actions.UPDATE_LOADING_STATE:
169
+ case selectors.UPDATE_LOADING_STATE:
177
170
  {
178
171
  state.isLoading = action.isLoading;
179
172
  return;
180
173
  }
181
-
182
- case actions.SET_NAVIGATION_PATH:
174
+ case selectors.SET_NAVIGATION_PATH:
183
175
  {
184
176
  let staticRoute = {};
185
-
186
177
  if (action.staticRoute) {
187
- staticRoute = { ...action.staticRoute
178
+ staticRoute = {
179
+ ...action.staticRoute
188
180
  };
189
181
  }
190
-
191
182
  if (action.path) {
192
183
  var _state$entry, _state$entry$sys;
193
-
194
184
  // Don't run a path update on initial load as we allready should have it in redux
195
185
  const entryUri = state === null || state === void 0 ? void 0 : (_state$entry = state.entry) === null || _state$entry === void 0 ? void 0 : (_state$entry$sys = _state$entry.sys) === null || _state$entry$sys === void 0 ? void 0 : _state$entry$sys.uri;
196
-
197
186
  if (entryUri !== action.path) {
198
187
  state.currentPath = action.path;
199
188
  state.location = action.location;
200
- state.staticRoute = { ...staticRoute,
201
- route: { ...staticRoute.route,
189
+ state.staticRoute = {
190
+ ...staticRoute,
191
+ route: {
192
+ ...staticRoute.route,
202
193
  component: null
203
194
  }
204
195
  };
205
196
  state.isLoading = typeof window !== 'undefined';
206
197
  } else {
207
198
  state.location = action.location;
208
- state.staticRoute = { ...staticRoute,
209
- route: { ...staticRoute.route,
199
+ state.staticRoute = {
200
+ ...staticRoute,
201
+ route: {
202
+ ...staticRoute.route,
210
203
  component: null
211
204
  }
212
205
  };
213
206
  }
214
207
  }
215
-
216
208
  return;
217
209
  }
218
-
219
- case actions.SET_ROUTE:
210
+ case selectors.SET_ROUTE:
220
211
  {
221
212
  state.nextPath = action.path;
222
213
  return;
223
214
  }
224
-
225
- case actions.SET_SIBLINGS:
215
+ case selectors.SET_SIBLINGS:
226
216
  {
227
217
  // Can be null in some cases like the homepage.
228
218
  let currentNodeSiblingParent = null;
229
-
230
219
  if (action.siblings && action.siblings.length > 0) {
231
220
  currentNodeSiblingParent = action.siblings[0].parentId;
232
221
  }
233
-
234
222
  state.currentNodeSiblings = action.siblings;
235
223
  state.currentNodeSiblingsParent = currentNodeSiblingParent;
236
224
  return;
237
225
  }
238
-
239
- case actions.SET_SURROGATE_KEYS:
226
+ case selectors.SET_SURROGATE_KEYS:
240
227
  {
241
228
  // console.info(`SET_SURROGATE_KEYS: '${action.url}' keys: ${action.keys}`);
242
229
  state.surrogateKeys = merge__default["default"](state.surrogateKeys, (action.keys || '').split(' '), {
@@ -244,15 +231,13 @@ var RoutingReducer = immer.produce((state, action) => {
244
231
  });
245
232
  return;
246
233
  }
247
-
248
- case actions.SET_TARGET_PROJECT:
234
+ case selectors.SET_TARGET_PROJECT:
249
235
  {
250
236
  state.currentProject = action.project;
251
237
  state.allowedGroups = action.allowedGroups;
252
238
  state.currentHostname = action.hostname;
253
239
  return;
254
240
  }
255
-
256
241
  default:
257
242
  return state;
258
243
  }
@@ -280,14 +265,12 @@ var VersionReducer = immer.produce((state, action) => {
280
265
  state.contensisVersionStatus = action.status;
281
266
  return;
282
267
  }
283
-
284
268
  case SET_VERSION:
285
269
  {
286
270
  state.commitRef = action.commitRef;
287
271
  state.buildNo = action.buildNo;
288
272
  return;
289
273
  }
290
-
291
274
  default:
292
275
  return;
293
276
  }
@@ -298,13 +281,11 @@ var VersionReducer = immer.produce((state, action) => {
298
281
  * provided history object. This will prevent these actions from reaching your
299
282
  * reducer or any middleware that comes after this one.
300
283
  */
301
-
302
284
  /* eslint-disable no-unused-vars */
303
285
  const routerMiddleware = history => store => next => action => {
304
286
  if (action.type !== 'CALL_HISTORY_METHOD') {
305
287
  return next(action);
306
288
  }
307
-
308
289
  const {
309
290
  payload: {
310
291
  method,
@@ -315,15 +296,14 @@ const routerMiddleware = history => store => next => action => {
315
296
  };
316
297
 
317
298
  exports.reduxStore = void 0;
299
+
318
300
  /* eslint-disable no-underscore-dangle */
319
301
 
320
302
  var createStore = (async (featureReducers, initialState, history, stateType) => {
321
303
  let reduxDevToolsMiddleware = f => f;
322
-
323
304
  if (typeof window != 'undefined') {
324
305
  reduxDevToolsMiddleware = window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : f => f;
325
306
  }
326
-
327
307
  const sagaMiddleware = createSagaMiddleware__default["default"]();
328
308
  const reducers$1 = {
329
309
  navigation: NavigationReducer,
@@ -331,35 +311,26 @@ var createStore = (async (featureReducers, initialState, history, stateType) =>
331
311
  user: reducers.UserReducer,
332
312
  version: VersionReducer,
333
313
  ...featureReducers
334
- }; // Reassign the combiner and fromJS functions when
335
- // stateType is 'immutable' with dynamic imports
314
+ };
336
315
 
316
+ // Reassign the combiner and fromJS functions when
317
+ // stateType is 'immutable' with dynamic imports
337
318
  let combiner = redux.combineReducers;
338
-
339
319
  let fromJS = obj => obj;
340
-
341
320
  globalThis.STATE_TYPE = stateType;
342
-
343
321
  if (stateType === 'immutable') {
344
- globalThis.immutable = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
345
- /* webpackChunkName: "immutable" */
346
- 'immutable')); });
347
- fromJS = (await Promise.resolve().then(function () { return require(
348
- /* webpackChunkName: "from-js" */
349
- './fromJSLeaveImmer-e74c673c.js'); })).default;
350
- combiner = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
351
- /* webpackChunkName: "redux-immutable" */
352
- 'redux-immutable')); })).combineReducers;
322
+ globalThis.immutable = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require( /* webpackChunkName: "immutable" */'immutable')); });
323
+ fromJS = (await Promise.resolve().then(function () { return require( /* webpackChunkName: "from-js" */'./fromJSLeaveImmer-7c363211.js'); })).default;
324
+ combiner = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require( /* webpackChunkName: "redux-immutable" */'redux-immutable')); })).combineReducers;
353
325
  }
354
-
355
326
  const createReducer = (injectedReducers = {}) => {
356
- const rootReducer = combiner({ ...injectedReducers,
327
+ const rootReducer = combiner({
328
+ ...injectedReducers,
357
329
  // other non-injected reducers go here
358
330
  ...reducers$1
359
331
  });
360
332
  return rootReducer;
361
333
  };
362
-
363
334
  const store = initialState => {
364
335
  const runSaga = sagaMiddleware.run;
365
336
  const middleware = redux.compose(redux.applyMiddleware(thunkMiddleware__default["default"], sagaMiddleware, routerMiddleware(history)), reduxInjectors.createInjectorsEnhancer({
@@ -368,114 +339,34 @@ var createStore = (async (featureReducers, initialState, history, stateType) =>
368
339
  }), reduxDevToolsMiddleware);
369
340
  const store = redux.createStore(createReducer(), initialState, middleware);
370
341
  store.runSaga = runSaga;
371
-
372
342
  store.close = () => store.dispatch(createSagaMiddleware.END);
373
-
374
343
  return store;
375
344
  };
376
-
377
345
  exports.reduxStore = store(fromJS(initialState));
378
346
  return exports.reduxStore;
379
347
  });
380
348
 
381
- const hasNavigationTree = state => selectors.getImmutableOrJS(state, ['navigation', 'isReady']);
382
- const selectNavigationRoot = state => selectors.getImmutableOrJS(state, ['navigation', 'root']);
383
- const selectNavigationChildren = state => selectors.getImmutableOrJS(state, ['navigation', 'root', 'children']);
384
- const selectNavigationDepends = () => [];
385
-
386
- var navigation = /*#__PURE__*/Object.freeze({
387
- __proto__: null,
388
- hasNavigationTree: hasNavigationTree,
389
- selectNavigationRoot: selectNavigationRoot,
390
- selectNavigationChildren: selectNavigationChildren,
391
- selectNavigationDepends: selectNavigationDepends
392
- });
393
-
394
- const convertSagaArray = sagas => {
395
- if (Array.isArray(sagas)) return function* rootSaga() {
396
- yield effects.all(sagas);
397
- };
398
- return sagas;
399
- };
400
- const injectReducer = ({
401
- key,
402
- reducer
403
- }, store = exports.reduxStore) => {
404
- if (Reflect.has(store.injectedReducers, key) && store.injectedReducers[key] === reducer) return;
405
- store.injectedReducers[key] = reducer;
406
- store.replaceReducer(store.createReducer(store.injectedReducers));
407
- };
408
- const injectSaga = ({
409
- key,
410
- saga
411
- }, store = exports.reduxStore) => {
412
- const rootSaga = convertSagaArray(saga);
413
- let hasSaga = Reflect.has(store.injectedSagas, key);
414
-
415
- if (process.env.NODE_ENV !== 'production') {
416
- const oldDescriptor = store.injectedSagas[key]; // enable hot reloading of daemon and once-till-unmount sagas
417
-
418
- if (hasSaga && oldDescriptor.saga !== rootSaga) {
419
- oldDescriptor.task.cancel();
420
- hasSaga = false;
421
- }
422
- }
423
-
424
- console.info('injectSaga, key: ', key, 'hasSaga: ', hasSaga);
425
-
426
- if (!hasSaga) {
427
- store.injectedSagas[key] = {
428
- key,
429
- saga: rootSaga,
430
- task: store.runSaga(rootSaga)
431
- };
432
- }
433
- };
434
- const injectRedux = ({
435
- key,
436
- reducer,
437
- saga
438
- }, store = exports.reduxStore) => {
439
- console.info('injectRedux, key: ', key);
440
- if (reducer) injectReducer({
441
- key,
442
- reducer
443
- }, store);
444
- if (saga) injectSaga({
445
- key,
446
- saga
447
- }, store);
448
- };
449
- const useInjectRedux = injectRedux;
450
-
451
- const setVersion = (commitRef, buildNo) => selectors.action(SET_VERSION, {
452
- commitRef,
453
- buildNo
454
- });
455
- const setVersionStatus = status => selectors.action(SET_VERSION_STATUS, {
456
- status
457
- });
349
+ const selectCommitRef = state => selectors.getImmutableOrJS(state, ['version', 'commitRef']);
350
+ const selectBuildNumber = state => selectors.getImmutableOrJS(state, ['version', 'buildNo']);
351
+ const selectVersionStatus = state => selectors.getImmutableOrJS(state, ['version', 'contensisVersionStatus']);
458
352
 
459
353
  var version = /*#__PURE__*/Object.freeze({
460
354
  __proto__: null,
461
- setVersion: setVersion,
462
- setVersionStatus: setVersionStatus
355
+ selectCommitRef: selectCommitRef,
356
+ selectBuildNumber: selectBuildNumber,
357
+ selectVersionStatus: selectVersionStatus
463
358
  });
464
359
 
465
360
  exports.GET_NODE_TREE = GET_NODE_TREE;
466
361
  exports.GET_NODE_TREE_ERROR = GET_NODE_TREE_ERROR;
467
362
  exports.SET_NODE_TREE = SET_NODE_TREE;
468
- exports.convertSagaArray = convertSagaArray;
363
+ exports.SET_VERSION = SET_VERSION;
364
+ exports.SET_VERSION_STATUS = SET_VERSION_STATUS;
469
365
  exports.createStore = createStore;
470
- exports.hasNavigationTree = hasNavigationTree;
471
- exports.injectReducer = injectReducer;
472
- exports.injectRedux = injectRedux;
473
- exports.injectSaga = injectSaga;
474
- exports.navigation = navigation$1;
475
- exports.navigation$1 = navigation;
476
- exports.setVersion = setVersion;
477
- exports.setVersionStatus = setVersionStatus;
478
- exports.useInjectRedux = useInjectRedux;
366
+ exports.navigation = navigation;
367
+ exports.selectBuildNumber = selectBuildNumber;
368
+ exports.selectCommitRef = selectCommitRef;
369
+ exports.selectVersionStatus = selectVersionStatus;
479
370
  exports.version = version$1;
480
371
  exports.version$1 = version;
481
- //# sourceMappingURL=version-78dfc3bd.js.map
372
+ //# sourceMappingURL=version-4077e706.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-4077e706.js","sources":["../src/redux/types/navigation.js","../src/redux/reducers/navigation.ts","../src/util/merge.ts","../src/routing/redux/reducers.ts","../src/redux/types/version.js","../src/redux/reducers/version.ts","../src/redux/store/routerMiddleware.js","../src/redux/store/store.ts","../src/redux/selectors/version.js"],"sourcesContent":["const ACTION_PREFIX = '@NAVIGATION/';\nexport const GET_NODE_TREE = `${ACTION_PREFIX}_GET_NODE_TREE`;\nexport const SET_NODE_TREE = `${ACTION_PREFIX}_SET_NODE_TREE`;\nexport const GET_NODE_TREE_ERROR = `${ACTION_PREFIX}_GET_NODE_TREE_ERROR`;\n","import { Draft, produce } from 'immer';\nimport { SET_NODE_TREE, GET_NODE_TREE_ERROR } from '~/redux/types/navigation';\n\nconst initialState = {\n root: null,\n error: {\n isError: false,\n message: null,\n },\n isReady: false,\n};\n\nexport default produce((state: Draft<any>, action) => {\n switch (action.type) {\n case SET_NODE_TREE: {\n state.root = action.nodes;\n state.isReady = true;\n return;\n }\n case GET_NODE_TREE_ERROR: {\n state.error.isError = true;\n state.error.message = action.error || 'Unknown error occurred';\n return;\n }\n default:\n return;\n }\n}, initialState);\n","import merge from 'deepmerge';\n\nexport const combineMerge = (target: any, source: any, options: any) => {\n const destination = target.slice();\n\n source.forEach((item: any, index: any) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);\n } else if (options.isMergeableObject(item)) {\n destination[index] = merge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n};\n","import { Draft, produce } from 'immer';\nimport merge from 'deepmerge';\n\nimport {\n SET_ENTRY,\n SET_NAVIGATION_PATH,\n SET_ANCESTORS,\n SET_TARGET_PROJECT,\n SET_ROUTE,\n SET_SIBLINGS,\n SET_SURROGATE_KEYS,\n UPDATE_LOADING_STATE,\n} from './types';\nimport { combineMerge } from '~/util/merge';\n\nconst initialState = {\n canonicalPath: null,\n currentHostname: null,\n currentPath: '/',\n currentNode: {},\n currentNodeAncestors: [],\n currentProject: 'unknown',\n entryID: null,\n entry: null,\n error: undefined,\n isError: false,\n isLoading: false,\n location: {},\n mappedEntry: null,\n notFound: false,\n staticRoute: null,\n statusCode: 200,\n};\n\nexport default produce((state: Draft<any>, action) => {\n switch (action.type) {\n case SET_ANCESTORS: {\n state.currentNodeAncestors = action.ancestors;\n return;\n }\n case SET_ENTRY: {\n const {\n entry,\n error,\n mappedEntry,\n node = {},\n isError = false,\n isLoading = false,\n notFound = false,\n statusCode,\n currentPath,\n } = action;\n\n let defaultStatus = 200;\n if (notFound === true && isError === false) defaultStatus = 404;\n else if (isError === true) defaultStatus = statusCode || 500;\n\n if (!entry) {\n state.entryID = null;\n state.entry = null;\n state.error = error;\n state.mappedEntry = null;\n state.isError = isError;\n state.isLoading = isLoading;\n state.notFound = notFound;\n state.statusCode = statusCode || defaultStatus;\n state.canonicalPath = currentPath;\n } else {\n state.entryID = action.id;\n state.entry = entry;\n state.error = error;\n state.isError = isError;\n state.isLoading = isLoading;\n state.notFound = notFound;\n state.statusCode = statusCode || defaultStatus;\n state.canonicalPath = entry.sys.uri || currentPath;\n\n if (mappedEntry && Object.keys(mappedEntry).length > 0) {\n state.mappedEntry = mappedEntry;\n state.entry = { sys: entry.sys };\n }\n }\n\n if (!node) {\n state.currentNode = null;\n } else {\n // On Set Node, we reset all dependants.\n state.currentNode = node;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { entry, ...nodeWithoutEntry } = node; // We have the entry stored elsewhere, so lets not keep it twice.\n state.currentNode = nodeWithoutEntry;\n }\n\n return;\n }\n case UPDATE_LOADING_STATE: {\n state.isLoading = action.isLoading;\n return;\n }\n case SET_NAVIGATION_PATH: {\n let staticRoute = {} as any;\n if (action.staticRoute) {\n staticRoute = { ...action.staticRoute };\n }\n if (action.path) {\n // Don't run a path update on initial load as we allready should have it in redux\n const entryUri = state?.entry?.sys?.uri;\n if (entryUri !== action.path) {\n state.currentPath = action.path;\n state.location = action.location;\n state.staticRoute = {\n ...staticRoute,\n route: { ...staticRoute.route, component: null },\n };\n state.isLoading = typeof window !== 'undefined';\n } else {\n state.location = action.location;\n state.staticRoute = {\n ...staticRoute,\n route: { ...staticRoute.route, component: null },\n };\n }\n }\n return;\n }\n case SET_ROUTE: {\n state.nextPath = action.path;\n return;\n }\n case SET_SIBLINGS: {\n // Can be null in some cases like the homepage.\n let currentNodeSiblingParent = null;\n if (action.siblings && action.siblings.length > 0) {\n currentNodeSiblingParent = action.siblings[0].parentId;\n }\n\n state.currentNodeSiblings = action.siblings;\n state.currentNodeSiblingsParent = currentNodeSiblingParent;\n return;\n }\n case SET_SURROGATE_KEYS: {\n // console.info(`SET_SURROGATE_KEYS: '${action.url}' keys: ${action.keys}`);\n state.surrogateKeys = merge(\n state.surrogateKeys,\n (action.keys || '').split(' '),\n { arrayMerge: combineMerge }\n );\n return;\n }\n case SET_TARGET_PROJECT: {\n state.currentProject = action.project;\n state.allowedGroups = action.allowedGroups;\n state.currentHostname = action.hostname;\n return;\n }\n default:\n return state;\n }\n}, initialState);\n","const VERSION_PREFIX = '@VERSION/';\nexport const SET_VERSION = `${VERSION_PREFIX}SET_VERSION`;\nexport const SET_VERSION_STATUS = `${VERSION_PREFIX}SET_VERSION_STATUS`;\n","import { Draft, produce } from 'immer';\nimport { SET_VERSION, SET_VERSION_STATUS } from '~/redux/types/version';\n\nconst initialState = {\n commitRef: null,\n buildNo: null,\n contensisVersionStatus: null as 'latest' | 'published' | null,\n};\n\nexport default produce((state: Draft<any>, action) => {\n switch (action.type) {\n case SET_VERSION_STATUS: {\n state.contensisVersionStatus = action.status;\n return;\n }\n case SET_VERSION: {\n state.commitRef = action.commitRef;\n state.buildNo = action.buildNo;\n return;\n }\n default:\n return;\n }\n}, initialState);\n","/**\n * This middleware captures 'CALL_HISTORY_METHOD' actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\n/* eslint-disable no-unused-vars */\nconst routerMiddleware = history => store => next => action => {\n if (action.type !== 'CALL_HISTORY_METHOD') {\n return next(action);\n }\n\n const {\n payload: { method, args },\n } = action;\n history[method](...args);\n};\n\nexport default routerMiddleware;\n","import {\n applyMiddleware,\n combineReducers,\n compose,\n createStore,\n Action,\n Store,\n StoreEnhancer,\n} from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport createSagaMiddleware, { END } from 'redux-saga';\nimport { createInjectorsEnhancer } from 'redux-injectors';\n\n// Core reducers\nimport NavigationReducer from '../reducers/navigation';\nimport RoutingReducer from '~/routing/redux/reducers';\nimport UserReducer from '~/user/redux/reducers';\nimport VersionReducer from '../reducers/version';\nimport routerMiddleware from './routerMiddleware';\nimport { AppState } from '../appstate';\nimport { History, MemoryHistory } from 'history';\nimport { StateType } from '~/config';\n\nexport let reduxStore;\n\n/* eslint-disable no-underscore-dangle */\ndeclare let window: Window &\n typeof globalThis & {\n __REDUX_DEVTOOLS_EXTENSION__: any;\n };\n\nexport default async (\n featureReducers: any,\n initialState: AppState,\n history: History | MemoryHistory,\n stateType: StateType\n) => {\n let reduxDevToolsMiddleware = f => f;\n\n if (typeof window != 'undefined') {\n reduxDevToolsMiddleware = window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__()\n : f => f;\n }\n\n const sagaMiddleware = createSagaMiddleware();\n\n const reducers = {\n navigation: NavigationReducer,\n routing: RoutingReducer,\n user: UserReducer,\n version: VersionReducer,\n ...featureReducers,\n };\n\n // Reassign the combiner and fromJS functions when\n // stateType is 'immutable' with dynamic imports\n let combiner = combineReducers;\n let fromJS: any = (obj: any) => obj;\n globalThis.STATE_TYPE = stateType;\n\n if (stateType === 'immutable') {\n globalThis.immutable = await import(\n /* webpackChunkName: \"immutable\" */ 'immutable'\n );\n\n fromJS = (\n await import(/* webpackChunkName: \"from-js\" */ '~/util/fromJSLeaveImmer')\n ).default;\n\n combiner = (\n await import(/* webpackChunkName: \"redux-immutable\" */ 'redux-immutable')\n ).combineReducers;\n }\n\n const createReducer = (injectedReducers = {}) => {\n const rootReducer = combiner<AppState>({\n ...injectedReducers,\n // other non-injected reducers go here\n ...reducers,\n });\n\n return rootReducer;\n };\n\n const store = (initialState: AppState) => {\n const runSaga = sagaMiddleware.run;\n\n const middleware: StoreEnhancer<\n {\n dispatch: unknown;\n },\n unknown\n > = compose(\n applyMiddleware(\n thunkMiddleware,\n sagaMiddleware,\n routerMiddleware(history)\n ),\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n reduxDevToolsMiddleware\n );\n\n const store: Store<AppState, Action<any>> & {\n runSaga?: typeof runSaga;\n close?: () => void;\n } = createStore<AppState, Action<any>, unknown, unknown>(\n createReducer(),\n initialState,\n middleware\n );\n\n store.runSaga = runSaga;\n store.close = () => store.dispatch(END);\n\n return store;\n };\n\n reduxStore = store(fromJS(initialState));\n return reduxStore;\n};\n","import { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectCommitRef = state => getIn(state, ['version', 'commitRef']);\n\nexport const selectBuildNumber = state => getIn(state, ['version', 'buildNo']);\n\nexport const selectVersionStatus = state =>\n getIn(state, ['version', 'contensisVersionStatus']);\n"],"names":["ACTION_PREFIX","GET_NODE_TREE","SET_NODE_TREE","GET_NODE_TREE_ERROR","initialState","root","error","isError","message","isReady","produce","state","action","type","nodes","combineMerge","target","source","options","destination","slice","forEach","item","index","cloneUnlessOtherwiseSpecified","isMergeableObject","merge","indexOf","push","canonicalPath","currentHostname","currentPath","currentNode","currentNodeAncestors","currentProject","entryID","entry","undefined","isLoading","location","mappedEntry","notFound","staticRoute","statusCode","SET_ANCESTORS","ancestors","SET_ENTRY","node","defaultStatus","id","sys","uri","Object","keys","length","nodeWithoutEntry","UPDATE_LOADING_STATE","SET_NAVIGATION_PATH","path","_state$entry","_state$entry$sys","entryUri","route","component","window","SET_ROUTE","nextPath","SET_SIBLINGS","currentNodeSiblingParent","siblings","parentId","currentNodeSiblings","currentNodeSiblingsParent","SET_SURROGATE_KEYS","surrogateKeys","split","arrayMerge","SET_TARGET_PROJECT","project","allowedGroups","hostname","VERSION_PREFIX","SET_VERSION","SET_VERSION_STATUS","commitRef","buildNo","contensisVersionStatus","status","routerMiddleware","history","store","next","payload","method","args","reduxStore","featureReducers","stateType","reduxDevToolsMiddleware","f","__REDUX_DEVTOOLS_EXTENSION__","sagaMiddleware","createSagaMiddleware","reducers","navigation","NavigationReducer","routing","RoutingReducer","user","UserReducer","version","VersionReducer","combiner","combineReducers","fromJS","obj","globalThis","STATE_TYPE","immutable","default","createReducer","injectedReducers","rootReducer","runSaga","run","middleware","compose","applyMiddleware","thunkMiddleware","createInjectorsEnhancer","createStore","close","dispatch","END","selectCommitRef","getIn","selectBuildNumber","selectVersionStatus"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ var selectors = require('./selectors-bcca60f4.js');
4
+ var effects = require('@redux-saga/core/effects');
5
+ var version$1 = require('./version-4077e706.js');
6
+
7
+ const hasNavigationTree = state => selectors.getImmutableOrJS(state, ['navigation', 'isReady']);
8
+ const selectNavigationRoot = state => selectors.getImmutableOrJS(state, ['navigation', 'root']);
9
+ const selectNavigationChildren = state => selectors.getImmutableOrJS(state, ['navigation', 'root', 'children']);
10
+ const selectNavigationDepends = () => [];
11
+
12
+ var navigation = /*#__PURE__*/Object.freeze({
13
+ __proto__: null,
14
+ hasNavigationTree: hasNavigationTree,
15
+ selectNavigationRoot: selectNavigationRoot,
16
+ selectNavigationChildren: selectNavigationChildren,
17
+ selectNavigationDepends: selectNavigationDepends
18
+ });
19
+
20
+ const convertSagaArray = sagas => {
21
+ if (Array.isArray(sagas)) return function* rootSaga() {
22
+ yield effects.all(sagas);
23
+ };
24
+ return sagas;
25
+ };
26
+ const injectReducer = ({
27
+ key,
28
+ reducer
29
+ }, store = version$1.reduxStore) => {
30
+ if (Reflect.has(store.injectedReducers, key) && store.injectedReducers[key] === reducer) return;
31
+ store.injectedReducers[key] = reducer;
32
+ store.replaceReducer(store.createReducer(store.injectedReducers));
33
+ };
34
+ const injectSaga = ({
35
+ key,
36
+ saga
37
+ }, store = version$1.reduxStore) => {
38
+ const rootSaga = convertSagaArray(saga);
39
+ let hasSaga = Reflect.has(store.injectedSagas, key);
40
+ if (process.env.NODE_ENV !== 'production') {
41
+ const oldDescriptor = store.injectedSagas[key]; // enable hot reloading of daemon and once-till-unmount sagas
42
+
43
+ if (hasSaga && oldDescriptor.saga !== rootSaga) {
44
+ oldDescriptor.task.cancel();
45
+ hasSaga = false;
46
+ }
47
+ }
48
+ console.info('injectSaga, key: ', key, 'hasSaga: ', hasSaga);
49
+ if (!hasSaga) {
50
+ store.injectedSagas[key] = {
51
+ key,
52
+ saga: rootSaga,
53
+ task: store.runSaga(rootSaga)
54
+ };
55
+ }
56
+ };
57
+ const injectRedux = ({
58
+ key,
59
+ reducer,
60
+ saga
61
+ }, store = version$1.reduxStore) => {
62
+ console.info('injectRedux, key: ', key);
63
+ if (reducer) injectReducer({
64
+ key,
65
+ reducer
66
+ }, store);
67
+ if (saga) injectSaga({
68
+ key,
69
+ saga
70
+ }, store);
71
+ };
72
+ const useInjectRedux = injectRedux;
73
+
74
+ const setVersion = (commitRef, buildNo) => selectors.action(version$1.SET_VERSION, {
75
+ commitRef,
76
+ buildNo
77
+ });
78
+ const setVersionStatus = status => selectors.action(version$1.SET_VERSION_STATUS, {
79
+ status
80
+ });
81
+
82
+ var version = /*#__PURE__*/Object.freeze({
83
+ __proto__: null,
84
+ setVersion: setVersion,
85
+ setVersionStatus: setVersionStatus
86
+ });
87
+
88
+ exports.convertSagaArray = convertSagaArray;
89
+ exports.hasNavigationTree = hasNavigationTree;
90
+ exports.injectReducer = injectReducer;
91
+ exports.injectRedux = injectRedux;
92
+ exports.injectSaga = injectSaga;
93
+ exports.navigation = navigation;
94
+ exports.setVersion = setVersion;
95
+ exports.setVersionStatus = setVersionStatus;
96
+ exports.useInjectRedux = useInjectRedux;
97
+ exports.version = version;
98
+ //# sourceMappingURL=version-fe28099e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-fe28099e.js","sources":["../src/redux/selectors/navigation.js","../src/redux/store/injectors.js","../src/redux/actions/version.js"],"sourcesContent":["import { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const hasNavigationTree = state =>\n getIn(state, ['navigation', 'isReady']);\n\nexport const selectNavigationRoot = state =>\n getIn(state, ['navigation', 'root']);\n\nexport const selectNavigationChildren = state =>\n getIn(state, ['navigation', 'root', 'children']);\n\nexport const selectNavigationDepends = () => [];\n","import { all } from 'redux-saga/effects';\nimport { reduxStore as DefaultStore } from './store';\n\nexport const convertSagaArray = sagas => {\n if (Array.isArray(sagas))\n return function* rootSaga() {\n yield all(sagas);\n };\n return sagas;\n};\n\nexport const injectReducer = ({ key, reducer }, store = DefaultStore) => {\n if (\n Reflect.has(store.injectedReducers, key) &&\n store.injectedReducers[key] === reducer\n )\n return;\n store.injectedReducers[key] = reducer;\n\n store.replaceReducer(store.createReducer(store.injectedReducers));\n};\n\nexport const injectSaga = ({ key, saga }, store = DefaultStore) => {\n const rootSaga = convertSagaArray(saga);\n let hasSaga = Reflect.has(store.injectedSagas, key);\n\n if (process.env.NODE_ENV !== 'production') {\n const oldDescriptor = store.injectedSagas[key]; // enable hot reloading of daemon and once-till-unmount sagas\n\n if (hasSaga && oldDescriptor.saga !== rootSaga) {\n oldDescriptor.task.cancel();\n hasSaga = false;\n }\n }\n console.info('injectSaga, key: ', key, 'hasSaga: ', hasSaga);\n\n if (!hasSaga) {\n store.injectedSagas[key] = {\n key,\n saga: rootSaga,\n task: store.runSaga(rootSaga),\n };\n }\n};\n\nexport const injectRedux = ({ key, reducer, saga }, store = DefaultStore) => {\n console.info('injectRedux, key: ', key);\n if (reducer) injectReducer({ key, reducer }, store);\n if (saga) injectSaga({ key, saga }, store);\n};\n\nexport const useInjectRedux = injectRedux;\n","import { action } from '../util';\nimport { SET_VERSION, SET_VERSION_STATUS } from '../types/version';\n\nexport const setVersion = (commitRef, buildNo) =>\n action(SET_VERSION, { commitRef, buildNo });\n\nexport const setVersionStatus = status =>\n action(SET_VERSION_STATUS, { status });\n"],"names":["hasNavigationTree","state","getIn","selectNavigationRoot","selectNavigationChildren","selectNavigationDepends","convertSagaArray","sagas","Array","isArray","rootSaga","all","injectReducer","key","reducer","store","DefaultStore","Reflect","has","injectedReducers","replaceReducer","createReducer","injectSaga","saga","hasSaga","injectedSagas","process","env","NODE_ENV","oldDescriptor","task","cancel","console","info","runSaga","injectRedux","useInjectRedux","setVersion","commitRef","buildNo","action","SET_VERSION","setVersionStatus","status","SET_VERSION_STATUS"],"mappings":"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"}