@wordpress/block-editor 13.4.0 → 14.1.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 (533) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +20 -15
  3. package/build/autocompleters/block.js +1 -1
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +3 -1
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-draggable/index.js +2 -2
  8. package/build/components/block-draggable/index.js.map +1 -1
  9. package/build/components/block-list/use-block-props/index.js +2 -2
  10. package/build/components/block-list/use-block-props/index.js.map +1 -1
  11. package/build/components/block-list/use-block-props/use-block-refs.js +24 -32
  12. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  13. package/build/components/block-list/use-in-between-inserter.js +11 -4
  14. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  15. package/build/components/block-mover/index.js +1 -2
  16. package/build/components/block-mover/index.js.map +1 -1
  17. package/build/components/block-popover/cover.js +1 -1
  18. package/build/components/block-popover/cover.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +2 -2
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +2 -2
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
  24. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  25. package/build/components/block-tools/block-selection-button.js +1 -2
  26. package/build/components/block-tools/block-selection-button.js.map +1 -1
  27. package/build/components/block-tools/index.js +1 -1
  28. package/build/components/block-tools/index.js.map +1 -1
  29. package/build/components/block-tools/insertion-point.js +14 -3
  30. package/build/components/block-tools/insertion-point.js.map +1 -1
  31. package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  32. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  33. package/build/components/block-tools/use-show-block-tools.js +2 -1
  34. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  35. package/build/components/block-tools/zoom-out-mode-inserters.js +22 -19
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-tools/zoom-out-toolbar.js +0 -1
  38. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  39. package/build/components/border-radius-control/index.js +1 -0
  40. package/build/components/border-radius-control/index.js.map +1 -1
  41. package/build/components/child-layout-control/index.js +3 -1
  42. package/build/components/child-layout-control/index.js.map +1 -1
  43. package/build/components/convert-to-group-buttons/index.js +1 -1
  44. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  45. package/build/components/date-format-picker/index.js +2 -0
  46. package/build/components/date-format-picker/index.js.map +1 -1
  47. package/build/components/dimensions-tool/scale-tool.js +1 -0
  48. package/build/components/dimensions-tool/scale-tool.js.map +1 -1
  49. package/build/components/font-appearance-control/index.js +3 -0
  50. package/build/components/font-appearance-control/index.js.map +1 -1
  51. package/build/components/font-family/index.js +15 -0
  52. package/build/components/font-family/index.js.map +1 -1
  53. package/build/components/global-styles/background-panel.js +153 -77
  54. package/build/components/global-styles/background-panel.js.map +1 -1
  55. package/build/components/global-styles/get-global-styles-changes.js +3 -1
  56. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  57. package/build/components/global-styles/hooks.js +0 -7
  58. package/build/components/global-styles/hooks.js.map +1 -1
  59. package/build/components/global-styles/image-settings-panel.js +1 -0
  60. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  61. package/build/components/global-styles/index.js +0 -6
  62. package/build/components/global-styles/index.js.map +1 -1
  63. package/build/components/global-styles/typography-panel.js +0 -1
  64. package/build/components/global-styles/typography-panel.js.map +1 -1
  65. package/build/components/global-styles/use-global-styles-output.js +59 -40
  66. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  67. package/build/components/global-styles/utils.js +80 -0
  68. package/build/components/global-styles/utils.js.map +1 -1
  69. package/build/components/grid/grid-item-movers.js +30 -26
  70. package/build/components/grid/grid-item-movers.js.map +1 -1
  71. package/build/components/grid/grid-item-resizer.js +14 -15
  72. package/build/components/grid/grid-item-resizer.js.map +1 -1
  73. package/build/components/grid/grid-visualizer.js +21 -6
  74. package/build/components/grid/grid-visualizer.js.map +1 -1
  75. package/build/components/grid/use-grid-layout-sync.js +56 -20
  76. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  77. package/build/components/height-control/index.js +1 -0
  78. package/build/components/height-control/index.js.map +1 -1
  79. package/build/components/iframe/index.js +2 -4
  80. package/build/components/iframe/index.js.map +1 -1
  81. package/build/components/image-editor/zoom-dropdown.js +11 -7
  82. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  83. package/build/components/inner-blocks/button-block-appender.js +8 -8
  84. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  85. package/build/components/inner-blocks/default-block-appender.js +7 -25
  86. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +9 -11
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inserter/category-tabs/index.js +29 -2
  90. package/build/components/inserter/category-tabs/index.js.map +1 -1
  91. package/build/components/inserter/library.js +4 -2
  92. package/build/components/inserter/library.js.map +1 -1
  93. package/build/components/inserter/menu.js +32 -14
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter/quick-inserter.js +4 -0
  96. package/build/components/inserter/quick-inserter.js.map +1 -1
  97. package/build/components/line-height-control/index.js +3 -15
  98. package/build/components/line-height-control/index.js.map +1 -1
  99. package/build/components/link-control/search-input.js +0 -1
  100. package/build/components/link-control/search-input.js.map +1 -1
  101. package/build/components/media-placeholder/index.js +9 -4
  102. package/build/components/media-placeholder/index.js.map +1 -1
  103. package/build/components/media-replace-flow/index.js +3 -1
  104. package/build/components/media-replace-flow/index.js.map +1 -1
  105. package/build/components/media-upload/index.native.js +4 -1
  106. package/build/components/media-upload/index.native.js.map +1 -1
  107. package/build/components/multi-selection-inspector/index.js +12 -12
  108. package/build/components/multi-selection-inspector/index.js.map +1 -1
  109. package/build/components/resolution-tool/index.js +1 -0
  110. package/build/components/resolution-tool/index.js.map +1 -1
  111. package/build/components/skip-to-selected-block/index.js +4 -2
  112. package/build/components/skip-to-selected-block/index.js.map +1 -1
  113. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  114. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  115. package/build/components/text-alignment-control/index.js +13 -8
  116. package/build/components/text-alignment-control/index.js.map +1 -1
  117. package/build/components/text-decoration-control/index.js +13 -8
  118. package/build/components/text-decoration-control/index.js.map +1 -1
  119. package/build/components/text-transform-control/index.js +13 -8
  120. package/build/components/text-transform-control/index.js.map +1 -1
  121. package/build/components/url-input/button.js +0 -1
  122. package/build/components/url-input/button.js.map +1 -1
  123. package/build/components/url-input/index.js +1 -11
  124. package/build/components/url-input/index.js.map +1 -1
  125. package/build/components/url-popover/image-url-input-ui.js +2 -0
  126. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  127. package/build/components/url-popover/link-editor.js +0 -1
  128. package/build/components/url-popover/link-editor.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +42 -4
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-on-block-drop/index.js +3 -6
  132. package/build/components/use-on-block-drop/index.js.map +1 -1
  133. package/build/components/use-resize-canvas/index.js +1 -3
  134. package/build/components/use-resize-canvas/index.js.map +1 -1
  135. package/build/components/use-settings/index.js +2 -1
  136. package/build/components/use-settings/index.js.map +1 -1
  137. package/build/components/writing-mode-control/index.js +13 -8
  138. package/build/components/writing-mode-control/index.js.map +1 -1
  139. package/build/hooks/background.js +19 -23
  140. package/build/hooks/background.js.map +1 -1
  141. package/build/hooks/block-bindings.js +209 -39
  142. package/build/hooks/block-bindings.js.map +1 -1
  143. package/build/hooks/block-hooks.js +1 -0
  144. package/build/hooks/block-hooks.js.map +1 -1
  145. package/build/hooks/block-style-variation.js +2 -2
  146. package/build/hooks/block-style-variation.js.map +1 -1
  147. package/build/hooks/contrast-checker.js +6 -6
  148. package/build/hooks/contrast-checker.js.map +1 -1
  149. package/build/hooks/duotone.js +3 -3
  150. package/build/hooks/duotone.js.map +1 -1
  151. package/build/hooks/index.js +7 -1
  152. package/build/hooks/index.js.map +1 -1
  153. package/build/hooks/line-height.js +0 -1
  154. package/build/hooks/line-height.js.map +1 -1
  155. package/build/hooks/spacing-visualizer.js +1 -1
  156. package/build/hooks/spacing-visualizer.js.map +1 -1
  157. package/build/hooks/use-bindings-attributes.js +4 -0
  158. package/build/hooks/use-bindings-attributes.js.map +1 -1
  159. package/build/hooks/use-zoom-out.js +1 -1
  160. package/build/hooks/use-zoom-out.js.map +1 -1
  161. package/build/hooks/utils.js +20 -0
  162. package/build/hooks/utils.js.map +1 -1
  163. package/build/index.js +7 -0
  164. package/build/index.js.map +1 -1
  165. package/build/layouts/constrained.js +1 -0
  166. package/build/layouts/constrained.js.map +1 -1
  167. package/build/layouts/flex.js +2 -0
  168. package/build/layouts/flex.js.map +1 -1
  169. package/build/layouts/grid.js +3 -0
  170. package/build/layouts/grid.js.map +1 -1
  171. package/build/private-apis.js +3 -2
  172. package/build/private-apis.js.map +1 -1
  173. package/build/store/actions.js +9 -1
  174. package/build/store/actions.js.map +1 -1
  175. package/build/store/private-selectors.js +30 -0
  176. package/build/store/private-selectors.js.map +1 -1
  177. package/build/store/reducer.js +10 -1
  178. package/build/store/reducer.js.map +1 -1
  179. package/build/store/selectors.js +4 -4
  180. package/build/store/selectors.js.map +1 -1
  181. package/build/utils/block-bindings.js +112 -0
  182. package/build/utils/block-bindings.js.map +1 -0
  183. package/build/utils/get-editor-region.js +1 -1
  184. package/build/utils/get-editor-region.js.map +1 -1
  185. package/build/utils/get-px-from-css-unit.js +1 -1
  186. package/build/utils/get-px-from-css-unit.js.map +1 -1
  187. package/build-module/autocompleters/block.js +1 -1
  188. package/build-module/autocompleters/block.js.map +1 -1
  189. package/build-module/components/block-breadcrumb/index.js +4 -2
  190. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  191. package/build-module/components/block-draggable/index.js +3 -3
  192. package/build-module/components/block-draggable/index.js.map +1 -1
  193. package/build-module/components/block-list/use-block-props/index.js +2 -2
  194. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  195. package/build-module/components/block-list/use-block-props/use-block-refs.js +24 -34
  196. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  197. package/build-module/components/block-list/use-in-between-inserter.js +11 -4
  198. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  199. package/build-module/components/block-mover/index.js +1 -2
  200. package/build-module/components/block-mover/index.js.map +1 -1
  201. package/build-module/components/block-popover/cover.js +1 -1
  202. package/build-module/components/block-popover/cover.js.map +1 -1
  203. package/build-module/components/block-popover/inbetween.js +1 -1
  204. package/build-module/components/block-popover/inbetween.js.map +1 -1
  205. package/build-module/components/block-popover/index.js +1 -1
  206. package/build-module/components/block-popover/index.js.map +1 -1
  207. package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
  208. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  209. package/build-module/components/block-tools/block-selection-button.js +1 -2
  210. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  211. package/build-module/components/block-tools/index.js +1 -1
  212. package/build-module/components/block-tools/index.js.map +1 -1
  213. package/build-module/components/block-tools/insertion-point.js +14 -3
  214. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  215. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  216. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  217. package/build-module/components/block-tools/use-show-block-tools.js +2 -1
  218. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  219. package/build-module/components/block-tools/zoom-out-mode-inserters.js +23 -20
  220. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  221. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -1
  222. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  223. package/build-module/components/border-radius-control/index.js +1 -0
  224. package/build-module/components/border-radius-control/index.js.map +1 -1
  225. package/build-module/components/child-layout-control/index.js +3 -1
  226. package/build-module/components/child-layout-control/index.js.map +1 -1
  227. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  228. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  229. package/build-module/components/date-format-picker/index.js +2 -0
  230. package/build-module/components/date-format-picker/index.js.map +1 -1
  231. package/build-module/components/dimensions-tool/scale-tool.js +1 -0
  232. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
  233. package/build-module/components/font-appearance-control/index.js +3 -0
  234. package/build-module/components/font-appearance-control/index.js.map +1 -1
  235. package/build-module/components/font-family/index.js +14 -0
  236. package/build-module/components/font-family/index.js.map +1 -1
  237. package/build-module/components/global-styles/background-panel.js +156 -80
  238. package/build-module/components/global-styles/background-panel.js.map +1 -1
  239. package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
  240. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  241. package/build-module/components/global-styles/hooks.js +0 -6
  242. package/build-module/components/global-styles/hooks.js.map +1 -1
  243. package/build-module/components/global-styles/image-settings-panel.js +1 -0
  244. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  245. package/build-module/components/global-styles/index.js +1 -1
  246. package/build-module/components/global-styles/index.js.map +1 -1
  247. package/build-module/components/global-styles/typography-panel.js +0 -1
  248. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  249. package/build-module/components/global-styles/use-global-styles-output.js +61 -42
  250. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  251. package/build-module/components/global-styles/utils.js +77 -0
  252. package/build-module/components/global-styles/utils.js.map +1 -1
  253. package/build-module/components/grid/grid-item-movers.js +30 -26
  254. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  255. package/build-module/components/grid/grid-item-resizer.js +14 -15
  256. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  257. package/build-module/components/grid/grid-visualizer.js +21 -6
  258. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  259. package/build-module/components/grid/use-grid-layout-sync.js +56 -20
  260. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  261. package/build-module/components/height-control/index.js +1 -0
  262. package/build-module/components/height-control/index.js.map +1 -1
  263. package/build-module/components/iframe/index.js +2 -4
  264. package/build-module/components/iframe/index.js.map +1 -1
  265. package/build-module/components/image-editor/zoom-dropdown.js +12 -8
  266. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  267. package/build-module/components/inner-blocks/button-block-appender.js +7 -6
  268. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  269. package/build-module/components/inner-blocks/default-block-appender.js +6 -23
  270. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  271. package/build-module/components/inner-blocks/index.js +9 -11
  272. package/build-module/components/inner-blocks/index.js.map +1 -1
  273. package/build-module/components/inserter/category-tabs/index.js +30 -3
  274. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  275. package/build-module/components/inserter/library.js +4 -2
  276. package/build-module/components/inserter/library.js.map +1 -1
  277. package/build-module/components/inserter/menu.js +32 -14
  278. package/build-module/components/inserter/menu.js.map +1 -1
  279. package/build-module/components/inserter/quick-inserter.js +5 -1
  280. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  281. package/build-module/components/line-height-control/index.js +3 -14
  282. package/build-module/components/line-height-control/index.js.map +1 -1
  283. package/build-module/components/link-control/search-input.js +0 -1
  284. package/build-module/components/link-control/search-input.js.map +1 -1
  285. package/build-module/components/media-placeholder/index.js +9 -4
  286. package/build-module/components/media-placeholder/index.js.map +1 -1
  287. package/build-module/components/media-replace-flow/index.js +3 -1
  288. package/build-module/components/media-replace-flow/index.js.map +1 -1
  289. package/build-module/components/media-upload/index.native.js +4 -1
  290. package/build-module/components/media-upload/index.native.js.map +1 -1
  291. package/build-module/components/multi-selection-inspector/index.js +12 -12
  292. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  293. package/build-module/components/resolution-tool/index.js +1 -0
  294. package/build-module/components/resolution-tool/index.js.map +1 -1
  295. package/build-module/components/skip-to-selected-block/index.js +5 -3
  296. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  297. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  298. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  299. package/build-module/components/text-alignment-control/index.js +13 -8
  300. package/build-module/components/text-alignment-control/index.js.map +1 -1
  301. package/build-module/components/text-decoration-control/index.js +13 -8
  302. package/build-module/components/text-decoration-control/index.js.map +1 -1
  303. package/build-module/components/text-transform-control/index.js +13 -8
  304. package/build-module/components/text-transform-control/index.js.map +1 -1
  305. package/build-module/components/url-input/button.js +0 -1
  306. package/build-module/components/url-input/button.js.map +1 -1
  307. package/build-module/components/url-input/index.js +1 -11
  308. package/build-module/components/url-input/index.js.map +1 -1
  309. package/build-module/components/url-popover/image-url-input-ui.js +2 -0
  310. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  311. package/build-module/components/url-popover/link-editor.js +0 -1
  312. package/build-module/components/url-popover/link-editor.js.map +1 -1
  313. package/build-module/components/use-block-drop-zone/index.js +42 -4
  314. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  315. package/build-module/components/use-on-block-drop/index.js +3 -6
  316. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  317. package/build-module/components/use-resize-canvas/index.js +1 -3
  318. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  319. package/build-module/components/use-settings/index.js +2 -1
  320. package/build-module/components/use-settings/index.js.map +1 -1
  321. package/build-module/components/writing-mode-control/index.js +13 -8
  322. package/build-module/components/writing-mode-control/index.js.map +1 -1
  323. package/build-module/hooks/background.js +19 -23
  324. package/build-module/hooks/background.js.map +1 -1
  325. package/build-module/hooks/block-bindings.js +214 -43
  326. package/build-module/hooks/block-bindings.js.map +1 -1
  327. package/build-module/hooks/block-hooks.js +1 -0
  328. package/build-module/hooks/block-hooks.js.map +1 -1
  329. package/build-module/hooks/block-style-variation.js +3 -3
  330. package/build-module/hooks/block-style-variation.js.map +1 -1
  331. package/build-module/hooks/contrast-checker.js +7 -7
  332. package/build-module/hooks/contrast-checker.js.map +1 -1
  333. package/build-module/hooks/duotone.js +4 -4
  334. package/build-module/hooks/duotone.js.map +1 -1
  335. package/build-module/hooks/index.js +2 -1
  336. package/build-module/hooks/index.js.map +1 -1
  337. package/build-module/hooks/line-height.js +0 -1
  338. package/build-module/hooks/line-height.js.map +1 -1
  339. package/build-module/hooks/spacing-visualizer.js +1 -1
  340. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  341. package/build-module/hooks/use-bindings-attributes.js +3 -0
  342. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  343. package/build-module/hooks/use-zoom-out.js +1 -1
  344. package/build-module/hooks/use-zoom-out.js.map +1 -1
  345. package/build-module/hooks/utils.js +19 -0
  346. package/build-module/hooks/utils.js.map +1 -1
  347. package/build-module/index.js +1 -1
  348. package/build-module/index.js.map +1 -1
  349. package/build-module/layouts/constrained.js +1 -0
  350. package/build-module/layouts/constrained.js.map +1 -1
  351. package/build-module/layouts/flex.js +2 -0
  352. package/build-module/layouts/flex.js.map +1 -1
  353. package/build-module/layouts/grid.js +3 -0
  354. package/build-module/layouts/grid.js.map +1 -1
  355. package/build-module/private-apis.js +4 -3
  356. package/build-module/private-apis.js.map +1 -1
  357. package/build-module/store/actions.js +9 -1
  358. package/build-module/store/actions.js.map +1 -1
  359. package/build-module/store/private-selectors.js +27 -0
  360. package/build-module/store/private-selectors.js.map +1 -1
  361. package/build-module/store/reducer.js +9 -1
  362. package/build-module/store/reducer.js.map +1 -1
  363. package/build-module/store/selectors.js +4 -4
  364. package/build-module/store/selectors.js.map +1 -1
  365. package/build-module/utils/block-bindings.js +105 -0
  366. package/build-module/utils/block-bindings.js.map +1 -0
  367. package/build-module/utils/get-editor-region.js +1 -1
  368. package/build-module/utils/get-editor-region.js.map +1 -1
  369. package/build-module/utils/get-px-from-css-unit.js +1 -1
  370. package/build-module/utils/get-px-from-css-unit.js.map +1 -1
  371. package/build-style/content-rtl.css +12 -26
  372. package/build-style/content.css +12 -26
  373. package/build-style/default-editor-styles-rtl.css +5 -2
  374. package/build-style/default-editor-styles.css +5 -2
  375. package/build-style/style-rtl.css +123 -83
  376. package/build-style/style.css +123 -83
  377. package/package.json +32 -32
  378. package/src/autocompleters/block.js +2 -1
  379. package/src/autocompleters/style.scss +4 -0
  380. package/src/components/block-breadcrumb/index.js +4 -2
  381. package/src/components/block-canvas/style.scss +1 -0
  382. package/src/components/block-draggable/index.js +3 -3
  383. package/src/components/block-list/content.scss +5 -13
  384. package/src/components/block-list/use-block-props/index.js +2 -2
  385. package/src/components/block-list/use-block-props/use-block-refs.js +27 -43
  386. package/src/components/block-list/use-in-between-inserter.js +17 -5
  387. package/src/components/block-mover/index.js +5 -2
  388. package/src/components/block-popover/cover.js +1 -1
  389. package/src/components/block-popover/inbetween.js +1 -1
  390. package/src/components/block-popover/index.js +1 -1
  391. package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
  392. package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
  393. package/src/components/block-tools/block-selection-button.js +1 -2
  394. package/src/components/block-tools/index.js +5 -6
  395. package/src/components/block-tools/insertion-point.js +11 -0
  396. package/src/components/block-tools/style.scss +1 -1
  397. package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  398. package/src/components/block-tools/use-show-block-tools.js +4 -1
  399. package/src/components/block-tools/zoom-out-mode-inserters.js +21 -19
  400. package/src/components/block-tools/zoom-out-toolbar.js +0 -1
  401. package/src/components/block-variation-transforms/style.scss +1 -1
  402. package/src/components/border-radius-control/index.js +1 -0
  403. package/src/components/border-radius-control/style.scss +0 -10
  404. package/src/components/button-block-appender/content.scss +1 -1
  405. package/src/components/child-layout-control/index.js +2 -0
  406. package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
  407. package/src/components/colors-gradients/test/control.js +3 -2
  408. package/src/components/convert-to-group-buttons/index.js +1 -1
  409. package/src/components/date-format-picker/index.js +2 -0
  410. package/src/components/dimensions-tool/scale-tool.js +1 -0
  411. package/src/components/font-appearance-control/index.js +3 -0
  412. package/src/components/font-family/README.md +17 -0
  413. package/src/components/font-family/index.js +19 -0
  414. package/src/components/font-family/stories/index.story.js +54 -0
  415. package/src/components/global-styles/background-panel.js +180 -93
  416. package/src/components/global-styles/get-global-styles-changes.js +4 -1
  417. package/src/components/global-styles/hooks.js +0 -5
  418. package/src/components/global-styles/image-settings-panel.js +1 -0
  419. package/src/components/global-styles/index.js +0 -1
  420. package/src/components/global-styles/style.scss +13 -12
  421. package/src/components/global-styles/test/use-global-styles-output.js +68 -7
  422. package/src/components/global-styles/test/utils.js +120 -0
  423. package/src/components/global-styles/typography-panel.js +0 -1
  424. package/src/components/global-styles/use-global-styles-output.js +71 -53
  425. package/src/components/global-styles/utils.js +90 -0
  426. package/src/components/grid/grid-item-movers.js +46 -44
  427. package/src/components/grid/grid-item-resizer.js +11 -17
  428. package/src/components/grid/grid-visualizer.js +23 -8
  429. package/src/components/grid/style.scss +60 -10
  430. package/src/components/grid/use-grid-layout-sync.js +68 -14
  431. package/src/components/height-control/index.js +1 -0
  432. package/src/components/iframe/content.scss +2 -2
  433. package/src/components/iframe/index.js +1 -3
  434. package/src/components/image-editor/zoom-dropdown.js +17 -9
  435. package/src/components/inner-blocks/button-block-appender.js +5 -7
  436. package/src/components/inner-blocks/default-block-appender.js +4 -23
  437. package/src/components/inner-blocks/index.js +10 -9
  438. package/src/components/inserter/category-tabs/index.js +35 -2
  439. package/src/components/inserter/library.js +2 -0
  440. package/src/components/inserter/menu.js +34 -29
  441. package/src/components/inserter/quick-inserter.js +4 -1
  442. package/src/components/inserter/style.scss +17 -12
  443. package/src/components/inserter-list-item/style.scss +1 -0
  444. package/src/components/inspector-controls/README.md +5 -0
  445. package/src/components/line-height-control/README.md +4 -5
  446. package/src/components/line-height-control/index.js +4 -21
  447. package/src/components/line-height-control/stories/index.story.js +0 -1
  448. package/src/components/line-height-control/test/index.js +1 -7
  449. package/src/components/link-control/search-input.js +0 -1
  450. package/src/components/link-control/style.scss +1 -1
  451. package/src/components/media-placeholder/index.js +12 -7
  452. package/src/components/media-replace-flow/README.md +7 -0
  453. package/src/components/media-replace-flow/index.js +3 -1
  454. package/src/components/media-upload/README.md +2 -0
  455. package/src/components/media-upload/index.native.js +2 -0
  456. package/src/components/multi-selection-inspector/index.js +8 -9
  457. package/src/components/resolution-tool/index.js +1 -0
  458. package/src/components/responsive-block-control/README.md +1 -0
  459. package/src/components/responsive-block-control/test/index.js +6 -1
  460. package/src/components/skip-to-selected-block/index.js +5 -3
  461. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +11 -10
  462. package/src/components/spacing-sizes-control/style.scss +16 -16
  463. package/src/components/tabbed-sidebar/style.scss +1 -19
  464. package/src/components/text-alignment-control/index.js +20 -8
  465. package/src/components/text-decoration-control/index.js +20 -8
  466. package/src/components/text-decoration-control/stories/index.story.js +0 -4
  467. package/src/components/text-transform-control/index.js +20 -8
  468. package/src/components/text-transform-control/stories/index.story.js +0 -4
  469. package/src/components/url-input/README.md +0 -5
  470. package/src/components/url-input/button.js +0 -1
  471. package/src/components/url-input/index.js +1 -15
  472. package/src/components/url-input/style.scss +2 -2
  473. package/src/components/url-popover/image-url-input-ui.js +2 -0
  474. package/src/components/url-popover/link-editor.js +0 -1
  475. package/src/components/use-block-drop-zone/index.js +86 -16
  476. package/src/components/use-on-block-drop/index.js +1 -9
  477. package/src/components/use-resize-canvas/index.js +1 -3
  478. package/src/components/use-settings/index.js +2 -1
  479. package/src/components/writing-mode-control/index.js +20 -8
  480. package/src/hooks/background.js +21 -27
  481. package/src/hooks/block-bindings.js +248 -54
  482. package/src/hooks/block-bindings.scss +13 -2
  483. package/src/hooks/block-hooks.js +1 -0
  484. package/src/hooks/block-hooks.scss +1 -0
  485. package/src/hooks/block-style-variation.js +3 -3
  486. package/src/hooks/contrast-checker.js +7 -7
  487. package/src/hooks/duotone.js +4 -4
  488. package/src/hooks/index.js +2 -1
  489. package/src/hooks/line-height.js +0 -1
  490. package/src/hooks/spacing-visualizer.js +1 -1
  491. package/src/hooks/test/background.js +60 -0
  492. package/src/hooks/use-bindings-attributes.js +4 -0
  493. package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
  494. package/src/hooks/use-zoom-out.js +1 -1
  495. package/src/hooks/utils.js +14 -1
  496. package/src/index.js +1 -0
  497. package/src/layouts/constrained.js +1 -0
  498. package/src/layouts/flex.js +2 -0
  499. package/src/layouts/grid.js +3 -0
  500. package/src/private-apis.js +3 -2
  501. package/src/store/actions.js +13 -5
  502. package/src/store/private-selectors.js +36 -0
  503. package/src/store/reducer.js +7 -0
  504. package/src/store/selectors.js +4 -4
  505. package/src/store/test/private-selectors.js +89 -0
  506. package/src/style.scss +1 -2
  507. package/src/utils/block-bindings.js +98 -0
  508. package/src/utils/get-editor-region.js +1 -1
  509. package/src/utils/get-px-from-css-unit.js +1 -1
  510. package/src/utils/test/transform-styles.js +49 -0
  511. package/tsconfig.tsbuildinfo +1 -1
  512. package/build/components/global-styles/theme-file-uri-utils.js +0 -80
  513. package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
  514. package/build/components/inner-blocks/with-client-id.js +0 -28
  515. package/build/components/inner-blocks/with-client-id.js.map +0 -1
  516. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
  517. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  518. package/build/components/segmented-text-control/index.js +0 -63
  519. package/build/components/segmented-text-control/index.js.map +0 -1
  520. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -73
  521. package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
  522. package/build-module/components/inner-blocks/with-client-id.js +0 -21
  523. package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
  524. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
  525. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  526. package/build-module/components/segmented-text-control/index.js +0 -58
  527. package/build-module/components/segmented-text-control/index.js.map +0 -1
  528. package/src/components/global-styles/test/theme-file-uri-utils.js +0 -66
  529. package/src/components/global-styles/theme-file-uri-utils.js +0 -77
  530. package/src/components/inner-blocks/with-client-id.js +0 -19
  531. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
  532. package/src/components/segmented-text-control/index.js +0 -63
  533. package/src/components/segmented-text-control/style.scss +0 -15
