@wordpress/block-editor 13.0.1 → 13.0.3

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 (168) hide show
  1. package/build/components/block-actions/index.js +4 -6
  2. package/build/components/block-actions/index.js.map +1 -1
  3. package/build/components/block-draggable/index.js +1 -1
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-list/block.js +2 -2
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/block.native.js +2 -2
  8. package/build/components/block-list/block.native.js.map +1 -1
  9. package/build/components/block-list/use-in-between-inserter.js +3 -1
  10. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  11. package/build/components/block-lock/use-block-lock.js +2 -4
  12. package/build/components/block-lock/use-block-lock.js.map +1 -1
  13. package/build/components/block-mover/index.js +1 -1
  14. package/build/components/block-mover/index.js.map +1 -1
  15. package/build/components/block-mover/index.native.js +1 -1
  16. package/build/components/block-mover/index.native.js.map +1 -1
  17. package/build/components/block-settings-menu/block-settings-dropdown.js +1 -1
  18. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  19. package/build/components/block-switcher/block-variation-transformations.js +1 -3
  20. package/build/components/block-switcher/block-variation-transformations.js.map +1 -1
  21. package/build/components/block-switcher/index.js +13 -6
  22. package/build/components/block-switcher/index.js.map +1 -1
  23. package/build/components/block-toolbar/index.js +6 -10
  24. package/build/components/block-toolbar/index.js.map +1 -1
  25. package/build/components/block-toolbar/shuffle.js +3 -1
  26. package/build/components/block-toolbar/shuffle.js.map +1 -1
  27. package/build/components/block-tools/block-selection-button.js +2 -2
  28. package/build/components/block-tools/block-selection-button.js.map +1 -1
  29. package/build/components/global-styles/hooks.js +1 -1
  30. package/build/components/global-styles/hooks.js.map +1 -1
  31. package/build/components/global-styles/use-global-styles-output.js +18 -4
  32. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  33. package/build/components/image-editor/aspect-ratio-dropdown.js +0 -1
  34. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  35. package/build/components/list-view/block.js +7 -6
  36. package/build/components/list-view/block.js.map +1 -1
  37. package/build/components/list-view/branch.js +3 -1
  38. package/build/components/list-view/branch.js.map +1 -1
  39. package/build/components/list-view/use-clipboard-handler.js +1 -1
  40. package/build/components/list-view/use-clipboard-handler.js.map +1 -1
  41. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
  42. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  43. package/build/components/use-block-commands/index.js +3 -3
  44. package/build/components/use-block-commands/index.js.map +1 -1
  45. package/build/hooks/block-bindings.js +19 -16
  46. package/build/hooks/block-bindings.js.map +1 -1
  47. package/build/hooks/block-style-variation.js +26 -7
  48. package/build/hooks/block-style-variation.js.map +1 -1
  49. package/build/hooks/use-bindings-attributes.js +7 -2
  50. package/build/hooks/use-bindings-attributes.js.map +1 -1
  51. package/build/hooks/utils.js +3 -2
  52. package/build/hooks/utils.js.map +1 -1
  53. package/build/lock-unlock.js +1 -1
  54. package/build/lock-unlock.js.map +1 -1
  55. package/build/private-apis.js +3 -1
  56. package/build/private-apis.js.map +1 -1
  57. package/build/store/actions.js +20 -4
  58. package/build/store/actions.js.map +1 -1
  59. package/build/store/private-actions.js +1 -2
  60. package/build/store/private-actions.js.map +1 -1
  61. package/build/store/selectors.js +17 -19
  62. package/build/store/selectors.js.map +1 -1
  63. package/build-module/components/block-actions/index.js +4 -6
  64. package/build-module/components/block-actions/index.js.map +1 -1
  65. package/build-module/components/block-draggable/index.js +1 -1
  66. package/build-module/components/block-draggable/index.js.map +1 -1
  67. package/build-module/components/block-list/block.js +2 -2
  68. package/build-module/components/block-list/block.js.map +1 -1
  69. package/build-module/components/block-list/block.native.js +2 -2
  70. package/build-module/components/block-list/block.native.js.map +1 -1
  71. package/build-module/components/block-list/use-in-between-inserter.js +3 -1
  72. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  73. package/build-module/components/block-lock/use-block-lock.js +2 -4
  74. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  75. package/build-module/components/block-mover/index.js +1 -1
  76. package/build-module/components/block-mover/index.js.map +1 -1
  77. package/build-module/components/block-mover/index.native.js +1 -1
  78. package/build-module/components/block-mover/index.native.js.map +1 -1
  79. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
  80. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  81. package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
  82. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
  83. package/build-module/components/block-switcher/index.js +15 -8
  84. package/build-module/components/block-switcher/index.js.map +1 -1
  85. package/build-module/components/block-toolbar/index.js +7 -10
  86. package/build-module/components/block-toolbar/index.js.map +1 -1
  87. package/build-module/components/block-toolbar/shuffle.js +3 -1
  88. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  89. package/build-module/components/block-tools/block-selection-button.js +2 -2
  90. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  91. package/build-module/components/global-styles/hooks.js +1 -1
  92. package/build-module/components/global-styles/hooks.js.map +1 -1
  93. package/build-module/components/global-styles/use-global-styles-output.js +18 -4
  94. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  95. package/build-module/components/image-editor/aspect-ratio-dropdown.js +0 -1
  96. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  97. package/build-module/components/list-view/block.js +7 -6
  98. package/build-module/components/list-view/block.js.map +1 -1
  99. package/build-module/components/list-view/branch.js +3 -1
  100. package/build-module/components/list-view/branch.js.map +1 -1
  101. package/build-module/components/list-view/use-clipboard-handler.js +1 -1
  102. package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
  103. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
  104. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  105. package/build-module/components/use-block-commands/index.js +3 -3
  106. package/build-module/components/use-block-commands/index.js.map +1 -1
  107. package/build-module/hooks/block-bindings.js +20 -17
  108. package/build-module/hooks/block-bindings.js.map +1 -1
  109. package/build-module/hooks/block-style-variation.js +25 -7
  110. package/build-module/hooks/block-style-variation.js.map +1 -1
  111. package/build-module/hooks/use-bindings-attributes.js +7 -2
  112. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  113. package/build-module/hooks/utils.js +3 -2
  114. package/build-module/hooks/utils.js.map +1 -1
  115. package/build-module/lock-unlock.js +1 -1
  116. package/build-module/lock-unlock.js.map +1 -1
  117. package/build-module/private-apis.js +3 -1
  118. package/build-module/private-apis.js.map +1 -1
  119. package/build-module/store/actions.js +20 -4
  120. package/build-module/store/actions.js.map +1 -1
  121. package/build-module/store/private-actions.js +1 -2
  122. package/build-module/store/private-actions.js.map +1 -1
  123. package/build-module/store/selectors.js +17 -19
  124. package/build-module/store/selectors.js.map +1 -1
  125. package/build-style/style-rtl.css +8 -17
  126. package/build-style/style.css +8 -17
  127. package/package.json +13 -13
  128. package/src/components/block-actions/index.js +3 -7
  129. package/src/components/block-draggable/index.js +1 -1
  130. package/src/components/block-list/block.js +2 -2
  131. package/src/components/block-list/block.native.js +2 -2
  132. package/src/components/block-list/use-in-between-inserter.js +3 -1
  133. package/src/components/block-lock/use-block-lock.js +2 -4
  134. package/src/components/block-mover/index.js +1 -1
  135. package/src/components/block-mover/index.native.js +1 -1
  136. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
  137. package/src/components/block-switcher/block-variation-transformations.js +4 -9
  138. package/src/components/block-switcher/index.js +27 -12
  139. package/src/components/block-switcher/style.scss +5 -0
  140. package/src/components/block-toolbar/index.js +7 -9
  141. package/src/components/block-toolbar/shuffle.js +3 -1
  142. package/src/components/block-toolbar/style.scss +9 -6
  143. package/src/components/block-tools/block-selection-button.js +2 -2
  144. package/src/components/global-styles/hooks.js +1 -4
  145. package/src/components/global-styles/test/use-global-styles-output.js +38 -3
  146. package/src/components/global-styles/use-global-styles-output.js +28 -7
  147. package/src/components/image-editor/aspect-ratio-dropdown.js +0 -1
  148. package/src/components/list-view/block.js +7 -7
  149. package/src/components/list-view/branch.js +5 -1
  150. package/src/components/list-view/use-clipboard-handler.js +1 -6
  151. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +2 -9
  152. package/src/components/use-block-commands/index.js +3 -4
  153. package/src/hooks/block-bindings.js +28 -22
  154. package/src/hooks/block-style-variation.js +24 -6
  155. package/src/hooks/use-bindings-attributes.js +11 -1
  156. package/src/hooks/utils.js +3 -1
  157. package/src/lock-unlock.js +1 -1
  158. package/src/private-apis.js +2 -0
  159. package/src/store/actions.js +24 -10
  160. package/src/store/private-actions.js +1 -5
  161. package/src/store/selectors.js +19 -26
  162. package/src/style.scss +0 -1
  163. package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
  164. package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  165. package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
  166. package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  167. package/src/components/block-bindings-toolbar-indicator/index.js +0 -137
  168. package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
