@wordpress/editor 14.35.2-next.dc3f6d3c1.0 → 14.36.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/build/bindings/post-data.js +15 -15
  3. package/build/bindings/post-data.js.map +2 -2
  4. package/build/bindings/term-data.js +97 -95
  5. package/build/bindings/term-data.js.map +2 -2
  6. package/build/components/collab-sidebar/comments.js +12 -4
  7. package/build/components/collab-sidebar/comments.js.map +2 -2
  8. package/build/components/collab-sidebar/hooks.js +9 -1
  9. package/build/components/collab-sidebar/hooks.js.map +2 -2
  10. package/build/components/global-styles/index.js +1 -1
  11. package/build/components/global-styles/index.js.map +1 -1
  12. package/build/components/post-schedule/panel.js +1 -7
  13. package/build/components/post-schedule/panel.js.map +2 -2
  14. package/build/components/post-status/index.js +1 -7
  15. package/build/components/post-status/index.js.map +2 -2
  16. package/build/components/post-template/block-theme.js +1 -1
  17. package/build/components/post-template/block-theme.js.map +2 -2
  18. package/build/components/post-template/hooks.js +1 -1
  19. package/build/components/post-template/hooks.js.map +2 -2
  20. package/build/components/provider/index.js +3 -1
  21. package/build/components/provider/index.js.map +2 -2
  22. package/build/components/visual-editor/index.js +1 -7
  23. package/build/components/visual-editor/index.js.map +2 -2
  24. package/build/components/visual-editor/use-edit-content-only-section-exit.js +5 -6
  25. package/build/components/visual-editor/use-edit-content-only-section-exit.js.map +2 -2
  26. package/build/dataviews/store/private-actions.js +5 -1
  27. package/build/dataviews/store/private-actions.js.map +2 -2
  28. package/build/hooks/template-part-navigation-edit-button.js +8 -11
  29. package/build/hooks/template-part-navigation-edit-button.js.map +3 -3
  30. package/build/store/actions.js +1 -1
  31. package/build/store/actions.js.map +2 -2
  32. package/build/store/constants.js +8 -0
  33. package/build/store/constants.js.map +2 -2
  34. package/build-module/bindings/post-data.js +15 -15
  35. package/build-module/bindings/post-data.js.map +2 -2
  36. package/build-module/bindings/term-data.js +93 -95
  37. package/build-module/bindings/term-data.js.map +2 -2
  38. package/build-module/components/collab-sidebar/comments.js +12 -4
  39. package/build-module/components/collab-sidebar/comments.js.map +2 -2
  40. package/build-module/components/collab-sidebar/hooks.js +9 -1
  41. package/build-module/components/collab-sidebar/hooks.js.map +2 -2
  42. package/build-module/components/global-styles/index.js +1 -1
  43. package/build-module/components/global-styles/index.js.map +1 -1
  44. package/build-module/components/post-schedule/panel.js +1 -12
  45. package/build-module/components/post-schedule/panel.js.map +2 -2
  46. package/build-module/components/post-status/index.js +1 -12
  47. package/build-module/components/post-status/index.js.map +2 -2
  48. package/build-module/components/post-template/block-theme.js +1 -1
  49. package/build-module/components/post-template/block-theme.js.map +2 -2
  50. package/build-module/components/post-template/hooks.js +1 -1
  51. package/build-module/components/post-template/hooks.js.map +2 -2
  52. package/build-module/components/provider/index.js +3 -1
  53. package/build-module/components/provider/index.js.map +2 -2
  54. package/build-module/components/visual-editor/index.js +2 -7
  55. package/build-module/components/visual-editor/index.js.map +2 -2
  56. package/build-module/components/visual-editor/use-edit-content-only-section-exit.js +5 -6
  57. package/build-module/components/visual-editor/use-edit-content-only-section-exit.js.map +2 -2
  58. package/build-module/dataviews/store/private-actions.js +5 -1
  59. package/build-module/dataviews/store/private-actions.js.map +2 -2
  60. package/build-module/hooks/template-part-navigation-edit-button.js +10 -17
  61. package/build-module/hooks/template-part-navigation-edit-button.js.map +2 -2
  62. package/build-module/store/actions.js +1 -1
  63. package/build-module/store/actions.js.map +2 -2
  64. package/build-module/store/constants.js +7 -0
  65. package/build-module/store/constants.js.map +2 -2
  66. package/build-style/style-rtl.css +263 -27
  67. package/build-style/style.css +263 -27
  68. package/build-types/bindings/post-data.d.ts +2 -1
  69. package/build-types/bindings/term-data.d.ts +86 -8
  70. package/build-types/bindings/term-data.d.ts.map +1 -1
  71. package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
  72. package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
  73. package/build-types/components/post-schedule/panel.d.ts.map +1 -1
  74. package/build-types/components/post-status/index.d.ts.map +1 -1
  75. package/build-types/components/post-template/block-theme.d.ts.map +1 -1
  76. package/build-types/components/provider/index.d.ts.map +1 -1
  77. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  78. package/build-types/components/visual-editor/use-edit-content-only-section-exit.d.ts.map +1 -1
  79. package/build-types/dataviews/store/private-actions.d.ts +5 -0
  80. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  81. package/build-types/store/actions.d.ts.map +1 -1
  82. package/build-types/store/constants.d.ts +1 -0
  83. package/build-types/store/constants.d.ts.map +1 -1
  84. package/package.json +40 -40
  85. package/src/bindings/post-data.js +21 -20
  86. package/src/bindings/term-data.js +124 -151
  87. package/src/bindings/test/post-data.js +31 -20
  88. package/src/bindings/test/term-data.js +406 -0
  89. package/src/components/collab-sidebar/comments.js +24 -16
  90. package/src/components/collab-sidebar/hooks.js +12 -1
  91. package/src/components/global-styles/index.js +1 -1
  92. package/src/components/post-schedule/panel.js +1 -13
  93. package/src/components/post-status/index.js +1 -13
  94. package/src/components/post-template/block-theme.js +4 -1
  95. package/src/components/post-template/hooks.js +1 -1
  96. package/src/components/provider/index.js +7 -2
  97. package/src/components/visual-editor/index.js +1 -6
  98. package/src/components/visual-editor/use-edit-content-only-section-exit.js +9 -10
  99. package/src/dataviews/store/private-actions.ts +17 -1
  100. package/src/hooks/template-part-navigation-edit-button.js +4 -15
  101. package/src/store/actions.js +2 -0
  102. package/src/store/constants.ts +6 -0
  103. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- ## 14.35.1-next.0 (2025-11-18)