@@ -1,13 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- useContext,
6
- useMemo,
7
- useRef,
8
- useState,
9
- useLayoutEffect,
10
- } from '@wordpress/element';
4
+ import { useContext, useState, useLayoutEffect } from '@wordpress/element';
11
5
  import { useRefEffect } from '@wordpress/compose';
12
6
 
13
7
  /**
@@ -16,7 +10,7 @@ import { useRefEffect } from '@wordpress/compose';
16
10
  import { BlockRefs } from '../../provider/block-refs-provider';
17
11
 
18
12
  /** @typedef {import('@wordpress/element').RefCallback} RefCallback */
19
- /** @typedef {import('@wordpress/element').RefObject} RefObject */
13
+ /** @typedef {import('@wordpress/element').Ref} Ref */
20
14
 
21
15
  /**
22
16
  * Provides a ref to the BlockRefs context.
@@ -36,31 +30,33 @@ export function useBlockRefProvider( clientId ) {
36
30
  );
37
31
  }
38
32
 
33
+ function assignRef( ref, value ) {
34
+ if ( typeof ref === 'function' ) {
35
+ ref( value );
36
+ } else if ( ref ) {
37
+ ref.current = value;
38
+ }
39
+ }
40
+
39
41
  /**
40
- * Gets a ref pointing to the current block element. Continues to return the same
41
- * stable ref object even if the `clientId` argument changes. This hook is not
42
- * reactive, i.e., it won't trigger a rerender of the calling component if the
43
- * ref value changes. For reactive use cases there is the `useBlockElement` hook.
44
- *
45
- * @param {string} clientId The client ID to get a ref for.
42
+ * Tracks the DOM element for the block identified by `clientId` and assigns it to the `ref`
43
+ * whenever it changes.
46
44
  *
47
- * @return {RefObject} A ref containing the element.
45
+ * @param {string} clientId The client ID to track.
46
+ * @param {Ref} ref The ref object/callback to assign to.
48
47
  */
