@wordpress/core-data 4.0.1 → 4.0.5
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 +13 -7
- package/build/actions.js +178 -122
- package/build/actions.js.map +1 -1
- package/build/batch/default-processor.js +58 -27
- package/build/batch/default-processor.js.map +1 -1
- package/build/entities.js +70 -23
- package/build/entities.js.map +1 -1
- package/build/fetch/__experimental-fetch-url-data.js +1 -1
- package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build/index.js +9 -17
- package/build/index.js.map +1 -1
- package/build/locks/actions.js +17 -77
- package/build/locks/actions.js.map +1 -1
- package/build/locks/engine.js +77 -0
- package/build/locks/engine.js.map +1 -0
- package/build/locks/reducer.js +1 -5
- package/build/locks/reducer.js.map +1 -1
- package/build/locks/selectors.js +6 -6
- package/build/locks/selectors.js.map +1 -1
- package/build/queried-data/get-query-parts.js +9 -4
- package/build/queried-data/get-query-parts.js.map +1 -1
- package/build/queried-data/selectors.js +3 -9
- package/build/queried-data/selectors.js.map +1 -1
- package/build/reducer.js +17 -22
- package/build/reducer.js.map +1 -1
- package/build/resolvers.js +151 -97
- package/build/resolvers.js.map +1 -1
- package/build/selectors.js +79 -14
- package/build/selectors.js.map +1 -1
- package/build/utils/forward-resolver.js +23 -0
- package/build/utils/forward-resolver.js.map +1 -0
- package/build/utils/index.js +11 -3
- package/build/utils/index.js.map +1 -1
- package/build/utils/is-raw-attribute.js +19 -0
- package/build/utils/is-raw-attribute.js.map +1 -0
- package/build-module/actions.js +155 -112
- package/build-module/actions.js.map +1 -1
- package/build-module/batch/default-processor.js +57 -27
- package/build-module/batch/default-processor.js.map +1 -1
- package/build-module/entities.js +65 -19
- package/build-module/entities.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-url-data.js +1 -1
- package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build-module/index.js +10 -14
- package/build-module/index.js.map +1 -1
- package/build-module/locks/actions.js +14 -68
- package/build-module/locks/actions.js.map +1 -1
- package/build-module/locks/engine.js +66 -0
- package/build-module/locks/engine.js.map +1 -0
- package/build-module/locks/reducer.js +1 -2
- package/build-module/locks/reducer.js.map +1 -1
- package/build-module/locks/selectors.js +4 -4
- package/build-module/locks/selectors.js.map +1 -1
- package/build-module/queried-data/get-query-parts.js +9 -4
- package/build-module/queried-data/get-query-parts.js.map +1 -1
- package/build-module/queried-data/selectors.js +3 -9
- package/build-module/queried-data/selectors.js.map +1 -1
- package/build-module/reducer.js +15 -19
- package/build-module/reducer.js.map +1 -1
- package/build-module/resolvers.js +123 -81
- package/build-module/resolvers.js.map +1 -1
- package/build-module/selectors.js +74 -13
- package/build-module/selectors.js.map +1 -1
- package/build-module/utils/forward-resolver.js +15 -0
- package/build-module/utils/forward-resolver.js.map +1 -0
- package/build-module/utils/index.js +2 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/is-raw-attribute.js +12 -0
- package/build-module/utils/is-raw-attribute.js.map +1 -0
- package/package.json +10 -11
- package/src/actions.js +163 -194
- package/src/batch/default-processor.js +57 -26
- package/src/batch/test/default-processor.js +53 -26
- package/src/entities.js +47 -19
- package/src/fetch/__experimental-fetch-url-data.js +1 -1
- package/src/index.js +7 -10
- package/src/locks/actions.js +10 -61
- package/src/locks/engine.js +43 -0
- package/src/locks/reducer.js +1 -3
- package/src/locks/selectors.js +4 -4
- package/src/locks/test/engine.js +135 -0
- package/src/locks/test/reducer.js +1 -1
- package/src/locks/test/selectors.js +105 -124
- package/src/queried-data/get-query-parts.js +11 -6
- package/src/queried-data/selectors.js +2 -9
- package/src/queried-data/test/get-query-parts.js +1 -1
- package/src/queried-data/test/selectors.js +1 -0
- package/src/reducer.js +14 -19
- package/src/resolvers.js +132 -120
- package/src/selectors.js +156 -44
- package/src/test/actions.js +330 -170
- package/src/test/entities.js +40 -26
- package/src/test/resolvers.js +270 -223
- package/src/test/selectors.js +127 -1
- package/src/utils/forward-resolver.js +14 -0
- package/src/utils/index.js +2 -1
- package/src/utils/is-raw-attribute.js +11 -0
- package/src/utils/test/is-raw-attribute.js +22 -0
- package/build/controls.js +0 -44
- package/build/controls.js.map +0 -1
- package/build/locks/index.js +0 -47
- package/build/locks/index.js.map +0 -1
- package/build/utils/if-not-resolved.js +0 -46
- package/build/utils/if-not-resolved.js.map +0 -1
- package/build-module/controls.js +0 -31
- package/build-module/controls.js.map +0 -1
- package/build-module/locks/index.js +0 -4
- package/build-module/locks/index.js.map +0 -1
- package/build-module/utils/if-not-resolved.js +0 -36
- package/build-module/utils/if-not-resolved.js.map +0 -1
- package/src/controls.js +0 -31
- package/src/locks/index.js +0 -3
- package/src/locks/test/actions.js +0 -307
- package/src/test/integration.js +0 -264
- package/src/utils/if-not-resolved.js +0 -40
- package/src/utils/test/if-not-resolved.js +0 -75
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","locks","locksReducer"],"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';\nimport { reducer as locksReducer } from './locks';\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\tlocks: locksReducer,\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"]}
|
package/build/resolvers.js
CHANGED
|
@@ -1,42 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.getAuthors =
|
|
7
|
-
exports.getCurrentUser = getCurrentUser;
|
|
8
|
-
exports.getEntityRecord = getEntityRecord;
|
|
9
|
-
exports.getEntityRecords = getEntityRecords;
|
|
10
|
-
exports.getCurrentTheme = getCurrentTheme;
|
|
11
|
-
exports.getThemeSupports = getThemeSupports;
|
|
12
|
-
exports.getEmbedPreview = getEmbedPreview;
|
|
13
|
-
exports.canUser = canUser;
|
|
14
|
-
exports.canUserEditEntityRecord = canUserEditEntityRecord;
|
|
15
|
-
exports.getAutosaves = getAutosaves;
|
|
16
|
-
exports.getAutosave = getAutosave;
|
|
17
|
-
exports.__experimentalGetTemplateForLink = __experimentalGetTemplateForLink;
|
|
18
|
-
exports.getEditedEntityRecord = exports.getRawEntityRecord = void 0;
|
|
8
|
+
exports.__experimentalGetCurrentThemeBaseGlobalStyles = exports.__experimentalGetCurrentGlobalStylesId = exports.__experimentalGetTemplateForLink = exports.getAutosave = exports.getAutosaves = exports.canUserEditEntityRecord = exports.canUser = exports.getEmbedPreview = exports.getThemeSupports = exports.getCurrentTheme = exports.getEntityRecords = exports.getEditedEntityRecord = exports.getRawEntityRecord = exports.getEntityRecord = exports.getCurrentUser = exports.getAuthors = void 0;
|
|
19
9
|
|
|
20
10
|
var _lodash = require("lodash");
|
|
21
11
|
|
|
22
12
|
var _url = require("@wordpress/url");
|
|
23
13
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
var _dataControls = require("@wordpress/data-controls");
|
|
27
|
-
|
|
28
|
-
var _controls = require("./controls");
|
|
14
|
+
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
|
|
29
15
|
|
|
30
16
|
var _name = require("./name");
|
|
31
17
|
|
|
32
|
-
var _actions = require("./actions");
|
|
33
|
-
|
|
34
18
|
var _entities = require("./entities");
|
|
35
19
|
|
|
36
20
|
var _utils = require("./utils");
|
|
37
21
|
|
|
38
|
-
var _locks = require("./locks");
|
|
39
|
-
|
|
40
22
|
/**
|
|
41
23
|
* External dependencies
|
|
42
24
|
*/
|
|
@@ -49,34 +31,36 @@ var _locks = require("./locks");
|
|
|
49
31
|
* Internal dependencies
|
|
50
32
|
*/
|
|
51
33
|
|
|
52
|
-
/**
|
|
53
|
-
* Internal dependencies
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
34
|
/**
|
|
57
35
|
* Requests authors from the REST API.
|
|
58
36
|
*
|
|
59
37
|
* @param {Object|undefined} query Optional object of query parameters to
|
|
60
38
|
* include with request.
|
|
61
39
|
*/
|
|
62
|
-
|
|
40
|
+
const getAuthors = query => async ({
|
|
41
|
+
dispatch
|
|
42
|
+
}) => {
|
|
63
43
|
const path = (0, _url.addQueryArgs)('/wp/v2/users/?who=authors&per_page=100', query);
|
|
64
|
-
const users =
|
|
44
|
+
const users = await (0, _apiFetch.default)({
|
|
65
45
|
path
|
|
66
46
|
});
|
|
67
|
-
|
|
68
|
-
}
|
|
47
|
+
dispatch.receiveUserQuery(path, users);
|
|
48
|
+
};
|
|
69
49
|
/**
|
|
70
50
|
* Requests the current user from the REST API.
|
|
71
51
|
*/
|
|
72
52
|
|
|
73
53
|
|
|
74
|
-
|
|
75
|
-
|
|
54
|
+
exports.getAuthors = getAuthors;
|
|
55
|
+
|
|
56
|
+
const getCurrentUser = () => async ({
|
|
57
|
+
dispatch
|
|
58
|
+
}) => {
|
|
59
|
+
const currentUser = await (0, _apiFetch.default)({
|
|
76
60
|
path: '/wp/v2/users/me'
|
|
77
61
|
});
|
|
78
|
-
|
|
79
|
-
}
|
|
62
|
+
dispatch.receiveCurrentUser(currentUser);
|
|
63
|
+
};
|
|
80
64
|
/**
|
|
81
65
|
* Requests an entity's record from the REST API.
|
|
82
66
|
*
|
|
@@ -88,18 +72,23 @@ function* getCurrentUser() {
|
|
|
88
72
|
*/
|
|
89
73
|
|
|
90
74
|
|
|
91
|
-
|
|
92
|
-
|
|
75
|
+
exports.getCurrentUser = getCurrentUser;
|
|
76
|
+
|
|
77
|
+
const getEntityRecord = (kind, name, key = '', query) => async ({
|
|
78
|
+
select,
|
|
79
|
+
dispatch
|
|
80
|
+
}) => {
|
|
81
|
+
const entities = await dispatch((0, _entities.getKindEntities)(kind));
|
|
93
82
|
const entity = (0, _lodash.find)(entities, {
|
|
94
83
|
kind,
|
|
95
84
|
name
|
|
96
85
|
});
|
|
97
86
|
|
|
98
|
-
if (!entity) {
|
|
87
|
+
if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
|
|
99
88
|
return;
|
|
100
89
|
}
|
|
101
90
|
|
|
102
|
-
const lock =
|
|
91
|
+
const lock = await dispatch.__unstableAcquireStoreLock(_name.STORE_NAME, ['entities', 'data', kind, name, key], {
|
|
103
92
|
exclusive: false
|
|
104
93
|
});
|
|
105
94
|
|
|
@@ -119,7 +108,7 @@ function* getEntityRecord(kind, name, key = '', query) {
|
|
|
119
108
|
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
|
|
120
109
|
|
|
121
110
|
|
|
122
|
-
const path = (0, _url.addQueryArgs)(entity.baseURL + '/' + key, { ...entity.baseURLParams,
|
|
111
|
+
const path = (0, _url.addQueryArgs)(entity.baseURL + (key ? '/' + key : ''), { ...entity.baseURLParams,
|
|
123
112
|
...query
|
|
124
113
|
});
|
|
125
114
|
|
|
@@ -130,35 +119,36 @@ function* getEntityRecord(kind, name, key = '', query) {
|
|
|
130
119
|
// fields, so it's tested here, prior to initiating the REST request,
|
|
131
120
|
// and without causing `getEntityRecords` resolution to occur.
|
|
132
121
|
|
|
133
|
-
const hasRecords =
|
|
122
|
+
const hasRecords = select.hasEntityRecords(kind, name, query);
|
|
134
123
|
|
|
135
124
|
if (hasRecords) {
|
|
136
125
|
return;
|
|
137
126
|
}
|
|
138
127
|
}
|
|
139
128
|
|
|
140
|
-
const record =
|
|
129
|
+
const record = await (0, _apiFetch.default)({
|
|
141
130
|
path
|
|
142
131
|
});
|
|
143
|
-
|
|
132
|
+
dispatch.receiveEntityRecords(kind, name, record, query);
|
|
144
133
|
} catch (error) {// We need a way to handle and access REST API errors in state
|
|
145
134
|
// Until then, catching the error ensures the resolver is marked as resolved.
|
|
146
135
|
} finally {
|
|
147
|
-
|
|
136
|
+
dispatch.__unstableReleaseStoreLock(lock);
|
|
148
137
|
}
|
|
149
|
-
}
|
|
138
|
+
};
|
|
150
139
|
/**
|
|
151
140
|
* Requests an entity's record from the REST API.
|
|
152
141
|
*/
|
|
153
142
|
|
|
154
143
|
|
|
155
|
-
|
|
144
|
+
exports.getEntityRecord = getEntityRecord;
|
|
145
|
+
const getRawEntityRecord = (0, _utils.forwardResolver)('getEntityRecord');
|
|
156
146
|
/**
|
|
157
147
|
* Requests an entity's record from the REST API.
|
|
158
148
|
*/
|
|
159
149
|
|
|
160
150
|
exports.getRawEntityRecord = getRawEntityRecord;
|
|
161
|
-
const getEditedEntityRecord = (0, _utils.
|
|
151
|
+
const getEditedEntityRecord = (0, _utils.forwardResolver)('getEntityRecord');
|
|
162
152
|
/**
|
|
163
153
|
* Requests the entity's records from the REST API.
|
|
164
154
|
*
|
|
@@ -169,18 +159,20 @@ const getEditedEntityRecord = (0, _utils.ifNotResolved)(getRawEntityRecord, 'get
|
|
|
169
159
|
|
|
170
160
|
exports.getEditedEntityRecord = getEditedEntityRecord;
|
|
171
161
|
|
|
172
|
-
|
|
173
|
-
|
|
162
|
+
const getEntityRecords = (kind, name, query = {}) => async ({
|
|
163
|
+
dispatch
|
|
164
|
+
}) => {
|
|
165
|
+
const entities = await dispatch((0, _entities.getKindEntities)(kind));
|
|
174
166
|
const entity = (0, _lodash.find)(entities, {
|
|
175
167
|
kind,
|
|
176
168
|
name
|
|
177
169
|
});
|
|
178
170
|
|
|
179
|
-
if (!entity) {
|
|
171
|
+
if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
|
|
180
172
|
return;
|
|
181
173
|
}
|
|
182
174
|
|
|
183
|
-
const lock =
|
|
175
|
+
const lock = await dispatch.__unstableAcquireStoreLock(_name.STORE_NAME, ['entities', 'data', kind, name], {
|
|
184
176
|
exclusive: false
|
|
185
177
|
});
|
|
186
178
|
|
|
@@ -199,7 +191,7 @@ function* getEntityRecords(kind, name, query = {}) {
|
|
|
199
191
|
const path = (0, _url.addQueryArgs)(entity.baseURL, { ...entity.baseURLParams,
|
|
200
192
|
...query
|
|
201
193
|
});
|
|
202
|
-
let records = Object.values(
|
|
194
|
+
let records = Object.values(await (0, _apiFetch.default)({
|
|
203
195
|
path
|
|
204
196
|
})); // If we request fields but the result doesn't contain the fields,
|
|
205
197
|
// explicitely set these fields as "undefined"
|
|
@@ -217,28 +209,30 @@ function* getEntityRecords(kind, name, query = {}) {
|
|
|
217
209
|
});
|
|
218
210
|
}
|
|
219
211
|
|
|
220
|
-
|
|
212
|
+
dispatch.receiveEntityRecords(kind, name, records, query); // When requesting all fields, the list of results can be used to
|
|
221
213
|
// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.
|
|
222
214
|
// See https://github.com/WordPress/gutenberg/pull/26575
|
|
223
215
|
|
|
224
216
|
if (!((_query = query) !== null && _query !== void 0 && _query._fields) && !query.context) {
|
|
225
217
|
const key = entity.key || _entities.DEFAULT_ENTITY_KEY;
|
|
226
218
|
const resolutionsArgs = records.filter(record => record[key]).map(record => [kind, name, record[key]]);
|
|
227
|
-
|
|
219
|
+
dispatch({
|
|
228
220
|
type: 'START_RESOLUTIONS',
|
|
229
221
|
selectorName: 'getEntityRecord',
|
|
230
222
|
args: resolutionsArgs
|
|
231
|
-
};
|
|
232
|
-
|
|
223
|
+
});
|
|
224
|
+
dispatch({
|
|
233
225
|
type: 'FINISH_RESOLUTIONS',
|
|
234
226
|
selectorName: 'getEntityRecord',
|
|
235
227
|
args: resolutionsArgs
|
|
236
|
-
};
|
|
228
|
+
});
|
|
237
229
|
}
|
|
238
230
|
} finally {
|
|
239
|
-
|
|
231
|
+
dispatch.__unstableReleaseStoreLock(lock);
|
|
240
232
|
}
|
|
241
|
-
}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
exports.getEntityRecords = getEntityRecords;
|
|
242
236
|
|
|
243
237
|
getEntityRecords.shouldInvalidate = (action, kind, name) => {
|
|
244
238
|
return (action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS') && action.invalidateCache && kind === action.kind && name === action.name;
|
|
@@ -248,43 +242,45 @@ getEntityRecords.shouldInvalidate = (action, kind, name) => {
|
|
|
248
242
|
*/
|
|
249
243
|
|
|
250
244
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
245
|
+
const getCurrentTheme = () => async ({
|
|
246
|
+
dispatch,
|
|
247
|
+
resolveSelect
|
|
248
|
+
}) => {
|
|
249
|
+
const activeThemes = await resolveSelect.getEntityRecords('root', 'theme', {
|
|
250
|
+
status: 'active'
|
|
254
251
|
});
|
|
255
|
-
|
|
256
|
-
}
|
|
252
|
+
dispatch.receiveCurrentTheme(activeThemes[0]);
|
|
253
|
+
};
|
|
257
254
|
/**
|
|
258
255
|
* Requests theme supports data from the index.
|
|
259
256
|
*/
|
|
260
257
|
|
|
261
258
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
path: '/wp/v2/themes?status=active'
|
|
265
|
-
});
|
|
266
|
-
yield (0, _actions.receiveThemeSupports)(activeThemes[0].theme_supports);
|
|
267
|
-
}
|
|
259
|
+
exports.getCurrentTheme = getCurrentTheme;
|
|
260
|
+
const getThemeSupports = (0, _utils.forwardResolver)('getCurrentTheme');
|
|
268
261
|
/**
|
|
269
262
|
* Requests a preview from the from the Embed API.
|
|
270
263
|
*
|
|
271
264
|
* @param {string} url URL to get the preview for.
|
|
272
265
|
*/
|
|
273
266
|
|
|
267
|
+
exports.getThemeSupports = getThemeSupports;
|
|
274
268
|
|
|
275
|
-
|
|
269
|
+
const getEmbedPreview = url => async ({
|
|
270
|
+
dispatch
|
|
271
|
+
}) => {
|
|
276
272
|
try {
|
|
277
|
-
const embedProxyResponse =
|
|
273
|
+
const embedProxyResponse = await (0, _apiFetch.default)({
|
|
278
274
|
path: (0, _url.addQueryArgs)('/oembed/1.0/proxy', {
|
|
279
275
|
url
|
|
280
276
|
})
|
|
281
277
|
});
|
|
282
|
-
|
|
278
|
+
dispatch.receiveEmbedPreview(url, embedProxyResponse);
|
|
283
279
|
} catch (error) {
|
|
284
280
|
// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.
|
|
285
|
-
|
|
281
|
+
dispatch.receiveEmbedPreview(url, false);
|
|
286
282
|
}
|
|
287
|
-
}
|
|
283
|
+
};
|
|
288
284
|
/**
|
|
289
285
|
* Checks whether the current user can perform the given action on the given
|
|
290
286
|
* REST resource.
|
|
@@ -296,7 +292,11 @@ function* getEmbedPreview(url) {
|
|
|
296
292
|
*/
|
|
297
293
|
|
|
298
294
|
|
|
299
|
-
|
|
295
|
+
exports.getEmbedPreview = getEmbedPreview;
|
|
296
|
+
|
|
297
|
+
const canUser = (action, resource, id) => async ({
|
|
298
|
+
dispatch
|
|
299
|
+
}) => {
|
|
300
300
|
const methods = {
|
|
301
301
|
create: 'POST',
|
|
302
302
|
read: 'GET',
|
|
@@ -313,7 +313,7 @@ function* canUser(action, resource, id) {
|
|
|
313
313
|
let response;
|
|
314
314
|
|
|
315
315
|
try {
|
|
316
|
-
response =
|
|
316
|
+
response = await (0, _apiFetch.default)({
|
|
317
317
|
path,
|
|
318
318
|
// Ideally this would always be an OPTIONS request, but unfortunately there's
|
|
319
319
|
// a bug in the REST API which causes the Allow header to not be sent on
|
|
@@ -342,8 +342,8 @@ function* canUser(action, resource, id) {
|
|
|
342
342
|
|
|
343
343
|
const key = (0, _lodash.compact)([action, resource, id]).join('/');
|
|
344
344
|
const isAllowed = (0, _lodash.includes)(allowHeader, method);
|
|
345
|
-
|
|
346
|
-
}
|
|
345
|
+
dispatch.receiveUserPermission(key, isAllowed);
|
|
346
|
+
};
|
|
347
347
|
/**
|
|
348
348
|
* Checks whether the current user can perform the given action on the given
|
|
349
349
|
* REST resource.
|
|
@@ -354,8 +354,12 @@ function* canUser(action, resource, id) {
|
|
|
354
354
|
*/
|
|
355
355
|
|
|
356
356
|
|
|
357
|
-
|
|
358
|
-
|
|
357
|
+
exports.canUser = canUser;
|
|
358
|
+
|
|
359
|
+
const canUserEditEntityRecord = (kind, name, recordId) => async ({
|
|
360
|
+
dispatch
|
|
361
|
+
}) => {
|
|
362
|
+
const entities = await dispatch((0, _entities.getKindEntities)(kind));
|
|
359
363
|
const entity = (0, _lodash.find)(entities, {
|
|
360
364
|
kind,
|
|
361
365
|
name
|
|
@@ -366,8 +370,8 @@ function* canUserEditEntityRecord(kind, name, recordId) {
|
|
|
366
370
|
}
|
|
367
371
|
|
|
368
372
|
const resource = entity.__unstable_rest_base;
|
|
369
|
-
|
|
370
|
-
}
|
|
373
|
+
await dispatch(canUser('update', resource, recordId));
|
|
374
|
+
};
|
|
371
375
|
/**
|
|
372
376
|
* Request autosave data from the REST API.
|
|
373
377
|
*
|
|
@@ -376,18 +380,23 @@ function* canUserEditEntityRecord(kind, name, recordId) {
|
|
|
376
380
|
*/
|
|
377
381
|
|
|
378
382
|
|
|
379
|
-
|
|
383
|
+
exports.canUserEditEntityRecord = canUserEditEntityRecord;
|
|
384
|
+
|
|
385
|
+
const getAutosaves = (postType, postId) => async ({
|
|
386
|
+
dispatch,
|
|
387
|
+
resolveSelect
|
|
388
|
+
}) => {
|
|
380
389
|
const {
|
|
381
390
|
rest_base: restBase
|
|
382
|
-
} =
|
|
383
|
-
const autosaves =
|
|
391
|
+
} = await resolveSelect.getPostType(postType);
|
|
392
|
+
const autosaves = await (0, _apiFetch.default)({
|
|
384
393
|
path: `/wp/v2/${restBase}/${postId}/autosaves?context=edit`
|
|
385
394
|
});
|
|
386
395
|
|
|
387
396
|
if (autosaves && autosaves.length) {
|
|
388
|
-
|
|
397
|
+
dispatch.receiveAutosaves(postId, autosaves);
|
|
389
398
|
}
|
|
390
|
-
}
|
|
399
|
+
};
|
|
391
400
|
/**
|
|
392
401
|
* Request autosave data from the REST API.
|
|
393
402
|
*
|
|
@@ -399,9 +408,13 @@ function* getAutosaves(postType, postId) {
|
|
|
399
408
|
*/
|
|
400
409
|
|
|
401
410
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
411
|
+
exports.getAutosaves = getAutosaves;
|
|
412
|
+
|
|
413
|
+
const getAutosave = (postType, postId) => async ({
|
|
414
|
+
resolveSelect
|
|
415
|
+
}) => {
|
|
416
|
+
await resolveSelect.getAutosaves(postType, postId);
|
|
417
|
+
};
|
|
405
418
|
/**
|
|
406
419
|
* Retrieve the frontend template used for a given link.
|
|
407
420
|
*
|
|
@@ -409,16 +422,23 @@ function* getAutosave(postType, postId) {
|
|
|
409
422
|
*/
|
|
410
423
|
|
|
411
424
|
|
|
412
|
-
|
|
425
|
+
exports.getAutosave = getAutosave;
|
|
426
|
+
|
|
427
|
+
const __experimentalGetTemplateForLink = link => async ({
|
|
428
|
+
dispatch,
|
|
429
|
+
resolveSelect
|
|
430
|
+
}) => {
|
|
413
431
|
// Ideally this should be using an apiFetch call
|
|
414
432
|
// We could potentially do so by adding a "filter" to the `wp_template` end point.
|
|
415
433
|
// Also it seems the returned object is not a regular REST API post type.
|
|
416
434
|
let template;
|
|
417
435
|
|
|
418
436
|
try {
|
|
419
|
-
template =
|
|
437
|
+
template = await window.fetch((0, _url.addQueryArgs)(link, {
|
|
420
438
|
'_wp-find-template': true
|
|
421
|
-
}))
|
|
439
|
+
})).then(res => res.json()).then(({
|
|
440
|
+
data
|
|
441
|
+
}) => data);
|
|
422
442
|
} catch (e) {// For non-FSE themes, it is possible that this request returns an error.
|
|
423
443
|
}
|
|
424
444
|
|
|
@@ -426,17 +446,51 @@ function* __experimentalGetTemplateForLink(link) {
|
|
|
426
446
|
return;
|
|
427
447
|
}
|
|
428
448
|
|
|
429
|
-
|
|
430
|
-
const record = yield _data.controls.select(_name.STORE_NAME, 'getEntityRecord', 'postType', 'wp_template', template.id);
|
|
449
|
+
const record = await resolveSelect.getEntityRecord('postType', 'wp_template', template.id);
|
|
431
450
|
|
|
432
451
|
if (record) {
|
|
433
|
-
|
|
452
|
+
dispatch.receiveEntityRecords('postType', 'wp_template', [record], {
|
|
434
453
|
'find-template': link
|
|
435
454
|
});
|
|
436
455
|
}
|
|
437
|
-
}
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
exports.__experimentalGetTemplateForLink = __experimentalGetTemplateForLink;
|
|
438
459
|
|
|
439
460
|
__experimentalGetTemplateForLink.shouldInvalidate = action => {
|
|
440
461
|
return (action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS') && action.invalidateCache && action.kind === 'postType' && action.name === 'wp_template';
|
|
441
462
|
};
|
|
463
|
+
|
|
464
|
+
const __experimentalGetCurrentGlobalStylesId = () => async ({
|
|
465
|
+
dispatch,
|
|
466
|
+
resolveSelect
|
|
467
|
+
}) => {
|
|
468
|
+
const activeThemes = await resolveSelect.getEntityRecords('root', 'theme', {
|
|
469
|
+
status: 'active'
|
|
470
|
+
});
|
|
471
|
+
const globalStylesURL = (0, _lodash.get)(activeThemes, [0, '_links', 'wp:user-global-styles', 0, 'href']);
|
|
472
|
+
|
|
473
|
+
if (globalStylesURL) {
|
|
474
|
+
const globalStylesObject = await (0, _apiFetch.default)({
|
|
475
|
+
url: globalStylesURL
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
dispatch.__experimentalReceiveCurrentGlobalStylesId(globalStylesObject.id);
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
exports.__experimentalGetCurrentGlobalStylesId = __experimentalGetCurrentGlobalStylesId;
|
|
483
|
+
|
|
484
|
+
const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ({
|
|
485
|
+
resolveSelect,
|
|
486
|
+
dispatch
|
|
487
|
+
}) => {
|
|
488
|
+
const currentTheme = await resolveSelect.getCurrentTheme();
|
|
489
|
+
const themeGlobalStyles = await (0, _apiFetch.default)({
|
|
490
|
+
path: `/wp/v2/global-styles/themes/${currentTheme.stylesheet}`
|
|
491
|
+
});
|
|
492
|
+
await dispatch.__experimentalReceiveThemeBaseGlobalStyles(currentTheme.stylesheet, themeGlobalStyles);
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
exports.__experimentalGetCurrentThemeBaseGlobalStyles = __experimentalGetCurrentThemeBaseGlobalStyles;
|
|
442
496
|
//# sourceMappingURL=resolvers.js.map
|