@wordpress/block-editor 13.0.0 → 13.0.2

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 (197) 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-tools/block-selection-button.js +2 -2
  26. package/build/components/block-tools/block-selection-button.js.map +1 -1
  27. package/build/components/button-block-appender/index.js +4 -1
  28. package/build/components/button-block-appender/index.js.map +1 -1
  29. package/build/components/global-styles/background-panel.js +3 -3
  30. package/build/components/global-styles/background-panel.js.map +1 -1
  31. package/build/components/global-styles/hooks.js +2 -2
  32. package/build/components/global-styles/hooks.js.map +1 -1
  33. package/build/components/global-styles/use-global-styles-output.js +14 -1
  34. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  35. package/build/components/inserter/block-types-tab.js +3 -3
  36. package/build/components/inserter/block-types-tab.js.map +1 -1
  37. package/build/components/inserter/hooks/use-block-types-state.js +3 -2
  38. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  39. package/build/components/link-control/link-preview.js +1 -0
  40. package/build/components/link-control/link-preview.js.map +1 -1
  41. package/build/components/link-control/search-input.js +1 -1
  42. package/build/components/link-control/search-input.js.map +1 -1
  43. package/build/components/list-view/block.js +7 -6
  44. package/build/components/list-view/block.js.map +1 -1
  45. package/build/components/list-view/branch.js +3 -1
  46. package/build/components/list-view/branch.js.map +1 -1
  47. package/build/components/list-view/use-clipboard-handler.js +1 -1
  48. package/build/components/list-view/use-clipboard-handler.js.map +1 -1
  49. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +9 -12
  50. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  51. package/build/components/use-block-commands/index.js +3 -3
  52. package/build/components/use-block-commands/index.js.map +1 -1
  53. package/build/components/writing-flow/use-clipboard-handler.js +22 -3
  54. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  55. package/build/hooks/block-bindings.js +19 -16
  56. package/build/hooks/block-bindings.js.map +1 -1
  57. package/build/hooks/block-style-variation.js +22 -4
  58. package/build/hooks/block-style-variation.js.map +1 -1
  59. package/build/hooks/use-bindings-attributes.js +7 -2
  60. package/build/hooks/use-bindings-attributes.js.map +1 -1
  61. package/build/hooks/utils.js +3 -2
  62. package/build/hooks/utils.js.map +1 -1
  63. package/build/lock-unlock.js +1 -1
  64. package/build/lock-unlock.js.map +1 -1
  65. package/build/private-apis.js +3 -1
  66. package/build/private-apis.js.map +1 -1
  67. package/build/store/actions.js +21 -5
  68. package/build/store/actions.js.map +1 -1
  69. package/build/store/private-actions.js +1 -2
  70. package/build/store/private-actions.js.map +1 -1
  71. package/build/store/selectors.js +19 -20
  72. package/build/store/selectors.js.map +1 -1
  73. package/build-module/components/block-actions/index.js +4 -6
  74. package/build-module/components/block-actions/index.js.map +1 -1
  75. package/build-module/components/block-draggable/index.js +1 -1
  76. package/build-module/components/block-draggable/index.js.map +1 -1
  77. package/build-module/components/block-list/block.js +2 -2
  78. package/build-module/components/block-list/block.js.map +1 -1
  79. package/build-module/components/block-list/block.native.js +2 -2
  80. package/build-module/components/block-list/block.native.js.map +1 -1
  81. package/build-module/components/block-list/use-in-between-inserter.js +3 -1
  82. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  83. package/build-module/components/block-lock/use-block-lock.js +2 -4
  84. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  85. package/build-module/components/block-mover/index.js +1 -1
  86. package/build-module/components/block-mover/index.js.map +1 -1
  87. package/build-module/components/block-mover/index.native.js +1 -1
  88. package/build-module/components/block-mover/index.native.js.map +1 -1
  89. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
  90. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  91. package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
  92. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
  93. package/build-module/components/block-switcher/index.js +15 -8
  94. package/build-module/components/block-switcher/index.js.map +1 -1
  95. package/build-module/components/block-toolbar/index.js +7 -10
  96. package/build-module/components/block-toolbar/index.js.map +1 -1
  97. package/build-module/components/block-tools/block-selection-button.js +2 -2
  98. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  99. package/build-module/components/button-block-appender/index.js +4 -1
  100. package/build-module/components/button-block-appender/index.js.map +1 -1
  101. package/build-module/components/global-styles/background-panel.js +4 -4
  102. package/build-module/components/global-styles/background-panel.js.map +1 -1
  103. package/build-module/components/global-styles/hooks.js +2 -2
  104. package/build-module/components/global-styles/hooks.js.map +1 -1
  105. package/build-module/components/global-styles/use-global-styles-output.js +14 -1
  106. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  107. package/build-module/components/inserter/block-types-tab.js +3 -3
  108. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  109. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -3
  110. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  111. package/build-module/components/link-control/link-preview.js +1 -0
  112. package/build-module/components/link-control/link-preview.js.map +1 -1
  113. package/build-module/components/link-control/search-input.js +1 -1
  114. package/build-module/components/link-control/search-input.js.map +1 -1
  115. package/build-module/components/list-view/block.js +7 -6
  116. package/build-module/components/list-view/block.js.map +1 -1
  117. package/build-module/components/list-view/branch.js +3 -1
  118. package/build-module/components/list-view/branch.js.map +1 -1
  119. package/build-module/components/list-view/use-clipboard-handler.js +1 -1
  120. package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
  121. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +9 -12
  122. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  123. package/build-module/components/use-block-commands/index.js +3 -3
  124. package/build-module/components/use-block-commands/index.js.map +1 -1
  125. package/build-module/components/writing-flow/use-clipboard-handler.js +23 -4
  126. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  127. package/build-module/hooks/block-bindings.js +20 -17
  128. package/build-module/hooks/block-bindings.js.map +1 -1
  129. package/build-module/hooks/block-style-variation.js +21 -4
  130. package/build-module/hooks/block-style-variation.js.map +1 -1
  131. package/build-module/hooks/use-bindings-attributes.js +7 -2
  132. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  133. package/build-module/hooks/utils.js +3 -2
  134. package/build-module/hooks/utils.js.map +1 -1
  135. package/build-module/lock-unlock.js +1 -1
  136. package/build-module/lock-unlock.js.map +1 -1
  137. package/build-module/private-apis.js +3 -1
  138. package/build-module/private-apis.js.map +1 -1
  139. package/build-module/store/actions.js +21 -5
  140. package/build-module/store/actions.js.map +1 -1
  141. package/build-module/store/private-actions.js +1 -2
  142. package/build-module/store/private-actions.js.map +1 -1
  143. package/build-module/store/selectors.js +19 -20
  144. package/build-module/store/selectors.js.map +1 -1
  145. package/build-style/content-rtl.css +1 -1
  146. package/build-style/content.css +1 -1
  147. package/build-style/style-rtl.css +14 -19
  148. package/build-style/style.css +14 -19
  149. package/package.json +31 -31
  150. package/src/components/block-actions/index.js +3 -7
  151. package/src/components/block-canvas/style.scss +2 -2
  152. package/src/components/block-draggable/index.js +1 -1
  153. package/src/components/block-list/block.js +2 -2
  154. package/src/components/block-list/block.native.js +2 -2
  155. package/src/components/block-list/use-in-between-inserter.js +3 -1
  156. package/src/components/block-lock/use-block-lock.js +2 -4
  157. package/src/components/block-mover/index.js +1 -1
  158. package/src/components/block-mover/index.native.js +1 -1
  159. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
  160. package/src/components/block-switcher/block-variation-transformations.js +4 -9
  161. package/src/components/block-switcher/index.js +27 -12
  162. package/src/components/block-switcher/style.scss +5 -0
  163. package/src/components/block-toolbar/index.js +7 -9
  164. package/src/components/block-toolbar/style.scss +9 -6
  165. package/src/components/block-tools/block-selection-button.js +2 -2
  166. package/src/components/block-variation-picker/content.scss +1 -1
  167. package/src/components/button-block-appender/index.js +2 -0
  168. package/src/components/global-styles/background-panel.js +13 -4
  169. package/src/components/global-styles/hooks.js +2 -4
  170. package/src/components/global-styles/use-global-styles-output.js +24 -4
  171. package/src/components/inserter/block-types-tab.js +0 -1
  172. package/src/components/inserter/hooks/use-block-types-state.js +10 -5
  173. package/src/components/inserter/style.scss +4 -0
  174. package/src/components/link-control/link-preview.js +1 -0
  175. package/src/components/link-control/search-input.js +1 -1
  176. package/src/components/list-view/block.js +7 -7
  177. package/src/components/list-view/branch.js +5 -1
  178. package/src/components/list-view/use-clipboard-handler.js +1 -6
  179. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -4
  180. package/src/components/use-block-commands/index.js +3 -4
  181. package/src/components/writing-flow/use-clipboard-handler.js +29 -7
  182. package/src/hooks/block-bindings.js +28 -22
  183. package/src/hooks/block-style-variation.js +21 -4
  184. package/src/hooks/use-bindings-attributes.js +11 -1
  185. package/src/hooks/utils.js +3 -1
  186. package/src/lock-unlock.js +1 -1
  187. package/src/private-apis.js +2 -0
  188. package/src/store/actions.js +25 -11
  189. package/src/store/private-actions.js +1 -5
  190. package/src/store/selectors.js +22 -27
  191. package/src/style.scss +0 -1
  192. package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
  193. package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  194. package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
  195. package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  196. package/src/components/block-bindings-toolbar-indicator/index.js +0 -135
  197. package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
