@wordpress/core-data 4.0.5 → 4.0.10-next.33ec3857e2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/actions.js +269 -244
- package/build/actions.js.map +1 -1
- package/build/batch/create-batch.js +17 -9
- package/build/batch/create-batch.js.map +1 -1
- package/build/entities.js +22 -10
- package/build/entities.js.map +1 -1
- package/build/entity-provider.js +18 -13
- package/build/entity-provider.js.map +1 -1
- package/build/fetch/__experimental-fetch-link-suggestions.js +3 -1
- package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build/fetch/__experimental-fetch-url-data.js +2 -1
- package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build/index.js +25 -5
- package/build/index.js.map +1 -1
- package/build/locks/actions.js +4 -3
- package/build/locks/actions.js.map +1 -1
- package/build/locks/reducer.js +4 -1
- package/build/locks/reducer.js.map +1 -1
- package/build/locks/selectors.js +4 -3
- package/build/locks/selectors.js.map +1 -1
- package/build/locks/utils.js +7 -5
- package/build/locks/utils.js.map +1 -1
- package/build/queried-data/actions.js +6 -3
- package/build/queried-data/actions.js.map +1 -1
- package/build/queried-data/get-query-parts.js +1 -1
- package/build/queried-data/reducer.js +17 -6
- package/build/queried-data/reducer.js.map +1 -1
- package/build/queried-data/selectors.js +2 -1
- package/build/queried-data/selectors.js.map +1 -1
- package/build/reducer.js +77 -28
- package/build/reducer.js.map +1 -1
- package/build/resolvers.js +186 -158
- package/build/resolvers.js.map +1 -1
- package/build/selectors.js +31 -36
- package/build/selectors.js.map +1 -1
- package/build/utils/forward-resolver.js +11 -4
- package/build/utils/forward-resolver.js.map +1 -1
- package/build/utils/index.js +8 -8
- package/build/utils/on-sub-key.js +4 -2
- package/build/utils/on-sub-key.js.map +1 -1
- package/build-module/actions.js +257 -235
- package/build-module/actions.js.map +1 -1
- package/build-module/batch/create-batch.js +17 -9
- package/build-module/batch/create-batch.js.map +1 -1
- package/build-module/entities.js +21 -9
- package/build-module/entities.js.map +1 -1
- package/build-module/entity-provider.js +17 -12
- package/build-module/entity-provider.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-link-suggestions.js +3 -1
- package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-url-data.js +2 -1
- package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build-module/index.js +21 -3
- package/build-module/index.js.map +1 -1
- package/build-module/locks/actions.js +4 -3
- package/build-module/locks/actions.js.map +1 -1
- package/build-module/locks/reducer.js +4 -1
- package/build-module/locks/reducer.js.map +1 -1
- package/build-module/locks/selectors.js +4 -3
- package/build-module/locks/selectors.js.map +1 -1
- package/build-module/locks/utils.js +5 -3
- package/build-module/locks/utils.js.map +1 -1
- package/build-module/queried-data/actions.js +5 -2
- package/build-module/queried-data/actions.js.map +1 -1
- package/build-module/queried-data/reducer.js +15 -4
- package/build-module/queried-data/reducer.js.map +1 -1
- package/build-module/queried-data/selectors.js +2 -1
- package/build-module/queried-data/selectors.js.map +1 -1
- package/build-module/reducer.js +68 -20
- package/build-module/reducer.js.map +1 -1
- package/build-module/resolvers.js +185 -157
- package/build-module/resolvers.js.map +1 -1
- package/build-module/selectors.js +2 -15
- package/build-module/selectors.js.map +1 -1
- package/build-module/utils/forward-resolver.js +11 -4
- package/build-module/utils/forward-resolver.js.map +1 -1
- package/build-module/utils/on-sub-key.js +3 -1
- package/build-module/utils/on-sub-key.js.map +1 -1
- package/package.json +12 -12
- package/src/entities.js +12 -4
- package/src/resolvers.js +5 -0
- package/src/selectors.js +2 -15
- package/src/test/actions.js +2 -2
- package/src/test/selectors.js +4 -4
package/build/reducer.js
CHANGED
|
@@ -5,19 +5,20 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
8
|
+
exports.autosaves = autosaves;
|
|
9
|
+
exports.currentGlobalStylesId = currentGlobalStylesId;
|
|
10
|
+
exports.currentTheme = currentTheme;
|
|
10
11
|
exports.currentUser = currentUser;
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
exports.embedPreviews = embedPreviews;
|
|
14
|
+
exports.entities = void 0;
|
|
15
|
+
exports.entitiesConfig = entitiesConfig;
|
|
11
16
|
exports.taxonomies = taxonomies;
|
|
12
|
-
exports.
|
|
13
|
-
exports.currentGlobalStylesId = currentGlobalStylesId;
|
|
17
|
+
exports.terms = terms;
|
|
14
18
|
exports.themeBaseGlobalStyles = themeBaseGlobalStyles;
|
|
15
|
-
exports.entitiesConfig = entitiesConfig;
|
|
16
19
|
exports.undo = undo;
|
|
17
|
-
exports.embedPreviews = embedPreviews;
|
|
18
20
|
exports.userPermissions = userPermissions;
|
|
19
|
-
exports.
|
|
20
|
-
exports.default = exports.entities = void 0;
|
|
21
|
+
exports.users = users;
|
|
21
22
|
|
|
22
23
|
var _lodash = require("lodash");
|
|
23
24
|
|
|
@@ -54,7 +55,10 @@ var _entities = require("./entities");
|
|
|
54
55
|
*
|
|
55
56
|
* @return {Object} Updated state.
|
|
56
57
|
*/
|
|
57
|
-
function terms(
|
|
58
|
+
function terms() {
|
|
59
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
60
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
61
|
+
|
|
58
62
|
switch (action.type) {
|
|
59
63
|
case 'RECEIVE_TERMS':
|
|
60
64
|
return { ...state,
|
|
@@ -74,10 +78,13 @@ function terms(state = {}, action) {
|
|
|
74
78
|
*/
|
|
75
79
|
|
|
76
80
|
|
|
77
|
-
function users(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
function users() {
|
|
82
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
83
|
+
byId: {},
|
|
84
|
+
queries: {}
|
|
85
|
+
};
|
|
86
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
87
|
+
|
|
81
88
|
switch (action.type) {
|
|
82
89
|
case 'RECEIVE_USER_QUERY':
|
|
83
90
|
return {
|
|
@@ -102,7 +109,10 @@ function users(state = {
|
|
|
102
109
|
*/
|
|
103
110
|
|
|
104
111
|
|
|
105
|
-
function currentUser(
|
|
112
|
+
function currentUser() {
|
|
113
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
114
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
115
|
+
|
|
106
116
|
switch (action.type) {
|
|
107
117
|
case 'RECEIVE_CURRENT_USER':
|
|
108
118
|
return action.currentUser;
|
|
@@ -120,7 +130,10 @@ function currentUser(state = {}, action) {
|
|
|
120
130
|
*/
|
|
121
131
|
|
|
122
132
|
|
|
123
|
-
function taxonomies(
|
|
133
|
+
function taxonomies() {
|
|
134
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
135
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
136
|
+
|
|
124
137
|
switch (action.type) {
|
|
125
138
|
case 'RECEIVE_TAXONOMIES':
|
|
126
139
|
return action.taxonomies;
|
|
@@ -138,7 +151,10 @@ function taxonomies(state = [], action) {
|
|
|
138
151
|
*/
|
|
139
152
|
|
|
140
153
|
|
|
141
|
-
function currentTheme(
|
|
154
|
+
function currentTheme() {
|
|
155
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
|
|
156
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
157
|
+
|
|
142
158
|
switch (action.type) {
|
|
143
159
|
case 'RECEIVE_CURRENT_THEME':
|
|
144
160
|
return action.currentTheme.stylesheet;
|
|
@@ -156,7 +172,10 @@ function currentTheme(state = undefined, action) {
|
|
|
156
172
|
*/
|
|
157
173
|
|
|
158
174
|
|
|
159
|
-
function currentGlobalStylesId(
|
|
175
|
+
function currentGlobalStylesId() {
|
|
176
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
|
|
177
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
178
|
+
|
|
160
179
|
switch (action.type) {
|
|
161
180
|
case 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':
|
|
162
181
|
return action.id;
|
|
@@ -174,7 +193,10 @@ function currentGlobalStylesId(state = undefined, action) {
|
|
|
174
193
|
*/
|
|
175
194
|
|
|
176
195
|
|
|
177
|
-
function themeBaseGlobalStyles(
|
|
196
|
+
function themeBaseGlobalStyles() {
|
|
197
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
198
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
199
|
+
|
|
178
200
|
switch (action.type) {
|
|
179
201
|
case 'RECEIVE_THEME_GLOBAL_STYLES':
|
|
180
202
|
return { ...state,
|
|
@@ -207,9 +229,12 @@ function entity(entityConfig) {
|
|
|
207
229
|
};
|
|
208
230
|
})])((0, _data.combineReducers)({
|
|
209
231
|
queriedData: _queriedData.reducer,
|
|
210
|
-
edits: (
|
|
232
|
+
edits: function () {
|
|
211
233
|
var _action$query$context, _action$query;
|
|
212
234
|
|
|
235
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
236
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
237
|
+
|
|
213
238
|
switch (action.type) {
|
|
214
239
|
case 'RECEIVE_ITEMS':
|
|
215
240
|
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';
|
|
@@ -271,7 +296,10 @@ function entity(entityConfig) {
|
|
|
271
296
|
|
|
272
297
|
return state;
|
|
273
298
|
},
|
|
274
|
-
saving: (
|
|
299
|
+
saving: function () {
|
|
300
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
301
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
302
|
+
|
|
275
303
|
switch (action.type) {
|
|
276
304
|
case 'SAVE_ENTITY_RECORD_START':
|
|
277
305
|
case 'SAVE_ENTITY_RECORD_FINISH':
|
|
@@ -286,7 +314,10 @@ function entity(entityConfig) {
|
|
|
286
314
|
|
|
287
315
|
return state;
|
|
288
316
|
},
|
|
289
|
-
deleting: (
|
|
317
|
+
deleting: function () {
|
|
318
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
319
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
320
|
+
|
|
290
321
|
switch (action.type) {
|
|
291
322
|
case 'DELETE_ENTITY_RECORD_START':
|
|
292
323
|
case 'DELETE_ENTITY_RECORD_FINISH':
|
|
@@ -312,7 +343,10 @@ function entity(entityConfig) {
|
|
|
312
343
|
*/
|
|
313
344
|
|
|
314
345
|
|
|
315
|
-
function entitiesConfig(
|
|
346
|
+
function entitiesConfig() {
|
|
347
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _entities.defaultEntities;
|
|
348
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
349
|
+
|
|
316
350
|
switch (action.type) {
|
|
317
351
|
case 'ADD_ENTITIES':
|
|
318
352
|
return [...state, ...action.entities];
|
|
@@ -330,14 +364,17 @@ function entitiesConfig(state = _entities.defaultEntities, action) {
|
|
|
330
364
|
*/
|
|
331
365
|
|
|
332
366
|
|
|
333
|
-
const entities = (
|
|
367
|
+
const entities = function () {
|
|
368
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
369
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
334
370
|
const newConfig = entitiesConfig(state.config, action); // Generates a dynamic reducer for the entities
|
|
335
371
|
|
|
336
372
|
let entitiesDataReducer = state.reducer;
|
|
337
373
|
|
|
338
374
|
if (!entitiesDataReducer || newConfig !== state.config) {
|
|
339
375
|
const entitiesByKind = (0, _lodash.groupBy)(newConfig, 'kind');
|
|
340
|
-
entitiesDataReducer = (0, _data.combineReducers)(Object.entries(entitiesByKind).reduce((memo,
|
|
376
|
+
entitiesDataReducer = (0, _data.combineReducers)(Object.entries(entitiesByKind).reduce((memo, _ref) => {
|
|
377
|
+
let [kind, subEntities] = _ref;
|
|
341
378
|
const kindReducer = (0, _data.combineReducers)(subEntities.reduce((kindMemo, entityConfig) => ({ ...kindMemo,
|
|
342
379
|
[entityConfig.name]: entity(entityConfig)
|
|
343
380
|
}), {}));
|
|
@@ -373,7 +410,10 @@ const UNDO_INITIAL_STATE = [];
|
|
|
373
410
|
UNDO_INITIAL_STATE.offset = 0;
|
|
374
411
|
let lastEditAction;
|
|
375
412
|
|
|
376
|
-
function undo(
|
|
413
|
+
function undo() {
|
|
414
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : UNDO_INITIAL_STATE;
|
|
415
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
416
|
+
|
|
377
417
|
switch (action.type) {
|
|
378
418
|
case 'EDIT_ENTITY_RECORD':
|
|
379
419
|
case 'CREATE_UNDO_LEVEL':
|
|
@@ -479,7 +519,10 @@ function undo(state = UNDO_INITIAL_STATE, action) {
|
|
|
479
519
|
*/
|
|
480
520
|
|
|
481
521
|
|
|
482
|
-
function embedPreviews(
|
|
522
|
+
function embedPreviews() {
|
|
523
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
524
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
525
|
+
|
|
483
526
|
switch (action.type) {
|
|
484
527
|
case 'RECEIVE_EMBED_PREVIEW':
|
|
485
528
|
const {
|
|
@@ -504,7 +547,10 @@ function embedPreviews(state = {}, action) {
|
|
|
504
547
|
*/
|
|
505
548
|
|
|
506
549
|
|
|
507
|
-
function userPermissions(
|
|
550
|
+
function userPermissions() {
|
|
551
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
552
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
553
|
+
|
|
508
554
|
switch (action.type) {
|
|
509
555
|
case 'RECEIVE_USER_PERMISSION':
|
|
510
556
|
return { ...state,
|
|
@@ -524,7 +570,10 @@ function userPermissions(state = {}, action) {
|
|
|
524
570
|
*/
|
|
525
571
|
|
|
526
572
|
|
|
527
|
-
function autosaves(
|
|
573
|
+
function autosaves() {
|
|
574
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
575
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
576
|
+
|
|
528
577
|
switch (action.type) {
|
|
529
578
|
case 'RECEIVE_AUTOSAVES':
|
|
530
579
|
const {
|
package/build/reducer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","DEFAULT_ENTITY_KEY","queriedData","queriedDataReducer","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","defaultEntities","entities","newConfig","config","entitiesDataReducer","reducer","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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","DEFAULT_ENTITY_KEY","queriedData","queriedDataReducer","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","defaultEntities","entities","newConfig","config","entitiesDataReducer","reducer","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"]}
|