@wordpress/core-data 4.0.5 → 4.0.9

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 (80) hide show
  1. package/build/actions.js +269 -244
  2. package/build/actions.js.map +1 -1
  3. package/build/batch/create-batch.js +17 -9
  4. package/build/batch/create-batch.js.map +1 -1
  5. package/build/entities.js +22 -10
  6. package/build/entities.js.map +1 -1
  7. package/build/entity-provider.js +18 -13
  8. package/build/entity-provider.js.map +1 -1
  9. package/build/fetch/__experimental-fetch-link-suggestions.js +3 -1
  10. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  11. package/build/fetch/__experimental-fetch-url-data.js +2 -1
  12. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  13. package/build/index.js +25 -5
  14. package/build/index.js.map +1 -1
  15. package/build/locks/actions.js +4 -3
  16. package/build/locks/actions.js.map +1 -1
  17. package/build/locks/reducer.js +4 -1
  18. package/build/locks/reducer.js.map +1 -1
  19. package/build/locks/selectors.js +4 -3
  20. package/build/locks/selectors.js.map +1 -1
  21. package/build/locks/utils.js +7 -5
  22. package/build/locks/utils.js.map +1 -1
  23. package/build/queried-data/actions.js +6 -3
  24. package/build/queried-data/actions.js.map +1 -1
  25. package/build/queried-data/get-query-parts.js +1 -1
  26. package/build/queried-data/reducer.js +17 -6
  27. package/build/queried-data/reducer.js.map +1 -1
  28. package/build/queried-data/selectors.js +2 -1
  29. package/build/queried-data/selectors.js.map +1 -1
  30. package/build/reducer.js +77 -28
  31. package/build/reducer.js.map +1 -1
  32. package/build/resolvers.js +186 -158
  33. package/build/resolvers.js.map +1 -1
  34. package/build/selectors.js +29 -21
  35. package/build/selectors.js.map +1 -1
  36. package/build/utils/forward-resolver.js +11 -4
  37. package/build/utils/forward-resolver.js.map +1 -1
  38. package/build/utils/index.js +8 -8
  39. package/build/utils/on-sub-key.js +4 -2
  40. package/build/utils/on-sub-key.js.map +1 -1
  41. package/build-module/actions.js +257 -235
  42. package/build-module/actions.js.map +1 -1
  43. package/build-module/batch/create-batch.js +17 -9
  44. package/build-module/batch/create-batch.js.map +1 -1
  45. package/build-module/entities.js +21 -9
  46. package/build-module/entities.js.map +1 -1
  47. package/build-module/entity-provider.js +17 -12
  48. package/build-module/entity-provider.js.map +1 -1
  49. package/build-module/fetch/__experimental-fetch-link-suggestions.js +3 -1
  50. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  51. package/build-module/fetch/__experimental-fetch-url-data.js +2 -1
  52. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  53. package/build-module/index.js +21 -3
  54. package/build-module/index.js.map +1 -1
  55. package/build-module/locks/actions.js +4 -3
  56. package/build-module/locks/actions.js.map +1 -1
  57. package/build-module/locks/reducer.js +4 -1
  58. package/build-module/locks/reducer.js.map +1 -1
  59. package/build-module/locks/selectors.js +4 -3
  60. package/build-module/locks/selectors.js.map +1 -1
  61. package/build-module/locks/utils.js +5 -3
  62. package/build-module/locks/utils.js.map +1 -1
  63. package/build-module/queried-data/actions.js +5 -2
  64. package/build-module/queried-data/actions.js.map +1 -1
  65. package/build-module/queried-data/reducer.js +15 -4
  66. package/build-module/queried-data/reducer.js.map +1 -1
  67. package/build-module/queried-data/selectors.js +2 -1
  68. package/build-module/queried-data/selectors.js.map +1 -1
  69. package/build-module/reducer.js +68 -20
  70. package/build-module/reducer.js.map +1 -1
  71. package/build-module/resolvers.js +185 -157
  72. package/build-module/resolvers.js.map +1 -1
  73. package/build-module/utils/forward-resolver.js +11 -4
  74. package/build-module/utils/forward-resolver.js.map +1 -1
  75. package/build-module/utils/on-sub-key.js +3 -1
  76. package/build-module/utils/on-sub-key.js.map +1 -1
  77. package/package.json +12 -12
  78. package/src/entities.js +12 -4
  79. package/src/resolvers.js +5 -0
  80. package/src/test/actions.js +2 -2
@@ -27,7 +27,10 @@ import { defaultEntities, DEFAULT_ENTITY_KEY } from './entities';
27
27
  * @return {Object} Updated state.
