@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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 6.26.0 (2024-01-10)
6
+
5
7
  ## 6.25.0 (2023-12-13)
6
8
 
7
9
  ## 6.24.0 (2023-11-29)
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Gutenberg
2
2
 
3
- Copyright 2016-2023 by the contributors
3
+ Copyright 2016-2024 by the contributors
4
4
 
5
5
  **License for Contributions (on and after April 15, 2021)**
6
6
 
package/build/entities.js CHANGED
@@ -8,6 +8,7 @@ exports.rootEntitiesConfig = exports.prePersistPostType = exports.getOrLoadEntit
8
8
  var _changeCase = require("change-case");
9
9
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
10
10
  var _i18n = require("@wordpress/i18n");
11
+ var _richText = require("@wordpress/rich-text");
11
12
  var _actions = require("./actions");
12
13
  var _sync = require("./sync");
13
14
  /**
@@ -286,13 +287,39 @@ const prePersistPostType = (persistedRecord, edits) => {
286
287
  }
287
288
  return newEdits;
288
289
  };
290
+ exports.prePersistPostType = prePersistPostType;
291
+ const serialisableBlocksCache = new WeakMap();
292
+ function makeBlockAttributesSerializable(attributes) {
293
+ const newAttributes = {
294
+ ...attributes
295
+ };
296
+ for (const [key, value] of Object.entries(attributes)) {
297
+ if (value instanceof _richText.RichTextData) {
298
+ newAttributes[key] = value.valueOf();
299
+ }
300
+ }
301
+ return newAttributes;
302
+ }
303
+ function makeBlocksSerializable(blocks) {
304
+ return blocks.map(block => {
305
+ const {
306
+ innerBlocks,
307
+ attributes,
308
+ ...rest
309
+ } = block;
310
+ return {
311
+ ...rest,
312
+ attributes: makeBlockAttributesSerializable(attributes),
313
+ innerBlocks: makeBlocksSerializable(innerBlocks)
314
+ };
315
+ });
316
+ }
289
317
 
290
318
  /**
291
319
  * Returns the list of post type entities.
292
320
  *
293
321
  * @return {Promise} Entities promise
294
322
  */
