@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
@@ -7,6 +7,7 @@ import fastDeepEqual from 'fast-deep-equal/es6';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { useViewportMatch } from '@wordpress/compose';
10
+ import { getCSSValueFromRawStyle } from '@wordpress/style-engine';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -525,3 +526,92 @@ export function getBlockStyleVariationSelector( variation, blockSelector ) {
525
526
 
526
527
  return result.join( ',' );
527
528
  }
529
+
530
+ /**
531
+ * Looks up a theme file URI based on a relative path.
532
+ *
533
+ * @param {string} file A relative path.
534
+ * @param {Array<Object>} themeFileURIs A collection of absolute theme file URIs and their corresponding file paths.
535
+ * @return {string} A resolved theme file URI, if one is found in the themeFileURIs collection.
536
+ */
537
+ export function getResolvedThemeFilePath( file, themeFileURIs ) {
538
+ if ( ! file || ! themeFileURIs || ! Array.isArray( themeFileURIs ) ) {
539
+ return file;
540
+ }
541
+
542
+ const uri = themeFileURIs.find(
543
+ ( themeFileUri ) => themeFileUri?.name === file
544
+ );
545
+
546
+ if ( ! uri?.href ) {
547
+ return file;
548
+ }
549
+
550
+ return uri?.href;
551
+ }
552
+
553
+ /**
554
+ * Resolves ref values in theme JSON.
555
+ *
556
+ * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.
557
+ * @param {Object} tree A theme.json object.
558
+ * @return {*} The resolved value or incoming ruleValue.
559
+ */
560
+ export function getResolvedRefValue( ruleValue, tree ) {
561
+ if ( ! ruleValue || ! tree ) {
562
+ return ruleValue;
563
+ }
564
+
565
+ /*
566
+ * Where the rule value is an object with a 'ref' property pointing
567
+ * to a path, this converts that path into the value at that path.
568
+ * For example: { "ref": "style.color.background" } => "#fff".
569
+ */
570
+ if ( typeof ruleValue !== 'string' && ruleValue?.ref ) {
571
+ const refPath = ruleValue.ref.split( '.' );
572
+ const resolvedRuleValue = getCSSValueFromRawStyle(
573
+ getValueFromObjectPath( tree, refPath )
574
+ );
575
+
576
+ /*
577
+ * Presence of another ref indicates a reference to another dynamic value.
578
+ * Pointing to another dynamic value is not supported.
579
+ */
580
+ if ( resolvedRuleValue?.ref ) {
581
+ return undefined;
582
+ }
583
+
584
+ if ( ! resolvedRuleValue ) {
585
+ return ruleValue;
586
+ }
587
+
588
+ return resolvedRuleValue;
589
+ }
590
+ return ruleValue;
591
+ }
592
+
593
+ /**
594
+ * Resolves ref and relative path values in theme JSON.
595
+ *
596
+ * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.
597
+ * @param {Object} tree A theme.json object.
598
+ * @return {*} The resolved value or incoming ruleValue.
599
+ */
600
+ export function getResolvedValue( ruleValue, tree ) {
601
+ if ( ! ruleValue || ! tree ) {
602
+ return ruleValue;
603
+ }
604
+
605
+ // Resolve ref values.
606
+ const resolvedValue = getResolvedRefValue( ruleValue, tree );
607
+
608
+ // Resolve relative paths.
609
+ if ( resolvedValue?.url ) {
610
+ resolvedValue.url = getResolvedThemeFilePath(
611
+ resolvedValue.url,
612
+ tree?._links?.[ 'wp:theme-file' ]
613
+ );
614
+ }
615
+
616
+ return resolvedValue;
617
+ }
@@ -55,28 +55,29 @@ export function GridItemMovers( {
55
55
  return (
56
56
  <BlockControls group="parent">
57
57
  <ToolbarGroup className="block-editor-grid-item-mover__move-button-container">
58
- <GridItemMover
59
- className="is-left-button"
60
- icon={ chevronLeft }
61
- label={ __( 'Move left' ) }
62
- description={ __( 'Move left' ) }
63
- isDisabled={ columnStart <= 1 }
64
- onClick={ () => {
65
- onChange( {
66
- columnStart: columnStart - 1,
67
- } );
68
- __unstableMarkNextChangeAsNotPersistent();
69
- moveBlocksToPosition(
70
- [ blockClientId ],
71
- gridClientId,
72
- gridClientId,
73
- getNumberOfBlocksBeforeCell(
74
- columnStart - 1,
75
- rowStart
76
- )
77
- );
78
- } }
79
- />
58
+ <div className="block-editor-grid-item-mover__move-horizontal-button-container is-left">
59
+ <GridItemMover
60
+ icon={ chevronLeft }
61
+ label={ __( 'Move left' ) }
62
+ description={ __( 'Move left' ) }
63
+ isDisabled={ columnStart <= 1 }
64
+ onClick={ () => {
65
+ onChange( {
66
+ columnStart: columnStart - 1,
67
+ } );
68
+ __unstableMarkNextChangeAsNotPersistent();
69
+ moveBlocksToPosition(
70
+ [ blockClientId ],
71
+ gridClientId,
72
+ gridClientId,
73
+ getNumberOfBlocksBeforeCell(
74
+ columnStart - 1,
75
+ rowStart
76
+ )
77
+ );
78
+ } }
79
+ />
80
+ </div>
80
81
  <div className="block-editor-grid-item-mover__move-vertical-button-container">
81
82
  <GridItemMover
82
83
  className="is-up-button"
@@ -123,28 +124,29 @@ export function GridItemMovers( {
123
124
  } }
124
125
  />
125
126
  </div>
126
- <GridItemMover
127
- className="is-right-button"
128
- icon={ chevronRight }
129
- label={ __( 'Move right' ) }
130
- description={ __( 'Move right' ) }
131
- isDisabled={ columnCount && columnEnd >= columnCount }
132
- onClick={ () => {
133
- onChange( {
134
- columnStart: columnStart + 1,
135
- } );
136
- __unstableMarkNextChangeAsNotPersistent();
137
- moveBlocksToPosition(
138
- [ blockClientId ],
139
- gridClientId,
140
- gridClientId,
141
- getNumberOfBlocksBeforeCell(
142
- columnStart + 1,
143
- rowStart
144
- )
145
- );
146
- } }
147
- />
127
+ <div className="block-editor-grid-item-mover__move-horizontal-button-container is-right">
128
+ <GridItemMover
129
+ icon={ chevronRight }
130
+ label={ __( 'Move right' ) }
131
+ description={ __( 'Move right' ) }
132
+ isDisabled={ columnCount && columnEnd >= columnCount }
133
+ onClick={ () => {
134
+ onChange( {
135
+ columnStart: columnStart + 1,
136
+ } );
137
+ __unstableMarkNextChangeAsNotPersistent();
138
+ moveBlocksToPosition(
139
+ [ blockClientId ],
140
+ gridClientId,
141
+ gridClientId,
142
+ getNumberOfBlocksBeforeCell(
143
+ columnStart + 1,
144
+ rowStart
145
+ )
146
+ );
147
+ } }
148
+ />
149
+ </div>
148
150
  </ToolbarGroup>
149
151
  </BlockControls>
150
152
  );
@@ -7,7 +7,7 @@ import { useState, useEffect } from '@wordpress/element';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
10
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
11
11
  import BlockPopoverCover from '../block-popover/cover';
12
12
  import { getComputedCSS, getGridTracks, getClosestTrack } from './utils';
13
13
 
@@ -98,7 +98,7 @@ function GridItemResizerInner( {
98
98
  <BlockPopoverCover
99
99
  className="block-editor-grid-item-resizer"
100
100
  clientId={ clientId }
101
- __unstablePopoverSlot="block-toolbar"
101
+ __unstablePopoverSlot="__unstable-block-tools-after"
102
102
  additionalStyles={ styles }
103
103
  >
104
104
  <ResizableBox
@@ -119,6 +119,15 @@ function GridItemResizerInner( {
119
119
  } }
120
120
  bounds={ bounds }
121
121
  boundsByDirection
122
+ onPointerDown={ ( { target, pointerId } ) => {
123
+ /*
124
+ * Captures the pointer to avoid hiccups while dragging over objects
125
+ * like iframes and ensures that the event to end the drag is
126
+ * captured by the target (resize handle) whether or not it’s under
127
+ * the pointer.
128
+ */
129
+ target.setPointerCapture( pointerId );
130
+ } }
122
131
  onResizeStart={ ( event, direction ) => {
123
132
  /*
124
133
  * The container justification and alignment need to be set
@@ -126,21 +135,6 @@ function GridItemResizerInner( {
126
135
  * so that it resizes in the right direction.
127
136
  */
128
137
  setResizeDirection( direction );
129
-
130
- /*
131
- * The mouseup event on the resize handle doesn't trigger if the mouse
132
- * isn't directly above the handle, so we try to detect if it happens
133
- * outside the grid and dispatch a mouseup event on the handle.
134
- */
135
- blockElement.ownerDocument.addEventListener(
136
- 'mouseup',
137
- () => {
138
- event.target.dispatchEvent(
139
- new Event( 'mouseup', { bubbles: true } )
140
- );
141
- },
142
- { once: true }
143
- );
144
138
  } }
145
139
  onResizeStop={ ( event, direction, boxElement ) => {
146
140
  const columnGap = parseFloat(
@@ -13,12 +13,13 @@ import { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';
13
13
  /**
14
14
  * Internal dependencies
15
15
  */
16
- import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
16
+ import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
17
17
  import BlockPopoverCover from '../block-popover/cover';
18
18
  import { range, GridRect, getGridInfo } from './utils';
19
19
  import { store as blockEditorStore } from '../../store';
20
20
  import { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';
21
21
  import ButtonBlockAppender from '../button-block-appender';
22
+ import { unlock } from '../../lock-unlock';
22
23
 
23
24
  export function GridVisualizer( { clientId, contentRef, parentLayout } ) {
24
25
  const isDistractionFree = useSelect(
@@ -118,19 +119,25 @@ const GridVisualizerGrid = forwardRef(
118
119
  function ManualGridVisualizer( { gridClientId, gridInfo } ) {
119
120
  const [ highlightedRect, setHighlightedRect ] = useState( null );
120
121
 
121
- const gridItems = useSelect(
122
- ( select ) => select( blockEditorStore ).getBlocks( gridClientId ),
122
+ const gridItemStyles = useSelect(
123
+ ( select ) => {
124
+ const { getBlockOrder, getBlockStyles } = unlock(
125
+ select( blockEditorStore )
126
+ );
127
+ const blockOrder = getBlockOrder( gridClientId );
128
+ return getBlockStyles( blockOrder );
129
+ },
123
130
  [ gridClientId ]
124
131
  );
125
132
  const occupiedRects = useMemo( () => {
126
133
  const rects = [];
127
- for ( const block of gridItems ) {
134
+ for ( const style of Object.values( gridItemStyles ) ) {
128
135
  const {
129
136
  columnStart,
130
137
  rowStart,
131
138
  columnSpan = 1,
132
139
  rowSpan = 1,
133
- } = block.attributes.style?.layout || {};
140
+ } = style?.layout ?? {};
134
141
  if ( ! columnStart || ! rowStart ) {
135
142
  continue;
136
143
  }
@@ -144,7 +151,7 @@ function ManualGridVisualizer( { gridClientId, gridInfo } ) {
144
151
  );
145
152
  }
146
153
  return rects;
147
- }, [ gridItems ] );
154
+ }, [ gridItemStyles ] );
148
155
 
149
156
  return range( 1, gridInfo.numRows ).map( ( row ) =>
150
157
  range( 1, gridInfo.numColumns ).map( ( column ) => {
@@ -206,8 +213,12 @@ function useGridVisualizerDropZone(
206
213
  gridInfo,
207
214
  setHighlightedRect
208
215
  ) {
209
- const { getBlockAttributes, getBlockRootClientId } =
210
- useSelect( blockEditorStore );
216
+ const {
217
+ getBlockAttributes,
218
+ getBlockRootClientId,
219
+ canInsertBlockType,
220
+ getBlockName,
221
+ } = useSelect( blockEditorStore );
211
222
  const {
212
223
  updateBlockAttributes,
213
224
  moveBlocksToPosition,
@@ -221,6 +232,10 @@ function useGridVisualizerDropZone(
221
232
 
222
233
  return useDropZoneWithValidation( {
223
234
  validateDrag( srcClientId ) {
235
+ const blockName = getBlockName( srcClientId );
236
+ if ( ! canInsertBlockType( blockName, gridClientId ) ) {
237
+ return false;
238
+ }
224
239
  const attributes = getBlockAttributes( srcClientId );
225
240
  const rect = new GridRect( {
226
241
  columnStart: column,
@@ -105,7 +105,6 @@
105
105
  .block-editor-grid-item-mover-button {
106
106
  width: $block-toolbar-height * 0.5;
107
107
  min-width: 0 !important; // overrides default button width.
108
- overflow: hidden;
109
108
  padding-left: 0;
110
109
  padding-right: 0;
111
110
 
@@ -155,7 +154,7 @@
155
154
  justify-content: space-around;
156
155
 
157
156
  > .block-editor-grid-item-mover-button.block-editor-grid-item-mover-button {
158
- height: $block-toolbar-height * 0.5 - $grid-unit-05;
157
+ height: $block-toolbar-height * 0.5 - $grid-unit-05 !important; // overrides toolbar button height.
159
158
  width: 100%;
160
159
  min-width: 0 !important; // overrides default button width.
161
160
 
@@ -173,18 +172,53 @@
173
172
  }
174
173
  }
175
174
 
175
+ .editor-collapsible-block-toolbar {
176
+ .block-editor-grid-item-mover__move-vertical-button-container {
177
+ // Move up a little to prevent the toolbar shift when focus is on the vertical movers.
178
+ @include break-small() {
179
+ height: $grid-unit-50;
180
+ position: relative;
181
+ top: -5px; // Should be -4px, but that causes scrolling when focus lands on the movers, in a 60px header.
182
+ }
183
+ }
184
+ }
185
+
176
186
  .show-icon-labels {
177
187
 
178
- .block-editor-grid-item-mover-button.block-editor-grid-item-mover-button.is-left-button {
179
- border-right: 1px solid $gray-700;
180
- padding-right: 12px;
181
- }
188
+ .block-editor-grid-item-mover__move-horizontal-button-container {
189
+ position: relative;
182
190
 
183
- .block-editor-grid-item-mover-button.block-editor-grid-item-mover-button.is-right-button {
184
- border-left: 1px solid $gray-700;
185
- padding-left: 12px;
186
- }
191
+ &::before {
192
+ @include break-small() {
193
+ content: "";
194
+ height: 100%;
195
+ width: $border-width;
196
+ background: $gray-200;
197
+ position: absolute;
198
+ top: 0;
199
+ }
200
+
201
+ @include break-medium() {
202
+ background: $gray-900;
203
+ }
204
+ }
205
+
206
+ &.is-left {
207
+ padding-right: 6px;
187
208
 
209
+ &::before {
210
+ right: 0;
211
+ }
212
+ }
213
+
214
+ &.is-right {
215
+ padding-left: 6px;
216
+
217
+ &::before {
218
+ left: 0;
219
+ }
220
+ }
221
+ }
188
222
 
189
223
  .block-editor-grid-item-mover__move-vertical-button-container {
190
224
  &::before {
@@ -208,5 +242,21 @@
208
242
  }
209
243
  }
210
244
 
245
+ .block-editor-grid-item-mover-button {
246
+ white-space: nowrap;
247
+ }
248
+
249
+ .editor-collapsible-block-toolbar {
250
+ .block-editor-grid-item-mover__move-horizontal-button-container::before {
251
+ height: $grid-unit-30;
252
+ background: $gray-300;
253
+ top: $grid-unit-05;
254
+ }
255
+
256
+ .block-editor-grid-item-mover__move-vertical-button-container::before {
257
+ background: $gray-300;
258
+ width: calc(100% - #{$grid-unit-30});
259
+ }
260
+ }
211
261
  }
212
262
 
@@ -10,6 +10,7 @@ import { usePrevious } from '@wordpress/compose';
10
10
  */
11
11
  import { store as blockEditorStore } from '../../store';
12
12
  import { GridRect } from './utils';
13
+ import { setImmutably } from '../../utils/object';
13
14
 
14
15
  export function useGridLayoutSync( { clientId: gridClientId } ) {
15
16
  const { gridLayout, blockOrder, selectedBlockLayout } = useSelect(
@@ -26,7 +27,8 @@ export function useGridLayoutSync( { clientId: gridClientId } ) {
26
27
  [ gridClientId ]
27
28
  );
28
29
 
29
- const { getBlockAttributes } = useSelect( blockEditorStore );
30
+ const { getBlockAttributes, getBlockRootClientId } =
31
+ useSelect( blockEditorStore );
30
32
  const { updateBlockAttributes, __unstableMarkNextChangeAsNotPersistent } =
31
33
  useDispatch( blockEditorStore );
32
34
 
@@ -37,6 +39,10 @@ export function useGridLayoutSync( { clientId: gridClientId } ) {
37
39
  );
38
40
 
39
41
  const previouslySelectedBlockRect = usePrevious( selectedBlockRect );
42
+ const previousIsManualPlacement = usePrevious(
43
+ gridLayout.isManualPlacement
44
+ );
45
+ const previousBlockOrder = usePrevious( blockOrder );
40
46
 
41
47
  useEffect( () => {
42
48
  const updates = {};
@@ -120,20 +126,65 @@ export function useGridLayoutSync( { clientId: gridClientId } ) {
120
126
  },
121
127
  };
122
128
  }
129
+
130
+ // Unset grid layout attributes for blocks removed from the grid.
131
+ for ( const clientId of previousBlockOrder ?? [] ) {
132
+ if ( ! blockOrder.includes( clientId ) ) {
133
+ const rootClientId = getBlockRootClientId( clientId );
134
+
135
+ // Block was removed from the editor, so nothing to do.
136
+ if ( rootClientId === null ) {
137
+ continue;
138
+ }
139
+
140
+ // Check if the block is being moved to another grid.
141
+ // If so, do nothing and let the new grid parent handle
142
+ // the attributes.
143
+ const rootAttributes = getBlockAttributes( rootClientId );
144
+ if ( rootAttributes?.layout?.type === 'grid' ) {
145
+ continue;
146
+ }
147
+
148
+ const attributes = getBlockAttributes( clientId );
149
+ const {
150
+ columnStart,
151
+ rowStart,
152
+ columnSpan,
153
+ rowSpan,
154
+ ...layout
155
+ } = attributes.style?.layout ?? {};
156
+
157
+ if ( columnStart || rowStart || columnSpan || rowSpan ) {
158
+ const hasEmptyLayoutAttribute =
159
+ Object.keys( layout ).length === 0;
160
+
161
+ updates[ clientId ] = setImmutably(
162
+ attributes,
163
+ [ 'style', 'layout' ],
164
+ hasEmptyLayoutAttribute ? undefined : layout
165
+ );
166
+ }
167
+ }
168
+ }
123
169
  } else {
124
- // When in auto mode, remove all of the columnStart and rowStart values.
125
- for ( const clientId of blockOrder ) {
126
- const attributes = getBlockAttributes( clientId );
127
- const { columnStart, rowStart, ...layout } =
128
- attributes.style?.layout ?? {};
129
- // Only update attributes if columnStart or rowStart are set.
130
- if ( columnStart || rowStart ) {
131
- updates[ clientId ] = {
132
- style: {
133
- ...attributes.style,
134
- layout,
135
- },
136
- };
170
+ // Remove all of the columnStart and rowStart values
171
+ // when switching from manual to auto mode,
172
+ if ( previousIsManualPlacement === true ) {
173
+ for ( const clientId of blockOrder ) {
174
+ const attributes = getBlockAttributes( clientId );
175
+ const { columnStart, rowStart, ...layout } =
176
+ attributes.style?.layout ?? {};
177
+ // Only update attributes if columnStart or rowStart are set.
178
+ if ( columnStart || rowStart ) {
179
+ const hasEmptyLayoutAttribute =
180
+ Object.keys( layout ).length === 0;
181
+
182
+ updates[ clientId ] = setImmutably(
183
+ attributes,
184
+ [ 'style', 'layout' ],
185
+ hasEmptyLayoutAttribute ? undefined : layout
186
+ );
187
+ }
137
188
  }
138
189
  }
139
190
 
@@ -160,11 +211,14 @@ export function useGridLayoutSync( { clientId: gridClientId } ) {
160
211
  // Actual deps to sync:
161
212
  gridClientId,
162
213
  gridLayout,
214
+ previousBlockOrder,
163
215
  blockOrder,
164
216
  previouslySelectedBlockRect,
217
+ previousIsManualPlacement,
165
218
  // These won't change, but the linter thinks they might:
166
219
  __unstableMarkNextChangeAsNotPersistent,
167
220
  getBlockAttributes,
221
+ getBlockRootClientId,
168
222
  updateBlockAttributes,
169
223
  ] );
170
224
  }
@@ -164,6 +164,7 @@ export default function HeightControl( {
164
164
  <FlexItem isBlock>
165
165
  <Spacer marginX={ 2 } marginBottom={ 0 }>
166
166
  <RangeControl
167
+ __next40pxDefaultSize
167
168
  value={ customRangeValue }
168
169
  min={ 0 }
169
170
  max={
@@ -22,9 +22,9 @@
22
22
  }
23
23
 
24
24
  .block-editor-iframe__html {
25
+ border: 0 solid $gray-300;
25
26
  transform-origin: top center;
26
- transition: transform 0.3s;
27
- @include reduce-motion("transition");
27
+ @include editor-canvas-resize-animation;
28
28
  }
29
29
 
30
30
  .block-editor-iframe__html.is-zoomed-out {
@@ -305,7 +305,7 @@ function Iframe( {
305
305
 
306
306
  iframeDocument.documentElement.classList.add( 'is-zoomed-out' );
307
307
 
308
- const maxWidth = 800;
308
+ const maxWidth = 750;
309
309
  iframeDocument.documentElement.style.setProperty(
310
310
  '--wp-block-editor-iframe-zoom-out-scale',
311
311
  scale === 'default'
@@ -378,10 +378,8 @@ function Iframe( {
378
378
  <iframe
379
379
  { ...props }
380
380
  style={ {
381
- border: 0,
382
381
  ...props.style,
383
382
  height: props.style?.height,
384
- transition: 'all .3s',
385
383
  } }
386
384
  ref={ useMergeRefs( [ ref, setRef ] ) }
387
385
  tabIndex={ tabIndex }
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { ToolbarButton, RangeControl, Dropdown } from '@wordpress/components';
4
+ import {
5
+ ToolbarButton,
6
+ RangeControl,
7
+ Dropdown,
8
+ __experimentalDropdownContentWrapper as DropdownContentWrapper,
9
+ } from '@wordpress/components';
5
10
  import { __ } from '@wordpress/i18n';
6
11
  import { search } from '@wordpress/icons';
7
12
 
@@ -27,14 +32,17 @@ export default function ZoomDropdown() {
27
32
  />
28
33
  ) }
29
34
  renderContent={ () => (
30
- <RangeControl
31
- __nextHasNoMarginBottom
32
- label={ __( 'Zoom' ) }
33
- min={ MIN_ZOOM }
34
- max={ MAX_ZOOM }
35
- value={ Math.round( zoom ) }
36
- onChange={ setZoom }
37
- />
35
+ <DropdownContentWrapper paddingSize="medium">
36
+ <RangeControl
37
+ __next40pxDefaultSize
38
+ __nextHasNoMarginBottom
39
+ label={ __( 'Zoom' ) }
40
+ min={ MIN_ZOOM }
41
+ max={ MAX_ZOOM }
42
+ value={ Math.round( zoom ) }
43
+ onChange={ setZoom }
44
+ />
45
+ </DropdownContentWrapper>
38
46
  ) }
39
47
  />
40
48
  );
@@ -7,15 +7,15 @@ import clsx from 'clsx';
7
7
  * Internal dependencies
8
8
  */
9
9
  import BaseButtonBlockAppender from '../button-block-appender';
10
- import withClientId from './with-client-id';
10
+ import { useBlockEditContext } from '../block-edit/context';
11
11
 
12
- export const ButtonBlockAppender = ( {
13
- clientId,
12
+ export default function ButtonBlockAppender( {
14
13
  showSeparator,
15
14
  isFloating,
16
15
  onAddBlock,
17
16
  isToggle,
18
- } ) => {
17
+ } ) {
18
+ const { clientId } = useBlockEditContext();
19
19
  return (
20
20
  <BaseButtonBlockAppender
21
21
  className={ clsx( {
@@ -27,6 +27,4 @@ export const ButtonBlockAppender = ( {
27
27
  onAddBlock={ onAddBlock }
28
28
  />
29
29
  );
30
- };
31
-
32
- export default withClientId( ButtonBlockAppender );
30
+ }