49
- function useBlockRef( clientId ) {
48
+ export function useBlockElementRef( clientId, ref ) {
50
49
  const { refsMap } = useContext( BlockRefs );
51
- const latestClientId = useRef();
52
- latestClientId.current = clientId;
53
-
54
- // Always return an object, even if no ref exists for a given client ID, so
55
- // that `current` works at a later point.
56
- return useMemo(
57
- () => ( {
58
- get current() {
59
- return refsMap.get( latestClientId.current ) ?? null;
60
- },
61
- } ),
62
- [ refsMap ]
63
- );
50
+ useLayoutEffect( () => {
51
+ assignRef( ref, refsMap.get( clientId ) );
52
+ const unsubscribe = refsMap.subscribe( clientId, () =>
53
+ assignRef( ref, refsMap.get( clientId ) )
54
+ );
55
+ return () => {
56
+ unsubscribe();
57
+ assignRef( ref, null );
58
+ };
59
+ }, [ refsMap, clientId, ref ] );
64
60
  }
65
61
 
66
62
  /**
@@ -71,20 +67,8 @@ function useBlockRef( clientId ) {
71
67
  *
72
68
  * @return {Element|null} The block's wrapper element.
73
69
  */
74
- function useBlockElement( clientId ) {
75
- const { refsMap } = useContext( BlockRefs );
70
+ export function useBlockElement( clientId ) {
76
71
  const [ blockElement, setBlockElement ] = useState( null );
77
- // Delay setting the resulting `blockElement` until an effect. If the block element
78
- // changes (i.e., the block is unmounted and re-mounted), this allows enough time
79
- // for the ref callbacks to clean up the old element and set the new one.
80
- useLayoutEffect( () => {
81
- setBlockElement( refsMap.get( clientId ) );
82
- return refsMap.subscribe( clientId, () =>
83
- setBlockElement( refsMap.get( clientId ) )
84
- );
85
- }, [ refsMap, clientId ] );
72
+ useBlockElementRef( clientId, setBlockElement );
86
73
  return blockElement;
87
74
  }
88
-
89
- export { useBlockRef as __unstableUseBlockRef };
90
- export { useBlockElement as __unstableUseBlockElement };
@@ -25,6 +25,7 @@ export function useInBetweenInserter() {
25
25
  getBlockIndex,
26
26
  isMultiSelecting,
27
27
  getSelectedBlockClientIds,
28
+ getSettings,
28
29
  getTemplateLock,
29
30
  __unstableIsWithinBlockOverlay,
30
31
  getBlockEditingMode,
@@ -88,9 +89,11 @@ export function useInBetweenInserter() {
88
89
  return;
89
90
  }
90
91
 
92
+ const blockListSettings = getBlockListSettings( rootClientId );
91
93
  const orientation =
92
- getBlockListSettings( rootClientId )?.orientation ||
93
- 'vertical';
94
+ blockListSettings?.orientation || 'vertical';
95
+ const captureToolbars =
96
+ !! blockListSettings?.__experimentalCaptureToolbars;
94
97
  const offsetTop = event.clientY;
95
98
  const offsetLeft = event.clientX;
96
99
 
@@ -135,9 +138,18 @@ export function useInBetweenInserter() {
135
138
  return;
136
139
  }
137
140
 
138
- // Don't show the inserter when hovering above (conflicts with
139
- // block toolbar) or inside selected block(s).
140
- if ( getSelectedBlockClientIds().includes( clientId ) ) {
141
+ // Don't show the inserter if the following conditions are met,
142
+ // as it conflicts with the block toolbar:
143
+ // 1. when hovering above or inside selected block(s)
144
+ // 2. when the orientation is vertical
145
+ // 3. when the __experimentalCaptureToolbars is not enabled
146
+ // 4. when the Top Toolbar is not disabled
147
+ if (
148
+ getSelectedBlockClientIds().includes( clientId ) &&
149
+ orientation === 'vertical' &&
150
+ ! captureToolbars &&
151
+ ! getSettings().hasFixedToolbar
152
+ ) {
141
153
  return;
142
154
  }
143
155
  const elementRect = element.getBoundingClientRect();
@@ -69,7 +69,11 @@ function BlockMover( {
69
69
  [ clientIds ]
70
70
  );
71
71
 
72
- if ( ! canMove || ( isFirst && isLast && ! rootClientId ) ) {
72
+ if (
73
+ ! canMove ||
74
+ ( isFirst && isLast && ! rootClientId ) ||
75
+ ( hideDragHandle && isManualGrid )
76
+ ) {
73
77
  return null;
74
78
  }
75
79
 
@@ -85,7 +89,6 @@ function BlockMover( {
85
89
  <Button
86
90
  icon={ dragHandle }
87
91
  className="block-editor-block-mover__drag-handle"
88
- aria-hidden="true"
89
92
  label={ __( 'Drag' ) }
90
93
  // Should not be able to tab to drag handle as this
91
94
  // button can only be used with a pointer device.
@@ -6,7 +6,7 @@ import { useEffect, useState, useMemo, forwardRef } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
9
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
10
10
  import { PrivateBlockPopover } from '.';
11
11
 
12
12
  function BlockPopoverCover(
@@ -20,7 +20,7 @@ import { isRTL } from '@wordpress/i18n';
20
20
  * Internal dependencies
21
21
  */
22
22
  import { store as blockEditorStore } from '../../store';
23
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
23
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
24
24
  import usePopoverScroll from './use-popover-scroll';
25
25
 
26
26
  const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
@@ -18,7 +18,7 @@ import {
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
21
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
22
22
  import usePopoverScroll from './use-popover-scroll';
23
23
 
24
24
  const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
@@ -4,8 +4,7 @@
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { MenuItem } from '@wordpress/components';
6
6
  import { getBlockType, hasBlockSupport } from '@wordpress/blocks';
7
- import { withSelect, withDispatch } from '@wordpress/data';
8
- import { compose } from '@wordpress/compose';
7
+ import { useDispatch, useSelect } from '@wordpress/data';
9
8
 
10
9
  /**
11
10
  * Internal dependencies
@@ -14,13 +13,23 @@ import { store as blockEditorStore } from '../../store';
14
13
 
15
14
  const noop = () => {};
16
15
 
17
- export function BlockModeToggle( {
18
- blockType,
19
- mode,
20
- onToggleMode,
21
- small = false,
22
- isCodeEditingEnabled = true,
23
- } ) {
16
+ export default function BlockModeToggle( { clientId, onToggle = noop } ) {
17
+ const { blockType, mode, isCodeEditingEnabled } = useSelect(
18
+ ( select ) => {
19
+ const { getBlock, getBlockMode, getSettings } =
20
+ select( blockEditorStore );
21
+ const block = getBlock( clientId );
22
+
23
+ return {
24
+ mode: getBlockMode( clientId ),
25
+ blockType: block ? getBlockType( block.name ) : null,
26
+ isCodeEditingEnabled: getSettings().codeEditingEnabled,
27
+ };
28
+ },
29
+ [ clientId ]
30
+ );
31
+ const { toggleBlockMode } = useDispatch( blockEditorStore );
32
+
24
33
  if (
25
34
  ! blockType ||
26
35
  ! hasBlockSupport( blockType, 'html', true ) ||
@@ -32,26 +41,14 @@ export function BlockModeToggle( {
32
41
  const label =
33
42
  mode === 'visual' ? __( 'Edit as HTML' ) : __( 'Edit visually' );
34
43
 
35
- return <MenuItem onClick={ onToggleMode }>{ ! small && label }</MenuItem>;
44
+ return (
45
+ <MenuItem
46
+ onClick={ () => {
47
+ toggleBlockMode( clientId );
48
+ onToggle();
49
+ } }
50
+ >
51
+ { label }
52
+ </MenuItem>
53
+ );
36
54
  }
37
-
38
- export default compose( [
39
- withSelect( ( select, { clientId } ) => {
40
- const { getBlock, getBlockMode, getSettings } =
41
- select( blockEditorStore );
42
- const block = getBlock( clientId );
43
- const isCodeEditingEnabled = getSettings().codeEditingEnabled;
44
-
45
- return {
46
- mode: getBlockMode( clientId ),
47
- blockType: block ? getBlockType( block.name ) : null,
48
- isCodeEditingEnabled,
49
- };
50
- } ),
51
- withDispatch( ( dispatch, { onToggle = noop, clientId } ) => ( {
52
- onToggleMode() {
53
- dispatch( blockEditorStore ).toggleBlockMode( clientId );
54
- onToggle();
55
- },
56
- } ) ),
57
- ] )( BlockModeToggle );
@@ -3,16 +3,32 @@
3
3
  */
4
4
  import { render, screen } from '@testing-library/react';
5
5
 
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useSelect } from '@wordpress/data';
10
+
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
9
- import { BlockModeToggle } from '../block-mode-toggle';
14
+ import BlockModeToggle from '../block-mode-toggle';
15
+
16
+ jest.mock( '@wordpress/data/src/components/use-select', () => jest.fn() );
17
+
18
+ function setupUseSelectMock( mode, blockType, codeEditingEnabled = true ) {
19
+ useSelect.mockImplementation( () => {
20
+ return {
21
+ mode,
22
+ blockType,
23
+ isCodeEditingEnabled: codeEditingEnabled,
24
+ };
25
+ } );
26
+ }
10
27
 
11
28
  describe( 'BlockModeToggle', () => {
12
29
  it( "should not render the HTML mode button if the block doesn't support it", () => {
13
- render(
14
- <BlockModeToggle blockType={ { supports: { html: false } } } />
15
- );
30
+ setupUseSelectMock( undefined, { supports: { html: false } } );
31
+ render( <BlockModeToggle /> );
16
32
 
17
33
  expect(
18
34
  screen.queryByRole( 'menuitem', { name: 'Edit as HTML' } )
@@ -20,12 +36,8 @@ describe( 'BlockModeToggle', () => {
20
36
  } );
21
37
 
22
38
  it( 'should render the HTML mode button', () => {
23
- render(
24
- <BlockModeToggle
25
- blockType={ { supports: { html: true } } }
26
- mode="visual"
27
- />
28
- );
39
+ setupUseSelectMock( 'visual', { supports: { html: true } } );
40
+ render( <BlockModeToggle /> );
29
41
 
30
42
  expect(
31
43
  screen.getByRole( 'menuitem', { name: 'Edit as HTML' } )
@@ -33,12 +45,8 @@ describe( 'BlockModeToggle', () => {
33
45
  } );
34
46
 
35
47
  it( 'should render the Visual mode button', () => {
36
- render(
37
- <BlockModeToggle
38
- blockType={ { supports: { html: true } } }
39
- mode="html"
40
- />
41
- );
48
+ setupUseSelectMock( 'html', { supports: { html: true } } );
49
+ render( <BlockModeToggle /> );
42
50
 
43
51
  expect(
44
52
  screen.getByRole( 'menuitem', { name: 'Edit visually' } )
@@ -46,13 +54,8 @@ describe( 'BlockModeToggle', () => {
46
54
  } );
47
55
 
48
56
  it( 'should not render the Visual mode button if code editing is disabled', () => {
49
- render(
50
- <BlockModeToggle
51
- blockType={ { supports: { html: true } } }
52
- mode="html"
53
- isCodeEditingEnabled={ false }
54
- />
55
- );
57
+ setupUseSelectMock( 'html', { supports: { html: true } }, false );
58
+ render( <BlockModeToggle /> );
56
59
 
57
60
  expect(
58
61
  screen.queryByRole( 'menuitem', { name: 'Edit visually' } )
@@ -37,7 +37,7 @@ import BlockTitle from '../block-title';
37
37
  import BlockIcon from '../block-icon';
38
38
  import { store as blockEditorStore } from '../../store';
39
39
  import BlockDraggable from '../block-draggable';
40
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
40
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
41
41
 
42
42
  /**
43
43
  * Block selection button component, displaying the label of the block. If the block
@@ -259,7 +259,6 @@ function BlockSelectionButton( { clientId, rootClientId }, ref ) {
259
259
  <Button
260
260
  icon={ dragHandle }
261
261
  className="block-selection-button_drag-handle"
262
- aria-hidden="true"
263
262
  label={ dragHandleLabel }
264
263
  // Should not be able to tab to drag handle as this
265
264
  // button can only be used with a pointer device.
@@ -251,12 +251,11 @@ export default function BlockTools( {
251
251
  name="__unstable-block-tools-after"
252
252
  ref={ blockToolbarAfterRef }
253
253
  />
254
- { window.__experimentalEnableZoomedOutPatternsTab &&
255
- isZoomOutMode && (
256
- <ZoomOutModeInserters
257
- __unstableContentRef={ __unstableContentRef }
258
- />
259
- ) }
254
+ { isZoomOutMode && (
255
+ <ZoomOutModeInserters
256
+ __unstableContentRef={ __unstableContentRef }
257
+ />
258
+ ) }
260
259
  </InsertionPointOpenRef.Provider>
261
260
  </div>
262
261
  );
@@ -38,6 +38,7 @@ function InbetweenInsertionPointPopover( {
38
38
  isInserterShown,
39
39
  isDistractionFree,
40
40
  isNavigationMode,
41
+ isZoomOutMode,
41
42
  } = useSelect( ( select ) => {
42
43
  const {
43
44
  getBlockOrder,
@@ -48,6 +49,7 @@ function InbetweenInsertionPointPopover( {
48
49
  getNextBlockClientId,
49
50
  getSettings,
50
51
  isNavigationMode: _isNavigationMode,
52
+ __unstableGetEditorMode,
51
53
  } = select( blockEditorStore );
52
54
  const insertionPoint = getBlockInsertionPoint();
53
55
  const order = getBlockOrder( insertionPoint.rootClientId );
@@ -79,6 +81,7 @@ function InbetweenInsertionPointPopover( {
79
81
  isNavigationMode: _isNavigationMode(),
80
82
  isDistractionFree: settings.isDistractionFree,
81
83
  isInserterShown: insertionPoint?.__unstableWithInserter,
84
+ isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
82
85
  };
83
86
  }, [] );
84
87
  const { getBlockEditingMode } = useSelect( blockEditorStore );
@@ -145,6 +148,14 @@ function InbetweenInsertionPointPopover( {
145
148
  return null;
146
149
  }
147
150
 
151
+ // Zoom out mode should only show the insertion point for the insert operation.
152
+ // Other operations such as "group" are when the editor tries to create a row
153
+ // block by grouping the block being dragged with the block it's being dropped
154
+ // onto.
155
+ if ( isZoomOutMode && operation !== 'insert' ) {
156
+ return null;
157
+ }
158
+
148
159
  const orientationClassname =
149
160
  orientation === 'horizontal' || operation === 'group'
150
161
  ? 'is-horizontal'
@@ -231,7 +231,7 @@
231
231
  }
232
232
 
233
233
  .block-editor-block-parent-selector__button {
234
- border: 1px solid $gray-900;
234
+ border: $border-width solid $gray-900;
235
235
  padding-right: 6px;
236
236
  padding-left: 6px;
237
237
  background-color: $white;
@@ -15,7 +15,7 @@ import {
15
15
  * Internal dependencies
16
16
  */
17
17
  import { store as blockEditorStore } from '../../store';
18
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
18
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
19
19
  import { hasStickyOrFixedPositionValue } from '../../hooks/position';
20
20
 
21
21
  const COMMON_PROPS = {
@@ -20,6 +20,7 @@ export function useShowBlockTools() {
20
20
  getSelectedBlockClientId,
21
21
  getFirstMultiSelectedBlockClientId,
22
22
  getBlock,
23
+ getBlockMode,
23
24
  getSettings,
24
25
  hasMultiSelection,
25
26
  __unstableGetEditorMode,
@@ -33,7 +34,9 @@ export function useShowBlockTools() {
33
34
  const editorMode = __unstableGetEditorMode();
34
35
  const hasSelectedBlock = !! clientId && !! block;
35
36
  const isEmptyDefaultBlock =
36
- hasSelectedBlock && isUnmodifiedDefaultBlock( block );
37
+ hasSelectedBlock &&
38
+ isUnmodifiedDefaultBlock( block ) &&
39
+ getBlockMode( clientId ) !== 'html';
37
40
  const _showEmptyBlockSideInserter =
38
41
  clientId &&
39
42
  ! isTyping() &&
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect } from '@wordpress/data';
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
5
  import { useEffect, useState } from '@wordpress/element';
6
6
 
7
7
  /**
@@ -16,40 +16,44 @@ function ZoomOutModeInserters() {
16
16
  const [ isReady, setIsReady ] = useState( false );
17
17
  const {
18
18
  hasSelection,
19
+ blockInsertionPoint,
19
20
  blockOrder,
20
- insertionPoint,
21
+ blockInsertionPointVisible,
21
22
  setInserterIsOpened,
22
23
  sectionRootClientId,
23
24
  selectedBlockClientId,
24
25
  hoveredBlockClientId,
26
+ inserterSearchInputRef,
25
27
  } = useSelect( ( select ) => {
26
28
  const {
27
29
  getSettings,
30
+ getBlockInsertionPoint,
28
31
  getBlockOrder,
29
32
  getSelectionStart,
30
33
  getSelectedBlockClientId,
31
34
  getHoveredBlockClientId,
32
- } = select( blockEditorStore );
35
+ isBlockInsertionPointVisible,
36
+ getInserterSearchInputRef,
37
+ } = unlock( select( blockEditorStore ) );
38
+
33
39
  const { sectionRootClientId: root } = unlock( getSettings() );
34
- // To do: move ZoomOutModeInserters to core/editor.
35
- // Or we perhaps we should move the insertion point state to the
36
- // block-editor store. I'm not sure what it was ever moved to the editor
37
- // store, because all the inserter components all live in the
38
- // block-editor package.
39
- // eslint-disable-next-line @wordpress/data-no-store-string-literals
40
- const editor = select( 'core/editor' );
40
+
41
41
  return {
42
42
  hasSelection: !! getSelectionStart().clientId,
43
+ blockInsertionPoint: getBlockInsertionPoint(),
43
44
  blockOrder: getBlockOrder( root ),
44
- insertionPoint: unlock( editor ).getInsertionPoint(),
45
+ blockInsertionPointVisible: isBlockInsertionPointVisible(),
45
46
  sectionRootClientId: root,
46
47
  setInserterIsOpened:
47
48
  getSettings().__experimentalSetIsInserterOpened,
48
49
  selectedBlockClientId: getSelectedBlockClientId(),
49
50
  hoveredBlockClientId: getHoveredBlockClientId(),
51
+ inserterSearchInputRef: getInserterSearchInputRef(),
50
52
  };
51
53
  }, [] );
52
54
 
55
+ const { showInsertionPoint } = useDispatch( blockEditorStore );
56
+
53
57
  // Defer the initial rendering to avoid the jumps due to the animation.
54
58
  useEffect( () => {
55
59
  const timeout = setTimeout( () => {
@@ -65,14 +69,8 @@ function ZoomOutModeInserters() {
65
69
  }
66
70
 
67
71
  return [ undefined, ...blockOrder ].map( ( clientId, index ) => {
68
- const shouldRenderInserter = insertionPoint.insertionIndex !== index;
69
-
70
72
  const shouldRenderInsertionPoint =
71
- insertionPoint.insertionIndex === index;
72
-
73
- if ( ! shouldRenderInserter && ! shouldRenderInsertionPoint ) {
74
- return null;
75
- }
73
+ blockInsertionPointVisible && blockInsertionPoint.index === index;
76
74
 
77
75
  const previousClientId = clientId;
78
76
  const nextClientId = blockOrder[ index ];
@@ -104,7 +102,7 @@ function ZoomOutModeInserters() {
104
102
  className="block-editor-block-list__insertion-point-indicator"
105
103
  />
106
104
  ) }
107
- { shouldRenderInserter && (
105
+ { ! shouldRenderInsertionPoint && (
108
106
  <ZoomOutModeInserterButton
109
107
  isVisible={ isSelected || isHovered }
110
108
  onClick={ () => {
@@ -114,6 +112,10 @@ function ZoomOutModeInserters() {
114
112
  tab: 'patterns',
115
113
  category: 'all',
116
114
  } );
115
+ showInsertionPoint( sectionRootClientId, index, {
116
+ operation: 'insert',
117
+ } );
118
+ inserterSearchInputRef?.current?.focus();
117
119
  } }
118
120
  />
119
121
  ) }
@@ -100,7 +100,6 @@ export default function ZoomOutToolbar( { clientId, rootClientId } ) {
100
100
  <Button
101
101
  icon={ dragHandle }
102
102
  className="block-selection-button_drag-handle zoom-out-toolbar-button"
103
- aria-hidden="true"
104
103
  label={ __( 'Drag' ) }
105
104
  iconSize={ 24 }
106
105
  size="compact"
@@ -3,7 +3,7 @@
3
3
  width: 100%;
4
4
 
5
5
  .components-dropdown-menu__toggle {
6
- border: 1px solid $gray-700;
6
+ border: $border-width solid $gray-700;
7
7
  border-radius: $radius-block-ui;
8
8
  min-height: 30px;
9
9
  width: 100%;
@@ -104,6 +104,7 @@ export default function BorderRadiusControl( { onChange, values } ) {
104
104
  units={ units }
105
105
  />
106
106
  <RangeControl
107
+ __next40pxDefaultSize
107
108
  label={ __( 'Border radius' ) }
108
109
  hideLabelFromVision
109
110
  className="components-border-radius-control__range-control"
@@ -20,16 +20,6 @@
20
20
  .components-border-radius-control__range-control {
21
21
  flex: 1;
22
22
  margin-right: $grid-unit-15;
23
-
24
- > div {
25
- height: 40px;
26
- display: flex;
27
- align-items: center;
28
- }
29
- }
30
-
31
- > span {
32
- flex: 0 0 auto;
33
23
  }
34
24
  }
35
25
 
@@ -52,7 +52,7 @@
52
52
  left: 0;
53
53
  pointer-events: none;
54
54
  border: $border-width dashed currentColor;
55
- @include placeholder-style();
55
+ border-radius: $radius-block-ui;
56
56
  }
57
57
 
58
58
  .block-editor-inserter {
@@ -174,6 +174,8 @@ function FlexControls( {
174
174
  } );
175
175
  } }
176
176
  value={ flexSize }
177
+ label={ flexResetLabel }
178
+ hideLabelFromVision
177
179
  />
178
180
  ) }
179
181
  </VStack>
@@ -45,7 +45,7 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
45
45
  font-weight: 500;
46
46
  line-height: 1.4;
47
47
  text-transform: uppercase;
48
- display: inline-block;
48
+ display: block;
49
49
  margin-bottom: calc(4px * 2);
50
50
  padding: 0;
51
51
  }
@@ -220,7 +220,7 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
220
220
  aria-label="Color: red"
221
221
  aria-selected="true"
222
222
  class="components-button components-circular-option-picker__option"
223
- data-active-item=""
223
+ data-active-item="true"
224
224
  id="components-circular-option-picker-0-0"
225
225
  role="option"
226
226
  style="background-color: rgb(255, 0, 0); color: rgb(255, 0, 0);"