@wordpress/block-editor 12.4.0 → 12.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -0
  3. package/build/components/block-draggable/index.js +6 -3
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-draggable/index.native.js +2 -2
  6. package/build/components/block-draggable/index.native.js.map +1 -1
  7. package/build/components/block-edit/edit.js +25 -13
  8. package/build/components/block-edit/edit.js.map +1 -1
  9. package/build/components/block-heading-level-dropdown/heading-level-icon.js +10 -2
  10. package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
  11. package/build/components/block-heading-level-dropdown/index.native.js +4 -3
  12. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
  13. package/build/components/block-list/block-outline.native.js +14 -18
  14. package/build/components/block-list/block-outline.native.js.map +1 -1
  15. package/build/components/block-list/block.native.js +21 -42
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-lock/toolbar.js +25 -6
  18. package/build/components/block-lock/toolbar.js.map +1 -1
  19. package/build/components/block-mover/index.native.js +1 -1
  20. package/build/components/block-mover/index.native.js.map +1 -1
  21. package/build/components/block-parent-selector/index.js +8 -5
  22. package/build/components/block-parent-selector/index.js.map +1 -1
  23. package/build/components/block-removal-warning-modal/index.js +15 -25
  24. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  25. package/build/components/block-settings/button.native.js +2 -2
  26. package/build/components/block-settings/button.native.js.map +1 -1
  27. package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +10 -11
  28. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  29. package/build/components/block-toolbar/index.js +12 -8
  30. package/build/components/block-toolbar/index.js.map +1 -1
  31. package/build/components/block-toolbar/index.native.js +62 -3
  32. package/build/components/block-toolbar/index.native.js.map +1 -1
  33. package/build/components/block-tools/block-contextual-toolbar.js +7 -11
  34. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  35. package/build/components/colors-gradients/control.js +4 -2
  36. package/build/components/colors-gradients/control.js.map +1 -1
  37. package/build/components/dimensions-tool/aspect-ratio-tool.js +99 -0
  38. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
  39. package/build/components/dimensions-tool/index.js +207 -0
  40. package/build/components/dimensions-tool/index.js.map +1 -0
  41. package/build/components/dimensions-tool/scale-tool.js +111 -0
  42. package/build/components/dimensions-tool/scale-tool.js.map +1 -0
  43. package/build/components/dimensions-tool/width-height-tool.js +125 -0
  44. package/build/components/dimensions-tool/width-height-tool.js.map +1 -0
  45. package/build/components/global-styles/color-panel.js +22 -16
  46. package/build/components/global-styles/color-panel.js.map +1 -1
  47. package/build/components/global-styles/dimensions-panel.js +13 -2
  48. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  49. package/build/components/global-styles/filters-panel.js +1 -1
  50. package/build/components/global-styles/filters-panel.js.map +1 -1
  51. package/build/components/global-styles/get-block-css-selector.js +4 -8
  52. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  53. package/build/components/global-styles/hooks.js +15 -25
  54. package/build/components/global-styles/hooks.js.map +1 -1
  55. package/build/components/global-styles/typography-panel.js +52 -5
  56. package/build/components/global-styles/typography-panel.js.map +1 -1
  57. package/build/components/global-styles/use-global-styles-output.js +12 -18
  58. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  59. package/build/components/global-styles/utils.js +6 -6
  60. package/build/components/global-styles/utils.js.map +1 -1
  61. package/build/components/iframe/index.js +36 -48
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/iframe/use-compatibility-styles.js +5 -0
  64. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  65. package/build/components/image-editor/aspect-ratio-dropdown.js +1 -1
  66. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  67. package/build/components/image-editor/use-save-image.js +1 -2
  68. package/build/components/image-editor/use-save-image.js.map +1 -1
  69. package/build/components/image-size-control/index.js +6 -0
  70. package/build/components/image-size-control/index.js.map +1 -1
  71. package/build/components/index.js +9 -0
  72. package/build/components/index.js.map +1 -1
  73. package/build/components/inner-blocks/index.js +3 -1
  74. package/build/components/inner-blocks/index.js.map +1 -1
  75. package/build/components/inner-blocks/index.native.js +3 -1
  76. package/build/components/inner-blocks/index.native.js.map +1 -1
  77. package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
  78. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  79. package/build/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
  80. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  81. package/build/components/inserter/block-patterns-tab.js +7 -35
  82. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  83. package/build/components/inserter/hooks/use-block-types-state.js +3 -4
  84. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  85. package/build/components/inserter/hooks/use-patterns-state.js +9 -3
  86. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  87. package/build/components/inserter/index.js +2 -4
  88. package/build/components/inserter/index.js.map +1 -1
  89. package/build/components/inserter/index.native.js +21 -32
  90. package/build/components/inserter/index.native.js.map +1 -1
  91. package/build/components/inserter/media-tab/hooks.js +2 -21
  92. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  93. package/build/components/inserter/reusable-block-rename-hint.js +82 -0
  94. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -0
  95. package/build/components/inserter/reusable-blocks-tab.js +6 -2
  96. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  97. package/build/components/inserter/reusable-blocks-tab.native.js +2 -2
  98. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  99. package/build/components/inserter/tabs.native.js +1 -1
  100. package/build/components/inserter/tabs.native.js.map +1 -1
  101. package/build/components/inserter-draggable-blocks/index.js +9 -1
  102. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  103. package/build/components/link-control/constants.js +1 -1
  104. package/build/components/link-control/constants.js.map +1 -1
  105. package/build/components/link-control/index.js +21 -16
  106. package/build/components/link-control/index.js.map +1 -1
  107. package/build/components/link-control/search-create-button.js +5 -21
  108. package/build/components/link-control/search-create-button.js.map +1 -1
  109. package/build/components/link-control/search-input.js +4 -4
  110. package/build/components/link-control/search-input.js.map +1 -1
  111. package/build/components/link-control/search-item.js +13 -30
  112. package/build/components/link-control/search-item.js.map +1 -1
  113. package/build/components/link-control/search-results.js +2 -2
  114. package/build/components/link-control/search-results.js.map +1 -1
  115. package/build/components/link-control/settings-drawer.js +2 -3
  116. package/build/components/link-control/settings-drawer.js.map +1 -1
  117. package/build/components/list-view/appender.js +2 -6
  118. package/build/components/list-view/appender.js.map +1 -1
  119. package/build/components/list-view/use-list-view-client-ids.js +2 -2
  120. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  121. package/build/components/media-placeholder/index.native.js +65 -31
  122. package/build/components/media-placeholder/index.native.js.map +1 -1
  123. package/build/components/preview-options/index.js +2 -2
  124. package/build/components/preview-options/index.js.map +1 -1
  125. package/build/components/provider/index.js +5 -2
  126. package/build/components/provider/index.js.map +1 -1
  127. package/build/components/provider/use-block-sync.js +21 -0
  128. package/build/components/provider/use-block-sync.js.map +1 -1
  129. package/build/components/resolution-tool/index.js +55 -0
  130. package/build/components/resolution-tool/index.js.map +1 -0
  131. package/build/components/rich-text/content.js +0 -36
  132. package/build/components/rich-text/content.js.map +1 -1
  133. package/build/components/rich-text/get-rich-text-values.js +118 -0
  134. package/build/components/rich-text/get-rich-text-values.js.map +1 -0
  135. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  136. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  137. package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
  138. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  139. package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
  140. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  141. package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
  142. package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  143. package/build/components/spacing-sizes-control/utils.js +1 -1
  144. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  145. package/build/components/url-input/index.js +4 -2
  146. package/build/components/url-input/index.js.map +1 -1
  147. package/build/components/use-block-display-information/index.js +7 -3
  148. package/build/components/use-block-display-information/index.js.map +1 -1
  149. package/build/components/use-block-drop-zone/index.native.js +49 -8
  150. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  151. package/build/components/use-setting/index.js +5 -9
  152. package/build/components/use-setting/index.js.map +1 -1
  153. package/build/components/writing-flow/use-tab-nav.js +10 -27
  154. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  155. package/build/components/writing-mode-control/index.js +70 -0
  156. package/build/components/writing-mode-control/index.js.map +1 -0
  157. package/build/hooks/behaviors.js +25 -20
  158. package/build/hooks/behaviors.js.map +1 -1
  159. package/build/hooks/margin.js +1 -1
  160. package/build/hooks/margin.js.map +1 -1
  161. package/build/hooks/padding.js +1 -1
  162. package/build/hooks/padding.js.map +1 -1
  163. package/build/hooks/supports.js +7 -1
  164. package/build/hooks/supports.js.map +1 -1
  165. package/build/hooks/typography.js +2 -1
  166. package/build/hooks/typography.js.map +1 -1
  167. package/build/hooks/utils.js +5 -9
  168. package/build/hooks/utils.js.map +1 -1
  169. package/build/private-apis.js +16 -3
  170. package/build/private-apis.js.map +1 -1
  171. package/build/private-apis.native.js +3 -0
  172. package/build/private-apis.native.js.map +1 -1
  173. package/build/store/actions.js +196 -2
  174. package/build/store/actions.js.map +1 -1
  175. package/build/store/defaults.js +1 -0
  176. package/build/store/defaults.js.map +1 -1
  177. package/build/store/index.js +10 -1
  178. package/build/store/index.js.map +1 -1
  179. package/build/store/private-actions.js +46 -40
  180. package/build/store/private-actions.js.map +1 -1
  181. package/build/store/private-selectors.js +8 -9
  182. package/build/store/private-selectors.js.map +1 -1
  183. package/build/store/reducer.js +22 -9
  184. package/build/store/reducer.js.map +1 -1
  185. package/build/store/selectors.js +52 -23
  186. package/build/store/selectors.js.map +1 -1
  187. package/build/utils/object.js +38 -2
  188. package/build/utils/object.js.map +1 -1
  189. package/build-module/components/block-draggable/index.js +6 -3
  190. package/build-module/components/block-draggable/index.js.map +1 -1
  191. package/build-module/components/block-draggable/index.native.js +2 -2
  192. package/build-module/components/block-draggable/index.native.js.map +1 -1
  193. package/build-module/components/block-edit/edit.js +27 -10
  194. package/build-module/components/block-edit/edit.js.map +1 -1
  195. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +9 -2
  196. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
  197. package/build-module/components/block-heading-level-dropdown/index.native.js +4 -3
  198. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
  199. package/build-module/components/block-list/block-outline.native.js +14 -18
  200. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  201. package/build-module/components/block-list/block.native.js +24 -43
  202. package/build-module/components/block-list/block.native.js.map +1 -1
  203. package/build-module/components/block-lock/toolbar.js +25 -7
  204. package/build-module/components/block-lock/toolbar.js.map +1 -1
  205. package/build-module/components/block-mover/index.native.js +3 -3
  206. package/build-module/components/block-mover/index.native.js.map +1 -1
  207. package/build-module/components/block-parent-selector/index.js +7 -5
  208. package/build-module/components/block-parent-selector/index.js.map +1 -1
  209. package/build-module/components/block-removal-warning-modal/index.js +17 -24
  210. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  211. package/build-module/components/block-settings/button.native.js +3 -3
  212. package/build-module/components/block-settings/button.native.js.map +1 -1
  213. package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +13 -13
  214. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  215. package/build-module/components/block-toolbar/index.js +12 -8
  216. package/build-module/components/block-toolbar/index.js.map +1 -1
  217. package/build-module/components/block-toolbar/index.native.js +60 -4
  218. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  219. package/build-module/components/block-tools/block-contextual-toolbar.js +8 -11
  220. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  221. package/build-module/components/colors-gradients/control.js +3 -2
  222. package/build-module/components/colors-gradients/control.js.map +1 -1
  223. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +87 -0
  224. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
  225. package/build-module/components/dimensions-tool/index.js +195 -0
  226. package/build-module/components/dimensions-tool/index.js.map +1 -0
  227. package/build-module/components/dimensions-tool/scale-tool.js +103 -0
  228. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -0
  229. package/build-module/components/dimensions-tool/width-height-tool.js +122 -0
  230. package/build-module/components/dimensions-tool/width-height-tool.js.map +1 -0
  231. package/build-module/components/global-styles/color-panel.js +22 -16
  232. package/build-module/components/global-styles/color-panel.js.map +1 -1
  233. package/build-module/components/global-styles/dimensions-panel.js +13 -2
  234. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  235. package/build-module/components/global-styles/filters-panel.js +2 -2
  236. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  237. package/build-module/components/global-styles/get-block-css-selector.js +4 -8
  238. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  239. package/build-module/components/global-styles/hooks.js +14 -24
  240. package/build-module/components/global-styles/hooks.js.map +1 -1
  241. package/build-module/components/global-styles/typography-panel.js +51 -5
  242. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  243. package/build-module/components/global-styles/use-global-styles-output.js +13 -18
  244. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  245. package/build-module/components/global-styles/utils.js +5 -5
  246. package/build-module/components/global-styles/utils.js.map +1 -1
  247. package/build-module/components/iframe/index.js +37 -49
  248. package/build-module/components/iframe/index.js.map +1 -1
  249. package/build-module/components/iframe/use-compatibility-styles.js +5 -0
  250. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  251. package/build-module/components/image-editor/aspect-ratio-dropdown.js +1 -1
  252. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  253. package/build-module/components/image-editor/use-save-image.js +1 -2
  254. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  255. package/build-module/components/image-size-control/index.js +5 -0
  256. package/build-module/components/image-size-control/index.js.map +1 -1
  257. package/build-module/components/index.js +1 -0
  258. package/build-module/components/index.js.map +1 -1
  259. package/build-module/components/inner-blocks/index.js +3 -1
  260. package/build-module/components/inner-blocks/index.js.map +1 -1
  261. package/build-module/components/inner-blocks/index.native.js +3 -1
  262. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  263. package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
  264. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  265. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
  266. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  267. package/build-module/components/inserter/block-patterns-tab.js +7 -33
  268. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  269. package/build-module/components/inserter/hooks/use-block-types-state.js +3 -4
  270. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  271. package/build-module/components/inserter/hooks/use-patterns-state.js +9 -3
  272. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  273. package/build-module/components/inserter/index.js +2 -4
  274. package/build-module/components/inserter/index.js.map +1 -1
  275. package/build-module/components/inserter/index.native.js +22 -33
  276. package/build-module/components/inserter/index.native.js.map +1 -1
  277. package/build-module/components/inserter/media-tab/hooks.js +2 -21
  278. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  279. package/build-module/components/inserter/reusable-block-rename-hint.js +67 -0
  280. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -0
  281. package/build-module/components/inserter/reusable-blocks-tab.js +5 -2
  282. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  283. package/build-module/components/inserter/reusable-blocks-tab.native.js +2 -2
  284. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  285. package/build-module/components/inserter/tabs.native.js +1 -1
  286. package/build-module/components/inserter/tabs.native.js.map +1 -1
  287. package/build-module/components/inserter-draggable-blocks/index.js +9 -2
  288. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  289. package/build-module/components/link-control/constants.js +1 -1
  290. package/build-module/components/link-control/constants.js.map +1 -1
  291. package/build-module/components/link-control/index.js +21 -16
  292. package/build-module/components/link-control/index.js.map +1 -1
  293. package/build-module/components/link-control/search-create-button.js +7 -20
  294. package/build-module/components/link-control/search-create-button.js.map +1 -1
  295. package/build-module/components/link-control/search-input.js +4 -4
  296. package/build-module/components/link-control/search-input.js.map +1 -1
  297. package/build-module/components/link-control/search-item.js +14 -28
  298. package/build-module/components/link-control/search-item.js.map +1 -1
  299. package/build-module/components/link-control/search-results.js +3 -3
  300. package/build-module/components/link-control/search-results.js.map +1 -1
  301. package/build-module/components/link-control/settings-drawer.js +4 -5
  302. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  303. package/build-module/components/list-view/appender.js +2 -6
  304. package/build-module/components/list-view/appender.js.map +1 -1
  305. package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
  306. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  307. package/build-module/components/media-placeholder/index.native.js +66 -33
  308. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  309. package/build-module/components/preview-options/index.js +2 -2
  310. package/build-module/components/preview-options/index.js.map +1 -1
  311. package/build-module/components/provider/index.js +5 -2
  312. package/build-module/components/provider/index.js.map +1 -1
  313. package/build-module/components/provider/use-block-sync.js +21 -0
  314. package/build-module/components/provider/use-block-sync.js.map +1 -1
  315. package/build-module/components/resolution-tool/index.js +45 -0
  316. package/build-module/components/resolution-tool/index.js.map +1 -0
  317. package/build-module/components/rich-text/content.js +1 -36
  318. package/build-module/components/rich-text/content.js.map +1 -1
  319. package/build-module/components/rich-text/get-rich-text-values.js +105 -0
  320. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
  321. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  322. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  323. package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
  324. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  325. package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
  326. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  327. package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
  328. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  329. package/build-module/components/spacing-sizes-control/utils.js +1 -1
  330. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  331. package/build-module/components/url-input/index.js +4 -2
  332. package/build-module/components/url-input/index.js.map +1 -1
  333. package/build-module/components/use-block-display-information/index.js +7 -3
  334. package/build-module/components/use-block-display-information/index.js.map +1 -1
  335. package/build-module/components/use-block-drop-zone/index.native.js +50 -8
  336. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  337. package/build-module/components/use-setting/index.js +5 -9
  338. package/build-module/components/use-setting/index.js.map +1 -1
  339. package/build-module/components/writing-flow/use-tab-nav.js +8 -26
  340. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  341. package/build-module/components/writing-mode-control/index.js +57 -0
  342. package/build-module/components/writing-mode-control/index.js.map +1 -0
  343. package/build-module/hooks/behaviors.js +26 -20
  344. package/build-module/hooks/behaviors.js.map +1 -1
  345. package/build-module/hooks/margin.js +1 -1
  346. package/build-module/hooks/margin.js.map +1 -1
  347. package/build-module/hooks/padding.js +1 -1
  348. package/build-module/hooks/padding.js.map +1 -1
  349. package/build-module/hooks/supports.js +7 -1
  350. package/build-module/hooks/supports.js.map +1 -1
  351. package/build-module/hooks/typography.js +2 -1
  352. package/build-module/hooks/typography.js.map +1 -1
  353. package/build-module/hooks/utils.js +6 -9
  354. package/build-module/hooks/utils.js.map +1 -1
  355. package/build-module/private-apis.js +11 -2
  356. package/build-module/private-apis.js.map +1 -1
  357. package/build-module/private-apis.native.js +2 -0
  358. package/build-module/private-apis.native.js.map +1 -1
  359. package/build-module/store/actions.js +193 -3
  360. package/build-module/store/actions.js.map +1 -1
  361. package/build-module/store/defaults.js +1 -0
  362. package/build-module/store/defaults.js.map +1 -1
  363. package/build-module/store/index.js +10 -1
  364. package/build-module/store/index.js.map +1 -1
  365. package/build-module/store/private-actions.js +45 -36
  366. package/build-module/store/private-actions.js.map +1 -1
  367. package/build-module/store/private-selectors.js +5 -5
  368. package/build-module/store/private-selectors.js.map +1 -1
  369. package/build-module/store/reducer.js +22 -9
  370. package/build-module/store/reducer.js.map +1 -1
  371. package/build-module/store/selectors.js +49 -21
  372. package/build-module/store/selectors.js.map +1 -1
  373. package/build-module/utils/object.js +34 -2
  374. package/build-module/utils/object.js.map +1 -1
  375. package/build-style/content-rtl.css +4 -0
  376. package/build-style/content.css +4 -0
  377. package/build-style/style-rtl.css +137 -129
  378. package/build-style/style.css +137 -129
  379. package/package.json +33 -32
  380. package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -6
  381. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -5
  382. package/src/components/block-controls/README.md +89 -0
  383. package/src/components/block-draggable/index.js +13 -4
  384. package/src/components/block-draggable/index.native.js +7 -3
  385. package/src/components/block-draggable/style.scss +1 -0
  386. package/src/components/block-draggable/test/index.native.js +0 -54
  387. package/src/components/block-edit/edit.js +26 -9
  388. package/src/components/block-edit/test/edit.js +1 -1
  389. package/src/components/block-heading-level-dropdown/heading-level-icon.js +6 -1
  390. package/src/components/block-heading-level-dropdown/index.native.js +8 -4
  391. package/src/components/block-inspector/style.scss +2 -1
  392. package/src/components/block-list/block-outline.native.js +26 -25
  393. package/src/components/block-list/block.native.js +24 -38
  394. package/src/components/block-list/block.native.scss +18 -40
  395. package/src/components/block-list/style.native.scss +3 -3
  396. package/src/components/block-lock/toolbar.js +34 -6
  397. package/src/components/block-mover/index.native.js +3 -3
  398. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +16 -6
  399. package/src/components/block-parent-selector/index.js +13 -8
  400. package/src/components/block-removal-warning-modal/index.js +17 -33
  401. package/src/components/block-settings/button.native.js +12 -6
  402. package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +19 -18
  403. package/src/components/block-toolbar/index.js +11 -9
  404. package/src/components/block-toolbar/index.native.js +86 -6
  405. package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
  406. package/src/components/block-toolbar/test/index.native.js +42 -0
  407. package/src/components/block-tools/block-contextual-toolbar.js +5 -11
  408. package/src/components/block-tools/style.scss +73 -26
  409. package/src/components/button-block-appender/styles.native.scss +2 -2
  410. package/src/components/caption/README.md +49 -0
  411. package/src/components/colors-gradients/control.js +3 -2
  412. package/src/components/default-block-appender/content.scss +11 -0
  413. package/src/components/dimensions-tool/aspect-ratio-tool.js +124 -0
  414. package/src/components/dimensions-tool/index.js +212 -0
  415. package/src/components/dimensions-tool/scale-tool.js +124 -0
  416. package/src/components/dimensions-tool/stories/aspect-ratio-tool.js +52 -0
  417. package/src/components/dimensions-tool/stories/index.js +54 -0
  418. package/src/components/dimensions-tool/stories/scale-tool.js +48 -0
  419. package/src/components/dimensions-tool/stories/width-height-tool.js +54 -0
  420. package/src/components/dimensions-tool/test/index.js +641 -0
  421. package/src/components/dimensions-tool/width-height-tool.js +113 -0
  422. package/src/components/font-family/README.md +71 -0
  423. package/src/components/global-styles/color-panel.js +24 -17
  424. package/src/components/global-styles/dimensions-panel.js +8 -2
  425. package/src/components/global-styles/filters-panel.js +2 -2
  426. package/src/components/global-styles/get-block-css-selector.js +5 -9
  427. package/src/components/global-styles/hooks.js +22 -26
  428. package/src/components/global-styles/typography-panel.js +57 -5
  429. package/src/components/global-styles/use-global-styles-output.js +36 -18
  430. package/src/components/global-styles/utils.js +15 -6
  431. package/src/components/iframe/index.js +30 -56
  432. package/src/components/iframe/use-compatibility-styles.js +5 -0
  433. package/src/components/image-editor/aspect-ratio-dropdown.js +1 -1
  434. package/src/components/image-editor/use-save-image.js +0 -1
  435. package/src/components/image-size-control/index.js +6 -0
  436. package/src/components/index.js +1 -0
  437. package/src/components/inner-blocks/README.md +10 -0
  438. package/src/components/inner-blocks/index.js +4 -0
  439. package/src/components/inner-blocks/index.native.js +4 -0
  440. package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
  441. package/src/components/inserter/block-patterns-explorer/patterns-list.js +8 -2
  442. package/src/components/inserter/block-patterns-tab.js +8 -56
  443. package/src/components/inserter/hooks/use-block-types-state.js +3 -4
  444. package/src/components/inserter/hooks/use-patterns-state.js +35 -19
  445. package/src/components/inserter/index.js +2 -3
  446. package/src/components/inserter/index.native.js +17 -36
  447. package/src/components/inserter/media-tab/hooks.js +2 -22
  448. package/src/components/inserter/reusable-block-rename-hint.js +69 -0
  449. package/src/components/inserter/reusable-blocks-tab.js +5 -1
  450. package/src/components/inserter/reusable-blocks-tab.native.js +2 -2
  451. package/src/components/inserter/style.native.scss +10 -15
  452. package/src/components/inserter/style.scss +28 -0
  453. package/src/components/inserter/tabs.native.js +5 -1
  454. package/src/components/inserter-draggable-blocks/index.js +13 -2
  455. package/src/components/link-control/constants.js +1 -1
  456. package/src/components/link-control/index.js +36 -29
  457. package/src/components/link-control/search-create-button.js +8 -26
  458. package/src/components/link-control/search-input.js +4 -3
  459. package/src/components/link-control/search-item.js +21 -43
  460. package/src/components/link-control/search-results.js +48 -46
  461. package/src/components/link-control/settings-drawer.js +6 -5
  462. package/src/components/link-control/style.scss +58 -123
  463. package/src/components/link-control/test/index.js +161 -123
  464. package/src/components/list-view/appender.js +5 -6
  465. package/src/components/list-view/style.scss +1 -2
  466. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  467. package/src/components/media-placeholder/index.native.js +108 -59
  468. package/src/components/media-placeholder/styles.native.scss +59 -24
  469. package/src/components/media-replace-flow/test/index.js +1 -1
  470. package/src/components/panel-color-settings/README.md +98 -0
  471. package/src/components/preview-options/README.md +18 -17
  472. package/src/components/preview-options/index.js +2 -2
  473. package/src/components/provider/index.js +9 -2
  474. package/src/components/provider/test/use-block-sync.js +21 -6
  475. package/src/components/provider/use-block-sync.js +19 -0
  476. package/src/components/recursion-provider/README.md +101 -0
  477. package/src/components/resolution-tool/index.js +56 -0
  478. package/src/components/resolution-tool/stories/index.js +48 -0
  479. package/src/components/rich-text/content.js +1 -46
  480. package/src/components/rich-text/get-rich-text-values.js +105 -0
  481. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  482. package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
  483. package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
  484. package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
  485. package/src/components/spacing-sizes-control/utils.js +1 -1
  486. package/src/components/text-transform-control/README.md +44 -0
  487. package/src/components/url-input/index.js +2 -0
  488. package/src/components/use-block-display-information/index.js +12 -5
  489. package/src/components/use-block-drop-zone/index.native.js +65 -28
  490. package/src/components/use-setting/index.js +8 -8
  491. package/src/components/writing-flow/use-tab-nav.js +10 -33
  492. package/src/components/writing-mode-control/index.js +68 -0
  493. package/src/components/writing-mode-control/style.scss +18 -0
  494. package/src/hooks/behaviors.js +25 -16
  495. package/src/hooks/margin.js +4 -1
  496. package/src/hooks/padding.js +4 -1
  497. package/src/hooks/supports.js +7 -0
  498. package/src/hooks/typography.js +2 -0
  499. package/src/hooks/utils.js +8 -7
  500. package/src/private-apis.js +13 -1
  501. package/src/private-apis.native.js +2 -0
  502. package/src/store/actions.js +195 -3
  503. package/src/store/defaults.js +1 -0
  504. package/src/store/index.js +10 -0
  505. package/src/store/private-actions.js +39 -39
  506. package/src/store/private-selectors.js +5 -8
  507. package/src/store/reducer.js +22 -9
  508. package/src/store/selectors.js +87 -25
  509. package/src/store/test/actions.js +114 -0
  510. package/src/store/test/private-actions.js +56 -0
  511. package/src/store/test/private-selectors.js +5 -5
  512. package/src/store/test/reducer.js +14 -7
  513. package/src/store/test/selectors.js +1 -1
  514. package/src/utils/object.js +32 -2
  515. package/src/utils/test/object.js +36 -0
  516. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  517. package/build/components/block-mobile-toolbar/index.native.js +0 -135
  518. package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
  519. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  520. package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
  521. package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
  522. package/src/components/block-mobile-toolbar/index.native.js +0 -127
  523. package/src/components/block-mobile-toolbar/style.native.scss +0 -16
  524. /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
