@wordpress/block-editor 13.3.0 → 14.0.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 (554) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +11 -5
  3. package/build/components/alignment-control/ui.js +2 -2
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js +1 -1
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +1 -1
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -1
  9. package/build/components/block-breadcrumb/index.js +3 -1
  10. package/build/components/block-breadcrumb/index.js.map +1 -1
  11. package/build/components/block-draggable/index.js +2 -2
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-inspector/index.js +6 -3
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/index.js +3 -1
  16. package/build/components/block-list/use-block-props/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-block-refs.js +26 -27
  18. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-is-hovered.js +25 -9
  20. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  21. package/build/components/block-list/use-in-between-inserter.js +3 -2
  22. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  23. package/build/components/block-lock/modal.js +2 -0
  24. package/build/components/block-lock/modal.js.map +1 -1
  25. package/build/components/block-mover/index.js +1 -2
  26. package/build/components/block-mover/index.js.map +1 -1
  27. package/build/components/block-popover/cover.js +1 -1
  28. package/build/components/block-popover/cover.js.map +1 -1
  29. package/build/components/block-popover/inbetween.js +2 -2
  30. package/build/components/block-popover/inbetween.js.map +1 -1
  31. package/build/components/block-popover/index.js +2 -2
  32. package/build/components/block-popover/index.js.map +1 -1
  33. package/build/components/block-removal-warning-modal/index.js +2 -0
  34. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  35. package/build/components/block-switcher/index.js +1 -1
  36. package/build/components/block-switcher/index.js.map +1 -1
  37. package/build/components/block-switcher/pattern-transformations-menu.js +11 -12
  38. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  39. package/build/components/block-switcher/preview-block-popover.js +20 -17
  40. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  41. package/build/components/block-toolbar/shuffle.js +5 -2
  42. package/build/components/block-toolbar/shuffle.js.map +1 -1
  43. package/build/components/block-tools/block-selection-button.js +1 -2
  44. package/build/components/block-tools/block-selection-button.js.map +1 -1
  45. package/build/components/block-tools/index.js +1 -1
  46. package/build/components/block-tools/index.js.map +1 -1
  47. package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  48. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  49. package/build/components/block-tools/use-show-block-tools.js +7 -8
  50. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  51. package/build/components/block-tools/zoom-out-mode-inserter-button.js +45 -0
  52. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  53. package/build/components/block-tools/zoom-out-mode-inserters.js +35 -36
  54. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  55. package/build/components/block-tools/zoom-out-popover.js +2 -1
  56. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  57. package/build/components/block-tools/zoom-out-toolbar.js +1 -2
  58. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  59. package/build/components/child-layout-control/index.js +3 -1
  60. package/build/components/child-layout-control/index.js.map +1 -1
  61. package/build/components/date-format-picker/index.js +2 -11
  62. package/build/components/date-format-picker/index.js.map +1 -1
  63. package/build/components/default-block-appender/index.js +7 -4
  64. package/build/components/default-block-appender/index.js.map +1 -1
  65. package/build/components/dimensions-tool/scale-tool.js +1 -0
  66. package/build/components/dimensions-tool/scale-tool.js.map +1 -1
  67. package/build/components/font-appearance-control/index.js +2 -7
  68. package/build/components/font-appearance-control/index.js.map +1 -1
  69. package/build/components/font-family/index.js +12 -0
  70. package/build/components/font-family/index.js.map +1 -1
  71. package/build/components/global-styles/background-panel.js +63 -52
  72. package/build/components/global-styles/background-panel.js.map +1 -1
  73. package/build/components/global-styles/hooks.js +5 -1
  74. package/build/components/global-styles/hooks.js.map +1 -1
  75. package/build/components/global-styles/image-settings-panel.js +1 -0
  76. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  77. package/build/components/global-styles/theme-file-uri-utils.js +0 -59
  78. package/build/components/global-styles/theme-file-uri-utils.js.map +1 -1
  79. package/build/components/global-styles/typography-panel.js +26 -44
  80. package/build/components/global-styles/typography-panel.js.map +1 -1
  81. package/build/components/global-styles/typography-utils.js +78 -7
  82. package/build/components/global-styles/typography-utils.js.map +1 -1
  83. package/build/components/global-styles/use-global-styles-output.js +82 -44
  84. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  85. package/build/components/global-styles/utils.js +96 -0
  86. package/build/components/global-styles/utils.js.map +1 -1
  87. package/build/components/grid/grid-item-movers.js +93 -44
  88. package/build/components/grid/grid-item-movers.js.map +1 -1
  89. package/build/components/grid/grid-item-resizer.js +14 -15
  90. package/build/components/grid/grid-item-resizer.js.map +1 -1
  91. package/build/components/grid/grid-visualizer.js +2 -2
  92. package/build/components/grid/grid-visualizer.js.map +1 -1
  93. package/build/components/grid/use-grid-layout-sync.js +93 -45
  94. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  95. package/build/components/iframe/index.js +4 -8
  96. package/build/components/iframe/index.js.map +1 -1
  97. package/build/components/index.js +1 -9
  98. package/build/components/index.js.map +1 -1
  99. package/build/components/inner-blocks/index.js +1 -1
  100. package/build/components/inner-blocks/index.js.map +1 -1
  101. package/build/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  102. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  103. package/build/components/inserter/category-tabs/index.js +29 -2
  104. package/build/components/inserter/category-tabs/index.js.map +1 -1
  105. package/build/components/inserter/media-tab/media-panel.js +1 -0
  106. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  107. package/build/components/inserter/menu.js +3 -3
  108. package/build/components/inserter/menu.js.map +1 -1
  109. package/build/components/inserter/preview-panel.js +20 -3
  110. package/build/components/inserter/preview-panel.js.map +1 -1
  111. package/build/components/inserter-draggable-blocks/index.js +10 -3
  112. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  113. package/build/components/inspector-controls-tabs/settings-tab.js +1 -2
  114. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  115. package/build/components/line-height-control/index.js +0 -15
  116. package/build/components/line-height-control/index.js.map +1 -1
  117. package/build/components/link-control/search-input.js +0 -1
  118. package/build/components/link-control/search-input.js.map +1 -1
  119. package/build/components/list-view/block-select-button.js +2 -6
  120. package/build/components/list-view/block-select-button.js.map +1 -1
  121. package/build/components/list-view/block.js +2 -2
  122. package/build/components/list-view/block.js.map +1 -1
  123. package/build/components/list-view/utils.js +3 -1
  124. package/build/components/list-view/utils.js.map +1 -1
  125. package/build/components/media-replace-flow/index.js +3 -1
  126. package/build/components/media-replace-flow/index.js.map +1 -1
  127. package/build/components/resolution-tool/index.js +1 -0
  128. package/build/components/resolution-tool/index.js.map +1 -1
  129. package/build/components/rich-text/format-toolbar/index.js +1 -1
  130. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  131. package/build/components/rich-text/index.js +1 -1
  132. package/build/components/rich-text/index.js.map +1 -1
  133. package/build/components/skip-to-selected-block/index.js +4 -2
  134. package/build/components/skip-to-selected-block/index.js.map +1 -1
  135. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  136. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  137. package/build/components/url-input/button.js +0 -1
  138. package/build/components/url-input/button.js.map +1 -1
  139. package/build/components/url-input/index.js +1 -11
  140. package/build/components/url-input/index.js.map +1 -1
  141. package/build/components/url-popover/image-url-input-ui.js +3 -3
  142. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  143. package/build/components/url-popover/link-editor.js +0 -1
  144. package/build/components/url-popover/link-editor.js.map +1 -1
  145. package/build/components/use-block-drop-zone/index.js +30 -4
  146. package/build/components/use-block-drop-zone/index.js.map +1 -1
  147. package/build/components/use-on-block-drop/index.js +3 -6
  148. package/build/components/use-on-block-drop/index.js.map +1 -1
  149. package/build/components/use-resize-canvas/index.js +1 -3
  150. package/build/components/use-resize-canvas/index.js.map +1 -1
  151. package/build/components/use-settings/index.js +2 -1
  152. package/build/components/use-settings/index.js.map +1 -1
  153. package/build/hooks/block-bindings.js +248 -36
  154. package/build/hooks/block-bindings.js.map +1 -1
  155. package/build/hooks/block-hooks.js +1 -0
  156. package/build/hooks/block-hooks.js.map +1 -1
  157. package/build/hooks/block-style-variation.js +2 -2
  158. package/build/hooks/block-style-variation.js.map +1 -1
  159. package/build/hooks/contrast-checker.js +6 -6
  160. package/build/hooks/contrast-checker.js.map +1 -1
  161. package/build/hooks/duotone.js +3 -3
  162. package/build/hooks/duotone.js.map +1 -1
  163. package/build/hooks/grid-visualizer.js +5 -8
  164. package/build/hooks/grid-visualizer.js.map +1 -1
  165. package/build/hooks/index.js +7 -1
  166. package/build/hooks/index.js.map +1 -1
  167. package/build/hooks/layout-child.js +9 -2
  168. package/build/hooks/layout-child.js.map +1 -1
  169. package/build/hooks/line-height.js +0 -1
  170. package/build/hooks/line-height.js.map +1 -1
  171. package/build/hooks/position.js +3 -7
  172. package/build/hooks/position.js.map +1 -1
  173. package/build/hooks/spacing-visualizer.js +1 -1
  174. package/build/hooks/spacing-visualizer.js.map +1 -1
  175. package/build/hooks/use-bindings-attributes.js +85 -50
  176. package/build/hooks/use-bindings-attributes.js.map +1 -1
  177. package/build/hooks/use-zoom-out.js +1 -1
  178. package/build/hooks/use-zoom-out.js.map +1 -1
  179. package/build/hooks/utils.js +20 -0
  180. package/build/hooks/utils.js.map +1 -1
  181. package/build/index.js +7 -0
  182. package/build/index.js.map +1 -1
  183. package/build/layouts/constrained.js +6 -2
  184. package/build/layouts/constrained.js.map +1 -1
  185. package/build/layouts/grid.js +2 -0
  186. package/build/layouts/grid.js.map +1 -1
  187. package/build/private-apis.js +0 -4
  188. package/build/private-apis.js.map +1 -1
  189. package/build/store/actions.js +27 -2
  190. package/build/store/actions.js.map +1 -1
  191. package/build/store/reducer.js +19 -1
  192. package/build/store/reducer.js.map +1 -1
  193. package/build/store/selectors.js +17 -5
  194. package/build/store/selectors.js.map +1 -1
  195. package/build/utils/get-editor-region.js +1 -1
  196. package/build/utils/get-editor-region.js.map +1 -1
  197. package/build/utils/get-px-from-css-unit.js +1 -1
  198. package/build/utils/get-px-from-css-unit.js.map +1 -1
  199. package/build-module/components/alignment-control/ui.js +2 -2
  200. package/build-module/components/alignment-control/ui.js.map +1 -1
  201. package/build-module/components/block-alignment-control/ui.js +1 -1
  202. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  203. package/build-module/components/block-alignment-control/ui.native.js +1 -1
  204. package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
  205. package/build-module/components/block-breadcrumb/index.js +4 -2
  206. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  207. package/build-module/components/block-draggable/index.js +3 -3
  208. package/build-module/components/block-draggable/index.js.map +1 -1
  209. package/build-module/components/block-inspector/index.js +6 -3
  210. package/build-module/components/block-inspector/index.js.map +1 -1
  211. package/build-module/components/block-list/use-block-props/index.js +3 -1
  212. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  213. package/build-module/components/block-list/use-block-props/use-block-refs.js +27 -30
  214. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  215. package/build-module/components/block-list/use-block-props/use-is-hovered.js +26 -9
  216. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  217. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  218. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  219. package/build-module/components/block-lock/modal.js +2 -0
  220. package/build-module/components/block-lock/modal.js.map +1 -1
  221. package/build-module/components/block-mover/index.js +1 -2
  222. package/build-module/components/block-mover/index.js.map +1 -1
  223. package/build-module/components/block-popover/cover.js +1 -1
  224. package/build-module/components/block-popover/cover.js.map +1 -1
  225. package/build-module/components/block-popover/inbetween.js +1 -1
  226. package/build-module/components/block-popover/inbetween.js.map +1 -1
  227. package/build-module/components/block-popover/index.js +1 -1
  228. package/build-module/components/block-popover/index.js.map +1 -1
  229. package/build-module/components/block-removal-warning-modal/index.js +2 -0
  230. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  231. package/build-module/components/block-switcher/index.js +1 -1
  232. package/build-module/components/block-switcher/index.js.map +1 -1
  233. package/build-module/components/block-switcher/pattern-transformations-menu.js +12 -13
  234. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  235. package/build-module/components/block-switcher/preview-block-popover.js +20 -17
  236. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  237. package/build-module/components/block-toolbar/shuffle.js +5 -2
  238. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  239. package/build-module/components/block-tools/block-selection-button.js +1 -2
  240. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  241. package/build-module/components/block-tools/index.js +1 -1
  242. package/build-module/components/block-tools/index.js.map +1 -1
  243. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  244. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  245. package/build-module/components/block-tools/use-show-block-tools.js +7 -8
  246. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  247. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +37 -0
  248. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  249. package/build-module/components/block-tools/zoom-out-mode-inserters.js +37 -38
  250. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  251. package/build-module/components/block-tools/zoom-out-popover.js +2 -1
  252. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  253. package/build-module/components/block-tools/zoom-out-toolbar.js +1 -2
  254. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  255. package/build-module/components/child-layout-control/index.js +3 -1
  256. package/build-module/components/child-layout-control/index.js.map +1 -1
  257. package/build-module/components/date-format-picker/index.js +4 -12
  258. package/build-module/components/date-format-picker/index.js.map +1 -1
  259. package/build-module/components/default-block-appender/index.js +7 -4
  260. package/build-module/components/default-block-appender/index.js.map +1 -1
  261. package/build-module/components/dimensions-tool/scale-tool.js +1 -0
  262. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
  263. package/build-module/components/font-appearance-control/index.js +3 -6
  264. package/build-module/components/font-appearance-control/index.js.map +1 -1
  265. package/build-module/components/font-family/index.js +11 -0
  266. package/build-module/components/font-family/index.js.map +1 -1
  267. package/build-module/components/global-styles/background-panel.js +63 -52
  268. package/build-module/components/global-styles/background-panel.js.map +1 -1
  269. package/build-module/components/global-styles/hooks.js +5 -1
  270. package/build-module/components/global-styles/hooks.js.map +1 -1
  271. package/build-module/components/global-styles/image-settings-panel.js +1 -0
  272. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  273. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -58
  274. package/build-module/components/global-styles/theme-file-uri-utils.js.map +1 -1
  275. package/build-module/components/global-styles/typography-panel.js +27 -45
  276. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  277. package/build-module/components/global-styles/typography-utils.js +76 -7
  278. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  279. package/build-module/components/global-styles/use-global-styles-output.js +81 -43
  280. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  281. package/build-module/components/global-styles/utils.js +92 -0
  282. package/build-module/components/global-styles/utils.js.map +1 -1
  283. package/build-module/components/grid/grid-item-movers.js +96 -46
  284. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  285. package/build-module/components/grid/grid-item-resizer.js +14 -15
  286. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  287. package/build-module/components/grid/grid-visualizer.js +2 -2
  288. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  289. package/build-module/components/grid/use-grid-layout-sync.js +94 -46
  290. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  291. package/build-module/components/iframe/index.js +4 -8
  292. package/build-module/components/iframe/index.js.map +1 -1
  293. package/build-module/components/index.js +0 -5
  294. package/build-module/components/index.js.map +1 -1
  295. package/build-module/components/inner-blocks/index.js +1 -1
  296. package/build-module/components/inner-blocks/index.js.map +1 -1
  297. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  298. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  299. package/build-module/components/inserter/category-tabs/index.js +30 -3
  300. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  301. package/build-module/components/inserter/media-tab/media-panel.js +1 -0
  302. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  303. package/build-module/components/inserter/menu.js +3 -3
  304. package/build-module/components/inserter/menu.js.map +1 -1
  305. package/build-module/components/inserter/preview-panel.js +20 -3
  306. package/build-module/components/inserter/preview-panel.js.map +1 -1
  307. package/build-module/components/inserter-draggable-blocks/index.js +10 -3
  308. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  309. package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -2
  310. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  311. package/build-module/components/line-height-control/index.js +0 -14
  312. package/build-module/components/line-height-control/index.js.map +1 -1
  313. package/build-module/components/link-control/search-input.js +0 -1
  314. package/build-module/components/link-control/search-input.js.map +1 -1
  315. package/build-module/components/list-view/block-select-button.js +3 -7
  316. package/build-module/components/list-view/block-select-button.js.map +1 -1
  317. package/build-module/components/list-view/block.js +2 -2
  318. package/build-module/components/list-view/block.js.map +1 -1
  319. package/build-module/components/list-view/utils.js +3 -1
  320. package/build-module/components/list-view/utils.js.map +1 -1
  321. package/build-module/components/media-replace-flow/index.js +3 -1
  322. package/build-module/components/media-replace-flow/index.js.map +1 -1
  323. package/build-module/components/resolution-tool/index.js +1 -0
  324. package/build-module/components/resolution-tool/index.js.map +1 -1
  325. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  326. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  327. package/build-module/components/rich-text/index.js +1 -1
  328. package/build-module/components/rich-text/index.js.map +1 -1
  329. package/build-module/components/skip-to-selected-block/index.js +5 -3
  330. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  331. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  332. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  333. package/build-module/components/url-input/button.js +0 -1
  334. package/build-module/components/url-input/button.js.map +1 -1
  335. package/build-module/components/url-input/index.js +1 -11
  336. package/build-module/components/url-input/index.js.map +1 -1
  337. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  338. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  339. package/build-module/components/url-popover/link-editor.js +0 -1
  340. package/build-module/components/url-popover/link-editor.js.map +1 -1
  341. package/build-module/components/use-block-drop-zone/index.js +30 -4
  342. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  343. package/build-module/components/use-on-block-drop/index.js +3 -6
  344. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  345. package/build-module/components/use-resize-canvas/index.js +1 -3
  346. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  347. package/build-module/components/use-settings/index.js +2 -1
  348. package/build-module/components/use-settings/index.js.map +1 -1
  349. package/build-module/hooks/block-bindings.js +253 -40
  350. package/build-module/hooks/block-bindings.js.map +1 -1
  351. package/build-module/hooks/block-hooks.js +1 -0
  352. package/build-module/hooks/block-hooks.js.map +1 -1
  353. package/build-module/hooks/block-style-variation.js +3 -3
  354. package/build-module/hooks/block-style-variation.js.map +1 -1
  355. package/build-module/hooks/contrast-checker.js +7 -7
  356. package/build-module/hooks/contrast-checker.js.map +1 -1
  357. package/build-module/hooks/duotone.js +4 -4
  358. package/build-module/hooks/duotone.js.map +1 -1
  359. package/build-module/hooks/grid-visualizer.js +5 -8
  360. package/build-module/hooks/grid-visualizer.js.map +1 -1
  361. package/build-module/hooks/index.js +2 -1
  362. package/build-module/hooks/index.js.map +1 -1
  363. package/build-module/hooks/layout-child.js +9 -2
  364. package/build-module/hooks/layout-child.js.map +1 -1
  365. package/build-module/hooks/line-height.js +0 -1
  366. package/build-module/hooks/line-height.js.map +1 -1
  367. package/build-module/hooks/position.js +3 -7
  368. package/build-module/hooks/position.js.map +1 -1
  369. package/build-module/hooks/spacing-visualizer.js +1 -1
  370. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  371. package/build-module/hooks/use-bindings-attributes.js +84 -51
  372. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  373. package/build-module/hooks/use-zoom-out.js +1 -1
  374. package/build-module/hooks/use-zoom-out.js.map +1 -1
  375. package/build-module/hooks/utils.js +19 -0
  376. package/build-module/hooks/utils.js.map +1 -1
  377. package/build-module/index.js +1 -1
  378. package/build-module/index.js.map +1 -1
  379. package/build-module/layouts/constrained.js +6 -2
  380. package/build-module/layouts/constrained.js.map +1 -1
  381. package/build-module/layouts/grid.js +2 -0
  382. package/build-module/layouts/grid.js.map +1 -1
  383. package/build-module/private-apis.js +1 -5
  384. package/build-module/private-apis.js.map +1 -1
  385. package/build-module/store/actions.js +24 -1
  386. package/build-module/store/actions.js.map +1 -1
  387. package/build-module/store/reducer.js +18 -1
  388. package/build-module/store/reducer.js.map +1 -1
  389. package/build-module/store/selectors.js +14 -4
  390. package/build-module/store/selectors.js.map +1 -1
  391. package/build-module/utils/get-editor-region.js +1 -1
  392. package/build-module/utils/get-editor-region.js.map +1 -1
  393. package/build-module/utils/get-px-from-css-unit.js +1 -1
  394. package/build-module/utils/get-px-from-css-unit.js.map +1 -1
  395. package/build-style/content-rtl.css +11 -18
  396. package/build-style/content.css +11 -18
  397. package/build-style/default-editor-styles-rtl.css +3 -0
  398. package/build-style/default-editor-styles.css +3 -0
  399. package/build-style/style-rtl.css +242 -136
  400. package/build-style/style.css +242 -136
  401. package/build-types/components/block-context/index.d.ts +2 -2
  402. package/build-types/components/block-context/index.d.ts.map +1 -1
  403. package/build-types/utils/dom.d.ts.map +1 -1
  404. package/package.json +31 -31
  405. package/src/autocompleters/style.scss +4 -0
  406. package/src/components/alignment-control/ui.js +2 -2
  407. package/src/components/block-alignment-control/ui.js +1 -1
  408. package/src/components/block-alignment-control/ui.native.js +1 -1
  409. package/src/components/block-breadcrumb/index.js +4 -2
  410. package/src/components/block-canvas/style.scss +1 -0
  411. package/src/components/block-context/README.md +4 -4
  412. package/src/components/block-draggable/index.js +3 -3
  413. package/src/components/block-inspector/index.js +8 -4
  414. package/src/components/block-list/content.scss +2 -16
  415. package/src/components/block-list/use-block-props/index.js +1 -1
  416. package/src/components/block-list/use-block-props/use-block-refs.js +30 -30
  417. package/src/components/block-list/use-block-props/use-is-hovered.js +26 -11
  418. package/src/components/block-list/use-in-between-inserter.js +5 -1
  419. package/src/components/block-lock/modal.js +10 -2
  420. package/src/components/block-lock/style.scss +4 -8
  421. package/src/components/block-mover/index.js +5 -2
  422. package/src/components/block-patterns-paging/style.scss +0 -23
  423. package/src/components/block-popover/cover.js +1 -1
  424. package/src/components/block-popover/inbetween.js +1 -1
  425. package/src/components/block-popover/index.js +1 -1
  426. package/src/components/block-removal-warning-modal/index.js +10 -2
  427. package/src/components/block-switcher/index.js +1 -1
  428. package/src/components/block-switcher/pattern-transformations-menu.js +17 -15
  429. package/src/components/block-switcher/preview-block-popover.js +20 -14
  430. package/src/components/block-switcher/style.scss +8 -17
  431. package/src/components/block-toolbar/shuffle.js +8 -1
  432. package/src/components/block-tools/block-selection-button.js +1 -2
  433. package/src/components/block-tools/index.js +5 -6
  434. package/src/components/block-tools/style.scss +8 -0
  435. package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  436. package/src/components/block-tools/use-show-block-tools.js +12 -9
  437. package/src/components/block-tools/zoom-out-mode-inserter-button.js +47 -0
  438. package/src/components/block-tools/zoom-out-mode-inserters.js +48 -42
  439. package/src/components/block-tools/zoom-out-popover.js +1 -0
  440. package/src/components/block-tools/zoom-out-toolbar.js +1 -2
  441. package/src/components/button-block-appender/content.scss +1 -1
  442. package/src/components/child-layout-control/index.js +2 -0
  443. package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
  444. package/src/components/colors-gradients/test/control.js +3 -2
  445. package/src/components/date-format-picker/index.js +2 -11
  446. package/src/components/default-block-appender/index.js +11 -4
  447. package/src/components/dimensions-tool/scale-tool.js +1 -0
  448. package/src/components/font-appearance-control/index.js +1 -5
  449. package/src/components/font-family/README.md +8 -0
  450. package/src/components/font-family/index.js +16 -0
  451. package/src/components/font-family/stories/index.story.js +54 -0
  452. package/src/components/global-styles/background-panel.js +90 -62
  453. package/src/components/global-styles/hooks.js +5 -1
  454. package/src/components/global-styles/image-settings-panel.js +1 -0
  455. package/src/components/global-styles/style.scss +11 -9
  456. package/src/components/global-styles/test/theme-file-uri-utils.js +1 -26
  457. package/src/components/global-styles/test/typography-utils.js +325 -0
  458. package/src/components/global-styles/test/use-global-styles-output.js +52 -5
  459. package/src/components/global-styles/test/utils.js +120 -0
  460. package/src/components/global-styles/theme-file-uri-utils.js +0 -59
  461. package/src/components/global-styles/typography-panel.js +36 -45
  462. package/src/components/global-styles/typography-utils.js +103 -7
  463. package/src/components/global-styles/use-global-styles-output.js +89 -50
  464. package/src/components/global-styles/utils.js +112 -0
  465. package/src/components/grid/grid-item-movers.js +141 -69
  466. package/src/components/grid/grid-item-resizer.js +11 -17
  467. package/src/components/grid/grid-visualizer.js +2 -2
  468. package/src/components/grid/style.scss +164 -0
  469. package/src/components/grid/use-grid-layout-sync.js +133 -40
  470. package/src/components/iframe/content.scss +3 -3
  471. package/src/components/iframe/index.js +3 -7
  472. package/src/components/index.js +0 -5
  473. package/src/components/inner-blocks/index.js +4 -1
  474. package/src/components/inserter/block-patterns-tab/patterns-filter.js +40 -44
  475. package/src/components/inserter/category-tabs/index.js +35 -2
  476. package/src/components/inserter/media-tab/media-panel.js +1 -0
  477. package/src/components/inserter/menu.js +3 -3
  478. package/src/components/inserter/preview-panel.js +27 -4
  479. package/src/components/inserter/style.scss +66 -47
  480. package/src/components/inserter-draggable-blocks/index.js +11 -3
  481. package/src/components/inspector-controls/README.md +5 -0
  482. package/src/components/inspector-controls-tabs/settings-tab.js +0 -2
  483. package/src/components/inspector-controls-tabs/style.scss +0 -21
  484. package/src/components/line-height-control/README.md +0 -8
  485. package/src/components/line-height-control/index.js +1 -21
  486. package/src/components/line-height-control/stories/index.story.js +0 -1
  487. package/src/components/line-height-control/test/index.js +1 -7
  488. package/src/components/link-control/search-input.js +0 -1
  489. package/src/components/list-view/block-select-button.js +3 -13
  490. package/src/components/list-view/block.js +10 -3
  491. package/src/components/list-view/style.scss +2 -1
  492. package/src/components/list-view/utils.js +13 -2
  493. package/src/components/media-replace-flow/README.md +7 -0
  494. package/src/components/media-replace-flow/index.js +3 -1
  495. package/src/components/resolution-tool/index.js +1 -0
  496. package/src/components/responsive-block-control/test/index.js +5 -1
  497. package/src/components/rich-text/format-toolbar/index.js +1 -1
  498. package/src/components/rich-text/index.js +1 -1
  499. package/src/components/skip-to-selected-block/index.js +5 -3
  500. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +6 -7
  501. package/src/components/tabbed-sidebar/style.scss +1 -19
  502. package/src/components/url-input/README.md +0 -5
  503. package/src/components/url-input/button.js +0 -1
  504. package/src/components/url-input/index.js +1 -15
  505. package/src/components/url-popover/image-url-input-ui.js +3 -3
  506. package/src/components/url-popover/link-editor.js +0 -1
  507. package/src/components/url-popover/style.scss +1 -0
  508. package/src/components/use-block-drop-zone/index.js +66 -14
  509. package/src/components/use-on-block-drop/index.js +1 -9
  510. package/src/components/use-resize-canvas/index.js +1 -3
  511. package/src/components/use-settings/index.js +2 -1
  512. package/src/hooks/block-bindings.js +303 -52
  513. package/src/hooks/block-bindings.scss +13 -2
  514. package/src/hooks/block-hooks.js +1 -0
  515. package/src/hooks/block-hooks.scss +1 -0
  516. package/src/hooks/block-style-variation.js +3 -3
  517. package/src/hooks/contrast-checker.js +7 -7
  518. package/src/hooks/duotone.js +4 -4
  519. package/src/hooks/grid-visualizer.js +5 -7
  520. package/src/hooks/index.js +2 -1
  521. package/src/hooks/layout-child.js +12 -3
  522. package/src/hooks/line-height.js +0 -1
  523. package/src/hooks/position.js +3 -13
  524. package/src/hooks/spacing-visualizer.js +1 -1
  525. package/src/hooks/use-bindings-attributes.js +93 -59
  526. package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
  527. package/src/hooks/use-zoom-out.js +1 -1
  528. package/src/hooks/utils.js +14 -1
  529. package/src/index.js +1 -0
  530. package/src/layouts/constrained.js +10 -2
  531. package/src/layouts/grid.js +2 -0
  532. package/src/private-apis.js +1 -8
  533. package/src/store/actions.js +28 -5
  534. package/src/store/reducer.js +18 -0
  535. package/src/store/selectors.js +14 -4
  536. package/src/style.scss +1 -1
  537. package/src/utils/get-editor-region.js +1 -1
  538. package/src/utils/get-px-from-css-unit.js +1 -1
  539. package/tsconfig.tsbuildinfo +1 -1
  540. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
  541. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  542. package/build/components/inserter/reusable-block-rename-hint.js +0 -71
  543. package/build/components/inserter/reusable-block-rename-hint.js.map +0 -1
  544. package/build/components/inspector-controls-tabs/settings-tab-hint.js +0 -53
  545. package/build/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  546. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
  547. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  548. package/build-module/components/inserter/reusable-block-rename-hint.js +0 -64
  549. package/build-module/components/inserter/reusable-block-rename-hint.js.map +0 -1
  550. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js +0 -47
  551. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  552. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
  553. package/src/components/inserter/reusable-block-rename-hint.js +0 -69
  554. package/src/components/inspector-controls-tabs/settings-tab-hint.js +0 -52
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useState } from '@wordpress/element';
6
- import { useInstanceId } from '@wordpress/compose';
6
+ import { useInstanceId, useViewportMatch } from '@wordpress/compose';
7
7
  import { chevronRight } from '@wordpress/icons';