295
- exports.prePersistPostType = prePersistPostType;
296
323
  async function loadPostTypeEntities() {
297
324
  const postTypes = await (0, _apiFetch.default)({
298
325
  path: '/wp/v2/types?context=view'
@@ -332,8 +359,16 @@ async function loadPostTypeEntities() {
332
359
  applyChangesToDoc: (doc, changes) => {
333
360
  const document = doc.getMap('document');
334
361
  Object.entries(changes).forEach(([key, value]) => {
335
- if (document.get(key) !== value && typeof value !== 'function') {
336
- document.set(key, value);
362
+ if (typeof value !== 'function') {
363
+ if (key === 'blocks') {
364
+ if (!serialisableBlocksCache.has(value)) {
365
+ serialisableBlocksCache.set(value, makeBlocksSerializable(value));
366
+ }
367
+ value = serialisableBlocksCache.get(value);
368
+ }
369
+ if (document.get(key) !== value) {
370
+ document.set(key, value);
371
+ }
337
372
  }
338
373
  });
339
374
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_changeCase","require","_apiFetch","_interopRequireDefault","_i18n","_actions","_sync","DEFAULT_ENTITY_KEY","exports","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","__","kind","name","baseURL","baseURLParams","_fields","join","syncConfig","fetch","apiFetch","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","capitalCase","slug","String","__unstablePrePersist","undefined","__unstable_rest_base","revisionKey","taxonomies","taxonomy","_taxonomy$rest_namesp","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","pascalCase","nameSuffix","suffix","registerSyncConfigs","configs","getSyncProvider","register","editSyncConfig","getOrLoadEntitiesConfig","select","dispatch","getEntitiesConfig","length","window","__experimentalEnableSync","process","env","IS_GUTENBERG_PLUGIN","loader","l","addEntities"],"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":["_changeCase","require","_apiFetch","_interopRequireDefault","_i18n","_richText","_actions","_sync","DEFAULT_ENTITY_KEY","exports","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","__","kind","name","baseURL","baseURLParams","_fields","join","syncConfig","fetch","apiFetch","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","RichTextData","valueOf","makeBlocksSerializable","map","block","innerBlocks","rest","postTypes","postType","_postType$rest_namesp","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","_record$slug","capitalCase","slug","String","__unstablePrePersist","undefined","__unstable_rest_base","has","revisionKey","taxonomies","taxonomy","_taxonomy$rest_namesp","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","pascalCase","nameSuffix","suffix","registerSyncConfigs","configs","getSyncProvider","register","editSyncConfig","getOrLoadEntitiesConfig","select","dispatch","getEntitiesConfig","length","window","__experimentalEnableSync","process","env","IS_GUTENBERG_PLUGIN","loader","l","addEntities"],"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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"}
@@ -200,7 +200,8 @@ function useEntityBlockEditor(kind, name, {
200
200
  return __unstableCreateUndoLevel(kind, name, id);
201
201
  }
202
202
  const {
203
- selection
203
+ selection,
204
+ ...rest
204
205
  } = options;
205
206
 
206
207
  // We create a new function here on every persistent edit
@@ -214,12 +215,14 @@ function useEntityBlockEditor(kind, name, {
214
215
  ...updateFootnotes(newBlocks)
215
216
  };
216
217
  editEntityRecord(kind, name, id, edits, {
217
- isCached: false
218
+ isCached: false,
219
+ ...rest
218
220
  });
219
221
  }, [kind, name, id, blocks, updateFootnotes, __unstableCreateUndoLevel, editEntityRecord]);
220
222
  const onInput = (0, _element.useCallback)((newBlocks, options) => {
221
223
  const {
222
- selection
224
+ selection,
225
+ ...rest
223
226
  } = options;
224
227
  const footnotesChanges = updateFootnotes(newBlocks);
225
228
  const edits = {
@@ -227,7 +230,8 @@ function useEntityBlockEditor(kind, name, {
227
230
  ...footnotesChanges
228
231
  };
229
232
  editEntityRecord(kind, name, id, edits, {
230
- isCached: true
233
+ isCached: true,
234
+ ...rest
231
235
  });
232
236
  }, [kind, name, id, updateFootnotes, editEntityRecord]);
233
237
  return [blocks, onInput, onChange];
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_data","_blocks2","_name","_footnotes","_entities","EMPTY_ARRAY","entityContexts","rootEntitiesConfig","reduce","acc","loader","kind","name","context","createContext","undefined","additionalEntityConfigLoaders","getEntityContext","Error","EntityProvider","type","id","children","Provider","_react","createElement","value","useEntityId","useContext","useEntityProp","prop","_id","providerId","fullValue","useSelect","select","getEntityRecord","getEditedEntityRecord","STORE_NAME","record","editedRecord","editEntityRecord","useDispatch","setValue","useCallback","newValue","useEntityBlockEditor","content","editedBlocks","meta","blocks","__unstableCreateUndoLevel","useMemo","parse","updateFootnotes","_blocks","updateFootnotesFromMeta","onChange","newBlocks","options","noChange","selection","edits","blocksForSerialization","__unstableSerializeAndClean","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":["_element","require","_data","_blocks2","_name","_footnotes","_entities","EMPTY_ARRAY","entityContexts","rootEntitiesConfig","reduce","acc","loader","kind","name","context","createContext","undefined","additionalEntityConfigLoaders","getEntityContext","Error","EntityProvider","type","id","children","Provider","_react","createElement","value","useEntityId","useContext","useEntityProp","prop","_id","providerId","fullValue","useSelect","select","getEntityRecord","getEditedEntityRecord","STORE_NAME","record","editedRecord","editEntityRecord","useDispatch","setValue","useCallback","newValue","useEntityBlockEditor","content","editedBlocks","meta","blocks","__unstableCreateUndoLevel","useMemo","parse","updateFootnotes","_blocks","updateFootnotesFromMeta","onChange","newBlocks","options","noChange","selection","rest","edits","blocksForSerialization","__unstableSerializeAndClean","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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"}
@@ -61,6 +61,12 @@ function updateFootnotesFromMeta(blocks, meta) {
61
61
  html: replacement.innerHTML
62
62
  });
63
63
  countValue.text = String(index + 1);
64
+ countValue.formats = Array.from({
65
+ length: countValue.text.length
66
+ }, () => countValue.formats[0]);
67
+ countValue.replacements = Array.from({
68
+ length: countValue.text.length
69
+ }, () => countValue.replacements[0]);
64
70
  replacement.innerHTML = (0, _richText.toHTMLString)({
65
71
  value: countValue
66
72
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_richText","require","_getFootnotesOrder","_interopRequireDefault","oldFootnotes","updateFootnotesFromMeta","blocks","meta","output","footnotes","undefined","newOrder","getFootnotesOrder","JSON","parse","currentOrder","map","fn","id","join","newFootnotes","fnId","find","content","updateAttributes","attributes","Array","isArray","key","value","RichTextData","richTextValue","fromHTMLString","replacements","forEach","replacement","type","index","indexOf","countValue","create","html","innerHTML","text","String","toHTMLString","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":["_richText","require","_getFootnotesOrder","_interopRequireDefault","oldFootnotes","updateFootnotesFromMeta","blocks","meta","output","footnotes","undefined","newOrder","getFootnotesOrder","JSON","parse","currentOrder","map","fn","id","join","newFootnotes","fnId","find","content","updateAttributes","attributes","Array","isArray","key","value","RichTextData","richTextValue","fromHTMLString","replacements","forEach","replacement","type","index","indexOf","countValue","create","html","innerHTML","text","String","formats","from","length","toHTMLString","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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"}
package/build/index.js CHANGED
@@ -113,8 +113,8 @@ const entityActions = _entities.rootEntitiesConfig.reduce((result, entity) => {
113
113
  kind,
114
114
  name
115
115
  } = entity;
116
- result[(0, _entities.getMethodName)(kind, name, 'save')] = key => actions.saveEntityRecord(kind, name, key);
117
- result[(0, _entities.getMethodName)(kind, name, 'delete')] = (key, query) => actions.deleteEntityRecord(kind, name, key, query);
116
+ result[(0, _entities.getMethodName)(kind, name, 'save')] = (record, options) => actions.saveEntityRecord(kind, name, record, options);
117
+ result[(0, _entities.getMethodName)(kind, name, 'delete')] = (key, query, options) => actions.deleteEntityRecord(kind, name, key, query, options);
118
118
  return result;
119
119
  }, {});
120
120
  const storeConfig = () => ({
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_reducer","_interopRequireDefault","selectors","_interopRequireWildcard","privateSelectors","actions","resolvers","_actions2","_entities","_name","_privateApis","_entityProvider","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_entityTypes","_fetch","_hooks","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","entitySelectors","rootEntitiesConfig","reduce","result","entity","kind","name","getMethodName","state","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","createLocksActions","store","createReduxStore","STORE_NAME","unlock","registerPrivateSelectors","register"],"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":["_data","require","_reducer","_interopRequireDefault","selectors","_interopRequireWildcard","privateSelectors","actions","resolvers","_actions2","_entities","_name","_privateApis","_entityProvider","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_entityTypes","_fetch","_hooks","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","entitySelectors","rootEntitiesConfig","reduce","result","entity","kind","name","getMethodName","state","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","record","options","saveEntityRecord","deleteEntityRecord","storeConfig","reducer","createLocksActions","store","createReduxStore","STORE_NAME","unlock","registerPrivateSelectors","register"],"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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"}
@@ -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,32 @@ export const prePersistPostType = (persistedRecord, edits) => {
275
276
  }
276
277
  return newEdits;
277
278
  };
279
+ const serialisableBlocksCache = new WeakMap();
280
+ function makeBlockAttributesSerializable(attributes) {
281
+ const newAttributes = {
282
+ ...attributes
283
+ };
284
+ for (const [key, value] of Object.entries(attributes)) {
285
+ if (value instanceof RichTextData) {
286
+ newAttributes[key] = value.valueOf();
287
+ }
288
+ }
289
+ return newAttributes;
290
+ }
291
+ function makeBlocksSerializable(blocks) {
292
+ return blocks.map(block => {
293
+ const {
294
+ innerBlocks,
295
+ attributes,
296
+ ...rest
297
+ } = block;
298
+ return {
299
+ ...rest,
300
+ attributes: makeBlockAttributesSerializable(attributes),
301
+ innerBlocks: makeBlocksSerializable(innerBlocks)
302
+ };
303
+ });
304
+ }
278
305
 
279
306
  /**
280
307
  * Returns the list of post type entities.
@@ -320,8 +347,16 @@ async function loadPostTypeEntities() {
320
347
  applyChangesToDoc: (doc, changes) => {
321
348
  const document = doc.getMap('document');
322
349
  Object.entries(changes).forEach(([key, value]) => {
323
- if (document.get(key) !== value && typeof value !== 'function') {
324
- document.set(key, value);
350
+ if (typeof value !== 'function') {
351
+ if (key === 'blocks') {
352
+ if (!serialisableBlocksCache.has(value)) {
353
+ serialisableBlocksCache.set(value, makeBlocksSerializable(value));
354
+ }
355
+ value = serialisableBlocksCache.get(value);
356
+ }
357
+ if (document.get(key) !== value) {
358
+ document.set(key, value);
359
+ }
325
360
  }
326
361
  });
327
362
  },