@@ -0,0 +1,89 @@
1
+ # BlockControls
2
+
3
+ When the user selects a particular block, a toolbar positioned above the selected block displays a set of control buttons. Certain block-level controls are automatically included in the toolbar under specific circumstances. For example, there is a control for converting the block into a different type or when the focused element is a RichText component.
4
+
5
+ With `BlockControls`, you can customize the toolbar to include controls specific to your block type. If the return value of your block type's `edit` function includes a `BlockControls` element, the controls nested inside it will be shown in the selected block's toolbar.
6
+
7
+ ![Screenshot of the block controls of a Paragraph block inside the block editor](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/toolbar-text.png)
8
+
9
+ ## Usage
10
+
11
+ ```jsx
12
+ /**
13
+ * WordPress dependencies
14
+ */
15
+ import {
16
+ BlockControls,
17
+ __experimentalBlockAlignmentMatrixControl as BlockAlignmentMatrixControl,
18
+ useBlockProps,
19
+ } from '@wordpress/block-editor';
20
+ import { __ } from '@wordpress/i18n';
21
+
22
+ export default function MyBlockEdit( { attributes, setAttributes } ) {
23
+ const blockProps = useBlockProps( {
24
+ className: 'my-block__custom-class',
25
+ } );
26
+ const { contentPosition } = attributes;
27
+
28
+ return (
29
+ <div { ...blockProps }>
30
+ {
31
+ <BlockControls>
32
+ <BlockAlignmentMatrixControl
33
+ label={ __( 'Change content position' ) }
34
+ value={ contentPosition }
35
+ onChange={ ( nextPosition ) =>
36
+ setAttributes( {
37
+ contentPosition: nextPosition,
38
+ } )
39
+ }
40
+ />
41
+ </BlockControls>
42
+ }
43
+ </div>
44
+ );
45
+ }
46
+
47
+ /// ...
48
+
49
+ <MyBlockEdit />;
50
+ ```
51
+
52
+ See [this custom block tutorial page](/docs/how-to-guides/block-tutorial/block-controls-toolbar-and-sidebar.md) for more information and block controls examples.
53
+
54
+ Furthermore, the READMEs of various components inside the block editor package and the components package include examples that also utilize `BlockControls` and can be a good reference.
55
+
56
+ ### Props
57
+
58
+ The component accepts the following props:
59
+
60
+ ### `group`
61
+
62
+ Group of the block controls. Allows you to create and render multiple groups of block controls.
63
+
64
+ - Type: `string`
65
+ - Default: `default`
66
+ - Required: No
67
+
68
+ ### `controls`
69
+
70
+ Allows overriding the default `controls` if the `default` group is used.
71
+
72
+ See [this custom block tutorial page](/docs/how-to-guides/block-tutorial/block-controls-toolbar-and-sidebar.md) for more details and examples with block controls.
73
+
74
+ - Type: `array`
75
+
76
+ ### `children`
77
+
78
+ Additional control components to be rendered.
79
+
80
+ - Type: `Element`
81
+ - Required: No.
82
+
83
+
84
+ ### `__experimentalShareWithChildBlocks`
85
+
86
+ Whether the additional block controls should be added to the block toolbars of child blocks.
87
+
88
+ - Type: `boolean`
89
+ - Default: `false`
@@ -22,16 +22,25 @@ const BlockDraggable = ( {
22
22
  } ) => {
23
23
  const { srcRootClientId, isDraggable, icon } = useSelect(
24
24
  ( select ) => {
25
- const { canMoveBlocks, getBlockRootClientId, getBlockName } =
26
- select( blockEditorStore );
27
- const { getBlockType } = select( blocksStore );
25
+ const {
26
+ canMoveBlocks,
27
+ getBlockRootClientId,
28
+ getBlockName,
29
+ getBlockAttributes,
30
+ } = select( blockEditorStore );
31
+ const { getBlockType, getActiveBlockVariation } =
32
+ select( blocksStore );
28
33
  const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
29
34
  const blockName = getBlockName( clientIds[ 0 ] );
35
+ const variation = getActiveBlockVariation(
36
+ blockName,
37
+ getBlockAttributes( clientIds[ 0 ] )
38
+ );
30
39
 
31
40
  return {
32
41
  srcRootClientId: rootClientId,
33
42
  isDraggable: canMoveBlocks( clientIds, rootClientId ),
34
- icon: getBlockType( blockName )?.icon,
43
+ icon: variation?.icon || getBlockType( blockName )?.icon,
35
44
  };
36
45
  },
37
46
  [ clientIds ]
@@ -109,8 +109,12 @@ const BlockDraggableWrapper = ( { children, isRTL } ) => {
109
109
  draggingScrollHandler( event );
110
110
  };
111
111
 
112
- const { onBlockDragOver, onBlockDragEnd, onBlockDrop, targetBlockIndex } =
113
- useBlockDropZone();
112
+ const {
113
+ onBlockDragOverWorklet,
114
+ onBlockDragEnd,
115
+ onBlockDrop,
116
+ targetBlockIndex,
117
+ } = useBlockDropZone();
114
118
 
115
119
  // Stop dragging blocks if the block draggable is unmounted.
116
120
  useEffect( () => {
@@ -184,7 +188,7 @@ const BlockDraggableWrapper = ( { children, isRTL } ) => {
184
188
  chip.y.value = dragPosition.y;
185
189
  currentYPosition.value = dragPosition.y;
186
190
 
187
- runOnJS( onBlockDragOver )( { x, y: y + scroll.offsetY.value } );
191
+ onBlockDragOverWorklet( { x, y: y + scroll.offsetY.value } );
188
192
 
189
193
  // Update scrolling velocity
190
194
  scrollOnDragOver( dragPosition.y );
@@ -15,6 +15,7 @@
15
15
  height: $block-toolbar-height;
16
16
  padding: 0 ( $grid-unit-15 + $border-width );
17
17
  user-select: none;
18
+ width: max-content;
18
19
 
19
20
  svg {
20
21
  fill: currentColor;
@@ -133,16 +133,6 @@ describe( 'BlockDraggable', () => {
133
133
  // "firePanGesture" finishes the dragging gesture
134
134
  firePanGesture( blockDraggableWrapper );
135
135
  expect( getDraggableChip( screen ) ).not.toBeDefined();
136
-
137
- // Start dragging from block's mobile toolbar
138
- fireLongPress(
139
- paragraphBlock,
140
- 'draggable-trigger-mobile-toolbar'
141
- );
142
- expect( getDraggableChip( screen ) ).toBeVisible();
143
- // "firePanGesture" finishes the dragging gesture
144
- firePanGesture( blockDraggableWrapper );
145
- expect( getDraggableChip( screen ) ).not.toBeDefined();
146
136
  } ) );
147
137
 
148
138
  it( 'does not enable drag mode when selected and editing text', async () =>
@@ -243,16 +233,6 @@ describe( 'BlockDraggable', () => {
243
233
  // "firePanGesture" finishes the dragging gesture
244
234
  firePanGesture( blockDraggableWrapper );
245
235
  expect( getDraggableChip( screen ) ).not.toBeDefined();
246
-
247
- // Start dragging from block's mobile toolbar
248
- fireLongPress(
249
- imageBlock,
250
- 'draggable-trigger-mobile-toolbar'
251
- );
252
- expect( getDraggableChip( screen ) ).toBeVisible();
253
- // "firePanGesture" finishes the dragging gesture
254
- firePanGesture( blockDraggableWrapper );
255
- expect( getDraggableChip( screen ) ).not.toBeDefined();
256
236
  } ) );
257
237
  } );
258
238
 
@@ -301,16 +281,6 @@ describe( 'BlockDraggable', () => {
301
281
  // "firePanGesture" finishes the dragging gesture
302
282
  firePanGesture( blockDraggableWrapper );
303
283
  expect( getDraggableChip( screen ) ).not.toBeDefined();
304
-
305
- // Start dragging from block's mobile toolbar
306
- fireLongPress(
307
- galleryBlock,
308
- 'draggable-trigger-mobile-toolbar'
309
- );
310
- expect( getDraggableChip( screen ) ).toBeVisible();
311
- // "firePanGesture" finishes the dragging gesture
312
- firePanGesture( blockDraggableWrapper );
313
- expect( getDraggableChip( screen ) ).not.toBeDefined();
314
284
  } ) );
315
285
 
316
286
  it( 'enables drag mode when nested block is selected', async () =>
@@ -336,20 +306,6 @@ describe( 'BlockDraggable', () => {
336
306
  // "firePanGesture" finishes the dragging gesture
337
307
  firePanGesture( blockDraggableWrapper );
338
308
  expect( getDraggableChip( screen ) ).not.toBeDefined();
339
-
340
- // After dropping the block, the gallery item gets automatically selected.
341
- // Hence, we have to select the gallery item again.
342
- fireEvent.press( galleryItem );
343
-
344
- // Start dragging from nested block's mobile toolbar
345
- fireLongPress(
346
- galleryItem,
347
- 'draggable-trigger-mobile-toolbar'
348
- );
349
- expect( getDraggableChip( screen ) ).toBeVisible();
350
- // "firePanGesture" finishes the dragging gesture
351
- firePanGesture( blockDraggableWrapper );
352
- expect( getDraggableChip( screen ) ).not.toBeDefined();
353
309
  } ) );
354
310
  } );
