@wordpress/core-data 6.12.4 → 6.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/entity-provider.js"],"names":["createContext","useContext","useCallback","useEffect","useSelect","useDispatch","useRegistry","parse","__unstableSerializeAndClean","privateApis","blockEditorPrivateApis","STORE_NAME","unlock","EMPTY_ARRAY","oldFootnotes","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","useEntityId","useEntityProp","prop","_id","providerId","value","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","meta","updateMeta","registry","content","blocks","__unstableCreateUndoLevel","parsedContent","undoIgnore","updateFootnotes","_blocks","footnotes","getRichTextValues","_content","join","newOrder","indexOf","regex","match","exec","push","JSON","currentOrder","map","fn","newFootnotes","fnId","find","includes","stringify","onChange","newBlocks","options","selection","edits","noChange","blocksForSerialization","batch","onInput"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { unlock } from './private-apis';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\n\nlet oldFootnotes = {};\n\n/**\n * Internal dependencies\n */\nimport { rootEntitiesConfig, additionalEntityConfigLoaders } from './entities';\n\nconst entityContexts = {\n\t...rootEntitiesConfig.reduce( ( acc, loader ) => {\n\t\tif ( ! acc[ loader.kind ] ) {\n\t\t\tacc[ loader.kind ] = {};\n\t\t}\n\t\tacc[ loader.kind ][ loader.name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t\treturn acc;\n\t}, {} ),\n\t...additionalEntityConfigLoaders.reduce( ( acc, loader ) => {\n\t\tacc[ loader.kind ] = {};\n\t\treturn acc;\n\t}, {} ),\n};\nconst getEntityContext = ( kind, name ) => {\n\tif ( ! entityContexts[ kind ] ) {\n\t\tthrow new Error( `Missing entity config for kind: ${ kind }.` );\n\t}\n\n\tif ( ! entityContexts[ kind ][ name ] ) {\n\t\tentityContexts[ kind ][ name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t}\n\n\treturn entityContexts[ kind ][ name ].context;\n};\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( { kind, type: name, id, children } ) {\n\tconst Provider = getEntityContext( kind, name ).Provider;\n\treturn <Provider value={ id }>{ children }</Provider>;\n}\n\n/**\n * Hook that returns the ID for the nearest\n * provided entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n */\nexport function useEntityId( kind, name ) {\n\treturn useContext( getEntityContext( kind, name ) );\n}\n\n/**\n * Hook that returns the value and a setter for the\n * specified property of the nearest provided\n * entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {string} prop The property name.\n * @param {string} [_id] An entity ID to use instead of the context-provided one.\n *\n * @return {[*, Function, *]} An array where the first item is the\n * property value, the second is the\n * setter and the third is the full value\n * \t\t\t\t\t\t\t object from REST API containing more\n * \t\t\t\t\t\t\t information like `raw`, `rendered` and\n * \t\t\t\t\t\t\t `protected` props.\n */\nexport function useEntityProp( kind, name, prop, _id ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\n\tconst { value, fullValue } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getEditedEntityRecord } =\n\t\t\t\tselect( STORE_NAME );\n\t\t\tconst record = getEntityRecord( kind, name, id ); // Trigger resolver.\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn record && editedRecord\n\t\t\t\t? {\n\t\t\t\t\t\tvalue: editedRecord[ prop ],\n\t\t\t\t\t\tfullValue: record[ prop ],\n\t\t\t\t }\n\t\t\t\t: {};\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\tconst { editEntityRecord } = useDispatch( STORE_NAME );\n\tconst setValue = useCallback(\n\t\t( newValue ) => {\n\t\t\teditEntityRecord( kind, name, id, {\n\t\t\t\t[ prop ]: newValue,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\n\treturn [ value, setValue, fullValue ];\n}\n\n/**\n * Hook that returns block content getters and setters for\n * the nearest provided entity of the specified type.\n *\n * The return value has the shape `[ blocks, onInput, onChange ]`.\n * `onInput` is for block changes that don't create undo levels\n * or dirty the post, non-persistent changes, and `onChange` is for\n * peristent changes. They map directly to the props of a\n * `BlockEditorProvider` and are intended to be used with it,\n * or similar components or hooks.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {Object} options\n * @param {string} [options.id] An entity ID to use instead of the context-provided one.\n *\n * @return {[WPBlock[], Function, Function]} The block array and setters.\n */\nexport function useEntityBlockEditor( kind, name, { id: _id } = {} ) {\n\tconst [ meta, updateMeta ] = useEntityProp( kind, name, 'meta', _id );\n\tconst registry = useRegistry();\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\tconst { content, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord } = select( STORE_NAME );\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn {\n\t\t\t\tblocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\tconst { __unstableCreateUndoLevel, editEntityRecord } =\n\t\tuseDispatch( STORE_NAME );\n\n\tuseEffect( () => {\n\t\t// Load the blocks from the content if not already in state\n\t\t// Guard against other instances that might have\n\t\t// set content to a function already or the blocks are already in state.\n\t\tif ( content && typeof content !== 'function' && ! blocks ) {\n\t\t\tconst parsedContent = parse( content );\n\t\t\teditEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tid,\n\t\t\t\t{\n\t\t\t\t\tblocks: parsedContent,\n\t\t\t\t},\n\t\t\t\t{ undoIgnore: true }\n\t\t\t);\n\t\t}\n\t}, [ content ] );\n\n\tconst updateFootnotes = useCallback(\n\t\t( _blocks ) => {\n\t\t\tif ( ! meta ) return;\n\t\t\t// If meta.footnotes is empty, it means the meta is not registered.\n\t\t\tif ( meta.footnotes === undefined ) return;\n\n\t\t\tconst { getRichTextValues } = unlock( blockEditorPrivateApis );\n\t\t\tconst _content = getRichTextValues( _blocks ).join( '' ) || '';\n\t\t\tconst newOrder = [];\n\n\t\t\t// This can be avoided when\n\t\t\t// https://github.com/WordPress/gutenberg/pull/43204 lands. We can then\n\t\t\t// get the order directly from the rich text values.\n\t\t\tif ( _content.indexOf( 'data-fn' ) !== -1 ) {\n\t\t\t\tconst regex = /data-fn=\"([^\"]+)\"/g;\n\t\t\t\tlet match;\n\t\t\t\twhile ( ( match = regex.exec( _content ) ) !== null ) {\n\t\t\t\t\tnewOrder.push( match[ 1 ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst footnotes = meta.footnotes\n\t\t\t\t? JSON.parse( meta.footnotes )\n\t\t\t\t: [];\n\t\t\tconst currentOrder = footnotes.map( ( fn ) => fn.id );\n\n\t\t\tif ( currentOrder.join( '' ) === newOrder.join( '' ) ) return;\n\n\t\t\tconst newFootnotes = newOrder.map(\n\t\t\t\t( fnId ) =>\n\t\t\t\t\tfootnotes.find( ( fn ) => fn.id === fnId ) ||\n\t\t\t\t\toldFootnotes[ fnId ] || {\n\t\t\t\t\t\tid: fnId,\n\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t}\n\t\t\t);\n\n\t\t\toldFootnotes = {\n\t\t\t\t...oldFootnotes,\n\t\t\t\t...footnotes.reduce( ( acc, fn ) => {\n\t\t\t\t\tif ( ! newOrder.includes( fn.id ) ) {\n\t\t\t\t\t\tacc[ fn.id ] = fn;\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} ),\n\t\t\t};\n\n\t\t\tupdateMeta( {\n\t\t\t\t...meta,\n\t\t\t\tfootnotes: JSON.stringify( newFootnotes ),\n\t\t\t} );\n\t\t},\n\t\t[ meta, updateMeta ]\n\t);\n\n\tconst onChange = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\n\t\t\tconst noChange = blocks === edits.blocks;\n\t\t\tif ( noChange ) {\n\t\t\t\treturn __unstableCreateUndoLevel( kind, name, id );\n\t\t\t}\n\n\t\t\t// We create a new function here on every persistent edit\n\t\t\t// to make sure the edit makes the post dirty and creates\n\t\t\t// a new undo level.\n\t\t\tedits.content = ( { blocks: blocksForSerialization = [] } ) =>\n\t\t\t\t__unstableSerializeAndClean( blocksForSerialization );\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tupdateFootnotes( edits.blocks );\n\t\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, blocks, updateFootnotes ]\n\t);\n\n\tconst onInput = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\t\t\tregistry.batch( () => {\n\t\t\t\tupdateFootnotes( edits.blocks );\n\t\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, updateFootnotes ]\n\t);\n\n\treturn [ blocks ?? EMPTY_ARRAY, onInput, onChange ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/entity-provider.js"],"names":["createContext","useContext","useCallback","useEffect","useSelect","useDispatch","parse","__unstableSerializeAndClean","privateApis","blockEditorPrivateApis","STORE_NAME","unlock","EMPTY_ARRAY","oldFootnotes","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","useEntityId","useEntityProp","prop","_id","providerId","value","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","content","blocks","meta","__unstableCreateUndoLevel","parsedContent","undoIgnore","updateFootnotes","_blocks","footnotes","getRichTextValues","_content","join","newOrder","indexOf","regex","match","exec","push","JSON","currentOrder","map","fn","newFootnotes","fnId","find","includes","stringify","onChange","newBlocks","options","noChange","selection","edits","blocksForSerialization","isCached","onInput","footnotesChanges"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { unlock } from './private-apis';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\n\nlet oldFootnotes = {};\n\n/**\n * Internal dependencies\n */\nimport { rootEntitiesConfig, additionalEntityConfigLoaders } from './entities';\n\nconst entityContexts = {\n\t...rootEntitiesConfig.reduce( ( acc, loader ) => {\n\t\tif ( ! acc[ loader.kind ] ) {\n\t\t\tacc[ loader.kind ] = {};\n\t\t}\n\t\tacc[ loader.kind ][ loader.name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t\treturn acc;\n\t}, {} ),\n\t...additionalEntityConfigLoaders.reduce( ( acc, loader ) => {\n\t\tacc[ loader.kind ] = {};\n\t\treturn acc;\n\t}, {} ),\n};\nconst getEntityContext = ( kind, name ) => {\n\tif ( ! entityContexts[ kind ] ) {\n\t\tthrow new Error( `Missing entity config for kind: ${ kind }.` );\n\t}\n\n\tif ( ! entityContexts[ kind ][ name ] ) {\n\t\tentityContexts[ kind ][ name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t}\n\n\treturn entityContexts[ kind ][ name ].context;\n};\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( { kind, type: name, id, children } ) {\n\tconst Provider = getEntityContext( kind, name ).Provider;\n\treturn <Provider value={ id }>{ children }</Provider>;\n}\n\n/**\n * Hook that returns the ID for the nearest\n * provided entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n */\nexport function useEntityId( kind, name ) {\n\treturn useContext( getEntityContext( kind, name ) );\n}\n\n/**\n * Hook that returns the value and a setter for the\n * specified property of the nearest provided\n * entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {string} prop The property name.\n * @param {string} [_id] An entity ID to use instead of the context-provided one.\n *\n * @return {[*, Function, *]} An array where the first item is the\n * property value, the second is the\n * setter and the third is the full value\n * \t\t\t\t\t\t\t object from REST API containing more\n * \t\t\t\t\t\t\t information like `raw`, `rendered` and\n * \t\t\t\t\t\t\t `protected` props.\n */\nexport function useEntityProp( kind, name, prop, _id ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\n\tconst { value, fullValue } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getEditedEntityRecord } =\n\t\t\t\tselect( STORE_NAME );\n\t\t\tconst record = getEntityRecord( kind, name, id ); // Trigger resolver.\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn record && editedRecord\n\t\t\t\t? {\n\t\t\t\t\t\tvalue: editedRecord[ prop ],\n\t\t\t\t\t\tfullValue: record[ prop ],\n\t\t\t\t }\n\t\t\t\t: {};\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\tconst { editEntityRecord } = useDispatch( STORE_NAME );\n\tconst setValue = useCallback(\n\t\t( newValue ) => {\n\t\t\teditEntityRecord( kind, name, id, {\n\t\t\t\t[ prop ]: newValue,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\n\treturn [ value, setValue, fullValue ];\n}\n\n/**\n * Hook that returns block content getters and setters for\n * the nearest provided entity of the specified type.\n *\n * The return value has the shape `[ blocks, onInput, onChange ]`.\n * `onInput` is for block changes that don't create undo levels\n * or dirty the post, non-persistent changes, and `onChange` is for\n * peristent changes. They map directly to the props of a\n * `BlockEditorProvider` and are intended to be used with it,\n * or similar components or hooks.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {Object} options\n * @param {string} [options.id] An entity ID to use instead of the context-provided one.\n *\n * @return {[WPBlock[], Function, Function]} The block array and setters.\n */\nexport function useEntityBlockEditor( kind, name, { id: _id } = {} ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\tconst { content, blocks, meta } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord } = select( STORE_NAME );\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn {\n\t\t\t\tblocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t\tmeta: editedRecord.meta,\n\t\t\t};\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\tconst { __unstableCreateUndoLevel, editEntityRecord } =\n\t\tuseDispatch( STORE_NAME );\n\n\tuseEffect( () => {\n\t\t// Load the blocks from the content if not already in state\n\t\t// Guard against other instances that might have\n\t\t// set content to a function already or the blocks are already in state.\n\t\tif ( content && typeof content !== 'function' && ! blocks ) {\n\t\t\tconst parsedContent = parse( content );\n\t\t\teditEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tid,\n\t\t\t\t{\n\t\t\t\t\tblocks: parsedContent,\n\t\t\t\t},\n\t\t\t\t{ undoIgnore: true }\n\t\t\t);\n\t\t}\n\t}, [ content ] );\n\n\tconst updateFootnotes = useCallback(\n\t\t( _blocks ) => {\n\t\t\tif ( ! meta ) return;\n\t\t\t// If meta.footnotes is empty, it means the meta is not registered.\n\t\t\tif ( meta.footnotes === undefined ) return {};\n\n\t\t\tconst { getRichTextValues } = unlock( blockEditorPrivateApis );\n\t\t\tconst _content = getRichTextValues( _blocks ).join( '' ) || '';\n\t\t\tconst newOrder = [];\n\n\t\t\t// This can be avoided when\n\t\t\t// https://github.com/WordPress/gutenberg/pull/43204 lands. We can then\n\t\t\t// get the order directly from the rich text values.\n\t\t\tif ( _content.indexOf( 'data-fn' ) !== -1 ) {\n\t\t\t\tconst regex = /data-fn=\"([^\"]+)\"/g;\n\t\t\t\tlet match;\n\t\t\t\twhile ( ( match = regex.exec( _content ) ) !== null ) {\n\t\t\t\t\tnewOrder.push( match[ 1 ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst footnotes = meta.footnotes\n\t\t\t\t? JSON.parse( meta.footnotes )\n\t\t\t\t: [];\n\t\t\tconst currentOrder = footnotes.map( ( fn ) => fn.id );\n\n\t\t\tif ( currentOrder.join( '' ) === newOrder.join( '' ) ) return;\n\n\t\t\tconst newFootnotes = newOrder.map(\n\t\t\t\t( fnId ) =>\n\t\t\t\t\tfootnotes.find( ( fn ) => fn.id === fnId ) ||\n\t\t\t\t\toldFootnotes[ fnId ] || {\n\t\t\t\t\t\tid: fnId,\n\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t}\n\t\t\t);\n\n\t\t\toldFootnotes = {\n\t\t\t\t...oldFootnotes,\n\t\t\t\t...footnotes.reduce( ( acc, fn ) => {\n\t\t\t\t\tif ( ! newOrder.includes( fn.id ) ) {\n\t\t\t\t\t\tacc[ fn.id ] = fn;\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} ),\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\t...meta,\n\t\t\t\t\tfootnotes: JSON.stringify( newFootnotes ),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[ meta ]\n\t);\n\n\tconst onChange = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst noChange = blocks === newBlocks;\n\t\t\tif ( noChange ) {\n\t\t\t\treturn __unstableCreateUndoLevel( kind, name, id );\n\t\t\t}\n\t\t\tconst { selection } = options;\n\n\t\t\t// We create a new function here on every persistent edit\n\t\t\t// to make sure the edit makes the post dirty and creates\n\t\t\t// a new undo level.\n\t\t\tconst edits = {\n\t\t\t\tblocks: newBlocks,\n\t\t\t\tselection,\n\t\t\t\tcontent: ( { blocks: blocksForSerialization = [] } ) =>\n\t\t\t\t\t__unstableSerializeAndClean( blocksForSerialization ),\n\t\t\t\t...updateFootnotes( newBlocks ),\n\t\t\t};\n\n\t\t\teditEntityRecord( kind, name, id, edits, { isCached: false } );\n\t\t},\n\t\t[\n\t\t\tkind,\n\t\t\tname,\n\t\t\tid,\n\t\t\tblocks,\n\t\t\tupdateFootnotes,\n\t\t\t__unstableCreateUndoLevel,\n\t\t\teditEntityRecord,\n\t\t]\n\t);\n\n\tconst onInput = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst footnotesChanges = updateFootnotes( newBlocks );\n\t\t\tconst edits = { blocks: newBlocks, selection, ...footnotesChanges };\n\n\t\t\teditEntityRecord( kind, name, id, edits, { isCached: true } );\n\t\t},\n\t\t[ kind, name, id, updateFootnotes, editEntityRecord ]\n\t);\n\n\treturn [ blocks ?? EMPTY_ARRAY, onInput, onChange ];\n}\n"]}
@@ -397,7 +397,7 @@ export const entities = (state = {}, action) => {
397
397
  *
398
398
  * @property {number} list The undo stack.
399
399
  * @property {number} offset Where in the undo stack we are.
400
- * @property {Object} cache Cache of unpersisted transient edits.
400
+ * @property {Object} cache Cache of unpersisted edits.
401
401
  */
402
402
 
403
403
  /** @typedef {Array<Object> & UndoStateMeta} UndoState */
@@ -502,7 +502,6 @@ export function undo(state = UNDO_INITIAL_STATE, action) {
502
502
  return state;
503
503
  }
504
504
 
505
- const isCachedChange = Object.keys(action.edits).every(key => action.transientEdits[key]);
506
505
  const edits = Object.keys(action.edits).map(key => {
507
506
  return {
508
507
  kind: action.kind,
@@ -514,7 +513,7 @@ export function undo(state = UNDO_INITIAL_STATE, action) {
514
513
  };
515
514
  });
516
515
 
517
- if (isCachedChange) {
516
+ if (action.meta.undo.isCached) {
518
517
  return { ...state,
519
518
  cache: edits.reduce(appendEditToStack, state.cache)
520
519
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["fastDeepEqual","compose","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","rootEntitiesConfig","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","reduce","newUsers","user","id","queryID","map","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","themeGlobalStyleVariations","variations","withMultiEntityRecordEdits","stackedEdits","newState","forEach","kind","name","recordId","property","from","to","edits","entity","entityConfig","key","queriedData","context","query","nextState","record","items","nextEdits","Object","keys","acc","raw","persistedEdits","length","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","push","entries","memo","subEntities","kindReducer","kindMemo","newData","records","UNDO_INITIAL_STATE","list","offset","undo","omitPendingRedos","currentState","slice","appendCachedEditsToLastUndo","cache","previousUndoState","pop","updatedUndoState","appendEditToStack","stack","existingEditIndex","findIndex","k","n","r","p","nextStack","meta","isCachedChange","every","transientEdits","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData","blockPatterns","patterns","blockPatternCategories","categories","navigationFallbackId","fallbackId","themeGlobalStyleRevisions","currentId","revisions"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\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 { rootEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\n\n/** @typedef {import('./types').AnyFunction} AnyFunction */\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// Key users by their ID.\n\t\t\t\t\t...action.users.reduce(\n\t\t\t\t\t\t( newUsers, user ) => ( {\n\t\t\t\t\t\t\t...newUsers,\n\t\t\t\t\t\t\t[ user.id ]: user,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t{}\n\t\t\t\t\t),\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 ]: action.users.map( ( user ) => user.id ),\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|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} 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|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} 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 {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} 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 * Reducer managing the theme global styles variations.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.variations,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nconst withMultiEntityRecordEdits = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'UNDO' || action.type === 'REDO' ) {\n\t\tconst { stackedEdits } = action;\n\n\t\tlet newState = state;\n\t\tstackedEdits.forEach(\n\t\t\t( { kind, name, recordId, property, from, to } ) => {\n\t\t\t\tnewState = reducer( newState, {\n\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t[ property ]: action.type === 'UNDO' ? from : to,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\t\treturn newState;\n\t}\n\n\treturn reducer( state, action );\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 {AnyFunction} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn compose( [\n\t\twithMultiEntityRecordEdits,\n\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! fastDeepEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\trecord[ key ]?.raw ?? record[ key ]\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! fastDeepEqual(\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 = rootEntitiesConfig, 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 = newConfig.reduce( ( acc, record ) => {\n\t\t\tconst { kind } = record;\n\t\t\tif ( ! acc[ kind ] ) {\n\t\t\t\tacc[ kind ] = [];\n\t\t\t}\n\t\t\tacc[ kind ].push( record );\n\t\t\treturn acc;\n\t\t}, {} );\n\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.records, action );\n\n\tif (\n\t\tnewData === state.records &&\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\trecords: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * @typedef {Object} UndoStateMeta\n *\n * @property {number} list The undo stack.\n * @property {number} offset Where in the undo stack we are.\n * @property {Object} cache Cache of unpersisted transient edits.\n */\n\n/** @typedef {Array<Object> & UndoStateMeta} UndoState */\n\n/**\n * @type {UndoState}\n *\n * @todo Given how we use this we might want to make a custom class for it.\n */\nconst UNDO_INITIAL_STATE = { list: [], offset: 0 };\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {UndoState} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {UndoState} Updated state.\n */\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tconst omitPendingRedos = ( currentState ) => {\n\t\treturn {\n\t\t\t...currentState,\n\t\t\tlist: currentState.list.slice(\n\t\t\t\t0,\n\t\t\t\tcurrentState.offset || undefined\n\t\t\t),\n\t\t\toffset: 0,\n\t\t};\n\t};\n\n\tconst appendCachedEditsToLastUndo = ( currentState ) => {\n\t\tif ( ! currentState.cache ) {\n\t\t\treturn currentState;\n\t\t}\n\n\t\tlet nextState = {\n\t\t\t...currentState,\n\t\t\tlist: [ ...currentState.list ],\n\t\t};\n\t\tnextState = omitPendingRedos( nextState );\n\t\tconst previousUndoState = nextState.list.pop();\n\t\tconst updatedUndoState = currentState.cache.reduce(\n\t\t\tappendEditToStack,\n\t\t\tpreviousUndoState\n\t\t);\n\t\tnextState.list.push( updatedUndoState );\n\n\t\treturn {\n\t\t\t...nextState,\n\t\t\tcache: undefined,\n\t\t};\n\t};\n\n\tconst appendEditToStack = (\n\t\tstack = [],\n\t\t{ kind, name, recordId, property, from, to }\n\t) => {\n\t\tconst existingEditIndex = stack?.findIndex(\n\t\t\t( { kind: k, name: n, recordId: r, property: p } ) => {\n\t\t\t\treturn (\n\t\t\t\t\tk === kind && n === name && r === recordId && p === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tconst nextStack = [ ...stack ];\n\t\tif ( existingEditIndex !== -1 ) {\n\t\t\t// If the edit is already in the stack leave the initial \"from\" value.\n\t\t\tnextStack[ existingEditIndex ] = {\n\t\t\t\t...nextStack[ existingEditIndex ],\n\t\t\t\tto,\n\t\t\t};\n\t\t} else {\n\t\t\tnextStack.push( {\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\tproperty,\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t} );\n\t\t}\n\t\treturn nextStack;\n\t};\n\n\tswitch ( action.type ) {\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\treturn appendCachedEditsToLastUndo( state );\n\n\t\tcase 'UNDO':\n\t\tcase 'REDO': {\n\t\t\tconst nextState = appendCachedEditsToLastUndo( state );\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\toffset: state.offset + ( action.type === 'UNDO' ? -1 : 1 ),\n\t\t\t};\n\t\t}\n\n\t\tcase 'EDIT_ENTITY_RECORD': {\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst isCachedChange = Object.keys( action.edits ).every(\n\t\t\t\t( key ) => action.transientEdits[ key ]\n\t\t\t);\n\n\t\t\tconst edits = Object.keys( action.edits ).map( ( key ) => {\n\t\t\t\treturn {\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\tproperty: key,\n\t\t\t\t\tfrom: action.meta.undo.edits[ key ],\n\t\t\t\t\tto: action.edits[ key ],\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\tif ( isCachedChange ) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tcache: edits.reduce( appendEditToStack, state.cache ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet nextState = omitPendingRedos( state );\n\t\t\tnextState = appendCachedEditsToLastUndo( nextState );\n\t\t\tnextState = { ...nextState, list: [ ...nextState.list ] };\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.list.push( edits );\n\t\t\t}\n\n\t\t\treturn nextState;\n\t\t}\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 function blockPatterns( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERNS':\n\t\t\treturn action.patterns;\n\t}\n\n\treturn state;\n}\n\nexport function blockPatternCategories( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERN_CATEGORIES':\n\t\t\treturn action.categories;\n\t}\n\n\treturn state;\n}\n\nexport function navigationFallbackId( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_NAVIGATION_FALLBACK_ID':\n\t\t\treturn action.fallbackId;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme global styles revisions.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleRevisions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_REVISIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.currentId ]: action.revisions,\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\tthemeGlobalStyleVariations,\n\tthemeBaseGlobalStyles,\n\tthemeGlobalStyleRevisions,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n\tblockPatterns,\n\tblockPatternCategories,\n\tnavigationFallbackId,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["fastDeepEqual","compose","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","rootEntitiesConfig","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","reduce","newUsers","user","id","queryID","map","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","themeGlobalStyleVariations","variations","withMultiEntityRecordEdits","stackedEdits","newState","forEach","kind","name","recordId","property","from","to","edits","entity","entityConfig","key","queriedData","context","query","nextState","record","items","nextEdits","Object","keys","acc","raw","persistedEdits","length","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","push","entries","memo","subEntities","kindReducer","kindMemo","newData","records","UNDO_INITIAL_STATE","list","offset","undo","omitPendingRedos","currentState","slice","appendCachedEditsToLastUndo","cache","previousUndoState","pop","updatedUndoState","appendEditToStack","stack","existingEditIndex","findIndex","k","n","r","p","nextStack","meta","isCached","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData","blockPatterns","patterns","blockPatternCategories","categories","navigationFallbackId","fallbackId","themeGlobalStyleRevisions","currentId","revisions"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\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 { rootEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\n\n/** @typedef {import('./types').AnyFunction} AnyFunction */\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// Key users by their ID.\n\t\t\t\t\t...action.users.reduce(\n\t\t\t\t\t\t( newUsers, user ) => ( {\n\t\t\t\t\t\t\t...newUsers,\n\t\t\t\t\t\t\t[ user.id ]: user,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t{}\n\t\t\t\t\t),\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 ]: action.users.map( ( user ) => user.id ),\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|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} 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|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} 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 {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} 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 * Reducer managing the theme global styles variations.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.variations,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nconst withMultiEntityRecordEdits = ( reducer ) => ( state, action ) => {\n\tif ( action.type === 'UNDO' || action.type === 'REDO' ) {\n\t\tconst { stackedEdits } = action;\n\n\t\tlet newState = state;\n\t\tstackedEdits.forEach(\n\t\t\t( { kind, name, recordId, property, from, to } ) => {\n\t\t\t\tnewState = reducer( newState, {\n\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t[ property ]: action.type === 'UNDO' ? from : to,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\t\treturn newState;\n\t}\n\n\treturn reducer( state, action );\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 {AnyFunction} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn compose( [\n\t\twithMultiEntityRecordEdits,\n\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! fastDeepEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\trecord[ key ]?.raw ?? record[ key ]\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! fastDeepEqual(\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 = rootEntitiesConfig, 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 = newConfig.reduce( ( acc, record ) => {\n\t\t\tconst { kind } = record;\n\t\t\tif ( ! acc[ kind ] ) {\n\t\t\t\tacc[ kind ] = [];\n\t\t\t}\n\t\t\tacc[ kind ].push( record );\n\t\t\treturn acc;\n\t\t}, {} );\n\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.records, action );\n\n\tif (\n\t\tnewData === state.records &&\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\trecords: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * @typedef {Object} UndoStateMeta\n *\n * @property {number} list The undo stack.\n * @property {number} offset Where in the undo stack we are.\n * @property {Object} cache Cache of unpersisted edits.\n */\n\n/** @typedef {Array<Object> & UndoStateMeta} UndoState */\n\n/**\n * @type {UndoState}\n *\n * @todo Given how we use this we might want to make a custom class for it.\n */\nconst UNDO_INITIAL_STATE = { list: [], offset: 0 };\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {UndoState} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {UndoState} Updated state.\n */\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tconst omitPendingRedos = ( currentState ) => {\n\t\treturn {\n\t\t\t...currentState,\n\t\t\tlist: currentState.list.slice(\n\t\t\t\t0,\n\t\t\t\tcurrentState.offset || undefined\n\t\t\t),\n\t\t\toffset: 0,\n\t\t};\n\t};\n\n\tconst appendCachedEditsToLastUndo = ( currentState ) => {\n\t\tif ( ! currentState.cache ) {\n\t\t\treturn currentState;\n\t\t}\n\n\t\tlet nextState = {\n\t\t\t...currentState,\n\t\t\tlist: [ ...currentState.list ],\n\t\t};\n\t\tnextState = omitPendingRedos( nextState );\n\t\tconst previousUndoState = nextState.list.pop();\n\t\tconst updatedUndoState = currentState.cache.reduce(\n\t\t\tappendEditToStack,\n\t\t\tpreviousUndoState\n\t\t);\n\t\tnextState.list.push( updatedUndoState );\n\n\t\treturn {\n\t\t\t...nextState,\n\t\t\tcache: undefined,\n\t\t};\n\t};\n\n\tconst appendEditToStack = (\n\t\tstack = [],\n\t\t{ kind, name, recordId, property, from, to }\n\t) => {\n\t\tconst existingEditIndex = stack?.findIndex(\n\t\t\t( { kind: k, name: n, recordId: r, property: p } ) => {\n\t\t\t\treturn (\n\t\t\t\t\tk === kind && n === name && r === recordId && p === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tconst nextStack = [ ...stack ];\n\t\tif ( existingEditIndex !== -1 ) {\n\t\t\t// If the edit is already in the stack leave the initial \"from\" value.\n\t\t\tnextStack[ existingEditIndex ] = {\n\t\t\t\t...nextStack[ existingEditIndex ],\n\t\t\t\tto,\n\t\t\t};\n\t\t} else {\n\t\t\tnextStack.push( {\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\tproperty,\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t} );\n\t\t}\n\t\treturn nextStack;\n\t};\n\n\tswitch ( action.type ) {\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\treturn appendCachedEditsToLastUndo( state );\n\n\t\tcase 'UNDO':\n\t\tcase 'REDO': {\n\t\t\tconst nextState = appendCachedEditsToLastUndo( state );\n\t\t\treturn {\n\t\t\t\t...nextState,\n\t\t\t\toffset: state.offset + ( action.type === 'UNDO' ? -1 : 1 ),\n\t\t\t};\n\t\t}\n\n\t\tcase 'EDIT_ENTITY_RECORD': {\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst edits = Object.keys( action.edits ).map( ( key ) => {\n\t\t\t\treturn {\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\tproperty: key,\n\t\t\t\t\tfrom: action.meta.undo.edits[ key ],\n\t\t\t\t\tto: action.edits[ key ],\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\tif ( action.meta.undo.isCached ) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tcache: edits.reduce( appendEditToStack, state.cache ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet nextState = omitPendingRedos( state );\n\t\t\tnextState = appendCachedEditsToLastUndo( nextState );\n\t\t\tnextState = { ...nextState, list: [ ...nextState.list ] };\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.list.push( edits );\n\t\t\t}\n\n\t\t\treturn nextState;\n\t\t}\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 function blockPatterns( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERNS':\n\t\t\treturn action.patterns;\n\t}\n\n\treturn state;\n}\n\nexport function blockPatternCategories( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERN_CATEGORIES':\n\t\t\treturn action.categories;\n\t}\n\n\treturn state;\n}\n\nexport function navigationFallbackId( state = null, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_NAVIGATION_FALLBACK_ID':\n\t\t\treturn action.fallbackId;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme global styles revisions.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleRevisions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_REVISIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.currentId ]: action.revisions,\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\tthemeGlobalStyleVariations,\n\tthemeBaseGlobalStyles,\n\tthemeGlobalStyleRevisions,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n\tblockPatterns,\n\tblockPatternCategories,\n\tnavigationFallbackId,\n} );\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-provider.d.ts","sourceRoot":"","sources":["../src/entity-provider.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;GAYG;AACH;IARyB,IAAI,EAAlB,MAAM;IACQ,IAAI,EAAlB,MAAM;IACQ,EAAE,EAAhB,MAAM;IACQ,QAAQ;QAQhC;AAED;;;;;;GAMG;AACH,kCAHW,MAAM,QACN,MAAM,OAIhB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,oCAZW,MAAM,QACN,MAAM,QACN,MAAM,6BAGL,oBAAgB,CAqC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,2CAPW,MAAM,QACN,MAAM;IAEW,EAAE;IAElB,CAAC,OAAO,EAAE,qBAAqB,CAmI1C"}
1
+ {"version":3,"file":"entity-provider.d.ts","sourceRoot":"","sources":["../src/entity-provider.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;GAYG;AACH;IARyB,IAAI,EAAlB,MAAM;IACQ,IAAI,EAAlB,MAAM;IACQ,EAAE,EAAhB,MAAM;IACQ,QAAQ;QAQhC;AAED;;;;;;GAMG;AACH,kCAHW,MAAM,QACN,MAAM,OAIhB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,oCAZW,MAAM,QACN,MAAM,QACN,MAAM,6BAGL,oBAAgB,CAqC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,2CAPW,MAAM,QACN,MAAM;IAEW,EAAE;IAElB,CAAC,OAAO,EAAE,qBAAqB,CA2I1C"}
@@ -81,6 +81,10 @@ declare module './base-entity-records' {
81
81
  * Whether posts and comments RSS feed links are added to head.
82
82
  */
83
83
  'automatic-feed-links': boolean;
84
+ /**
85
+ * Whether border settings are enabled.
86
+ */
87
+ border: boolean;
84
88
  /**
85
89
  * Custom background if defined by the theme.
86
90
  */
@@ -137,6 +141,10 @@ declare module './base-entity-records' {
137
141
  * Post formats supported.
138
142
  */
139
143
  formats: PostFormat[];
144
+ /**
145
+ * Whether link colors are enabled.
146
+ */
147
+ 'link-color': boolean;
140
148
  /**
141
149
  * The post types that support thumbnails or true if all post types are supported.
142
150
  */
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/entity-types/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/entity-types/theme.ts"],"names":[],"mappings":"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"}
@@ -164,7 +164,7 @@ export type UndoStateMeta = {
164
164
  */
165
165
  offset: number;
166
166
  /**
167
- * Cache of unpersisted transient edits.
167
+ * Cache of unpersisted edits.
168
168
  */
169
169
  cache: any;
170
170
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,oDAUC;AAED;;;;;;;GAOG;AACH,oDAuBC;AAED;;;;;;;GAOG;AACH,0DAOC;AAED;;;;;;;GAOG;AACH,yDAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,4FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,iGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA+KD;;;;;;;GAOG;AACH,6DAOC;AAgFD;;;;;;;GAOG;AACH,iEAFY,SAAS,CAgIpB;AAED;;;;;;;GAOG;AACH,4DAUC;AAED;;;;;;;;GAQG;AACH,8DAUC;AAED;;;;;;;GAOG;AACH,wDAYC;AAED,0EAOC;AAED,mFAOC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,gGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA1TM,uDAmDN;;;;;;;;;;;;;;;;;;;;;0BA/Za,OAAO,SAAS,EAAE,WAAW;;;;;UAoa7B,MAAM;;;;YACN,MAAM;;;;;;wBAIN,UAAa,GAAG,aAAa"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,oDAUC;AAED;;;;;;;GAOG;AACH,oDAuBC;AAED;;;;;;;GAOG;AACH,0DAOC;AAED;;;;;;;GAOG;AACH,yDAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,4FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,iGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA+KD;;;;;;;GAOG;AACH,6DAOC;AAgFD;;;;;;;GAOG;AACH,iEAFY,SAAS,CA4HpB;AAED;;;;;;;GAOG;AACH,4DAUC;AAED;;;;;;;;GAQG;AACH,8DAUC;AAED;;;;;;;GAOG;AACH,wDAYC;AAED,0EAOC;AAED,mFAOC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,gGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAtTM,uDAmDN;;;;;;;;;;;;;;;;;;;;;0BA/Za,OAAO,SAAS,EAAE,WAAW;;;;;UAoa7B,MAAM;;;;YACN,MAAM;;;;;;wBAIN,UAAa,GAAG,aAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/core-data",
3
- "version": "6.12.4",
3
+ "version": "6.14.0",
4
4
  "description": "Access to and manipulation of core WordPress entities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,18 +31,18 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/api-fetch": "^6.32.1",
35
- "@wordpress/block-editor": "^12.3.4",
36
- "@wordpress/blocks": "^12.12.2",
37
- "@wordpress/compose": "^6.12.1",
38
- "@wordpress/data": "^9.5.2",
39
- "@wordpress/deprecated": "^3.35.1",
40
- "@wordpress/element": "^5.12.1",
41
- "@wordpress/html-entities": "^3.35.1",
42
- "@wordpress/i18n": "^4.35.1",
43
- "@wordpress/is-shallow-equal": "^4.35.1",
44
- "@wordpress/private-apis": "^0.17.1",
45
- "@wordpress/url": "^3.36.1",
34
+ "@wordpress/api-fetch": "^6.34.0",
35
+ "@wordpress/block-editor": "^12.5.0",
36
+ "@wordpress/blocks": "^12.14.0",
37
+ "@wordpress/compose": "^6.14.0",
38
+ "@wordpress/data": "^9.7.0",
39
+ "@wordpress/deprecated": "^3.37.0",
40
+ "@wordpress/element": "^5.14.0",
41
+ "@wordpress/html-entities": "^3.37.0",
42
+ "@wordpress/i18n": "^4.37.0",
43
+ "@wordpress/is-shallow-equal": "^4.37.0",
44
+ "@wordpress/private-apis": "^0.19.0",
45
+ "@wordpress/url": "^3.38.0",
46
46
  "change-case": "^4.1.2",
47
47
  "equivalent-key-map": "^0.2.2",
48
48
  "fast-deep-equal": "^3.1.3",
@@ -56,5 +56,5 @@
56
56
  "publishConfig": {
57
57
  "access": "public"
58
58
  },
59
- "gitHead": "65fb4cd5187a47ca274c24c04a220bcdb2ddfa67"
59
+ "gitHead": "bcd13d59b22553b3c9dc5869077bff1e864cf9f5"
60
60
  }
package/src/actions.js CHANGED
@@ -357,7 +357,7 @@ export const editEntityRecord =
357
357
  `The entity being edited (${ kind }, ${ name }) does not have a loaded config.`
358
358
  );
359
359
  }
360
- const { transientEdits = {}, mergedEdits = {} } = entityConfig;
360
+ const { mergedEdits = {} } = entityConfig;
361
361
  const record = select.getRawEntityRecord( kind, name, recordId );
362
362
  const editedRecord = select.getEditedEntityRecord(
363
363
  kind,
@@ -382,7 +382,6 @@ export const editEntityRecord =
382
382
  : value;
383
383
  return acc;
384
384
  }, {} ),
385
- transientEdits,
386
385
  };
387
386
  dispatch( {
388
387
  type: 'EDIT_ENTITY_RECORD',
@@ -395,6 +394,7 @@ export const editEntityRecord =
395
394
  acc[ key ] = editedRecord[ key ];
396
395
  return acc;
397
396
  }, {} ),
397
+ isCached: options.isCached,
398
398
  },
399
399
  },
400
400
  } );
@@ -7,7 +7,7 @@ import {
7
7
  useCallback,
8
8
  useEffect,
9
9
  } from '@wordpress/element';
10
- import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
10
+ import { useSelect, useDispatch } from '@wordpress/data';
11
11
  import { parse, __unstableSerializeAndClean } from '@wordpress/blocks';
12
12
  import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
13
13
 
@@ -154,17 +154,16 @@ export function useEntityProp( kind, name, prop, _id ) {
154
154
  * @return {[WPBlock[], Function, Function]} The block array and setters.
155
155
  */
156
156
  export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
157
- const [ meta, updateMeta ] = useEntityProp( kind, name, 'meta', _id );
158
- const registry = useRegistry();
159
157
  const providerId = useEntityId( kind, name );
160
158
  const id = _id ?? providerId;
161
- const { content, blocks } = useSelect(
159
+ const { content, blocks, meta } = useSelect(
162
160
  ( select ) => {
163
161
  const { getEditedEntityRecord } = select( STORE_NAME );
164
162
  const editedRecord = getEditedEntityRecord( kind, name, id );
165
163
  return {
166
164
  blocks: editedRecord.blocks,
167
165
  content: editedRecord.content,
166
+ meta: editedRecord.meta,
168
167
  };
169
168
  },
170
169
  [ kind, name, id ]
@@ -194,7 +193,7 @@ export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
194
193
  ( _blocks ) => {
195
194
  if ( ! meta ) return;
196
195
  // If meta.footnotes is empty, it means the meta is not registered.
197
- if ( meta.footnotes === undefined ) return;
196
+ if ( meta.footnotes === undefined ) return {};
198
197
 
199
198
  const { getRichTextValues } = unlock( blockEditorPrivateApis );
200
199
  const _content = getRichTextValues( _blocks ).join( '' ) || '';
@@ -237,48 +236,57 @@ export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
237
236
  }, {} ),
238
237
  };
239
238
 
240
- updateMeta( {
241
- ...meta,
242
- footnotes: JSON.stringify( newFootnotes ),
243
- } );
239
+ return {
240
+ meta: {
241
+ ...meta,
242
+ footnotes: JSON.stringify( newFootnotes ),
243
+ },
244
+ };
244
245
  },
245
- [ meta, updateMeta ]
246
+ [ meta ]
246
247
  );
247
248
 
248
249
  const onChange = useCallback(
249
250
  ( newBlocks, options ) => {
250
- const { selection } = options;
251
- const edits = { blocks: newBlocks, selection };
252
-
253
- const noChange = blocks === edits.blocks;
251
+ const noChange = blocks === newBlocks;
254
252
  if ( noChange ) {
255
253
  return __unstableCreateUndoLevel( kind, name, id );
256
254
  }
255
+ const { selection } = options;
257
256
 
258
257
  // We create a new function here on every persistent edit
259
258
  // to make sure the edit makes the post dirty and creates
260
259
  // a new undo level.
261
- edits.content = ( { blocks: blocksForSerialization = [] } ) =>
262
- __unstableSerializeAndClean( blocksForSerialization );
260
+ const edits = {
261
+ blocks: newBlocks,
262
+ selection,
263
+ content: ( { blocks: blocksForSerialization = [] } ) =>
264
+ __unstableSerializeAndClean( blocksForSerialization ),
265
+ ...updateFootnotes( newBlocks ),
266
+ };
263
267
 
264
- registry.batch( () => {
265
- updateFootnotes( edits.blocks );
266
- editEntityRecord( kind, name, id, edits );
267
- } );
268
+ editEntityRecord( kind, name, id, edits, { isCached: false } );
268
269
  },
269
- [ kind, name, id, blocks, updateFootnotes ]
270
+ [
271
+ kind,
272
+ name,
273
+ id,
274
+ blocks,
275
+ updateFootnotes,
276
+ __unstableCreateUndoLevel,
277
+ editEntityRecord,
278
+ ]
270
279
  );
271
280
 
272
281
  const onInput = useCallback(
273
282
  ( newBlocks, options ) => {
274
283
  const { selection } = options;
275
- const edits = { blocks: newBlocks, selection };
276
- registry.batch( () => {
277
- updateFootnotes( edits.blocks );
278
- editEntityRecord( kind, name, id, edits );
279
- } );
284
+ const footnotesChanges = updateFootnotes( newBlocks );
285
+ const edits = { blocks: newBlocks, selection, ...footnotesChanges };
286
+
287
+ editEntityRecord( kind, name, id, edits, { isCached: true } );
280
288
  },
281
- [ kind, name, id, updateFootnotes ]
289
+ [ kind, name, id, updateFootnotes, editEntityRecord ]
282
290
  );
283
291
 
284
292
  return [ blocks ?? EMPTY_ARRAY, onInput, onChange ];
@@ -85,6 +85,10 @@ declare module './base-entity-records' {
85
85
  * Whether posts and comments RSS feed links are added to head.
86
86
  */
87
87
  'automatic-feed-links': boolean;
88
+ /**
89
+ * Whether border settings are enabled.
90
+ */
91
+ border: boolean;
88
92
  /**
89
93
  * Custom background if defined by the theme.
90
94
  */
@@ -141,6 +145,10 @@ declare module './base-entity-records' {
141
145
  * Post formats supported.
142
146
  */
143
147
  formats: PostFormat[];
148
+ /**
149
+ * Whether link colors are enabled.
150
+ */
151
+ 'link-color': boolean;
144
152
  /**
145
153
  * The post types that support thumbnails or true if all post types are supported.
146
154
  */
package/src/reducer.js CHANGED
@@ -439,7 +439,7 @@ export const entities = ( state = {}, action ) => {
439
439
  *
440
440
  * @property {number} list The undo stack.
441
441
  * @property {number} offset Where in the undo stack we are.
442
- * @property {Object} cache Cache of unpersisted transient edits.
442
+ * @property {Object} cache Cache of unpersisted edits.
443
443
  */
444
444
 
445
445
  /** @typedef {Array<Object> & UndoStateMeta} UndoState */
@@ -543,10 +543,6 @@ export function undo( state = UNDO_INITIAL_STATE, action ) {
543
543
  return state;
544
544
  }
545
545
 
546
- const isCachedChange = Object.keys( action.edits ).every(
547
- ( key ) => action.transientEdits[ key ]
548
- );
549
-
550
546
  const edits = Object.keys( action.edits ).map( ( key ) => {
551
547
  return {
552
548
  kind: action.kind,
@@ -558,7 +554,7 @@ export function undo( state = UNDO_INITIAL_STATE, action ) {
558
554
  };
559
555
  } );
560
556
 
561
- if ( isCachedChange ) {
557
+ if ( action.meta.undo.isCached ) {
562
558
  return {
563
559
  ...state,
564
560
  cache: edits.reduce( appendEditToStack, state.cache ),