8
8
 
9
9
  import {
@@ -34,6 +34,7 @@ function PatternTransformationsMenu( {
34
34
  } ) {
35
35
  const [ showTransforms, setShowTransforms ] = useState( false );
36
36
  const patterns = useTransformedPatterns( statePatterns, blocks );
37
+
37
38
  if ( ! patterns.length ) {
38
39
  return null;
39
40
  }
@@ -60,21 +61,22 @@ function PatternTransformationsMenu( {
60
61
  }
61
62
 
62
63
  function PreviewPatternsPopover( { patterns, onSelect } ) {
64
+ const isMobile = useViewportMatch( 'medium', '<' );
65
+
63
66
  return (
64
- <div className="block-editor-block-switcher__popover__preview__parent">
65
- <div className="block-editor-block-switcher__popover__preview__container">
66
- <Popover
67
- className="block-editor-block-switcher__preview__popover"
68
- position="bottom right"
69
- >
70
- <div className="block-editor-block-switcher__preview is-pattern-list-preview">
71
- <BlockPatternsList
72
- patterns={ patterns }
73
- onSelect={ onSelect }
74
- />
75
- </div>
76
- </Popover>
77
- </div>
67
+ <div className="block-editor-block-switcher__popover-preview-container">
68
+ <Popover
69
+ className="block-editor-block-switcher__popover-preview"
70
+ placement={ isMobile ? 'bottom' : 'right-start' }
71
+ offset={ 16 }
72
+ >
73
+ <div className="block-editor-block-switcher__preview is-pattern-list-preview">
74
+ <BlockPatternsList
75
+ patterns={ patterns }
76
+ onSelect={ onSelect }
77
+ />
78
+ </div>
79
+ </Popover>
78
80
  </div>
79
81
  );
80
82
  }
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { Popover } from '@wordpress/components';
6
+ import { useViewportMatch } from '@wordpress/compose';
6
7
 
7
8
  /**
8
9
  * Internal dependencies
@@ -10,22 +11,27 @@ import { Popover } from '@wordpress/components';
10
11
  import BlockPreview from '../block-preview';
11
12
 
12
13
  export default function PreviewBlockPopover( { blocks } ) {
14
+ const isMobile = useViewportMatch( 'medium', '<' );
15
+
16
+ if ( isMobile ) {
17
+ return null;
18
+ }
19
+
13
20
  return (
14
- <div className="block-editor-block-switcher__popover__preview__parent">
15
- <div className="block-editor-block-switcher__popover__preview__container">
16
- <Popover
17
- className="block-editor-block-switcher__preview__popover"
18
- placement="bottom-start"
19
- focusOnMount={ false }
20
- >
21
- <div className="block-editor-block-switcher__preview">
22
- <div className="block-editor-block-switcher__preview-title">
23
- { __( 'Preview' ) }
24
- </div>
25
- <BlockPreview viewportWidth={ 500 } blocks={ blocks } />
21
+ <div className="block-editor-block-switcher__popover-preview-container">
22
+ <Popover
23
+ className="block-editor-block-switcher__popover-preview"
24
+ placement="right-start"
25
+ focusOnMount={ false }
26
+ offset={ 16 }
27
+ >
28
+ <div className="block-editor-block-switcher__preview">
29
+ <div className="block-editor-block-switcher__preview-title">
30
+ { __( 'Preview' ) }
26
31
  </div>
27
- </Popover>
28
- </div>
32
+ <BlockPreview viewportWidth={ 500 } blocks={ blocks } />
33
+ </div>
34
+ </Popover>
29
35
  </div>
30
36
  );
31
37
  }
@@ -84,27 +84,18 @@
84
84
  min-width: 300px;
85
85
  }
86
86
 
87
- .block-editor-block-switcher__popover__preview__parent {
88
- .block-editor-block-switcher__popover__preview__container {
89
- position: absolute;
90
- top: -$grid-unit-15;
91
- left: calc(100% + #{$grid-unit-20});
92
- }
87
+ .block-editor-block-switcher__popover-preview-container {
88
+ left: 0;
89
+ position: absolute;
90
+ top: -$border-width;
91
+ width: 100%;
92
+ bottom: 0;
93
+ pointer-events: none;
93
94
  }
94
95
 
95
- .block-editor-block-switcher__preview__popover {
96
- display: none;
96
+ .block-editor-block-switcher__popover-preview {
97
97
  overflow: hidden;
98
98
 
99
- // Position correctly. Needs specificity.
100
- &.components-popover {
101
- margin-top: $grid-unit-15 - $border-width;
102
- }
103
-
104
- @include break-medium() {
105
- display: block;
106
- }
107
-
108
99
  .components-popover__content {
109
100
  width: 300px;
110
101
  border: $border-width solid $gray-900;
@@ -54,10 +54,16 @@ export default function Shuffle( { clientId, as = Container } ) {
54
54
  return EMPTY_ARRAY;
55
55
  }
56
56
  return patterns.filter( ( pattern ) => {
57
+ const isCorePattern =
58
+ pattern.source === 'core' ||
59
+ ( pattern.source?.startsWith( 'pattern-directory' ) &&
60
+ pattern.source !== 'pattern-directory/theme' );
57
61
  return (
58
62
  // Check if the pattern has only one top level block,
59
63
  // otherwise we may shuffle to pattern that will not allow to continue shuffling.
60
64
  pattern.blocks.length === 1 &&
65
+ // We exclude the core patterns and pattern directory patterns that are not theme patterns.
66
+ ! isCorePattern &&
61
67
  pattern.categories?.some( ( category ) => {
62
68
  return categories.includes( category );
63
69
  } ) &&
@@ -66,7 +72,8 @@ export default function Shuffle( { clientId, as = Container } ) {
66
72
  );
67
73
  } );
68
74
  }, [ categories, patterns ] );
69
- if ( sameCategoryPatternsWithSingleWrapper.length === 0 ) {
75
+
76
+ if ( sameCategoryPatternsWithSingleWrapper.length < 2 ) {
70
77
  return null;
71
78
  }
72
79
 
@@ -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
  );
@@ -285,3 +285,11 @@
285
285
  border: none;
286
286
  }
287
287
  }
288
+
289
+ .block-editor-block-tools__zoom-out-mode-inserter-button {
290
+ visibility: hidden;
291
+
292
+ &.is-visible {
293
+ visibility: visible;
294
+ }
295
+ }
@@ -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 = {
@@ -29,10 +29,11 @@ export function useShowBlockTools() {
29
29
  const clientId =
30
30
  getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();
31
31
 
32
- const block = getBlock( clientId ) || { name: '', attributes: {} };
32
+ const block = getBlock( clientId );
33
33
  const editorMode = __unstableGetEditorMode();
34
- const hasSelectedBlock = clientId && block?.name;
35
- const isEmptyDefaultBlock = isUnmodifiedDefaultBlock( block );
34
+ const hasSelectedBlock = !! clientId && !! block;
35
+ const isEmptyDefaultBlock =
36
+ hasSelectedBlock && isUnmodifiedDefaultBlock( block );
36
37
  const _showEmptyBlockSideInserter =
37
38
  clientId &&
38
39
  ! isTyping() &&
@@ -43,8 +44,14 @@ export function useShowBlockTools() {
43
44
  ! hasMultiSelection() &&
44
45
  editorMode === 'navigation';
45
46
 
47
+ const isZoomOut = editorMode === 'zoom-out';
48
+ const _showZoomOutToolbar =
49
+ isZoomOut &&
50
+ block?.attributes?.align === 'full' &&
51
+ ! _showEmptyBlockSideInserter &&
52
+ ! maybeShowBreadcrumb;
46
53
  const _showBlockToolbarPopover =
47
- editorMode !== 'zoom-out' &&
54
+ ! _showZoomOutToolbar &&
48
55
  ! getSettings().hasFixedToolbar &&
49
56
  ! _showEmptyBlockSideInserter &&
50
57
  hasSelectedBlock &&
@@ -56,11 +63,7 @@ export function useShowBlockTools() {
56
63
  showBreadcrumb:
57
64
  ! _showEmptyBlockSideInserter && maybeShowBreadcrumb,
58
65
  showBlockToolbarPopover: _showBlockToolbarPopover,
59
- showZoomOutToolbar:
60
- editorMode === 'zoom-out' &&
61
- ! _showEmptyBlockSideInserter &&
62
- ! maybeShowBreadcrumb &&
63
- ! _showBlockToolbarPopover,
66
+ showZoomOutToolbar: _showZoomOutToolbar,
64
67
  };
65
68
  }, [] );
66
69
  }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useState } from '@wordpress/element';
10
+ import { Button } from '@wordpress/components';
11
+ import { plus } from '@wordpress/icons';
12
+ import { _x } from '@wordpress/i18n';
13
+
14
+ function ZoomOutModeInserterButton( { isVisible, onClick } ) {
15
+ const [
16
+ zoomOutModeInserterButtonHovered,
17
+ setZoomOutModeInserterButtonHovered,
18
+ ] = useState( false );
19
+
20
+ return (
21
+ <Button
22
+ variant="primary"
23
+ icon={ plus }
24
+ size="compact"
25
+ className={ clsx(
26
+ 'block-editor-button-pattern-inserter__button',
27
+ 'block-editor-block-tools__zoom-out-mode-inserter-button',
28
+ {
29
+ 'is-visible': isVisible || zoomOutModeInserterButtonHovered,
30
+ }
31
+ ) }
32
+ onClick={ onClick }
33
+ onMouseOver={ () => {
34
+ setZoomOutModeInserterButtonHovered( true );
35
+ } }
36
+ onMouseOut={ () => {
37
+ setZoomOutModeInserterButtonHovered( false );
38
+ } }
39
+ label={ _x(
40
+ 'Add pattern',
41
+ 'Generic label for pattern inserter button'
42
+ ) }
43
+ />
44
+ );
45
+ }
46
+
47
+ export default ZoomOutModeInserterButton;
@@ -1,58 +1,53 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect } from '@wordpress/data';
5
- import { useEffect, useRef, useState } from '@wordpress/element';
6
- import { Button } from '@wordpress/components';
7
- import { plus } from '@wordpress/icons';
8
- import { _x } from '@wordpress/i18n';
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { useEffect, useState } from '@wordpress/element';
9
6
 
10
7
  /**
11
8
  * Internal dependencies
12
9
  */
13
10
  import BlockPopoverInbetween from '../block-popover/inbetween';
11
+ import ZoomOutModeInserterButton from './zoom-out-mode-inserter-button';
14
12
  import { store as blockEditorStore } from '../../store';
15
13
  import { unlock } from '../../lock-unlock';
16
14
 
17
15
  function ZoomOutModeInserters() {
18
16
  const [ isReady, setIsReady ] = useState( false );
19
17
  const {
18
+ hasSelection,
19
+ blockInsertionPoint,
20
20
  blockOrder,
21
- sectionRootClientId,
22
- insertionPoint,
21
+ blockInsertionPointVisible,
23
22
  setInserterIsOpened,
24
- hasSelection,
23
+ sectionRootClientId,
24
+ selectedBlockClientId,
25
+ hoveredBlockClientId,
25
26
  } = useSelect( ( select ) => {
26
- const { getSettings, getBlockOrder, getSelectionStart } =
27
- select( blockEditorStore );
27
+ const {
28
+ getSettings,
29
+ getBlockInsertionPoint,
30
+ getBlockOrder,
31
+ getSelectionStart,
32
+ getSelectedBlockClientId,
33
+ getHoveredBlockClientId,
34
+ isBlockInsertionPointVisible,
35
+ } = select( blockEditorStore );
28
36
  const { sectionRootClientId: root } = unlock( getSettings() );
29
- // To do: move ZoomOutModeInserters to core/editor.
30
- // Or we perhaps we should move the insertion point state to the
31
- // block-editor store. I'm not sure what it was ever moved to the editor
32
- // store, because all the inserter components all live in the
33
- // block-editor package.
34
- // eslint-disable-next-line @wordpress/data-no-store-string-literals
35
- const editor = select( 'core/editor' );
36
37
  return {
37
38
  hasSelection: !! getSelectionStart().clientId,
39
+ blockInsertionPoint: getBlockInsertionPoint(),
38
40
  blockOrder: getBlockOrder( root ),
39
- insertionPoint: unlock( editor ).getInsertionPoint(),
41
+ blockInsertionPointVisible: isBlockInsertionPointVisible(),
40
42
  sectionRootClientId: root,
41
43
  setInserterIsOpened:
42
44
  getSettings().__experimentalSetIsInserterOpened,
45
+ selectedBlockClientId: getSelectedBlockClientId(),
46
+ hoveredBlockClientId: getHoveredBlockClientId(),
43
47
  };
44
48
  }, [] );
45
49
 
46
- const isMounted = useRef( false );
47
-
48
- useEffect( () => {
49
- if ( ! isMounted.current ) {
50
- isMounted.current = true;
51
- return;
52
- }
53
- // reset insertion point when the block order changes
54
- setInserterIsOpened( true );
55
- }, [ blockOrder, setInserterIsOpened ] );
50
+ const { showInsertionPoint } = useDispatch( blockEditorStore );
56
51
 
57
52
  // Defer the initial rendering to avoid the jumps due to the animation.
58
53
  useEffect( () => {
@@ -64,18 +59,33 @@ function ZoomOutModeInserters() {
64
59
  };
65
60
  }, [] );
66
61
 
67
- if ( ! isReady || ! hasSelection ) {
62
+ if ( ! isReady ) {
68
63
  return null;
69
64
  }
70
65
 
71
66
  return [ undefined, ...blockOrder ].map( ( clientId, index ) => {
67
+ const shouldRenderInsertionPoint =
68
+ blockInsertionPointVisible && blockInsertionPoint.index === index;
69
+
70
+ const previousClientId = clientId;
71
+ const nextClientId = blockOrder[ index ];
72
+
73
+ const isSelected =
74
+ hasSelection &&
75
+ ( selectedBlockClientId === previousClientId ||
76
+ selectedBlockClientId === nextClientId );
77
+
78
+ const isHovered =
79
+ hoveredBlockClientId === previousClientId ||
80
+ hoveredBlockClientId === nextClientId;
81
+
72
82
  return (
73
83
  <BlockPopoverInbetween
74
84
  key={ index }
75
- previousClientId={ clientId }
76
- nextClientId={ blockOrder[ index ] }
85
+ previousClientId={ previousClientId }
86
+ nextClientId={ nextClientId }
77
87
  >
78
- { insertionPoint.insertionIndex === index && (
88
+ { shouldRenderInsertionPoint && (
79
89
  <div
80
90
  style={ {
81
91
  borderRadius: '0',
@@ -87,12 +97,9 @@ function ZoomOutModeInserters() {
87
97
  className="block-editor-block-list__insertion-point-indicator"
88
98
  />
89
99
  ) }
90
- { insertionPoint.insertionIndex !== index && (
91
- <Button
92
- variant="primary"
93
- icon={ plus }
94
- size="compact"
95
- className="block-editor-button-pattern-inserter__button"
100
+ { ! shouldRenderInsertionPoint && (
101
+ <ZoomOutModeInserterButton
102
+ isVisible={ isSelected || isHovered }
96
103
  onClick={ () => {
97
104
  setInserterIsOpened( {
98
105
  rootClientId: sectionRootClientId,
@@ -100,11 +107,10 @@ function ZoomOutModeInserters() {
100
107
  tab: 'patterns',
101
108
  category: 'all',
102
109
  } );
110
+ showInsertionPoint( sectionRootClientId, index, {
111
+ operation: 'insert',
112
+ } );
103
113
  } }
104
- label={ _x(
105
- 'Add pattern',
106
- 'Generic label for pattern inserter button'
107
- ) }
108
114
  />
109
115
  ) }
110
116
  </BlockPopoverInbetween>
@@ -28,6 +28,7 @@ export default function ZoomOutPopover( { clientId, __unstableContentRef } ) {
28
28
  ...popoverProps,
29
29
  placement: 'left-start',
30
30
  flip: false,
31
+ shift: true,
31
32
  };
32
33
 
33
34
  return (
@@ -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"
@@ -129,7 +128,7 @@ export default function ZoomOutToolbar( { clientId, rootClientId } ) {
129
128
  <ToolbarButton
130
129
  className="zoom-out-toolbar-button"
131
130
  icon={ trash }
132
- label="Delete"
131
+ label={ __( 'Delete' ) }
133
132
  onClick={ () => {
134
133
  removeBlock( clientId );
135
134
  } }
@@ -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);"
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen } from '@testing-library/react';
4
+ import { screen } from '@testing-library/react';
5
+ import { render } from '@ariakit/test/react';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -12,7 +13,7 @@ const noop = () => {};
12
13
 
13
14
  describe( 'ColorPaletteControl', () => {
14
15
  it( 'renders tabs if it is possible to select a color and a gradient rendering a color picker at the start', async () => {
15
- render(
16
+ await render(
16
17
  <ColorGradientControl
17
18
  label="Test Color Gradient"
18
19
  colorValue="#f00"
@@ -10,18 +10,9 @@ import {
10
10
  VisuallyHidden,
11
11
  ToggleControl,
12
12
  __experimentalVStack as VStack,
13
- privateApis as componentsPrivateApis,
13
+ CustomSelectControl,
14
14
  } from '@wordpress/components';
15
15
 
16
- /**
17
- * Internal dependencies
18
- */
19
- import { unlock } from '../../lock-unlock';
20
-
21
- const { CustomSelectControlV2Legacy: CustomSelectControl } = unlock(
22
- componentsPrivateApis
23
- );
24
-
25
16
  // So that we illustrate the different formats in the dropdown properly, show a date that is
26
17
  // somwhat recent, has a day greater than 12, and a month with more than three letters.
27
18
  const exampleDate = new Date();
@@ -126,7 +117,7 @@ function NonDefaultControls( { format, onChange } ) {
126
117
  name: __( 'Custom' ),
127
118
  className:
128
119
  'block-editor-date-format-picker__custom-format-select-control__custom-option',
129
- __experimentalHint: __( 'Enter your own date format' ),
120
+ hint: __( 'Enter your own date format' ),
130
121
  };
131
122
 
132
123
  const [ isCustom, setIsCustom ] = useState(
@@ -24,10 +24,14 @@ import { store as blockEditorStore } from '../../store';
24
24
  export const ZWNBSP = '\ufeff';
25
25
 
26
26
  export default function DefaultBlockAppender( { rootClientId } ) {
27
- const { showPrompt, isLocked, placeholder } = useSelect(
27
+ const { showPrompt, isLocked, placeholder, isManualGrid } = useSelect(
28
28
  ( select ) => {
29
- const { getBlockCount, getSettings, getTemplateLock } =
30
- select( blockEditorStore );
29
+ const {
30
+ getBlockCount,
31
+ getSettings,
32
+ getTemplateLock,
33
+ getBlockAttributes,
34
+ } = select( blockEditorStore );
31
35
 
32
36
  const isEmpty = ! getBlockCount( rootClientId );
33
37
  const { bodyPlaceholder } = getSettings();
@@ -36,6 +40,9 @@ export default function DefaultBlockAppender( { rootClientId } ) {
36
40
  showPrompt: isEmpty,
37
41
  isLocked: !! getTemplateLock( rootClientId ),
38
42
  placeholder: bodyPlaceholder,
43
+ isManualGrid:
44
+ getBlockAttributes( rootClientId )?.layout
45
+ ?.isManualPlacement,
39
46
  };
40
47
  },
41
48
  [ rootClientId ]
@@ -43,7 +50,7 @@ export default function DefaultBlockAppender( { rootClientId } ) {
43
50
 
44
51
  const { insertDefaultBlock, startTyping } = useDispatch( blockEditorStore );
45
52
 
46
- if ( isLocked ) {
53
+ if ( isLocked || isManualGrid ) {
47
54
  return null;
48
55
  }
49
56
 
@@ -105,6 +105,7 @@ export default function ScaleTool( {
105
105
  panelId={ panelId }
106
106
  >
107
107
  <ToggleGroupControl
108
+ __nextHasNoMarginBottom
108
109
  label={ __( 'Scale' ) }
109
110
  isBlock
110
111
  help={ scaleHelp[ displayValue ] }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { privateApis as componentsPrivateApis } from '@wordpress/components';
4
+ import { CustomSelectControl } from '@wordpress/components';
5
5
  import { useMemo } from '@wordpress/element';
6
6
  import { __, sprintf } from '@wordpress/i18n';
7
7
 
@@ -9,11 +9,7 @@ import { __, sprintf } from '@wordpress/i18n';
9
9
  * Internal dependencies
10
10
  */
11
11
  import { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';
12
- import { unlock } from '../../lock-unlock';
13
12
 
14
- const { CustomSelectControlV2Legacy: CustomSelectControl } = unlock(
15
- componentsPrivateApis
16
- );
17
13
  /**
18
14
  * Adjusts font appearance field label in case either font styles or weights
19
15
  * are disabled.
@@ -24,6 +24,7 @@ const MyFontFamilyControl = () => {
24
24
  onChange={ ( newFontFamily ) => {
25
25
  setFontFamily( newFontFamily );
26
26
  } }
27
+ __nextHasNoMarginBottom
27
28
  />
28
29
  );
29
30
  };
@@ -69,3 +70,10 @@ The current font family value.
69
70
  - Default: ''
70
71
 
71
72
  The rest of the props are passed down to the underlying `<SelectControl />` instance.
73
+
74
+ #### `__nextHasNoMarginBottom`
75
+
76
+ - **Type:** `boolean`
77
+ - **Default:** `false`
78
+
79
+ Start opting into the new margin-free styles that will become the default in a future version.