@wordpress/block-editor 11.2.0 → 11.3.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 (660) 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-alignment-matrix-control/index.js +2 -2
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-card/index.js +2 -4
  10. package/build/components/block-card/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +8 -0
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-inspector/index.js +15 -14
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +5 -0
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +0 -1
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +2 -2
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-navigation/dropdown.js +3 -1
  22. package/build/components/block-navigation/dropdown.js.map +1 -1
  23. package/build/components/block-pattern-setup/index.js +1 -1
  24. package/build/components/block-pattern-setup/index.js.map +1 -1
  25. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  26. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +31 -3
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +9 -11
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +32 -8
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-selection-clearer/index.js +1 -1
  34. package/build/components/block-selection-clearer/index.js.map +1 -1
  35. package/build/components/block-settings/container.native.js +7 -33
  36. package/build/components/block-settings/container.native.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -6
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-settings-menu-controls/index.js +2 -8
  40. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  41. package/build/components/block-switcher/utils.js +1 -1
  42. package/build/components/block-switcher/utils.js.map +1 -1
  43. package/build/components/block-tools/selected-block-popover.js +55 -47
  44. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  45. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  46. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  48. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  49. package/build/components/color-style-selector/index.js +3 -1
  50. package/build/components/color-style-selector/index.js.map +1 -1
  51. package/build/components/date-format-picker/index.js +3 -4
  52. package/build/components/date-format-picker/index.js.map +1 -1
  53. package/build/components/font-family/index.js +1 -7
  54. package/build/components/font-family/index.js.map +1 -1
  55. package/build/components/font-sizes/fluid-utils.js +1 -1
  56. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  57. package/build/components/font-sizes/utils.js +1 -1
  58. package/build/components/font-sizes/utils.js.map +1 -1
  59. package/build/components/global-styles/context.js +22 -0
  60. package/build/components/global-styles/context.js.map +1 -0
  61. package/build/components/global-styles/hooks.js +142 -0
  62. package/build/components/global-styles/hooks.js.map +1 -0
  63. package/build/components/global-styles/index.js +42 -0
  64. package/build/components/global-styles/index.js.map +1 -0
  65. package/build/components/global-styles/typography-utils.js +92 -0
  66. package/build/components/global-styles/typography-utils.js.map +1 -0
  67. package/build/components/global-styles/use-global-styles-output.js +974 -0
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  69. package/build/components/global-styles/utils.js +340 -0
  70. package/build/components/global-styles/utils.js.map +1 -0
  71. package/build/components/height-control/index.js +13 -1
  72. package/build/components/height-control/index.js.map +1 -1
  73. package/build/components/image-editor/constants.js +1 -1
  74. package/build/components/image-editor/constants.js.map +1 -1
  75. package/build/components/image-editor/context.js +1 -2
  76. package/build/components/image-editor/context.js.map +1 -1
  77. package/build/components/image-editor/cropper.js +3 -1
  78. package/build/components/image-editor/cropper.js.map +1 -1
  79. package/build/components/image-editor/index.js +13 -9
  80. package/build/components/image-editor/index.js.map +1 -1
  81. package/build/components/image-editor/use-transform-image.js +11 -35
  82. package/build/components/image-editor/use-transform-image.js.map +1 -1
  83. package/build/components/image-size-control/index.js +1 -7
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.js +8 -24
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +22 -32
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +8 -23
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-block-context.js +53 -0
  92. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  93. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  94. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  95. package/build/components/inserter/block-patterns-tab.js +7 -1
  96. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  97. package/build/components/inserter/block-types-tab.js +2 -2
  98. package/build/components/inserter/block-types-tab.js.map +1 -1
  99. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  100. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  101. package/build/components/inserter/index.js +5 -4
  102. package/build/components/inserter/index.js.map +1 -1
  103. package/build/components/inserter/media-tab/hooks.js +142 -56
  104. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  105. package/build/components/inserter/media-tab/media-list.js +74 -21
  106. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  107. package/build/components/inserter/media-tab/media-panel.js +11 -13
  108. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-tab.js +6 -3
  110. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  111. package/build/components/inserter/media-tab/utils.js +26 -15
  112. package/build/components/inserter/media-tab/utils.js.map +1 -1
  113. package/build/components/inserter/menu.js +1 -0
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/preview-panel.js +5 -3
  116. package/build/components/inserter/preview-panel.js.map +1 -1
  117. package/build/components/inserter/search-results.js +2 -7
  118. package/build/components/inserter/search-results.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +1 -9
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/fill.js +15 -2
  122. package/build/components/inspector-controls/fill.js.map +1 -1
  123. package/build/components/inspector-controls/fill.native.js +14 -1
  124. package/build/components/inspector-controls/fill.native.js.map +1 -1
  125. package/build/components/inspector-controls/groups.js +4 -0
  126. package/build/components/inspector-controls/groups.js.map +1 -1
  127. package/build/components/inspector-controls/index.js +2 -2
  128. package/build/components/inspector-controls/index.js.map +1 -1
  129. package/build/components/inspector-controls/slot.js +14 -1
  130. package/build/components/inspector-controls/slot.js.map +1 -1
  131. package/build/components/inspector-controls/slot.native.js +14 -1
  132. package/build/components/inspector-controls/slot.native.js.map +1 -1
  133. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  134. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +2 -2
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  138. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  140. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  141. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  142. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  143. package/build/components/justify-content-control/ui.js +8 -1
  144. package/build/components/justify-content-control/ui.js.map +1 -1
  145. package/build/components/link-control/index.js +45 -17
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/list-view/block.js +1 -1
  148. package/build/components/list-view/block.js.map +1 -1
  149. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  150. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  151. package/build/components/media-upload/index.native.js +4 -1
  152. package/build/components/media-upload/index.native.js.map +1 -1
  153. package/build/components/off-canvas-editor/appender.js +50 -3
  154. package/build/components/off-canvas-editor/appender.js.map +1 -1
  155. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  156. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  157. package/build/components/off-canvas-editor/block.js +6 -27
  158. package/build/components/off-canvas-editor/block.js.map +1 -1
  159. package/build/components/off-canvas-editor/branch.js +25 -10
  160. package/build/components/off-canvas-editor/branch.js.map +1 -1
  161. package/build/components/off-canvas-editor/index.js +11 -16
  162. package/build/components/off-canvas-editor/index.js.map +1 -1
  163. package/build/components/off-canvas-editor/link-ui.js +2 -2
  164. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  165. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  166. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  167. package/build/components/provider/index.js +21 -9
  168. package/build/components/provider/index.js.map +1 -1
  169. package/build/components/provider/index.native.js +5 -6
  170. package/build/components/provider/index.native.js.map +1 -1
  171. package/build/components/rich-text/use-before-input-rules.js +11 -3
  172. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  173. package/build/components/rich-text/utils.js +1 -1
  174. package/build/components/rich-text/utils.js.map +1 -1
  175. package/build/components/spacing-sizes-control/utils.js +2 -8
  176. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  177. package/build/components/tool-selector/index.js +3 -1
  178. package/build/components/tool-selector/index.js.map +1 -1
  179. package/build/components/url-popover/image-url-input-ui.js +7 -8
  180. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  181. package/build/components/use-block-display-information/index.js +1 -1
  182. package/build/components/use-block-display-information/index.js.map +1 -1
  183. package/build/experiments.js +45 -0
  184. package/build/experiments.js.map +1 -0
  185. package/build/experiments.native.js +40 -0
  186. package/build/experiments.native.js.map +1 -0
  187. package/build/hooks/anchor.js +2 -1
  188. package/build/hooks/anchor.js.map +1 -1
  189. package/build/hooks/border.js +1 -1
  190. package/build/hooks/border.js.map +1 -1
  191. package/build/hooks/child-layout.js +5 -1
  192. package/build/hooks/child-layout.js.map +1 -1
  193. package/build/hooks/color-panel.js +1 -1
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color.js +3 -3
  196. package/build/hooks/color.js.map +1 -1
  197. package/build/hooks/custom-class-name.js +2 -1
  198. package/build/hooks/custom-class-name.js.map +1 -1
  199. package/build/hooks/dimensions.js +7 -5
  200. package/build/hooks/dimensions.js.map +1 -1
  201. package/build/hooks/margin.js +1 -0
  202. package/build/hooks/margin.js.map +1 -1
  203. package/build/hooks/padding.js +1 -0
  204. package/build/hooks/padding.js.map +1 -1
  205. package/build/hooks/position.js +34 -15
  206. package/build/hooks/position.js.map +1 -1
  207. package/build/hooks/typography.js +1 -1
  208. package/build/hooks/typography.js.map +1 -1
  209. package/build/hooks/use-color-props.js +3 -3
  210. package/build/hooks/use-color-props.js.map +1 -1
  211. package/build/hooks/utils.js +69 -3
  212. package/build/hooks/utils.js.map +1 -1
  213. package/build/index.js +10 -1
  214. package/build/index.js.map +1 -1
  215. package/build/layouts/constrained.js +3 -0
  216. package/build/layouts/constrained.js.map +1 -1
  217. package/build/layouts/flex.js +59 -9
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/layouts/flow.js +0 -18
  220. package/build/layouts/flow.js.map +1 -1
  221. package/build/store/actions.js +3 -30
  222. package/build/store/actions.js.map +1 -1
  223. package/build/store/defaults.js +5 -2
  224. package/build/store/defaults.js.map +1 -1
  225. package/build/store/index.js +11 -2
  226. package/build/store/index.js.map +1 -1
  227. package/build/store/private-actions.js +78 -0
  228. package/build/store/private-actions.js.map +1 -0
  229. package/build/store/private-selectors.js +18 -0
  230. package/build/store/private-selectors.js.map +1 -0
  231. package/build/store/reducer.js +1 -1
  232. package/build/store/reducer.js.map +1 -1
  233. package/build/store/selectors.js +60 -34
  234. package/build/store/selectors.js.map +1 -1
  235. package/build/utils/block-variation-transforms.js +1 -1
  236. package/build/utils/block-variation-transforms.js.map +1 -1
  237. package/build/utils/parse-css-unit-to-px.js +1 -1
  238. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  239. package/build/utils/transform-styles/index.js +1 -7
  240. package/build/utils/transform-styles/index.js.map +1 -1
  241. package/build-module/components/alignment-control/ui.js +1 -1
  242. package/build-module/components/alignment-control/ui.js.map +1 -1
  243. package/build-module/components/autocomplete/index.js +2 -6
  244. package/build-module/components/autocomplete/index.js.map +1 -1
  245. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  246. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  247. package/build-module/components/block-card/index.js +2 -4
  248. package/build-module/components/block-card/index.js.map +1 -1
  249. package/build-module/components/block-edit/index.js +7 -0
  250. package/build-module/components/block-edit/index.js.map +1 -1
  251. package/build-module/components/block-inspector/index.js +15 -14
  252. package/build-module/components/block-inspector/index.js.map +1 -1
  253. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  254. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  255. package/build-module/components/block-lock/modal.js +0 -1
  256. package/build-module/components/block-lock/modal.js.map +1 -1
  257. package/build-module/components/block-mover/mover-description.js +2 -2
  258. package/build-module/components/block-mover/mover-description.js.map +1 -1
  259. package/build-module/components/block-navigation/dropdown.js +3 -1
  260. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  261. package/build-module/components/block-pattern-setup/index.js +1 -1
  262. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  263. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  264. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  265. package/build-module/components/block-patterns-list/index.js +32 -3
  266. package/build-module/components/block-patterns-list/index.js.map +1 -1
  267. package/build-module/components/block-preview/auto.js +9 -11
  268. package/build-module/components/block-preview/auto.js.map +1 -1
  269. package/build-module/components/block-preview/index.js +31 -8
  270. package/build-module/components/block-preview/index.js.map +1 -1
  271. package/build-module/components/block-selection-clearer/index.js +1 -1
  272. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  273. package/build-module/components/block-settings/container.native.js +6 -30
  274. package/build-module/components/block-settings/container.native.js.map +1 -1
  275. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -6
  276. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  277. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  278. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  279. package/build-module/components/block-switcher/utils.js +1 -1
  280. package/build-module/components/block-switcher/utils.js.map +1 -1
  281. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  282. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  283. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  284. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  285. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  286. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  287. package/build-module/components/color-style-selector/index.js +3 -1
  288. package/build-module/components/color-style-selector/index.js.map +1 -1
  289. package/build-module/components/date-format-picker/index.js +4 -5
  290. package/build-module/components/date-format-picker/index.js.map +1 -1
  291. package/build-module/components/font-family/index.js +1 -6
  292. package/build-module/components/font-family/index.js.map +1 -1
  293. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  294. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  295. package/build-module/components/font-sizes/utils.js +1 -1
  296. package/build-module/components/font-sizes/utils.js.map +1 -1
  297. package/build-module/components/global-styles/context.js +12 -0
  298. package/build-module/components/global-styles/context.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +121 -0
  300. package/build-module/components/global-styles/hooks.js.map +1 -0
  301. package/build-module/components/global-styles/index.js +4 -0
  302. package/build-module/components/global-styles/index.js.map +1 -0
  303. package/build-module/components/global-styles/typography-utils.js +84 -0
  304. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  305. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  306. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  307. package/build-module/components/global-styles/utils.js +321 -0
  308. package/build-module/components/global-styles/utils.js.map +1 -0
  309. package/build-module/components/height-control/index.js +14 -1
  310. package/build-module/components/height-control/index.js.map +1 -1
  311. package/build-module/components/image-editor/constants.js +1 -1
  312. package/build-module/components/image-editor/constants.js.map +1 -1
  313. package/build-module/components/image-editor/context.js +1 -2
  314. package/build-module/components/image-editor/context.js.map +1 -1
  315. package/build-module/components/image-editor/cropper.js +3 -1
  316. package/build-module/components/image-editor/cropper.js.map +1 -1
  317. package/build-module/components/image-editor/index.js +13 -3
  318. package/build-module/components/image-editor/index.js.map +1 -1
  319. package/build-module/components/image-editor/use-transform-image.js +12 -37
  320. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  321. package/build-module/components/image-size-control/index.js +1 -6
  322. package/build-module/components/image-size-control/index.js.map +1 -1
  323. package/build-module/components/index.js +2 -3
  324. package/build-module/components/index.js.map +1 -1
  325. package/build-module/components/inner-blocks/index.js +21 -32
  326. package/build-module/components/inner-blocks/index.js.map +1 -1
  327. package/build-module/components/inner-blocks/index.native.js +9 -22
  328. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  329. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  330. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  331. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  332. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab.js +7 -1
  334. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  335. package/build-module/components/inserter/block-types-tab.js +3 -3
  336. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +5 -4
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  342. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  343. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  344. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  345. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  346. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  348. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/utils.js +27 -15
  350. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  351. package/build-module/components/inserter/menu.js +1 -0
  352. package/build-module/components/inserter/menu.js.map +1 -1
  353. package/build-module/components/inserter/preview-panel.js +5 -3
  354. package/build-module/components/inserter/preview-panel.js.map +1 -1
  355. package/build-module/components/inserter/search-results.js +2 -6
  356. package/build-module/components/inserter/search-results.js.map +1 -1
  357. package/build-module/components/inserter-list-item/index.js +1 -9
  358. package/build-module/components/inserter-list-item/index.js.map +1 -1
  359. package/build-module/components/inspector-controls/fill.js +14 -2
  360. package/build-module/components/inspector-controls/fill.js.map +1 -1
  361. package/build-module/components/inspector-controls/fill.native.js +13 -1
  362. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  363. package/build-module/components/inspector-controls/groups.js +4 -0
  364. package/build-module/components/inspector-controls/groups.js.map +1 -1
  365. package/build-module/components/inspector-controls/index.js +2 -2
  366. package/build-module/components/inspector-controls/index.js.map +1 -1
  367. package/build-module/components/inspector-controls/slot.js +13 -1
  368. package/build-module/components/inspector-controls/slot.js.map +1 -1
  369. package/build-module/components/inspector-controls/slot.native.js +13 -1
  370. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  372. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  373. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  374. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  375. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  376. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  377. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  378. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  379. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  380. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  381. package/build-module/components/justify-content-control/ui.js +9 -2
  382. package/build-module/components/justify-content-control/ui.js.map +1 -1
  383. package/build-module/components/link-control/index.js +45 -16
  384. package/build-module/components/link-control/index.js.map +1 -1
  385. package/build-module/components/list-view/block.js +1 -1
  386. package/build-module/components/list-view/block.js.map +1 -1
  387. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  388. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  389. package/build-module/components/media-upload/index.native.js +4 -1
  390. package/build-module/components/media-upload/index.native.js.map +1 -1
  391. package/build-module/components/off-canvas-editor/appender.js +47 -4
  392. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  393. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  394. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  395. package/build-module/components/off-canvas-editor/block.js +6 -25
  396. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  397. package/build-module/components/off-canvas-editor/branch.js +23 -11
  398. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  399. package/build-module/components/off-canvas-editor/index.js +11 -15
  400. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  401. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  402. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  403. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  404. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  405. package/build-module/components/provider/index.js +16 -9
  406. package/build-module/components/provider/index.js.map +1 -1
  407. package/build-module/components/provider/index.native.js +4 -4
  408. package/build-module/components/provider/index.native.js.map +1 -1
  409. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  410. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  411. package/build-module/components/rich-text/utils.js +1 -1
  412. package/build-module/components/rich-text/utils.js.map +1 -1
  413. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  414. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  415. package/build-module/components/tool-selector/index.js +3 -1
  416. package/build-module/components/tool-selector/index.js.map +1 -1
  417. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  418. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  419. package/build-module/components/use-block-display-information/index.js +1 -1
  420. package/build-module/components/use-block-display-information/index.js.map +1 -1
  421. package/build-module/experiments.js +25 -0
  422. package/build-module/experiments.js.map +1 -0
  423. package/build-module/experiments.native.js +23 -0
  424. package/build-module/experiments.native.js.map +1 -0
  425. package/build-module/hooks/anchor.js +2 -1
  426. package/build-module/hooks/anchor.js.map +1 -1
  427. package/build-module/hooks/border.js +1 -1
  428. package/build-module/hooks/border.js.map +1 -1
  429. package/build-module/hooks/child-layout.js +5 -1
  430. package/build-module/hooks/child-layout.js.map +1 -1
  431. package/build-module/hooks/color-panel.js +1 -1
  432. package/build-module/hooks/color-panel.js.map +1 -1
  433. package/build-module/hooks/color.js +3 -3
  434. package/build-module/hooks/color.js.map +1 -1
  435. package/build-module/hooks/custom-class-name.js +2 -1
  436. package/build-module/hooks/custom-class-name.js.map +1 -1
  437. package/build-module/hooks/dimensions.js +6 -5
  438. package/build-module/hooks/dimensions.js.map +1 -1
  439. package/build-module/hooks/margin.js +1 -0
  440. package/build-module/hooks/margin.js.map +1 -1
  441. package/build-module/hooks/padding.js +1 -0
  442. package/build-module/hooks/padding.js.map +1 -1
  443. package/build-module/hooks/position.js +31 -14
  444. package/build-module/hooks/position.js.map +1 -1
  445. package/build-module/hooks/typography.js +1 -1
  446. package/build-module/hooks/typography.js.map +1 -1
  447. package/build-module/hooks/use-color-props.js +3 -3
  448. package/build-module/hooks/use-color-props.js.map +1 -1
  449. package/build-module/hooks/utils.js +70 -4
  450. package/build-module/hooks/utils.js.map +1 -1
  451. package/build-module/index.js +1 -0
  452. package/build-module/index.js.map +1 -1
  453. package/build-module/layouts/constrained.js +3 -0
  454. package/build-module/layouts/constrained.js.map +1 -1
  455. package/build-module/layouts/flex.js +60 -10
  456. package/build-module/layouts/flex.js.map +1 -1
  457. package/build-module/layouts/flow.js +0 -18
  458. package/build-module/layouts/flow.js.map +1 -1
  459. package/build-module/store/actions.js +2 -26
  460. package/build-module/store/actions.js.map +1 -1
  461. package/build-module/store/defaults.js +5 -2
  462. package/build-module/store/defaults.js.map +1 -1
  463. package/build-module/store/index.js +8 -2
  464. package/build-module/store/index.js.map +1 -1
  465. package/build-module/store/private-actions.js +66 -0
  466. package/build-module/store/private-actions.js.map +1 -0
  467. package/build-module/store/private-selectors.js +11 -0
  468. package/build-module/store/private-selectors.js.map +1 -0
  469. package/build-module/store/reducer.js +1 -1
  470. package/build-module/store/reducer.js.map +1 -1
  471. package/build-module/store/selectors.js +48 -25
  472. package/build-module/store/selectors.js.map +1 -1
  473. package/build-module/utils/block-variation-transforms.js +1 -1
  474. package/build-module/utils/block-variation-transforms.js.map +1 -1
  475. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  476. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  477. package/build-module/utils/transform-styles/index.js +1 -6
  478. package/build-module/utils/transform-styles/index.js.map +1 -1
  479. package/build-style/content-rtl.css +283 -3
  480. package/build-style/content.css +283 -3
  481. package/build-style/style-rtl.css +105 -221
  482. package/build-style/style.css +105 -221
  483. package/package.json +30 -29
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  485. package/src/components/alignment-control/test/index.js +5 -15
  486. package/src/components/alignment-control/ui.js +1 -1
  487. package/src/components/autocomplete/index.js +3 -6
  488. package/src/components/block-alignment-control/test/index.js +3 -11
  489. package/src/components/block-alignment-matrix-control/index.js +1 -2
  490. package/src/components/block-card/index.js +1 -4
  491. package/src/components/block-content-overlay/content.scss +4 -4
  492. package/src/components/block-edit/index.js +15 -1
  493. package/src/components/block-icon/content.scss +31 -0
  494. package/src/components/block-inspector/index.js +13 -17
  495. package/src/components/block-list/use-in-between-inserter.js +5 -0
  496. package/src/components/block-lock/modal.js +0 -1
  497. package/src/components/block-mover/mover-description.js +2 -2
  498. package/src/components/block-mover/stories/index.js +3 -3
  499. package/src/components/block-navigation/dropdown.js +1 -1
  500. package/src/components/block-pattern-setup/index.js +1 -4
  501. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  502. package/src/components/block-patterns-list/index.js +29 -3
  503. package/src/components/block-preview/README.md +9 -9
  504. package/src/components/block-preview/auto.js +9 -11
  505. package/src/components/block-preview/content.scss +23 -0
  506. package/src/components/block-preview/index.js +40 -10
  507. package/src/components/block-preview/style.scss +0 -23
  508. package/src/components/block-selection-clearer/index.js +1 -1
  509. package/src/components/block-selection-clearer/test/index.js +6 -6
  510. package/src/components/block-settings/container.native.js +7 -26
  511. package/src/components/block-settings-menu/block-settings-dropdown.js +13 -5
  512. package/src/components/block-settings-menu-controls/index.js +2 -10
  513. package/src/components/block-switcher/test/index.js +43 -44
  514. package/src/components/block-switcher/utils.js +1 -1
  515. package/src/components/block-tools/selected-block-popover.js +77 -80
  516. package/src/components/block-tools/style.scss +0 -1
  517. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  518. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  519. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  520. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  521. package/src/components/color-style-selector/index.js +1 -1
  522. package/src/components/colors/test/with-colors.js +2 -8
  523. package/src/components/date-format-picker/index.js +23 -24
  524. package/src/components/date-format-picker/style.scss +0 -6
  525. package/src/components/default-block-appender/content.scss +18 -0
  526. package/src/components/default-block-appender/test/index.js +2 -8
  527. package/src/components/font-family/index.js +1 -6
  528. package/src/components/font-sizes/fluid-utils.js +1 -1
  529. package/src/components/font-sizes/utils.js +1 -1
  530. package/src/components/global-styles/README.md +77 -0
  531. package/src/components/global-styles/context.js +15 -0
  532. package/src/components/global-styles/hooks.js +145 -0
  533. package/src/components/global-styles/index.js +7 -0
  534. package/src/components/global-styles/test/typography-utils.js +393 -0
  535. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  536. package/src/components/global-styles/test/utils.js +206 -0
  537. package/src/components/global-styles/typography-utils.js +87 -0
  538. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  539. package/src/components/global-styles/utils.js +373 -0
  540. package/src/components/height-control/README.md +55 -0
  541. package/src/components/height-control/index.js +13 -1
  542. package/src/components/image-editor/constants.js +1 -1
  543. package/src/components/image-editor/context.js +5 -9
  544. package/src/components/image-editor/cropper.js +3 -1
  545. package/src/components/image-editor/index.js +13 -4
  546. package/src/components/image-editor/use-transform-image.js +14 -55
  547. package/src/components/image-size-control/index.js +1 -6
  548. package/src/components/index.js +2 -6
  549. package/src/components/inner-blocks/index.js +29 -33
  550. package/src/components/inner-blocks/index.native.js +27 -47
  551. package/src/components/inner-blocks/use-block-context.js +47 -0
  552. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  553. package/src/components/inserter/block-patterns-tab.js +7 -0
  554. package/src/components/inserter/block-types-tab.js +3 -4
  555. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  556. package/src/components/inserter/index.js +3 -4
  557. package/src/components/inserter/media-tab/hooks.js +167 -65
  558. package/src/components/inserter/media-tab/media-list.js +94 -26
  559. package/src/components/inserter/media-tab/media-panel.js +9 -20
  560. package/src/components/inserter/media-tab/media-tab.js +12 -4
  561. package/src/components/inserter/media-tab/utils.js +20 -10
  562. package/src/components/inserter/menu.js +1 -0
  563. package/src/components/inserter/preview-panel.js +4 -2
  564. package/src/components/inserter/search-results.js +2 -6
  565. package/src/components/inserter/stories/index.js +9 -9
  566. package/src/components/inserter/style.scss +58 -11
  567. package/src/components/inserter-list-item/index.js +0 -7
  568. package/src/components/inspector-controls/README.md +3 -7
  569. package/src/components/inspector-controls/fill.js +15 -1
  570. package/src/components/inspector-controls/fill.native.js +14 -1
  571. package/src/components/inspector-controls/groups.js +3 -0
  572. package/src/components/inspector-controls/index.js +2 -6
  573. package/src/components/inspector-controls/slot.js +14 -1
  574. package/src/components/inspector-controls/slot.native.js +14 -1
  575. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  576. package/src/components/inspector-controls-tabs/index.js +2 -4
  577. package/src/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  578. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  579. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +21 -10
  580. package/src/components/justify-content-control/ui.js +9 -0
  581. package/src/components/link-control/index.js +59 -23
  582. package/src/components/link-control/style.scss +7 -24
  583. package/src/components/link-control/test/index.js +134 -5
  584. package/src/components/list-view/block.js +1 -1
  585. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  586. package/src/components/media-replace-flow/test/index.js +4 -12
  587. package/src/components/media-upload/index.native.js +2 -2
  588. package/src/components/off-canvas-editor/README.md +2 -2
  589. package/src/components/off-canvas-editor/appender.js +93 -37
  590. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  591. package/src/components/off-canvas-editor/block.js +3 -42
  592. package/src/components/off-canvas-editor/branch.js +32 -5
  593. package/src/components/off-canvas-editor/index.js +10 -25
  594. package/src/components/off-canvas-editor/link-ui.js +2 -2
  595. package/src/components/off-canvas-editor/style.scss +5 -1
  596. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  597. package/src/components/provider/index.js +33 -14
  598. package/src/components/provider/index.native.js +4 -3
  599. package/src/components/provider/test/experimental-provider.js +94 -0
  600. package/src/components/provider/test/use-block-sync.js +10 -0
  601. package/src/components/responsive-block-control/test/index.js +1 -5
  602. package/src/components/rich-text/use-before-input-rules.js +10 -2
  603. package/src/components/rich-text/utils.js +1 -1
  604. package/src/components/spacing-sizes-control/utils.js +2 -7
  605. package/src/components/tool-selector/index.js +1 -1
  606. package/src/components/url-input/test/button.js +24 -24
  607. package/src/components/url-popover/image-url-input-ui.js +7 -8
  608. package/src/components/url-popover/style.scss +0 -10
  609. package/src/components/use-block-display-information/index.js +1 -1
  610. package/src/components/warning/{style.scss → content.scss} +0 -0
  611. package/src/components/warning/test/index.js +1 -5
  612. package/src/content.scss +7 -0
  613. package/src/experiments.js +27 -0
  614. package/src/experiments.native.js +25 -0
  615. package/src/hooks/anchor.js +2 -1
  616. package/src/hooks/border.js +1 -1
  617. package/src/hooks/child-layout.js +6 -1
  618. package/src/hooks/color-panel.js +1 -1
  619. package/src/hooks/color.js +3 -3
  620. package/src/hooks/custom-class-name.js +2 -1
  621. package/src/hooks/dimensions.js +6 -6
  622. package/src/hooks/layout.scss +4 -0
  623. package/src/hooks/margin.js +1 -0
  624. package/src/hooks/padding.js +1 -0
  625. package/src/hooks/position.js +52 -36
  626. package/src/hooks/test/align.native.js +1 -1
  627. package/src/hooks/test/utils.js +104 -0
  628. package/src/hooks/typography.js +1 -1
  629. package/src/hooks/use-color-props.js +3 -3
  630. package/src/hooks/utils.js +68 -2
  631. package/src/index.js +1 -0
  632. package/src/layouts/constrained.js +3 -0
  633. package/src/layouts/flex.js +66 -14
  634. package/src/layouts/flow.js +0 -9
  635. package/src/store/actions.js +2 -26
  636. package/src/store/defaults.js +7 -2
  637. package/src/store/index.js +8 -2
  638. package/src/store/private-actions.js +65 -0
  639. package/src/store/private-selectors.js +10 -0
  640. package/src/store/reducer.js +1 -1
  641. package/src/store/selectors.js +103 -52
  642. package/src/store/test/actions.js +0 -18
  643. package/src/store/test/private-actions.js +22 -0
  644. package/src/store/test/private-selectors.js +24 -0
  645. package/src/store/test/selectors.js +52 -30
  646. package/src/style.scss +3 -5
  647. package/src/utils/block-variation-transforms.js +1 -1
  648. package/src/utils/parse-css-unit-to-px.js +3 -1
  649. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  650. package/src/utils/transform-styles/index.js +1 -6
  651. package/build/components/inner-blocks/get-block-context.js +0 -45
  652. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  653. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  654. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  655. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  656. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  657. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  658. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  659. package/src/components/inner-blocks/get-block-context.js +0 -39
  660. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -209,7 +209,7 @@ function ListViewBlock( {
209
209
  'is-synced-branch': isSyncedBranch,
210
210
  'is-dragging': isDragged,
211
211
  'has-single-cell': ! showBlockActions,
212
- 'is-synced': blockInformation.isSynced,
212
+ 'is-synced': blockInformation?.isSynced,
213
213
  } );
