@wordpress/block-editor 13.0.1 → 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 (157) 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/global-styles/hooks.js +1 -1
  28. package/build/components/global-styles/hooks.js.map +1 -1
  29. package/build/components/global-styles/use-global-styles-output.js +14 -1
  30. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  31. package/build/components/list-view/block.js +7 -6
  32. package/build/components/list-view/block.js.map +1 -1
  33. package/build/components/list-view/branch.js +3 -1
  34. package/build/components/list-view/branch.js.map +1 -1
  35. package/build/components/list-view/use-clipboard-handler.js +1 -1
  36. package/build/components/list-view/use-clipboard-handler.js.map +1 -1
  37. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
  38. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  39. package/build/components/use-block-commands/index.js +3 -3
  40. package/build/components/use-block-commands/index.js.map +1 -1
  41. package/build/hooks/block-bindings.js +19 -16
  42. package/build/hooks/block-bindings.js.map +1 -1
  43. package/build/hooks/block-style-variation.js +22 -4
  44. package/build/hooks/block-style-variation.js.map +1 -1
  45. package/build/hooks/use-bindings-attributes.js +7 -2
  46. package/build/hooks/use-bindings-attributes.js.map +1 -1
  47. package/build/hooks/utils.js +3 -2
  48. package/build/hooks/utils.js.map +1 -1
  49. package/build/lock-unlock.js +1 -1
  50. package/build/lock-unlock.js.map +1 -1
  51. package/build/private-apis.js +3 -1
  52. package/build/private-apis.js.map +1 -1
  53. package/build/store/actions.js +20 -4
  54. package/build/store/actions.js.map +1 -1
  55. package/build/store/private-actions.js +1 -2
  56. package/build/store/private-actions.js.map +1 -1
  57. package/build/store/selectors.js +17 -19
  58. package/build/store/selectors.js.map +1 -1
  59. package/build-module/components/block-actions/index.js +4 -6
  60. package/build-module/components/block-actions/index.js.map +1 -1
  61. package/build-module/components/block-draggable/index.js +1 -1
  62. package/build-module/components/block-draggable/index.js.map +1 -1
  63. package/build-module/components/block-list/block.js +2 -2
  64. package/build-module/components/block-list/block.js.map +1 -1
  65. package/build-module/components/block-list/block.native.js +2 -2
  66. package/build-module/components/block-list/block.native.js.map +1 -1
  67. package/build-module/components/block-list/use-in-between-inserter.js +3 -1
  68. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  69. package/build-module/components/block-lock/use-block-lock.js +2 -4
  70. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  71. package/build-module/components/block-mover/index.js +1 -1
  72. package/build-module/components/block-mover/index.js.map +1 -1
  73. package/build-module/components/block-mover/index.native.js +1 -1
  74. package/build-module/components/block-mover/index.native.js.map +1 -1
  75. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
  76. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  77. package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
  78. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
  79. package/build-module/components/block-switcher/index.js +15 -8
  80. package/build-module/components/block-switcher/index.js.map +1 -1
  81. package/build-module/components/block-toolbar/index.js +7 -10
  82. package/build-module/components/block-toolbar/index.js.map +1 -1
  83. package/build-module/components/block-tools/block-selection-button.js +2 -2
  84. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  85. package/build-module/components/global-styles/hooks.js +1 -1
  86. package/build-module/components/global-styles/hooks.js.map +1 -1
  87. package/build-module/components/global-styles/use-global-styles-output.js +14 -1
  88. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  89. package/build-module/components/list-view/block.js +7 -6
  90. package/build-module/components/list-view/block.js.map +1 -1
  91. package/build-module/components/list-view/branch.js +3 -1
  92. package/build-module/components/list-view/branch.js.map +1 -1
  93. package/build-module/components/list-view/use-clipboard-handler.js +1 -1
  94. package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
  95. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
  96. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  97. package/build-module/components/use-block-commands/index.js +3 -3
  98. package/build-module/components/use-block-commands/index.js.map +1 -1
  99. package/build-module/hooks/block-bindings.js +20 -17
  100. package/build-module/hooks/block-bindings.js.map +1 -1
  101. package/build-module/hooks/block-style-variation.js +21 -4
  102. package/build-module/hooks/block-style-variation.js.map +1 -1
  103. package/build-module/hooks/use-bindings-attributes.js +7 -2
  104. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  105. package/build-module/hooks/utils.js +3 -2
  106. package/build-module/hooks/utils.js.map +1 -1
  107. package/build-module/lock-unlock.js +1 -1
  108. package/build-module/lock-unlock.js.map +1 -1
  109. package/build-module/private-apis.js +3 -1
  110. package/build-module/private-apis.js.map +1 -1
  111. package/build-module/store/actions.js +20 -4
  112. package/build-module/store/actions.js.map +1 -1
  113. package/build-module/store/private-actions.js +1 -2
  114. package/build-module/store/private-actions.js.map +1 -1
  115. package/build-module/store/selectors.js +17 -19
  116. package/build-module/store/selectors.js.map +1 -1
  117. package/build-style/style-rtl.css +8 -17
  118. package/build-style/style.css +8 -17
  119. package/package.json +12 -12
  120. package/src/components/block-actions/index.js +3 -7
  121. package/src/components/block-draggable/index.js +1 -1
  122. package/src/components/block-list/block.js +2 -2
  123. package/src/components/block-list/block.native.js +2 -2
  124. package/src/components/block-list/use-in-between-inserter.js +3 -1
  125. package/src/components/block-lock/use-block-lock.js +2 -4
  126. package/src/components/block-mover/index.js +1 -1
  127. package/src/components/block-mover/index.native.js +1 -1
  128. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
  129. package/src/components/block-switcher/block-variation-transformations.js +4 -9
  130. package/src/components/block-switcher/index.js +27 -12
  131. package/src/components/block-switcher/style.scss +5 -0
  132. package/src/components/block-toolbar/index.js +7 -9
  133. package/src/components/block-toolbar/style.scss +9 -6
  134. package/src/components/block-tools/block-selection-button.js +2 -2
  135. package/src/components/global-styles/hooks.js +1 -4
  136. package/src/components/global-styles/use-global-styles-output.js +24 -4
  137. package/src/components/list-view/block.js +7 -7
  138. package/src/components/list-view/branch.js +5 -1
  139. package/src/components/list-view/use-clipboard-handler.js +1 -6
  140. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +2 -9
  141. package/src/components/use-block-commands/index.js +3 -4
  142. package/src/hooks/block-bindings.js +28 -22
  143. package/src/hooks/block-style-variation.js +21 -4
  144. package/src/hooks/use-bindings-attributes.js +11 -1
  145. package/src/hooks/utils.js +3 -1
  146. package/src/lock-unlock.js +1 -1
  147. package/src/private-apis.js +2 -0
  148. package/src/store/actions.js +24 -10
  149. package/src/store/private-actions.js +1 -5
  150. package/src/store/selectors.js +19 -26
  151. package/src/style.scss +0 -1
  152. package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
  153. package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  154. package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
  155. package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
  156. package/src/components/block-bindings-toolbar-indicator/index.js +0 -137
  157. package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
@@ -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
- }