28
28
  */
29
29
 
30
- export function terms(state = {}, action) {
30
+ export function terms() {
31
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
32
+ let action = arguments.length > 1 ? arguments[1] : undefined;
33
+
31
34
  switch (action.type) {
32
35
  case 'RECEIVE_TERMS':
33
36
  return { ...state,
@@ -46,10 +49,13 @@ export function terms(state = {}, action) {
46
49
  * @return {Object} Updated state.
47
50
  */
48
51
 
49
- export function users(state = {
50
- byId: {},
51
- queries: {}
52
- }, action) {
52
+ export function users() {
53
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
54
+ byId: {},
55
+ queries: {}
56
+ };
57
+ let action = arguments.length > 1 ? arguments[1] : undefined;
58
+
53
59
  switch (action.type) {
54
60
  case 'RECEIVE_USER_QUERY':
55
61
  return {
@@ -73,7 +79,10 @@ export function users(state = {
73
79
  * @return {Object} Updated state.
74
80
  */
75
81
 
76
- export function currentUser(state = {}, action) {
82
+ export function currentUser() {
83
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84
+ let action = arguments.length > 1 ? arguments[1] : undefined;
85
+
77
86
  switch (action.type) {
78
87
  case 'RECEIVE_CURRENT_USER':
79
88
  return action.currentUser;
@@ -90,7 +99,10 @@ export function currentUser(state = {}, action) {
90
99
  * @return {Object} Updated state.
91
100
  */
92
101
 
93
- export function taxonomies(state = [], action) {
102
+ export function taxonomies() {
103
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
104
+ let action = arguments.length > 1 ? arguments[1] : undefined;
105
+
94
106
  switch (action.type) {
95
107
  case 'RECEIVE_TAXONOMIES':
96
108
  return action.taxonomies;
@@ -107,7 +119,10 @@ export function taxonomies(state = [], action) {
107
119
  * @return {string} Updated state.
108
120
  */
109
121
 
110
- export function currentTheme(state = undefined, action) {
122
+ export function currentTheme() {
123
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
124
+ let action = arguments.length > 1 ? arguments[1] : undefined;
125
+
111
126
  switch (action.type) {
112
127
  case 'RECEIVE_CURRENT_THEME':
113
128
  return action.currentTheme.stylesheet;
@@ -124,7 +139,10 @@ export function currentTheme(state = undefined, action) {
124
139
  * @return {string} Updated state.
125
140
  */
126
141
 
127
- export function currentGlobalStylesId(state = undefined, action) {
142
+ export function currentGlobalStylesId() {
143
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
144
+ let action = arguments.length > 1 ? arguments[1] : undefined;
145
+
128
146
  switch (action.type) {
129
147
  case 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':
130
148
  return action.id;
@@ -141,7 +159,10 @@ export function currentGlobalStylesId(state = undefined, action) {
141
159
  * @return {string} Updated state.
142
160
  */
143
161
 
144
- export function themeBaseGlobalStyles(state = {}, action) {
162
+ export function themeBaseGlobalStyles() {
163
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
164
+ let action = arguments.length > 1 ? arguments[1] : undefined;
165
+
145
166
  switch (action.type) {
146
167
  case 'RECEIVE_THEME_GLOBAL_STYLES':
147
168
  return { ...state,
@@ -173,9 +194,12 @@ function entity(entityConfig) {
173
194
  };
174
195
  })])(combineReducers({
175
196
  queriedData: queriedDataReducer,
176
- edits: (state = {}, action) => {
197
+ edits: function () {
177
198
  var _action$query$context, _action$query;
178
199
 
200
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
201
+ let action = arguments.length > 1 ? arguments[1] : undefined;
202
+
179
203
  switch (action.type) {
180
204
  case 'RECEIVE_ITEMS':
181
205
  const context = (_action$query$context = action === null || action === void 0 ? void 0 : (_action$query = action.query) === null || _action$query === void 0 ? void 0 : _action$query.context) !== null && _action$query$context !== void 0 ? _action$query$context : 'default';
@@ -237,7 +261,10 @@ function entity(entityConfig) {
237
261
 
238
262
  return state;
239
263
  },
240
- saving: (state = {}, action) => {
264
+ saving: function () {
265
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
266
+ let action = arguments.length > 1 ? arguments[1] : undefined;
267
+
241
268
  switch (action.type) {
242
269
  case 'SAVE_ENTITY_RECORD_START':
243
270
  case 'SAVE_ENTITY_RECORD_FINISH':
@@ -252,7 +279,10 @@ function entity(entityConfig) {
252
279
 
253
280
  return state;
254
281
  },
255
- deleting: (state = {}, action) => {
282
+ deleting: function () {
283
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
284
+ let action = arguments.length > 1 ? arguments[1] : undefined;
285
+
256
286
  switch (action.type) {
257
287
  case 'DELETE_ENTITY_RECORD_START':
258
288
  case 'DELETE_ENTITY_RECORD_FINISH':
@@ -278,7 +308,10 @@ function entity(entityConfig) {
278
308
  */
279
309
 
280
310
 
281
- export function entitiesConfig(state = defaultEntities, action) {
311
+ export function entitiesConfig() {
312
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultEntities;
313
+ let action = arguments.length > 1 ? arguments[1] : undefined;
314
+
282
315
  switch (action.type) {
283
316
  case 'ADD_ENTITIES':
284
317
  return [...state, ...action.entities];
@@ -295,14 +328,17 @@ export function entitiesConfig(state = defaultEntities, action) {
295
328
  * @return {Object} Updated state.
296
329
  */
297
330
 
298
- export const entities = (state = {}, action) => {
331
+ export const entities = function () {
332
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
333
+ let action = arguments.length > 1 ? arguments[1] : undefined;
299
334
  const newConfig = entitiesConfig(state.config, action); // Generates a dynamic reducer for the entities
300
335
 
301
336
  let entitiesDataReducer = state.reducer;
302
337
 
303
338
  if (!entitiesDataReducer || newConfig !== state.config) {
304
339
  const entitiesByKind = groupBy(newConfig, 'kind');
305
- entitiesDataReducer = combineReducers(Object.entries(entitiesByKind).reduce((memo, [kind, subEntities]) => {
340
+ entitiesDataReducer = combineReducers(Object.entries(entitiesByKind).reduce((memo, _ref) => {
341
+ let [kind, subEntities] = _ref;
306
342
  const kindReducer = combineReducers(subEntities.reduce((kindMemo, entityConfig) => ({ ...kindMemo,
307
343
  [entityConfig.name]: entity(entityConfig)
308
344
  }), {}));
@@ -335,7 +371,10 @@ export const entities = (state = {}, action) => {
335
371
  const UNDO_INITIAL_STATE = [];
336
372
  UNDO_INITIAL_STATE.offset = 0;
337
373
  let lastEditAction;
338
- export function undo(state = UNDO_INITIAL_STATE, action) {
374
+ export function undo() {
375
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : UNDO_INITIAL_STATE;
376
+ let action = arguments.length > 1 ? arguments[1] : undefined;
377
+
339
378
  switch (action.type) {
340
379
  case 'EDIT_ENTITY_RECORD':
341
380
  case 'CREATE_UNDO_LEVEL':
@@ -440,7 +479,10 @@ export function undo(state = UNDO_INITIAL_STATE, action) {
440
479
  * @return {Object} Updated state.
441
480
  */
442
481
 
443
- export function embedPreviews(state = {}, action) {
482
+ export function embedPreviews() {
483
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
484
+ let action = arguments.length > 1 ? arguments[1] : undefined;
485
+
444
486
  switch (action.type) {
445
487
  case 'RECEIVE_EMBED_PREVIEW':
446
488
  const {
@@ -464,7 +506,10 @@ export function embedPreviews(state = {}, action) {
464
506
  * @return {Object} Updated state.
465
507
  */
466
508
 
467
- export function userPermissions(state = {}, action) {
509
+ export function userPermissions() {
510
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
511
+ let action = arguments.length > 1 ? arguments[1] : undefined;
512
+
468
513
  switch (action.type) {
469
514
  case 'RECEIVE_USER_PERMISSION':
470
515
  return { ...state,
@@ -483,7 +528,10 @@ export function userPermissions(state = {}, action) {
483
528
  * @return {Object} Updated state.
484
529
  */
485
530
 
486
- export function autosaves(state = {}, action) {
531
+ export function autosaves() {
532
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
533
+ let action = arguments.length > 1 ? arguments[1] : undefined;
534
+
487
535
  switch (action.type) {
488
536
  case 'RECEIVE_AUTOSAVES':
489
537
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","defaultEntities","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","data","UNDO_INITIAL_STATE","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,EAAgBC,GAAhB,EAAqBC,OAArB,EAA8BC,SAA9B,EAAyCC,OAAzC,EAAkDC,GAAlD,QAA6D,QAA7D;AAEA;AACA;AACA;;AACA,SAASC,eAAT,QAAgC,iBAAhC;AACA,OAAOC,cAAP,MAA2B,6BAA3B;AAEA;AACA;AACA;;AACA,SAASC,gBAAT,EAA2BC,aAA3B,QAAgD,SAAhD;AACA,SAASC,OAAO,IAAIC,kBAApB,QAA8C,gBAA9C;AACA,SAASC,eAAT,EAA0BC,kBAA1B,QAAoD,YAApD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,KAAT,CAAgBC,KAAK,GAAG,EAAxB,EAA4BC,MAA5B,EAAqC;AAC3C,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,eAAL;AACC,aAAO,EACN,GAAGF,KADG;AAEN,SAAEC,MAAM,CAACE,QAAT,GAAqBF,MAAM,CAACF;AAFtB,OAAP;AAFF;;AAQA,SAAOC,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASI,KAAT,CAAgBJ,KAAK,GAAG;AAAEK,EAAAA,IAAI,EAAE,EAAR;AAAYC,EAAAA,OAAO,EAAE;AAArB,CAAxB,EAAmDL,MAAnD,EAA4D;AAClE,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,oBAAL;AACC,aAAO;AACNG,QAAAA,IAAI,EAAE,EACL,GAAGL,KAAK,CAACK,IADJ;AAEL,aAAGpB,KAAK,CAAEgB,MAAM,CAACG,KAAT,EAAgB,IAAhB;AAFH,SADA;AAKNE,QAAAA,OAAO,EAAE,EACR,GAAGN,KAAK,CAACM,OADD;AAER,WAAEL,MAAM,CAACM,OAAT,GAAoBrB,GAAG,CACtBe,MAAM,CAACG,KADe,EAEpBI,IAAF,IAAYA,IAAI,CAACC,EAFK;AAFf;AALH,OAAP;AAFF;;AAiBA,SAAOT,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASU,WAAT,CAAsBV,KAAK,GAAG,EAA9B,EAAkCC,MAAlC,EAA2C;AACjD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,sBAAL;AACC,aAAOD,MAAM,CAACS,WAAd;AAFF;;AAKA,SAAOV,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASW,UAAT,CAAqBX,KAAK,GAAG,EAA7B,EAAiCC,MAAjC,EAA0C;AAChD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,oBAAL;AACC,aAAOD,MAAM,CAACU,UAAd;AAFF;;AAKA,SAAOX,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASY,YAAT,CAAuBZ,KAAK,GAAGa,SAA/B,EAA0CZ,MAA1C,EAAmD;AACzD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,uBAAL;AACC,aAAOD,MAAM,CAACW,YAAP,CAAoBE,UAA3B;AAFF;;AAKA,SAAOd,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASe,qBAAT,CAAgCf,KAAK,GAAGa,SAAxC,EAAmDZ,MAAnD,EAA4D;AAClE,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,kCAAL;AACC,aAAOD,MAAM,CAACQ,EAAd;AAFF;;AAKA,SAAOT,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASgB,qBAAT,CAAgChB,KAAK,GAAG,EAAxC,EAA4CC,MAA5C,EAAqD;AAC3D,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,6BAAL;AACC,aAAO,EACN,GAAGF,KADG;AAEN,SAAEC,MAAM,CAACa,UAAT,GAAuBb,MAAM,CAACgB;AAFxB,OAAP;AAFF;;AAQA,SAAOjB,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASkB,MAAT,CAAiBC,YAAjB,EAAgC;AAC/B,SAAO/B,SAAS,CAAE,CACjB;AACA;AACAK,EAAAA,gBAAgB,CACbQ,MAAF,IACCA,MAAM,CAACmB,IAAP,IACAnB,MAAM,CAACoB,IADP,IAEApB,MAAM,CAACmB,IAAP,KAAgBD,YAAY,CAACC,IAF7B,IAGAnB,MAAM,CAACoB,IAAP,KAAgBF,YAAY,CAACE,IALf,CAHC,EAWjB;AACA3B,EAAAA,aAAa,CAAIO,MAAF,IAAc;AAC5B,WAAO,EACN,GAAGA,MADG;AAENqB,MAAAA,GAAG,EAAEH,YAAY,CAACG,GAAb,IAAoBxB;AAFnB,KAAP;AAIA,GALY,CAZI,CAAF,CAAT,CAmBNP,eAAe,CAAE;AAChBgC,IAAAA,WAAW,EAAE3B,kBADG;AAGhB4B,IAAAA,KAAK,EAAE,CAAExB,KAAK,GAAG,EAAV,EAAcC,MAAd,KAA0B;AAAA;;AAChC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,eAAL;AACC,gBAAMuB,OAAO,4BAAGxB,MAAH,aAAGA,MAAH,wCAAGA,MAAM,CAAEyB,KAAX,kDAAG,cAAeD,OAAlB,yEAA6B,SAA1C;;AACA,cAAKA,OAAO,KAAK,SAAjB,EAA6B;AAC5B,mBAAOzB,KAAP;AACA;;AAED,gBAAM2B,SAAS,GAAG,EAAE,GAAG3B;AAAL,WAAlB;;AAEA,eAAM,MAAM4B,MAAZ,IAAsB3B,MAAM,CAAC4B,KAA7B,EAAqC;AACpC,kBAAMC,QAAQ,GAAGF,MAAM,CAAE3B,MAAM,CAACqB,GAAT,CAAvB;AACA,kBAAME,KAAK,GAAGG,SAAS,CAAEG,QAAF,CAAvB;;AACA,gBAAK,CAAEN,KAAP,EAAe;AACd;AACA;;AAED,kBAAMO,SAAS,GAAGC,MAAM,CAACC,IAAP,CAAaT,KAAb,EAAqBU,MAArB,CACjB,CAAEC,GAAF,EAAOb,GAAP,KAAgB;AACf;AACA;AACA,mBACC;AACA;AACA;AACA,eAAEjC,OAAO,CACRmC,KAAK,CAAEF,GAAF,CADG,EAERhC,GAAG,CACFsC,MAAM,CAAEN,GAAF,CADJ,EAEF,KAFE,EAGFM,MAAM,CAAEN,GAAF,CAHJ,CAFK,CAAT,MAQA;AACA;AACE,eAAErB,MAAM,CAACmC,cAAT,IACD,CAAE/C,OAAO,CACRmC,KAAK,CAAEF,GAAF,CADG,EAERrB,MAAM,CAACmC,cAAP,CAAuBd,GAAvB,CAFQ,CAXV,CAJD,EAmBE;AACDa,gBAAAA,GAAG,CAAEb,GAAF,CAAH,GAAaE,KAAK,CAAEF,GAAF,CAAlB;AACA;;AACD,qBAAOa,GAAP;AACA,aA3BgB,EA4BjB,EA5BiB,CAAlB;;AA+BA,gBAAKH,MAAM,CAACC,IAAP,CAAaF,SAAb,EAAyBM,MAA9B,EAAuC;AACtCV,cAAAA,SAAS,CAAEG,QAAF,CAAT,GAAwBC,SAAxB;AACA,aAFD,MAEO;AACN,qBAAOJ,SAAS,CAAEG,QAAF,CAAhB;AACA;AACD;;AAED,iBAAOH,SAAP;;AAED,aAAK,oBAAL;AACC,gBAAMI,SAAS,GAAG,EACjB,GAAG/B,KAAK,CAAEC,MAAM,CAAC6B,QAAT,CADS;AAEjB,eAAG7B,MAAM,CAACuB;AAFO,WAAlB;AAIAQ,UAAAA,MAAM,CAACC,IAAP,CAAaF,SAAb,EAAyBO,OAAzB,CAAoChB,GAAF,IAAW;AAC5C;AACA;AACA,gBAAKS,SAAS,CAAET,GAAF,CAAT,KAAqBT,SAA1B,EAAsC;AACrC,qBAAOkB,SAAS,CAAET,GAAF,CAAhB;AACA;AACD,WAND;AAOA,iBAAO,EACN,GAAGtB,KADG;AAEN,aAAEC,MAAM,CAAC6B,QAAT,GAAqBC;AAFf,WAAP;AApEF;;AA0EA,aAAO/B,KAAP;AACA,KA/Ee;AAiFhBuC,IAAAA,MAAM,EAAE,CAAEvC,KAAK,GAAG,EAAV,EAAcC,MAAd,KAA0B;AACjC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,0BAAL;AACA,aAAK,2BAAL;AACC,iBAAO,EACN,GAAGF,KADG;AAEN,aAAEC,MAAM,CAAC6B,QAAT,GAAqB;AACpBU,cAAAA,OAAO,EACNvC,MAAM,CAACC,IAAP,KAAgB,0BAFG;AAGpBuC,cAAAA,KAAK,EAAExC,MAAM,CAACwC,KAHM;AAIpBC,cAAAA,UAAU,EAAEzC,MAAM,CAACyC;AAJC;AAFf,WAAP;AAHF;;AAcA,aAAO1C,KAAP;AACA,KAjGe;AAmGhB2C,IAAAA,QAAQ,EAAE,CAAE3C,KAAK,GAAG,EAAV,EAAcC,MAAd,KAA0B;AACnC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,4BAAL;AACA,aAAK,6BAAL;AACC,iBAAO,EACN,GAAGF,KADG;AAEN,aAAEC,MAAM,CAAC6B,QAAT,GAAqB;AACpBU,cAAAA,OAAO,EACNvC,MAAM,CAACC,IAAP,KACA,4BAHmB;AAIpBuC,cAAAA,KAAK,EAAExC,MAAM,CAACwC;AAJM;AAFf,WAAP;AAHF;;AAcA,aAAOzC,KAAP;AACA;AAnHe,GAAF,CAnBT,CAAP;AAyIA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAAS4C,cAAT,CAAyB5C,KAAK,GAAGH,eAAjC,EAAkDI,MAAlD,EAA2D;AACjE,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,cAAL;AACC,aAAO,CAAE,GAAGF,KAAL,EAAY,GAAGC,MAAM,CAAC4C,QAAtB,CAAP;AAFF;;AAKA,SAAO7C,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAM6C,QAAQ,GAAG,CAAE7C,KAAK,GAAG,EAAV,EAAcC,MAAd,KAA0B;AACjD,QAAM6C,SAAS,GAAGF,cAAc,CAAE5C,KAAK,CAAC+C,MAAR,EAAgB9C,MAAhB,CAAhC,CADiD,CAGjD;;AACA,MAAI+C,mBAAmB,GAAGhD,KAAK,CAACL,OAAhC;;AACA,MAAK,CAAEqD,mBAAF,IAAyBF,SAAS,KAAK9C,KAAK,CAAC+C,MAAlD,EAA2D;AAC1D,UAAME,cAAc,GAAG9D,OAAO,CAAE2D,SAAF,EAAa,MAAb,CAA9B;AACAE,IAAAA,mBAAmB,GAAGzD,eAAe,CACpCyC,MAAM,CAACkB,OAAP,CAAgBD,cAAhB,EAAiCf,MAAjC,CACC,CAAEiB,IAAF,EAAQ,CAAE9B,IAAF,EAAQ+B,WAAR,CAAR,KAAmC;AAClC,YAAMC,WAAW,GAAG9D,eAAe,CAClC6D,WAAW,CAAClB,MAAZ,CACC,CAAEoB,QAAF,EAAYnC,YAAZ,MAAgC,EAC/B,GAAGmC,QAD4B;AAE/B,SAAEnC,YAAY,CAACC,IAAf,GAAuBF,MAAM,CAAEC,YAAF;AAFE,OAAhC,CADD,EAKC,EALD,CADkC,CAAnC;AAUAgC,MAAAA,IAAI,CAAE9B,IAAF,CAAJ,GAAegC,WAAf;AACA,aAAOF,IAAP;AACA,KAdF,EAeC,EAfD,CADoC,CAArC;AAmBA;;AAED,QAAMI,OAAO,GAAGP,mBAAmB,CAAEhD,KAAK,CAACwD,IAAR,EAAcvD,MAAd,CAAnC;;AAEA,MACCsD,OAAO,KAAKvD,KAAK,CAACwD,IAAlB,IACAV,SAAS,KAAK9C,KAAK,CAAC+C,MADpB,IAEAC,mBAAmB,KAAKhD,KAAK,CAACL,OAH/B,EAIE;AACD,WAAOK,KAAP;AACA;;AAED,SAAO;AACNL,IAAAA,OAAO,EAAEqD,mBADH;AAENQ,IAAAA,IAAI,EAAED,OAFA;AAGNR,IAAAA,MAAM,EAAED;AAHF,GAAP;AAKA,CA3CM;AA6CP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMW,kBAAkB,GAAG,EAA3B;AACAA,kBAAkB,CAACC,MAAnB,GAA4B,CAA5B;AACA,IAAIC,cAAJ;AACA,OAAO,SAASC,IAAT,CAAe5D,KAAK,GAAGyD,kBAAvB,EAA2CxD,MAA3C,EAAoD;AAC1D,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,oBAAL;AACA,SAAK,mBAAL;AACC,UAAI2D,iBAAiB,GAAG5D,MAAM,CAACC,IAAP,KAAgB,mBAAxC;AACA,YAAM4D,YAAY,GACjB,CAAED,iBAAF,KACE5D,MAAM,CAAC8D,IAAP,CAAYC,MAAZ,IAAsB/D,MAAM,CAAC8D,IAAP,CAAYE,MADpC,CADD;;AAGA,UAAKJ,iBAAL,EAAyB;AACxB5D,QAAAA,MAAM,GAAG0D,cAAT;AACA,OAFD,MAEO,IAAK,CAAEG,YAAP,EAAsB;AAC5B;AACA;AACA;AACA,YACC9B,MAAM,CAACC,IAAP,CAAahC,MAAM,CAACuB,KAApB,EAA4B0C,IAA5B,CACG5C,GAAF,IAAW,CAAErB,MAAM,CAACkE,cAAP,CAAuB7C,GAAvB,CADd,CADD,EAIE;AACDqC,UAAAA,cAAc,GAAG1D,MAAjB;AACA,SAND,MAMO;AACN0D,UAAAA,cAAc,GAAG,EAChB,GAAG1D,MADa;AAEhBuB,YAAAA,KAAK,EAAE,EACN,IAAKmC,cAAc,IAAIA,cAAc,CAACnC,KAAtC,CADM;AAEN,iBAAGvB,MAAM,CAACuB;AAFJ;AAFS,WAAjB;AAOA;AACD;;AAED,UAAIG,SAAJ;;AACA,UAAKmC,YAAL,EAAoB;AACnBnC,QAAAA,SAAS,GAAG,CAAE,GAAG3B,KAAL,CAAZ;AACA2B,QAAAA,SAAS,CAAC+B,MAAV,GACC1D,KAAK,CAAC0D,MAAN,IAAiBzD,MAAM,CAAC8D,IAAP,CAAYC,MAAZ,GAAqB,CAAC,CAAtB,GAA0B,CAA3C,CADD;;AAGA,YAAKhE,KAAK,CAACoE,aAAX,EAA2B;AAC1B;AACA;AACA;AACA;AACA;AACAP,UAAAA,iBAAiB,GAAG,IAApB;AACA5D,UAAAA,MAAM,GAAG0D,cAAT;AACA,SARD,MAQO;AACN,iBAAOhC,SAAP;AACA;AACD;;AAED,UAAK,CAAE1B,MAAM,CAAC8D,IAAP,CAAYH,IAAnB,EAA0B;AACzB,eAAO5D,KAAP;AACA,OAjDF,CAmDC;AACA;AACA;;;AACA,UACC,CAAE6D,iBAAF,IACA,CAAE7B,MAAM,CAACC,IAAP,CAAahC,MAAM,CAACuB,KAApB,EAA4B0C,IAA5B,CACC5C,GAAF,IAAW,CAAErB,MAAM,CAACkE,cAAP,CAAuB7C,GAAvB,CADZ,CAFH,EAKE;AACDK,QAAAA,SAAS,GAAG,CAAE,GAAG3B,KAAL,CAAZ;AACA2B,QAAAA,SAAS,CAACyC,aAAV,GAA0B,EACzB,GAAGpE,KAAK,CAACoE,aADgB;AAEzB,aAAGnE,MAAM,CAACuB;AAFe,SAA1B;AAIAG,QAAAA,SAAS,CAAC+B,MAAV,GAAmB1D,KAAK,CAAC0D,MAAzB;AACA,eAAO/B,SAAP;AACA,OAnEF,CAqEC;;;AACAA,MAAAA,SAAS,GACRA,SAAS,IAAI3B,KAAK,CAACqE,KAAN,CAAa,CAAb,EAAgBrE,KAAK,CAAC0D,MAAN,IAAgB7C,SAAhC,CADd;AAEAc,MAAAA,SAAS,CAAC+B,MAAV,GAAmB/B,SAAS,CAAC+B,MAAV,IAAoB,CAAvC;AACA/B,MAAAA,SAAS,CAAC2C,GAAV;;AACA,UAAK,CAAET,iBAAP,EAA2B;AAC1BlC,QAAAA,SAAS,CAAC4C,IAAV,CAAgB;AACflD,UAAAA,IAAI,EAAEpB,MAAM,CAAC8D,IAAP,CAAYH,IAAZ,CAAiBvC,IADR;AAEfD,UAAAA,IAAI,EAAEnB,MAAM,CAAC8D,IAAP,CAAYH,IAAZ,CAAiBxC,IAFR;AAGfU,UAAAA,QAAQ,EAAE7B,MAAM,CAAC8D,IAAP,CAAYH,IAAZ,CAAiB9B,QAHZ;AAIfN,UAAAA,KAAK,EAAE,EACN,GAAGxB,KAAK,CAACoE,aADH;AAEN,eAAGnE,MAAM,CAAC8D,IAAP,CAAYH,IAAZ,CAAiBpC;AAFd;AAJQ,SAAhB;AASA,OApFF,CAqFC;AACA;;;AACA,YAAMgD,mBAAmB,GAAGxC,MAAM,CAACyC,MAAP,CAC3BxE,MAAM,CAAC8D,IAAP,CAAYH,IAAZ,CAAiBpC,KADU,EAE1BkD,MAF0B,CAEhBC,IAAF,IAAY,OAAOA,IAAP,KAAgB,UAFV,CAA5B;AAGA,YAAMC,eAAe,GAAG5C,MAAM,CAACyC,MAAP,CAAexE,MAAM,CAACuB,KAAtB,EAA8BkD,MAA9B,CACrBC,IAAF,IAAY,OAAOA,IAAP,KAAgB,UADL,CAAxB;;AAGA,UAAK,CAAEnF,cAAc,CAAEgF,mBAAF,EAAuBI,eAAvB,CAArB,EAAgE;AAC/DjD,QAAAA,SAAS,CAAC4C,IAAV,CAAgB;AACflD,UAAAA,IAAI,EAAEpB,MAAM,CAACoB,IADE;AAEfD,UAAAA,IAAI,EAAEnB,MAAM,CAACmB,IAFE;AAGfU,UAAAA,QAAQ,EAAE7B,MAAM,CAAC6B,QAHF;AAIfN,UAAAA,KAAK,EAAEqC,iBAAiB,GACrB,EAAE,GAAG7D,KAAK,CAACoE,aAAX;AAA0B,eAAGnE,MAAM,CAACuB;AAApC,WADqB,GAErBvB,MAAM,CAACuB;AANK,SAAhB;AAQA;;AACD,aAAOG,SAAP;AAzGF;;AA4GA,SAAO3B,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS6E,aAAT,CAAwB7E,KAAK,GAAG,EAAhC,EAAoCC,MAApC,EAA6C;AACnD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,uBAAL;AACC,YAAM;AAAE4E,QAAAA,GAAF;AAAOC,QAAAA;AAAP,UAAmB9E,MAAzB;AACA,aAAO,EACN,GAAGD,KADG;AAEN,SAAE8E,GAAF,GAASC;AAFH,OAAP;AAHF;;AAQA,SAAO/E,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASgF,eAAT,CAA0BhF,KAAK,GAAG,EAAlC,EAAsCC,MAAtC,EAA+C;AACrD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,yBAAL;AACC,aAAO,EACN,GAAGF,KADG;AAEN,SAAEC,MAAM,CAACqB,GAAT,GAAgBrB,MAAM,CAACgF;AAFjB,OAAP;AAFF;;AAQA,SAAOjF,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASkF,SAAT,CAAoBlF,KAAK,GAAG,EAA5B,EAAgCC,MAAhC,EAAyC;AAC/C,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,mBAAL;AACC,YAAM;AAAEiF,QAAAA,MAAF;AAAUD,QAAAA,SAAS,EAAEE;AAArB,UAAuCnF,MAA7C;AAEA,aAAO,EACN,GAAGD,KADG;AAEN,SAAEmF,MAAF,GAAYC;AAFN,OAAP;AAJF;;AAUA,SAAOpF,KAAP;AACA;AAED,eAAeT,eAAe,CAAE;AAC/BQ,EAAAA,KAD+B;AAE/BK,EAAAA,KAF+B;AAG/BQ,EAAAA,YAH+B;AAI/BG,EAAAA,qBAJ+B;AAK/BL,EAAAA,WAL+B;AAM/BM,EAAAA,qBAN+B;AAO/BL,EAAAA,UAP+B;AAQ/BkC,EAAAA,QAR+B;AAS/Be,EAAAA,IAT+B;AAU/BiB,EAAAA,aAV+B;AAW/BG,EAAAA,eAX+B;AAY/BE,EAAAA;AAZ+B,CAAF,CAA9B","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { defaultEntities, DEFAULT_ENTITY_KEY } from './entities';\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {Function} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = defaultEntities, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.data, action );\n\n\tif (\n\t\tnewData === state.data &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\tdata: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nconst UNDO_INITIAL_STATE = [];\nUNDO_INITIAL_STATE.offset = 0;\nlet lastEditAction;\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet nextState;\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","defaultEntities","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","data","UNDO_INITIAL_STATE","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { defaultEntities, DEFAULT_ENTITY_KEY } from './entities';\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {Function} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = defaultEntities, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.data, action );\n\n\tif (\n\t\tnewData === state.data &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\tdata: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nconst UNDO_INITIAL_STATE = [];\nUNDO_INITIAL_STATE.offset = 0;\nlet lastEditAction;\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet nextState;\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n} );\n"]}