@wordpress/block-editor 11.4.0 → 11.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/components/block-inspector/index.js +11 -10
  3. package/build/components/block-inspector/index.js.map +1 -1
  4. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
  5. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  6. package/build/components/block-list/block-invalid-warning.js +63 -80
  7. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  8. package/build/components/block-lock/modal.js +1 -0
  9. package/build/components/block-lock/modal.js.map +1 -1
  10. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
  11. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  12. package/build/components/block-settings-menu-controls/index.js +1 -1
  13. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  14. package/build/components/block-styles/index.js +2 -1
  15. package/build/components/block-styles/index.js.map +1 -1
  16. package/build/components/block-switcher/block-transformations-menu.native.js +1 -0
  17. package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  18. package/build/components/child-layout-control/index.js +107 -0
  19. package/build/components/child-layout-control/index.js.map +1 -0
  20. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
  21. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  22. package/build/components/date-format-picker/index.js +3 -3
  23. package/build/components/date-format-picker/index.js.map +1 -1
  24. package/build/components/global-styles/border-panel.js +306 -0
  25. package/build/components/global-styles/border-panel.js.map +1 -0
  26. package/build/components/global-styles/dimensions-panel.js +594 -0
  27. package/build/components/global-styles/dimensions-panel.js.map +1 -0
  28. package/build/components/global-styles/hooks.js +127 -37
  29. package/build/components/global-styles/hooks.js.map +1 -1
  30. package/build/components/global-styles/index.js +36 -2
  31. package/build/components/global-styles/index.js.map +1 -1
  32. package/build/components/global-styles/typography-panel.js +87 -27
  33. package/build/components/global-styles/typography-panel.js.map +1 -1
  34. package/build/components/global-styles/use-global-styles-output.js +21 -14
  35. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  36. package/build/components/global-styles/utils.js +2 -0
  37. package/build/components/global-styles/utils.js.map +1 -1
  38. package/build/components/index.native.js +23 -0
  39. package/build/components/index.native.js.map +1 -1
  40. package/build/components/inserter/index.js +29 -17
  41. package/build/components/inserter/index.js.map +1 -1
  42. package/build/components/inserter/media-tab/hooks.js +10 -11
  43. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  44. package/build/components/inserter/media-tab/media-list.js +5 -108
  45. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  46. package/build/components/inserter/media-tab/media-preview.js +242 -0
  47. package/build/components/inserter/media-tab/media-preview.js.map +1 -0
  48. package/build/components/inserter/menu.js +1 -1
  49. package/build/components/inserter/menu.js.map +1 -1
  50. package/build/components/inserter/quick-inserter.js +4 -2
  51. package/build/components/inserter/quick-inserter.js.map +1 -1
  52. package/build/components/inserter/search-results.js +10 -3
  53. package/build/components/inserter/search-results.js.map +1 -1
  54. package/build/components/inserter/tabs.js +1 -1
  55. package/build/components/inserter/tabs.js.map +1 -1
  56. package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
  57. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  58. package/build/components/inspector-controls/fill.js +38 -9
  59. package/build/components/inspector-controls/fill.js.map +1 -1
  60. package/build/components/link-control/index.js +1 -1
  61. package/build/components/link-control/index.js.map +1 -1
  62. package/build/components/link-control/search-item.js +5 -2
  63. package/build/components/link-control/search-item.js.map +1 -1
  64. package/build/components/link-control/settings-drawer.js +1 -1
  65. package/build/components/link-control/settings-drawer.js.map +1 -1
  66. package/build/components/link-control/settings.js +1 -0
  67. package/build/components/link-control/settings.js.map +1 -1
  68. package/build/components/list-view/block.js +17 -3
  69. package/build/components/list-view/block.js.map +1 -1
  70. package/build/components/list-view/branch.js +2 -2
  71. package/build/components/list-view/branch.js.map +1 -1
  72. package/build/components/list-view/expander.js +2 -1
  73. package/build/components/list-view/expander.js.map +1 -1
  74. package/build/components/list-view/leaf.js +10 -6
  75. package/build/components/list-view/leaf.js.map +1 -1
  76. package/build/components/list-view/use-block-selection.js +1 -2
  77. package/build/components/list-view/use-block-selection.js.map +1 -1
  78. package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
  79. package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  80. package/build/components/off-canvas-editor/appender.js +33 -13
  81. package/build/components/off-canvas-editor/appender.js.map +1 -1
  82. package/build/components/off-canvas-editor/branch.js +6 -3
  83. package/build/components/off-canvas-editor/branch.js.map +1 -1
  84. package/build/components/off-canvas-editor/index.js +8 -2
  85. package/build/components/off-canvas-editor/index.js.map +1 -1
  86. package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
  87. package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  88. package/build/components/provider/use-block-sync.js +17 -3
  89. package/build/components/provider/use-block-sync.js.map +1 -1
  90. package/build/components/responsive-block-control/index.js +1 -0
  91. package/build/components/responsive-block-control/index.js.map +1 -1
  92. package/build/components/rich-text/format-toolbar-container.js +0 -3
  93. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  94. package/build/components/rich-text/index.js +9 -43
  95. package/build/components/rich-text/index.js.map +1 -1
  96. package/build/components/rich-text/use-delete.js +73 -0
  97. package/build/components/rich-text/use-delete.js.map +1 -0
  98. package/build/components/rich-text/use-input-rules.js +14 -6
  99. package/build/components/rich-text/use-input-rules.js.map +1 -1
  100. package/build/components/writing-flow/use-selection-observer.js +4 -1
  101. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  102. package/build/hooks/align.js +3 -1
  103. package/build/hooks/align.js.map +1 -1
  104. package/build/hooks/border.js +91 -240
  105. package/build/hooks/border.js.map +1 -1
  106. package/build/hooks/custom-class-name.js +4 -4
  107. package/build/hooks/custom-class-name.js.map +1 -1
  108. package/build/hooks/custom-class-name.native.js +3 -4
  109. package/build/hooks/custom-class-name.native.js.map +1 -1
  110. package/build/hooks/dimensions.js +72 -190
  111. package/build/hooks/dimensions.js.map +1 -1
  112. package/build/hooks/duotone.js +94 -25
  113. package/build/hooks/duotone.js.map +1 -1
  114. package/build/hooks/gap.js +0 -202
  115. package/build/hooks/gap.js.map +1 -1
  116. package/build/hooks/layout.js +33 -27
  117. package/build/hooks/layout.js.map +1 -1
  118. package/build/hooks/margin.js +7 -163
  119. package/build/hooks/margin.js.map +1 -1
  120. package/build/hooks/padding.js +7 -163
  121. package/build/hooks/padding.js.map +1 -1
  122. package/build/hooks/supports.js +7 -1
  123. package/build/hooks/supports.js.map +1 -1
  124. package/build/hooks/typography.js +52 -66
  125. package/build/hooks/typography.js.map +1 -1
  126. package/build/hooks/utils.js +101 -0
  127. package/build/hooks/utils.js.map +1 -1
  128. package/build/layouts/constrained.js +6 -2
  129. package/build/layouts/constrained.js.map +1 -1
  130. package/build/layouts/flex.js +1 -0
  131. package/build/layouts/flex.js.map +1 -1
  132. package/build/private-apis.js +4 -1
  133. package/build/private-apis.js.map +1 -1
  134. package/build/store/actions.js +28 -14
  135. package/build/store/actions.js.map +1 -1
  136. package/build/store/defaults.js +28 -1
  137. package/build/store/defaults.js.map +1 -1
  138. package/build/store/reducer.js +53 -47
  139. package/build/store/reducer.js.map +1 -1
  140. package/build/store/selectors.js +24 -4
  141. package/build/store/selectors.js.map +1 -1
  142. package/build/utils/parse-css-unit-to-px.js +49 -10
  143. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  144. package/build-module/components/block-inspector/index.js +9 -9
  145. package/build-module/components/block-inspector/index.js.map +1 -1
  146. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
  147. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  148. package/build-module/components/block-list/block-invalid-warning.js +66 -78
  149. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  150. package/build-module/components/block-lock/modal.js +1 -0
  151. package/build-module/components/block-lock/modal.js.map +1 -1
  152. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
  153. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  154. package/build-module/components/block-settings-menu-controls/index.js +1 -1
  155. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  156. package/build-module/components/block-styles/index.js +2 -1
  157. package/build-module/components/block-styles/index.js.map +1 -1
  158. package/build-module/components/block-switcher/block-transformations-menu.native.js +1 -0
  159. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  160. package/build-module/components/child-layout-control/index.js +98 -0
  161. package/build-module/components/child-layout-control/index.js.map +1 -0
  162. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
  163. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  164. package/build-module/components/date-format-picker/index.js +4 -4
  165. package/build-module/components/date-format-picker/index.js.map +1 -1
  166. package/build-module/components/global-styles/border-panel.js +291 -0
  167. package/build-module/components/global-styles/border-panel.js.map +1 -0
  168. package/build-module/components/global-styles/dimensions-panel.js +574 -0
  169. package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
  170. package/build-module/components/global-styles/hooks.js +123 -34
  171. package/build-module/components/global-styles/hooks.js.map +1 -1
  172. package/build-module/components/global-styles/index.js +3 -1
  173. package/build-module/components/global-styles/index.js.map +1 -1
  174. package/build-module/components/global-styles/typography-panel.js +88 -27
  175. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  176. package/build-module/components/global-styles/use-global-styles-output.js +21 -14
  177. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  178. package/build-module/components/global-styles/utils.js +2 -0
  179. package/build-module/components/global-styles/utils.js.map +1 -1
  180. package/build-module/components/index.native.js +2 -1
  181. package/build-module/components/index.native.js.map +1 -1
  182. package/build-module/components/inserter/index.js +28 -16
  183. package/build-module/components/inserter/index.js.map +1 -1
  184. package/build-module/components/inserter/media-tab/hooks.js +10 -11
  185. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  186. package/build-module/components/inserter/media-tab/media-list.js +6 -105
  187. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  188. package/build-module/components/inserter/media-tab/media-preview.js +222 -0
  189. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
  190. package/build-module/components/inserter/menu.js +1 -1
  191. package/build-module/components/inserter/menu.js.map +1 -1
  192. package/build-module/components/inserter/quick-inserter.js +4 -2
  193. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  194. package/build-module/components/inserter/search-results.js +10 -3
  195. package/build-module/components/inserter/search-results.js.map +1 -1
  196. package/build-module/components/inserter/tabs.js +1 -1
  197. package/build-module/components/inserter/tabs.js.map +1 -1
  198. package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
  199. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  200. package/build-module/components/inspector-controls/fill.js +39 -9
  201. package/build-module/components/inspector-controls/fill.js.map +1 -1
  202. package/build-module/components/link-control/index.js +1 -1
  203. package/build-module/components/link-control/index.js.map +1 -1
  204. package/build-module/components/link-control/search-item.js +4 -2
  205. package/build-module/components/link-control/search-item.js.map +1 -1
  206. package/build-module/components/link-control/settings-drawer.js +1 -1
  207. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  208. package/build-module/components/link-control/settings.js +1 -0
  209. package/build-module/components/link-control/settings.js.map +1 -1
  210. package/build-module/components/list-view/block.js +16 -3
  211. package/build-module/components/list-view/block.js.map +1 -1
  212. package/build-module/components/list-view/branch.js +2 -2
  213. package/build-module/components/list-view/branch.js.map +1 -1
  214. package/build-module/components/list-view/expander.js +2 -1
  215. package/build-module/components/list-view/expander.js.map +1 -1
  216. package/build-module/components/list-view/leaf.js +8 -4
  217. package/build-module/components/list-view/leaf.js.map +1 -1
  218. package/build-module/components/list-view/use-block-selection.js +1 -2
  219. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  220. package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
  221. package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  222. package/build-module/components/off-canvas-editor/appender.js +33 -14
  223. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  224. package/build-module/components/off-canvas-editor/branch.js +6 -3
  225. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  226. package/build-module/components/off-canvas-editor/index.js +8 -2
  227. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  228. package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
  229. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  230. package/build-module/components/provider/use-block-sync.js +17 -3
  231. package/build-module/components/provider/use-block-sync.js.map +1 -1
  232. package/build-module/components/responsive-block-control/index.js +1 -0
  233. package/build-module/components/responsive-block-control/index.js.map +1 -1
  234. package/build-module/components/rich-text/format-toolbar-container.js +0 -3
  235. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  236. package/build-module/components/rich-text/index.js +9 -43
  237. package/build-module/components/rich-text/index.js.map +1 -1
  238. package/build-module/components/rich-text/use-delete.js +62 -0
  239. package/build-module/components/rich-text/use-delete.js.map +1 -0
  240. package/build-module/components/rich-text/use-input-rules.js +14 -6
  241. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  242. package/build-module/components/writing-flow/use-selection-observer.js +4 -1
  243. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  244. package/build-module/hooks/align.js +3 -1
  245. package/build-module/hooks/align.js.map +1 -1
  246. package/build-module/hooks/border.js +93 -240
  247. package/build-module/hooks/border.js.map +1 -1
  248. package/build-module/hooks/custom-class-name.js +4 -4
  249. package/build-module/hooks/custom-class-name.js.map +1 -1
  250. package/build-module/hooks/custom-class-name.native.js +3 -4
  251. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  252. package/build-module/hooks/dimensions.js +75 -187
  253. package/build-module/hooks/dimensions.js.map +1 -1
  254. package/build-module/hooks/duotone.js +86 -24
  255. package/build-module/hooks/duotone.js.map +1 -1
  256. package/build-module/hooks/gap.js +0 -183
  257. package/build-module/hooks/gap.js.map +1 -1
  258. package/build-module/hooks/layout.js +33 -27
  259. package/build-module/hooks/layout.js.map +1 -1
  260. package/build-module/hooks/margin.js +4 -143
  261. package/build-module/hooks/margin.js.map +1 -1
  262. package/build-module/hooks/padding.js +4 -143
  263. package/build-module/hooks/padding.js.map +1 -1
  264. package/build-module/hooks/supports.js +7 -1
  265. package/build-module/hooks/supports.js.map +1 -1
  266. package/build-module/hooks/typography.js +54 -66
  267. package/build-module/hooks/typography.js.map +1 -1
  268. package/build-module/hooks/utils.js +96 -0
  269. package/build-module/hooks/utils.js.map +1 -1
  270. package/build-module/layouts/constrained.js +6 -2
  271. package/build-module/layouts/constrained.js.map +1 -1
  272. package/build-module/layouts/flex.js +1 -0
  273. package/build-module/layouts/flex.js.map +1 -1
  274. package/build-module/private-apis.js +3 -1
  275. package/build-module/private-apis.js.map +1 -1
  276. package/build-module/store/actions.js +28 -14
  277. package/build-module/store/actions.js.map +1 -1
  278. package/build-module/store/defaults.js +28 -1
  279. package/build-module/store/defaults.js.map +1 -1
  280. package/build-module/store/reducer.js +53 -45
  281. package/build-module/store/reducer.js.map +1 -1
  282. package/build-module/store/selectors.js +22 -4
  283. package/build-module/store/selectors.js.map +1 -1
  284. package/build-module/utils/parse-css-unit-to-px.js +49 -10
  285. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  286. package/build-style/style-rtl.css +39 -27
  287. package/build-style/style.css +39 -27
  288. package/package.json +31 -31
  289. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
  290. package/src/components/block-inspector/index.js +11 -14
  291. package/src/components/block-inspector/style.scss +3 -0
  292. package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
  293. package/src/components/block-list/block-invalid-warning.js +72 -64
  294. package/src/components/block-lock/modal.js +1 -0
  295. package/src/components/block-lock/style.scss +0 -9
  296. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
  297. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +35 -17
  298. package/src/components/block-preview/test/index.js +0 -2
  299. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  300. package/src/components/block-settings-menu-controls/index.js +2 -1
  301. package/src/components/block-styles/index.js +5 -1
  302. package/src/components/block-styles/style.scss +2 -2
  303. package/src/components/block-switcher/block-transformations-menu.native.js +1 -0
  304. package/src/components/child-layout-control/index.js +106 -0
  305. package/src/components/color-palette/test/__snapshots__/control.js.snap +17 -15
  306. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +48 -38
  307. package/src/components/date-format-picker/index.js +6 -8
  308. package/src/components/date-format-picker/style.scss +0 -5
  309. package/src/components/global-styles/border-panel.js +285 -0
  310. package/src/components/global-styles/dimensions-panel.js +627 -0
  311. package/src/components/global-styles/hooks.js +160 -44
  312. package/src/components/global-styles/index.js +7 -1
  313. package/src/components/global-styles/test/use-global-styles-output.js +1 -1
  314. package/src/components/global-styles/typography-panel.js +81 -9
  315. package/src/components/global-styles/use-global-styles-output.js +17 -16
  316. package/src/components/global-styles/utils.js +2 -0
  317. package/src/components/index.native.js +5 -0
  318. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  319. package/src/components/inserter/index.js +30 -11
  320. package/src/components/inserter/media-tab/hooks.js +9 -8
  321. package/src/components/inserter/media-tab/media-list.js +3 -122
  322. package/src/components/inserter/media-tab/media-preview.js +268 -0
  323. package/src/components/inserter/menu.js +0 -1
  324. package/src/components/inserter/quick-inserter.js +2 -0
  325. package/src/components/inserter/search-results.js +7 -1
  326. package/src/components/inserter/style.scss +25 -0
  327. package/src/components/inserter/tabs.js +1 -9
  328. package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
  329. package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
  330. package/src/components/inspector-controls/fill.js +32 -8
  331. package/src/components/link-control/index.js +1 -1
  332. package/src/components/link-control/search-item.js +3 -1
  333. package/src/components/link-control/settings-drawer.js +2 -1
  334. package/src/components/link-control/settings.js +1 -0
  335. package/src/components/link-control/style.scss +18 -12
  336. package/src/components/link-control/test/index.js +3 -5
  337. package/src/components/list-view/block.js +19 -1
  338. package/src/components/list-view/branch.js +1 -2
  339. package/src/components/list-view/expander.js +1 -0
  340. package/src/components/list-view/leaf.js +43 -29
  341. package/src/components/list-view/use-block-selection.js +0 -2
  342. package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
  343. package/src/components/media-replace-flow/style.scss +7 -9
  344. package/src/components/off-canvas-editor/appender.js +44 -21
  345. package/src/components/off-canvas-editor/branch.js +4 -1
  346. package/src/components/off-canvas-editor/index.js +7 -1
  347. package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
  348. package/src/components/provider/use-block-sync.js +21 -4
  349. package/src/components/responsive-block-control/index.js +1 -0
  350. package/src/components/rich-text/format-toolbar-container.js +1 -7
  351. package/src/components/rich-text/index.js +8 -44
  352. package/src/components/rich-text/use-delete.js +59 -0
  353. package/src/components/rich-text/use-input-rules.js +13 -5
  354. package/src/components/spacing-sizes-control/style.scss +1 -1
  355. package/src/components/url-popover/stories/index.js +1 -0
  356. package/src/components/url-popover/test/index.js +0 -2
  357. package/src/components/writing-flow/use-selection-observer.js +5 -1
  358. package/src/hooks/align.js +1 -1
  359. package/src/hooks/border.js +94 -225
  360. package/src/hooks/custom-class-name.js +4 -4
  361. package/src/hooks/custom-class-name.native.js +3 -4
  362. package/src/hooks/dimensions.js +85 -269
  363. package/src/hooks/duotone.js +100 -30
  364. package/src/hooks/gap.js +0 -208
  365. package/src/hooks/layout.js +38 -22
  366. package/src/hooks/margin.js +1 -164
  367. package/src/hooks/padding.js +1 -163
  368. package/src/hooks/supports.js +6 -0
  369. package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
  370. package/src/hooks/test/duotone.js +102 -0
  371. package/src/hooks/test/style.js +2 -1
  372. package/src/hooks/test/use-typography-props.js +2 -0
  373. package/src/hooks/typography.js +68 -88
  374. package/src/hooks/utils.js +126 -0
  375. package/src/layouts/constrained.js +23 -17
  376. package/src/layouts/flex.js +1 -0
  377. package/src/private-apis.js +2 -0
  378. package/src/store/actions.js +16 -6
  379. package/src/store/defaults.js +14 -1
  380. package/src/store/reducer.js +68 -43
  381. package/src/store/selectors.js +28 -4
  382. package/src/store/test/actions.js +4 -2
  383. package/src/utils/parse-css-unit-to-px.js +48 -13
  384. package/src/utils/test/parse-css-unit-to-px.js +13 -2
  385. package/tsconfig.tsbuildinfo +1 -1
  386. package/build/hooks/border-radius.js +0 -100
  387. package/build/hooks/border-radius.js.map +0 -1
  388. package/build/hooks/child-layout.js +0 -213
  389. package/build/hooks/child-layout.js.map +0 -1
  390. package/build/hooks/min-height.js +0 -139
  391. package/build/hooks/min-height.js.map +0 -1
  392. package/build-module/hooks/border-radius.js +0 -84
  393. package/build-module/hooks/border-radius.js.map +0 -1
  394. package/build-module/hooks/child-layout.js +0 -193
  395. package/build-module/hooks/child-layout.js.map +0 -1
  396. package/build-module/hooks/min-height.js +0 -116
  397. package/build-module/hooks/min-height.js.map +0 -1
  398. package/src/hooks/border-radius.js +0 -70
  399. package/src/hooks/child-layout.js +0 -195
  400. package/src/hooks/min-height.js +0 -104
