@wordpress/core-data 6.25.0 → 6.26.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,"names":["capitalCase","pascalCase","apiFetch","__","addEntities","getSyncProvider","DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","kind","name","baseURL","baseURLParams","_fields","join","syncConfig","fetch","path","applyChangesToDoc","doc","changes","document","getMap","Object","entries","forEach","key","value","get","set","fromCRDTDoc","toJSON","syncObjectType","getSyncObjectId","getTitle","record","_record$title","title","context","id","plural","rawAttributes","supportsPagination","transientEdits","blocks","rendered","getRevisionsUrl","parentId","revisionId","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","map","postType","_postType$rest_namesp","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","_record$slug","slug","String","__unstablePrePersist","undefined","__unstable_rest_base","revisionKey","taxonomies","taxonomy","_taxonomy$rest_namesp","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","nameSuffix","suffix","registerSyncConfigs","configs","register","editSyncConfig","getOrLoadEntitiesConfig","select","dispatch","getEntitiesConfig","length","window","__experimentalEnableSync","process","env","IS_GUTENBERG_PLUGIN","loader","l"],"sources":["@wordpress/core-data/src/entities.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport { getSyncProvider } from './sync';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/base',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn record?.title ?? __( 'Site Title' );\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/wp/v2/settings' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/site',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tsyncConfig: {\n\t\t\tfetch: async ( id ) => {\n\t\t\t\treturn apiFetch( {\n\t\t\t\t\tpath: `/wp/v2/types/${ id }?context=edit`,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/postType',\n\t\tgetSyncObjectId: ( id ) => id,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different from name.\n\t\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t`/wp/v2/global-styles/${ parentId }/revisions${\n\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t}`,\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'stylesheet',\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'plugin',\n\t},\n\t{\n\t\tlabel: __( 'Status' ),\n\t\tname: 'status',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/statuses',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'statuses',\n\t\tkey: 'slug',\n\t},\n];\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} );\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t\tsyncConfig: {\n\t\t\t\tfetch: async ( id ) => {\n\t\t\t\t\treturn apiFetch( {\n\t\t\t\t\t\tpath: `/${ namespace }/${ postType.rest_base }/${ id }?context=edit`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdocument.get( key ) !== value &&\n\t\t\t\t\t\t\ttypeof value !== 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsyncObjectType: 'postType/' + postType.name,\n\t\t\tgetSyncObjectId: ( id ) => id,\n\t\t\tsupportsPagination: true,\n\t\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t\t`/${ namespace }/${\n\t\t\t\t\tpostType.rest_base\n\t\t\t\t}/${ parentId }/revisions${\n\t\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t\t}`,\n\t\t\trevisionKey: isTemplate ? 'wp_id' : DEFAULT_ENTITY_KEY,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = rootEntitiesConfig.find(\n\t\t( config ) => config.kind === kind && config.name === name\n\t);\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst nameSuffix = pascalCase( name ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig && entityConfig?.plural\n\t\t\t? pascalCase( entityConfig.plural )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\nfunction registerSyncConfigs( configs ) {\n\tconfigs.forEach( ( { syncObjectType, syncConfig } ) => {\n\t\tgetSyncProvider().register( syncObjectType, syncConfig );\n\t\tconst editSyncConfig = { ...syncConfig };\n\t\tdelete editSyncConfig.fetch;\n\t\tgetSyncProvider().register( syncObjectType + '--edit', editSyncConfig );\n\t} );\n}\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig =\n\t( kind ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tlet configs = select.getEntitiesConfig( kind );\n\t\tif ( configs && configs.length !== 0 ) {\n\t\t\tif ( window.__experimentalEnableSync ) {\n\t\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tregisterSyncConfigs( configs );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn configs;\n\t\t}\n\n\t\tconst loader = additionalEntityConfigLoaders.find(\n\t\t\t( l ) => l.kind === kind\n\t\t);\n\t\tif ( ! loader ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconfigs = await loader.loadEntities();\n\t\tif ( window.__experimentalEnableSync ) {\n\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\tregisterSyncConfigs( configs );\n\t\t\t}\n\t\t}\n\n\t\tdispatch( addEntities( configs ) );\n\n\t\treturn configs;\n\t};\n"],"mappings":"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"}
1
+ {"version":3,"names":["capitalCase","pascalCase","apiFetch","__","RichTextData","addEntities","getSyncProvider","DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","kind","name","baseURL","baseURLParams","_fields","join","syncConfig","fetch","path","applyChangesToDoc","doc","changes","document","getMap","Object","entries","forEach","key","value","get","set","fromCRDTDoc","toJSON","syncObjectType","getSyncObjectId","getTitle","record","_record$title","title","context","id","plural","rawAttributes","supportsPagination","transientEdits","blocks","rendered","getRevisionsUrl","parentId","revisionId","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","serialisableBlocksCache","WeakMap","makeBlockAttributesSerializable","attributes","newAttributes","valueOf","makeBlocksSerializable","map","block","innerBlocks","rest","postTypes","postType","_postType$rest_namesp","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","_record$slug","slug","String","__unstablePrePersist","undefined","__unstable_rest_base","has","revisionKey","taxonomies","taxonomy","_taxonomy$rest_namesp","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","nameSuffix","suffix","registerSyncConfigs","configs","register","editSyncConfig","getOrLoadEntitiesConfig","select","dispatch","getEntitiesConfig","length","window","__experimentalEnableSync","process","env","IS_GUTENBERG_PLUGIN","loader","l"],"sources":["@wordpress/core-data/src/entities.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport { getSyncProvider } from './sync';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/base',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn record?.title ?? __( 'Site Title' );\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/wp/v2/settings' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/site',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tsyncConfig: {\n\t\t\tfetch: async ( id ) => {\n\t\t\t\treturn apiFetch( {\n\t\t\t\t\tpath: `/wp/v2/types/${ id }?context=edit`,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/postType',\n\t\tgetSyncObjectId: ( id ) => id,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different from name.\n\t\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t`/wp/v2/global-styles/${ parentId }/revisions${\n\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t}`,\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'stylesheet',\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'plugin',\n\t},\n\t{\n\t\tlabel: __( 'Status' ),\n\t\tname: 'status',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/statuses',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'statuses',\n\t\tkey: 'slug',\n\t},\n];\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\nconst serialisableBlocksCache = new WeakMap();\n\nfunction makeBlockAttributesSerializable( attributes ) {\n\tconst newAttributes = { ...attributes };\n\tfor ( const [ key, value ] of Object.entries( attributes ) ) {\n\t\tif ( value instanceof RichTextData ) {\n\t\t\tnewAttributes[ key ] = value.valueOf();\n\t\t}\n\t}\n\treturn newAttributes;\n}\n\nfunction makeBlocksSerializable( blocks ) {\n\treturn blocks.map( ( block ) => {\n\t\tconst { innerBlocks, attributes, ...rest } = block;\n\t\treturn {\n\t\t\t...rest,\n\t\t\tattributes: makeBlockAttributesSerializable( attributes ),\n\t\t\tinnerBlocks: makeBlocksSerializable( innerBlocks ),\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} );\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t\tsyncConfig: {\n\t\t\t\tfetch: async ( id ) => {\n\t\t\t\t\treturn apiFetch( {\n\t\t\t\t\t\tpath: `/${ namespace }/${ postType.rest_base }/${ id }?context=edit`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\t\tconst document = doc.getMap( 'document' );\n\n\t\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\t\tif ( typeof value !== 'function' ) {\n\t\t\t\t\t\t\tif ( key === 'blocks' ) {\n\t\t\t\t\t\t\t\tif ( ! serialisableBlocksCache.has( value ) ) {\n\t\t\t\t\t\t\t\t\tserialisableBlocksCache.set(\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tmakeBlocksSerializable( value )\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvalue = serialisableBlocksCache.get( value );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\t\t\tdocument.set( key, value );\n\t\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\tfromCRDTDoc: ( doc ) => {\n\t\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsyncObjectType: 'postType/' + postType.name,\n\t\t\tgetSyncObjectId: ( id ) => id,\n\t\t\tsupportsPagination: true,\n\t\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t\t`/${ namespace }/${\n\t\t\t\t\tpostType.rest_base\n\t\t\t\t}/${ parentId }/revisions${\n\t\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t\t}`,\n\t\t\trevisionKey: isTemplate ? 'wp_id' : DEFAULT_ENTITY_KEY,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = rootEntitiesConfig.find(\n\t\t( config ) => config.kind === kind && config.name === name\n\t);\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst nameSuffix = pascalCase( name ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig && entityConfig?.plural\n\t\t\t? pascalCase( entityConfig.plural )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\nfunction registerSyncConfigs( configs ) {\n\tconfigs.forEach( ( { syncObjectType, syncConfig } ) => {\n\t\tgetSyncProvider().register( syncObjectType, syncConfig );\n\t\tconst editSyncConfig = { ...syncConfig };\n\t\tdelete editSyncConfig.fetch;\n\t\tgetSyncProvider().register( syncObjectType + '--edit', editSyncConfig );\n\t} );\n}\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig =\n\t( kind ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tlet configs = select.getEntitiesConfig( kind );\n\t\tif ( configs && configs.length !== 0 ) {\n\t\t\tif ( window.__experimentalEnableSync ) {\n\t\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tregisterSyncConfigs( configs );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn configs;\n\t\t}\n\n\t\tconst loader = additionalEntityConfigLoaders.find(\n\t\t\t( l ) => l.kind === kind\n\t\t);\n\t\tif ( ! loader ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconfigs = await loader.loadEntities();\n\t\tif ( window.__experimentalEnableSync ) {\n\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\tregisterSyncConfigs( configs );\n\t\t\t}\n\t\t}\n\n\t\tdispatch( addEntities( configs ) );\n\n\t\treturn configs;\n\t};\n"],"mappings":"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"}
@@ -190,7 +190,8 @@ export function useEntityBlockEditor(kind, name, {
190
190
  return __unstableCreateUndoLevel(kind, name, id);
191
191
  }
192
192
  const {
193
- selection
193
+ selection,
194
+ ...rest
194
195
  } = options;
195
196
 
196
197
  // We create a new function here on every persistent edit
@@ -204,12 +205,14 @@ export function useEntityBlockEditor(kind, name, {
204
205
  ...updateFootnotes(newBlocks)
205
206
  };
206
207
  editEntityRecord(kind, name, id, edits, {
207
- isCached: false
208
+ isCached: false,
209
+ ...rest
208
210
  });
209
211
  }, [kind, name, id, blocks, updateFootnotes, __unstableCreateUndoLevel, editEntityRecord]);
