@wordpress/core-data 4.0.6 → 4.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/build/actions.js +269 -244
  2. package/build/actions.js.map +1 -1
  3. package/build/batch/create-batch.js +17 -9
  4. package/build/batch/create-batch.js.map +1 -1
  5. package/build/entities.js +9 -6
  6. package/build/entities.js.map +1 -1
  7. package/build/entity-provider.js +18 -13
  8. package/build/entity-provider.js.map +1 -1
  9. package/build/fetch/__experimental-fetch-link-suggestions.js +3 -1
  10. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  11. package/build/fetch/__experimental-fetch-url-data.js +2 -1
  12. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  13. package/build/index.js +25 -5
  14. package/build/index.js.map +1 -1
  15. package/build/locks/actions.js +4 -3
  16. package/build/locks/actions.js.map +1 -1
  17. package/build/locks/reducer.js +4 -1
  18. package/build/locks/reducer.js.map +1 -1
  19. package/build/locks/selectors.js +4 -3
  20. package/build/locks/selectors.js.map +1 -1
  21. package/build/locks/utils.js +7 -5
  22. package/build/locks/utils.js.map +1 -1
  23. package/build/queried-data/actions.js +6 -3
  24. package/build/queried-data/actions.js.map +1 -1
  25. package/build/queried-data/get-query-parts.js +1 -1
  26. package/build/queried-data/reducer.js +17 -6
  27. package/build/queried-data/reducer.js.map +1 -1
  28. package/build/queried-data/selectors.js +2 -1
  29. package/build/queried-data/selectors.js.map +1 -1
  30. package/build/reducer.js +77 -28
  31. package/build/reducer.js.map +1 -1
  32. package/build/resolvers.js +186 -162
  33. package/build/resolvers.js.map +1 -1
  34. package/build/selectors.js +29 -21
  35. package/build/selectors.js.map +1 -1
  36. package/build/utils/forward-resolver.js +11 -4
  37. package/build/utils/forward-resolver.js.map +1 -1
  38. package/build/utils/index.js +8 -8
  39. package/build/utils/on-sub-key.js +4 -2
  40. package/build/utils/on-sub-key.js.map +1 -1
  41. package/build-module/actions.js +257 -235
  42. package/build-module/actions.js.map +1 -1
  43. package/build-module/batch/create-batch.js +17 -9
  44. package/build-module/batch/create-batch.js.map +1 -1
  45. package/build-module/entities.js +8 -5
  46. package/build-module/entities.js.map +1 -1
  47. package/build-module/entity-provider.js +17 -12
  48. package/build-module/entity-provider.js.map +1 -1
  49. package/build-module/fetch/__experimental-fetch-link-suggestions.js +3 -1
  50. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  51. package/build-module/fetch/__experimental-fetch-url-data.js +2 -1
  52. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  53. package/build-module/index.js +21 -3
  54. package/build-module/index.js.map +1 -1
  55. package/build-module/locks/actions.js +4 -3
  56. package/build-module/locks/actions.js.map +1 -1
  57. package/build-module/locks/reducer.js +4 -1
  58. package/build-module/locks/reducer.js.map +1 -1
  59. package/build-module/locks/selectors.js +4 -3
  60. package/build-module/locks/selectors.js.map +1 -1
  61. package/build-module/locks/utils.js +5 -3
  62. package/build-module/locks/utils.js.map +1 -1
  63. package/build-module/queried-data/actions.js +5 -2
  64. package/build-module/queried-data/actions.js.map +1 -1
  65. package/build-module/queried-data/reducer.js +15 -4
  66. package/build-module/queried-data/reducer.js.map +1 -1
  67. package/build-module/queried-data/selectors.js +2 -1
  68. package/build-module/queried-data/selectors.js.map +1 -1
  69. package/build-module/reducer.js +68 -20
  70. package/build-module/reducer.js.map +1 -1
  71. package/build-module/resolvers.js +185 -161
  72. package/build-module/resolvers.js.map +1 -1
  73. package/build-module/utils/forward-resolver.js +11 -4
  74. package/build-module/utils/forward-resolver.js.map +1 -1
  75. package/build-module/utils/on-sub-key.js +3 -1
  76. package/build-module/utils/on-sub-key.js.map +1 -1
  77. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","defaultEntities","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","data","UNDO_INITIAL_STATE","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { defaultEntities, DEFAULT_ENTITY_KEY } from './entities';\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {Function} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = defaultEntities, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.data, action );\n\n\tif (\n\t\tnewData === state.data &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\tdata: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nconst UNDO_INITIAL_STATE = [];\nUNDO_INITIAL_STATE.offset = 0;\nlet lastEditAction;\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet nextState;\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","defaultEntities","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","data","UNDO_INITIAL_STATE","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { defaultEntities, DEFAULT_ENTITY_KEY } from './entities';\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {string} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {Function} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = defaultEntities, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.data, action );\n\n\tif (\n\t\tnewData === state.data &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\tdata: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nconst UNDO_INITIAL_STATE = [];\nUNDO_INITIAL_STATE.offset = 0;\nlet lastEditAction;\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet nextState;\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n} );\n"]}