@@ -6,11 +6,11 @@ exports[`Block Mover Picker moving blocks disables the Move Down button for the
6
6
  <!-- /wp:paragraph -->
7
7
 
8
8
  <!-- wp:spacer -->
9
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
9
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
10
10
  <!-- /wp:spacer -->
11
11
 
12
12
  <!-- wp:heading -->
13
- <h2 class=\\"wp-block-heading\\"></h2>
13
+ <h2 class="wp-block-heading"></h2>
14
14
  <!-- /wp:heading -->"
15
15
  `;
16
16
 
@@ -20,17 +20,17 @@ exports[`Block Mover Picker moving blocks disables the Move Up button for the fi
20
20
  <!-- /wp:paragraph -->
21
21
 
22
22
  <!-- wp:spacer -->
23
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
23
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
24
24
  <!-- /wp:spacer -->
25
25
 
26
26
  <!-- wp:heading -->
27
- <h2 class=\\"wp-block-heading\\"></h2>
27
+ <h2 class="wp-block-heading"></h2>
28
28
  <!-- /wp:heading -->"
29
29
  `;
30
30
 
31
31
  exports[`Block Mover Picker moving blocks moves blocks up and down 1`] = `
32
32
  "<!-- wp:heading -->
33
- <h2 class=\\"wp-block-heading\\"></h2>
33
+ <h2 class="wp-block-heading"></h2>
34
34
  <!-- /wp:heading -->
35
35
 
36
36
  <!-- wp:paragraph -->
@@ -38,19 +38,19 @@ exports[`Block Mover Picker moving blocks moves blocks up and down 1`] = `
38
38
  <!-- /wp:paragraph -->
39
39
 
40
40
  <!-- wp:spacer -->
41
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
41
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
42
42
  <!-- /wp:spacer -->"
43
43
  `;
44
44
 
45
45
  exports[`Block Mover Picker should match snapshot 1`] = `
46
- Array [
46
+ [
47
47
  <View>
48
48
  <View
49
49
  accessibilityHint="Double tap to move the block to the left"
50
50
  accessibilityLabel="Move block left from position 2 to position 1"
51
51
  accessibilityRole="button"
52
52
  accessibilityState={
53
- Object {
53
+ {
54
54
  "disabled": false,
55
55
  }
56
56
  }
@@ -65,7 +65,7 @@ Array [
65
65
  onResponderTerminationRequest={[Function]}
66
66
  onStartShouldSetResponder={[Function]}
67
67
  style={
68
- Object {
68
+ {
69
69
  "alignItems": "center",
70
70
  "flex": 1,
71
71
  "justifyContent": "center",
@@ -81,7 +81,7 @@ Array [
81
81
  onGestureHandlerEvent={[Function]}
82
82
  onGestureHandlerStateChange={[Function]}
83
83
  style={
84
- Object {
84
+ {
85
85
  "alignItems": "center",
86
86
  "aspectRatio": 1,
87
87
  "flex": 1,
@@ -93,12 +93,21 @@ Array [
93
93
  >
94
94
  <View
95
95
  style={
96
- Object {
96
+ {
97
97
  "flexDirection": "row",
98
98
  }
99
99
  }
100
100
  >
101
- Svg
101
+ <Svg
102
+ colorScheme="light"
103
+ height={24}
104
+ style={{}}
105
+ viewBox="0 0 24 24"
106
+ width={24}
107
+ xmlns="http://www.w3.org/2000/svg"
108
+ >
109
+ Path
110
+ </Svg>
102
111
  </View>
103
112
  </View>
104
113
  </View>
@@ -109,7 +118,7 @@ Array [
109
118
  accessibilityLabel="Move block right"
110
119
  accessibilityRole="button"
111
120
  accessibilityState={
112
- Object {
121
+ {
113
122
  "disabled": true,
114
123
  }
115
124
  }
@@ -124,7 +133,7 @@ Array [
124
133
  onResponderTerminationRequest={[Function]}
125
134
  onStartShouldSetResponder={[Function]}
126
135
  style={
127
- Object {
136
+ {
128
137
  "alignItems": "center",
129
138
  "flex": 1,
130
139
  "justifyContent": "center",
@@ -140,7 +149,7 @@ Array [
140
149
  onGestureHandlerEvent={[Function]}
141
150
  onGestureHandlerStateChange={[Function]}
142
151
  style={
143
- Object {
152
+ {
144
153
  "alignItems": "center",
145
154
  "aspectRatio": 1,
146
155
  "flex": 1,
@@ -152,12 +161,21 @@ Array [
152
161
  >
153
162
  <View
154
163
  style={
155
- Object {
164
+ {
156
165
  "flexDirection": "row",
157
166
  }
158
167
  }
159
168
  >
160
- Svg
169
+ <Svg
170
+ colorScheme="light"
171
+ height={24}
172
+ style={{}}
173
+ viewBox="0 0 24 24"
174
+ width={24}
175
+ xmlns="http://www.w3.org/2000/svg"
176
+ >
177
+ Path
178
+ </Svg>
161
179
  </View>
162
180
  </View>
163
181
  </View>
@@ -17,8 +17,6 @@ import {
17
17
  */
18
18
  import { useBlockPreview } from '../';
19
19
 
20
- jest.useRealTimers();
21
-
22
20
  describe( 'useBlockPreview', () => {
23
21
  beforeAll( () => {
24
22
  registerBlockType( 'core/test-block', {
@@ -147,7 +147,9 @@ export function BlockSettingsDropdown( {
147
147
  __experimentalSelectBlock
148
148
  ? () => {
149
149
  const blockToSelect =
150
- previousBlockClientId || nextBlockClientId;
150
+ previousBlockClientId ||
151
+ nextBlockClientId ||
152
+ firstParentClientId;
151
153
 
152
154
  if (
153
155
  blockToSelect &&
@@ -166,6 +168,7 @@ export function BlockSettingsDropdown( {
166
168
  __experimentalSelectBlock,
167
169
  previousBlockClientId,
168
170
  nextBlockClientId,
171
+ firstParentClientId,
169
172
  selectedBlockClientIds,
170
173
  ]
171
174
  );
@@ -48,7 +48,8 @@ const BlockSettingsMenuControlsSlot = ( {
48
48
 
49
49
  // Check if current selection of blocks is Groupable or Ungroupable
50
50
  // and pass this props down to ConvertToGroupButton.
51
- const convertToGroupButtonProps = useConvertToGroupButtonProps();
51
+ const convertToGroupButtonProps =
52
+ useConvertToGroupButtonProps( selectedClientIds );
52
53
  const { isGroupable, isUngroupable } = convertToGroupButtonProps;
53
54
  const showConvertToGroupButton =
54
55
  ( isGroupable || isUngroupable ) && canRemove;
@@ -99,7 +99,11 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
99
99
  } ) }
100
100
  </div>
101
101
  { hoveredStyle && ! isMobileViewport && (
102
- <Popover placement="left-start" offset={ 20 }>
102
+ <Popover
103
+ placement="left-start"
104
+ offset={ 20 }
105
+ focusOnMount={ false }
106
+ >
103
107
  <div
104
108
  className="block-editor-block-styles__preview-panel"
105
109
  onMouseLeave={ () => styleItemHandler( null ) }
@@ -38,7 +38,7 @@
38
38
  gap: $grid-unit-10;
39
39
 
40
40
  .block-editor-block-styles__item {
41
- color: $gray-800;
41
+ color: $gray-900;
42
42
  box-shadow: inset 0 0 0 1px $gray-400;
43
43
  display: inline-block;
44
44
  width: calc(50% - #{$grid-unit-05});
@@ -51,7 +51,7 @@
51
51
 
52
52
  &.is-active,
53
53
  &.is-active:hover {
54
- background-color: $gray-800;
54
+ background-color: $gray-900;
55
55
  box-shadow: none;
56
56
  }
57
57
 
@@ -75,6 +75,7 @@ const BlockTransformationsMenu = ( {
75
75
 
76
76
  return (
77
77
  <Picker
78
+ testID="block-transformations-menu"
78
79
  ref={ pickerRef }
79
80
  options={ pickerOptions() }
80
81
  onChange={ onPickerSelect }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalToggleGroupControl as ToggleGroupControl,
6
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
7
+ __experimentalUnitControl as UnitControl,
8
+ } from '@wordpress/components';
9
+ import { __ } from '@wordpress/i18n';
10
+ import { useEffect } from '@wordpress/element';
11
+
12
+ function helpText( selfStretch, parentLayout ) {
13
+ const { orientation = 'horizontal' } = parentLayout;
14
+
15
+ if ( selfStretch === 'fill' ) {
16
+ return __( 'Stretch to fill available space.' );
17
+ }
18
+ if ( selfStretch === 'fixed' && orientation === 'horizontal' ) {
19
+ return __( 'Specify a fixed width.' );
20
+ } else if ( selfStretch === 'fixed' ) {
21
+ return __( 'Specify a fixed height.' );
22
+ }
23
+ return __( 'Fit contents.' );
24
+ }
25
+
26
+ /**
27
+ * Form to edit the child layout value.
28
+ *
29
+ * @param {Object} props Props.
30
+ * @param {Object} props.value The child layout value.
31
+ * @param {Function} props.onChange Function to update the child layout value.
32
+ * @param {Object} props.parentLayout The parent layout value.
33
+ *
34
+ * @return {WPElement} child layout edit element.
35
+ */
36
+ export default function ChildLayoutControl( {
37
+ value: childLayout = {},
38
+ onChange,
39
+ parentLayout,
40
+ } ) {
41
+ const { selfStretch, flexSize } = childLayout;
42
+
43
+ useEffect( () => {
44
+ if ( selfStretch === 'fixed' && ! flexSize ) {
45
+ onChange( {
46
+ ...childLayout,
47
+ selfStretch: 'fit',
48
+ } );
49
+ }
50
+ }, [] );
51
+
52
+ return (
53
+ <>
54
+ <ToggleGroupControl
55
+ __nextHasNoMarginBottom
56
+ size={ '__unstable-large' }
57
+ label={ childLayoutOrientation( parentLayout ) }
58
+ value={ selfStretch || 'fit' }
59
+ help={ helpText( selfStretch, parentLayout ) }
60
+ onChange={ ( value ) => {
61
+ const newFlexSize = value !== 'fixed' ? null : flexSize;
62
+ onChange( {
63
+ ...childLayout,
64
+ selfStretch: value,
65
+ flexSize: newFlexSize,
66
+ } );
67
+ } }
68
+ isBlock={ true }
69
+ >
70
+ <ToggleGroupControlOption
71
+ key={ 'fit' }
72
+ value={ 'fit' }
73
+ label={ __( 'Fit' ) }
74
+ />
75
+ <ToggleGroupControlOption
76
+ key={ 'fill' }
77
+ value={ 'fill' }
78
+ label={ __( 'Fill' ) }
79
+ />
80
+ <ToggleGroupControlOption
81
+ key={ 'fixed' }
82
+ value={ 'fixed' }
83
+ label={ __( 'Fixed' ) }
84
+ />
85
+ </ToggleGroupControl>
86
+ { selfStretch === 'fixed' && (
87
+ <UnitControl
88
+ size={ '__unstable-large' }
89
+ onChange={ ( value ) => {
90
+ onChange( {
91
+ ...childLayout,
92
+ flexSize: value,
93
+ } );
94
+ } }
95
+ value={ flexSize }
96
+ />
97
+ ) }
98
+ </>
99
+ );
100
+ }
101
+
102
+ export function childLayoutOrientation( parentLayout ) {
103
+ const { orientation = 'horizontal' } = parentLayout;
104
+
105
+ return orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );
106
+ }
@@ -22,17 +22,18 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
22
22
  display: -webkit-flex;
23
23
  display: -ms-flexbox;
24
24
  display: flex;
25
- -webkit-align-items: normal;
26
- -webkit-box-align: normal;
27
- -ms-flex-align: normal;
28
- align-items: normal;
25
+ -webkit-align-items: stretch;
26
+ -webkit-box-align: stretch;
27
+ -ms-flex-align: stretch;
28
+ align-items: stretch;
29
29
  -webkit-flex-direction: column;
30
30
  -ms-flex-direction: column;
31
31
  flex-direction: column;
32
32
  gap: calc(4px * 1);
33
- -webkit-box-pack: justify;
34
- -webkit-justify-content: space-between;
35
- justify-content: space-between;
33
+ -webkit-box-pack: center;
34
+ -ms-flex-pack: center;
35
+ -webkit-justify-content: center;
36
+ justify-content: center;
36
37
  }
37
38
 
38
39
  .emotion-4>* {
@@ -54,17 +55,18 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
54
55
  display: -webkit-flex;
55
56
  display: -ms-flexbox;
56
57
  display: flex;
57
- -webkit-align-items: normal;
58
- -webkit-box-align: normal;
59
- -ms-flex-align: normal;
60
- align-items: normal;
58
+ -webkit-align-items: stretch;
59
+ -webkit-box-align: stretch;
60
+ -ms-flex-align: stretch;
61
+ align-items: stretch;
61
62
  -webkit-flex-direction: column;
62
63
  -ms-flex-direction: column;
63
64
  flex-direction: column;
64
65
  gap: calc(4px * 3);
65
- -webkit-box-pack: justify;
66
- -webkit-justify-content: space-between;
67
- justify-content: space-between;
66
+ -webkit-box-pack: center;
67
+ -ms-flex-pack: center;
68
+ -webkit-justify-content: center;
69
+ justify-content: center;
68
70
  }
69
71
 
70
72
  .emotion-8>* {
@@ -158,7 +160,7 @@ exports[`ColorPaletteControl matches the snapshot 1`] = `
158
160
  <button
159
161
  aria-expanded="false"
160
162
  aria-haspopup="true"
161
- aria-label="Custom color picker. The currently selected color is called \\"red\\" and has a value of \\"f00\\"."
163
+ aria-label="Custom color picker. The currently selected color is called "red" and has a value of "f00"."
162
164
  class="components-flex components-color-palette__custom-color emotion-10 emotion-5"
163
165
  data-wp-c16t="true"
164
166
  data-wp-component="Flex"
@@ -25,59 +25,69 @@ import { store as blockEditorStore } from '../../store';
25
25
  * It is used in `BlockSettingsMenuControls` to know if `ConvertToGroupButton`
26
26
  * should be rendered, to avoid ending up with an empty MenuGroup.
27
27
  *
28
+ * @param {?string[]} selectedClientIds An optional array of clientIds to group. The selected blocks
29
+ * from the block editor store are used if this is not provided.
30
+ *
28
31
  * @return {ConvertToGroupButtonProps} Returns the properties needed by `ConvertToGroupButton`.
29
32
  */
30
- export default function useConvertToGroupButtonProps() {
33
+ export default function useConvertToGroupButtonProps( selectedClientIds ) {
31
34
  const {
32
35
  clientIds,
33
36
  isGroupable,
34
37
  isUngroupable,
35
38
  blocksSelection,
36
39
  groupingBlockName,
37
- } = useSelect( ( select ) => {
38
- const {
39
- getBlockRootClientId,
40
- getBlocksByClientId,
41
- canInsertBlockType,
42
- getSelectedBlockClientIds,
43
- } = select( blockEditorStore );
44
- const { getGroupingBlockName } = select( blocksStore );
40
+ } = useSelect(
41
+ ( select ) => {
42
+ const {
43
+ getBlockRootClientId,
44
+ getBlocksByClientId,
45
+ canInsertBlockType,
46
+ getSelectedBlockClientIds,
47
+ } = select( blockEditorStore );
48
+ const { getGroupingBlockName } = select( blocksStore );
49
+
50
+ const _clientIds = selectedClientIds?.length
51
+ ? selectedClientIds
52
+ : getSelectedBlockClientIds();
53
+ const _groupingBlockName = getGroupingBlockName();
45
54
 
46
- const _clientIds = getSelectedBlockClientIds();
47
- const _groupingBlockName = getGroupingBlockName();
55
+ const rootClientId = !! _clientIds?.length
56
+ ? getBlockRootClientId( _clientIds[ 0 ] )
57
+ : undefined;
48
58
 
49
- const rootClientId = !! _clientIds?.length
50
- ? getBlockRootClientId( _clientIds[ 0 ] )
51
- : undefined;
59
+ const groupingBlockAvailable = canInsertBlockType(
60
+ _groupingBlockName,
61
+ rootClientId
62
+ );
52
63
 
53
- const groupingBlockAvailable = canInsertBlockType(
54
- _groupingBlockName,
55
- rootClientId
56
- );
64
+ const _blocksSelection = getBlocksByClientId( _clientIds );
57
65
 
58
- const _blocksSelection = getBlocksByClientId( _clientIds );
66
+ const isSingleGroupingBlock =
67
+ _blocksSelection.length === 1 &&
68
+ _blocksSelection[ 0 ]?.name === _groupingBlockName;
59
69
 
60
- const isSingleGroupingBlock =
61
- _blocksSelection.length === 1 &&
62
- _blocksSelection[ 0 ]?.name === _groupingBlockName;
70
+ // Do we have
71
+ // 1. Grouping block available to be inserted?
72
+ // 2. One or more blocks selected
73
+ const _isGroupable =
74
+ groupingBlockAvailable && _blocksSelection.length;
63
75
 
64
- // Do we have
65
- // 1. Grouping block available to be inserted?
66
- // 2. One or more blocks selected
67
- const _isGroupable = groupingBlockAvailable && _blocksSelection.length;
76
+ // Do we have a single Group Block selected and does that group have inner blocks?
77
+ const _isUngroupable =
78
+ isSingleGroupingBlock &&
79
+ !! _blocksSelection[ 0 ].innerBlocks.length;
80
+ return {
81
+ clientIds: _clientIds,
82
+ isGroupable: _isGroupable,
83
+ isUngroupable: _isUngroupable,
84
+ blocksSelection: _blocksSelection,
85
+ groupingBlockName: _groupingBlockName,
86
+ };
87
+ },
88
+ [ selectedClientIds ]
89
+ );
68
90
 
69
- // Do we have a single Group Block selected and does that group have inner blocks?
70
- const _isUngroupable =
71
- isSingleGroupingBlock &&
72
- !! _blocksSelection[ 0 ].innerBlocks.length;
73
- return {
74
- clientIds: _clientIds,
75
- isGroupable: _isGroupable,
76
- isUngroupable: _isUngroupable,
77
- blocksSelection: _blocksSelection,
78
- groupingBlockName: _groupingBlockName,
79
- };
80
- }, [] );
81
91
  return {
82
92
  clientIds,
83
93
  isGroupable,
@@ -50,14 +50,12 @@ export default function DateFormatPicker( {
50
50
  <fieldset className="block-editor-date-format-picker">
51
51
  <VisuallyHidden as="legend">{ __( 'Date format' ) }</VisuallyHidden>
52
52
  <ToggleControl
53
- label={
54
- <>
55
- { __( 'Default format' ) }
56
- <span className="block-editor-date-format-picker__default-format-toggle-control__hint">
57
- { dateI18n( defaultFormat, EXAMPLE_DATE ) }
58
- </span>
59
- </>
60
- }
53
+ __nextHasNoMarginBottom
54
+ label={ __( 'Default format' ) }
55
+ help={ `${ __( 'Example:' ) } ${ dateI18n(
56
+ defaultFormat,
57
+ EXAMPLE_DATE
58
+ ) }` }
61
59
  checked={ ! format }
62
60
  onChange={ ( checked ) =>
63
61
  onChange( checked ? null : defaultFormat )
@@ -2,11 +2,6 @@
2
2
  margin-bottom: $grid-unit-20;
3
3
  }
4
4
 
5
- .block-editor-date-format-picker__default-format-toggle-control__hint {
6
- color: $gray-700;
7
- display: block;
8
- }
9
-
10
5
  .block-editor-date-format-picker__custom-format-select-control__custom-option {
11
6
  border-top: 1px solid $gray-300;
12
7