@wordpress/block-editor 11.2.0 → 11.3.1

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 (675) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +28 -4
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/autocomplete/index.js +2 -7
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-actions/index.js +7 -2
  8. package/build/components/block-actions/index.js.map +1 -1
  9. package/build/components/block-alignment-matrix-control/index.js +2 -2
  10. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  11. package/build/components/block-card/index.js +2 -4
  12. package/build/components/block-card/index.js.map +1 -1
  13. package/build/components/block-edit/index.js +8 -0
  14. package/build/components/block-edit/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +15 -14
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/use-in-between-inserter.js +5 -0
  18. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  19. package/build/components/block-lock/modal.js +0 -1
  20. package/build/components/block-lock/modal.js.map +1 -1
  21. package/build/components/block-mover/mover-description.js +2 -2
  22. package/build/components/block-mover/mover-description.js.map +1 -1
  23. package/build/components/block-navigation/dropdown.js +3 -1
  24. package/build/components/block-navigation/dropdown.js.map +1 -1
  25. package/build/components/block-pattern-setup/index.js +1 -1
  26. package/build/components/block-pattern-setup/index.js.map +1 -1
  27. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  28. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  29. package/build/components/block-patterns-list/index.js +31 -3
  30. package/build/components/block-patterns-list/index.js.map +1 -1
  31. package/build/components/block-preview/auto.js +9 -11
  32. package/build/components/block-preview/auto.js.map +1 -1
  33. package/build/components/block-preview/index.js +32 -8
  34. package/build/components/block-preview/index.js.map +1 -1
  35. package/build/components/block-selection-clearer/index.js +1 -1
  36. package/build/components/block-selection-clearer/index.js.map +1 -1
  37. package/build/components/block-settings/container.native.js +7 -33
  38. package/build/components/block-settings/container.native.js.map +1 -1
  39. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -6
  40. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  41. package/build/components/block-settings-menu-controls/index.js +2 -8
  42. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  43. package/build/components/block-switcher/utils.js +1 -1
  44. package/build/components/block-switcher/utils.js.map +1 -1
  45. package/build/components/block-tools/selected-block-popover.js +55 -47
  46. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  48. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  49. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  50. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  51. package/build/components/color-style-selector/index.js +3 -1
  52. package/build/components/color-style-selector/index.js.map +1 -1
  53. package/build/components/date-format-picker/index.js +3 -4
  54. package/build/components/date-format-picker/index.js.map +1 -1
  55. package/build/components/font-family/index.js +1 -7
  56. package/build/components/font-family/index.js.map +1 -1
  57. package/build/components/font-sizes/fluid-utils.js +1 -1
  58. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  59. package/build/components/font-sizes/utils.js +1 -1
  60. package/build/components/font-sizes/utils.js.map +1 -1
  61. package/build/components/global-styles/context.js +22 -0
  62. package/build/components/global-styles/context.js.map +1 -0
  63. package/build/components/global-styles/hooks.js +142 -0
  64. package/build/components/global-styles/hooks.js.map +1 -0
  65. package/build/components/global-styles/index.js +42 -0
  66. package/build/components/global-styles/index.js.map +1 -0
  67. package/build/components/global-styles/typography-utils.js +92 -0
  68. package/build/components/global-styles/typography-utils.js.map +1 -0
  69. package/build/components/global-styles/use-global-styles-output.js +974 -0
  70. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  71. package/build/components/global-styles/utils.js +340 -0
  72. package/build/components/global-styles/utils.js.map +1 -0
  73. package/build/components/height-control/index.js +13 -1
  74. package/build/components/height-control/index.js.map +1 -1
  75. package/build/components/iframe/index.js +5 -3
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/image-editor/constants.js +1 -1
  78. package/build/components/image-editor/constants.js.map +1 -1
  79. package/build/components/image-editor/context.js +1 -2
  80. package/build/components/image-editor/context.js.map +1 -1
  81. package/build/components/image-editor/cropper.js +3 -1
  82. package/build/components/image-editor/cropper.js.map +1 -1
  83. package/build/components/image-editor/index.js +13 -9
  84. package/build/components/image-editor/index.js.map +1 -1
  85. package/build/components/image-editor/use-transform-image.js +11 -35
  86. package/build/components/image-editor/use-transform-image.js.map +1 -1
  87. package/build/components/image-size-control/index.js +1 -7
  88. package/build/components/image-size-control/index.js.map +1 -1
  89. package/build/components/index.js +8 -24
  90. package/build/components/index.js.map +1 -1
  91. package/build/components/inner-blocks/index.js +22 -32
  92. package/build/components/inner-blocks/index.js.map +1 -1
  93. package/build/components/inner-blocks/index.native.js +8 -23
  94. package/build/components/inner-blocks/index.native.js.map +1 -1
  95. package/build/components/inner-blocks/use-block-context.js +53 -0
  96. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  97. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  98. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab.js +9 -2
  100. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  101. package/build/components/inserter/block-types-tab.js +2 -2
  102. package/build/components/inserter/block-types-tab.js.map +1 -1
  103. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  104. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  105. package/build/components/inserter/index.js +5 -4
  106. package/build/components/inserter/index.js.map +1 -1
  107. package/build/components/inserter/media-tab/hooks.js +142 -56
  108. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-list.js +74 -21
  110. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  111. package/build/components/inserter/media-tab/media-panel.js +11 -13
  112. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  113. package/build/components/inserter/media-tab/media-tab.js +6 -3
  114. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  115. package/build/components/inserter/media-tab/utils.js +26 -15
  116. package/build/components/inserter/media-tab/utils.js.map +1 -1
  117. package/build/components/inserter/menu.js +4 -0
  118. package/build/components/inserter/menu.js.map +1 -1
  119. package/build/components/inserter/preview-panel.js +5 -3
  120. package/build/components/inserter/preview-panel.js.map +1 -1
  121. package/build/components/inserter/search-results.js +2 -7
  122. package/build/components/inserter/search-results.js.map +1 -1
  123. package/build/components/inserter-list-item/index.js +1 -9
  124. package/build/components/inserter-list-item/index.js.map +1 -1
  125. package/build/components/inspector-controls/fill.js +15 -2
  126. package/build/components/inspector-controls/fill.js.map +1 -1
  127. package/build/components/inspector-controls/fill.native.js +14 -1
  128. package/build/components/inspector-controls/fill.native.js.map +1 -1
  129. package/build/components/inspector-controls/groups.js +4 -0
  130. package/build/components/inspector-controls/groups.js.map +1 -1
  131. package/build/components/inspector-controls/index.js +2 -2
  132. package/build/components/inspector-controls/index.js.map +1 -1
  133. package/build/components/inspector-controls/slot.js +14 -1
  134. package/build/components/inspector-controls/slot.js.map +1 -1
  135. package/build/components/inspector-controls/slot.native.js +14 -1
  136. package/build/components/inspector-controls/slot.native.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  138. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/index.js +2 -2
  140. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  141. package/build/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  142. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  143. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  144. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  145. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  146. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  147. package/build/components/justify-content-control/ui.js +8 -1
  148. package/build/components/justify-content-control/ui.js.map +1 -1
  149. package/build/components/link-control/index.js +45 -17
  150. package/build/components/link-control/index.js.map +1 -1
  151. package/build/components/list-view/block.js +1 -1
  152. package/build/components/list-view/block.js.map +1 -1
  153. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  154. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  155. package/build/components/media-upload/index.native.js +4 -1
  156. package/build/components/media-upload/index.native.js.map +1 -1
  157. package/build/components/off-canvas-editor/appender.js +50 -3
  158. package/build/components/off-canvas-editor/appender.js.map +1 -1
  159. package/build/components/off-canvas-editor/block-contents.js +3 -1
  160. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  161. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  162. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  163. package/build/components/off-canvas-editor/block.js +6 -27
  164. package/build/components/off-canvas-editor/block.js.map +1 -1
  165. package/build/components/off-canvas-editor/branch.js +25 -10
  166. package/build/components/off-canvas-editor/branch.js.map +1 -1
  167. package/build/components/off-canvas-editor/index.js +27 -20
  168. package/build/components/off-canvas-editor/index.js.map +1 -1
  169. package/build/components/off-canvas-editor/link-ui.js +2 -2
  170. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  171. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  172. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  173. package/build/components/provider/index.js +21 -9
  174. package/build/components/provider/index.js.map +1 -1
  175. package/build/components/provider/index.native.js +5 -6
  176. package/build/components/provider/index.native.js.map +1 -1
  177. package/build/components/rich-text/use-before-input-rules.js +11 -3
  178. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  179. package/build/components/rich-text/utils.js +1 -1
  180. package/build/components/rich-text/utils.js.map +1 -1
  181. package/build/components/spacing-sizes-control/utils.js +2 -8
  182. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  183. package/build/components/tool-selector/index.js +3 -1
  184. package/build/components/tool-selector/index.js.map +1 -1
  185. package/build/components/url-popover/image-url-input-ui.js +7 -8
  186. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  187. package/build/components/use-block-display-information/index.js +1 -1
  188. package/build/components/use-block-display-information/index.js.map +1 -1
  189. package/build/experiments.js +45 -0
  190. package/build/experiments.js.map +1 -0
  191. package/build/experiments.native.js +40 -0
  192. package/build/experiments.native.js.map +1 -0
  193. package/build/hooks/anchor.js +2 -1
  194. package/build/hooks/anchor.js.map +1 -1
  195. package/build/hooks/border.js +1 -1
  196. package/build/hooks/border.js.map +1 -1
  197. package/build/hooks/child-layout.js +5 -1
  198. package/build/hooks/child-layout.js.map +1 -1
  199. package/build/hooks/color-panel.js +1 -1
  200. package/build/hooks/color-panel.js.map +1 -1
  201. package/build/hooks/color.js +3 -3
  202. package/build/hooks/color.js.map +1 -1
  203. package/build/hooks/custom-class-name.js +2 -1
  204. package/build/hooks/custom-class-name.js.map +1 -1
  205. package/build/hooks/dimensions.js +7 -5
  206. package/build/hooks/dimensions.js.map +1 -1
  207. package/build/hooks/margin.js +1 -0
  208. package/build/hooks/margin.js.map +1 -1
  209. package/build/hooks/padding.js +1 -0
  210. package/build/hooks/padding.js.map +1 -1
  211. package/build/hooks/position.js +39 -17
  212. package/build/hooks/position.js.map +1 -1
  213. package/build/hooks/typography.js +1 -1
  214. package/build/hooks/typography.js.map +1 -1
  215. package/build/hooks/use-color-props.js +3 -3
  216. package/build/hooks/use-color-props.js.map +1 -1
  217. package/build/hooks/utils.js +69 -3
  218. package/build/hooks/utils.js.map +1 -1
  219. package/build/index.js +10 -1
  220. package/build/index.js.map +1 -1
  221. package/build/layouts/constrained.js +3 -0
  222. package/build/layouts/constrained.js.map +1 -1
  223. package/build/layouts/flex.js +59 -9
  224. package/build/layouts/flex.js.map +1 -1
  225. package/build/layouts/flow.js +0 -18
  226. package/build/layouts/flow.js.map +1 -1
  227. package/build/store/actions.js +3 -30
  228. package/build/store/actions.js.map +1 -1
  229. package/build/store/defaults.js +5 -2
  230. package/build/store/defaults.js.map +1 -1
  231. package/build/store/index.js +11 -2
  232. package/build/store/index.js.map +1 -1
  233. package/build/store/private-actions.js +78 -0
  234. package/build/store/private-actions.js.map +1 -0
  235. package/build/store/private-selectors.js +32 -0
  236. package/build/store/private-selectors.js.map +1 -0
  237. package/build/store/reducer.js +1 -1
  238. package/build/store/reducer.js.map +1 -1
  239. package/build/store/selectors.js +60 -48
  240. package/build/store/selectors.js.map +1 -1
  241. package/build/utils/block-variation-transforms.js +1 -1
  242. package/build/utils/block-variation-transforms.js.map +1 -1
  243. package/build/utils/parse-css-unit-to-px.js +1 -1
  244. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  245. package/build/utils/transform-styles/index.js +1 -7
  246. package/build/utils/transform-styles/index.js.map +1 -1
  247. package/build-module/components/alignment-control/ui.js +1 -1
  248. package/build-module/components/alignment-control/ui.js.map +1 -1
  249. package/build-module/components/autocomplete/index.js +2 -6
  250. package/build-module/components/autocomplete/index.js.map +1 -1
  251. package/build-module/components/block-actions/index.js +7 -2
  252. package/build-module/components/block-actions/index.js.map +1 -1
  253. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  254. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  255. package/build-module/components/block-card/index.js +2 -4
  256. package/build-module/components/block-card/index.js.map +1 -1
  257. package/build-module/components/block-edit/index.js +7 -0
  258. package/build-module/components/block-edit/index.js.map +1 -1
  259. package/build-module/components/block-inspector/index.js +15 -14
  260. package/build-module/components/block-inspector/index.js.map +1 -1
  261. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  262. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  263. package/build-module/components/block-lock/modal.js +0 -1
  264. package/build-module/components/block-lock/modal.js.map +1 -1
  265. package/build-module/components/block-mover/mover-description.js +2 -2
  266. package/build-module/components/block-mover/mover-description.js.map +1 -1
  267. package/build-module/components/block-navigation/dropdown.js +3 -1
  268. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  269. package/build-module/components/block-pattern-setup/index.js +1 -1
  270. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  271. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  272. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  273. package/build-module/components/block-patterns-list/index.js +32 -3
  274. package/build-module/components/block-patterns-list/index.js.map +1 -1
  275. package/build-module/components/block-preview/auto.js +9 -11
  276. package/build-module/components/block-preview/auto.js.map +1 -1
  277. package/build-module/components/block-preview/index.js +31 -8
  278. package/build-module/components/block-preview/index.js.map +1 -1
  279. package/build-module/components/block-selection-clearer/index.js +1 -1
  280. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  281. package/build-module/components/block-settings/container.native.js +6 -30
  282. package/build-module/components/block-settings/container.native.js.map +1 -1
  283. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -6
  284. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  285. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  286. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  287. package/build-module/components/block-switcher/utils.js +1 -1
  288. package/build-module/components/block-switcher/utils.js.map +1 -1
  289. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  290. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  291. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  292. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  293. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  294. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  295. package/build-module/components/color-style-selector/index.js +3 -1
  296. package/build-module/components/color-style-selector/index.js.map +1 -1
  297. package/build-module/components/date-format-picker/index.js +4 -5
  298. package/build-module/components/date-format-picker/index.js.map +1 -1
  299. package/build-module/components/font-family/index.js +1 -6
  300. package/build-module/components/font-family/index.js.map +1 -1
  301. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  302. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  303. package/build-module/components/font-sizes/utils.js +1 -1
  304. package/build-module/components/font-sizes/utils.js.map +1 -1
  305. package/build-module/components/global-styles/context.js +12 -0
  306. package/build-module/components/global-styles/context.js.map +1 -0
  307. package/build-module/components/global-styles/hooks.js +121 -0
  308. package/build-module/components/global-styles/hooks.js.map +1 -0
  309. package/build-module/components/global-styles/index.js +4 -0
  310. package/build-module/components/global-styles/index.js.map +1 -0
  311. package/build-module/components/global-styles/typography-utils.js +84 -0
  312. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  313. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  314. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  315. package/build-module/components/global-styles/utils.js +321 -0
  316. package/build-module/components/global-styles/utils.js.map +1 -0
  317. package/build-module/components/height-control/index.js +14 -1
  318. package/build-module/components/height-control/index.js.map +1 -1
  319. package/build-module/components/iframe/index.js +6 -4
  320. package/build-module/components/iframe/index.js.map +1 -1
  321. package/build-module/components/image-editor/constants.js +1 -1
  322. package/build-module/components/image-editor/constants.js.map +1 -1
  323. package/build-module/components/image-editor/context.js +1 -2
  324. package/build-module/components/image-editor/context.js.map +1 -1
  325. package/build-module/components/image-editor/cropper.js +3 -1
  326. package/build-module/components/image-editor/cropper.js.map +1 -1
  327. package/build-module/components/image-editor/index.js +13 -3
  328. package/build-module/components/image-editor/index.js.map +1 -1
  329. package/build-module/components/image-editor/use-transform-image.js +12 -37
  330. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  331. package/build-module/components/image-size-control/index.js +1 -6
  332. package/build-module/components/image-size-control/index.js.map +1 -1
  333. package/build-module/components/index.js +2 -3
  334. package/build-module/components/index.js.map +1 -1
  335. package/build-module/components/inner-blocks/index.js +21 -32
  336. package/build-module/components/inner-blocks/index.js.map +1 -1
  337. package/build-module/components/inner-blocks/index.native.js +9 -22
  338. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  339. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  340. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  341. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  342. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  343. package/build-module/components/inserter/block-patterns-tab.js +9 -2
  344. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  345. package/build-module/components/inserter/block-types-tab.js +3 -3
  346. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  347. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  348. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  349. package/build-module/components/inserter/index.js +5 -4
  350. package/build-module/components/inserter/index.js.map +1 -1
  351. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  352. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  353. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  354. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  355. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  356. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  357. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  358. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  359. package/build-module/components/inserter/media-tab/utils.js +27 -15
  360. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  361. package/build-module/components/inserter/menu.js +4 -0
  362. package/build-module/components/inserter/menu.js.map +1 -1
  363. package/build-module/components/inserter/preview-panel.js +5 -3
  364. package/build-module/components/inserter/preview-panel.js.map +1 -1
  365. package/build-module/components/inserter/search-results.js +2 -6
  366. package/build-module/components/inserter/search-results.js.map +1 -1
  367. package/build-module/components/inserter-list-item/index.js +1 -9
  368. package/build-module/components/inserter-list-item/index.js.map +1 -1
  369. package/build-module/components/inspector-controls/fill.js +14 -2
  370. package/build-module/components/inspector-controls/fill.js.map +1 -1
  371. package/build-module/components/inspector-controls/fill.native.js +13 -1
  372. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  373. package/build-module/components/inspector-controls/groups.js +4 -0
  374. package/build-module/components/inspector-controls/groups.js.map +1 -1
  375. package/build-module/components/inspector-controls/index.js +2 -2
  376. package/build-module/components/inspector-controls/index.js.map +1 -1
  377. package/build-module/components/inspector-controls/slot.js +13 -1
  378. package/build-module/components/inspector-controls/slot.js.map +1 -1
  379. package/build-module/components/inspector-controls/slot.native.js +13 -1
  380. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  381. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  382. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  383. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  384. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  385. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  386. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  387. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  388. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  389. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  390. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  391. package/build-module/components/justify-content-control/ui.js +9 -2
  392. package/build-module/components/justify-content-control/ui.js.map +1 -1
  393. package/build-module/components/link-control/index.js +45 -16
  394. package/build-module/components/link-control/index.js.map +1 -1
  395. package/build-module/components/list-view/block.js +1 -1
  396. package/build-module/components/list-view/block.js.map +1 -1
  397. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  398. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  399. package/build-module/components/media-upload/index.native.js +4 -1
  400. package/build-module/components/media-upload/index.native.js.map +1 -1
  401. package/build-module/components/off-canvas-editor/appender.js +47 -4
  402. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  403. package/build-module/components/off-canvas-editor/block-contents.js +2 -1
  404. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  405. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  406. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  407. package/build-module/components/off-canvas-editor/block.js +6 -25
  408. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  409. package/build-module/components/off-canvas-editor/branch.js +23 -11
  410. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  411. package/build-module/components/off-canvas-editor/index.js +27 -19
  412. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  413. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  414. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  415. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  416. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  417. package/build-module/components/provider/index.js +16 -9
  418. package/build-module/components/provider/index.js.map +1 -1
  419. package/build-module/components/provider/index.native.js +4 -4
  420. package/build-module/components/provider/index.native.js.map +1 -1
  421. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  422. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  423. package/build-module/components/rich-text/utils.js +1 -1
  424. package/build-module/components/rich-text/utils.js.map +1 -1
  425. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  426. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  427. package/build-module/components/tool-selector/index.js +3 -1
  428. package/build-module/components/tool-selector/index.js.map +1 -1
  429. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  430. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  431. package/build-module/components/use-block-display-information/index.js +1 -1
  432. package/build-module/components/use-block-display-information/index.js.map +1 -1
  433. package/build-module/experiments.js +25 -0
  434. package/build-module/experiments.js.map +1 -0
  435. package/build-module/experiments.native.js +23 -0
  436. package/build-module/experiments.native.js.map +1 -0
  437. package/build-module/hooks/anchor.js +2 -1
  438. package/build-module/hooks/anchor.js.map +1 -1
  439. package/build-module/hooks/border.js +1 -1
  440. package/build-module/hooks/border.js.map +1 -1
  441. package/build-module/hooks/child-layout.js +5 -1
  442. package/build-module/hooks/child-layout.js.map +1 -1
  443. package/build-module/hooks/color-panel.js +1 -1
  444. package/build-module/hooks/color-panel.js.map +1 -1
  445. package/build-module/hooks/color.js +3 -3
  446. package/build-module/hooks/color.js.map +1 -1
  447. package/build-module/hooks/custom-class-name.js +2 -1
  448. package/build-module/hooks/custom-class-name.js.map +1 -1
  449. package/build-module/hooks/dimensions.js +6 -5
  450. package/build-module/hooks/dimensions.js.map +1 -1
  451. package/build-module/hooks/margin.js +1 -0
  452. package/build-module/hooks/margin.js.map +1 -1
  453. package/build-module/hooks/padding.js +1 -0
  454. package/build-module/hooks/padding.js.map +1 -1
  455. package/build-module/hooks/position.js +36 -16
  456. package/build-module/hooks/position.js.map +1 -1
  457. package/build-module/hooks/typography.js +1 -1
  458. package/build-module/hooks/typography.js.map +1 -1
  459. package/build-module/hooks/use-color-props.js +3 -3
  460. package/build-module/hooks/use-color-props.js.map +1 -1
  461. package/build-module/hooks/utils.js +70 -4
  462. package/build-module/hooks/utils.js.map +1 -1
  463. package/build-module/index.js +1 -0
  464. package/build-module/index.js.map +1 -1
  465. package/build-module/layouts/constrained.js +3 -0
  466. package/build-module/layouts/constrained.js.map +1 -1
  467. package/build-module/layouts/flex.js +60 -10
  468. package/build-module/layouts/flex.js.map +1 -1
  469. package/build-module/layouts/flow.js +0 -18
  470. package/build-module/layouts/flow.js.map +1 -1
  471. package/build-module/store/actions.js +2 -26
  472. package/build-module/store/actions.js.map +1 -1
  473. package/build-module/store/defaults.js +5 -2
  474. package/build-module/store/defaults.js.map +1 -1
  475. package/build-module/store/index.js +8 -2
  476. package/build-module/store/index.js.map +1 -1
  477. package/build-module/store/private-actions.js +66 -0
  478. package/build-module/store/private-actions.js.map +1 -0
  479. package/build-module/store/private-selectors.js +23 -0
  480. package/build-module/store/private-selectors.js.map +1 -0
  481. package/build-module/store/reducer.js +1 -1
  482. package/build-module/store/reducer.js.map +1 -1
  483. package/build-module/store/selectors.js +48 -37
  484. package/build-module/store/selectors.js.map +1 -1
  485. package/build-module/utils/block-variation-transforms.js +1 -1
  486. package/build-module/utils/block-variation-transforms.js.map +1 -1
  487. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  488. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  489. package/build-module/utils/transform-styles/index.js +1 -6
  490. package/build-module/utils/transform-styles/index.js.map +1 -1
  491. package/build-style/content-rtl.css +283 -3
  492. package/build-style/content.css +283 -3
  493. package/build-style/style-rtl.css +105 -221
  494. package/build-style/style.css +105 -221
  495. package/package.json +30 -29
  496. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  497. package/src/components/alignment-control/test/index.js +5 -15
  498. package/src/components/alignment-control/ui.js +1 -1
  499. package/src/components/autocomplete/index.js +3 -6
  500. package/src/components/block-actions/index.js +9 -0
  501. package/src/components/block-alignment-control/test/index.js +3 -11
  502. package/src/components/block-alignment-matrix-control/index.js +1 -2
  503. package/src/components/block-card/index.js +1 -4
  504. package/src/components/block-content-overlay/content.scss +4 -4
  505. package/src/components/block-edit/index.js +15 -1
  506. package/src/components/block-icon/content.scss +31 -0
  507. package/src/components/block-inspector/index.js +13 -17
  508. package/src/components/block-list/use-in-between-inserter.js +5 -0
  509. package/src/components/block-lock/modal.js +0 -1
  510. package/src/components/block-mover/mover-description.js +2 -2
  511. package/src/components/block-mover/stories/index.js +3 -3
  512. package/src/components/block-navigation/dropdown.js +1 -1
  513. package/src/components/block-pattern-setup/index.js +1 -4
  514. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  515. package/src/components/block-patterns-list/index.js +29 -3
  516. package/src/components/block-preview/README.md +9 -9
  517. package/src/components/block-preview/auto.js +9 -11
  518. package/src/components/block-preview/content.scss +23 -0
  519. package/src/components/block-preview/index.js +40 -10
  520. package/src/components/block-preview/style.scss +0 -23
  521. package/src/components/block-selection-clearer/index.js +1 -1
  522. package/src/components/block-selection-clearer/test/index.js +6 -6
  523. package/src/components/block-settings/container.native.js +7 -26
  524. package/src/components/block-settings-menu/block-settings-dropdown.js +13 -5
  525. package/src/components/block-settings-menu-controls/index.js +2 -10
  526. package/src/components/block-switcher/test/index.js +43 -44
  527. package/src/components/block-switcher/utils.js +1 -1
  528. package/src/components/block-tools/selected-block-popover.js +77 -80
  529. package/src/components/block-tools/style.scss +0 -1
  530. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  531. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  532. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  533. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  534. package/src/components/color-style-selector/index.js +1 -1
  535. package/src/components/colors/test/with-colors.js +2 -8
  536. package/src/components/date-format-picker/index.js +23 -24
  537. package/src/components/date-format-picker/style.scss +0 -6
  538. package/src/components/default-block-appender/content.scss +18 -0
  539. package/src/components/default-block-appender/test/index.js +2 -8
  540. package/src/components/font-family/index.js +1 -6
  541. package/src/components/font-sizes/fluid-utils.js +1 -1
  542. package/src/components/font-sizes/utils.js +1 -1
  543. package/src/components/global-styles/README.md +77 -0
  544. package/src/components/global-styles/context.js +15 -0
  545. package/src/components/global-styles/hooks.js +145 -0
  546. package/src/components/global-styles/index.js +7 -0
  547. package/src/components/global-styles/test/typography-utils.js +393 -0
  548. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  549. package/src/components/global-styles/test/utils.js +206 -0
  550. package/src/components/global-styles/typography-utils.js +87 -0
  551. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  552. package/src/components/global-styles/utils.js +373 -0
  553. package/src/components/height-control/README.md +55 -0
  554. package/src/components/height-control/index.js +13 -1
  555. package/src/components/iframe/index.js +8 -2
  556. package/src/components/image-editor/constants.js +1 -1
  557. package/src/components/image-editor/context.js +5 -9
  558. package/src/components/image-editor/cropper.js +3 -1
  559. package/src/components/image-editor/index.js +13 -4
  560. package/src/components/image-editor/use-transform-image.js +14 -55
  561. package/src/components/image-size-control/index.js +1 -6
  562. package/src/components/index.js +2 -6
  563. package/src/components/inner-blocks/index.js +29 -33
  564. package/src/components/inner-blocks/index.native.js +27 -47
  565. package/src/components/inner-blocks/use-block-context.js +47 -0
  566. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  567. package/src/components/inserter/block-patterns-tab.js +9 -1
  568. package/src/components/inserter/block-types-tab.js +3 -4
  569. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  570. package/src/components/inserter/index.js +3 -4
  571. package/src/components/inserter/media-tab/hooks.js +167 -65
  572. package/src/components/inserter/media-tab/media-list.js +94 -26
  573. package/src/components/inserter/media-tab/media-panel.js +9 -20
  574. package/src/components/inserter/media-tab/media-tab.js +12 -4
  575. package/src/components/inserter/media-tab/utils.js +20 -10
  576. package/src/components/inserter/menu.js +8 -0
  577. package/src/components/inserter/preview-panel.js +4 -2
  578. package/src/components/inserter/search-results.js +2 -6
  579. package/src/components/inserter/stories/index.js +9 -9
  580. package/src/components/inserter/style.scss +58 -11
  581. package/src/components/inserter-list-item/index.js +0 -7
  582. package/src/components/inspector-controls/README.md +3 -7
  583. package/src/components/inspector-controls/fill.js +15 -1
  584. package/src/components/inspector-controls/fill.native.js +14 -1
  585. package/src/components/inspector-controls/groups.js +3 -0
  586. package/src/components/inspector-controls/index.js +2 -6
  587. package/src/components/inspector-controls/slot.js +14 -1
  588. package/src/components/inspector-controls/slot.native.js +14 -1
  589. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  590. package/src/components/inspector-controls-tabs/index.js +2 -4
  591. package/src/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  592. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  593. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +21 -10
  594. package/src/components/justify-content-control/ui.js +9 -0
  595. package/src/components/link-control/index.js +59 -23
  596. package/src/components/link-control/style.scss +7 -24
  597. package/src/components/link-control/test/index.js +134 -5
  598. package/src/components/list-view/block.js +1 -1
  599. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  600. package/src/components/media-replace-flow/test/index.js +4 -12
  601. package/src/components/media-upload/index.native.js +2 -2
  602. package/src/components/off-canvas-editor/README.md +2 -2
  603. package/src/components/off-canvas-editor/appender.js +93 -37
  604. package/src/components/off-canvas-editor/block-contents.js +2 -1
  605. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  606. package/src/components/off-canvas-editor/block.js +3 -42
  607. package/src/components/off-canvas-editor/branch.js +32 -5
  608. package/src/components/off-canvas-editor/index.js +20 -20
  609. package/src/components/off-canvas-editor/link-ui.js +2 -2
  610. package/src/components/off-canvas-editor/style.scss +5 -1
  611. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  612. package/src/components/provider/index.js +33 -14
  613. package/src/components/provider/index.native.js +4 -3
  614. package/src/components/provider/test/experimental-provider.js +94 -0
  615. package/src/components/provider/test/use-block-sync.js +10 -0
  616. package/src/components/responsive-block-control/test/index.js +1 -5
  617. package/src/components/rich-text/use-before-input-rules.js +10 -2
  618. package/src/components/rich-text/utils.js +1 -1
  619. package/src/components/spacing-sizes-control/utils.js +2 -7
  620. package/src/components/tool-selector/index.js +1 -1
  621. package/src/components/url-input/test/button.js +24 -24
  622. package/src/components/url-popover/image-url-input-ui.js +7 -8
  623. package/src/components/url-popover/style.scss +0 -10
  624. package/src/components/use-block-display-information/index.js +1 -1
  625. package/src/components/warning/{style.scss → content.scss} +0 -0
  626. package/src/components/warning/test/index.js +1 -5
  627. package/src/content.scss +7 -0
  628. package/src/experiments.js +27 -0
  629. package/src/experiments.native.js +25 -0
  630. package/src/hooks/anchor.js +2 -1
  631. package/src/hooks/border.js +1 -1
  632. package/src/hooks/child-layout.js +6 -1
  633. package/src/hooks/color-panel.js +1 -1
  634. package/src/hooks/color.js +3 -3
  635. package/src/hooks/custom-class-name.js +2 -1
  636. package/src/hooks/dimensions.js +6 -6
  637. package/src/hooks/layout.scss +4 -0
  638. package/src/hooks/margin.js +1 -0
  639. package/src/hooks/padding.js +1 -0
  640. package/src/hooks/position.js +56 -36
  641. package/src/hooks/test/align.native.js +1 -1
  642. package/src/hooks/test/utils.js +104 -0
  643. package/src/hooks/typography.js +1 -1
  644. package/src/hooks/use-color-props.js +3 -3
  645. package/src/hooks/utils.js +68 -2
  646. package/src/index.js +1 -0
  647. package/src/layouts/constrained.js +3 -0
  648. package/src/layouts/flex.js +66 -14
  649. package/src/layouts/flow.js +0 -9
  650. package/src/store/actions.js +2 -26
  651. package/src/store/defaults.js +7 -2
  652. package/src/store/index.js +8 -2
  653. package/src/store/private-actions.js +65 -0
  654. package/src/store/private-selectors.js +20 -0
  655. package/src/store/reducer.js +1 -1
  656. package/src/store/selectors.js +103 -62
  657. package/src/store/test/actions.js +0 -18
  658. package/src/store/test/private-actions.js +22 -0
  659. package/src/store/test/private-selectors.js +52 -0
  660. package/src/store/test/selectors.js +52 -54
  661. package/src/style.scss +3 -5
  662. package/src/utils/block-variation-transforms.js +1 -1
  663. package/src/utils/parse-css-unit-to-px.js +3 -1
  664. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  665. package/src/utils/transform-styles/index.js +1 -6
  666. package/build/components/inner-blocks/get-block-context.js +0 -45
  667. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  668. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  669. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  670. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  671. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  672. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  673. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  674. package/src/components/inner-blocks/get-block-context.js +0 -39
  675. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -33,7 +33,6 @@ import {
33
33
  } from '../block-mover/button';