210
212
  const onInput = useCallback((newBlocks, options) => {
211
213
  const {
212
- selection
214
+ selection,
215
+ ...rest
213
216
  } = options;
214
217
  const footnotesChanges = updateFootnotes(newBlocks);
215
218
  const edits = {
@@ -217,7 +220,8 @@ export function useEntityBlockEditor(kind, name, {
217
220
  ...footnotesChanges
218
221
  };
219
222
  editEntityRecord(kind, name, id, edits, {
220
- isCached: true
223
+ isCached: true,
224
+ ...rest
221
225
  });
222
226
  }, [kind, name, id, updateFootnotes, editEntityRecord]);
223
227
  return [blocks, onInput, onChange];
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","useCallback","useMemo","useSelect","useDispatch","parse","__unstableSerializeAndClean","STORE_NAME","updateFootnotesFromMeta","EMPTY_ARRAY","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","createElement","value","useEntityId","useEntityProp","prop","_id","providerId","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","content","editedBlocks","meta","blocks","__unstableCreateUndoLevel","updateFootnotes","_blocks","onChange","newBlocks","options","noChange","selection","edits","blocksForSerialization","isCached","onInput","footnotesChanges"],"sources":["@wordpress/core-data/src/entity-provider.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { updateFootnotesFromMeta } from './footnotes';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\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[ editEntityRecord, 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 * persistent 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, editedBlocks, meta } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\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\teditedBlocks: 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\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\treturn content && typeof content !== 'function'\n\t\t\t? parse( content )\n\t\t\t: EMPTY_ARRAY;\n\t}, [ id, editedBlocks, content ] );\n\n\tconst updateFootnotes = useCallback(\n\t\t( _blocks ) => updateFootnotesFromMeta( _blocks, meta ),\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\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 = { 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, onInput, onChange ];\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createContext","useContext","useCallback","useMemo","useSelect","useDispatch","parse","__unstableSerializeAndClean","STORE_NAME","updateFootnotesFromMeta","EMPTY_ARRAY","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","createElement","value","useEntityId","useEntityProp","prop","_id","providerId","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","content","editedBlocks","meta","blocks","__unstableCreateUndoLevel","updateFootnotes","_blocks","onChange","newBlocks","options","noChange","selection","rest","edits","blocksForSerialization","isCached","onInput","footnotesChanges"],"sources":["@wordpress/core-data/src/entity-provider.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { updateFootnotesFromMeta } from './footnotes';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\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[ editEntityRecord, 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 * persistent 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, editedBlocks, meta } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\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\teditedBlocks: 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\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\treturn content && typeof content !== 'function'\n\t\t\t? parse( content )\n\t\t\t: EMPTY_ARRAY;\n\t}, [ id, editedBlocks, content ] );\n\n\tconst updateFootnotes = useCallback(\n\t\t( _blocks ) => updateFootnotesFromMeta( _blocks, meta ),\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, ...rest } = 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\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, {\n\t\t\t\tisCached: false,\n\t\t\t\t...rest,\n\t\t\t} );\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, ...rest } = options;\n\t\t\tconst footnotesChanges = updateFootnotes( newBlocks );\n\t\t\tconst edits = { selection, ...footnotesChanges };\n\n\t\t\teditEntityRecord( kind, name, id, edits, {\n\t\t\t\tisCached: true,\n\t\t\t\t...rest,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, updateFootnotes, editEntityRecord ]\n\t);\n\n\treturn [ blocks, onInput, onChange ];\n}\n"],"mappings":"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"}
@@ -53,6 +53,12 @@ export function updateFootnotesFromMeta(blocks, meta) {
53
53
  html: replacement.innerHTML
54
54
  });