@@ -1,106 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = BlockBindingsToolbarIndicator;
8
- var _element = require("@wordpress/element");
9
- var _i18n = require("@wordpress/i18n");
10
- var _components = require("@wordpress/components");
11
- var _blocks = require("@wordpress/blocks");
12
- var _data = require("@wordpress/data");
13
- var _icons = require("@wordpress/icons");
14
- var _store = require("../../store");
15
- var _blockIcon = _interopRequireDefault(require("../block-icon"));
16
- var _useBlockDisplayTitle = _interopRequireDefault(require("../block-title/use-block-display-title"));
17
- var _jsxRuntime = require("react/jsx-runtime");
18
- /**
19
- * WordPress dependencies
20
- */
21
-
22
- /**
23
- * Internal dependencies
24
- */
25
-
26
- function BlockBindingsToolbarIndicator({
27
- clientIds
28
- }) {
29
- const isSingleBlockSelected = clientIds.length === 1;
30
- const {
31
- icon,
32
- firstBlockName,
33
- isConnectedToPatternOverrides
34
- } = (0, _data.useSelect)(select => {
35
- const {
36
- getBlockAttributes,
37
- getBlockNamesByClientId,
38
- getBlocksByClientId
39
- } = select(_store.store);
40
- const {
41
- getBlockType,
42
- getActiveBlockVariation
43
- } = select(_blocks.store);
44
- const blockTypeNames = getBlockNamesByClientId(clientIds);
45
- const _firstBlockTypeName = blockTypeNames[0];
46
- const firstBlockType = getBlockType(_firstBlockTypeName);
47
- let _icon;
48
- if (isSingleBlockSelected) {
49
- const match = getActiveBlockVariation(_firstBlockTypeName, getBlockAttributes(clientIds[0]));
50
- // Take into account active block variations.
51
- _icon = match?.icon || firstBlockType.icon;
52
- } else {
53
- const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
54
- // When selection consists of blocks of multiple types, display an
55
- // appropriate icon to communicate the non-uniformity.
56
- _icon = isSelectionOfSameType ? firstBlockType.icon : _icons.copy;
57
- }
58
- return {
59
- icon: _icon,
60
- firstBlockName: getBlockAttributes(clientIds[0]).metadata.name,
61
- isConnectedToPatternOverrides: getBlocksByClientId(clientIds).some(block => Object.values(block?.attributes?.metadata?.bindings || {}).some(binding => binding.source === 'core/pattern-overrides'))
62
- };
63
- }, [clientIds, isSingleBlockSelected]);
64
- const firstBlockTitle = (0, _useBlockDisplayTitle.default)({
65
- clientId: clientIds[0],
66
- maximumLength: 35
67
- });
68
- let blockDescription = isSingleBlockSelected ? (0, _i18n._x)('This block is connected.', 'block toolbar button label and description') : (0, _i18n._x)('These blocks are connected.', 'block toolbar button label and description');
69
- if (isConnectedToPatternOverrides && firstBlockName) {
70
- blockDescription = isSingleBlockSelected ? (0, _i18n.sprintf)( /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
71
- (0, _i18n.__)('This %1$s is editable using the "%2$s" override.'), firstBlockTitle.toLowerCase(), firstBlockName) : (0, _i18n.__)('These blocks are editable using overrides.');
72
- }
73
- const descriptionId = (0, _element.useId)();
74
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
75
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarItem, {
76
- children: toggleProps => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, {
77
- className: "block-editor-block-bindings-toolbar-indicator",
78
- label: firstBlockTitle,
79
- popoverProps: {
80
- placement: 'bottom-start',
81
- className: 'block-editor-block-bindings-toolbar-indicator__popover'
82
- },
83
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
84
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockIcon.default, {
85
- icon: icon,
86
- className: "block-editor-block-bindings-toolbar-indicator-icon",
87
- showColors: true
88
- })
89
- }),
90
- toggleProps: {
91
- describedBy: blockDescription,
92
- ...toggleProps
93
- },
94
- menuProps: {
95
- orientation: 'both',
96
- 'aria-describedby': descriptionId
97
- },
98
- children: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalText, {
99
- id: descriptionId,
100
- children: blockDescription
101
- })
102
- })
103
- })
104
- });
105
- }
106
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_element","require","_i18n","_components","_blocks","_data","_icons","_store","_blockIcon","_interopRequireDefault","_useBlockDisplayTitle","_jsxRuntime","BlockBindingsToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","isConnectedToPatternOverrides","useSelect","select","getBlockAttributes","getBlockNamesByClientId","getBlocksByClientId","blockEditorStore","getBlockType","getActiveBlockVariation","blocksStore","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","copy","metadata","name","some","block","Object","values","attributes","bindings","binding","source","firstBlockTitle","useBlockDisplayTitle","clientId","maximumLength","blockDescription","_x","sprintf","__","toLowerCase","descriptionId","useId","jsx","ToolbarGroup","children","ToolbarItem","toggleProps","DropdownMenu","className","label","popoverProps","placement","Fragment","default","showColors","describedBy","menuProps","orientation","__experimentalText","id"],"sources":["@wordpress/block-editor/src/components/block-bindings-toolbar-indicator/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport default function BlockBindingsToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName, isConnectedToPatternOverrides } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t\tisConnectedToPatternOverrides: getBlocksByClientId(\n\t\t\t\t\tclientIds\n\t\t\t\t).some( ( block ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tblock?.attributes?.metadata?.bindings || {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding.source === 'core/pattern-overrides'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tlet blockDescription = isSingleBlockSelected\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\tif ( isConnectedToPatternOverrides && firstBlockName ) {\n\t\tblockDescription = isSingleBlockSelected\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */\n\t\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\t\tfirstBlockName\n\t\t\t )\n\t\t\t: __( 'These blocks are editable using overrides.' );\n\t}\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator\"\n\t\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t'block-editor-block-bindings-toolbar-indicator__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<Text id={ descriptionId }>\n\t\t\t\t\t\t\t\t{ blockDescription }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,99 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useId } from '@wordpress/element';
5
- import { __, sprintf, _x } from '@wordpress/i18n';
6
- import { DropdownMenu, ToolbarGroup, ToolbarItem, __experimentalText as Text } from '@wordpress/components';
7
- import { store as blocksStore } from '@wordpress/blocks';
8
- import { useSelect } from '@wordpress/data';
9
- import { copy } from '@wordpress/icons';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { store as blockEditorStore } from '../../store';
15
- import BlockIcon from '../block-icon';
16
- import useBlockDisplayTitle from '../block-title/use-block-display-title';
17
- import { jsx as _jsx } from "react/jsx-runtime";
18
- import { Fragment as _Fragment } from "react/jsx-runtime";
19
- export default function BlockBindingsToolbarIndicator({
20
- clientIds
21
- }) {
22
- const isSingleBlockSelected = clientIds.length === 1;
23
- const {
24
- icon,
25
- firstBlockName,
26
- isConnectedToPatternOverrides
27
- } = useSelect(select => {
28
- const {
29
- getBlockAttributes,
30
- getBlockNamesByClientId,
31
- getBlocksByClientId
32
- } = select(blockEditorStore);
33
- const {
34
- getBlockType,
35
- getActiveBlockVariation
36
- } = select(blocksStore);
37
- const blockTypeNames = getBlockNamesByClientId(clientIds);
38
- const _firstBlockTypeName = blockTypeNames[0];
39
- const firstBlockType = getBlockType(_firstBlockTypeName);
40
- let _icon;
41
- if (isSingleBlockSelected) {
42
- const match = getActiveBlockVariation(_firstBlockTypeName, getBlockAttributes(clientIds[0]));
43
- // Take into account active block variations.
44
- _icon = match?.icon || firstBlockType.icon;
45
- } else {
46
- const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
47
- // When selection consists of blocks of multiple types, display an
48
- // appropriate icon to communicate the non-uniformity.
49
- _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
50
- }
51
- return {
52
- icon: _icon,
53
- firstBlockName: getBlockAttributes(clientIds[0]).metadata.name,
54
- isConnectedToPatternOverrides: getBlocksByClientId(clientIds).some(block => Object.values(block?.attributes?.metadata?.bindings || {}).some(binding => binding.source === 'core/pattern-overrides'))
55
- };
56
- }, [clientIds, isSingleBlockSelected]);
57
- const firstBlockTitle = useBlockDisplayTitle({
58
- clientId: clientIds[0],
59
- maximumLength: 35
60
- });
61
- let blockDescription = isSingleBlockSelected ? _x('This block is connected.', 'block toolbar button label and description') : _x('These blocks are connected.', 'block toolbar button label and description');
62
- if (isConnectedToPatternOverrides && firstBlockName) {
63
- blockDescription = isSingleBlockSelected ? sprintf( /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
64
- __('This %1$s is editable using the "%2$s" override.'), firstBlockTitle.toLowerCase(), firstBlockName) : __('These blocks are editable using overrides.');
65
- }
66
- const descriptionId = useId();
67
- return /*#__PURE__*/_jsx(ToolbarGroup, {
68
- children: /*#__PURE__*/_jsx(ToolbarItem, {
69
- children: toggleProps => /*#__PURE__*/_jsx(DropdownMenu, {
70
- className: "block-editor-block-bindings-toolbar-indicator",
71
- label: firstBlockTitle,
72
- popoverProps: {
73
- placement: 'bottom-start',
74
- className: 'block-editor-block-bindings-toolbar-indicator__popover'
75
- },
76
- icon: /*#__PURE__*/_jsx(_Fragment, {
77
- children: /*#__PURE__*/_jsx(BlockIcon, {
78
- icon: icon,
79
- className: "block-editor-block-bindings-toolbar-indicator-icon",
80
- showColors: true
81
- })
82
- }),
83
- toggleProps: {
84
- describedBy: blockDescription,
85
- ...toggleProps
86
- },
87
- menuProps: {
88
- orientation: 'both',
89
- 'aria-describedby': descriptionId
90
- },
91
- children: () => /*#__PURE__*/_jsx(Text, {
92
- id: descriptionId,
93
- children: blockDescription
94
- })
95
- })
96
- })
97
- });
98
- }
99
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useId","__","sprintf","_x","DropdownMenu","ToolbarGroup","ToolbarItem","__experimentalText","Text","store","blocksStore","useSelect","copy","blockEditorStore","BlockIcon","useBlockDisplayTitle","jsx","_jsx","Fragment","_Fragment","BlockBindingsToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","isConnectedToPatternOverrides","select","getBlockAttributes","getBlockNamesByClientId","getBlocksByClientId","getBlockType","getActiveBlockVariation","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","metadata","name","some","block","Object","values","attributes","bindings","binding","source","firstBlockTitle","clientId","maximumLength","blockDescription","toLowerCase","descriptionId","children","toggleProps","className","label","popoverProps","placement","showColors","describedBy","menuProps","orientation","id"],"sources":["@wordpress/block-editor/src/components/block-bindings-toolbar-indicator/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport default function BlockBindingsToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName, isConnectedToPatternOverrides } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t\tisConnectedToPatternOverrides: getBlocksByClientId(\n\t\t\t\t\tclientIds\n\t\t\t\t).some( ( block ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tblock?.attributes?.metadata?.bindings || {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding.source === 'core/pattern-overrides'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tlet blockDescription = isSingleBlockSelected\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\tif ( isConnectedToPatternOverrides && firstBlockName ) {\n\t\tblockDescription = isSingleBlockSelected\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */\n\t\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\t\tfirstBlockName\n\t\t\t )\n\t\t\t: __( 'These blocks are editable using overrides.' );\n\t}\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator\"\n\t\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t'block-editor-block-bindings-toolbar-indicator__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<Text id={ descriptionId }>\n\t\t\t\t\t\t\t\t{ blockDescription }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,137 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useId } from '@wordpress/element';
5
- import { __, sprintf, _x } from '@wordpress/i18n';
6
- import {
7
- DropdownMenu,
8
- ToolbarGroup,
9
- ToolbarItem,
10
- __experimentalText as Text,
11
- } from '@wordpress/components';
12
- import { store as blocksStore } from '@wordpress/blocks';
13
- import { useSelect } from '@wordpress/data';
14
- import { copy } from '@wordpress/icons';
15
-
16
- /**
17
- * Internal dependencies
18
- */
19
- import { store as blockEditorStore } from '../../store';
20
- import BlockIcon from '../block-icon';
21
- import useBlockDisplayTitle from '../block-title/use-block-display-title';
22
-
23
- export default function BlockBindingsToolbarIndicator( { clientIds } ) {
24
- const isSingleBlockSelected = clientIds.length === 1;
25
- const { icon, firstBlockName, isConnectedToPatternOverrides } = useSelect(
26
- ( select ) => {
27
- const {
28
- getBlockAttributes,
29
- getBlockNamesByClientId,
30
- getBlocksByClientId,
31
- } = select( blockEditorStore );
32
- const { getBlockType, getActiveBlockVariation } =
33
- select( blocksStore );
34
- const blockTypeNames = getBlockNamesByClientId( clientIds );
35
- const _firstBlockTypeName = blockTypeNames[ 0 ];
36
- const firstBlockType = getBlockType( _firstBlockTypeName );
37
- let _icon;
38
- if ( isSingleBlockSelected ) {
39
- const match = getActiveBlockVariation(
40
- _firstBlockTypeName,
41
- getBlockAttributes( clientIds[ 0 ] )
42
- );
43
- // Take into account active block variations.
44
- _icon = match?.icon || firstBlockType.icon;
45
- } else {
46
- const isSelectionOfSameType =
47
- new Set( blockTypeNames ).size === 1;
48
- // When selection consists of blocks of multiple types, display an
49
- // appropriate icon to communicate the non-uniformity.
50
- _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
51
- }
52
-
53
- return {
54
- icon: _icon,
55
- firstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata
56
- .name,
57
- isConnectedToPatternOverrides: getBlocksByClientId(
58
- clientIds
59
- ).some( ( block ) =>
60
- Object.values(
61
- block?.attributes?.metadata?.bindings || {}
62
- ).some(
63
- ( binding ) =>
64
- binding.source === 'core/pattern-overrides'
65
- )
66
- ),
67
- };
68
- },
69
- [ clientIds, isSingleBlockSelected ]
70
- );
71
- const firstBlockTitle = useBlockDisplayTitle( {
72
- clientId: clientIds[ 0 ],
73
- maximumLength: 35,
74
- } );
75
-
76
- let blockDescription = isSingleBlockSelected
77
- ? _x(
78
- 'This block is connected.',
79
- 'block toolbar button label and description'
80
- )
81
- : _x(
82
- 'These blocks are connected.',
83
- 'block toolbar button label and description'
84
- );
85
- if ( isConnectedToPatternOverrides && firstBlockName ) {
86
- blockDescription = isSingleBlockSelected
87
- ? sprintf(
88
- /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
89
- __( 'This %1$s is editable using the "%2$s" override.' ),
90
- firstBlockTitle.toLowerCase(),
91
- firstBlockName
92
- )
93
- : __( 'These blocks are editable using overrides.' );
94
- }
95
- const descriptionId = useId();
96
-
97
- return (
98
- <ToolbarGroup>
99
- <ToolbarItem>
100
- { ( toggleProps ) => (
101
- <DropdownMenu
102
- className="block-editor-block-bindings-toolbar-indicator"
103
- label={ firstBlockTitle }
104
- popoverProps={ {
105
- placement: 'bottom-start',
106
- className:
107
- 'block-editor-block-bindings-toolbar-indicator__popover',
108
- } }
109
- icon={
110
- <>
111
- <BlockIcon
112
- icon={ icon }
113
- className="block-editor-block-bindings-toolbar-indicator-icon"
114
- showColors
115
- />
116
- </>
117
- }
118
- toggleProps={ {
119
- describedBy: blockDescription,
120
- ...toggleProps,
121
- } }
122
- menuProps={ {
123
- orientation: 'both',
124
- 'aria-describedby': descriptionId,
125
- } }
126
- >
127
- { () => (
128
- <Text id={ descriptionId }>
129
- { blockDescription }
130
- </Text>
131
- ) }
132
- </DropdownMenu>
133
- ) }
134
- </ToolbarItem>
135
- </ToolbarGroup>
136
- );
137
- }
@@ -1,12 +0,0 @@
1
- .block-editor-block-bindings-toolbar-indicator__popover .components-popover__content {
2
- min-width: 260px;
3
- padding: $grid-unit-20;
4
- }
5
-
6
- .block-editor-block-bindings-toolbar-indicator .block-editor-block-bindings-toolbar-indicator-icon.has-colors svg {
7
- fill: var(--wp-block-synced-color);
8
- }
9
-
10
- .editor-collapsible-block-toolbar .block-editor-block-bindings-toolbar-indicator {
11
- height: 32px;
12
- }