@wordpress/core-data 4.0.4 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -4
- package/build/actions.js +321 -247
- 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 +67 -14
- 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 +3 -2
- 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 +90 -43
- package/build/reducer.js.map +1 -1
- package/build/resolvers.js +216 -163
- package/build/resolvers.js.map +1 -1
- package/build/selectors.js +75 -22
- package/build/selectors.js.map +1 -1
- package/build/utils/forward-resolver.js +30 -0
- package/build/utils/forward-resolver.js.map +1 -0
- package/build/utils/index.js +9 -9
- package/build/utils/index.js.map +1 -1
- package/build/utils/on-sub-key.js +4 -2
- package/build/utils/on-sub-key.js.map +1 -1
- package/build-module/actions.js +306 -240
- 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 +66 -13
- 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 +3 -2
- 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 +80 -34
- package/build-module/reducer.js.map +1 -1
- package/build-module/resolvers.js +211 -161
- package/build-module/resolvers.js.map +1 -1
- package/build-module/selectors.js +44 -3
- package/build-module/selectors.js.map +1 -1
- package/build-module/utils/forward-resolver.js +22 -0
- package/build-module/utils/forward-resolver.js.map +1 -0
- package/build-module/utils/index.js +1 -1
- package/build-module/utils/index.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/actions.js +51 -5
- package/src/entities.js +43 -6
- package/src/fetch/__experimental-fetch-url-data.js +1 -1
- package/src/reducer.js +14 -17
- package/src/resolvers.js +56 -19
- package/src/selectors.js +43 -4
- package/src/test/actions.js +89 -0
- package/src/test/selectors.js +56 -1
- package/src/utils/forward-resolver.js +14 -0
- package/src/utils/index.js +1 -1
- package/build/utils/if-not-resolved.js +0 -31
- package/build/utils/if-not-resolved.js.map +0 -1
- package/build-module/utils/if-not-resolved.js +0 -23
- package/build-module/utils/if-not-resolved.js.map +0 -1
- package/src/utils/if-not-resolved.js +0 -22
- package/src/utils/test/if-not-resolved.js +0 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,wBAAwB,GAAG,IAAIC,OAAJ,EAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,uBAAT,CAAkCC,KAAlC,EAAyCC,KAAzC,EAAiD;AAAA;;AAChD,QAAM;AACLC,IAAAA,SADK;AAELC,IAAAA,IAFK;AAGLC,IAAAA,OAHK;AAILC,IAAAA,OAJK;AAKLC,IAAAA,MALK;AAMLC,IAAAA;AANK,MAOF,4BAAeN,KAAf,CAPJ;AAQA,MAAIO,OAAJ;;AAEA,wBAAKR,KAAK,CAACS,OAAX,oEAAK,eAAiBF,OAAjB,CAAL,kDAAK,sBAA8BL,SAA9B,CAAL,EAAiD;AAChDM,IAAAA,OAAO,GAAGR,KAAK,CAACS,OAAN,CAAeF,OAAf,EAA0BL,SAA1B,CAAV;AACA;;AAED,MAAK,CAAEM,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,QAAME,WAAW,GAAGN,OAAO,KAAK,CAAC,CAAb,GAAiB,CAAjB,GAAqB,CAAED,IAAI,GAAG,CAAT,IAAeC,OAAxD;AACA,QAAMO,SAAS,GACdP,OAAO,KAAK,CAAC,CAAb,GACGI,OAAO,CAACI,MADX,GAEGC,IAAI,CAACC,GAAL,CAAUJ,WAAW,GAAGN,OAAxB,EAAiCI,OAAO,CAACI,MAAzC,CAHJ;AAKA,QAAMG,KAAK,GAAG,EAAd;;AACA,OAAM,IAAIC,CAAC,GAAGN,WAAd,EAA2BM,CAAC,GAAGL,SAA/B,EAA0CK,CAAC,EAA3C,EAAgD;AAAA;;AAC/C,UAAMC,MAAM,GAAGT,OAAO,CAAEQ,CAAF,CAAtB;;AACA,QAAKE,KAAK,CAACC,OAAN,CAAed,OAAf,KAA4B,CAAEA,OAAO,CAACe,QAAR,CAAkBH,MAAlB,CAAnC,EAAgE;AAC/D;AACA,KAJ8C,CAM/C;;;AACA,QAAK,0BAAEjB,KAAK,CAACe,KAAN,CAAaR,OAAb,CAAF,iDAAE,qBAAwBc,cAAxB,CAAwCJ,MAAxC,CAAF,CAAL,EAA0D;AACzD,aAAO,IAAP;AACA;;AAED,UAAMK,IAAI,GAAGtB,KAAK,CAACe,KAAN,CAAaR,OAAb,EAAwBU,MAAxB,CAAb;AAEA,QAAIM,YAAJ;;AACA,QAAKL,KAAK,CAACC,OAAN,CAAeb,MAAf,CAAL,EAA+B;AAC9BiB,MAAAA,YAAY,GAAG,EAAf;;AAEA,WAAM,IAAIC,CAAC,GAAG,CAAd,EAAiBA,CAAC,GAAGlB,MAAM,CAACM,MAA5B,EAAoCY,CAAC,EAArC,EAA0C;AACzC,cAAMC,KAAK,GAAGnB,MAAM,CAAEkB,CAAF,CAAN,CAAYE,KAAZ,CAAmB,GAAnB,CAAd;AACA,cAAMC,KAAK,GAAG,iBAAKL,IAAL,EAAWG,KAAX,CAAd;AACA,yBAAKF,YAAL,EAAmBE,KAAnB,EAA0BE,KAA1B;AACA;AACD,KARD,MAQO;AAAA;;AACN;AACA;AACA,UAAK,2BAAE3B,KAAK,CAAC4B,cAAN,CAAsBrB,OAAtB,CAAF,kDAAE,sBAAmCU,MAAnC,CAAF,CAAL,EAAqD;AACpD,eAAO,IAAP;AACA;;AAEDM,MAAAA,YAAY,GAAGD,IAAf;AACA;;AAEDP,IAAAA,KAAK,CAACc,IAAN,CAAYN,YAAZ;AACA;;AAED,SAAOR,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMe,eAAe,GAAG,qBAAgB,
|
|
1
|
+
{"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport { get, set } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\n\n/**\n * Cache of state keys to EquivalentKeyMap where the inner map tracks queries\n * to their resulting items set. WeakMap allows garbage collection on expired\n * state references.\n *\n * @type {WeakMap<Object,EquivalentKeyMap>}\n */\nconst queriedItemsCacheByState = new WeakMap();\n\n/**\n * Returns items for a given query, or null if the items are not known.\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nfunction getQueriedItemsUncached( state, query ) {\n\tconst {\n\t\tstableKey,\n\t\tpage,\n\t\tperPage,\n\t\tinclude,\n\t\tfields,\n\t\tcontext,\n\t} = getQueryParts( query );\n\tlet itemIds;\n\n\tif ( state.queries?.[ context ]?.[ stableKey ] ) {\n\t\titemIds = state.queries[ context ][ stableKey ];\n\t}\n\n\tif ( ! itemIds ) {\n\t\treturn null;\n\t}\n\n\tconst startOffset = perPage === -1 ? 0 : ( page - 1 ) * perPage;\n\tconst endOffset =\n\t\tperPage === -1\n\t\t\t? itemIds.length\n\t\t\t: Math.min( startOffset + perPage, itemIds.length );\n\n\tconst items = [];\n\tfor ( let i = startOffset; i < endOffset; i++ ) {\n\t\tconst itemId = itemIds[ i ];\n\t\tif ( Array.isArray( include ) && ! include.includes( itemId ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Having a target item ID doesn't guarantee that this object has been queried.\n\t\tif ( ! state.items[ context ]?.hasOwnProperty( itemId ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = state.items[ context ][ itemId ];\n\n\t\tlet filteredItem;\n\t\tif ( Array.isArray( fields ) ) {\n\t\t\tfilteredItem = {};\n\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tconst value = get( item, field );\n\t\t\t\tset( filteredItem, field, value );\n\t\t\t}\n\t\t} else {\n\t\t\t// If expecting a complete item, validate that completeness, or\n\t\t\t// otherwise abort.\n\t\t\tif ( ! state.itemIsComplete[ context ]?.[ itemId ] ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfilteredItem = item;\n\t\t}\n\n\t\titems.push( filteredItem );\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns items for a given query, or null if the items are not known. Caches\n * result both per state (by reference) and per query (by deep equality).\n * The caching approach is intended to be durable to query objects which are\n * deeply but not referentially equal, since otherwise:\n *\n * `getQueriedItems( state, {} ) !== getQueriedItems( state, {} )`\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nexport const getQueriedItems = createSelector( ( state, query = {} ) => {\n\tlet queriedItemsCache = queriedItemsCacheByState.get( state );\n\tif ( queriedItemsCache ) {\n\t\tconst queriedItems = queriedItemsCache.get( query );\n\t\tif ( queriedItems !== undefined ) {\n\t\t\treturn queriedItems;\n\t\t}\n\t} else {\n\t\tqueriedItemsCache = new EquivalentKeyMap();\n\t\tqueriedItemsCacheByState.set( state, queriedItemsCache );\n\t}\n\n\tconst items = getQueriedItemsUncached( state, query );\n\tqueriedItemsCache.set( query, items );\n\treturn items;\n} );\n"]}
|
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.
|
|
10
|
-
exports.currentUser = currentUser;
|
|
11
|
-
exports.taxonomies = taxonomies;
|
|
8
|
+
exports.autosaves = autosaves;
|
|
9
|
+
exports.currentGlobalStylesId = currentGlobalStylesId;
|
|
12
10
|
exports.currentTheme = currentTheme;
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
11
|
+
exports.currentUser = currentUser;
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
exports.embedPreviews = embedPreviews;
|
|
14
|
+
exports.entities = void 0;
|
|
15
15
|
exports.entitiesConfig = entitiesConfig;
|
|
16
|
+
exports.taxonomies = taxonomies;
|
|
17
|
+
exports.terms = terms;
|
|
18
|
+
exports.themeBaseGlobalStyles = themeBaseGlobalStyles;
|
|
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;
|
|
@@ -147,40 +163,44 @@ function currentTheme(state = undefined, action) {
|
|
|
147
163
|
return state;
|
|
148
164
|
}
|
|
149
165
|
/**
|
|
150
|
-
* Reducer managing
|
|
166
|
+
* Reducer managing the current global styles id.
|
|
151
167
|
*
|
|
152
|
-
* @param {
|
|
168
|
+
* @param {string} state Current state.
|
|
153
169
|
* @param {Object} action Dispatched action.
|
|
154
170
|
*
|
|
155
|
-
* @return {
|
|
171
|
+
* @return {string} Updated state.
|
|
156
172
|
*/
|
|
157
173
|
|
|
158
174
|
|
|
159
|
-
function
|
|
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
|
-
case '
|
|
162
|
-
return
|
|
163
|
-
[action.currentTheme.stylesheet]: action.currentTheme
|
|
164
|
-
};
|
|
180
|
+
case 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':
|
|
181
|
+
return action.id;
|
|
165
182
|
}
|
|
166
183
|
|
|
167
184
|
return state;
|
|
168
185
|
}
|
|
169
186
|
/**
|
|
170
|
-
* Reducer managing theme
|
|
187
|
+
* Reducer managing the theme base global styles.
|
|
171
188
|
*
|
|
172
|
-
* @param {
|
|
189
|
+
* @param {string} state Current state.
|
|
173
190
|
* @param {Object} action Dispatched action.
|
|
174
191
|
*
|
|
175
|
-
* @return {
|
|
192
|
+
* @return {string} Updated state.
|
|
176
193
|
*/
|
|
177
194
|
|
|
178
195
|
|
|
179
|
-
function
|
|
196
|
+
function themeBaseGlobalStyles() {
|
|
197
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
198
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
199
|
+
|
|
180
200
|
switch (action.type) {
|
|
181
|
-
case '
|
|
201
|
+
case 'RECEIVE_THEME_GLOBAL_STYLES':
|
|
182
202
|
return { ...state,
|
|
183
|
-
|
|
203
|
+
[action.stylesheet]: action.globalStyles
|
|
184
204
|
};
|
|
185
205
|
}
|
|
186
206
|
|
|
@@ -209,9 +229,12 @@ function entity(entityConfig) {
|
|
|
209
229
|
};
|
|
210
230
|
})])((0, _data.combineReducers)({
|
|
211
231
|
queriedData: _queriedData.reducer,
|
|
212
|
-
edits: (
|
|
232
|
+
edits: function () {
|
|
213
233
|
var _action$query$context, _action$query;
|
|
214
234
|
|
|
235
|
+
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
236
|
+
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
237
|
+
|
|
215
238
|
switch (action.type) {
|
|
216
239
|
case 'RECEIVE_ITEMS':
|
|
217
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';
|
|
@@ -273,7 +296,10 @@ function entity(entityConfig) {
|
|
|
273
296
|
|
|
274
297
|
return state;
|
|
275
298
|
},
|
|
276
|
-
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
|
+
|
|
277
303
|
switch (action.type) {
|
|
278
304
|
case 'SAVE_ENTITY_RECORD_START':
|
|
279
305
|
case 'SAVE_ENTITY_RECORD_FINISH':
|
|
@@ -288,7 +314,10 @@ function entity(entityConfig) {
|
|
|
288
314
|
|
|
289
315
|
return state;
|
|
290
316
|
},
|
|
291
|
-
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
|
+
|
|
292
321
|
switch (action.type) {
|
|
293
322
|
case 'DELETE_ENTITY_RECORD_START':
|
|
294
323
|
case 'DELETE_ENTITY_RECORD_FINISH':
|
|
@@ -314,7 +343,10 @@ function entity(entityConfig) {
|
|
|
314
343
|
*/
|
|
315
344
|
|
|
316
345
|
|
|
317
|
-
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
|
+
|
|
318
350
|
switch (action.type) {
|
|
319
351
|
case 'ADD_ENTITIES':
|
|
320
352
|
return [...state, ...action.entities];
|
|
@@ -332,14 +364,17 @@ function entitiesConfig(state = _entities.defaultEntities, action) {
|
|
|
332
364
|
*/
|
|
333
365
|
|
|
334
366
|
|
|
335
|
-
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;
|
|
336
370
|
const newConfig = entitiesConfig(state.config, action); // Generates a dynamic reducer for the entities
|
|
337
371
|
|
|
338
372
|
let entitiesDataReducer = state.reducer;
|
|
339
373
|
|
|
340
374
|
if (!entitiesDataReducer || newConfig !== state.config) {
|
|
341
375
|
const entitiesByKind = (0, _lodash.groupBy)(newConfig, 'kind');
|
|
342
|
-
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;
|
|
343
378
|
const kindReducer = (0, _data.combineReducers)(subEntities.reduce((kindMemo, entityConfig) => ({ ...kindMemo,
|
|
344
379
|
[entityConfig.name]: entity(entityConfig)
|
|
345
380
|
}), {}));
|
|
@@ -375,7 +410,10 @@ const UNDO_INITIAL_STATE = [];
|
|
|
375
410
|
UNDO_INITIAL_STATE.offset = 0;
|
|
376
411
|
let lastEditAction;
|
|
377
412
|
|
|
378
|
-
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
|
+
|
|
379
417
|
switch (action.type) {
|
|
380
418
|
case 'EDIT_ENTITY_RECORD':
|
|
381
419
|
case 'CREATE_UNDO_LEVEL':
|
|
@@ -481,7 +519,10 @@ function undo(state = UNDO_INITIAL_STATE, action) {
|
|
|
481
519
|
*/
|
|
482
520
|
|
|
483
521
|
|
|
484
|
-
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
|
+
|
|
485
526
|
switch (action.type) {
|
|
486
527
|
case 'RECEIVE_EMBED_PREVIEW':
|
|
487
528
|
const {
|
|
@@ -506,7 +547,10 @@ function embedPreviews(state = {}, action) {
|
|
|
506
547
|
*/
|
|
507
548
|
|
|
508
549
|
|
|
509
|
-
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
|
+
|
|
510
554
|
switch (action.type) {
|
|
511
555
|
case 'RECEIVE_USER_PERMISSION':
|
|
512
556
|
return { ...state,
|
|
@@ -526,7 +570,10 @@ function userPermissions(state = {}, action) {
|
|
|
526
570
|
*/
|
|
527
571
|
|
|
528
572
|
|
|
529
|
-
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
|
+
|
|
530
577
|
switch (action.type) {
|
|
531
578
|
case 'RECEIVE_AUTOSAVES':
|
|
532
579
|
const {
|
|
@@ -545,10 +592,10 @@ var _default = (0, _data.combineReducers)({
|
|
|
545
592
|
terms,
|
|
546
593
|
users,
|
|
547
594
|
currentTheme,
|
|
595
|
+
currentGlobalStylesId,
|
|
548
596
|
currentUser,
|
|
597
|
+
themeBaseGlobalStyles,
|
|
549
598
|
taxonomies,
|
|
550
|
-
themes,
|
|
551
|
-
themeSupports,
|
|
552
599
|
entities,
|
|
553
600
|
undo,
|
|
554
601
|
embedPreviews,
|
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","themes","themeSupports","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 installed themes.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function themes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.currentTheme.stylesheet ]: action.currentTheme,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing theme supports data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function themeSupports( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_SUPPORTS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...action.themeSupports,\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\tcurrentUser,\n\ttaxonomies,\n\tthemes,\n\tthemeSupports,\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":";;;;;;;;;;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,KAAT,GAAqC;AAAA,MAArBC,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;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;;;AACO,SAASI,KAAT,GAA4D;AAAA,MAA5CJ,KAA4C,uEAApC;AAAEK,IAAAA,IAAI,EAAE,EAAR;AAAYC,IAAAA,OAAO,EAAE;AAArB,GAAoC;AAAA,MAATL,MAAS;;AAClE,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,oBAAL;AACC,aAAO;AACNG,QAAAA,IAAI,EAAE,EACL,GAAGL,KAAK,CAACK,IADJ;AAEL,aAAG,mBAAOJ,MAAM,CAACG,KAAd,EAAqB,IAArB;AAFE,SADA;AAKNE,QAAAA,OAAO,EAAE,EACR,GAAGN,KAAK,CAACM,OADD;AAER,WAAEL,MAAM,CAACM,OAAT,GAAoB,iBACnBN,MAAM,CAACG,KADY,EAEjBI,IAAF,IAAYA,IAAI,CAACC,EAFE;AAFZ;AALH,OAAP;AAFF;;AAiBA,SAAOT,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASU,WAAT,GAA2C;AAAA,MAArBV,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;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;;;AACO,SAASW,UAAT,GAA0C;AAAA,MAArBX,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;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;;;AACO,SAASY,YAAT,GAAmD;AAAA,MAA5BZ,KAA4B,uEAApBa,SAAoB;AAAA,MAATZ,MAAS;;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;;;AACO,SAASe,qBAAT,GAA4D;AAAA,MAA5Bf,KAA4B,uEAApBa,SAAoB;AAAA,MAATZ,MAAS;;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;;;AACO,SAASgB,qBAAT,GAAqD;AAAA,MAArBhB,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;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,uBAAW,CACjB;AACA;AACA,+BACGlB,MAAF,IACCA,MAAM,CAACmB,IAAP,IACAnB,MAAM,CAACoB,IADP,IAEApB,MAAM,CAACmB,IAAP,KAAgBD,YAAY,CAACC,IAF7B,IAGAnB,MAAM,CAACoB,IAAP,KAAgBF,YAAY,CAACE,IAL/B,CAHiB,EAWjB;AACA,4BAAiBpB,MAAF,IAAc;AAC5B,WAAO,EACN,GAAGA,MADG;AAENqB,MAAAA,GAAG,EAAEH,YAAY,CAACG,GAAb,IAAoBC;AAFnB,KAAP;AAIA,GALD,CAZiB,CAAX,EAmBN,2BAAiB;AAChBC,IAAAA,WAAW,EAAEC,oBADG;AAGhBC,IAAAA,KAAK,EAAE,YAA0B;AAAA;;AAAA,UAAxB1B,KAAwB,uEAAhB,EAAgB;AAAA,UAAZC,MAAY;;AAChC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,eAAL;AACC,gBAAMyB,OAAO,4BAAG1B,MAAH,aAAGA,MAAH,wCAAGA,MAAM,CAAE2B,KAAX,kDAAG,cAAeD,OAAlB,yEAA6B,SAA1C;;AACA,cAAKA,OAAO,KAAK,SAAjB,EAA6B;AAC5B,mBAAO3B,KAAP;AACA;;AAED,gBAAM6B,SAAS,GAAG,EAAE,GAAG7B;AAAL,WAAlB;;AAEA,eAAM,MAAM8B,MAAZ,IAAsB7B,MAAM,CAAC8B,KAA7B,EAAqC;AACpC,kBAAMC,QAAQ,GAAGF,MAAM,CAAE7B,MAAM,CAACqB,GAAT,CAAvB;AACA,kBAAMI,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,EAAOf,GAAP,KAAgB;AACf;AACA;AACA,mBACC;AACA;AACA;AACA,eAAE,qBACDI,KAAK,CAAEJ,GAAF,CADJ,EAED,iBACCQ,MAAM,CAAER,GAAF,CADP,EAEC,KAFD,EAGCQ,MAAM,CAAER,GAAF,CAHP,CAFC,CAAF,MAQA;AACA;AACE,eAAErB,MAAM,CAACqC,cAAT,IACD,CAAE,qBACDZ,KAAK,CAAEJ,GAAF,CADJ,EAEDrB,MAAM,CAACqC,cAAP,CAAuBhB,GAAvB,CAFC,CAXH,CAJD,EAmBE;AACDe,gBAAAA,GAAG,CAAEf,GAAF,CAAH,GAAaI,KAAK,CAAEJ,GAAF,CAAlB;AACA;;AACD,qBAAOe,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,GAAGjC,KAAK,CAAEC,MAAM,CAAC+B,QAAT,CADS;AAEjB,eAAG/B,MAAM,CAACyB;AAFO,WAAlB;AAIAQ,UAAAA,MAAM,CAACC,IAAP,CAAaF,SAAb,EAAyBO,OAAzB,CAAoClB,GAAF,IAAW;AAC5C;AACA;AACA,gBAAKW,SAAS,CAAEX,GAAF,CAAT,KAAqBT,SAA1B,EAAsC;AACrC,qBAAOoB,SAAS,CAAEX,GAAF,CAAhB;AACA;AACD,WAND;AAOA,iBAAO,EACN,GAAGtB,KADG;AAEN,aAAEC,MAAM,CAAC+B,QAAT,GAAqBC;AAFf,WAAP;AApEF;;AA0EA,aAAOjC,KAAP;AACA,KA/Ee;AAiFhByC,IAAAA,MAAM,EAAE,YAA0B;AAAA,UAAxBzC,KAAwB,uEAAhB,EAAgB;AAAA,UAAZC,MAAY;;AACjC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,0BAAL;AACA,aAAK,2BAAL;AACC,iBAAO,EACN,GAAGF,KADG;AAEN,aAAEC,MAAM,CAAC+B,QAAT,GAAqB;AACpBU,cAAAA,OAAO,EACNzC,MAAM,CAACC,IAAP,KAAgB,0BAFG;AAGpByC,cAAAA,KAAK,EAAE1C,MAAM,CAAC0C,KAHM;AAIpBC,cAAAA,UAAU,EAAE3C,MAAM,CAAC2C;AAJC;AAFf,WAAP;AAHF;;AAcA,aAAO5C,KAAP;AACA,KAjGe;AAmGhB6C,IAAAA,QAAQ,EAAE,YAA0B;AAAA,UAAxB7C,KAAwB,uEAAhB,EAAgB;AAAA,UAAZC,MAAY;;AACnC,cAASA,MAAM,CAACC,IAAhB;AACC,aAAK,4BAAL;AACA,aAAK,6BAAL;AACC,iBAAO,EACN,GAAGF,KADG;AAEN,aAAEC,MAAM,CAAC+B,QAAT,GAAqB;AACpBU,cAAAA,OAAO,EACNzC,MAAM,CAACC,IAAP,KACA,4BAHmB;AAIpByC,cAAAA,KAAK,EAAE1C,MAAM,CAAC0C;AAJM;AAFf,WAAP;AAHF;;AAcA,aAAO3C,KAAP;AACA;AAnHe,GAAjB,CAnBM,CAAP;AAyIA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAAS8C,cAAT,GAA2D;AAAA,MAAlC9C,KAAkC,uEAA1B+C,yBAA0B;AAAA,MAAT9C,MAAS;;AACjE,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,cAAL;AACC,aAAO,CAAE,GAAGF,KAAL,EAAY,GAAGC,MAAM,CAAC+C,QAAtB,CAAP;AAFF;;AAKA,SAAOhD,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMgD,QAAQ,GAAG,YAA0B;AAAA,MAAxBhD,KAAwB,uEAAhB,EAAgB;AAAA,MAAZC,MAAY;AACjD,QAAMgD,SAAS,GAAGH,cAAc,CAAE9C,KAAK,CAACkD,MAAR,EAAgBjD,MAAhB,CAAhC,CADiD,CAGjD;;AACA,MAAIkD,mBAAmB,GAAGnD,KAAK,CAACoD,OAAhC;;AACA,MAAK,CAAED,mBAAF,IAAyBF,SAAS,KAAKjD,KAAK,CAACkD,MAAlD,EAA2D;AAC1D,UAAMG,cAAc,GAAG,qBAASJ,SAAT,EAAoB,MAApB,CAAvB;AACAE,IAAAA,mBAAmB,GAAG,2BACrBjB,MAAM,CAACoB,OAAP,CAAgBD,cAAhB,EAAiCjB,MAAjC,CACC,CAAEmB,IAAF,WAAmC;AAAA,UAA3B,CAAElC,IAAF,EAAQmC,WAAR,CAA2B;AAClC,YAAMC,WAAW,GAAG,2BACnBD,WAAW,CAACpB,MAAZ,CACC,CAAEsB,QAAF,EAAYvC,YAAZ,MAAgC,EAC/B,GAAGuC,QAD4B;AAE/B,SAAEvC,YAAY,CAACC,IAAf,GAAuBF,MAAM,CAAEC,YAAF;AAFE,OAAhC,CADD,EAKC,EALD,CADmB,CAApB;AAUAoC,MAAAA,IAAI,CAAElC,IAAF,CAAJ,GAAeoC,WAAf;AACA,aAAOF,IAAP;AACA,KAdF,EAeC,EAfD,CADqB,CAAtB;AAmBA;;AAED,QAAMI,OAAO,GAAGR,mBAAmB,CAAEnD,KAAK,CAAC4D,IAAR,EAAc3D,MAAd,CAAnC;;AAEA,MACC0D,OAAO,KAAK3D,KAAK,CAAC4D,IAAlB,IACAX,SAAS,KAAKjD,KAAK,CAACkD,MADpB,IAEAC,mBAAmB,KAAKnD,KAAK,CAACoD,OAH/B,EAIE;AACD,WAAOpD,KAAP;AACA;;AAED,SAAO;AACNoD,IAAAA,OAAO,EAAED,mBADH;AAENS,IAAAA,IAAI,EAAED,OAFA;AAGNT,IAAAA,MAAM,EAAED;AAHF,GAAP;AAKA,CA3CM;AA6CP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA,MAAMY,kBAAkB,GAAG,EAA3B;AACAA,kBAAkB,CAACC,MAAnB,GAA4B,CAA5B;AACA,IAAIC,cAAJ;;AACO,SAASC,IAAT,GAAoD;AAAA,MAArChE,KAAqC,uEAA7B6D,kBAA6B;AAAA,MAAT5D,MAAS;;AAC1D,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,oBAAL;AACA,SAAK,mBAAL;AACC,UAAI+D,iBAAiB,GAAGhE,MAAM,CAACC,IAAP,KAAgB,mBAAxC;AACA,YAAMgE,YAAY,GACjB,CAAED,iBAAF,KACEhE,MAAM,CAACkE,IAAP,CAAYC,MAAZ,IAAsBnE,MAAM,CAACkE,IAAP,CAAYE,MADpC,CADD;;AAGA,UAAKJ,iBAAL,EAAyB;AACxBhE,QAAAA,MAAM,GAAG8D,cAAT;AACA,OAFD,MAEO,IAAK,CAAEG,YAAP,EAAsB;AAC5B;AACA;AACA;AACA,YACChC,MAAM,CAACC,IAAP,CAAalC,MAAM,CAACyB,KAApB,EAA4B4C,IAA5B,CACGhD,GAAF,IAAW,CAAErB,MAAM,CAACsE,cAAP,CAAuBjD,GAAvB,CADd,CADD,EAIE;AACDyC,UAAAA,cAAc,GAAG9D,MAAjB;AACA,SAND,MAMO;AACN8D,UAAAA,cAAc,GAAG,EAChB,GAAG9D,MADa;AAEhByB,YAAAA,KAAK,EAAE,EACN,IAAKqC,cAAc,IAAIA,cAAc,CAACrC,KAAtC,CADM;AAEN,iBAAGzB,MAAM,CAACyB;AAFJ;AAFS,WAAjB;AAOA;AACD;;AAED,UAAIG,SAAJ;;AACA,UAAKqC,YAAL,EAAoB;AACnBrC,QAAAA,SAAS,GAAG,CAAE,GAAG7B,KAAL,CAAZ;AACA6B,QAAAA,SAAS,CAACiC,MAAV,GACC9D,KAAK,CAAC8D,MAAN,IAAiB7D,MAAM,CAACkE,IAAP,CAAYC,MAAZ,GAAqB,CAAC,CAAtB,GAA0B,CAA3C,CADD;;AAGA,YAAKpE,KAAK,CAACwE,aAAX,EAA2B;AAC1B;AACA;AACA;AACA;AACA;AACAP,UAAAA,iBAAiB,GAAG,IAApB;AACAhE,UAAAA,MAAM,GAAG8D,cAAT;AACA,SARD,MAQO;AACN,iBAAOlC,SAAP;AACA;AACD;;AAED,UAAK,CAAE5B,MAAM,CAACkE,IAAP,CAAYH,IAAnB,EAA0B;AACzB,eAAOhE,KAAP;AACA,OAjDF,CAmDC;AACA;AACA;;;AACA,UACC,CAAEiE,iBAAF,IACA,CAAE/B,MAAM,CAACC,IAAP,CAAalC,MAAM,CAACyB,KAApB,EAA4B4C,IAA5B,CACChD,GAAF,IAAW,CAAErB,MAAM,CAACsE,cAAP,CAAuBjD,GAAvB,CADZ,CAFH,EAKE;AACDO,QAAAA,SAAS,GAAG,CAAE,GAAG7B,KAAL,CAAZ;AACA6B,QAAAA,SAAS,CAAC2C,aAAV,GAA0B,EACzB,GAAGxE,KAAK,CAACwE,aADgB;AAEzB,aAAGvE,MAAM,CAACyB;AAFe,SAA1B;AAIAG,QAAAA,SAAS,CAACiC,MAAV,GAAmB9D,KAAK,CAAC8D,MAAzB;AACA,eAAOjC,SAAP;AACA,OAnEF,CAqEC;;;AACAA,MAAAA,SAAS,GACRA,SAAS,IAAI7B,KAAK,CAACyE,KAAN,CAAa,CAAb,EAAgBzE,KAAK,CAAC8D,MAAN,IAAgBjD,SAAhC,CADd;AAEAgB,MAAAA,SAAS,CAACiC,MAAV,GAAmBjC,SAAS,CAACiC,MAAV,IAAoB,CAAvC;AACAjC,MAAAA,SAAS,CAAC6C,GAAV;;AACA,UAAK,CAAET,iBAAP,EAA2B;AAC1BpC,QAAAA,SAAS,CAAC8C,IAAV,CAAgB;AACftD,UAAAA,IAAI,EAAEpB,MAAM,CAACkE,IAAP,CAAYH,IAAZ,CAAiB3C,IADR;AAEfD,UAAAA,IAAI,EAAEnB,MAAM,CAACkE,IAAP,CAAYH,IAAZ,CAAiB5C,IAFR;AAGfY,UAAAA,QAAQ,EAAE/B,MAAM,CAACkE,IAAP,CAAYH,IAAZ,CAAiBhC,QAHZ;AAIfN,UAAAA,KAAK,EAAE,EACN,GAAG1B,KAAK,CAACwE,aADH;AAEN,eAAGvE,MAAM,CAACkE,IAAP,CAAYH,IAAZ,CAAiBtC;AAFd;AAJQ,SAAhB;AASA,OApFF,CAqFC;AACA;;;AACA,YAAMkD,mBAAmB,GAAG1C,MAAM,CAAC2C,MAAP,CAC3B5E,MAAM,CAACkE,IAAP,CAAYH,IAAZ,CAAiBtC,KADU,EAE1BoD,MAF0B,CAEhBC,IAAF,IAAY,OAAOA,IAAP,KAAgB,UAFV,CAA5B;AAGA,YAAMC,eAAe,GAAG9C,MAAM,CAAC2C,MAAP,CAAe5E,MAAM,CAACyB,KAAtB,EAA8BoD,MAA9B,CACrBC,IAAF,IAAY,OAAOA,IAAP,KAAgB,UADL,CAAxB;;AAGA,UAAK,CAAE,6BAAgBH,mBAAhB,EAAqCI,eAArC,CAAP,EAAgE;AAC/DnD,QAAAA,SAAS,CAAC8C,IAAV,CAAgB;AACftD,UAAAA,IAAI,EAAEpB,MAAM,CAACoB,IADE;AAEfD,UAAAA,IAAI,EAAEnB,MAAM,CAACmB,IAFE;AAGfY,UAAAA,QAAQ,EAAE/B,MAAM,CAAC+B,QAHF;AAIfN,UAAAA,KAAK,EAAEuC,iBAAiB,GACrB,EAAE,GAAGjE,KAAK,CAACwE,aAAX;AAA0B,eAAGvE,MAAM,CAACyB;AAApC,WADqB,GAErBzB,MAAM,CAACyB;AANK,SAAhB;AAQA;;AACD,aAAOG,SAAP;AAzGF;;AA4GA,SAAO7B,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASiF,aAAT,GAA6C;AAAA,MAArBjF,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;AACnD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,uBAAL;AACC,YAAM;AAAEgF,QAAAA,GAAF;AAAOC,QAAAA;AAAP,UAAmBlF,MAAzB;AACA,aAAO,EACN,GAAGD,KADG;AAEN,SAAEkF,GAAF,GAASC;AAFH,OAAP;AAHF;;AAQA,SAAOnF,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASoF,eAAT,GAA+C;AAAA,MAArBpF,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;AACrD,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,yBAAL;AACC,aAAO,EACN,GAAGF,KADG;AAEN,SAAEC,MAAM,CAACqB,GAAT,GAAgBrB,MAAM,CAACoF;AAFjB,OAAP;AAFF;;AAQA,SAAOrF,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASsF,SAAT,GAAyC;AAAA,MAArBtF,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;AAC/C,UAASA,MAAM,CAACC,IAAhB;AACC,SAAK,mBAAL;AACC,YAAM;AAAEqF,QAAAA,MAAF;AAAUD,QAAAA,SAAS,EAAEE;AAArB,UAAuCvF,MAA7C;AAEA,aAAO,EACN,GAAGD,KADG;AAEN,SAAEuF,MAAF,GAAYC;AAFN,OAAP;AAJF;;AAUA,SAAOxF,KAAP;AACA;;eAEc,2BAAiB;AAC/BD,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/BqC,EAAAA,QAR+B;AAS/BgB,EAAAA,IAT+B;AAU/BiB,EAAAA,aAV+B;AAW/BG,EAAAA,eAX+B;AAY/BE,EAAAA;AAZ+B,CAAjB,C","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"]}
|