55
55
  countValue.text = String(index + 1);
56
+ countValue.formats = Array.from({
57
+ length: countValue.text.length
58
+ }, () => countValue.formats[0]);
59
+ countValue.replacements = Array.from({
60
+ length: countValue.text.length
61
+ }, () => countValue.replacements[0]);
56
62
  replacement.innerHTML = toHTMLString({
57
63
  value: countValue
58
64
  });
@@ -1 +1 @@
1
- {"version":3,"names":["RichTextData","create","toHTMLString","getFootnotesOrder","oldFootnotes","updateFootnotesFromMeta","blocks","meta","output","footnotes","undefined","newOrder","JSON","parse","currentOrder","map","fn","id","join","newFootnotes","fnId","find","content","updateAttributes","attributes","Array","isArray","key","value","richTextValue","fromHTMLString","replacements","forEach","replacement","type","index","indexOf","countValue","html","innerHTML","text","String","updateBlocksAttributes","__blocks","block","innerBlocks","newBlocks","reduce","acc","includes","stringify"],"sources":["@wordpress/core-data/src/footnotes/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichTextData, create, toHTMLString } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport getFootnotesOrder from './get-footnotes-order';\n\nlet oldFootnotes = {};\n\nexport function updateFootnotesFromMeta( blocks, meta ) {\n\tconst output = { blocks };\n\tif ( ! meta ) return output;\n\n\t// If meta.footnotes is empty, it means the meta is not registered.\n\tif ( meta.footnotes === undefined ) return output;\n\n\tconst newOrder = getFootnotesOrder( blocks );\n\n\tconst footnotes = meta.footnotes ? JSON.parse( meta.footnotes ) : [];\n\tconst currentOrder = footnotes.map( ( fn ) => fn.id );\n\n\tif ( currentOrder.join( '' ) === newOrder.join( '' ) ) return output;\n\n\tconst newFootnotes = newOrder.map(\n\t\t( fnId ) =>\n\t\t\tfootnotes.find( ( fn ) => fn.id === fnId ) ||\n\t\t\toldFootnotes[ fnId ] || {\n\t\t\t\tid: fnId,\n\t\t\t\tcontent: '',\n\t\t\t}\n\t);\n\n\tfunction updateAttributes( attributes ) {\n\t\t// Only attempt to update attributes, if attributes is an object.\n\t\tif (\n\t\t\t! attributes ||\n\t\t\tArray.isArray( attributes ) ||\n\t\t\ttypeof attributes !== 'object'\n\t\t) {\n\t\t\treturn attributes;\n\t\t}\n\n\t\tattributes = { ...attributes };\n\n\t\tfor ( const key in attributes ) {\n\t\t\tconst value = attributes[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tattributes[ key ] = value.map( updateAttributes );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// To do, remove support for string values?\n\t\t\tif (\n\t\t\t\ttypeof value !== 'string' &&\n\t\t\t\t! ( value instanceof RichTextData )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst richTextValue =\n\t\t\t\ttypeof value === 'string'\n\t\t\t\t\t? RichTextData.fromHTMLString( value )\n\t\t\t\t\t: value;\n\n\t\t\trichTextValue.replacements.forEach( ( replacement ) => {\n\t\t\t\tif ( replacement.type === 'core/footnote' ) {\n\t\t\t\t\tconst id = replacement.attributes[ 'data-fn' ];\n\t\t\t\t\tconst index = newOrder.indexOf( id );\n\t\t\t\t\t// The innerHTML contains the count wrapped in a link.\n\t\t\t\t\tconst countValue = create( {\n\t\t\t\t\t\thtml: replacement.innerHTML,\n\t\t\t\t\t} );\n\t\t\t\t\tcountValue.text = String( index + 1 );\n\t\t\t\t\treplacement.innerHTML = toHTMLString( {\n\t\t\t\t\t\tvalue: countValue,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tattributes[ key ] =\n\t\t\t\ttypeof value === 'string'\n\t\t\t\t\t? richTextValue.toHTMLString()\n\t\t\t\t\t: richTextValue;\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\tfunction updateBlocksAttributes( __blocks ) {\n\t\treturn __blocks.map( ( block ) => {\n\t\t\treturn {\n\t\t\t\t...block,\n\t\t\t\tattributes: updateAttributes( block.attributes ),\n\t\t\t\tinnerBlocks: updateBlocksAttributes( block.innerBlocks ),\n\t\t\t};\n\t\t} );\n\t}\n\n\t// We need to go through all block attributes deeply and update the\n\t// footnote anchor numbering (textContent) to match the new order.\n\tconst newBlocks = updateBlocksAttributes( blocks );\n\n\toldFootnotes = {\n\t\t...oldFootnotes,\n\t\t...footnotes.reduce( ( acc, fn ) => {\n\t\t\tif ( ! newOrder.includes( fn.id ) ) {\n\t\t\t\tacc[ fn.id ] = fn;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} ),\n\t};\n\n\treturn {\n\t\tmeta: {\n\t\t\t...meta,\n\t\t\tfootnotes: JSON.stringify( newFootnotes ),\n\t\t},\n\t\tblocks: newBlocks,\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["RichTextData","create","toHTMLString","getFootnotesOrder","oldFootnotes","updateFootnotesFromMeta","blocks","meta","output","footnotes","undefined","newOrder","JSON","parse","currentOrder","map","fn","id","join","newFootnotes","fnId","find","content","updateAttributes","attributes","Array","isArray","key","value","richTextValue","fromHTMLString","replacements","forEach","replacement","type","index","indexOf","countValue","html","innerHTML","text","String","formats","from","length","updateBlocksAttributes","__blocks","block","innerBlocks","newBlocks","reduce","acc","includes","stringify"],"sources":["@wordpress/core-data/src/footnotes/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichTextData, create, toHTMLString } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport getFootnotesOrder from './get-footnotes-order';\n\nlet oldFootnotes = {};\n\nexport function updateFootnotesFromMeta( blocks, meta ) {\n\tconst output = { blocks };\n\tif ( ! meta ) return output;\n\n\t// If meta.footnotes is empty, it means the meta is not registered.\n\tif ( meta.footnotes === undefined ) return output;\n\n\tconst newOrder = getFootnotesOrder( blocks );\n\n\tconst footnotes = meta.footnotes ? JSON.parse( meta.footnotes ) : [];\n\tconst currentOrder = footnotes.map( ( fn ) => fn.id );\n\n\tif ( currentOrder.join( '' ) === newOrder.join( '' ) ) return output;\n\n\tconst newFootnotes = newOrder.map(\n\t\t( fnId ) =>\n\t\t\tfootnotes.find( ( fn ) => fn.id === fnId ) ||\n\t\t\toldFootnotes[ fnId ] || {\n\t\t\t\tid: fnId,\n\t\t\t\tcontent: '',\n\t\t\t}\n\t);\n\n\tfunction updateAttributes( attributes ) {\n\t\t// Only attempt to update attributes, if attributes is an object.\n\t\tif (\n\t\t\t! attributes ||\n\t\t\tArray.isArray( attributes ) ||\n\t\t\ttypeof attributes !== 'object'\n\t\t) {\n\t\t\treturn attributes;\n\t\t}\n\n\t\tattributes = { ...attributes };\n\n\t\tfor ( const key in attributes ) {\n\t\t\tconst value = attributes[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tattributes[ key ] = value.map( updateAttributes );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// To do, remove support for string values?\n\t\t\tif (\n\t\t\t\ttypeof value !== 'string' &&\n\t\t\t\t! ( value instanceof RichTextData )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst richTextValue =\n\t\t\t\ttypeof value === 'string'\n\t\t\t\t\t? RichTextData.fromHTMLString( value )\n\t\t\t\t\t: value;\n\n\t\t\trichTextValue.replacements.forEach( ( replacement ) => {\n\t\t\t\tif ( replacement.type === 'core/footnote' ) {\n\t\t\t\t\tconst id = replacement.attributes[ 'data-fn' ];\n\t\t\t\t\tconst index = newOrder.indexOf( id );\n\t\t\t\t\t// The innerHTML contains the count wrapped in a link.\n\t\t\t\t\tconst countValue = create( {\n\t\t\t\t\t\thtml: replacement.innerHTML,\n\t\t\t\t\t} );\n\t\t\t\t\tcountValue.text = String( index + 1 );\n\t\t\t\t\tcountValue.formats = Array.from(\n\t\t\t\t\t\t{ length: countValue.text.length },\n\t\t\t\t\t\t() => countValue.formats[ 0 ]\n\t\t\t\t\t);\n\t\t\t\t\tcountValue.replacements = Array.from(\n\t\t\t\t\t\t{ length: countValue.text.length },\n\t\t\t\t\t\t() => countValue.replacements[ 0 ]\n\t\t\t\t\t);\n\t\t\t\t\treplacement.innerHTML = toHTMLString( {\n\t\t\t\t\t\tvalue: countValue,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tattributes[ key ] =\n\t\t\t\ttypeof value === 'string'\n\t\t\t\t\t? richTextValue.toHTMLString()\n\t\t\t\t\t: richTextValue;\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\tfunction updateBlocksAttributes( __blocks ) {\n\t\treturn __blocks.map( ( block ) => {\n\t\t\treturn {\n\t\t\t\t...block,\n\t\t\t\tattributes: updateAttributes( block.attributes ),\n\t\t\t\tinnerBlocks: updateBlocksAttributes( block.innerBlocks ),\n\t\t\t};\n\t\t} );\n\t}\n\n\t// We need to go through all block attributes deeply and update the\n\t// footnote anchor numbering (textContent) to match the new order.\n\tconst newBlocks = updateBlocksAttributes( blocks );\n\n\toldFootnotes = {\n\t\t...oldFootnotes,\n\t\t...footnotes.reduce( ( acc, fn ) => {\n\t\t\tif ( ! newOrder.includes( fn.id ) ) {\n\t\t\t\tacc[ fn.id ] = fn;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} ),\n\t};\n\n\treturn {\n\t\tmeta: {\n\t\t\t...meta,\n\t\t\tfootnotes: JSON.stringify( newFootnotes ),\n\t\t},\n\t\tblocks: newBlocks,\n\t};\n}\n"],"mappings":"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"}
@@ -46,8 +46,8 @@ const entityActions = rootEntitiesConfig.reduce((result, entity) => {
46
46
  kind,
47
47
  name
48
48
  } = entity;
49
- result[getMethodName(kind, name, 'save')] = key => actions.saveEntityRecord(kind, name, key);
50
- result[getMethodName(kind, name, 'delete')] = (key, query) => actions.deleteEntityRecord(kind, name, key, query);
49
+ result[getMethodName(kind, name, 'save')] = (record, options) => actions.saveEntityRecord(kind, name, record, options);
50
+ result[getMethodName(kind, name, 'delete')] = (key, query, options) => actions.deleteEntityRecord(kind, name, key, query, options);
51
51
  return result;
52
52
  }, {});
53
53
  const storeConfig = () => ({
@@ -1 +1 @@
1
- {"version":3,"names":["createReduxStore","register","reducer","selectors","privateSelectors","actions","resolvers","createLocksActions","rootEntitiesConfig","getMethodName","STORE_NAME","unlock","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","store","registerPrivateSelectors","default","EntityProvider"],"sources":["@wordpress/core-data/src/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as privateSelectors from './private-selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { rootEntitiesConfig, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './private-apis';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nunlock( store ).registerPrivateSelectors( privateSelectors );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"],"mappings":"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"}
1
+ {"version":3,"names":["createReduxStore","register","reducer","selectors","privateSelectors","actions","resolvers","createLocksActions","rootEntitiesConfig","getMethodName","STORE_NAME","unlock","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","record","options","saveEntityRecord","deleteEntityRecord","storeConfig","store","registerPrivateSelectors","default","EntityProvider"],"sources":["@wordpress/core-data/src/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as privateSelectors from './private-selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { rootEntitiesConfig, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './private-apis';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( record, options ) =>\n\t\tactions.saveEntityRecord( kind, name, record, options );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query, options ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query, options );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nunlock( store ).registerPrivateSelectors( privateSelectors );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.js"],"names":[],"mappings":"AAiBA,sCAAuC;AAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2NE;AAEF;;;IAGE;AASK,0EAqBN;AA+GM,oCAPI,MAAM,QACN,MAAM,WACN,MAAM,cACN,OAAO,GAEN,MAAM,CAkBjB;AAkBM,8CAJI,MAAM,eAEO,MAAM,KAAK,cAAc,CAiC/C;AA9KF;;;;GAIG;AACH,sDA8DC"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.js"],"names":[],"mappings":"AAkBA,sCAAuC;AAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2NE;AAEF;;;IAGE;AASK,0EAqBN;AAiJM,oCAPI,MAAM,QACN,MAAM,WACN,MAAM,cACN,OAAO,GAEN,MAAM,CAkBjB;AAkBM,8CAJI,MAAM,eAEO,MAAM,KAAK,cAAc,CAiC/C;AAzLF;;;;GAIG;AACH,sDAyEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-provider.d.ts","sourceRoot":"","sources":["../src/entity-provider.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;;;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,CAqF1C"}
1
+ {"version":3,"file":"entity-provider.d.ts","sourceRoot":"","sources":["../src/entity-provider.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;;;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,CA2F1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EA+GC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EAuHC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/core-data",
3
- "version": "6.25.0",
3
+ "version": "6.26.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,21 +31,21 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/api-fetch": "^6.45.0",
35
- "@wordpress/block-editor": "^12.16.0",
36
- "@wordpress/blocks": "^12.25.0",
37
- "@wordpress/compose": "^6.25.0",
38
- "@wordpress/data": "^9.18.0",
39
- "@wordpress/deprecated": "^3.48.0",
40
- "@wordpress/element": "^5.25.0",
41
- "@wordpress/html-entities": "^3.48.0",
42
- "@wordpress/i18n": "^4.48.0",
43
- "@wordpress/is-shallow-equal": "^4.48.0",
44
- "@wordpress/private-apis": "^0.30.0",
45
- "@wordpress/rich-text": "^6.25.0",
46
- "@wordpress/sync": "^0.10.0",
47
- "@wordpress/undo-manager": "^0.8.0",
48
- "@wordpress/url": "^3.49.0",
34
+ "@wordpress/api-fetch": "^6.46.0",
35
+ "@wordpress/block-editor": "^12.17.0",
36
+ "@wordpress/blocks": "^12.26.0",
37
+ "@wordpress/compose": "^6.26.0",
38
+ "@wordpress/data": "^9.19.0",
39
+ "@wordpress/deprecated": "^3.49.0",
40
+ "@wordpress/element": "^5.26.0",
41
+ "@wordpress/html-entities": "^3.49.0",
42
+ "@wordpress/i18n": "^4.49.0",
43
+ "@wordpress/is-shallow-equal": "^4.49.0",
44
+ "@wordpress/private-apis": "^0.31.0",
45
+ "@wordpress/rich-text": "^6.26.0",
46
+ "@wordpress/sync": "^0.11.0",
47
+ "@wordpress/undo-manager": "^0.9.0",
48
+ "@wordpress/url": "^3.50.0",
49
49
  "change-case": "^4.1.2",
50
50
  "equivalent-key-map": "^0.2.2",
51
51
  "fast-deep-equal": "^3.1.3",
@@ -60,5 +60,5 @@
60
60
  "publishConfig": {
61
61
  "access": "public"
62
62
  },
63
- "gitHead": "fcf61b4beff747222c2c81d09d757ca1a0abd925"
63
+ "gitHead": "5e6f9caa205d3bfdbac131952b7bf9c6ec60569b"
64
64
  }
package/src/entities.js CHANGED
@@ -8,6 +8,7 @@ import { capitalCase, pascalCase } from 'change-case';
8
8
  */
9
9
  import apiFetch from '@wordpress/api-fetch';
10
10
  import { __ } from '@wordpress/i18n';
11
+ import { RichTextData } from '@wordpress/rich-text';
11
12
 
12
13
  /**
13
14
  * Internal dependencies
@@ -275,6 +276,29 @@ export const prePersistPostType = ( persistedRecord, edits ) => {
275
276
  return newEdits;
276
277
  };
277
278
 
279
+ const serialisableBlocksCache = new WeakMap();
280
+
281
+ function makeBlockAttributesSerializable( attributes ) {
282
+ const newAttributes = { ...attributes };
283
+ for ( const [ key, value ] of Object.entries( attributes ) ) {
284
+ if ( value instanceof RichTextData ) {
285
+ newAttributes[ key ] = value.valueOf();
286
+ }
287
+ }
288
+ return newAttributes;
289
+ }
290
+
291
+ function makeBlocksSerializable( blocks ) {
292
+ return blocks.map( ( block ) => {
293
+ const { innerBlocks, attributes, ...rest } = block;
294
+ return {
295
+ ...rest,
296
+ attributes: makeBlockAttributesSerializable( attributes ),
297
+ innerBlocks: makeBlocksSerializable( innerBlocks ),
298
+ };
299
+ } );
300
+ }
301
+
278
302
  /**
279
303
  * Returns the list of post type entities.
280
304
  *
@@ -317,12 +341,23 @@ async function loadPostTypeEntities() {
317
341
  },
318
342
  applyChangesToDoc: ( doc, changes ) => {
319
343
  const document = doc.getMap( 'document' );
344
+
320
345
  Object.entries( changes ).forEach( ( [ key, value ] ) => {
321
- if (
322
- document.get( key ) !== value &&
323
- typeof value !== 'function'
324
- ) {
325
- document.set( key, value );
346
+ if ( typeof value !== 'function' ) {
347
+ if ( key === 'blocks' ) {
348
+ if ( ! serialisableBlocksCache.has( value ) ) {
349
+ serialisableBlocksCache.set(
350
+ value,
351
+ makeBlocksSerializable( value )
352
+ );
353
+ }
354
+
355
+ value = serialisableBlocksCache.get( value );
356
+ }
357
+
358
+ if ( document.get( key ) !== value ) {
359
+ document.set( key, value );
360
+ }
326
361
  }
327
362
  } );
328
363
  },
@@ -196,7 +196,7 @@ export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
196
196
  if ( noChange ) {
197
197
  return __unstableCreateUndoLevel( kind, name, id );
198
198
  }
199
- const { selection } = options;
199
+ const { selection, ...rest } = options;
200
200
 
201
201
  // We create a new function here on every persistent edit
202
202
  // to make sure the edit makes the post dirty and creates
@@ -208,7 +208,10 @@ export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
208
208
  ...updateFootnotes( newBlocks ),
209
209
  };
210
210
 
211
- editEntityRecord( kind, name, id, edits, { isCached: false } );
211
+ editEntityRecord( kind, name, id, edits, {
212
+ isCached: false,
213
+ ...rest,
214
+ } );
212
215
  },
213
216
  [
214
217
  kind,
@@ -223,11 +226,14 @@ export function useEntityBlockEditor( kind, name, { id: _id } = {} ) {
223
226
 
224
227
  const onInput = useCallback(
225
228
  ( newBlocks, options ) => {
226
- const { selection } = options;
229
+ const { selection, ...rest } = options;
227
230
  const footnotesChanges = updateFootnotes( newBlocks );
228
231
  const edits = { selection, ...footnotesChanges };
229
232
 
230
- editEntityRecord( kind, name, id, edits, { isCached: true } );
233
+ editEntityRecord( kind, name, id, edits, {
234
+ isCached: true,
235
+ ...rest,
236
+ } );
231
237
  },
232
238
  [ kind, name, id, updateFootnotes, editEntityRecord ]
233
239
  );
@@ -75,6 +75,14 @@ export function updateFootnotesFromMeta( blocks, meta ) {
75
75
  html: replacement.innerHTML,
76
76
  } );
77
77
  countValue.text = String( index + 1 );
78
+ countValue.formats = Array.from(
79
+ { length: countValue.text.length },
80
+ () => countValue.formats[ 0 ]
81
+ );
82
+ countValue.replacements = Array.from(
83
+ { length: countValue.text.length },
84
+ () => countValue.replacements[ 0 ]
85
+ );
78
86
  replacement.innerHTML = toHTMLString( {
79
87
  value: countValue,
80
88
  } );
@@ -50,11 +50,9 @@ describe( 'useQuerySelect', () => {
50
50
  <TestComponent keyName="foo" />
51
51
  </RegistryProvider>
52
52
  );
53
- // 2 times expected
54
- // - 1 for initial mount
55
- // - 1 for after mount before subscription set.
56
- expect( selectSpy ).toHaveBeenCalledTimes( 2 );
57
- expect( TestComponent ).toHaveBeenCalledTimes( 2 );
53
+
54
+ expect( selectSpy ).toHaveBeenCalledTimes( 1 );
55
+ expect( TestComponent ).toHaveBeenCalledTimes( 1 );
58
56
 
59
57
  // ensure expected state was rendered
60
58
  expect( screen.getByText( 'bar' ) ).toBeInTheDocument();
@@ -81,10 +79,9 @@ describe( 'useQuerySelect', () => {
81
79
  );
82
80
 
83
81
  // ensure the selectors were properly memoized
84
- expect( selectors ).toHaveLength( 4 );
82
+ expect( selectors ).toHaveLength( 2 );
85
83
  expect( selectors[ 0 ] ).toHaveProperty( 'testSelector' );
86
84
  expect( selectors[ 0 ] ).toBe( selectors[ 1 ] );
87
- expect( selectors[ 1 ] ).toBe( selectors[ 2 ] );
88
85
 
89
86
  // Re-render
90
87
  render(
@@ -94,9 +91,10 @@ describe( 'useQuerySelect', () => {
94
91
  );
95
92
 
96
93
  // ensure we still got the memoized results after re-rendering
97
- expect( selectors ).toHaveLength( 8 );
98
- expect( selectors[ 3 ] ).toHaveProperty( 'testSelector' );
99
- expect( selectors[ 5 ] ).toBe( selectors[ 6 ] );
94
+ expect( selectors ).toHaveLength( 4 );
95
+ expect( selectors[ 2 ] ).toHaveProperty( 'testSelector' );
96
+ expect( selectors[ 1 ] ).toBe( selectors[ 2 ] );
97
+ expect( selectors[ 2 ] ).toBe( selectors[ 3 ] );
100
98
  } );
101
99
 
102
100
  it( 'returns the expected "response" details – no resolvers and arguments', () => {
package/src/index.js CHANGED
@@ -44,10 +44,10 @@ const entityResolvers = rootEntitiesConfig.reduce( ( result, entity ) => {
44
44
 
45
45
  const entityActions = rootEntitiesConfig.reduce( ( result, entity ) => {
46
46
  const { kind, name } = entity;
47
- result[ getMethodName( kind, name, 'save' ) ] = ( key ) =>
48
- actions.saveEntityRecord( kind, name, key );
49
- result[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>
50
- actions.deleteEntityRecord( kind, name, key, query );
47
+ result[ getMethodName( kind, name, 'save' ) ] = ( record, options ) =>
48
+ actions.saveEntityRecord( kind, name, record, options );
49
+ result[ getMethodName( kind, name, 'delete' ) ] = ( key, query, options ) =>
50
+ actions.deleteEntityRecord( kind, name, key, query, options );
51
51
  return result;
52
52
  }, {} );
53
53