355
311
 
@@ -390,16 +346,6 @@ describe( 'BlockDraggable', () => {
390
346
  // "firePanGesture" finishes the dragging gesture
391
347
  firePanGesture( blockDraggableWrapper );
392
348
  expect( getDraggableChip( screen ) ).not.toBeDefined();
393
-
394
- // Start dragging from block's mobile toolbar
395
- fireLongPress(
396
- spacerBlock,
397
- 'draggable-trigger-mobile-toolbar'
398
- );
399
- expect( getDraggableChip( screen ) ).toBeVisible();
400
- // "firePanGesture" finishes the dragging gesture
401
- firePanGesture( blockDraggableWrapper );
402
- expect( getDraggableChip( screen ) ).not.toBeDefined();
403
349
  } ) );
404
350
  } );
405
351
  } );
@@ -29,7 +29,25 @@ import BlockContext from '../block-context';
29
29
  */
30
30
  const DEFAULT_BLOCK_CONTEXT = {};
31
31
 
32
- export const Edit = ( props ) => {
32
+ const Edit = ( props ) => {
33
+ const { name } = props;
34
+ const blockType = getBlockType( name );
35
+
36
+ if ( ! blockType ) {
37
+ return null;
38
+ }
39
+
40
+ // `edit` and `save` are functions or components describing the markup
41
+ // with which a block is displayed. If `blockType` is valid, assign
42
+ // them preferentially as the render value for the block.
43
+ const Component = blockType.edit || blockType.save;
44
+
45
+ return <Component { ...props } />;
46
+ };
47
+
48
+ const EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );
49
+
50
+ const EditWithGeneratedProps = ( props ) => {
33
51
  const { attributes = {}, name } = props;
34
52
  const blockType = getBlockType( name );
35
53
  const blockContext = useContext( BlockContext );
@@ -49,13 +67,8 @@ export const Edit = ( props ) => {
49
67
  return null;
50
68
  }
51
69
 
52
- // `edit` and `save` are functions or components describing the markup
53
- // with which a block is displayed. If `blockType` is valid, assign
54
- // them preferentially as the render value for the block.
55
- const Component = blockType.edit || blockType.save;
56
-
57
70
  if ( blockType.apiVersion > 1 ) {
58
- return <Component { ...props } context={ context } />;
71
+ return <EditWithFilters { ...props } context={ context } />;
59
72
  }
60
73
 
61
74
  // Generate a class name for the block's editable form.
@@ -69,8 +82,12 @@ export const Edit = ( props ) => {
69
82
  );
70
83
 
71
84
  return (
72
- <Component { ...props } context={ context } className={ className } />
85
+ <EditWithFilters
86
+ { ...props }
87
+ context={ context }
88
+ className={ className }
89
+ />
73
90
  );
74
91
  };
