@wordpress/core-data 7.39.1-next.v.202602091733.0 → 7.40.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 +2 -0
- package/README.md +41 -0
- package/build/actions.cjs +52 -0
- package/build/actions.cjs.map +2 -2
- package/build/awareness/base-awareness.cjs +1 -8
- package/build/awareness/base-awareness.cjs.map +2 -2
- package/build/awareness/types.cjs.map +1 -1
- package/build/awareness/utils.cjs +8 -51
- package/build/awareness/utils.cjs.map +2 -2
- package/build/entities.cjs +7 -1
- package/build/entities.cjs.map +2 -2
- package/build/hooks/use-entity-block-editor.cjs +13 -19
- package/build/hooks/use-entity-block-editor.cjs.map +2 -2
- package/build/index.cjs +6 -1
- package/build/index.cjs.map +2 -2
- package/build/private-actions.cjs +8 -0
- package/build/private-actions.cjs.map +2 -2
- package/build/private-apis.cjs +2 -1
- package/build/private-apis.cjs.map +2 -2
- package/build/private-selectors.cjs +5 -0
- package/build/private-selectors.cjs.map +2 -2
- package/build/reducer.cjs +31 -1
- package/build/reducer.cjs.map +2 -2
- package/build/resolvers.cjs +26 -1
- package/build/resolvers.cjs.map +2 -2
- package/build/selectors.cjs +15 -0
- package/build/selectors.cjs.map +2 -2
- package/build/utils/crdt-blocks.cjs +5 -3
- package/build/utils/crdt-blocks.cjs.map +2 -2
- package/build/utils/crdt.cjs +23 -19
- package/build/utils/crdt.cjs.map +2 -2
- package/build-module/actions.mjs +50 -0
- package/build-module/actions.mjs.map +2 -2
- package/build-module/awareness/base-awareness.mjs +1 -8
- package/build-module/awareness/base-awareness.mjs.map +2 -2
- package/build-module/awareness/utils.mjs +8 -51
- package/build-module/awareness/utils.mjs.map +2 -2
- package/build-module/entities.mjs +7 -1
- package/build-module/entities.mjs.map +2 -2
- package/build-module/hooks/use-entity-block-editor.mjs +13 -19
- package/build-module/hooks/use-entity-block-editor.mjs.map +2 -2
- package/build-module/index.mjs +3 -0
- package/build-module/index.mjs.map +2 -2
- package/build-module/private-actions.mjs +7 -0
- package/build-module/private-actions.mjs.map +2 -2
- package/build-module/private-apis.mjs +6 -2
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/private-selectors.mjs +8 -1
- package/build-module/private-selectors.mjs.map +2 -2
- package/build-module/reducer.mjs +29 -1
- package/build-module/reducer.mjs.map +2 -2
- package/build-module/resolvers.mjs +25 -1
- package/build-module/resolvers.mjs.map +2 -2
- package/build-module/selectors.mjs +14 -0
- package/build-module/selectors.mjs.map +2 -2
- package/build-module/utils/crdt-blocks.mjs +3 -2
- package/build-module/utils/crdt-blocks.mjs.map +2 -2
- package/build-module/utils/crdt.mjs +25 -20
- package/build-module/utils/crdt.mjs.map +2 -2
- package/build-types/actions.d.ts +12 -0
- package/build-types/actions.d.ts.map +1 -1
- package/build-types/awareness/base-awareness.d.ts.map +1 -1
- package/build-types/awareness/test/awareness-state.d.ts +2 -0
- package/build-types/awareness/test/awareness-state.d.ts.map +1 -0
- package/build-types/awareness/test/base-awareness.d.ts +2 -0
- package/build-types/awareness/test/base-awareness.d.ts.map +1 -0
- package/build-types/awareness/test/post-editor-awareness.d.ts +2 -0
- package/build-types/awareness/test/post-editor-awareness.d.ts.map +1 -0
- package/build-types/awareness/test/typed-awareness.d.ts +2 -0
- package/build-types/awareness/test/typed-awareness.d.ts.map +1 -0
- package/build-types/awareness/test/utils.d.ts +2 -0
- package/build-types/awareness/test/utils.d.ts.map +1 -0
- package/build-types/awareness/types.d.ts +0 -1
- package/build-types/awareness/types.d.ts.map +1 -1
- package/build-types/awareness/utils.d.ts +2 -3
- package/build-types/awareness/utils.d.ts.map +1 -1
- package/build-types/entities.d.ts.map +1 -1
- package/build-types/hooks/test/use-post-editor-awareness-state.d.ts +2 -0
- package/build-types/hooks/test/use-post-editor-awareness-state.d.ts.map +1 -0
- package/build-types/hooks/use-entity-block-editor.d.ts.map +1 -1
- package/build-types/index.d.ts +5 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/private-actions.d.ts +8 -0
- package/build-types/private-actions.d.ts.map +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/private-selectors.d.ts +8 -1
- package/build-types/private-selectors.d.ts.map +1 -1
- package/build-types/reducer.d.ts +23 -0
- package/build-types/reducer.d.ts.map +1 -1
- package/build-types/resolvers.d.ts +3 -0
- package/build-types/resolvers.d.ts.map +1 -1
- package/build-types/selectors.d.ts +17 -0
- package/build-types/selectors.d.ts.map +1 -1
- package/build-types/utils/crdt-blocks.d.ts +9 -0
- package/build-types/utils/crdt-blocks.d.ts.map +1 -1
- package/build-types/utils/crdt.d.ts +6 -4
- package/build-types/utils/crdt.d.ts.map +1 -1
- package/package.json +18 -18
- package/src/actions.js +78 -0
- package/src/awareness/base-awareness.ts +1 -14
- package/src/awareness/test/awareness-state.ts +417 -0
- package/src/awareness/test/base-awareness.ts +321 -0
- package/src/awareness/test/post-editor-awareness.ts +561 -0
- package/src/awareness/test/typed-awareness.ts +148 -0
- package/src/awareness/test/utils.ts +305 -0
- package/src/awareness/types.ts +0 -1
- package/src/awareness/utils.ts +8 -82
- package/src/entities.js +7 -1
- package/src/hooks/test/use-post-editor-awareness-state.ts +477 -0
- package/src/hooks/use-entity-block-editor.js +15 -21
- package/src/index.js +7 -0
- package/src/private-actions.js +14 -0
- package/src/private-apis.js +5 -1
- package/src/private-selectors.ts +16 -1
- package/src/reducer.js +45 -0
- package/src/resolvers.js +31 -2
- package/src/selectors.ts +41 -0
- package/src/test/actions.js +79 -0
- package/src/test/entity-provider.js +74 -0
- package/src/test/resolvers.js +2 -0
- package/src/test/store.js +30 -0
- package/src/utils/crdt-blocks.ts +2 -2
- package/src/utils/crdt.ts +44 -29
- package/src/utils/test/crdt.ts +212 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/entities.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __unstableSerializeAndClean, parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PostEditorAwareness } from './awareness/post-editor-awareness';\nimport { getSyncManager } from './sync';\nimport {\n\tapplyPostChangesToCRDTDoc,\n\tdefaultSyncConfig,\n\tgetPostChangesFromCRDTDoc,\n} from './utils/crdt';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nconst blocksTransientEdits = {\n\tblocks: {\n\t\tread: ( record ) => parse( record.content?.raw ?? '' ),\n\t\twrite: ( record ) => ( {\n\t\t\tcontent: __unstableSerializeAndClean( record.blocks ),\n\t\t} ),\n\t},\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t// Please also change the preload path when changing this.\n\t\t\t// @see lib/compat/wordpress-6.8/preload.php\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\t'page_for_posts',\n\t\t\t\t'page_on_front',\n\t\t\t\t'show_on_front',\n\t\t\t].join( ',' ),\n\t\t},\n\t\t// The entity doesn't support selecting multiple records.\n\t\t// The property is maintained for backward compatibility.\n\t\tplural: '__unstableBases',\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\tplural: 'postTypes',\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\tgetTitle: ( record ) => record?.name || record?.slug,\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t\tsupportsPagination: true,\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\tsupportsPagination: true,\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\tsupportsPagination: true,\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\tsupportsPagination: true,\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: () => __( 'Custom Styles' ),\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\tplural: 'themes',\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\tplural: 'plugins',\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\t{\n\t\tlabel: __( 'Registered Templates' ),\n\t\tname: 'registeredTemplate',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/registered-templates',\n\t\tkey: 'id',\n\t},\n\t{\n\t\tlabel: __( 'Font Collections' ),\n\t\tname: 'fontCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/font-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'fontCollections',\n\t\tkey: 'slug',\n\t},\n].map( ( entity ) => {\n\tconst syncEnabledRootEntities = new Set( [ 'comment' ] );\n\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( syncEnabledRootEntities.has( entity.name ) ) {\n\t\t\tentity.syncConfig = defaultSyncConfig;\n\t\t}\n\t}\n\treturn entity;\n} );\n\nexport const deprecatedEntities = {\n\troot: {\n\t\tmedia: {\n\t\t\tsince: '6.9',\n\t\t\talternative: {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n\t{\n\t\tkind: 'root',\n\t\tname: 'site',\n\t\tplural: 'sites',\n\t\tloadEntities: loadSiteEntity,\n\t},\n];\n\n/**\n * Apply extra edits before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @param {string} name Post type name.\n * @param {boolean} isTemplate Whether the post type is a template.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = (\n\tpersistedRecord,\n\tedits,\n\tname,\n\tisTemplate\n) => {\n\tconst newEdits = {};\n\n\tif ( ! isTemplate && 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\t// Add meta for persisted CRDT document.\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( persistedRecord ) {\n\t\t\tconst objectType = `postType/${ name }`;\n\t\t\tconst objectId = persistedRecord.id;\n\t\t\tconst meta = getSyncManager()?.createMeta( objectType, objectId );\n\t\t\tnewEdits.meta = {\n\t\t\t\t...edits.meta,\n\t\t\t\t...meta,\n\t\t\t};\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\n\t\tconst entity = {\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\t...blocksTransientEdits,\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: ( persistedRecord, edits ) =>\n\t\t\t\tprePersistPostType( persistedRecord, edits, name, isTemplate ),\n\t\t\t__unstable_rest_base: postType.rest_base,\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:\n\t\t\t\tisTemplate && ! window?.__experimentalTemplateActivate\n\t\t\t\t\t? 'wp_id'\n\t\t\t\t\t: DEFAULT_ENTITY_KEY,\n\t\t};\n\n\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t/**\n\t\t\t * @type {import('@wordpress/sync').SyncConfig}\n\t\t\t */\n\t\t\tentity.syncConfig = {\n\t\t\t\t/**\n\t\t\t\t * Apply changes from the local editor to the local CRDT document so\n\t\t\t\t * that those changes can be synced to other peers (via the provider).\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t\t * @param {Partial< import('@wordpress/sync').ObjectData >} changes\n\t\t\t\t * @return {void}\n\t\t\t\t */\n\t\t\t\tapplyChangesToCRDTDoc: ( crdtDoc, changes ) =>\n\t\t\t\t\tapplyPostChangesToCRDTDoc( crdtDoc, changes, postType ),\n\n\t\t\t\t/**\n\t\t\t\t * Create the awareness instance for the entity's CRDT document.\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} ydoc\n\t\t\t\t * @param {import('@wordpress/sync').ObjectID} objectId\n\t\t\t\t * @return {import('@wordpress/sync').Awareness} Awareness instance\n\t\t\t\t */\n\t\t\t\tcreateAwareness: ( ydoc, objectId ) => {\n\t\t\t\t\tconst kind = 'postType';\n\t\t\t\t\tconst id = parseInt( objectId, 10 );\n\t\t\t\t\treturn new PostEditorAwareness( ydoc, kind, name, id );\n\t\t\t\t},\n\n\t\t\t\t/**\n\t\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t\t * local editor state.\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t\t * @param {import('@wordpress/sync').ObjectData} editedRecord\n\t\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t\t */\n\t\t\t\tgetChangesFromCRDTDoc: ( crdtDoc, editedRecord ) =>\n\t\t\t\t\tgetPostChangesFromCRDTDoc(\n\t\t\t\t\t\tcrdtDoc,\n\t\t\t\t\t\teditedRecord,\n\t\t\t\t\t\tpostType\n\t\t\t\t\t),\n\n\t\t\t\t/**\n\t\t\t\t * Sync features supported by the entity.\n\t\t\t\t *\n\t\t\t\t * @type {Record< string, boolean >}\n\t\t\t\t */\n\t\t\t\tsupports: {\n\t\t\t\t\tcrdtPersistence: true,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn entity;\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\tconst entity = {\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\tgetTitle: ( record ) => record?.name,\n\t\t\tsupportsPagination: true,\n\t\t};\n\n\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\tentity.syncConfig = defaultSyncConfig;\n\t\t}\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the Site entity.\n *\n * @return {Promise} Entity promise\n */\nasync function loadSiteEntity() {\n\tconst entity = {\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tbaseURL: '/wp/v2/settings',\n\t\tmeta: {},\n\t};\n\n\tconst site = await apiFetch( {\n\t\tpath: entity.baseURL,\n\t\tmethod: 'OPTIONS',\n\t} );\n\n\tconst labels = {};\n\tObject.entries( site?.schema?.properties ?? {} ).forEach(\n\t\t( [ key, value ] ) => {\n\t\t\t// Ignore properties `title` and `type` keys.\n\t\t\tif ( typeof value === 'object' && value.title ) {\n\t\t\t\tlabels[ key ] = value.title;\n\t\t\t}\n\t\t}\n\t);\n\n\treturn [ { ...entity, meta: { labels } } ];\n}\n\n/**\n * Returns the entity's getter method name given its kind and name or plural name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'themes', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name or plural name.\n * @param {string} prefix Function prefix.\n *\n * @return {string} Method name\n */\nexport const getMethodName = ( kind, name, prefix = 'get' ) => {\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst suffix = pascalCase( name );\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,aAAa,kBAAkB;AAKxC,OAAO,cAAc;AACrB,SAAS,6BAA6B,aAAa;AACnD,SAAS,UAAU;AAKnB,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,IAAM,qBAAqB;AAClC,IAAM,sBAAsB,CAAE,SAAS,WAAW,SAAU;AAE5D,IAAM,uBAAuB;AAAA,EAC5B,QAAQ;AAAA,IACP,MAAM,CAAE,WAAY,MAAO,OAAO,SAAS,OAAO,EAAG;AAAA,IACrD,OAAO,CAAE,YAAc;AAAA,MACtB,SAAS,4BAA6B,OAAO,MAAO;AAAA,IACrD;AAAA,EACD;AACD;AAEO,IAAM,qBAAqB;AAAA,EACjC;AAAA,IACC,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA;AAAA;AAAA,MAGd,SAAS;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EAAE,KAAM,GAAI;AAAA,IACb;AAAA;AAAA;AAAA,IAGA,QAAQ;AAAA,EACT;AAAA,EACA;AAAA,IACC,OAAO,GAAI,WAAY;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,EACT;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,OAAQ;AAAA,IACnB,eAAe,CAAE,WAAW,SAAS,aAAc;AAAA,IACnD,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,UAAW;AAAA,EACvB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,gBAAgB,EAAE,QAAQ,KAAK;AAAA,IAC/B,OAAO,GAAI,cAAe;AAAA,EAC3B;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,gBAAgB,EAAE,QAAQ,KAAK;AAAA,IAC/B,OAAO,GAAI,SAAU;AAAA,EACtB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,cAAe;AAAA,EAC3B;AAAA,EACA;AAAA,IACC,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,CAAE,WAAY,QAAQ,QAAQ,QAAQ;AAAA,IAChD,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,SAAU;AAAA,IACrB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,MAAO;AAAA,IAClB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,WAAY;AAAA,IACvB,eAAe,CAAE,OAAQ;AAAA,IACzB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,eAAgB;AAAA,IAC3B,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,eAAgB;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA;AAAA,IACR,UAAU,MAAM,GAAI,eAAgB;AAAA,IACpC,iBAAiB,CAAE,UAAU,eAC5B,wBAAyB,QAAS,aACjC,aAAa,MAAM,aAAa,EACjC;AAAA,IACD,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,OAAO,GAAI,QAAS;AAAA,IACpB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,SAAU;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,QAAS;AAAA,IACpB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,sBAAuB;AAAA,IAClC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,kBAAmB;AAAA,IAC9B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AACD,EAAE,IAAK,CAAE,WAAY;AACpB,QAAM,0BAA0B,oBAAI,IAAK,CAAE,SAAU,CAAE;AAEvD,MAAK,WAAW,qBAAsB;AACrC,QAAK,wBAAwB,IAAK,OAAO,IAAK,GAAI;AACjD,aAAO,aAAa;AAAA,IACrB;AAAA,EACD;AACA,SAAO;AACR,CAAE;AAEK,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,IACL,OAAO;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,gCAAgC;AAAA,EAC5C,EAAE,MAAM,YAAY,cAAc,qBAAqB;AAAA,EACvD,EAAE,MAAM,YAAY,cAAc,qBAAqB;AAAA,EACvD;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,cAAc;AAAA,EACf;AACD;AAWO,IAAM,qBAAqB,CACjC,iBACA,OACA,MACA,eACI;AACJ,QAAM,WAAW,CAAC;AAElB,MAAK,CAAE,cAAc,iBAAiB,WAAW,cAAe;AAE/D,QAAK,CAAE,MAAM,UAAU,CAAE,SAAS,QAAS;AAC1C,eAAS,SAAS;AAAA,IACnB;AAGA,SACG,CAAE,MAAM,SAAS,MAAM,UAAU,iBACnC,CAAE,SAAS,UACT,CAAE,iBAAiB,SACpB,iBAAiB,UAAU,eAC3B;AACD,eAAS,QAAQ;AAAA,IAClB;AAAA,EACD;AAGA,MAAK,WAAW,qBAAsB;AACrC,QAAK,iBAAkB;AACtB,YAAM,aAAa,YAAa,IAAK;AACrC,YAAM,WAAW,gBAAgB;AACjC,YAAM,OAAO,eAAe,GAAG,WAAY,YAAY,QAAS;AAChE,eAAS,OAAO;AAAA,QACf,GAAG,MAAM;AAAA,QACT,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAOA,eAAe,uBAAuB;AACrC,QAAM,YAAY,MAAM,SAAU;AAAA,IACjC,MAAM;AAAA,EACP,CAAE;AACF,SAAO,OAAO,QAAS,aAAa,CAAC,CAAE,EAAE,IAAK,CAAE,CAAE,MAAM,QAAS,MAAO;AACvE,UAAM,aAAa,CAAE,eAAe,kBAAmB,EAAE;AAAA,MACxD;AAAA,IACD;AACA,UAAM,YAAY,UAAU,kBAAkB;AAE9C,UAAM,SAAS;AAAA,MACd,MAAM;AAAA,MACN,SAAS,IAAK,SAAU,IAAK,SAAS,SAAU;AAAA,MAChD,eAAe,EAAE,SAAS,OAAO;AAAA,MACjC;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,gBAAgB;AAAA,QACf,GAAG;AAAA,QACH,WAAW;AAAA,MACZ;AAAA,MACA,aAAa,EAAE,MAAM,KAAK;AAAA,MAC1B,eAAe;AAAA,MACf,UAAU,CAAE,WACX,QAAQ,OAAO,YACf,QAAQ,UACN,aACC,YAAa,OAAO,QAAQ,EAAG,IAC/B,OAAQ,OAAO,EAAG;AAAA,MACtB,sBAAsB,CAAE,iBAAiB,UACxC,mBAAoB,iBAAiB,OAAO,MAAM,UAAW;AAAA,MAC9D,sBAAsB,SAAS;AAAA,MAC/B,oBAAoB;AAAA,MACpB,iBAAiB,CAAE,UAAU,eAC5B,IAAK,SAAU,IACd,SAAS,SACV,IAAK,QAAS,aACb,aAAa,MAAM,aAAa,EACjC;AAAA,MACD,aACC,cAAc,CAAE,QAAQ,iCACrB,UACA;AAAA,IACL;AAEA,QAAK,WAAW,qBAAsB;AAIrC,aAAO,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASnB,uBAAuB,CAAE,SAAS,YACjC,0BAA2B,SAAS,SAAS,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASvD,iBAAiB,CAAE,MAAM,aAAc;AACtC,gBAAM,OAAO;AACb,gBAAM,KAAK,SAAU,UAAU,EAAG;AAClC,iBAAO,IAAI,oBAAqB,MAAM,MAAM,MAAM,EAAG;AAAA,QACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUA,uBAAuB,CAAE,SAAS,iBACjC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOD,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR,CAAE;AACH;AAOA,eAAe,uBAAuB;AACrC,QAAM,aAAa,MAAM,SAAU;AAAA,IAClC,MAAM;AAAA,EACP,CAAE;AACF,SAAO,OAAO,QAAS,cAAc,CAAC,CAAE,EAAE,IAAK,CAAE,CAAE,MAAM,QAAS,MAAO;AACxE,UAAM,YAAY,UAAU,kBAAkB;AAC9C,UAAM,SAAS;AAAA,MACd,MAAM;AAAA,MACN,SAAS,IAAK,SAAU,IAAK,SAAS,SAAU;AAAA,MAChD,eAAe,EAAE,SAAS,OAAO;AAAA,MACjC;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,UAAU,CAAE,WAAY,QAAQ;AAAA,MAChC,oBAAoB;AAAA,IACrB;AAEA,QAAK,WAAW,qBAAsB;AACrC,aAAO,aAAa;AAAA,IACrB;AAEA,WAAO;AAAA,EACR,CAAE;AACH;AAOA,eAAe,iBAAiB;AAC/B,QAAM,SAAS;AAAA,IACd,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM,CAAC;AAAA,EACR;AAEA,QAAM,OAAO,MAAM,SAAU;AAAA,IAC5B,MAAM,OAAO;AAAA,IACb,QAAQ;AAAA,EACT,CAAE;AAEF,QAAM,SAAS,CAAC;AAChB,SAAO,QAAS,MAAM,QAAQ,cAAc,CAAC,CAAE,EAAE;AAAA,IAChD,CAAE,CAAE,KAAK,KAAM,MAAO;AAErB,UAAK,OAAO,UAAU,YAAY,MAAM,OAAQ;AAC/C,eAAQ,GAAI,IAAI,MAAM;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAE,EAAE,GAAG,QAAQ,MAAM,EAAE,OAAO,EAAE,CAAE;AAC1C;AAoBO,IAAM,gBAAgB,CAAE,MAAM,MAAM,SAAS,UAAW;AAC9D,QAAM,aAAa,SAAS,SAAS,KAAK,WAAY,IAAK;AAC3D,QAAM,SAAS,WAAY,IAAK;AAChC,SAAO,GAAI,MAAO,GAAI,UAAW,GAAI,MAAO;AAC7C;",
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __unstableSerializeAndClean, parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PostEditorAwareness } from './awareness/post-editor-awareness';\nimport { getSyncManager } from './sync';\nimport {\n\tapplyPostChangesToCRDTDoc,\n\tdefaultSyncConfig,\n\tgetPostChangesFromCRDTDoc,\n} from './utils/crdt';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nconst blocksTransientEdits = {\n\tblocks: {\n\t\tread: ( record ) => parse( record.content?.raw ?? '' ),\n\t\twrite: ( record ) => ( {\n\t\t\tcontent: __unstableSerializeAndClean( record.blocks ),\n\t\t} ),\n\t},\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t// Please also change the preload path when changing this.\n\t\t\t// @see lib/compat/wordpress-7.0/preload.php\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'image_sizes',\n\t\t\t\t'image_size_threshold',\n\t\t\t\t'image_output_formats',\n\t\t\t\t'jpeg_interlaced',\n\t\t\t\t'png_interlaced',\n\t\t\t\t'gif_interlaced',\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\t'page_for_posts',\n\t\t\t\t'page_on_front',\n\t\t\t\t'show_on_front',\n\t\t\t].join( ',' ),\n\t\t},\n\t\t// The entity doesn't support selecting multiple records.\n\t\t// The property is maintained for backward compatibility.\n\t\tplural: '__unstableBases',\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\tplural: 'postTypes',\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\tgetTitle: ( record ) => record?.name || record?.slug,\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t\tsupportsPagination: true,\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\tsupportsPagination: true,\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\tsupportsPagination: true,\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\tsupportsPagination: true,\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: () => __( 'Custom Styles' ),\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\tplural: 'themes',\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\tplural: 'plugins',\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\t{\n\t\tlabel: __( 'Registered Templates' ),\n\t\tname: 'registeredTemplate',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/registered-templates',\n\t\tkey: 'id',\n\t},\n\t{\n\t\tlabel: __( 'Font Collections' ),\n\t\tname: 'fontCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/font-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'fontCollections',\n\t\tkey: 'slug',\n\t},\n].map( ( entity ) => {\n\tconst syncEnabledRootEntities = new Set( [ 'comment' ] );\n\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( syncEnabledRootEntities.has( entity.name ) ) {\n\t\t\tentity.syncConfig = defaultSyncConfig;\n\t\t}\n\t}\n\treturn entity;\n} );\n\nexport const deprecatedEntities = {\n\troot: {\n\t\tmedia: {\n\t\t\tsince: '6.9',\n\t\t\talternative: {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n\t{\n\t\tkind: 'root',\n\t\tname: 'site',\n\t\tplural: 'sites',\n\t\tloadEntities: loadSiteEntity,\n\t},\n];\n\n/**\n * Apply extra edits before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @param {string} name Post type name.\n * @param {boolean} isTemplate Whether the post type is a template.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = (\n\tpersistedRecord,\n\tedits,\n\tname,\n\tisTemplate\n) => {\n\tconst newEdits = {};\n\n\tif ( ! isTemplate && 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\t// Add meta for persisted CRDT document.\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( persistedRecord ) {\n\t\t\tconst objectType = `postType/${ name }`;\n\t\t\tconst objectId = persistedRecord.id;\n\t\t\tconst meta = getSyncManager()?.createMeta( objectType, objectId );\n\t\t\tnewEdits.meta = {\n\t\t\t\t...edits.meta,\n\t\t\t\t...meta,\n\t\t\t};\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\n\t\tconst entity = {\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\t...blocksTransientEdits,\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: ( persistedRecord, edits ) =>\n\t\t\t\tprePersistPostType( persistedRecord, edits, name, isTemplate ),\n\t\t\t__unstable_rest_base: postType.rest_base,\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:\n\t\t\t\tisTemplate && ! window?.__experimentalTemplateActivate\n\t\t\t\t\t? 'wp_id'\n\t\t\t\t\t: DEFAULT_ENTITY_KEY,\n\t\t};\n\n\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t/**\n\t\t\t * @type {import('@wordpress/sync').SyncConfig}\n\t\t\t */\n\t\t\tentity.syncConfig = {\n\t\t\t\t/**\n\t\t\t\t * Apply changes from the local editor to the local CRDT document so\n\t\t\t\t * that those changes can be synced to other peers (via the provider).\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t\t * @param {Partial< import('@wordpress/sync').ObjectData >} changes\n\t\t\t\t * @return {void}\n\t\t\t\t */\n\t\t\t\tapplyChangesToCRDTDoc: ( crdtDoc, changes ) =>\n\t\t\t\t\tapplyPostChangesToCRDTDoc( crdtDoc, changes, postType ),\n\n\t\t\t\t/**\n\t\t\t\t * Create the awareness instance for the entity's CRDT document.\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} ydoc\n\t\t\t\t * @param {import('@wordpress/sync').ObjectID} objectId\n\t\t\t\t * @return {import('@wordpress/sync').Awareness} Awareness instance\n\t\t\t\t */\n\t\t\t\tcreateAwareness: ( ydoc, objectId ) => {\n\t\t\t\t\tconst kind = 'postType';\n\t\t\t\t\tconst id = parseInt( objectId, 10 );\n\t\t\t\t\treturn new PostEditorAwareness( ydoc, kind, name, id );\n\t\t\t\t},\n\n\t\t\t\t/**\n\t\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t\t * local editor state.\n\t\t\t\t *\n\t\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t\t * @param {import('@wordpress/sync').ObjectData} editedRecord\n\t\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t\t */\n\t\t\t\tgetChangesFromCRDTDoc: ( crdtDoc, editedRecord ) =>\n\t\t\t\t\tgetPostChangesFromCRDTDoc(\n\t\t\t\t\t\tcrdtDoc,\n\t\t\t\t\t\teditedRecord,\n\t\t\t\t\t\tpostType\n\t\t\t\t\t),\n\n\t\t\t\t/**\n\t\t\t\t * Sync features supported by the entity.\n\t\t\t\t *\n\t\t\t\t * @type {Record< string, boolean >}\n\t\t\t\t */\n\t\t\t\tsupports: {\n\t\t\t\t\tcrdtPersistence: true,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn entity;\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\tconst entity = {\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\tgetTitle: ( record ) => record?.name,\n\t\t\tsupportsPagination: true,\n\t\t};\n\n\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\tentity.syncConfig = defaultSyncConfig;\n\t\t}\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the Site entity.\n *\n * @return {Promise} Entity promise\n */\nasync function loadSiteEntity() {\n\tconst entity = {\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tbaseURL: '/wp/v2/settings',\n\t\tmeta: {},\n\t};\n\n\tconst site = await apiFetch( {\n\t\tpath: entity.baseURL,\n\t\tmethod: 'OPTIONS',\n\t} );\n\n\tconst labels = {};\n\tObject.entries( site?.schema?.properties ?? {} ).forEach(\n\t\t( [ key, value ] ) => {\n\t\t\t// Ignore properties `title` and `type` keys.\n\t\t\tif ( typeof value === 'object' && value.title ) {\n\t\t\t\tlabels[ key ] = value.title;\n\t\t\t}\n\t\t}\n\t);\n\n\treturn [ { ...entity, meta: { labels } } ];\n}\n\n/**\n * Returns the entity's getter method name given its kind and name or plural name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'themes', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name or plural name.\n * @param {string} prefix Function prefix.\n *\n * @return {string} Method name\n */\nexport const getMethodName = ( kind, name, prefix = 'get' ) => {\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst suffix = pascalCase( name );\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,aAAa,kBAAkB;AAKxC,OAAO,cAAc;AACrB,SAAS,6BAA6B,aAAa;AACnD,SAAS,UAAU;AAKnB,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,IAAM,qBAAqB;AAClC,IAAM,sBAAsB,CAAE,SAAS,WAAW,SAAU;AAE5D,IAAM,uBAAuB;AAAA,EAC5B,QAAQ;AAAA,IACP,MAAM,CAAE,WAAY,MAAO,OAAO,SAAS,OAAO,EAAG;AAAA,IACrD,OAAO,CAAE,YAAc;AAAA,MACtB,SAAS,4BAA6B,OAAO,MAAO;AAAA,IACrD;AAAA,EACD;AACD;AAEO,IAAM,qBAAqB;AAAA,EACjC;AAAA,IACC,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA;AAAA;AAAA,MAGd,SAAS;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EAAE,KAAM,GAAI;AAAA,IACb;AAAA;AAAA;AAAA,IAGA,QAAQ;AAAA,EACT;AAAA,EACA;AAAA,IACC,OAAO,GAAI,WAAY;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,EACT;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,OAAQ;AAAA,IACnB,eAAe,CAAE,WAAW,SAAS,aAAc;AAAA,IACnD,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,UAAW;AAAA,EACvB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,gBAAgB,EAAE,QAAQ,KAAK;AAAA,IAC/B,OAAO,GAAI,cAAe;AAAA,EAC3B;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,gBAAgB,EAAE,QAAQ,KAAK;AAAA,IAC/B,OAAO,GAAI,SAAU;AAAA,EACtB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,cAAe;AAAA,EAC3B;AAAA,EACA;AAAA,IACC,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,CAAE,WAAY,QAAQ,QAAQ,QAAQ;AAAA,IAChD,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,SAAU;AAAA,IACrB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,MAAO;AAAA,IAClB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,WAAY;AAAA,IACvB,eAAe,CAAE,OAAQ;AAAA,IACzB,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO,GAAI,eAAgB;AAAA,IAC3B,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,eAAgB;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA;AAAA,IACR,UAAU,MAAM,GAAI,eAAgB;AAAA,IACpC,iBAAiB,CAAE,UAAU,eAC5B,wBAAyB,QAAS,aACjC,aAAa,MAAM,aAAa,EACjC;AAAA,IACD,oBAAoB;AAAA,EACrB;AAAA,EACA;AAAA,IACC,OAAO,GAAI,QAAS;AAAA,IACpB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,SAAU;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,QAAS;AAAA,IACpB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,sBAAuB;AAAA,IAClC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,EACN;AAAA,EACA;AAAA,IACC,OAAO,GAAI,kBAAmB;AAAA,IAC9B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,EAAE,SAAS,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AACD,EAAE,IAAK,CAAE,WAAY;AACpB,QAAM,0BAA0B,oBAAI,IAAK,CAAE,SAAU,CAAE;AAEvD,MAAK,WAAW,qBAAsB;AACrC,QAAK,wBAAwB,IAAK,OAAO,IAAK,GAAI;AACjD,aAAO,aAAa;AAAA,IACrB;AAAA,EACD;AACA,SAAO;AACR,CAAE;AAEK,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,IACL,OAAO;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,gCAAgC;AAAA,EAC5C,EAAE,MAAM,YAAY,cAAc,qBAAqB;AAAA,EACvD,EAAE,MAAM,YAAY,cAAc,qBAAqB;AAAA,EACvD;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,cAAc;AAAA,EACf;AACD;AAWO,IAAM,qBAAqB,CACjC,iBACA,OACA,MACA,eACI;AACJ,QAAM,WAAW,CAAC;AAElB,MAAK,CAAE,cAAc,iBAAiB,WAAW,cAAe;AAE/D,QAAK,CAAE,MAAM,UAAU,CAAE,SAAS,QAAS;AAC1C,eAAS,SAAS;AAAA,IACnB;AAGA,SACG,CAAE,MAAM,SAAS,MAAM,UAAU,iBACnC,CAAE,SAAS,UACT,CAAE,iBAAiB,SACpB,iBAAiB,UAAU,eAC3B;AACD,eAAS,QAAQ;AAAA,IAClB;AAAA,EACD;AAGA,MAAK,WAAW,qBAAsB;AACrC,QAAK,iBAAkB;AACtB,YAAM,aAAa,YAAa,IAAK;AACrC,YAAM,WAAW,gBAAgB;AACjC,YAAM,OAAO,eAAe,GAAG,WAAY,YAAY,QAAS;AAChE,eAAS,OAAO;AAAA,QACf,GAAG,MAAM;AAAA,QACT,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAOA,eAAe,uBAAuB;AACrC,QAAM,YAAY,MAAM,SAAU;AAAA,IACjC,MAAM;AAAA,EACP,CAAE;AACF,SAAO,OAAO,QAAS,aAAa,CAAC,CAAE,EAAE,IAAK,CAAE,CAAE,MAAM,QAAS,MAAO;AACvE,UAAM,aAAa,CAAE,eAAe,kBAAmB,EAAE;AAAA,MACxD;AAAA,IACD;AACA,UAAM,YAAY,UAAU,kBAAkB;AAE9C,UAAM,SAAS;AAAA,MACd,MAAM;AAAA,MACN,SAAS,IAAK,SAAU,IAAK,SAAS,SAAU;AAAA,MAChD,eAAe,EAAE,SAAS,OAAO;AAAA,MACjC;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,gBAAgB;AAAA,QACf,GAAG;AAAA,QACH,WAAW;AAAA,MACZ;AAAA,MACA,aAAa,EAAE,MAAM,KAAK;AAAA,MAC1B,eAAe;AAAA,MACf,UAAU,CAAE,WACX,QAAQ,OAAO,YACf,QAAQ,UACN,aACC,YAAa,OAAO,QAAQ,EAAG,IAC/B,OAAQ,OAAO,EAAG;AAAA,MACtB,sBAAsB,CAAE,iBAAiB,UACxC,mBAAoB,iBAAiB,OAAO,MAAM,UAAW;AAAA,MAC9D,sBAAsB,SAAS;AAAA,MAC/B,oBAAoB;AAAA,MACpB,iBAAiB,CAAE,UAAU,eAC5B,IAAK,SAAU,IACd,SAAS,SACV,IAAK,QAAS,aACb,aAAa,MAAM,aAAa,EACjC;AAAA,MACD,aACC,cAAc,CAAE,QAAQ,iCACrB,UACA;AAAA,IACL;AAEA,QAAK,WAAW,qBAAsB;AAIrC,aAAO,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASnB,uBAAuB,CAAE,SAAS,YACjC,0BAA2B,SAAS,SAAS,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASvD,iBAAiB,CAAE,MAAM,aAAc;AACtC,gBAAM,OAAO;AACb,gBAAM,KAAK,SAAU,UAAU,EAAG;AAClC,iBAAO,IAAI,oBAAqB,MAAM,MAAM,MAAM,EAAG;AAAA,QACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUA,uBAAuB,CAAE,SAAS,iBACjC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOD,UAAU;AAAA,UACT,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR,CAAE;AACH;AAOA,eAAe,uBAAuB;AACrC,QAAM,aAAa,MAAM,SAAU;AAAA,IAClC,MAAM;AAAA,EACP,CAAE;AACF,SAAO,OAAO,QAAS,cAAc,CAAC,CAAE,EAAE,IAAK,CAAE,CAAE,MAAM,QAAS,MAAO;AACxE,UAAM,YAAY,UAAU,kBAAkB;AAC9C,UAAM,SAAS;AAAA,MACd,MAAM;AAAA,MACN,SAAS,IAAK,SAAU,IAAK,SAAS,SAAU;AAAA,MAChD,eAAe,EAAE,SAAS,OAAO;AAAA,MACjC;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,UAAU,CAAE,WAAY,QAAQ;AAAA,MAChC,oBAAoB;AAAA,IACrB;AAEA,QAAK,WAAW,qBAAsB;AACrC,aAAO,aAAa;AAAA,IACrB;AAEA,WAAO;AAAA,EACR,CAAE;AACH;AAOA,eAAe,iBAAiB;AAC/B,QAAM,SAAS;AAAA,IACd,OAAO,GAAI,MAAO;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM,CAAC;AAAA,EACR;AAEA,QAAM,OAAO,MAAM,SAAU;AAAA,IAC5B,MAAM,OAAO;AAAA,IACb,QAAQ;AAAA,EACT,CAAE;AAEF,QAAM,SAAS,CAAC;AAChB,SAAO,QAAS,MAAM,QAAQ,cAAc,CAAC,CAAE,EAAE;AAAA,IAChD,CAAE,CAAE,KAAK,KAAM,MAAO;AAErB,UAAK,OAAO,UAAU,YAAY,MAAM,OAAQ;AAC/C,eAAQ,GAAI,IAAI,MAAM;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAE,EAAE,GAAG,QAAQ,MAAM,EAAE,OAAO,EAAE,CAAE;AAC1C;AAoBO,IAAM,gBAAgB,CAAE,MAAM,MAAM,SAAS,UAAW;AAC9D,QAAM,aAAa,SAAS,SAAS,KAAK,WAAY,IAAK;AAC3D,QAAM,SAAS,WAAY,IAAK;AAChC,SAAO,GAAI,MAAO,GAAI,UAAW,GAAI,MAAO;AAC7C;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -6,11 +6,10 @@ import { STORE_NAME } from "../name.mjs";
|
|
|
6
6
|
import useEntityId from "./use-entity-id.mjs";
|
|
7
7
|
import { updateFootnotesFromMeta } from "../footnotes/index.mjs";
|
|
8
8
|
var EMPTY_ARRAY = [];
|
|
9
|
-
var parsedBlocksCache = /* @__PURE__ */ new
|
|
9
|
+
var parsedBlocksCache = /* @__PURE__ */ new Map();
|
|
10
10
|
function useEntityBlockEditor(kind, name, { id: _id } = {}) {
|
|
11
11
|
const providerId = useEntityId(kind, name);
|
|
12
12
|
const id = _id ?? providerId;
|
|
13
|
-
const { getEntityRecord, getEntityRecordEdits } = useSelect(STORE_NAME);
|
|
14
13
|
const { content, editedBlocks, meta } = useSelect(
|
|
15
14
|
(select) => {
|
|
16
15
|
if (!id) {
|
|
@@ -37,24 +36,17 @@ function useEntityBlockEditor(kind, name, { id: _id } = {}) {
|
|
|
37
36
|
if (!content || typeof content !== "string") {
|
|
38
37
|
return EMPTY_ARRAY;
|
|
39
38
|
}
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
const cacheKey = `${kind}:${name}:${id}`;
|
|
40
|
+
const cached = parsedBlocksCache.get(cacheKey);
|
|
41
|
+
let _blocks;
|
|
42
|
+
if (cached && cached.content === content) {
|
|
43
|
+
_blocks = cached.blocks;
|
|
44
|
+
} else {
|
|
45
45
|
_blocks = parse(content);
|
|
46
|
-
parsedBlocksCache.set(
|
|
46
|
+
parsedBlocksCache.set(cacheKey, { content, blocks: _blocks });
|
|
47
47
|
}
|
|
48
48
|
return _blocks;
|
|
49
|
-
}, [
|
|
50
|
-
kind,
|
|
51
|
-
name,
|
|
52
|
-
id,
|
|
53
|
-
editedBlocks,
|
|
54
|
-
content,
|
|
55
|
-
getEntityRecord,
|
|
56
|
-
getEntityRecordEdits
|
|
57
|
-
]);
|
|
49
|
+
}, [kind, name, id, editedBlocks, content]);
|
|
58
50
|
const onChange = useCallback(
|
|
59
51
|
(newBlocks, options) => {
|
|
60
52
|
const noChange = blocks === newBlocks;
|
|
@@ -85,8 +77,10 @@ function useEntityBlockEditor(kind, name, { id: _id } = {}) {
|
|
|
85
77
|
const onInput = useCallback(
|
|
86
78
|
(newBlocks, options) => {
|
|
87
79
|
const { selection, ...rest } = options;
|
|
88
|
-
const
|
|
89
|
-
|
|
80
|
+
const edits = {
|
|
81
|
+
selection,
|
|
82
|
+
...updateFootnotesFromMeta(newBlocks, meta)
|
|
83
|
+
};
|
|
90
84
|
editEntityRecord(kind, name, id, edits, {
|
|
91
85
|
isCached: true,
|
|
92
86
|
...rest
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/use-entity-block-editor.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../name';\nimport useEntityId from './use-entity-id';\nimport { updateFootnotesFromMeta } from '../footnotes';\n\nconst EMPTY_ARRAY = [];\nconst parsedBlocksCache = new
|
|
5
|
-
"mappings": ";AAGA,SAAS,aAAa,eAAe;AACrC,SAAS,aAAa,iBAAiB;AACvC,SAAS,OAAO,mCAAmC;AAKnD,SAAS,kBAAkB;AAC3B,OAAO,iBAAiB;AACxB,SAAS,+BAA+B;AAExC,IAAM,cAAc,CAAC;AACrB,IAAM,oBAAoB,oBAAI,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../name';\nimport useEntityId from './use-entity-id';\nimport { updateFootnotesFromMeta } from '../footnotes';\n\nconst EMPTY_ARRAY = [];\nconst parsedBlocksCache = new Map();\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 {[unknown[], Function, Function]} The block array and setters.\n */\nexport default 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\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\t// Cache parsed blocks by entity identity. Store the content\n\t\t// alongside the blocks so we can validate it hasn't changed.\n\t\tconst cacheKey = `${ kind }:${ name }:${ id }`;\n\t\tconst cached = parsedBlocksCache.get( cacheKey );\n\t\tlet _blocks;\n\n\t\tif ( cached && cached.content === content ) {\n\t\t\t_blocks = cached.blocks;\n\t\t} else {\n\t\t\t_blocks = parse( content );\n\t\t\tparsedBlocksCache.set( cacheKey, { content, blocks: _blocks } );\n\t\t}\n\n\t\treturn _blocks;\n\t}, [ kind, name, id, editedBlocks, content ] );\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...updateFootnotesFromMeta( newBlocks, meta ),\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\tmeta,\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 edits = {\n\t\t\t\tselection,\n\t\t\t\t...updateFootnotesFromMeta( newBlocks, meta ),\n\t\t\t};\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, meta, editEntityRecord ]\n\t);\n\n\treturn [ blocks, onInput, onChange ];\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,aAAa,eAAe;AACrC,SAAS,aAAa,iBAAiB;AACvC,SAAS,OAAO,mCAAmC;AAKnD,SAAS,kBAAkB;AAC3B,OAAO,iBAAiB;AACxB,SAAS,+BAA+B;AAExC,IAAM,cAAc,CAAC;AACrB,IAAM,oBAAoB,oBAAI,IAAI;AAoBnB,SAAR,qBAAuC,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,GAAI;AAC5E,QAAM,aAAa,YAAa,MAAM,IAAK;AAC3C,QAAM,KAAK,OAAO;AAClB,QAAM,EAAE,SAAS,cAAc,KAAK,IAAI;AAAA,IACvC,CAAE,WAAY;AACb,UAAK,CAAE,IAAK;AACX,eAAO,CAAC;AAAA,MACT;AACA,YAAM,EAAE,sBAAsB,IAAI,OAAQ,UAAW;AACrD,YAAM,eAAe,sBAAuB,MAAM,MAAM,EAAG;AAC3D,aAAO;AAAA,QACN,cAAc,aAAa;AAAA,QAC3B,SAAS,aAAa;AAAA,QACtB,MAAM,aAAa;AAAA,MACpB;AAAA,IACD;AAAA,IACA,CAAE,MAAM,MAAM,EAAG;AAAA,EAClB;AACA,QAAM,EAAE,2BAA2B,iBAAiB,IACnD,YAAa,UAAW;AAEzB,QAAM,SAAS,QAAS,MAAM;AAC7B,QAAK,CAAE,IAAK;AACX,aAAO;AAAA,IACR;AAEA,QAAK,cAAe;AACnB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,WAAW,OAAO,YAAY,UAAW;AAC/C,aAAO;AAAA,IACR;AAIA,UAAM,WAAW,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG;AAC5C,UAAM,SAAS,kBAAkB,IAAK,QAAS;AAC/C,QAAI;AAEJ,QAAK,UAAU,OAAO,YAAY,SAAU;AAC3C,gBAAU,OAAO;AAAA,IAClB,OAAO;AACN,gBAAU,MAAO,OAAQ;AACzB,wBAAkB,IAAK,UAAU,EAAE,SAAS,QAAQ,QAAQ,CAAE;AAAA,IAC/D;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,MAAM,MAAM,IAAI,cAAc,OAAQ,CAAE;AAE7C,QAAM,WAAW;AAAA,IAChB,CAAE,WAAW,YAAa;AACzB,YAAM,WAAW,WAAW;AAC5B,UAAK,UAAW;AACf,eAAO,0BAA2B,MAAM,MAAM,EAAG;AAAA,MAClD;AACA,YAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAK/B,YAAM,QAAQ;AAAA,QACb;AAAA,QACA,SAAS,CAAE,EAAE,QAAQ,yBAAyB,CAAC,EAAE,MAChD,4BAA6B,sBAAuB;AAAA,QACrD,GAAG,wBAAyB,WAAW,IAAK;AAAA,MAC7C;AAEA,uBAAkB,MAAM,MAAM,IAAI,OAAO;AAAA,QACxC,UAAU;AAAA,QACV,GAAG;AAAA,MACJ,CAAE;AAAA,IACH;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,QAAM,UAAU;AAAA,IACf,CAAE,WAAW,YAAa;AACzB,YAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,YAAM,QAAQ;AAAA,QACb;AAAA,QACA,GAAG,wBAAyB,WAAW,IAAK;AAAA,MAC7C;AAEA,uBAAkB,MAAM,MAAM,IAAI,OAAO;AAAA,QACxC,UAAU;AAAA,QACV,GAAG;AAAA,MACJ,CAAE;AAAA,IACH;AAAA,IACA,CAAE,MAAM,MAAM,IAAI,MAAM,gBAAiB;AAAA,EAC1C;AAEA,SAAO,CAAE,QAAQ,SAAS,QAAS;AACpC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build-module/index.mjs
CHANGED
|
@@ -16,6 +16,7 @@ import { STORE_NAME } from "./name.mjs";
|
|
|
16
16
|
import { unlock } from "./lock-unlock.mjs";
|
|
17
17
|
import { dynamicActions, dynamicSelectors } from "./dynamic-entities.mjs";
|
|
18
18
|
import logEntityDeprecation from "./utils/log-entity-deprecation.mjs";
|
|
19
|
+
import { SelectionType } from "./utils/crdt-user-selections.mjs";
|
|
19
20
|
import { default as default2 } from "./entity-provider.mjs";
|
|
20
21
|
export * from "./entity-provider.mjs";
|
|
21
22
|
export * from "./entity-types/index.mjs";
|
|
@@ -23,6 +24,7 @@ export * from "./awareness/types.mjs";
|
|
|
23
24
|
export * from "./fetch/index.mjs";
|
|
24
25
|
export * from "./hooks/index.mjs";
|
|
25
26
|
export * from "./private-apis.mjs";
|
|
27
|
+
export * from "./types.mjs";
|
|
26
28
|
var entitiesConfig = [
|
|
27
29
|
...rootEntitiesConfig,
|
|
28
30
|
...additionalEntityConfigLoaders.filter((config) => !!config.name)
|
|
@@ -113,6 +115,7 @@ unlock(store).registerPrivateActions(privateActions);
|
|
|
113
115
|
register(store);
|
|
114
116
|
export {
|
|
115
117
|
default2 as EntityProvider,
|
|
118
|
+
SelectionType,
|
|
116
119
|
store
|
|
117
120
|
};
|
|
118
121
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.js"],
|
|
4
|
-
"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 privateActions from './private-actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport {\n\trootEntitiesConfig,\n\tadditionalEntityConfigLoaders,\n\tgetMethodName,\n} from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { dynamicActions, dynamicSelectors } from './dynamic-entities';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\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.\nconst entitiesConfig = [\n\t...rootEntitiesConfig,\n\t...additionalEntityConfigLoaders.filter( ( config ) => !! config.name ),\n];\n\nconst entitySelectors = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( state, key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn selectors.getEntityRecord( state, kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( state, query ) => {\n\t\t\tlogEntityDeprecation( kind, name, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn selectors.getEntityRecords( state, kind, name, query );\n\t\t};\n\t}\n\treturn result;\n}, {} );\n\nconst entityResolvers = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn resolvers.getEntityRecord( kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( ...args ) => {\n\t\t\tlogEntityDeprecation( kind, plural, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn resolvers.getEntityRecords( kind, name, ...args );\n\t\t};\n\t\tresult[ getEntityRecordsMethodName ].shouldInvalidate = ( action ) =>\n\t\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\t}\n\treturn result;\n}, {} );\n\nconst entityActions = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\n\tconst saveEntityRecordMethodName = getMethodName( kind, name, 'save' );\n\tresult[ saveEntityRecordMethodName ] = ( record, options ) => {\n\t\tlogEntityDeprecation( kind, name, saveEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'saveEntityRecord',\n\t\t} );\n\t\treturn actions.saveEntityRecord( kind, name, record, options );\n\t};\n\n\tconst deleteEntityRecordMethodName = getMethodName( kind, name, 'delete' );\n\tresult[ deleteEntityRecordMethodName ] = ( key, query, options ) => {\n\t\tlogEntityDeprecation( kind, name, deleteEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'deleteEntityRecord',\n\t\t} );\n\t\treturn actions.deleteEntityRecord( kind, name, key, query, options );\n\t};\n\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: {\n\t\t...dynamicActions,\n\t\t...actions,\n\t\t...entityActions,\n\t\t...createLocksActions(),\n\t},\n\tselectors: {\n\t\t...dynamicSelectors,\n\t\t...selectors,\n\t\t...entitySelectors,\n\t},\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 );\nunlock( store ).registerPrivateActions( privateActions );\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 './awareness/types';\nexport * from './fetch';\nexport * from './hooks';\nexport * from './private-apis';\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,kBAAkB,gBAAgB;AAK3C,OAAO,aAAa;AACpB,YAAY,eAAe;AAC3B,YAAY,sBAAsB;AAClC,YAAY,aAAa;AACzB,YAAY,oBAAoB;AAChC,YAAY,eAAe;AAC3B,OAAO,wBAAwB;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,gBAAgB,wBAAwB;AACjD,OAAO,0BAA0B;
|
|
4
|
+
"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 privateActions from './private-actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport {\n\trootEntitiesConfig,\n\tadditionalEntityConfigLoaders,\n\tgetMethodName,\n} from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { dynamicActions, dynamicSelectors } from './dynamic-entities';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\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.\nconst entitiesConfig = [\n\t...rootEntitiesConfig,\n\t...additionalEntityConfigLoaders.filter( ( config ) => !! config.name ),\n];\n\nconst entitySelectors = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( state, key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn selectors.getEntityRecord( state, kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( state, query ) => {\n\t\t\tlogEntityDeprecation( kind, name, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn selectors.getEntityRecords( state, kind, name, query );\n\t\t};\n\t}\n\treturn result;\n}, {} );\n\nconst entityResolvers = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn resolvers.getEntityRecord( kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( ...args ) => {\n\t\t\tlogEntityDeprecation( kind, plural, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn resolvers.getEntityRecords( kind, name, ...args );\n\t\t};\n\t\tresult[ getEntityRecordsMethodName ].shouldInvalidate = ( action ) =>\n\t\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\t}\n\treturn result;\n}, {} );\n\nconst entityActions = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\n\tconst saveEntityRecordMethodName = getMethodName( kind, name, 'save' );\n\tresult[ saveEntityRecordMethodName ] = ( record, options ) => {\n\t\tlogEntityDeprecation( kind, name, saveEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'saveEntityRecord',\n\t\t} );\n\t\treturn actions.saveEntityRecord( kind, name, record, options );\n\t};\n\n\tconst deleteEntityRecordMethodName = getMethodName( kind, name, 'delete' );\n\tresult[ deleteEntityRecordMethodName ] = ( key, query, options ) => {\n\t\tlogEntityDeprecation( kind, name, deleteEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'deleteEntityRecord',\n\t\t} );\n\t\treturn actions.deleteEntityRecord( kind, name, key, query, options );\n\t};\n\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: {\n\t\t...dynamicActions,\n\t\t...actions,\n\t\t...entityActions,\n\t\t...createLocksActions(),\n\t},\n\tselectors: {\n\t\t...dynamicSelectors,\n\t\t...selectors,\n\t\t...entitySelectors,\n\t},\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 );\nunlock( store ).registerPrivateActions( privateActions );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\n/**\n * Enums cannot be exported private without losing the ability to narrow types\n * based on their values (they blur to string type).\n */\nexport { SelectionType } from './utils/crdt-user-selections';\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './awareness/types';\nexport * from './fetch';\nexport * from './hooks';\nexport * from './private-apis';\nexport * from './types';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -88,10 +88,17 @@ function receiveEditorAssets(assets) {
|
|
|
88
88
|
assets
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
|
+
function receiveIcons(icons) {
|
|
92
|
+
return {
|
|
93
|
+
type: "RECEIVE_ICONS",
|
|
94
|
+
icons
|
|
95
|
+
};
|
|
96
|
+
}
|
|
91
97
|
export {
|
|
92
98
|
editMediaEntity,
|
|
93
99
|
receiveEditorAssets,
|
|
94
100
|
receiveEditorSettings,
|
|
101
|
+
receiveIcons,
|
|
95
102
|
receiveRegisteredPostMeta
|
|
96
103
|
};
|
|
97
104
|
//# sourceMappingURL=private-actions.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-actions.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\n\n/**\n * Returns an action object used in signalling that the registered post meta\n * fields for a post type have been received.\n *\n * @param {string} postType Post type slug.\n * @param {Object} registeredPostMeta Registered post meta.\n *\n * @return {Object} Action object.\n */\nexport function receiveRegisteredPostMeta( postType, registeredPostMeta ) {\n\treturn {\n\t\ttype: 'RECEIVE_REGISTERED_POST_META',\n\t\tpostType,\n\t\tregisteredPostMeta,\n\t};\n}\n\n/**\n * @typedef {Object} Modifier\n * @property {string} [type] - The type of modifier.\n * @property {Object} [args] - The arguments of the modifier.\n */\n\n/**\n * @typedef {Object} Edits\n * @property {string} [src] - The URL of the media item.\n * @property {Modifier[]} [modifiers] - The modifiers to apply to the media item.\n */\n\n/**\n * Duplicates a media (attachment) entity record and, optionally, modifies it.\n *\n * @param {string} recordId Entity record ID.\n * @param {Edits} edits Edits to apply to the record.\n * @param {Object} options Options object.\n * @param {Function} options.__unstableFetch Custom fetch function.\n * @param {boolean} options.throwOnError Whether to throw an error if the request fails.\n *\n * @return {Promise} Promise resolving to the updated record.\n */\nexport const editMediaEntity =\n\t(\n\t\trecordId,\n\t\tedits = {},\n\t\t{ __unstableFetch = apiFetch, throwOnError = false } = {}\n\t) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tif ( ! recordId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = 'postType';\n\t\tconst name = 'attachment';\n\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.kind === kind && config.name === name\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, recordId ],\n\t\t\t{ exclusive: true }\n\t\t);\n\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t} );\n\n\t\t\ttry {\n\t\t\t\tconst path = `${ entityConfig.baseURL }/${ recordId }/edit`;\n\t\t\t\tconst newRecord = await __unstableFetch( {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( newRecord ) {\n\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t[ newRecord ],\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tupdatedRecord = newRecord;\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\terror = e;\n\t\t\t\thasError = true;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\terror,\n\t\t\t} );\n\n\t\t\tif ( hasError && throwOnError ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn updatedRecord;\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive editor settings.\n *\n * @param {Object} settings Editor settings object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorSettings( settings ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_SETTINGS',\n\t\tsettings,\n\t};\n}\n\n/**\n * Returns an action object used to receive editor assets.\n *\n * @param {Object} assets Editor assets object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorAssets( assets ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_ASSETS',\n\t\tassets,\n\t};\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,OAAO,cAAc;AAKrB,SAAS,kBAAkB;AAWpB,SAAS,0BAA2B,UAAU,oBAAqB;AACzE,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAyBO,IAAM,kBACZ,CACC,UACA,QAAQ,CAAC,GACT,EAAE,kBAAkB,UAAU,eAAe,MAAM,IAAI,CAAC,MAEzD,OAAQ,EAAE,UAAU,cAAc,MAAO;AACxC,MAAK,CAAE,UAAW;AACjB;AAAA,EACD;AAEA,QAAM,OAAO;AACb,QAAM,OAAO;AAEb,QAAM,UAAU,MAAM,cAAc,kBAAmB,IAAK;AAC5D,QAAM,eAAe,QAAQ;AAAA,IAC5B,CAAE,WAAY,OAAO,SAAS,QAAQ,OAAO,SAAS;AAAA,EACvD;AAEA,MAAK,CAAE,cAAe;AACrB;AAAA,EACD;AAEA,QAAM,OAAO,MAAM,SAAS;AAAA,IAC3B;AAAA,IACA,CAAE,YAAY,WAAW,MAAM,MAAM,QAAS;AAAA,IAC9C,EAAE,WAAW,KAAK;AAAA,EACnB;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW;AAEf,MAAI;AACH,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAI;AACH,YAAM,OAAO,GAAI,aAAa,OAAQ,IAAK,QAAS;AACpD,YAAM,YAAY,MAAM,gBAAiB;AAAA,QACxC;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,GAAG;AAAA,QACJ;AAAA,MACD,CAAE;AAEF,UAAK,WAAY;AAChB,iBAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA,CAAE,SAAU;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,MACjB;AAAA,IACD,SAAU,GAAI;AACb,cAAQ;AACR,iBAAW;AAAA,IACZ;AAEA,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAK,YAAY,cAAe;AAC/B,YAAM;AAAA,IACP;AACA,WAAO;AAAA,EACR,UAAE;AACD,aAAS,2BAA4B,IAAK;AAAA,EAC3C;AACD;AASM,SAAS,sBAAuB,UAAW;AACjD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;AASO,SAAS,oBAAqB,QAAS;AAC7C,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;",
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\n\n/**\n * Returns an action object used in signalling that the registered post meta\n * fields for a post type have been received.\n *\n * @param {string} postType Post type slug.\n * @param {Object} registeredPostMeta Registered post meta.\n *\n * @return {Object} Action object.\n */\nexport function receiveRegisteredPostMeta( postType, registeredPostMeta ) {\n\treturn {\n\t\ttype: 'RECEIVE_REGISTERED_POST_META',\n\t\tpostType,\n\t\tregisteredPostMeta,\n\t};\n}\n\n/**\n * @typedef {Object} Modifier\n * @property {string} [type] - The type of modifier.\n * @property {Object} [args] - The arguments of the modifier.\n */\n\n/**\n * @typedef {Object} Edits\n * @property {string} [src] - The URL of the media item.\n * @property {Modifier[]} [modifiers] - The modifiers to apply to the media item.\n */\n\n/**\n * Duplicates a media (attachment) entity record and, optionally, modifies it.\n *\n * @param {string} recordId Entity record ID.\n * @param {Edits} edits Edits to apply to the record.\n * @param {Object} options Options object.\n * @param {Function} options.__unstableFetch Custom fetch function.\n * @param {boolean} options.throwOnError Whether to throw an error if the request fails.\n *\n * @return {Promise} Promise resolving to the updated record.\n */\nexport const editMediaEntity =\n\t(\n\t\trecordId,\n\t\tedits = {},\n\t\t{ __unstableFetch = apiFetch, throwOnError = false } = {}\n\t) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tif ( ! recordId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = 'postType';\n\t\tconst name = 'attachment';\n\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.kind === kind && config.name === name\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, recordId ],\n\t\t\t{ exclusive: true }\n\t\t);\n\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t} );\n\n\t\t\ttry {\n\t\t\t\tconst path = `${ entityConfig.baseURL }/${ recordId }/edit`;\n\t\t\t\tconst newRecord = await __unstableFetch( {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( newRecord ) {\n\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t[ newRecord ],\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tupdatedRecord = newRecord;\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\terror = e;\n\t\t\t\thasError = true;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\terror,\n\t\t\t} );\n\n\t\t\tif ( hasError && throwOnError ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn updatedRecord;\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive editor settings.\n *\n * @param {Object} settings Editor settings object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorSettings( settings ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_SETTINGS',\n\t\tsettings,\n\t};\n}\n\n/**\n * Returns an action object used to receive editor assets.\n *\n * @param {Object} assets Editor assets object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorAssets( assets ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_ASSETS',\n\t\tassets,\n\t};\n}\n\n/**\n * Returns an action object used to receive icons.\n *\n * @param {Array} icons List of icons.\n *\n * @return {Object} Action object.\n */\nexport function receiveIcons( icons ) {\n\treturn {\n\t\ttype: 'RECEIVE_ICONS',\n\t\ticons,\n\t};\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,OAAO,cAAc;AAKrB,SAAS,kBAAkB;AAWpB,SAAS,0BAA2B,UAAU,oBAAqB;AACzE,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAyBO,IAAM,kBACZ,CACC,UACA,QAAQ,CAAC,GACT,EAAE,kBAAkB,UAAU,eAAe,MAAM,IAAI,CAAC,MAEzD,OAAQ,EAAE,UAAU,cAAc,MAAO;AACxC,MAAK,CAAE,UAAW;AACjB;AAAA,EACD;AAEA,QAAM,OAAO;AACb,QAAM,OAAO;AAEb,QAAM,UAAU,MAAM,cAAc,kBAAmB,IAAK;AAC5D,QAAM,eAAe,QAAQ;AAAA,IAC5B,CAAE,WAAY,OAAO,SAAS,QAAQ,OAAO,SAAS;AAAA,EACvD;AAEA,MAAK,CAAE,cAAe;AACrB;AAAA,EACD;AAEA,QAAM,OAAO,MAAM,SAAS;AAAA,IAC3B;AAAA,IACA,CAAE,YAAY,WAAW,MAAM,MAAM,QAAS;AAAA,IAC9C,EAAE,WAAW,KAAK;AAAA,EACnB;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW;AAEf,MAAI;AACH,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAI;AACH,YAAM,OAAO,GAAI,aAAa,OAAQ,IAAK,QAAS;AACpD,YAAM,YAAY,MAAM,gBAAiB;AAAA,QACxC;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,GAAG;AAAA,QACJ;AAAA,MACD,CAAE;AAEF,UAAK,WAAY;AAChB,iBAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA,CAAE,SAAU;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,MACjB;AAAA,IACD,SAAU,GAAI;AACb,cAAQ;AACR,iBAAW;AAAA,IACZ;AAEA,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAK,YAAY,cAAe;AAC/B,YAAM;AAAA,IACP;AACA,WAAO;AAAA,EACR,UAAE;AACD,aAAS,2BAA4B,IAAK;AAAA,EAC3C;AACD;AASM,SAAS,sBAAuB,UAAW;AACjD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;AASO,SAAS,oBAAqB,QAAS;AAC7C,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;AASO,SAAS,aAAc,OAAQ;AACrC,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
// packages/core-data/src/private-apis.js
|
|
2
2
|
import { useEntityRecordsWithPermissions } from "./hooks/use-entity-records.mjs";
|
|
3
3
|
import { RECEIVE_INTERMEDIATE_RESULTS } from "./utils/index.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
useActiveCollaborators,
|
|
6
|
+
useGetAbsolutePositionIndex
|
|
7
|
+
} from "./hooks/use-post-editor-awareness-state.mjs";
|
|
5
8
|
import { lock } from "./lock-unlock.mjs";
|
|
6
9
|
var privateApis = {};
|
|
7
10
|
lock(privateApis, {
|
|
8
11
|
useEntityRecordsWithPermissions,
|
|
9
12
|
RECEIVE_INTERMEDIATE_RESULTS,
|
|
10
|
-
useActiveCollaborators
|
|
13
|
+
useActiveCollaborators,
|
|
14
|
+
useGetAbsolutePositionIndex
|
|
11
15
|
});
|
|
12
16
|
export {
|
|
13
17
|
privateApis
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-apis.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { useEntityRecordsWithPermissions } from './hooks/use-entity-records';\nimport { RECEIVE_INTERMEDIATE_RESULTS } from './utils';\nimport {
|
|
5
|
-
"mappings": ";AAGA,SAAS,uCAAuC;AAChD,SAAS,oCAAoC;AAC7C,
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { useEntityRecordsWithPermissions } from './hooks/use-entity-records';\nimport { RECEIVE_INTERMEDIATE_RESULTS } from './utils';\nimport {\n\tuseActiveCollaborators,\n\tuseGetAbsolutePositionIndex,\n} from './hooks/use-post-editor-awareness-state';\nimport { lock } from './lock-unlock';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tuseEntityRecordsWithPermissions,\n\tRECEIVE_INTERMEDIATE_RESULTS,\n\tuseActiveCollaborators,\n\tuseGetAbsolutePositionIndex,\n} );\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,uCAAuC;AAChD,SAAS,oCAAoC;AAC7C;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,YAAY;AAEd,IAAM,cAAc,CAAC;AAC5B,KAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// packages/core-data/src/private-selectors.ts
|
|
2
2
|
import { createSelector, createRegistrySelector } from "@wordpress/data";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
getDefaultTemplateId,
|
|
5
|
+
getEntityRecord
|
|
6
|
+
} from "./selectors.mjs";
|
|
4
7
|
import { STORE_NAME } from "./name.mjs";
|
|
5
8
|
import { unlock } from "./lock-unlock.mjs";
|
|
6
9
|
import { getSyncManager } from "./sync.mjs";
|
|
@@ -162,6 +165,9 @@ function getEditorSettings(state) {
|
|
|
162
165
|
function getEditorAssets(state) {
|
|
163
166
|
return state.editorAssets;
|
|
164
167
|
}
|
|
168
|
+
function getIcons(state) {
|
|
169
|
+
return state.icons ?? [];
|
|
170
|
+
}
|
|
165
171
|
export {
|
|
166
172
|
getBlockPatternsForPostType,
|
|
167
173
|
getEditorAssets,
|
|
@@ -169,6 +175,7 @@ export {
|
|
|
169
175
|
getEntityRecordPermissions,
|
|
170
176
|
getEntityRecordsPermissions,
|
|
171
177
|
getHomePage,
|
|
178
|
+
getIcons,
|
|
172
179
|
getNavigationFallbackId,
|
|
173
180
|
getPostsPageId,
|
|
174
181
|
getRegisteredPostMeta,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-selectors.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {
|
|
5
|
-
"mappings": ";AAGA,SAAS,gBAAgB,8BAA8B;AAKvD,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetDefaultTemplateId,\n\tgetEntityRecord,\n\ttype State,\n\ttype Icon,\n} from './selectors';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { getSyncManager } from './sync';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\n\ntype EntityRecordKey = string | number;\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * Known Issue: Every-time state.undoManager changes, the getUndoManager\n * private selector is called (if used within useSelect and things like that)\n * which ensures the UI is always properly reactive. But, it's not the case with\n * the custom \"sync\" undo manager.\n *\n * Assumption: When an undo/redo is created, other parts of the core-data state\n * are likely changing simultaneously, which will trigger the selectors again.\n *\n * This issue is acceptable based on the assumption above.\n *\n * @see https://github.com/WordPress/gutenberg/pull/72407/files#r2580214235 for more details.\n *\n * @param state State tree.\n *\n * @return The undo manager.\n */\nexport function getUndoManager( state: State ) {\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t// undoManager is undefined until the first sync-enabled entity is loaded.\n\t\treturn getSyncManager()?.undoManager ?? state.undoManager;\n\t}\n\n\treturn state.undoManager;\n}\n\n/**\n * Retrieve the fallback Navigation.\n *\n * @param state Data state.\n * @return The ID for the fallback Navigation post.\n */\nexport function getNavigationFallbackId(\n\tstate: State\n): EntityRecordKey | undefined {\n\treturn state.navigationFallbackId;\n}\n\nexport const getBlockPatternsForPostType = createRegistrySelector(\n\t( select: any ) =>\n\t\tcreateSelector(\n\t\t\t( state, postType ) =>\n\t\t\t\tselect( STORE_NAME )\n\t\t\t\t\t.getBlockPatterns()\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t( { postTypes } ) =>\n\t\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t),\n\t\t\t() => [ select( STORE_NAME ).getBlockPatterns() ]\n\t\t)\n);\n\n/**\n * Returns the entity records permissions for the given entity record ids.\n */\nexport const getEntityRecordsPermissions = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t(\n\t\t\tstate: State,\n\t\t\tkind: string,\n\t\t\tname: string,\n\t\t\tids: string | string[]\n\t\t) => {\n\t\t\tconst normalizedIds = Array.isArray( ids ) ? ids : [ ids ];\n\t\t\treturn normalizedIds.map( ( id ) => ( {\n\t\t\t\tdelete: select( STORE_NAME ).canUser( 'delete', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t\tupdate: select( STORE_NAME ).canUser( 'update', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\t},\n\t\t( state ) => [ state.userPermissions ]\n\t)\n);\n\n/**\n * Returns the entity record permissions for the given entity record id.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n * @param id Entity record id.\n *\n * @return The entity record permissions.\n */\nexport function getEntityRecordPermissions(\n\tstate: State,\n\tkind: string,\n\tname: string,\n\tid: string\n) {\n\tlogEntityDeprecation( kind, name, 'getEntityRecordPermissions' );\n\treturn getEntityRecordsPermissions( state, kind, name, id )[ 0 ];\n}\n\n/**\n * Returns the registered post meta fields for a given post type.\n *\n * @param state Data state.\n * @param postType Post type.\n *\n * @return Registered post meta fields.\n */\nexport function getRegisteredPostMeta( state: State, postType: string ) {\n\treturn state.registeredPostMeta?.[ postType ] ?? {};\n}\n\nfunction normalizePageId( value: number | string | undefined ): string | null {\n\tif ( ! value || ! [ 'number', 'string' ].includes( typeof value ) ) {\n\t\treturn null;\n\t}\n\n\t// We also need to check if it's not zero (`'0'`).\n\tif ( Number( value ) === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn value.toString();\n}\n\ninterface SiteData {\n\tshow_on_front?: string;\n\tpage_on_front?: string | number;\n\tpage_for_posts?: string | number;\n}\n\nexport const getHomePage = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t() => {\n\t\t\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'__unstableBase'\n\t\t\t) as SiteData | undefined;\n\t\t\t// Still resolving getEntityRecord.\n\t\t\tif ( ! siteData ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst homepageId =\n\t\t\t\tsiteData?.show_on_front === 'page'\n\t\t\t\t\t? normalizePageId( siteData.page_on_front )\n\t\t\t\t\t: null;\n\t\t\tif ( homepageId ) {\n\t\t\t\treturn { postType: 'page', postId: homepageId };\n\t\t\t}\n\t\t\tconst frontPageTemplateId = select(\n\t\t\t\tSTORE_NAME\n\t\t\t).getDefaultTemplateId( {\n\t\t\t\tslug: 'front-page',\n\t\t\t} );\n\t\t\t// Still resolving getDefaultTemplateId.\n\t\t\tif ( ! frontPageTemplateId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn { postType: 'wp_template', postId: frontPageTemplateId };\n\t\t},\n\t\t( state ) => [\n\t\t\t// Even though getDefaultTemplateId.shouldInvalidate returns true when root/site changes,\n\t\t\t// it doesn't seem to invalidate this cache, I'm not sure why.\n\t\t\tgetEntityRecord( state, 'root', 'site' ),\n\t\t\tgetEntityRecord( state, 'root', '__unstableBase' ),\n\t\t\tgetDefaultTemplateId( state, {\n\t\t\t\tslug: 'front-page',\n\t\t\t} ),\n\t\t]\n\t)\n);\n\nexport const getPostsPageId = createRegistrySelector( ( select ) => () => {\n\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t'root',\n\t\t'__unstableBase'\n\t) as SiteData | undefined;\n\treturn siteData?.show_on_front === 'page'\n\t\t? normalizePageId( siteData.page_for_posts )\n\t\t: null;\n} );\n\nexport const getTemplateId = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\tconst homepage = unlock( select( STORE_NAME ) ).getHomePage();\n\n\t\tif ( ! homepage ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For the front page, we always use the front page template if existing.\n\t\tif (\n\t\t\tpostType === 'page' &&\n\t\t\tpostType === homepage?.postType &&\n\t\t\tpostId.toString() === homepage?.postId\n\t\t) {\n\t\t\t// The /lookup endpoint cannot currently handle a lookup\n\t\t\t// when a page is set as the front page, so specifically in\n\t\t\t// that case, we want to check if there is a front page\n\t\t\t// template, and instead of falling back to the home\n\t\t\t// template, we want to fall back to the page template.\n\t\t\tconst templates = select( STORE_NAME ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t);\n\t\t\tif ( ! templates ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = templates.find( ( { slug } ) => slug === 'front-page' )\n\t\t\t\t?.id;\n\t\t\tif ( id ) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\t// If no front page template is found, continue with the\n\t\t\t// logic below (fetching the page template).\n\t\t}\n\n\t\tconst editedEntity = select( STORE_NAME ).getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\t\tif ( ! editedEntity ) {\n\t\t\treturn;\n\t\t}\n\t\tconst postsPageId = unlock( select( STORE_NAME ) ).getPostsPageId();\n\t\t// Check if the current page is the posts page.\n\t\tif ( postType === 'page' && postsPageId === postId.toString() ) {\n\t\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\t\tslug: 'home',\n\t\t\t} );\n\t\t}\n\t\t// First see if the post/page has an assigned template and fetch it.\n\t\tconst currentTemplateSlug = editedEntity.template;\n\t\tif ( currentTemplateSlug ) {\n\t\t\tconst currentTemplate = select( STORE_NAME )\n\t\t\t\t.getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\tper_page: -1,\n\t\t\t\t} )\n\t\t\t\t?.find( ( { slug } ) => slug === currentTemplateSlug );\n\t\t\tif ( currentTemplate ) {\n\t\t\t\treturn currentTemplate.id;\n\t\t\t}\n\t\t}\n\t\t// If no template is assigned, use the default template.\n\t\tlet slugToCheck;\n\t\t// In `draft` status we might not have a slug available, so we use the `single`\n\t\t// post type templates slug(ex page, single-post, single-product etc..).\n\t\t// Pages do not need the `single` prefix in the slug to be prioritized\n\t\t// through template hierarchy.\n\t\tif ( editedEntity.slug ) {\n\t\t\tslugToCheck =\n\t\t\t\tpostType === 'page'\n\t\t\t\t\t? `${ postType }-${ editedEntity.slug }`\n\t\t\t\t\t: `single-${ postType }-${ editedEntity.slug }`;\n\t\t} else {\n\t\t\tslugToCheck = postType === 'page' ? 'page' : `single-${ postType }`;\n\t\t}\n\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\tslug: slugToCheck,\n\t\t} );\n\t}\n);\n\n/**\n * Returns the editor settings.\n *\n * @param state Data state.\n * @return Editor settings object or null if not loaded.\n */\nexport function getEditorSettings(\n\tstate: State\n): Record< string, any > | null {\n\treturn state.editorSettings;\n}\n\n/**\n * Returns the editor assets.\n *\n * @param state Data state.\n * @return Editor assets object or null if not loaded.\n */\nexport function getEditorAssets( state: State ): Record< string, any > | null {\n\treturn state.editorAssets;\n}\n\n/**\n * Returns the list of available icons.\n *\n * @param state Data state.\n * @return The list of icons or empty array if not loaded.\n */\nexport function getIcons( state: State ): Icon[] {\n\treturn state.icons ?? [];\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build-module/reducer.mjs
CHANGED
|
@@ -398,6 +398,30 @@ function editorAssets(state = null, action) {
|
|
|
398
398
|
}
|
|
399
399
|
return state;
|
|
400
400
|
}
|
|
401
|
+
function icons(state = [], action) {
|
|
402
|
+
switch (action.type) {
|
|
403
|
+
case "RECEIVE_ICONS":
|
|
404
|
+
return action.icons;
|
|
405
|
+
}
|
|
406
|
+
return state;
|
|
407
|
+
}
|
|
408
|
+
function syncConnectionStatuses(state = {}, action) {
|
|
409
|
+
switch (action.type) {
|
|
410
|
+
case "SET_SYNC_CONNECTION_STATUS": {
|
|
411
|
+
const key = `${action.kind}/${action.name}:${action.key}`;
|
|
412
|
+
return {
|
|
413
|
+
...state,
|
|
414
|
+
[key]: action.status
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
case "CLEAR_SYNC_CONNECTION_STATUS": {
|
|
418
|
+
const key = `${action.kind}/${action.name}:${action.key}`;
|
|
419
|
+
const { [key]: _, ...rest } = state;
|
|
420
|
+
return rest;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return state;
|
|
424
|
+
}
|
|
401
425
|
var reducer_default = combineReducers({
|
|
402
426
|
users,
|
|
403
427
|
currentTheme,
|
|
@@ -419,7 +443,9 @@ var reducer_default = combineReducers({
|
|
|
419
443
|
defaultTemplates,
|
|
420
444
|
registeredPostMeta,
|
|
421
445
|
editorSettings,
|
|
422
|
-
editorAssets
|
|
446
|
+
editorAssets,
|
|
447
|
+
icons,
|
|
448
|
+
syncConnectionStatuses
|
|
423
449
|
});
|
|
424
450
|
export {
|
|
425
451
|
autosaves,
|
|
@@ -436,8 +462,10 @@ export {
|
|
|
436
462
|
embedPreviews,
|
|
437
463
|
entities,
|
|
438
464
|
entitiesConfig,
|
|
465
|
+
icons,
|
|
439
466
|
navigationFallbackId,
|
|
440
467
|
registeredPostMeta,
|
|
468
|
+
syncConnectionStatuses,
|
|
441
469
|
themeBaseGlobalStyles,
|
|
442
470
|
themeGlobalStyleRevisions,
|
|
443
471
|
themeGlobalStyleVariations,
|