@@ -76,6 +76,8 @@ const EMPTY_ARRAY = [];
76
76
  */
77
77
  const EMPTY_SET = new Set();
78
78
 
79
+ const EMPTY_OBJECT = {};
80
+
79
81
  /**
80
82
  * Returns a block's name given its client ID, or null if no block exists with
81
83
  * the client ID.
@@ -1710,13 +1712,12 @@ export function canInsertBlocks( state, clientIds, rootClientId = null ) {
1710
1712
  /**
1711
1713
  * Determines if the given block is allowed to be deleted.
1712
1714
  *
1713
- * @param {Object} state Editor state.
1714
- * @param {string} clientId The block client Id.
1715
- * @param {?string} rootClientId Optional root client ID of block list.
1715
+ * @param {Object} state Editor state.
1716
+ * @param {string} clientId The block client Id.
1716
1717
  *
1717
1718
  * @return {boolean} Whether the given block is allowed to be removed.
1718
1719
  */
1719
- export function canRemoveBlock( state, clientId, rootClientId = null ) {
1720
+ export function canRemoveBlock( state, clientId ) {
1720
1721
  const attributes = getBlockAttributes( state, clientId );
1721
1722
  if ( attributes === null ) {
1722
1723
  return true;
@@ -1724,6 +1725,8 @@ export function canRemoveBlock( state, clientId, rootClientId = null ) {
1724
1725
  if ( attributes.lock?.remove !== undefined ) {
1725
1726
  return ! attributes.lock.remove;
1726
1727
  }
1728
+
1729
+ const rootClientId = getBlockRootClientId( state, clientId );
1727
1730
  if ( getTemplateLock( state, rootClientId ) ) {
1728
1731
  return false;
1729
1732
  }
@@ -1734,28 +1737,24 @@ export function canRemoveBlock( state, clientId, rootClientId = null ) {
1734
1737
  /**
1735
1738
  * Determines if the given blocks are allowed to be removed.
1736
1739
  *
1737
- * @param {Object} state Editor state.
1738
- * @param {string} clientIds The block client IDs to be removed.
1739
- * @param {?string} rootClientId Optional root client ID of block list.
1740
+ * @param {Object} state Editor state.
1741
+ * @param {string} clientIds The block client IDs to be removed.
1740
1742
  *
1741
1743
  * @return {boolean} Whether the given blocks are allowed to be removed.
1742
1744
  */
1743
- export function canRemoveBlocks( state, clientIds, rootClientId = null ) {
1744
- return clientIds.every( ( clientId ) =>
1745
- canRemoveBlock( state, clientId, rootClientId )
1746
- );
1745
+ export function canRemoveBlocks( state, clientIds ) {
1746
+ return clientIds.every( ( clientId ) => canRemoveBlock( state, clientId ) );
1747
1747
  }
1748
1748
 
1749
1749
  /**
1750
1750
  * Determines if the given block is allowed to be moved.
1751
1751
  *
1752
- * @param {Object} state Editor state.
1753
- * @param {string} clientId The block client Id.
1754
- * @param {?string} rootClientId Optional root client ID of block list.
1752
+ * @param {Object} state Editor state.
1753
+ * @param {string} clientId The block client Id.
1755
1754
  *
1756
1755
  * @return {boolean | undefined} Whether the given block is allowed to be moved.
1757
1756
  */
1758
- export function canMoveBlock( state, clientId, rootClientId = null ) {
1757
+ export function canMoveBlock( state, clientId ) {
1759
1758
  const attributes = getBlockAttributes( state, clientId );
1760
1759
  if ( attributes === null ) {
1761
1760
  return true;
@@ -1763,6 +1762,8 @@ export function canMoveBlock( state, clientId, rootClientId = null ) {
1763
1762
  if ( attributes.lock?.move !== undefined ) {
1764
1763
  return ! attributes.lock.move;
1765
1764
  }
1765
+
1766
+ const rootClientId = getBlockRootClientId( state, clientId );
1766
1767
  if ( getTemplateLock( state, rootClientId ) === 'all' ) {
1767
1768
  return false;
1768
1769
  }
@@ -1772,16 +1773,13 @@ export function canMoveBlock( state, clientId, rootClientId = null ) {
1772
1773
  /**
1773
1774
  * Determines if the given blocks are allowed to be moved.
1774
1775
  *
1775
- * @param {Object} state Editor state.
1776
- * @param {string} clientIds The block client IDs to be moved.
1777
- * @param {?string} rootClientId Optional root client ID of block list.
1776
+ * @param {Object} state Editor state.
1777
+ * @param {string} clientIds The block client IDs to be moved.
1778
1778
  *
1779
1779
  * @return {boolean} Whether the given blocks are allowed to be moved.
1780
1780
  */
1781
- export function canMoveBlocks( state, clientIds, rootClientId = null ) {
1782
- return clientIds.every( ( clientId ) =>
1783
- canMoveBlock( state, clientId, rootClientId )
1784
- );
1781
+ export function canMoveBlocks( state, clientIds ) {
1782
+ return clientIds.every( ( clientId ) => canMoveBlock( state, clientId ) );
1785
1783
  }
1786
1784
 
1787
1785
  /**
@@ -1996,7 +1994,7 @@ const buildBlockTypeItem =
1996
1994
  */
1997
1995
  export const getInserterItems = createRegistrySelector( ( select ) =>
1998
1996
  createSelector(
1999
- ( state, rootClientId = null, options = {} ) => {
1997
+ ( state, rootClientId = null, options = EMPTY_OBJECT ) => {
2000
1998
  const buildReusableBlockInserterItem = ( reusableBlock ) => {
2001
1999
  const icon = ! reusableBlock.wp_pattern_sync_status
2002
2000
  ? {
@@ -3039,10 +3037,7 @@ export const isGroupable = createRegistrySelector(
3039
3037
  rootClientId
3040
3038
  );
3041
3039
  const _isGroupable = groupingBlockAvailable && _clientIds.length;
3042
- return (
3043
- _isGroupable &&
3044
- canRemoveBlocks( state, _clientIds, rootClientId )
3045
- );
3040
+ return _isGroupable && canRemoveBlocks( state, _clientIds );
3046
3041
  }
3047
3042
  );
3048
3043
 
package/src/style.scss CHANGED
@@ -1,6 +1,5 @@
1
1
  @import "./autocompleters/style.scss";
2
2
  @import "./components/block-alignment-control/style.scss";
3
- @import "./components/block-bindings-toolbar-indicator/style.scss";
4
3
  @import "./components/block-canvas/style.scss";
5
4
  @import "./components/block-icon/style.scss";
6
5
  @import "./components/block-inspector/style.scss";
@@ -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( block?.attributes.metadata?.bindings ).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( block?.attributes.metadata?.bindings ).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,135 +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( block?.attributes.metadata?.bindings ).some(
61
- ( binding ) =>
62
- binding.source === 'core/pattern-overrides'
63
- )
64
- ),
65
- };
66
- },
67
- [ clientIds, isSingleBlockSelected ]
68
- );
69
- const firstBlockTitle = useBlockDisplayTitle( {
70
- clientId: clientIds[ 0 ],
71
- maximumLength: 35,
72
- } );
73
-
74
- let blockDescription = isSingleBlockSelected
75
- ? _x(
76
- 'This block is connected.',
77
- 'block toolbar button label and description'
78
- )
79
- : _x(
80
- 'These blocks are connected.',
81
- 'block toolbar button label and description'
82
- );
83
- if ( isConnectedToPatternOverrides && firstBlockName ) {
84
- blockDescription = isSingleBlockSelected
85
- ? sprintf(
86
- /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
87
- __( 'This %1$s is editable using the "%2$s" override.' ),
88
- firstBlockTitle.toLowerCase(),
89
- firstBlockName
90
- )
91
- : __( 'These blocks are editable using overrides.' );
92
- }
93
- const descriptionId = useId();
94
-
95
- return (
96
- <ToolbarGroup>
97
- <ToolbarItem>
98
- { ( toggleProps ) => (
99
- <DropdownMenu
100
- className="block-editor-block-bindings-toolbar-indicator"
101
- label={ firstBlockTitle }
102
- popoverProps={ {
103
- placement: 'bottom-start',
104
- className:
105
- 'block-editor-block-bindings-toolbar-indicator__popover',
106
- } }
107
- icon={
108
- <>
109
- <BlockIcon
110
- icon={ icon }
111
- className="block-editor-block-bindings-toolbar-indicator-icon"
112
- showColors
113
- />
114
- </>
115
- }
116
- toggleProps={ {
117
- describedBy: blockDescription,
118
- ...toggleProps,
119
- } }
120
- menuProps={ {
121
- orientation: 'both',
122
- 'aria-describedby': descriptionId,
123
- } }
124
- >
125
- { () => (
126
- <Text id={ descriptionId }>
127
- { blockDescription }
128
- </Text>
129
- ) }
130
- </DropdownMenu>
131
- ) }
132
- </ToolbarItem>
133
- </ToolbarGroup>
134
- );
135
- }
@@ -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
- }