34
34
  import ListViewBlockContents from './block-contents';
35
35
  import BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';
36
- import BlockEditButton from './block-edit-button';
37
36
  import { useListViewContext } from './context';
38
37
  import { getBlockPositionDescription } from './utils';
39
38
  import { store as blockEditorStore } from '../../store';
@@ -55,7 +54,6 @@ function ListViewBlock( {
55
54
  isExpanded,
56
55
  selectedClientIds,
57
56
  preventAnnouncement,
58
- selectBlockInCanvas,
59
57
  } ) {
60
58
  const cellRef = useRef( null );
61
59
  const [ isHovered, setIsHovered ] = useState( false );
@@ -186,15 +184,6 @@ function ListViewBlock( {
186
184
  )
187
185
  : __( 'Options' );
188
186
 
189
- const editAriaLabel = blockInformation
190
- ? sprintf(
191
- // translators: %s: The title of the block.
192
- __( 'Edit %s block' ),
193
- blockInformation.title
194
- )
195
- : __( 'Edit' );
196
-
197
- const isEditable = !! block && block.name !== 'core/page-list-item';
198
187
  const hasSiblings = siblingBlockCount > 0;
199
188
  const hasRenderedMovers = showBlockMovers && hasSiblings;
200
189
  const moverCellClassName = classnames(
@@ -207,16 +196,11 @@ function ListViewBlock( {
207
196
  { 'is-visible': isHovered || isFirstSelectedBlock }
208
197
  );
209
198
 
210
- const listViewBlockEditClassName = classnames(
211
- 'block-editor-list-view-block__menu-cell',
212
- { 'is-visible': isHovered || isFirstSelectedBlock }
213
- );
214
-
215
199
  let colSpan;
216
200
  if ( hasRenderedMovers ) {
217
- colSpan = 2;
201
+ colSpan = 1;
218
202
  } else if ( ! showBlockActions ) {
219
- colSpan = 3;
203
+ colSpan = 2;
220
204
  }
221
205
 
222
206
  const classes = classnames( {
@@ -269,13 +253,7 @@ function ListViewBlock( {
269
253
  <div className="block-editor-list-view-block__contents-container">
270
254
  <ListViewBlockContents
271
255
  block={ block }
272
- onClick={
273
- selectBlockInCanvas
274
- ? selectEditorBlock
275
- : ( event ) => {
276
- event.preventDefault();
277
- }
278
- }
256
+ onClick={ selectEditorBlock }
279
257
  onToggleExpanded={ toggleExpanded }
280
258
  isSelected={ isSelected }
281
259
  position={ position }
@@ -331,28 +309,11 @@ function ListViewBlock( {
331
309
 
332
310
  { showBlockActions && (
333
311
  <>
334
- { isEditable && (
335
- <TreeGridCell
336
- className={ listViewBlockEditClassName }
337
- aria-selected={
338
- !! isSelected || forceSelectionContentLock
339
- }
340
- >
341
- { ( props ) => (
342
- <BlockEditButton
343
- { ...props }
344
- label={ editAriaLabel }
345
- clientId={ clientId }
346
- />
347
- ) }
348
- </TreeGridCell>
349
- ) }
350
312
  <TreeGridCell
351
313
  className={ listViewBlockSettingsClassName }
352
314
  aria-selected={
353
315
  !! isSelected || forceSelectionContentLock
354
316
  }
355
- colSpan={ isEditable ? 1 : 2 } // When an item is not editable then we don't output the cell for the edit button, so we need to adjust the colspan so that the HTML is valid.
356
317
  >
357
318
  { ( { ref, tabIndex, onFocus } ) => (
358
319
  <>
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { memo } from '@wordpress/element';
4
+ import {
5
+ __experimentalTreeGridRow as TreeGridRow,
6
+ __experimentalTreeGridCell as TreeGridCell,
7
+ } from '@wordpress/components';
5
8
  import { AsyncModeProvider, useSelect } from '@wordpress/data';
9
+ import { memo } from '@wordpress/element';
6
10
 
7
11
  /**
8
12
  * Internal dependencies
9
13
  */
14
+
15
+ import { Appender } from './appender';
10
16
  import ListViewBlock from './block';
11
17
  import { useListViewContext } from './context';
12
18
  import { isClientIdSelected } from './utils';
@@ -91,7 +97,6 @@ function ListViewBranch( props ) {
91
97
  isExpanded,
92
98
  parentId,
93
99
  shouldShowInnerBlocks = true,
94
- selectBlockInCanvas,
95
100
  } = props;
96
101
 
97
102
  const isContentLocked = useSelect(
@@ -111,8 +116,14 @@ function ListViewBranch( props ) {
111
116
  return null;
112
117
  }
113
118
 
119
+ // Only show the appender at the first level.
120
+ const showAppender = level === 1;
121
+
114
122
  const filteredBlocks = blocks.filter( Boolean );
115
123
  const blockCount = filteredBlocks.length;
124
+
125
+ // The appender means an extra row in List View, so add 1 to the row count.
126
+ const rowCount = showAppender ? blockCount + 1 : blockCount;
116
127
  let nextPosition = listPosition;
117
128
 
118
129
  return (
@@ -167,14 +178,13 @@ function ListViewBranch( props ) {
167
178
  isDragged={ isDragged }
168
179
  level={ level }
169
180
  position={ position }
170
- rowCount={ blockCount }
181
+ rowCount={ rowCount }
171
182
  siblingBlockCount={ blockCount }
172
183
  showBlockMovers={ showBlockMovers }
173
184
  path={ updatedPath }
174
185
  isExpanded={ shouldExpand }
175
186
  listPosition={ nextPosition }
176
187
  selectedClientIds={ selectedClientIds }
177
- selectBlockInCanvas={ selectBlockInCanvas }
178
188
  />
179
189
  ) }
180
190
  { ! showBlock && (
@@ -195,12 +205,29 @@ function ListViewBranch( props ) {
195
205
  isBranchSelected={ isSelectedBranch }
196
206
  selectedClientIds={ selectedClientIds }
197
207
  isExpanded={ isExpanded }
198
- selectBlockInCanvas={ selectBlockInCanvas }
199
208
  />
200
209
  ) }
201
210
  </AsyncModeProvider>
202
211
  );
203
212
  } ) }
213
+ { showAppender && (
214
+ <TreeGridRow
215
+ level={ level }
216
+ setSize={ rowCount }
217
+ positionInSet={ rowCount }
218
+ isExpanded={ true }
219
+ >
220
+ <TreeGridCell>
221
+ { ( treeGridCellProps ) => (
222
+ <Appender
223
+ nestingLevel={ level }
224
+ blockCount={ blockCount }
225
+ { ...treeGridCellProps }
226
+ />
227
+ ) }
228
+ </TreeGridCell>
229
+ </TreeGridRow>
230
+ ) }
204
231
  </>
205
232
  );
206
233
  }
@@ -32,7 +32,6 @@ import useListViewClientIds from './use-list-view-client-ids';
32
32
  import useListViewDropZone from './use-list-view-drop-zone';
33
33
  import useListViewExpandSelectedItem from './use-list-view-expand-selected-item';
34
34
  import { store as blockEditorStore } from '../../store';
35
- import { Appender } from './appender';
36
35
 
37
36
  const expanded = ( state, action ) => {
38
37
  if ( Array.isArray( action.clientIds ) ) {
@@ -55,26 +54,29 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
55
54
  /**
56
55
  * Show a hierarchical list of blocks.
57
56
  *
58
- * @param {Object} props Components props.
59
- * @param {string} props.id An HTML element id for the root element of ListView.
60
- * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
61
- * @param {boolean} props.showBlockMovers Flag to enable block movers
62
- * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
63
- * @param {boolean} props.selectBlockInCanvas Flag to determine whether the list view should be a block selection mechanism.
64
- * @param {Object} props.LeafMoreMenu Optional more menu substitution.
65
- * @param {Object} ref Forwarded ref
57
+ * @param {Object} props Components props.
58
+ * @param {string} props.id An HTML element id for the root element of ListView.
59
+ * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
60
+ * @param {boolean} props.showBlockMovers Flag to enable block movers
61
+ * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
62
+ * @param {Object} props.LeafMoreMenu Optional more menu substitution.
63
+ * @param {string} props.description Optional accessible description for the tree grid component.
64
+ * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
65
+ * @param {Object} ref Forwarded ref
66
66
  */
67
- function __ExperimentalOffCanvasEditor(
67
+ function OffCanvasEditor(
68
68
  {
69
69
  id,
70
70
  blocks,
71
71
  showBlockMovers = false,
72
72
  isExpanded = false,
73
- selectBlockInCanvas = true,
74
73
  LeafMoreMenu,
74
+ description = __( 'Block navigation structure' ),
75
+ onSelect,
75
76
  },
76
77
  ref
77
78
  ) {
79
+ const { getBlock } = useSelect( blockEditorStore );
78
80
  const { clientIdsTree, draggedClientIds, selectedClientIds } =
79
81
  useListViewClientIds( blocks );
80
82
 
@@ -114,8 +116,11 @@ function __ExperimentalOffCanvasEditor(
114
116
  ( event, blockClientId ) => {
115
117
  updateBlockSelection( event, blockClientId );
116
118
  setSelectedTreeId( blockClientId );
119
+ if ( onSelect ) {
120
+ onSelect( getBlock( blockClientId ) );
121
+ }
117
122
  },
118
- [ setSelectedTreeId, updateBlockSelection ]
123
+ [ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]
119
124
  );
120
125
  useEffect( () => {
121
126
  isMounted.current = true;
@@ -217,7 +222,8 @@ function __ExperimentalOffCanvasEditor(
217
222
  onCollapseRow={ collapseRow }
218
223
  onExpandRow={ expandRow }
219
224
  onFocusRow={ focusRow }
220
- applicationAriaLabel={ __( 'Block navigation structure' ) }
225
+ // eslint-disable-next-line jsx-a11y/aria-props
226
+ aria-description={ description }
221
227
  >
222
228
  <ListViewContext.Provider value={ contextValue }>
223
229
  <ListViewBranch
@@ -228,7 +234,6 @@ function __ExperimentalOffCanvasEditor(
228
234
  selectedClientIds={ selectedClientIds }
229
235
  isExpanded={ isExpanded }
230
236
  shouldShowInnerBlocks={ shouldShowInnerBlocks }
231
- selectBlockInCanvas={ selectBlockInCanvas }
232
237
  />
233
238
  <TreeGridRow
234
239
  level={ 1 }
@@ -236,11 +241,6 @@ function __ExperimentalOffCanvasEditor(
236
241
  positionInSet={ 1 }
237
242
  isExpanded={ true }
238
243
  >
239
- <TreeGridCell>
240
- { ( treeGridCellProps ) => (
241
- <Appender { ...treeGridCellProps } />
242
- ) }
243
- </TreeGridCell>
244
244
  { ! clientIdsTree.length && (
245
245
  <TreeGridCell withoutGridItem>
246
246
  <div className="offcanvas-editor-list-view-is-empty">
@@ -258,4 +258,4 @@ function __ExperimentalOffCanvasEditor(
258
258
  );
259
259
  }
260
260
 
261
- export default forwardRef( __ExperimentalOffCanvasEditor );
261
+ export default forwardRef( OffCanvasEditor );
@@ -99,10 +99,10 @@ function LinkControlTransforms( { clientId } ) {
99
99
  { __( 'Transform' ) }
100
100
  </h3>
101
101
  <div className="link-control-transform__items">
102
- { transforms.map( ( item, index ) => {
102
+ { transforms.map( ( item ) => {
103
103
  return (
104
104
  <Button
105
- key={ `transform-${ index }` }
105
+ key={ `transform-${ item.name }` }
106
106
  onClick={ () =>
107
107
  replaceBlock(
108
108
  clientId,
@@ -1,4 +1,4 @@
1
- .offcanvas-editor__appender .block-editor-inserter__toggle {
1
+ .offcanvas-editor-appender .block-editor-inserter__toggle {
2
2
  background-color: #1e1e1e;
3
3
  color: #fff;
4
4
  margin: $grid-unit-10 0 0 24px;
@@ -14,6 +14,10 @@
14
14
  }
15
15
  }
16
16
 
17
+ .offcanvas-editor-appender__description {
18
+ display: none;
19
+ }
20
+
17
21
  .offcanvas-editor-list-view-tree-wrapper {
18
22
  max-width: 100%;
19
23
  overflow-x: auto;
@@ -76,7 +76,7 @@ const ALLOWED_DROP_EDGES = [ 'top', 'bottom' ];
76
76
  * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.
77
77
  * @param {WPPoint} position The point representing the cursor position when dragging.
78
78
  *
79
- * @return {WPListViewDropZoneTarget} An object containing data about the drop target.
79
+ * @return {WPListViewDropZoneTarget | undefined} An object containing data about the drop target.
80
80
  */
81
81
  function getListViewDropTarget( blocksData, position ) {
82
82
  let candidateEdge;
@@ -11,24 +11,43 @@ import withRegistryProvider from './with-registry-provider';
11
11
  import useBlockSync from './use-block-sync';
12
12
  import { store as blockEditorStore } from '../../store';
13
13
  import { BlockRefsProvider } from './block-refs-provider';
14
+ import { unlock } from '../../experiments';
14
15
 
15
16
  /** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */
16
17
 
17
- function BlockEditorProvider( props ) {
18
- const { children, settings } = props;
18
+ export const ExperimentalBlockEditorProvider = withRegistryProvider(
19
+ ( props ) => {
20
+ const { children, settings, stripExperimentalSettings = false } = props;
19
21
 
20
- const { updateSettings } = useDispatch( blockEditorStore );
21
- useEffect( () => {
22
- updateSettings( {
23
- ...settings,
24
- __internalIsInitialized: true,
25
- } );
26
- }, [ settings ] );
22
+ const { __experimentalUpdateSettings } = unlock(
23
+ useDispatch( blockEditorStore )
24
+ );
25
+ useEffect( () => {
26
+ __experimentalUpdateSettings(
27
+ {
28
+ ...settings,
29
+ __internalIsInitialized: true,
30
+ },
31
+ stripExperimentalSettings
32
+ );
33
+ }, [ settings ] );
27
34
 
28
- // Syncs the entity provider with changes in the block-editor store.
29
- useBlockSync( props );
35
+ // Syncs the entity provider with changes in the block-editor store.
36
+ useBlockSync( props );
30
37
 
31
- return <BlockRefsProvider>{ children }</BlockRefsProvider>;
32
- }
38
+ return <BlockRefsProvider>{ children }</BlockRefsProvider>;
39
+ }
40
+ );
33
41
 
34
- export default withRegistryProvider( BlockEditorProvider );
42
+ export const BlockEditorProvider = ( props ) => {
43
+ return (
44
+ <ExperimentalBlockEditorProvider
45
+ { ...props }
46
+ stripExperimentalSettings={ true }
47
+ >
48
+ { props.children }
49
+ </ExperimentalBlockEditorProvider>
50
+ );
51
+ };
52
+
53
+ export default BlockEditorProvider;
@@ -14,7 +14,7 @@ import { BlockRefsProvider } from './block-refs-provider';
14
14
 
15
15
  /** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */
16
16
 
17
- function BlockEditorProvider( props ) {
17
+ const BlockEditorProvider = withRegistryProvider( function ( props ) {
18
18
  const { children, settings } = props;
19
19
 
20
20
  const { updateSettings } = useDispatch( blockEditorStore );
@@ -26,6 +26,7 @@ function BlockEditorProvider( props ) {
26
26
  useBlockSync( props );
27
27
 
28
28
  return <BlockRefsProvider>{ children }</BlockRefsProvider>;
29
- }
29
+ } );
30
30
 
31
- export default withRegistryProvider( BlockEditorProvider );
31
+ export default BlockEditorProvider;
32
+ export { BlockEditorProvider as ExperimentalBlockEditorProvider };
@@ -0,0 +1,94 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render } from '@testing-library/react';
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { useRegistry } from '@wordpress/data';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { BlockEditorProvider, ExperimentalBlockEditorProvider } from '../';
14
+ import { store as blockEditorStore } from '../../../store';
15
+
16
+ const HasEditorSetting = ( props ) => {
17
+ const registry = useRegistry();
18
+ if ( props.setRegistry ) {
19
+ props.setRegistry( registry );
20
+ }
21
+ return <p>Test.</p>;
22
+ };
23
+
24
+ describe( 'BlockEditorProvider', () => {
25
+ let registry;
26
+ const setRegistry = ( reg ) => {
27
+ registry = reg;
28
+ };
29
+ beforeEach( () => {
30
+ registry = undefined;
31
+ } );
32
+ it( 'should strip experimental settings', async () => {
33
+ render(
34
+ <BlockEditorProvider
35
+ settings={ {
36
+ inserterMediaCategories: true,
37
+ } }
38
+ >
39
+ <HasEditorSetting setRegistry={ setRegistry } />
40
+ </BlockEditorProvider>
41
+ );
42
+ const settings = registry.select( blockEditorStore ).getSettings();
43
+ expect( settings ).not.toHaveProperty( 'inserterMediaCategories' );
44
+ } );
45
+ it( 'should preserve stable settings', async () => {
46
+ render(
47
+ <BlockEditorProvider
48
+ settings={ {
49
+ stableSetting: 'https://example.com',
50
+ } }
51
+ >
52
+ <HasEditorSetting setRegistry={ setRegistry } />
53
+ </BlockEditorProvider>
54
+ );
55
+ const settings = registry.select( blockEditorStore ).getSettings();
56
+ expect( settings ).toHaveProperty( 'stableSetting' );
57
+ } );
58
+ } );
59
+
60
+ describe( 'ExperimentalBlockEditorProvider', () => {
61
+ let registry;
62
+ const setRegistry = ( reg ) => {
63
+ registry = reg;
64
+ };
65
+ beforeEach( () => {
66
+ registry = undefined;
67
+ } );
68
+ it( 'should preserve experimental settings', async () => {
69
+ render(
70
+ <ExperimentalBlockEditorProvider
71
+ settings={ {
72
+ inserterMediaCategories: true,
73
+ } }
74
+ >
75
+ <HasEditorSetting setRegistry={ setRegistry } />
76
+ </ExperimentalBlockEditorProvider>
77
+ );
78
+ const settings = registry.select( blockEditorStore ).getSettings();
79
+ expect( settings ).toHaveProperty( 'inserterMediaCategories' );
80
+ } );
81
+ it( 'should preserve stable settings', async () => {
82
+ render(
83
+ <ExperimentalBlockEditorProvider
84
+ settings={ {
85
+ stableSetting: 'https://example.com',
86
+ } }
87
+ >
88
+ <HasEditorSetting setRegistry={ setRegistry } />
89
+ </ExperimentalBlockEditorProvider>
90
+ );
91
+ const settings = registry.select( blockEditorStore ).getSettings();
92
+ expect( settings ).toHaveProperty( 'stableSetting' );
93
+ } );
94
+ } );
@@ -14,7 +14,17 @@ import { render } from '@testing-library/react';
14
14
  import useBlockSync from '../use-block-sync';
15
15
  import withRegistryProvider from '../with-registry-provider';
16
16
  import * as blockEditorActions from '../../../store/actions';
17
+
17
18
  import { store as blockEditorStore } from '../../../store';
19
+ jest.mock( '../../../store/actions', () => {
20
+ const actions = jest.requireActual( '../../../store/actions' );
21
+ return {
22
+ ...actions,
23
+ resetBlocks: jest.fn( actions.resetBlocks ),
24
+ replaceInnerBlocks: jest.fn( actions.replaceInnerBlocks ),
25
+ setHasControlledInnerBlocks: jest.fn( actions.replaceInnerBlocks ),
26
+ };
27
+ } );
18
28
 
19
29
  const TestWrapper = withRegistryProvider( ( props ) => {
20
30
  if ( props.setRegistry ) {
@@ -15,8 +15,6 @@ import { SelectControl } from '@wordpress/components';
15
15
  */
16
16
  import ResponsiveBlockControl from '../index';
17
17
 
18
- jest.useFakeTimers();
19
-
20
18
  const inputId = 'input-12345678';
21
19
 
22
20
  const sizeOptions = [
@@ -246,9 +244,7 @@ describe( 'Default and Responsive modes', () => {
246
244
  } );
247
245
 
248
246
  it( 'should switch between default and responsive modes when interacting with toggle control', async () => {
249
- const user = userEvent.setup( {
250
- advanceTimers: jest.advanceTimersByTime,
251
- } );
247
+ const user = userEvent.setup();
252
248
  const ResponsiveBlockControlConsumer = () => {
253
249
  const [ isResponsive, setIsResponsive ] = useState( false );
254
250
 
@@ -77,9 +77,17 @@ export function useBeforeInputRules( props ) {
77
77
  const { defaultView } = ownerDocument;
78
78
  const newEvent = new defaultView.InputEvent( 'input', init );
79
79
 
80
- // Dispatch an input event with the new data. This will trigger the
80
+ // Dispatch an `input` event with the new data. This will trigger the
81
81
  // input rules.
82
- event.target.dispatchEvent( newEvent );
82
+ // Postpone the `input` to the next event loop tick so that the dispatch
83
+ // doesn't happen synchronously in the middle of `beforeinput` dispatch.
84
+ // This is closer to how native `input` event would be timed, and also
85
+ // makes sure that the `input` event is dispatched only after the `onChange`
86
+ // call few lines above has fully updated the data store state and rerendered
87
+ // all affected components.
88
+ window.queueMicrotask( () => {
89
+ event.target.dispatchEvent( newEvent );
90
+ } );
83
91
  event.preventDefault();
84
92
  }
85
93
 
@@ -23,7 +23,7 @@ export function addActiveFormats( value, activeFormats ) {
23
23
  *
24
24
  * @param {?(string|boolean)} multiline The multiline prop.
25
25
  *
26
- * @return {?string} The multiline tag.
26
+ * @return {string | undefined} The multiline tag.
27
27
  */
28
28
  export function getMultilineTag( multiline ) {
29
29
  if ( multiline !== true && multiline !== 'p' && multiline !== 'li' ) {
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isEmpty } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -75,7 +70,7 @@ export function getPresetValueFromCustomValue( value, spacingSizes ) {
75
70
  *
76
71
  * @param {string} value Value to convert.
77
72
  *
78
- * @return {string} CSS var string for given spacing preset value.
73
+ * @return {string | undefined} CSS var string for given spacing preset value.
79
74
  */
80
75
  export function getSpacingPresetCssVar( value ) {
81
76
  if ( ! value ) {
@@ -211,5 +206,5 @@ export function isValuesDefined( values ) {
211
206
  if ( values === undefined || values === null ) {
212
207
  return false;
213
208
  }
214
- return ! isEmpty( Object.values( values ).filter( ( value ) => !! value ) );
209
+ return Object.values( values ).filter( ( value ) => !! value ).length > 0;
215
210
  }
@@ -51,7 +51,7 @@ function ToolSelector( props, ref ) {
51
51
  label={ __( 'Tools' ) }
52
52
  />
53
53
  ) }
54
- position="bottom right"
54
+ popoverProps={ { placement: 'bottom-start' } }
55
55
  renderContent={ () => (
56
56
  <>
57
57
  <NavigableMenu role="menu" aria-label={ __( 'Tools' ) }>