5
+ ## 14.36.0 (2025-11-26)
6
6
 
7
7
  ### Internal
8
8
 
@@ -50,15 +50,12 @@ var postDataFields = [
50
50
  var post_data_default = {
51
51
  name: "core/post-data",
52
52
  getValues({ select, context, bindings, clientId }) {
53
- const allowedFields = postDataFields.map(
54
- (field) => field.args.field
55
- );
56
53
  const { getBlockAttributes, getBlockName } = select(import_block_editor.store);
57
- const blockName = getBlockName?.(clientId);
54
+ const blockName = getBlockName(clientId);
58
55
  const isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes(blockName);
59
56
  let postId, postType;
60
57
  if (isNavigationBlock) {
61
- const blockAttributes = getBlockAttributes?.(clientId);
58
+ const blockAttributes = getBlockAttributes(clientId);
62
59
  postId = blockAttributes?.id;
63
60
  postType = blockAttributes?.type;
64
61
  } else {
@@ -73,19 +70,22 @@ var post_data_default = {
73
70
  );
74
71
  const newValues = {};
75
72
  for (const [attributeName, binding] of Object.entries(bindings)) {
76
- if (!allowedFields.includes(binding.args.field)) {
77
- newValues[attributeName] = {};
78
- continue;
79
- }
80
- newValues[attributeName] = entityDataValues?.[binding.args.field] ?? postDataFields.find(
73
+ const postDataField = postDataFields.find(
81
74
  (field) => field.args.field === binding.args.field
82
- ).label;
75
+ );
76
+ if (!postDataField) {
77
+ newValues[attributeName] = binding.args.field;
78
+ } else if (!entityDataValues) {
79
+ newValues[attributeName] = postDataField.label;
80
+ } else {
81
+ newValues[attributeName] = entityDataValues[binding.args.field];
82
+ }
83
83
  }
84
84
  return newValues;
85
85
  },
86
86
  setValues({ dispatch, context, bindings, clientId, select }) {
87
87
  const { getBlockName } = select(import_block_editor.store);
88
- const blockName = getBlockName?.(clientId);
88
+ const blockName = getBlockName(clientId);
89
89
  if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
90
90
  return false;
91
91
  }
@@ -103,7 +103,7 @@ var post_data_default = {
103
103
  canUserEditValue({ select, context }) {
104
104
  const { getBlockName, getSelectedBlockClientId } = select(import_block_editor.store);
105
105
  const clientId = getSelectedBlockClientId();
106
- const blockName = getBlockName?.(clientId);
106
+ const blockName = getBlockName(clientId);
107
107
  if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
108
108
  return false;
109
109
  }
@@ -123,12 +123,12 @@ var post_data_default = {
123
123
  }
124
124
  return true;
125
125
  },
126
- getFieldsList({ select }) {
126
+ getFieldsList({ context, select }) {
127
127
  const selectedBlock = select(import_block_editor.store).getSelectedBlock();
128
128
  if (selectedBlock?.name !== "core/post-date") {
129
129
  return [];
130
130
  }
131
- if (NAVIGATION_BLOCK_TYPES.includes(selectedBlock?.name)) {
131
+ if (!context || !context.postId || !context.postType) {
132
132
  return [];
133
133
  }
134
134
  return postDataFields;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/bindings/post-data.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n// Navigation block types that use special handling for backwards compatibility\nconst NAVIGATION_BLOCK_TYPES = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nconst postDataFields = [\n\t{\n\t\tlabel: __( 'Post Date' ),\n\t\targs: { field: 'date' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Post Modified Date' ),\n\t\targs: { field: 'modified' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Post Link' ),\n\t\targs: { field: 'link' },\n\t\ttype: 'string',\n\t},\n];\n\n/**\n * @type {WPBlockBindingsSource}\n */\nexport default {\n\tname: 'core/post-data',\n\tgetValues( { select, context, bindings, clientId } ) {\n\t\tconst allowedFields = postDataFields.map(\n\t\t\t( field ) => field.args.field\n\t\t);\n\n\t\t/*\n\t\t * BACKWARDS COMPATIBILITY: Hardcoded exception for navigation blocks.\n\t\t * Required for WordPress 6.9+ navigation blocks. DO NOT REMOVE.\n\t\t */\n\t\tconst { getBlockAttributes, getBlockName } = select( blockEditorStore );\n\t\tconst blockName = getBlockName?.( clientId );\n\t\tconst isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes( blockName );\n\n\t\tlet postId, postType;\n\n\t\tif ( isNavigationBlock ) {\n\t\t\t// Navigation blocks: read from block attributes\n\t\t\tconst blockAttributes = getBlockAttributes?.( clientId );\n\t\t\tpostId = blockAttributes?.id;\n\t\t\tpostType = blockAttributes?.type;\n\t\t} else {\n\t\t\t// All other blocks: use context\n\t\t\tpostId = context?.postId;\n\t\t\tpostType = context?.postType;\n\t\t}\n\n\t\tconst { getEditedEntityRecord } = select( coreDataStore );\n\t\tconst entityDataValues = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, binding ] of Object.entries( bindings ) ) {\n\t\t\tif ( ! allowedFields.includes( binding.args.field ) ) {\n\t\t\t\tnewValues[ attributeName ] = {};\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnewValues[ attributeName ] =\n\t\t\t\tentityDataValues?.[ binding.args.field ] ??\n\t\t\t\tpostDataFields.find(\n\t\t\t\t\t( field ) => field.args.field === binding.args.field\n\t\t\t\t).label;\n\t\t}\n\t\treturn newValues;\n\t},\n\tsetValues( { dispatch, context, bindings, clientId, select } ) {\n\t\tconst { getBlockName } = select( blockEditorStore );\n\n\t\tconst blockName = getBlockName?.( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newData = {};\n\t\tObject.values( bindings ).forEach( ( { args, newValue } ) => {\n\t\t\tnewData[ args.field ] = newValue;\n\t\t} );\n\n\t\tdispatch( coreDataStore ).editEntityRecord(\n\t\t\t'postType',\n\t\t\tcontext?.postType,\n\t\t\tcontext?.postId,\n\t\t\tnewData\n\t\t);\n\t},\n\tcanUserEditValue( { select, context } ) {\n\t\tconst { getBlockName, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\t\tconst clientId = getSelectedBlockClientId();\n\t\tconst blockName = getBlockName?.( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing in query loop.\n\t\tif ( context?.query || context?.queryId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing when `postType` is not defined.\n\t\tif ( ! context?.postType ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check that the user has the capability to edit post data.\n\t\tconst canUserEdit = select( coreDataStore ).canUser( 'update', {\n\t\t\tkind: 'postType',\n\t\t\tname: context?.postType,\n\t\t\tid: context?.postId,\n\t\t} );\n\t\tif ( ! canUserEdit ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\tgetFieldsList( { select } ) {\n\t\tconst selectedBlock = select( blockEditorStore ).getSelectedBlock();\n\t\tif ( selectedBlock?.name !== 'core/post-date' ) {\n\t\t\treturn [];\n\t\t}\n\t\t// Exit early for navigation blocks (read-only)\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( selectedBlock?.name ) ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn postDataFields;\n\t},\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n// Navigation block types that use special handling for backwards compatibility\nconst NAVIGATION_BLOCK_TYPES = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nconst postDataFields = [\n\t{\n\t\tlabel: __( 'Post Date' ),\n\t\targs: { field: 'date' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Post Modified Date' ),\n\t\targs: { field: 'modified' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Post Link' ),\n\t\targs: { field: 'link' },\n\t\ttype: 'string',\n\t},\n];\n\n/**\n * @type {WPBlockBindingsSource}\n */\nexport default {\n\tname: 'core/post-data',\n\tgetValues( { select, context, bindings, clientId } ) {\n\t\t/*\n\t\t * BACKWARDS COMPATIBILITY: Hardcoded exception for navigation blocks.\n\t\t * Required for WordPress 6.9+ navigation blocks. DO NOT REMOVE.\n\t\t */\n\t\tconst { getBlockAttributes, getBlockName } = select( blockEditorStore );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes( blockName );\n\n\t\tlet postId, postType;\n\n\t\tif ( isNavigationBlock ) {\n\t\t\t// Navigation blocks: read from block attributes\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tpostId = blockAttributes?.id;\n\t\t\tpostType = blockAttributes?.type;\n\t\t} else {\n\t\t\t// All other blocks: use context\n\t\t\tpostId = context?.postId;\n\t\t\tpostType = context?.postType;\n\t\t}\n\n\t\tconst { getEditedEntityRecord } = select( coreDataStore );\n\t\tconst entityDataValues = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, binding ] of Object.entries( bindings ) ) {\n\t\t\tconst postDataField = postDataFields.find(\n\t\t\t\t( field ) => field.args.field === binding.args.field\n\t\t\t);\n\n\t\t\tif ( ! postDataField ) {\n\t\t\t\t// If the field is unknown, return the field name.\n\t\t\t\tnewValues[ attributeName ] = binding.args.field;\n\t\t\t} else if ( ! entityDataValues ) {\n\t\t\t\t// If the entity data does not exist, return the field label.\n\t\t\t\tnewValues[ attributeName ] = postDataField.label;\n\t\t\t} else {\n\t\t\t\t// If the entity data exists, return the entity value.\n\t\t\t\tnewValues[ attributeName ] =\n\t\t\t\t\tentityDataValues[ binding.args.field ];\n\t\t\t}\n\t\t}\n\t\treturn newValues;\n\t},\n\tsetValues( { dispatch, context, bindings, clientId, select } ) {\n\t\tconst { getBlockName } = select( blockEditorStore );\n\n\t\tconst blockName = getBlockName( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newData = {};\n\t\tObject.values( bindings ).forEach( ( { args, newValue } ) => {\n\t\t\tnewData[ args.field ] = newValue;\n\t\t} );\n\n\t\tdispatch( coreDataStore ).editEntityRecord(\n\t\t\t'postType',\n\t\t\tcontext?.postType,\n\t\t\tcontext?.postId,\n\t\t\tnewData\n\t\t);\n\t},\n\tcanUserEditValue( { select, context } ) {\n\t\tconst { getBlockName, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\t\tconst clientId = getSelectedBlockClientId();\n\t\tconst blockName = getBlockName( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing in query loop.\n\t\tif ( context?.query || context?.queryId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing when `postType` is not defined.\n\t\tif ( ! context?.postType ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check that the user has the capability to edit post data.\n\t\tconst canUserEdit = select( coreDataStore ).canUser( 'update', {\n\t\t\tkind: 'postType',\n\t\t\tname: context?.postType,\n\t\t\tid: context?.postId,\n\t\t} );\n\t\tif ( ! canUserEdit ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\tgetFieldsList( { context, select } ) {\n\t\tconst selectedBlock = select( blockEditorStore ).getSelectedBlock();\n\t\tif ( selectedBlock?.name !== 'core/post-date' ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif ( ! context || ! context.postId || ! context.postType ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn postDataFields;\n\t},\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "coreDataStore"]
7
7
  }
@@ -20,7 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // packages/editor/src/bindings/term-data.js
21
21
  var term_data_exports = {};
22
22
  __export(term_data_exports, {
23
- default: () => term_data_default
23
+ default: () => term_data_default,
24
+ termDataFields: () => termDataFields
24
25
  });
25
26
  module.exports = __toCommonJS(term_data_exports);
26
27
  var import_i18n = require("@wordpress/i18n");
@@ -30,91 +31,85 @@ var NAVIGATION_BLOCK_TYPES = [
30
31
  "core/navigation-link",
31
32
  "core/navigation-submenu"
32
33
  ];
33
- function createDataFields(termDataValues, idValue) {
34
- return {
35
- id: {
36
- label: (0, import_i18n.__)("Term ID"),
37
- value: idValue,
38
- type: "string"
39
- },
40
- name: {
41
- label: (0, import_i18n.__)("Name"),
42
- value: termDataValues?.name,
43
- type: "string"
44
- },
45
- slug: {
46
- label: (0, import_i18n.__)("Slug"),
47
- value: termDataValues?.slug,
48
- type: "string"
49
- },
50
- link: {
51
- label: (0, import_i18n.__)("Link"),
52
- value: termDataValues?.link,
53
- type: "string"
54
- },
55
- description: {
56
- label: (0, import_i18n.__)("Description"),
57
- value: termDataValues?.description,
58
- type: "string"
59
- },
60
- parent: {
61
- label: (0, import_i18n.__)("Parent ID"),
62
- value: termDataValues?.parent,
63
- type: "string"
64
- },
65
- count: {
66
- label: (0, import_i18n.__)("Count"),
67
- value: `(${termDataValues?.count ?? 0})`,
68
- type: "string"
69
- }
70
- };
71
- }
72
- function getTermDataFields(select, context, clientId) {
73
- const { getEntityRecord } = select(import_core_data.store);
74
- const { getBlockAttributes, getBlockName } = select(import_block_editor.store);
75
- let termDataValues, dataFields;
76
- const blockName = getBlockName?.(clientId);
77
- const isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes(blockName);
78
- let termId, taxonomy;
79
- if (isNavigationBlock) {
80
- const blockAttributes = getBlockAttributes?.(clientId);
81
- termId = blockAttributes?.id;
82
- const typeFromAttributes = blockAttributes?.type;
83
- taxonomy = typeFromAttributes === "tag" ? "post_tag" : typeFromAttributes;
84
- } else {
85
- termId = context?.termId;
86
- taxonomy = context?.taxonomy;
87
- }
88
- if (taxonomy && termId) {
89
- termDataValues = getEntityRecord("taxonomy", taxonomy, termId);
90
- if (!termDataValues && context?.termData) {
91
- termDataValues = context.termData;
92
- }
93
- if (termDataValues) {
94
- dataFields = createDataFields(termDataValues, termId);
95
- }
96
- } else if (context?.termData) {
97
- termDataValues = context.termData;
98
- dataFields = createDataFields(
99
- termDataValues,
100
- termDataValues?.term_id
101
- );
102
- }
103
- if (!dataFields || !Object.keys(dataFields).length) {
104
- return null;
34
+ var termDataFields = [
35
+ {
36
+ label: (0, import_i18n.__)("Term ID"),
37
+ args: { field: "id" },
38
+ type: "string"
39
+ },
40
+ {
41
+ label: (0, import_i18n.__)("Name"),
42
+ args: { field: "name" },
43
+ type: "string"
44
+ },
45
+ {
46
+ label: (0, import_i18n.__)("Slug"),
47
+ args: { field: "slug" },
48
+ type: "string"
49
+ },
50
+ {
51
+ label: (0, import_i18n.__)("Link"),
52
+ args: { field: "link" },
53
+ type: "string"
54
+ },
55
+ {
56
+ label: (0, import_i18n.__)("Description"),
57
+ args: { field: "description" },
58
+ type: "string"
59
+ },
60
+ {
61
+ label: (0, import_i18n.__)("Parent ID"),
62
+ args: { field: "parent" },
63
+ type: "string"
64
+ },
65
+ {
66
+ label: (0, import_i18n.__)("Count"),
67
+ args: { field: "count" },
68
+ type: "string"
105
69
  }
106
- return dataFields;
107
- }
70
+ ];
108
71
  var term_data_default = {
109
72
  name: "core/term-data",
110
73
  usesContext: ["taxonomy", "termId", "termData"],
111
74
  getValues({ select, context, bindings, clientId }) {
112
- const dataFields = getTermDataFields(select, context, clientId);
75
+ const { getEntityRecord } = select(import_core_data.store);
76
+ const { getBlockAttributes, getBlockName } = select(import_block_editor.store);
77
+ const blockName = getBlockName(clientId);
78
+ const isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes(blockName);
79
+ let termDataValues;
80
+ if (isNavigationBlock) {
81
+ const blockAttributes = getBlockAttributes(clientId);
82
+ const typeFromAttributes = blockAttributes?.type;
83
+ const taxonomy = typeFromAttributes === "tag" ? "post_tag" : typeFromAttributes;
84
+ termDataValues = getEntityRecord(
85
+ "taxonomy",
86
+ taxonomy,
87
+ blockAttributes?.id
88
+ );
89
+ } else if (context.termId && context.taxonomy) {
90
+ termDataValues = getEntityRecord(
91
+ "taxonomy",
92
+ context.taxonomy,
93
+ context.termId
94
+ );
95
+ }
96
+ if (!termDataValues && context?.termData && !isNavigationBlock) {
97
+ termDataValues = context.termData;
98
+ }
113
99
  const newValues = {};
114
- for (const [attributeName, source] of Object.entries(bindings)) {
115
- const fieldKey = source.args.field;
116
- const { value: fieldValue, label: fieldLabel } = dataFields?.[fieldKey] || {};
117
- newValues[attributeName] = fieldValue ?? fieldLabel ?? fieldKey;
100
+ for (const [attributeName, binding] of Object.entries(bindings)) {
101
+ const termDataField = termDataFields.find(
102
+ (field) => field.args.field === binding.args.field
103
+ );
104
+ if (!termDataField) {
105
+ newValues[attributeName] = binding.args.field;
106
+ } else if (!termDataValues || termDataValues[binding.args.field] === void 0) {
107
+ newValues[attributeName] = termDataField.label;
108
+ } else if (binding.args.field === "count") {
109
+ newValues[attributeName] = "(" + termDataValues[binding.args.field] + ")";
110
+ } else {
111
+ newValues[attributeName] = termDataValues[binding.args.field];
112
+ }
118
113
  }
119
114
  return newValues;
120
115
  },
@@ -122,10 +117,10 @@ var term_data_default = {
122
117
  setValues({ dispatch, context, bindings }) {
123
118
  return false;
124
119
  },
125
- canUserEditValue({ select, context, args }) {
120
+ canUserEditValue({ select, context }) {
126
121
  const { getBlockName, getSelectedBlockClientId } = select(import_block_editor.store);
127
122
  const clientId = getSelectedBlockClientId();
128
- const blockName = getBlockName?.(clientId);
123
+ const blockName = getBlockName(clientId);
129
124
  if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
130
125
  return false;
131
126
  }
@@ -135,23 +130,30 @@ var term_data_default = {
135
130
  if (!context?.taxonomy || !context?.termId) {
136
131
  return false;
137
132
  }
138
- const fieldValue = getTermDataFields(select, context, void 0)?.[args.field]?.value;
139
- if (fieldValue === void 0) {
140
- return false;
141
- }
142
133
  return false;
143
134
  },
144
- getFieldsList({ select, context }) {
145
- const clientId = select(import_block_editor.store).getSelectedBlockClientId();
146
- const termDataFields = getTermDataFields(select, context, clientId);
147
- if (!termDataFields) {
135
+ getFieldsList({ context, select }) {
136
+ const { getBlockAttributes, getBlockName, getSelectedBlockClientId } = select(import_block_editor.store);
137
+ const clientId = getSelectedBlockClientId();
138
+ const blockName = getBlockName(clientId);
139
+ if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
140
+ const blockAttributes = getBlockAttributes(clientId);
141
+ if (!blockAttributes || !blockAttributes.id || !blockAttributes.type) {
142
+ return [];
143
+ }
144
+ return termDataFields;
145
+ }
146
+ if (!context) {
148
147
  return [];
149
148
  }
150
- return Object.entries(termDataFields).map(([key, field]) => ({
151
- label: field.label,
152
- type: field.type,
153
- args: { field: key }
154
- }));
149
+ if (context.taxonomy && context.termId || context.termData) {
150
+ return termDataFields;
151
+ }
152
+ return [];
155
153
  }
156
154
  };
155
+ // Annotate the CommonJS export names for ESM import in node:
156
+ 0 && (module.exports = {
157
+ termDataFields
158
+ });
157
159
  //# sourceMappingURL=term-data.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/bindings/term-data.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n// Navigation block types that use special handling for backwards compatibility\nconst NAVIGATION_BLOCK_TYPES = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\n/**\n * Creates the data fields object with the given term data values and ID value.\n *\n * @param {Object} termDataValues The term data values.\n * @param {string|number} idValue The ID value to use.\n * @return {Object} The data fields object.\n */\nfunction createDataFields( termDataValues, idValue ) {\n\treturn {\n\t\tid: {\n\t\t\tlabel: __( 'Term ID' ),\n\t\t\tvalue: idValue,\n\t\t\ttype: 'string',\n\t\t},\n\t\tname: {\n\t\t\tlabel: __( 'Name' ),\n\t\t\tvalue: termDataValues?.name,\n\t\t\ttype: 'string',\n\t\t},\n\t\tslug: {\n\t\t\tlabel: __( 'Slug' ),\n\t\t\tvalue: termDataValues?.slug,\n\t\t\ttype: 'string',\n\t\t},\n\t\tlink: {\n\t\t\tlabel: __( 'Link' ),\n\t\t\tvalue: termDataValues?.link,\n\t\t\ttype: 'string',\n\t\t},\n\t\tdescription: {\n\t\t\tlabel: __( 'Description' ),\n\t\t\tvalue: termDataValues?.description,\n\t\t\ttype: 'string',\n\t\t},\n\t\tparent: {\n\t\t\tlabel: __( 'Parent ID' ),\n\t\t\tvalue: termDataValues?.parent,\n\t\t\ttype: 'string',\n\t\t},\n\t\tcount: {\n\t\t\tlabel: __( 'Count' ),\n\t\t\tvalue: `(${ termDataValues?.count ?? 0 })`,\n\t\t\ttype: 'string',\n\t\t},\n\t};\n}\n\n/**\n * Gets a list of term data fields with their values and labels\n * to be consumed in the needed callbacks.\n * If the value is not available based on context, like in templates,\n * it falls back to the default value, label, or key.\n *\n * @param {Object} select The select function from the data store.\n * @param {Object} context The context provided.\n * @param {string} clientId The block client ID used to read attributes.\n * @return {Object} List of term data fields with their value and label.\n *\n * @example\n * ```js\n * {\n * name: {\n * label: 'Term Name',\n * value: 'Category Name',\n * },\n * count: {\n * label: 'Term Count',\n * value: 5,\n * },\n * ...\n * }\n * ```\n */\nfunction getTermDataFields( select, context, clientId ) {\n\tconst { getEntityRecord } = select( coreDataStore );\n\tconst { getBlockAttributes, getBlockName } = select( blockEditorStore );\n\n\tlet termDataValues, dataFields;\n\n\t/*\n\t * BACKWARDS COMPATIBILITY: Hardcoded exception for navigation blocks.\n\t * Required for WordPress 6.9+ navigation blocks. DO NOT REMOVE.\n\t */\n\tconst blockName = getBlockName?.( clientId );\n\tconst isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes( blockName );\n\n\tlet termId, taxonomy;\n\n\tif ( isNavigationBlock ) {\n\t\t// Navigation blocks: read from block attributes\n\t\tconst blockAttributes = getBlockAttributes?.( clientId );\n\t\ttermId = blockAttributes?.id;\n\t\tconst typeFromAttributes = blockAttributes?.type;\n\t\ttaxonomy =\n\t\t\ttypeFromAttributes === 'tag' ? 'post_tag' : typeFromAttributes;\n\t} else {\n\t\t// All other blocks: use context\n\t\ttermId = context?.termId;\n\t\ttaxonomy = context?.taxonomy;\n\t}\n\n\tif ( taxonomy && termId ) {\n\t\ttermDataValues = getEntityRecord( 'taxonomy', taxonomy, termId );\n\n\t\tif ( ! termDataValues && context?.termData ) {\n\t\t\ttermDataValues = context.termData;\n\t\t}\n\n\t\tif ( termDataValues ) {\n\t\t\tdataFields = createDataFields( termDataValues, termId );\n\t\t}\n\t} else if ( context?.termData ) {\n\t\ttermDataValues = context.termData;\n\t\tdataFields = createDataFields(\n\t\t\ttermDataValues,\n\t\t\ttermDataValues?.term_id\n\t\t);\n\t}\n\n\tif ( ! dataFields || ! Object.keys( dataFields ).length ) {\n\t\treturn null;\n\t}\n\n\treturn dataFields;\n}\n\n/**\n * @type {WPBlockBindingsSource}\n */\nexport default {\n\tname: 'core/term-data',\n\tusesContext: [ 'taxonomy', 'termId', 'termData' ],\n\tgetValues( { select, context, bindings, clientId } ) {\n\t\tconst dataFields = getTermDataFields( select, context, clientId );\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, source ] of Object.entries( bindings ) ) {\n\t\t\t// Use the value, the field label, or the field key.\n\t\t\tconst fieldKey = source.args.field;\n\t\t\tconst { value: fieldValue, label: fieldLabel } =\n\t\t\t\tdataFields?.[ fieldKey ] || {};\n\t\t\tnewValues[ attributeName ] = fieldValue ?? fieldLabel ?? fieldKey;\n\t\t}\n\t\treturn newValues;\n\t},\n\t// eslint-disable-next-line no-unused-vars\n\tsetValues( { dispatch, context, bindings } ) {\n\t\t// Terms are typically not editable through block bindings in most contexts.\n\t\treturn false;\n\t},\n\tcanUserEditValue( { select, context, args } ) {\n\t\tconst { getBlockName, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst clientId = getSelectedBlockClientId();\n\t\tconst blockName = getBlockName?.( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Terms are typically read-only when displayed.\n\t\tif ( context?.termQuery ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing when `taxonomy` or `termId` is not defined.\n\t\tif ( ! context?.taxonomy || ! context?.termId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fieldValue = getTermDataFields( select, context, undefined )?.[\n\t\t\targs.field\n\t\t]?.value;\n\t\t// Empty string or `false` could be a valid value, so we need to check if the field value is undefined.\n\t\tif ( fieldValue === undefined ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetFieldsList( { select, context } ) {\n\t\tconst clientId = select( blockEditorStore ).getSelectedBlockClientId();\n\t\tconst termDataFields = getTermDataFields( select, context, clientId );\n\t\tif ( ! termDataFields ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn Object.entries( termDataFields ).map( ( [ key, field ] ) => ( {\n\t\t\tlabel: field.label,\n\t\t\ttype: field.type,\n\t\t\targs: { field: key },\n\t\t} ) );\n\t},\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n// Navigation block types that use special handling for backwards compatibility\nconst NAVIGATION_BLOCK_TYPES = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nexport const termDataFields = [\n\t{\n\t\tlabel: __( 'Term ID' ),\n\t\targs: { field: 'id' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Name' ),\n\t\targs: { field: 'name' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Slug' ),\n\t\targs: { field: 'slug' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Link' ),\n\t\targs: { field: 'link' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Description' ),\n\t\targs: { field: 'description' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Parent ID' ),\n\t\targs: { field: 'parent' },\n\t\ttype: 'string',\n\t},\n\t{\n\t\tlabel: __( 'Count' ),\n\t\targs: { field: 'count' },\n\t\ttype: 'string',\n\t},\n];\n\n/**\n * @type {WPBlockBindingsSource}\n */\nexport default {\n\tname: 'core/term-data',\n\tusesContext: [ 'taxonomy', 'termId', 'termData' ],\n\tgetValues( { select, context, bindings, clientId } ) {\n\t\tconst { getEntityRecord } = select( coreDataStore );\n\n\t\t/*\n\t\t * BACKWARDS COMPATIBILITY: Hardcoded exception for navigation blocks.\n\t\t * Required for WordPress 6.9+ navigation blocks. DO NOT REMOVE.\n\t\t */\n\t\tconst { getBlockAttributes, getBlockName } = select( blockEditorStore );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes( blockName );\n\n\t\tlet termDataValues;\n\n\t\tif ( isNavigationBlock ) {\n\t\t\t// Navigation blocks: read from block attributes\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tconst typeFromAttributes = blockAttributes?.type;\n\t\t\tconst taxonomy =\n\t\t\t\ttypeFromAttributes === 'tag' ? 'post_tag' : typeFromAttributes;\n\t\t\ttermDataValues = getEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy,\n\t\t\t\tblockAttributes?.id\n\t\t\t);\n\t\t} else if ( context.termId && context.taxonomy ) {\n\t\t\t// All other blocks: use context\n\t\t\ttermDataValues = getEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tcontext.taxonomy,\n\t\t\t\tcontext.termId\n\t\t\t);\n\t\t}\n\n\t\t// Fall back to context termData if available.\n\t\tif ( ! termDataValues && context?.termData && ! isNavigationBlock ) {\n\t\t\ttermDataValues = context.termData;\n\t\t}\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, binding ] of Object.entries( bindings ) ) {\n\t\t\tconst termDataField = termDataFields.find(\n\t\t\t\t( field ) => field.args.field === binding.args.field\n\t\t\t);\n\n\t\t\tif ( ! termDataField ) {\n\t\t\t\t// If the field is unknown, return the field name.\n\t\t\t\tnewValues[ attributeName ] = binding.args.field;\n\t\t\t} else if (\n\t\t\t\t! termDataValues ||\n\t\t\t\ttermDataValues[ binding.args.field ] === undefined\n\t\t\t) {\n\t\t\t\t// If the term data does not exist, return the field label.\n\t\t\t\tnewValues[ attributeName ] = termDataField.label;\n\t\t\t} else if ( binding.args.field === 'count' ) {\n\t\t\t\t// Return the term count value in parentheses.\n\t\t\t\tnewValues[ attributeName ] =\n\t\t\t\t\t'(' + termDataValues[ binding.args.field ] + ')';\n\t\t\t} else {\n\t\t\t\t// If the term data exists, return the term data value.\n\t\t\t\tnewValues[ attributeName ] =\n\t\t\t\t\ttermDataValues[ binding.args.field ];\n\t\t\t}\n\t\t}\n\t\treturn newValues;\n\t},\n\t// eslint-disable-next-line no-unused-vars\n\tsetValues( { dispatch, context, bindings } ) {\n\t\t// Terms are typically not editable through block bindings in most contexts.\n\t\treturn false;\n\t},\n\tcanUserEditValue( { select, context } ) {\n\t\tconst { getBlockName, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst clientId = getSelectedBlockClientId();\n\t\tconst blockName = getBlockName( clientId );\n\n\t\t// Navigaton block types are read-only.\n\t\t// See https://github.com/WordPress/gutenberg/pull/72165.\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Terms are typically read-only when displayed.\n\t\tif ( context?.termQuery ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Lock editing when `taxonomy` or `termId` is not defined.\n\t\tif ( ! context?.taxonomy || ! context?.termId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetFieldsList( { context, select } ) {\n\t\tconst { getBlockAttributes, getBlockName, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\t\tconst clientId = getSelectedBlockClientId();\n\t\tconst blockName = getBlockName( clientId );\n\n\t\tif ( NAVIGATION_BLOCK_TYPES.includes( blockName ) ) {\n\t\t\t// Navigation blocks: read from block attributes\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tif (\n\t\t\t\t! blockAttributes ||\n\t\t\t\t! blockAttributes.id ||\n\t\t\t\t! blockAttributes.type\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn termDataFields;\n\t\t}\n\n\t\tif ( ! context ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif ( ( context.taxonomy && context.termId ) || context.termData ) {\n\t\t\treturn termDataFields;\n\t\t}\n\n\t\treturn [];\n\t},\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["coreDataStore", "blockEditorStore"]
7
7
  }
@@ -73,17 +73,24 @@ function Comments({
73
73
  const { selectBlock, toggleBlockSpotlight } = (0, import_lock_unlock.unlock)(
74
74
  (0, import_data.useDispatch)(import_block_editor.store)
75
75
  );
76
- const { blockCommentId, selectedBlockClientId, orderedBlockIds } = (0, import_data.useSelect)((select) => {
76
+ const {
77
+ blockCommentId,
78
+ selectedBlockClientId,
79
+ orderedBlockIds,
80
+ blockMode
81
+ } = (0, import_data.useSelect)((select) => {
77
82
  const {
78
83
  getBlockAttributes,
79
84
  getSelectedBlockClientId,
80
- getClientIdsWithDescendants
85
+ getClientIdsWithDescendants,
86
+ getBlockMode
81
87
  } = select(import_block_editor.store);
82
88
  const clientId = getSelectedBlockClientId();
83
89
  return {
84
90
  blockCommentId: clientId ? getBlockAttributes(clientId)?.metadata?.noteId : null,
85
91
  selectedBlockClientId: clientId,
86
- orderedBlockIds: getClientIdsWithDescendants()
92
+ orderedBlockIds: getClientIdsWithDescendants(),
93
+ blockMode: clientId ? getBlockMode(clientId) : null
87
94
  };
88
95
  }, []);
89
96
  const relatedBlockElement = useBlockElement(selectedBlockClientId);
@@ -236,7 +243,8 @@ function Comments({
236
243
  isFloating,
237
244
  threads,
238
245
  selectedThread,
239
- setCanvasMinHeight
246
+ setCanvasMinHeight,
247
+ blockMode
240
248
  ]);
241
249
  const handleThreadNavigation = (event, thread, isSelected) => {
242
250
  if (event.defaultPrevented) {