75
92
 
76
- export default withFilters( 'editor.BlockEdit' )( Edit );
93
+ export default EditWithGeneratedProps;
@@ -15,7 +15,7 @@ import {
15
15
  /**
16
16
  * Internal dependencies
17
17
  */
18
- import { Edit } from '../edit';
18
+ import Edit from '../edit';
19
19
  import { BlockContextProvider } from '../../block-context';
20
20
 
21
21
  const noop = () => {};
@@ -10,6 +10,7 @@ import {
10
10
  headingLevel6,
11
11
  paragraph,
12
12
  } from '@wordpress/icons';
13
+ import { Icon } from '@wordpress/components';
13
14
 
14
15
  /** @typedef {import('@wordpress/element').WPComponent} WPComponent */
15
16
 
@@ -39,5 +40,9 @@ const LEVEL_TO_PATH = {
39
40
  * @return {?WPComponent} The icon.
40
41
  */
41
42
  export default function HeadingLevelIcon( { level } ) {
42
- return LEVEL_TO_PATH[ level ] ?? null;
43
+ if ( LEVEL_TO_PATH[ level ] ) {
44
+ return <Icon icon={ LEVEL_TO_PATH[ level ] } />;
45
+ }
46
+
47
+ return null;
43
48
  }
@@ -30,7 +30,11 @@ const HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];
30
30
  *
31
31
  * @return {WPComponent} The toolbar.
32
32
  */
33
- export default function HeadingLevelDropdown( { selectedLevel, onChange } ) {
33
+ export default function HeadingLevelDropdown( {
34
+ options = HEADING_LEVELS,
35
+ value,
36
+ onChange,
37
+ } ) {
34
38
  const createLevelControl = (
35
39
  targetLevel,
36
40
  currentLevel,
@@ -53,9 +57,9 @@ export default function HeadingLevelDropdown( { selectedLevel, onChange } ) {
53
57
 
54
58
  return (
55
59
  <DropdownMenu
56
- icon={ <HeadingLevelIcon level={ selectedLevel } /> }
57
- controls={ HEADING_LEVELS.map( ( index ) =>
58
- createLevelControl( index, selectedLevel, onChange )
60
+ icon={ <HeadingLevelIcon level={ value } /> }
61
+ controls={ options.map( ( index ) =>
62
+ createLevelControl( index, value, onChange )
59
63
  ) }
60
64
  label={ __( 'Change level' ) }
61
65
  />
@@ -20,7 +20,8 @@
20
20
 
21
21
  // Reset unwanted margin-bottom from being applied to BaseControls within certain components.
22
22
  .components-focal-point-picker-control,
23
- .components-query-controls {
23
+ .components-query-controls,
24
+ .components-range-control {
24
25
  .components-base-control {
25
26
  margin-bottom: 0;
26
27
  }
@@ -7,51 +7,52 @@ import { View } from 'react-native';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { usePreferredColorSchemeStyle } from '@wordpress/compose';
10
- import { alignmentHelpers } from '@wordpress/components';
11
10
 
12
11
  /**
13
12
  * Internal dependencies
14
13
  */
15
14
  import styles from './block.scss';
16
15
 
16
+ const TEXT_BLOCKS_WITH_OUTLINE = [ 'core/missing' ];
17
+
17
18
  function BlockOutline( {
18
- align,
19
- blockWidth,
20
- isParentSelected,
19
+ blockCategory,
20
+ hasInnerBlocks,
21
+ isRootList,
21
22
  isSelected,
22
23
  name,
23
- screenWidth,
24
24
  } ) {
25
- const { isFullWidth, isContainerRelated } = alignmentHelpers;
26
- const isScreenWidthWider = blockWidth < screenWidth;
25
+ const textBlockWithOutline = TEXT_BLOCKS_WITH_OUTLINE.includes( name );
26
+ const hasBlockTextCategory =
27
+ blockCategory === 'text' && ! textBlockWithOutline;
28
+ const hasBlockMediaCategory =
29
+ blockCategory === 'media' ||
30
+ blockCategory === 'embed' ||
31
+ ! blockCategory;
32
+ const shouldShowCompactOutline =
33
+ ( hasBlockMediaCategory && ! hasInnerBlocks ) || textBlockWithOutline;
27
34
 
28
35
  const styleSolidBorder = [
29
36
  styles.solidBorder,
30
- isFullWidth( align ) && isScreenWidthWider && styles.borderFullWidth,
31
- isFullWidth( align ) &&
32
- isContainerRelated( name ) &&
33
- isScreenWidthWider &&
34
- styles.containerBorderFullWidth,
35
37
  usePreferredColorSchemeStyle(
36
38
  styles.solidBorderColor,
37
39
  styles.solidBorderColorDark
38
40
  ),
41
+ shouldShowCompactOutline && styles.solidBorderCompact,
42
+ hasBlockTextCategory && styles.solidBorderTextContent,
39
43
  ];
40
- const styleDashedBorder = [
41
- styles.dashedBorder,
42
- usePreferredColorSchemeStyle(
43
- styles.dashedBorderColor,
44
- styles.dashedBorderColorDark
45
- ),
46
- ];
44
+
45
+ const shoudlShowOutline =
46
+ isSelected &&
47
+ ( ( hasBlockTextCategory && hasInnerBlocks ) ||
48
+ ( ! hasBlockTextCategory && hasInnerBlocks ) ||
49
+ ( ! hasBlockTextCategory && isRootList ) ||
50
+ textBlockWithOutline );
47
51
 
48
52
  return (
49
- <>
50
- { isSelected && (
51
- <View pointerEvents="box-none" style={ styleSolidBorder } />
52
- ) }
53
- { isParentSelected && <View style={ styleDashedBorder } /> }
54
- </>
53
+ shoudlShowOutline && (
54
+ <View pointerEvents="box-none" style={ styleSolidBorder } />
55
+ )
55
56
  );
56
57
  }
57
58
 
@@ -1,17 +1,16 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { Pressable, useWindowDimensions, View } from 'react-native';
4
+ import { Pressable, View } from 'react-native';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { useCallback, useMemo, useRef, useState } from '@wordpress/element';
9
+ import { useCallback, useMemo, useState } from '@wordpress/element';
10
10
  import {
11
11
  GlobalStylesContext,
12
12
  getMergedGlobalStyles,
13
13
  useMobileGlobalStylesColors,
14
- alignmentHelpers,
15
14
  useGlobalStyles,
16
15
  } from '@wordpress/components';
17
16
  import {
@@ -36,9 +35,7 @@ import { compose, ifCondition, pure } from '@wordpress/compose';
36
35
  import BlockEdit from '../block-edit';
37
36
  import BlockDraggable from '../block-draggable';
38
37
  import BlockInvalidWarning from './block-invalid-warning';
39
- import BlockMobileToolbar from '../block-mobile-toolbar';
40
38
  import BlockOutline from './block-outline';
41
- import styles from './block.scss';
42
39
  import { store as blockEditorStore } from '../../store';
43
40
  import { useLayout } from './layout';
44
41
  import useSetting from '../use-setting';
@@ -63,27 +60,21 @@ function getWrapperProps( value, getWrapperPropsFunction ) {
63
60
 
64
61
  function BlockWrapper( {
65
62
  accessibilityLabel,
66
- align,
67
- blockWidth,
63
+ blockCategory,
68
64
  children,
69
65
  clientId,
70
66
  draggingClientId,
71
67
  draggingEnabled,
68
+ hasInnerBlocks,
72
69
  isDescendentBlockSelected,
73
- isParentSelected,
70
+ isRootList,
74
71
  isSelected,
75
- isStackedHorizontally,
76
72
  isTouchable,
77
73
  marginHorizontal,
78
74
  marginVertical,
79
- onDeleteBlock,
75
+ name,
80
76
  onFocus,
81
77
  } ) {
82
- const { width: screenWidth } = useWindowDimensions();
83
- const anchorNodeRef = useRef();
84
- const { isFullWidth } = alignmentHelpers;
85
- const isScreenWidthEqual = blockWidth === screenWidth;
86
- const isFullWidthToolbar = isFullWidth( align ) || isScreenWidthEqual;
87
78
  const blockWrapperStyles = { flex: 1 };
88
79
  const blockWrapperStyle = [
89
80
  blockWrapperStyles,
@@ -104,9 +95,11 @@ function BlockWrapper( {
104
95
  style={ blockWrapperStyle }
105
96
  >
106
97
  <BlockOutline
98
+ blockCategory={ blockCategory }
99
+ hasInnerBlocks={ hasInnerBlocks }
100
+ isRootList={ isRootList }
107
101
  isSelected={ isSelected }
108
- isParentSelected={ isParentSelected }
109
- screenWidth={ screenWidth }
102
+ name={ name }
110
103
  />
111
104
  <BlockDraggable
112
105
  clientId={ clientId }
@@ -116,19 +109,6 @@ function BlockWrapper( {
116
109
  >
117
110
  { children }
118
111
  </BlockDraggable>
119
- <View style={ styles.neutralToolbar } ref={ anchorNodeRef }>
120
- { isSelected && (
121
- <BlockMobileToolbar
122
- anchorNodeRef={ anchorNodeRef.current }
123
- blockWidth={ blockWidth }
124
- clientId={ clientId }
125
- draggingClientId={ draggingClientId }
126
- isFullWidth={ isFullWidthToolbar }
127
- isStackedHorizontally={ isStackedHorizontally }
128
- onDelete={ onDeleteBlock }
129
- />
130
- ) }
131
- </View>
132
112
  </Pressable>
133
113
  );
134
114
  }
@@ -159,9 +139,11 @@ function BlockListBlock( {
159
139
  } ) {
160
140
  const {
161
141
  baseGlobalStyles,
142
+ blockCategory,
162
143
  blockType,
163
144
  draggingClientId,
164
145
  draggingEnabled,
146
+ hasInnerBlocks,
165
147
  isDescendantOfParentSelected,
166
148
  isDescendentBlockSelected,
167
149
  isParentSelected,
@@ -178,6 +160,7 @@ function BlockListBlock( {
178
160
  hasSelectedInnerBlock,
179
161
  } = select( blockEditorStore );
180
162
  const currentBlockType = getBlockType( name || 'core/missing' );
163
+ const currentBlockCategory = currentBlockType?.category;
181
164
  const blockOrder = getBlockIndex( clientId );
182
165
  const descendentBlockSelected = hasSelectedInnerBlock(
183
166
  clientId,
@@ -194,13 +177,15 @@ function BlockListBlock( {
194
177
  const selectedParents = clientId ? parents : [];
195
178
  const descendantOfParentSelected =
196
179
  selectedParents.includes( rootClientId );
197
- const hasInnerBlocks = getBlockCount( clientId ) > 0;
180
+ const blockHasInnerBlocks = getBlockCount( clientId ) > 0;
198
181
 
199
182
  // For blocks with inner blocks, we only enable the dragging in the nested
200
183
  // blocks if any of them are selected. This way we prevent the long-press
201
184
  // gesture from being disabled for elements within the block UI.
202
185
  const isDraggingEnabled =
203
- ! hasInnerBlocks || isSelected || ! descendentBlockSelected;
186
+ ! blockHasInnerBlocks ||
187
+ isSelected ||
188
+ ! descendentBlockSelected;
204
189
  // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
205
190
  // will be the top in the hierarchy.
206
191
  const currentDraggingClientId =
@@ -211,9 +196,11 @@ function BlockListBlock( {
211
196
 
212
197
  return {
213
198
  baseGlobalStyles: globalStylesBaseStyles,
199
+ blockCategory: currentBlockCategory,
214
200
  blockType: currentBlockType,
215
201
  draggingClientId: currentDraggingClientId,
216
202
  draggingEnabled: isDraggingEnabled,
203
+ hasInnerBlocks: blockHasInnerBlocks,
217
204
  isDescendantOfParentSelected: descendantOfParentSelected,
218
205
  isDescendentBlockSelected: descendentBlockSelected,
219
206
  isParentSelected: parentSelected,
@@ -295,7 +282,6 @@ function BlockListBlock( {
295
282
  ),
296
283
  ] );
297
284
 
298
- const { align } = attributes;
299
285
  const isFocused = isSelected || isDescendentBlockSelected;
300
286
  const isTouchable =
301
287
  isSelected ||
@@ -312,20 +298,20 @@ function BlockListBlock( {
312
298
  return (
313
299
  <BlockWrapper
314
300
  accessibilityLabel={ accessibilityLabel }
315
- align={ align }
316
- blockWidth={ blockWidth }
301
+ blockCategory={ blockCategory }
317
302
  clientId={ clientId }
318
303
  draggingClientId={ draggingClientId }
319
304
  draggingEnabled={ draggingEnabled }
320
- isFocused={ isFocused }
305
+ hasInnerBlocks={ hasInnerBlocks }
321
306
  isDescendentBlockSelected={ isDescendentBlockSelected }
322
- isParentSelected={ isParentSelected }
307
+ isFocused={ isFocused }
308
+ isRootList={ ! rootClientId }
323
309
  isSelected={ isSelected }
324
310
  isStackedHorizontally={ isStackedHorizontally }
325
311
  isTouchable={ isTouchable }
326
312
  marginHorizontal={ marginHorizontal }
327
313
  marginVertical={ marginVertical }
328
- onDeleteBlock={ onDeleteBlock }
314
+ name={ name }
329
315
  onFocus={ onFocus }
330
316
  >
331
317
  { () =>