214
214
 
215
215
  // Only include all selected blocks if the currently clicked on block
@@ -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;
@@ -14,8 +14,6 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import MediaReplaceFlow from '../';
16
16
 
17
- jest.useFakeTimers();
18
-
19
17
  const noop = () => {};
20
18
 
21
19
  function TestWrapper() {
@@ -57,9 +55,7 @@ describe( 'General media replace flow', () => {
57
55
  } );
58
56
 
59
57
  it( 'renders replace menu', async () => {
60
- const user = userEvent.setup( {
61
- advanceTimers: jest.advanceTimersByTime,
62
- } );
58
+ const user = userEvent.setup();
63
59
 
64
60
  render( <TestWrapper /> );
65
61
 
@@ -81,9 +77,7 @@ describe( 'General media replace flow', () => {
81
77
  } );
82
78
 
83
79
  it( 'displays media URL', async () => {
84
- const user = userEvent.setup( {
85
- advanceTimers: jest.advanceTimersByTime,
86
- } );
80
+ const user = userEvent.setup();
87
81
 
88
82
  render( <TestWrapper /> );
89
83
 
@@ -106,9 +100,7 @@ describe( 'General media replace flow', () => {
106
100
  } );
107
101
 
108
102
  it( 'edits media URL', async () => {
109
- const user = userEvent.setup( {
110
- advanceTimers: jest.advanceTimersByTime,
111
- } );
103
+ const user = userEvent.setup();
112
104
 
113
105
  render( <TestWrapper /> );
114
106
 
@@ -145,7 +137,7 @@ describe( 'General media replace flow', () => {
145
137
 
146
138
  await user.click(
147
139
  screen.getByRole( 'button', {
148
- name: 'Submit',
140
+ name: 'Apply',
149
141
  } )
150
142
  );
151
143
 
@@ -315,10 +315,10 @@ export class MediaUpload extends Component {
315
315
 
316
316
  export default compose( [
317
317
  withSelect( ( select ) => {
318
+ const { capabilities } = select( blockEditorStore ).getSettings();
318
319
  return {
319
320
  isAudioBlockMediaUploadEnabled:
320
- select( blockEditorStore ).getSettings( 'capabilities' )
321
- .isAudioBlockMediaUploadEnabled === true,
321
+ capabilities?.isAudioBlockMediaUploadEnabled === true,
322
322
  };
323
323
  } ),
324
324
  ] )( MediaUpload );
@@ -1,5 +1,5 @@
1
- # Experimental Off Canvas Editor
1
+ # Off Canvas Editor
2
2
 
3
- The __ExperimentalOffCanvasEditor component is a modified ListView compoent. It provides an overview of the hierarchical structure of all blocks in the editor. The blocks are presented vertically one below the other. It enables editing of hierarchy and addition of elements in the block tree without selecting the block instance on the canvas.
3
+ The OffCanvasEditor component is a modified ListView compoent. It provides an overview of the hierarchical structure of all blocks in the editor. The blocks are presented vertically one below the other. It enables editing of hierarchy and addition of elements in the block tree without selecting the block instance on the canvas.
4
4
 
5
5
  It is an experimental component which may end up completely merged into the ListView component via configuration props.
@@ -1,48 +1,104 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { useInstanceId } from '@wordpress/compose';
5
+ import { speak } from '@wordpress/a11y';
4
6
  import { useSelect } from '@wordpress/data';
5
- import { forwardRef } from '@wordpress/element';
7
+ import { forwardRef, useState, useEffect } from '@wordpress/element';
8
+ import { __, sprintf } from '@wordpress/i18n';
9
+
6
10
  /**
7
11
  * Internal dependencies
8
12
  */
9
13
  import { store as blockEditorStore } from '../../store';
14
+ import useBlockDisplayTitle from '../block-title/use-block-display-title';
10
15
  import Inserter from '../inserter';
11
16
 
12
- export const Appender = forwardRef( ( props, ref ) => {
13
- const { hideInserter, clientId } = useSelect( ( select ) => {
14
- const {
15
- getTemplateLock,
16
- __unstableGetEditorMode,
17
- getSelectedBlockClientId,
18
- } = select( blockEditorStore );
19
-
20
- const _clientId = getSelectedBlockClientId();
21
-
22
- return {
23
- clientId: getSelectedBlockClientId(),
24
- hideInserter:
25
- !! getTemplateLock( _clientId ) ||
26
- __unstableGetEditorMode() === 'zoom-out',
27
- };
28
- }, [] );
29
-
30
- if ( hideInserter ) {
31
- return null;
32
- }
17
+ export const Appender = forwardRef(
18
+ ( { nestingLevel, blockCount, ...props }, ref ) => {
19
+ const [ insertedBlock, setInsertedBlock ] = useState( null );
20
+
21
+ const instanceId = useInstanceId( Appender );
22
+ const { hideInserter, clientId } = useSelect( ( select ) => {
23
+ const {
24
+ getTemplateLock,
25
+ __unstableGetEditorMode,
26
+ getSelectedBlockClientId,
27
+ } = select( blockEditorStore );
28
+
29
+ const _clientId = getSelectedBlockClientId();
30
+
31
+ return {
32
+ clientId: getSelectedBlockClientId(),
33
+ hideInserter:
34
+ !! getTemplateLock( _clientId ) ||
35
+ __unstableGetEditorMode() === 'zoom-out',
36
+ };
37
+ }, [] );
38
+
39
+ const blockTitle = useBlockDisplayTitle( {
40
+ clientId,
41
+ context: 'list-view',
42
+ } );
33
43
 
34
- return (
35
- <div className="offcanvas-editor__appender">
36
- <Inserter
37
- ref={ ref }
38
- rootClientId={ clientId }
39
- position="bottom right"
40
- isAppender={ true }
41
- selectBlockOnInsert={ false }
42
- shouldDirectInsert={ false }
43
- __experimentalIsQuick
44
- { ...props }
45
- />
46
- </div>
47
- );
48
- } );
44
+ const insertedBlockTitle = useBlockDisplayTitle( {
45
+ clientId: insertedBlock?.clientId,
46
+ context: 'list-view',
47
+ } );
48
+
49
+ useEffect( () => {
50
+ if ( ! insertedBlockTitle?.length ) {
51
+ return;
52
+ }
53
+
54
+ speak(
55
+ sprintf(
56
+ // translators: %s: name of block being inserted (i.e. Paragraph, Image, Group etc)
57
+ __( '%s block inserted' ),
58
+ insertedBlockTitle
59
+ ),
60
+ 'assertive'
61
+ );
62
+ }, [ insertedBlockTitle ] );
63
+
64
+ if ( hideInserter ) {
65
+ return null;
66
+ }
67
+
68
+ const descriptionId = `off-canvas-editor-appender__${ instanceId }`;
69
+ const description = sprintf(
70
+ /* translators: 1: The name of the block. 2: The numerical position of the block. 3: The level of nesting for the block. */
71
+ __( 'Append to %1$s block at position %2$d, Level %3$d' ),
72
+ blockTitle,
73
+ blockCount + 1,
74
+ nestingLevel
75
+ );
76
+
77
+ return (
78
+ <div className="offcanvas-editor-appender">
79
+ <Inserter
80
+ ref={ ref }
81
+ rootClientId={ clientId }
82
+ position="bottom right"
83
+ isAppender={ true }
84
+ selectBlockOnInsert={ false }
85
+ shouldDirectInsert={ false }
86
+ __experimentalIsQuick
87
+ { ...props }
88
+ toggleProps={ { 'aria-describedby': descriptionId } }
89
+ onSelectOrClose={ ( maybeInsertedBlock ) => {
90
+ if ( maybeInsertedBlock?.clientId ) {
91
+ setInsertedBlock( maybeInsertedBlock );
92
+ }
93
+ } }
94
+ />
95
+ <div
96
+ className="offcanvas-editor-appender__description"
97
+ id={ descriptionId }
98
+ >
99
+ { description }
100
+ </div>
101
+ </div>
102
+ );
103
+ }
104
+ );
@@ -14,6 +14,7 @@ import {
14
14
  import { forwardRef } from '@wordpress/element';
15
15
  import { Icon, lockSmall as lock } from '@wordpress/icons';
16
16
  import { SPACE, ENTER } from '@wordpress/keycodes';
17
+ import { sprintf, __ } from '@wordpress/i18n';
17
18
 
18
19
  /**
19
20
  * Internal dependencies
@@ -27,7 +28,7 @@ import { useBlockLock } from '../block-lock';
27
28
  function ListViewBlockSelectButton(
28
29
  {
29
30
  className,
30
- block: { clientId },
31
+ block,
31
32
  onClick,
32
33
  onToggleExpanded,
33
34
  tabIndex,
@@ -38,6 +39,7 @@ function ListViewBlockSelectButton(
38
39
  },
39
40
  ref
40
41
  ) {
42
+ const { clientId } = block;
41
43
  const blockInformation = useBlockDisplayInformation( clientId );
42
44
  const blockTitle = useBlockDisplayTitle( {
43
45
  clientId,
@@ -60,6 +62,14 @@ function ListViewBlockSelectButton(
60
62
  }
61
63
  }
62
64
 
65
+ const editAriaLabel = blockInformation
66
+ ? sprintf(
67
+ // translators: %s: The title of the block.
68
+ __( 'Edit %s block' ),
69
+ blockInformation.title
70
+ )
71
+ : __( 'Edit' );
72
+
63
73
  return (
64
74
  <>
65
75
  <Button
@@ -77,6 +87,7 @@ function ListViewBlockSelectButton(
77
87
  draggable={ draggable }
78
88
  href={ `#block-${ clientId }` }
79
89
  aria-hidden={ true }
90
+ title={ editAriaLabel }
80
91
  >
81
92
  <ListViewExpander onClick={ onToggleExpanded } />
82
93
  <BlockIcon
@@ -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,24 +54,16 @@ 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 {Object} ref Forwarded ref
66
64
  */
67
- function __ExperimentalOffCanvasEditor(
68
- {
69
- id,
70
- blocks,
71
- showBlockMovers = false,
72
- isExpanded = false,
73
- selectBlockInCanvas = true,
74
- LeafMoreMenu,
75
- },
65
+ function OffCanvasEditor(
66
+ { id, blocks, showBlockMovers = false, isExpanded = false, LeafMoreMenu },
76
67
  ref
77
68
  ) {
78
69
  const { clientIdsTree, draggedClientIds, selectedClientIds } =
@@ -228,7 +219,6 @@ function __ExperimentalOffCanvasEditor(
228
219
  selectedClientIds={ selectedClientIds }
229
220
  isExpanded={ isExpanded }
230
221
  shouldShowInnerBlocks={ shouldShowInnerBlocks }
231
- selectBlockInCanvas={ selectBlockInCanvas }
232
222
  />
233
223
  <TreeGridRow
234
224
  level={ 1 }
@@ -236,11 +226,6 @@ function __ExperimentalOffCanvasEditor(
236
226
  positionInSet={ 1 }
237
227
  isExpanded={ true }
238
228
  >
239
- <TreeGridCell>
240
- { ( treeGridCellProps ) => (
241
- <Appender { ...treeGridCellProps } />
242
- ) }
243
- </TreeGridCell>
244
229
  { ! clientIdsTree.length && (
245
230
  <TreeGridCell withoutGridItem>
246
231
  <div className="offcanvas-editor-list-view-is-empty">
@@ -258,4 +243,4 @@ function __ExperimentalOffCanvasEditor(
258
243
  );
259
244
  }
260
245
 
261
- export default forwardRef( __ExperimentalOffCanvasEditor );
246
+ 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 };