@@ -22,9 +22,10 @@ import { forwardResolver, getNormalizedCommaSeparable } from './utils';
22
22
  * include with request.
23
23
  */
24
24
 
25
- export const getAuthors = query => async ({
26
- dispatch
27
- }) => {
25
+ export const getAuthors = query => async _ref => {
26
+ let {
27
+ dispatch
28
+ } = _ref;
28
29
  const path = addQueryArgs('/wp/v2/users/?who=authors&per_page=100', query);
29
30
  const users = await apiFetch({
30
31
  path
@@ -35,9 +36,10 @@ export const getAuthors = query => async ({
35
36
  * Requests the current user from the REST API.
36
37
  */
37
38
 
38
- export const getCurrentUser = () => async ({
39
- dispatch
40
- }) => {
39
+ export const getCurrentUser = () => async _ref2 => {
40
+ let {
41
+ dispatch
42
+ } = _ref2;
41
43
  const currentUser = await apiFetch({
42
44
  path: '/wp/v2/users/me'
43
45
  });
@@ -53,68 +55,73 @@ export const getCurrentUser = () => async ({
53
55
  * include with request.
54
56
  */
55
57
 
56
- export const getEntityRecord = (kind, name, key = '', query) => async ({
57
- select,
58
- dispatch
59
- }) => {
60
- const entities = await dispatch(getKindEntities(kind));
61
- const entity = find(entities, {
62
- kind,
63
- name
64
- });
65
-
66
- if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
67
- return;
68
- }
58
+ export const getEntityRecord = function (kind, name) {
59
+ let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
60
+ let query = arguments.length > 3 ? arguments[3] : undefined;
61
+ return async _ref3 => {
62
+ let {
63
+ select,
64
+ dispatch
65
+ } = _ref3;
66
+ const entities = await dispatch(getKindEntities(kind));
67
+ const entity = find(entities, {
68
+ kind,
69
+ name
70
+ });
69
71
 
70
- const lock = await dispatch.__unstableAcquireStoreLock(STORE_NAME, ['entities', 'data', kind, name, key], {
71
- exclusive: false
72
- });
72
+ if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
73
+ return;
74
+ }
73
75
 
74
- try {
75
- if (query !== undefined && query._fields) {
76
- // If requesting specific fields, items and query association to said
77
- // records are stored by ID reference. Thus, fields must always include
78
- // the ID.
79
- query = { ...query,
80
- _fields: uniq([...(getNormalizedCommaSeparable(query._fields) || []), entity.key || DEFAULT_ENTITY_KEY]).join()
81
- };
82
- } // Disable reason: While true that an early return could leave `path`
83
- // unused, it's important that path is derived using the query prior to
84
- // additional query modifications in the condition below, since those
85
- // modifications are relevant to how the data is tracked in state, and not
86
- // for how the request is made to the REST API.
87
- // eslint-disable-next-line @wordpress/no-unused-vars-before-return
88
-
89
-
90
- const path = addQueryArgs(entity.baseURL + (key ? '/' + key : ''), { ...entity.baseURLParams,
91
- ...query
76
+ const lock = await dispatch.__unstableAcquireStoreLock(STORE_NAME, ['entities', 'data', kind, name, key], {
77
+ exclusive: false
92
78
  });
93
79
 
94
- if (query !== undefined) {
95
- query = { ...query,
96
- include: [key]
97
- }; // The resolution cache won't consider query as reusable based on the
98
- // fields, so it's tested here, prior to initiating the REST request,
99
- // and without causing `getEntityRecords` resolution to occur.
80
+ try {
81
+ if (query !== undefined && query._fields) {
82
+ // If requesting specific fields, items and query association to said
83
+ // records are stored by ID reference. Thus, fields must always include
84
+ // the ID.
85
+ query = { ...query,
86
+ _fields: uniq([...(getNormalizedCommaSeparable(query._fields) || []), entity.key || DEFAULT_ENTITY_KEY]).join()
87
+ };
88
+ } // Disable reason: While true that an early return could leave `path`
89
+ // unused, it's important that path is derived using the query prior to
90
+ // additional query modifications in the condition below, since those
91
+ // modifications are relevant to how the data is tracked in state, and not
92
+ // for how the request is made to the REST API.
93
+ // eslint-disable-next-line @wordpress/no-unused-vars-before-return
94
+
95
+
96
+ const path = addQueryArgs(entity.baseURL + (key ? '/' + key : ''), { ...entity.baseURLParams,
97
+ ...query
98
+ });
99
+
100
+ if (query !== undefined) {
101
+ query = { ...query,
102
+ include: [key]
103
+ }; // The resolution cache won't consider query as reusable based on the
104
+ // fields, so it's tested here, prior to initiating the REST request,
105
+ // and without causing `getEntityRecords` resolution to occur.
100
106
 
101
- const hasRecords = select.hasEntityRecords(kind, name, query);
107
+ const hasRecords = select.hasEntityRecords(kind, name, query);
102
108
 
103
- if (hasRecords) {
104
- return;
109
+ if (hasRecords) {
110
+ return;
111
+ }
105
112
  }
106
- }
107
113
 
108
- const record = await apiFetch({
109
- path
110
- });
111
- dispatch.receiveEntityRecords(kind, name, record, query);
112
- } catch (error) {// We need a way to handle and access REST API errors in state
113
- // Until then, catching the error ensures the resolver is marked as resolved.
114
- // See similar implementation in `getEntityRecords()`.
115
- } finally {
116
- dispatch.__unstableReleaseStoreLock(lock);
117
- }
114
+ const record = await apiFetch({
115
+ path
116
+ });
117
+ dispatch.receiveEntityRecords(kind, name, record, query);
118
+ } catch (error) {// We need a way to handle and access REST API errors in state
119
+ // Until then, catching the error ensures the resolver is marked as resolved.
120
+ // See similar implementation in `getEntityRecords()`.
121
+ } finally {
122
+ dispatch.__unstableReleaseStoreLock(lock);
123
+ }
124
+ };
118
125
  };
119
126
  /**
120
127
  * Requests an entity's record from the REST API.
@@ -134,80 +141,84 @@ export const getEditedEntityRecord = forwardResolver('getEntityRecord');
134
141
  * @param {Object?} query Query Object.
135
142
  */
136
143
 
137
- export const getEntityRecords = (kind, name, query = {}) => async ({
138
- dispatch
139
- }) => {
140
- const entities = await dispatch(getKindEntities(kind));
141
- const entity = find(entities, {
142
- kind,
143
- name
144
- });
145
-
146
- if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
147
- return;
148
- }
149
-
150
- const lock = await dispatch.__unstableAcquireStoreLock(STORE_NAME, ['entities', 'data', kind, name], {
151
- exclusive: false
152
- });
144
+ export const getEntityRecords = function (kind, name) {
145
+ let query = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
146
+ return async _ref4 => {
147
+ let {
148
+ dispatch
149
+ } = _ref4;
150
+ const entities = await dispatch(getKindEntities(kind));
151
+ const entity = find(entities, {
152
+ kind,
153
+ name
154
+ });
153
155
 
154
- try {
155
- var _query;
156
-
157
- if (query._fields) {
158
- // If requesting specific fields, items and query association to said
159
- // records are stored by ID reference. Thus, fields must always include
160
- // the ID.
161
- query = { ...query,
162
- _fields: uniq([...(getNormalizedCommaSeparable(query._fields) || []), entity.key || DEFAULT_ENTITY_KEY]).join()
163
- };
156
+ if (!entity || entity !== null && entity !== void 0 && entity.__experimentalNoFetch) {
157
+ return;
164
158
  }
165
159
 
166
- const path = addQueryArgs(entity.baseURL, { ...entity.baseURLParams,
167
- ...query
160
+ const lock = await dispatch.__unstableAcquireStoreLock(STORE_NAME, ['entities', 'data', kind, name], {
161
+ exclusive: false
168
162
  });
169
- let records = Object.values(await apiFetch({
170
- path
171
- })); // If we request fields but the result doesn't contain the fields,
172
- // explicitely set these fields as "undefined"
173
- // that way we consider the query "fullfilled".
174
-
175
- if (query._fields) {
176
- records = records.map(record => {
177
- query._fields.split(',').forEach(field => {
178
- if (!record.hasOwnProperty(field)) {
179
- record[field] = undefined;
180
- }
181
- });
182
163
 
183
- return record;
184
- });
185
- }
164
+ try {
165
+ var _query;
186
166
 
187
- dispatch.receiveEntityRecords(kind, name, records, query); // When requesting all fields, the list of results can be used to
188
- // resolve the `getEntityRecord` selector in addition to `getEntityRecords`.
189
- // See https://github.com/WordPress/gutenberg/pull/26575
190
-
191
- if (!((_query = query) !== null && _query !== void 0 && _query._fields) && !query.context) {
192
- const key = entity.key || DEFAULT_ENTITY_KEY;
193
- const resolutionsArgs = records.filter(record => record[key]).map(record => [kind, name, record[key]]);
194
- dispatch({
195
- type: 'START_RESOLUTIONS',
196
- selectorName: 'getEntityRecord',
197
- args: resolutionsArgs
198
- });
199
- dispatch({
200
- type: 'FINISH_RESOLUTIONS',
201
- selectorName: 'getEntityRecord',
202
- args: resolutionsArgs
167
+ if (query._fields) {
168
+ // If requesting specific fields, items and query association to said
169
+ // records are stored by ID reference. Thus, fields must always include
170
+ // the ID.
171
+ query = { ...query,
172
+ _fields: uniq([...(getNormalizedCommaSeparable(query._fields) || []), entity.key || DEFAULT_ENTITY_KEY]).join()
173
+ };
174
+ }
175
+
176
+ const path = addQueryArgs(entity.baseURL, { ...entity.baseURLParams,
177
+ ...query
203
178
  });
179
+ let records = Object.values(await apiFetch({
180
+ path
181
+ })); // If we request fields but the result doesn't contain the fields,
182
+ // explicitely set these fields as "undefined"
183
+ // that way we consider the query "fullfilled".
184
+
185
+ if (query._fields) {
186
+ records = records.map(record => {
187
+ query._fields.split(',').forEach(field => {
188
+ if (!record.hasOwnProperty(field)) {
189
+ record[field] = undefined;
190
+ }
191
+ });
192
+
193
+ return record;
194
+ });
195
+ }
196
+
197
+ dispatch.receiveEntityRecords(kind, name, records, query); // When requesting all fields, the list of results can be used to
198
+ // resolve the `getEntityRecord` selector in addition to `getEntityRecords`.
199
+ // See https://github.com/WordPress/gutenberg/pull/26575
200
+
201
+ if (!((_query = query) !== null && _query !== void 0 && _query._fields) && !query.context) {
202
+ const key = entity.key || DEFAULT_ENTITY_KEY;
203
+ const resolutionsArgs = records.filter(record => record[key]).map(record => [kind, name, record[key]]);
204
+ dispatch({
205
+ type: 'START_RESOLUTIONS',
206
+ selectorName: 'getEntityRecord',
207
+ args: resolutionsArgs
208
+ });
209
+ dispatch({
210
+ type: 'FINISH_RESOLUTIONS',
211
+ selectorName: 'getEntityRecord',
212
+ args: resolutionsArgs
213
+ });
214
+ }
215
+ } catch (error) {// We need a way to handle and access REST API errors in state
216
+ // Until then, catching the error ensures the resolver is marked as resolved.
217
+ // See similar implementation in `getEntityRecord()`.
218
+ } finally {
219
+ dispatch.__unstableReleaseStoreLock(lock);
204
220
  }
205
- } catch (error) {// We need a way to handle and access REST API errors in state
206
- // Until then, catching the error ensures the resolver is marked as resolved.
207
- // See similar implementation in `getEntityRecord()`.
208
- } finally {
209
- dispatch.__unstableReleaseStoreLock(lock);
210
- }
221
+ };
211
222
  };
212
223
 
213
224
  getEntityRecords.shouldInvalidate = (action, kind, name) => {
@@ -218,10 +229,11 @@ getEntityRecords.shouldInvalidate = (action, kind, name) => {
218
229
  */
219
230
 
220
231
 
221
- export const getCurrentTheme = () => async ({
222
- dispatch,
223
- resolveSelect
224
- }) => {
232
+ export const getCurrentTheme = () => async _ref5 => {
233
+ let {
234
+ dispatch,
235
+ resolveSelect
236
+ } = _ref5;
225
237
  const activeThemes = await resolveSelect.getEntityRecords('root', 'theme', {
226
238
  status: 'active'
227
239
  });
@@ -238,9 +250,11 @@ export const getThemeSupports = forwardResolver('getCurrentTheme');
238
250
  * @param {string} url URL to get the preview for.
239
251
  */
240
252
 
241
- export const getEmbedPreview = url => async ({
242
- dispatch
243
- }) => {
253
+ export const getEmbedPreview = url => async _ref6 => {
254
+ let {
255
+ dispatch
256
+ } = _ref6;
257
+
244
258
  try {
245
259
  const embedProxyResponse = await apiFetch({
246
260
  path: addQueryArgs('/oembed/1.0/proxy', {
@@ -263,9 +277,10 @@ export const getEmbedPreview = url => async ({
263
277
  * @param {?string} id ID of the rest resource to check.
264
278
  */
265
279
 
266
- export const canUser = (action, resource, id) => async ({
267
- dispatch
268
- }) => {
280
+ export const canUser = (action, resource, id) => async _ref7 => {
281
+ let {
282
+ dispatch
283
+ } = _ref7;
269
284
  const methods = {
270
285
  create: 'POST',
271
286
  read: 'GET',
@@ -322,9 +337,10 @@ export const canUser = (action, resource, id) => async ({
322
337
  * @param {string} recordId Record's id.
323
338
  */
324
339
 
325
- export const canUserEditEntityRecord = (kind, name, recordId) => async ({
326
- dispatch
327
- }) => {
340
+ export const canUserEditEntityRecord = (kind, name, recordId) => async _ref8 => {
341
+ let {
342
+ dispatch
343
+ } = _ref8;
328
344
  const entities = await dispatch(getKindEntities(kind));
329
345
  const entity = find(entities, {
330
346
  kind,
@@ -345,10 +361,11 @@ export const canUserEditEntityRecord = (kind, name, recordId) => async ({
345
361
  * @param {number} postId The id of the parent post.
346
362
  */
347
363
 
348
- export const getAutosaves = (postType, postId) => async ({
349
- dispatch,
350
- resolveSelect
351
- }) => {
364
+ export const getAutosaves = (postType, postId) => async _ref9 => {
365
+ let {
366
+ dispatch,
367
+ resolveSelect
368
+ } = _ref9;
352
369
  const {
353
370
  rest_base: restBase
354
371
  } = await resolveSelect.getPostType(postType);
@@ -370,9 +387,10 @@ export const getAutosaves = (postType, postId) => async ({
370
387
  * @param {number} postId The id of the parent post.
371
388
  */
372
389
 
373
- export const getAutosave = (postType, postId) => async ({
374
- resolveSelect
375
- }) => {
390
+ export const getAutosave = (postType, postId) => async _ref10 => {
391
+ let {
392
+ resolveSelect
393
+ } = _ref10;
376
394
  await resolveSelect.getAutosaves(postType, postId);
377
395
  };
378
396
  /**
@@ -381,10 +399,11 @@ export const getAutosave = (postType, postId) => async ({
381
399
  * @param {string} link Link.
382
400
  */
383
401
 
384
- export const __experimentalGetTemplateForLink = link => async ({
385
- dispatch,
386
- resolveSelect
387
- }) => {
402
+ export const __experimentalGetTemplateForLink = link => async _ref11 => {
403
+ let {
404
+ dispatch,
405
+ resolveSelect
406
+ } = _ref11;
388
407
  // Ideally this should be using an apiFetch call
389
408
  // We could potentially do so by adding a "filter" to the `wp_template` end point.
390
409
  // Also it seems the returned object is not a regular REST API post type.
@@ -393,9 +412,12 @@ export const __experimentalGetTemplateForLink = link => async ({
393
412
  try {
394
413
  template = await window.fetch(addQueryArgs(link, {
395
414
  '_wp-find-template': true
396
- })).then(res => res.json()).then(({
397
- data
398
- }) => data);
415
+ })).then(res => res.json()).then(_ref12 => {
416
+ let {
417
+ data
418
+ } = _ref12;
419
+ return data;
420
+ });
399
421
  } catch (e) {// For non-FSE themes, it is possible that this request returns an error.
400
422
  }
401
423
 
@@ -416,10 +438,11 @@ __experimentalGetTemplateForLink.shouldInvalidate = action => {
416
438
  return (action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS') && action.invalidateCache && action.kind === 'postType' && action.name === 'wp_template';
417
439
  };
418
440
 
419
- export const __experimentalGetCurrentGlobalStylesId = () => async ({
420
- dispatch,
421
- resolveSelect
422
- }) => {
441
+ export const __experimentalGetCurrentGlobalStylesId = () => async _ref13 => {
442
+ let {
443
+ dispatch,
444
+ resolveSelect
445
+ } = _ref13;
423
446
  const activeThemes = await resolveSelect.getEntityRecords('root', 'theme', {
424
447
  status: 'active'
425
448
  });
@@ -433,10 +456,11 @@ export const __experimentalGetCurrentGlobalStylesId = () => async ({
433
456
  dispatch.__experimentalReceiveCurrentGlobalStylesId(globalStylesObject.id);
434
457
  }
435
458
  };
436
- export const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ({
437
- resolveSelect,
438
- dispatch
439
- }) => {
459
+ export const __experimentalGetCurrentThemeBaseGlobalStyles = () => async _ref14 => {
460
+ let {
461
+ resolveSelect,
462
+ dispatch
463
+ } = _ref14;
440
464
  const currentTheme = await resolveSelect.getCurrentTheme();
441
465
  const themeGlobalStyles = await apiFetch({
442
466
  path: `/wp/v2/global-styles/themes/${currentTheme.stylesheet}`