@wordpress/block-editor 10.4.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +0 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/block-card/index.js +51 -3
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-draggable/index.native.js +46 -39
  10. package/build/components/block-draggable/index.native.js.map +1 -1
  11. package/build/components/block-edit/edit.js +4 -3
  12. package/build/components/block-edit/edit.js.map +1 -1
  13. package/build/components/block-edit/edit.native.js +4 -7
  14. package/build/components/block-edit/edit.native.js.map +1 -1
  15. package/build/components/block-inspector/index.js +35 -33
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-context.native.js +5 -8
  18. package/build/components/block-list/block-list-context.native.js.map +1 -1
  19. package/build/components/block-list/block.js +55 -24
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +61 -28
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-lock/menu-item.js +1 -1
  24. package/build/components/block-lock/menu-item.js.map +1 -1
  25. package/build/components/block-lock/modal.js +16 -9
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  28. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  29. package/build/components/block-pattern-setup/index.js +3 -2
  30. package/build/components/block-pattern-setup/index.js.map +1 -1
  31. package/build/components/block-patterns-list/index.js +33 -11
  32. package/build/components/block-patterns-list/index.js.map +1 -1
  33. package/build/components/block-preview/auto.js +9 -3
  34. package/build/components/block-preview/auto.js.map +1 -1
  35. package/build/components/block-preview/index.js +5 -9
  36. package/build/components/block-preview/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/utils.js +3 -3
  40. package/build/components/block-styles/utils.js.map +1 -1
  41. package/build/components/block-switcher/index.js +19 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +5 -1
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +8 -49
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +27 -4
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/block-variation-picker/index.js +1 -2
  50. package/build/components/block-variation-picker/index.js.map +1 -1
  51. package/build/components/colors/with-colors.js +4 -3
  52. package/build/components/colors/with-colors.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +24 -40
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  55. package/build/components/font-sizes/with-font-sizes.js +7 -5
  56. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  57. package/build/components/height-control/index.js +115 -0
  58. package/build/components/height-control/index.js.map +1 -0
  59. package/build/components/iframe/index.js +11 -8
  60. package/build/components/iframe/index.js.map +1 -1
  61. package/build/components/image-editor/use-save-image.js +2 -0
  62. package/build/components/image-editor/use-save-image.js.map +1 -1
  63. package/build/components/image-editor/zoom-dropdown.js +1 -0
  64. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  65. package/build/components/index.js +18 -0
  66. package/build/components/index.js.map +1 -1
  67. package/build/components/inner-blocks/index.js +25 -9
  68. package/build/components/inner-blocks/index.js.map +1 -1
  69. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  70. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  71. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  72. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  73. package/build/components/inserter/block-patterns-tab.js +25 -46
  74. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  75. package/build/components/inserter/block-types-tab.js +3 -1
  76. package/build/components/inserter/block-types-tab.js.map +1 -1
  77. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  78. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  79. package/build/components/inserter/index.js +8 -3
  80. package/build/components/inserter/index.js.map +1 -1
  81. package/build/components/inserter/index.native.js +3 -4
  82. package/build/components/inserter/index.native.js.map +1 -1
  83. package/build/components/inserter/media-tab/hooks.js +103 -0
  84. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  85. package/build/components/inserter/media-tab/index.js +32 -0
  86. package/build/components/inserter/media-tab/index.js.map +1 -0
  87. package/build/components/inserter/media-tab/media-list.js +100 -0
  88. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  89. package/build/components/inserter/media-tab/media-panel.js +96 -0
  90. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  91. package/build/components/inserter/media-tab/media-tab.js +120 -0
  92. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  93. package/build/components/inserter/media-tab/utils.js +54 -0
  94. package/build/components/inserter/media-tab/utils.js.map +1 -0
  95. package/build/components/inserter/menu.js +35 -12
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  98. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  99. package/build/components/inserter/quick-inserter.js +1 -0
  100. package/build/components/inserter/quick-inserter.js.map +1 -1
  101. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  102. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  103. package/build/components/inserter/search-results.js +3 -1
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter/tabs.js +16 -2
  106. package/build/components/inserter/tabs.js.map +1 -1
  107. package/build/components/inserter-list-item/index.js +4 -1
  108. package/build/components/inserter-list-item/index.js.map +1 -1
  109. package/build/components/inspector-controls/groups.js +2 -0
  110. package/build/components/inspector-controls/groups.js.map +1 -1
  111. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  112. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  113. package/build/components/inspector-controls-tabs/index.js +71 -0
  114. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  115. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  116. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  117. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  118. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  119. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  120. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  121. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  122. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  123. package/build/components/inspector-controls-tabs/utils.js +37 -0
  124. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  125. package/build/components/link-control/index.js +19 -34
  126. package/build/components/link-control/index.js.map +1 -1
  127. package/build/components/link-control/search-input.js +1 -2
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/use-internal-input-value.js +26 -0
  130. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  131. package/build/components/list-view/block.js +10 -5
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/branch.js +22 -15
  134. package/build/components/list-view/branch.js.map +1 -1
  135. package/build/components/media-upload/index.native.js +2 -3
  136. package/build/components/media-upload/index.native.js.map +1 -1
  137. package/build/components/off-canvas-editor/appender.js +104 -0
  138. package/build/components/off-canvas-editor/appender.js.map +1 -0
  139. package/build/components/off-canvas-editor/block-contents.js +100 -0
  140. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  141. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  142. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  143. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  144. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  145. package/build/components/off-canvas-editor/block.js +324 -0
  146. package/build/components/off-canvas-editor/block.js.map +1 -0
  147. package/build/components/off-canvas-editor/branch.js +179 -0
  148. package/build/components/off-canvas-editor/branch.js.map +1 -0
  149. package/build/components/off-canvas-editor/context.js +19 -0
  150. package/build/components/off-canvas-editor/context.js.map +1 -0
  151. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  152. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  153. package/build/components/off-canvas-editor/expander.js +41 -0
  154. package/build/components/off-canvas-editor/expander.js.map +1 -0
  155. package/build/components/off-canvas-editor/index.js +213 -0
  156. package/build/components/off-canvas-editor/index.js.map +1 -0
  157. package/build/components/off-canvas-editor/leaf.js +60 -0
  158. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  159. package/build/components/off-canvas-editor/link-ui.js +185 -0
  160. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  161. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  162. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  163. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  164. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  165. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  166. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  167. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  168. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  169. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  170. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  171. package/build/components/off-canvas-editor/utils.js +60 -0
  172. package/build/components/off-canvas-editor/utils.js.map +1 -0
  173. package/build/components/rich-text/format-toolbar/index.js +8 -4
  174. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  175. package/build/components/rich-text/index.js +3 -3
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/index.native.js +0 -2
  178. package/build/components/rich-text/index.native.js.map +1 -1
  179. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  180. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  181. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  182. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  183. package/build/components/rich-text/utils.js +1 -19
  184. package/build/components/rich-text/utils.js.map +1 -1
  185. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  186. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  187. package/build/components/ungroup-button/index.native.js +4 -2
  188. package/build/components/ungroup-button/index.native.js.map +1 -1
  189. package/build/components/url-input/index.js +46 -43
  190. package/build/components/url-input/index.js.map +1 -1
  191. package/build/components/url-popover/index.js +31 -2
  192. package/build/components/url-popover/index.js.map +1 -1
  193. package/build/components/use-block-display-information/index.js +8 -4
  194. package/build/components/use-block-display-information/index.js.map +1 -1
  195. package/build/components/use-setting/index.js +10 -2
  196. package/build/components/use-setting/index.js.map +1 -1
  197. package/build/hooks/child-layout.js +209 -0
  198. package/build/hooks/child-layout.js.map +1 -0
  199. package/build/hooks/color-panel.js +17 -1
  200. package/build/hooks/color-panel.js.map +1 -1
  201. package/build/hooks/color.js +1 -1
  202. package/build/hooks/color.js.map +1 -1
  203. package/build/hooks/content-lock-ui.js +14 -7
  204. package/build/hooks/content-lock-ui.js.map +1 -1
  205. package/build/hooks/dimensions.js +65 -16
  206. package/build/hooks/dimensions.js.map +1 -1
  207. package/build/hooks/layout.js +59 -3
  208. package/build/hooks/layout.js.map +1 -1
  209. package/build/hooks/margin.js +4 -2
  210. package/build/hooks/margin.js.map +1 -1
  211. package/build/hooks/min-height.js +139 -0
  212. package/build/hooks/min-height.js.map +1 -0
  213. package/build/hooks/padding.js +4 -2
  214. package/build/hooks/padding.js.map +1 -1
  215. package/build/hooks/style.js +3 -2
  216. package/build/hooks/style.js.map +1 -1
  217. package/build/layouts/flex.js +22 -21
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/store/actions.js +26 -0
  220. package/build/store/actions.js.map +1 -1
  221. package/build/store/reducer.js +420 -265
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +73 -49
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/utils/sorting.js +63 -0
  226. package/build/utils/sorting.js.map +1 -0
  227. package/build-module/autocompleters/block.js +2 -6
  228. package/build-module/autocompleters/block.js.map +1 -1
  229. package/build-module/autocompleters/link.js +2 -0
  230. package/build-module/autocompleters/link.js.map +1 -1
  231. package/build-module/components/block-card/index.js +45 -3
  232. package/build-module/components/block-card/index.js.map +1 -1
  233. package/build-module/components/block-draggable/index.native.js +40 -31
  234. package/build-module/components/block-draggable/index.native.js.map +1 -1
  235. package/build-module/components/block-edit/edit.js +4 -2
  236. package/build-module/components/block-edit/edit.js.map +1 -1
  237. package/build-module/components/block-edit/edit.native.js +4 -6
  238. package/build-module/components/block-edit/edit.native.js.map +1 -1
  239. package/build-module/components/block-inspector/index.js +32 -30
  240. package/build-module/components/block-inspector/index.js.map +1 -1
  241. package/build-module/components/block-list/block-list-context.native.js +5 -8
  242. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  243. package/build-module/components/block-list/block.js +55 -25
  244. package/build-module/components/block-list/block.js.map +1 -1
  245. package/build-module/components/block-list/block.native.js +61 -28
  246. package/build-module/components/block-list/block.native.js.map +1 -1
  247. package/build-module/components/block-lock/menu-item.js +2 -2
  248. package/build-module/components/block-lock/menu-item.js.map +1 -1
  249. package/build-module/components/block-lock/modal.js +17 -10
  250. package/build-module/components/block-lock/modal.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  252. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  253. package/build-module/components/block-pattern-setup/index.js +3 -2
  254. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  255. package/build-module/components/block-patterns-list/index.js +35 -13
  256. package/build-module/components/block-patterns-list/index.js.map +1 -1
  257. package/build-module/components/block-preview/auto.js +9 -3
  258. package/build-module/components/block-preview/auto.js.map +1 -1
  259. package/build-module/components/block-preview/index.js +5 -8
  260. package/build-module/components/block-preview/index.js.map +1 -1
  261. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  262. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  263. package/build-module/components/block-styles/utils.js +3 -3
  264. package/build-module/components/block-styles/utils.js.map +1 -1
  265. package/build-module/components/block-switcher/index.js +19 -4
  266. package/build-module/components/block-switcher/index.js.map +1 -1
  267. package/build-module/components/block-toolbar/index.js +6 -2
  268. package/build-module/components/block-toolbar/index.js.map +1 -1
  269. package/build-module/components/block-tools/insertion-point.js +8 -49
  270. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  271. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  272. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  273. package/build-module/components/block-variation-picker/index.js +1 -2
  274. package/build-module/components/block-variation-picker/index.js.map +1 -1
  275. package/build-module/components/colors/with-colors.js +5 -4
  276. package/build-module/components/colors/with-colors.js.map +1 -1
  277. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  278. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  279. package/build-module/components/font-sizes/with-font-sizes.js +8 -6
  280. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  281. package/build-module/components/height-control/index.js +103 -0
  282. package/build-module/components/height-control/index.js.map +1 -0
  283. package/build-module/components/iframe/index.js +11 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +2 -0
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  288. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  289. package/build-module/components/index.js +2 -0
  290. package/build-module/components/index.js.map +1 -1
  291. package/build-module/components/inner-blocks/index.js +27 -11
  292. package/build-module/components/inner-blocks/index.js.map +1 -1
  293. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  294. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  295. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  296. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  297. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  298. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  299. package/build-module/components/inserter/block-types-tab.js +3 -2
  300. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  301. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  302. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  303. package/build-module/components/inserter/index.js +8 -3
  304. package/build-module/components/inserter/index.js.map +1 -1
  305. package/build-module/components/inserter/index.native.js +3 -5
  306. package/build-module/components/inserter/index.native.js.map +1 -1
  307. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  308. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  309. package/build-module/components/inserter/media-tab/index.js +4 -0
  310. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  311. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  312. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  313. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  314. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  315. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  316. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  317. package/build-module/components/inserter/media-tab/utils.js +45 -0
  318. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  319. package/build-module/components/inserter/menu.js +33 -12
  320. package/build-module/components/inserter/menu.js.map +1 -1
  321. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  322. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  323. package/build-module/components/inserter/quick-inserter.js +1 -0
  324. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  325. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  326. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  327. package/build-module/components/inserter/search-results.js +3 -2
  328. package/build-module/components/inserter/search-results.js.map +1 -1
  329. package/build-module/components/inserter/tabs.js +15 -2
  330. package/build-module/components/inserter/tabs.js.map +1 -1
  331. package/build-module/components/inserter-list-item/index.js +5 -2
  332. package/build-module/components/inserter-list-item/index.js.map +1 -1
  333. package/build-module/components/inspector-controls/groups.js +2 -0
  334. package/build-module/components/inspector-controls/groups.js.map +1 -1
  335. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  336. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  337. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  338. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  339. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  340. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  341. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  342. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  343. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  344. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  345. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  346. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  347. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  348. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  349. package/build-module/components/link-control/index.js +18 -34
  350. package/build-module/components/link-control/index.js.map +1 -1
  351. package/build-module/components/link-control/search-input.js +1 -2
  352. package/build-module/components/link-control/search-input.js.map +1 -1
  353. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  354. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  355. package/build-module/components/list-view/block.js +10 -5
  356. package/build-module/components/list-view/block.js.map +1 -1
  357. package/build-module/components/list-view/branch.js +21 -14
  358. package/build-module/components/list-view/branch.js.map +1 -1
  359. package/build-module/components/media-upload/index.native.js +2 -4
  360. package/build-module/components/media-upload/index.native.js.map +1 -1
  361. package/build-module/components/off-canvas-editor/appender.js +89 -0
  362. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  363. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  364. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  365. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  366. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  367. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  368. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  369. package/build-module/components/off-canvas-editor/block.js +298 -0
  370. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  371. package/build-module/components/off-canvas-editor/branch.js +164 -0
  372. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  373. package/build-module/components/off-canvas-editor/context.js +7 -0
  374. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  375. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  376. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  377. package/build-module/components/off-canvas-editor/expander.js +32 -0
  378. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  379. package/build-module/components/off-canvas-editor/index.js +189 -0
  380. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  381. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  382. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  383. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  384. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  385. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  386. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  387. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  388. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  389. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  390. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  391. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  392. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  393. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  394. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  395. package/build-module/components/off-canvas-editor/utils.js +44 -0
  396. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  397. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  398. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  399. package/build-module/components/rich-text/index.js +2 -3
  400. package/build-module/components/rich-text/index.js.map +1 -1
  401. package/build-module/components/rich-text/index.native.js +0 -2
  402. package/build-module/components/rich-text/index.native.js.map +1 -1
  403. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  404. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  405. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  406. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  407. package/build-module/components/rich-text/utils.js +1 -16
  408. package/build-module/components/rich-text/utils.js.map +1 -1
  409. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  410. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  411. package/build-module/components/ungroup-button/index.native.js +3 -2
  412. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  413. package/build-module/components/url-input/index.js +46 -43
  414. package/build-module/components/url-input/index.js.map +1 -1
  415. package/build-module/components/url-popover/index.js +30 -3
  416. package/build-module/components/url-popover/index.js.map +1 -1
  417. package/build-module/components/use-block-display-information/index.js +9 -5
  418. package/build-module/components/use-block-display-information/index.js.map +1 -1
  419. package/build-module/components/use-setting/index.js +9 -2
  420. package/build-module/components/use-setting/index.js.map +1 -1
  421. package/build-module/hooks/child-layout.js +189 -0
  422. package/build-module/hooks/child-layout.js.map +1 -0
  423. package/build-module/hooks/color-panel.js +17 -1
  424. package/build-module/hooks/color-panel.js.map +1 -1
  425. package/build-module/hooks/color.js +1 -1
  426. package/build-module/hooks/color.js.map +1 -1
  427. package/build-module/hooks/content-lock-ui.js +16 -9
  428. package/build-module/hooks/content-lock-ui.js.map +1 -1
  429. package/build-module/hooks/dimensions.js +60 -16
  430. package/build-module/hooks/dimensions.js.map +1 -1
  431. package/build-module/hooks/layout.js +57 -2
  432. package/build-module/hooks/layout.js.map +1 -1
  433. package/build-module/hooks/margin.js +4 -2
  434. package/build-module/hooks/margin.js.map +1 -1
  435. package/build-module/hooks/min-height.js +116 -0
  436. package/build-module/hooks/min-height.js.map +1 -0
  437. package/build-module/hooks/padding.js +4 -2
  438. package/build-module/hooks/padding.js.map +1 -1
  439. package/build-module/hooks/style.js +4 -3
  440. package/build-module/hooks/style.js.map +1 -1
  441. package/build-module/layouts/flex.js +23 -22
  442. package/build-module/layouts/flex.js.map +1 -1
  443. package/build-module/store/actions.js +22 -0
  444. package/build-module/store/actions.js.map +1 -1
  445. package/build-module/store/reducer.js +415 -265
  446. package/build-module/store/reducer.js.map +1 -1
  447. package/build-module/store/selectors.js +66 -48
  448. package/build-module/store/selectors.js.map +1 -1
  449. package/build-module/utils/sorting.js +56 -0
  450. package/build-module/utils/sorting.js.map +1 -0
  451. package/build-style/content-rtl.css +701 -0
  452. package/build-style/content.css +701 -0
  453. package/build-style/default-editor-styles-rtl.css +14 -0
  454. package/build-style/default-editor-styles.css +14 -0
  455. package/build-style/style-rtl.css +305 -668
  456. package/build-style/style.css +305 -668
  457. package/package.json +32 -30
  458. package/src/autocompleters/block.js +2 -6
  459. package/src/autocompleters/link.js +2 -0
  460. package/src/components/alignment-control/README.md +1 -1
  461. package/src/components/alignment-control/test/index.js +4 -1
  462. package/src/components/block-alignment-control/test/index.js +4 -1
  463. package/src/components/block-alignment-control/test/index.native.js +4 -4
  464. package/src/components/block-card/index.js +46 -2
  465. package/src/components/block-card/style.scss +4 -0
  466. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  467. package/src/components/block-draggable/content.scss +20 -0
  468. package/src/components/block-draggable/index.native.js +54 -40
  469. package/src/components/block-draggable/style.scss +0 -21
  470. package/src/components/block-draggable/test/helpers.native.js +7 -9
  471. package/src/components/block-draggable/test/index.native.js +35 -45
  472. package/src/components/block-edit/edit.js +5 -2
  473. package/src/components/block-edit/edit.native.js +5 -6
  474. package/src/components/block-inspector/index.js +96 -81
  475. package/src/components/block-inspector/style.scss +9 -1
  476. package/src/components/block-list/block-list-context.native.js +5 -8
  477. package/src/components/block-list/block.js +74 -23
  478. package/src/components/block-list/block.native.js +78 -23
  479. package/src/components/block-list/{style.scss → content.scss} +11 -20
  480. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  481. package/src/components/block-lock/menu-item.js +5 -2
  482. package/src/components/block-lock/modal.js +19 -36
  483. package/src/components/block-lock/style.scss +8 -17
  484. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  485. package/src/components/block-mover/style.scss +0 -1
  486. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  487. package/src/components/block-pattern-setup/index.js +2 -1
  488. package/src/components/block-patterns-list/index.js +47 -24
  489. package/src/components/block-popover/style.scss +1 -1
  490. package/src/components/block-preview/README.md +15 -10
  491. package/src/components/block-preview/auto.js +7 -1
  492. package/src/components/block-preview/content.scss +4 -0
  493. package/src/components/block-preview/index.js +7 -12
  494. package/src/components/block-preview/style.scss +0 -7
  495. package/src/components/block-preview/test/index.js +18 -35
  496. package/src/components/block-selection-clearer/test/index.js +12 -12
  497. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  498. package/src/components/block-styles/utils.js +3 -3
  499. package/src/components/block-switcher/index.js +19 -4
  500. package/src/components/block-switcher/test/index.js +4 -0
  501. package/src/components/block-toolbar/index.js +12 -5
  502. package/src/components/block-toolbar/style.scss +10 -0
  503. package/src/components/block-tools/insertion-point.js +3 -47
  504. package/src/components/block-tools/selected-block-popover.js +80 -34
  505. package/src/components/block-tools/style.scss +27 -5
  506. package/src/components/block-variation-picker/index.js +1 -4
  507. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  508. package/src/components/colors/with-colors.js +13 -23
  509. package/src/components/default-block-appender/{style.scss → content.scss} +1 -0
  510. package/src/components/font-sizes/fluid-utils.js +37 -64
  511. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  512. package/src/components/font-sizes/with-font-sizes.js +14 -11
  513. package/src/components/height-control/index.js +123 -0
  514. package/src/components/height-control/stories/index.js +21 -0
  515. package/src/components/height-control/style.scss +5 -0
  516. package/src/components/iframe/index.js +25 -18
  517. package/src/components/image-editor/use-save-image.js +2 -0
  518. package/src/components/image-editor/zoom-dropdown.js +1 -0
  519. package/src/components/index.js +2 -0
  520. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  521. package/src/components/inner-blocks/index.js +30 -10
  522. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  523. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  524. package/src/components/inserter/block-patterns-tab.js +28 -71
  525. package/src/components/inserter/block-types-tab.js +3 -2
  526. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  527. package/src/components/inserter/index.js +10 -2
  528. package/src/components/inserter/index.native.js +1 -1
  529. package/src/components/inserter/media-tab/hooks.js +88 -0
  530. package/src/components/inserter/media-tab/index.js +3 -0
  531. package/src/components/inserter/media-tab/media-list.js +93 -0
  532. package/src/components/inserter/media-tab/media-panel.js +83 -0
  533. package/src/components/inserter/media-tab/media-tab.js +135 -0
  534. package/src/components/inserter/media-tab/utils.js +37 -0
  535. package/src/components/inserter/menu.js +55 -13
  536. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  537. package/src/components/inserter/quick-inserter.js +1 -0
  538. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  539. package/src/components/inserter/search-results.js +3 -2
  540. package/src/components/inserter/stories/index.js +1 -1
  541. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  542. package/src/components/inserter/style.scss +184 -18
  543. package/src/components/inserter/tabs.js +12 -1
  544. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  545. package/src/components/inserter-list-item/index.js +11 -1
  546. package/src/components/inserter-list-item/style.scss +26 -0
  547. package/src/components/inspector-controls/groups.js +2 -0
  548. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  549. package/src/components/inspector-controls-tabs/index.js +62 -0
  550. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  551. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  552. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  553. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  554. package/src/components/inspector-controls-tabs/utils.js +28 -0
  555. package/src/components/line-height-control/test/index.js +5 -5
  556. package/src/components/link-control/README.md +1 -1
  557. package/src/components/link-control/index.js +24 -39
  558. package/src/components/link-control/search-input.js +1 -2
  559. package/src/components/link-control/test/index.js +400 -582
  560. package/src/components/link-control/use-internal-input-value.js +22 -0
  561. package/src/components/list-view/block.js +7 -3
  562. package/src/components/list-view/branch.js +21 -14
  563. package/src/components/list-view/style.scss +20 -9
  564. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  565. package/src/components/media-replace-flow/test/index.js +37 -9
  566. package/src/components/media-upload/test/index.native.js +2 -0
  567. package/src/components/off-canvas-editor/README.md +5 -0
  568. package/src/components/off-canvas-editor/appender.js +93 -0
  569. package/src/components/off-canvas-editor/block-contents.js +89 -0
  570. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  571. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  572. package/src/components/off-canvas-editor/block.js +401 -0
  573. package/src/components/off-canvas-editor/branch.js +208 -0
  574. package/src/components/off-canvas-editor/context.js +8 -0
  575. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  576. package/src/components/off-canvas-editor/expander.js +26 -0
  577. package/src/components/off-canvas-editor/index.js +242 -0
  578. package/src/components/off-canvas-editor/leaf.js +52 -0
  579. package/src/components/off-canvas-editor/link-ui.js +166 -0
  580. package/src/components/off-canvas-editor/style.scss +26 -0
  581. package/src/components/off-canvas-editor/test/utils.js +50 -0
  582. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  583. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  584. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  585. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  586. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  587. package/src/components/off-canvas-editor/utils.js +58 -0
  588. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  589. package/src/components/recursion-provider/test/index.js +27 -29
  590. package/src/components/responsive-block-control/test/index.js +69 -92
  591. package/src/components/rich-text/content.scss +42 -0
  592. package/src/components/rich-text/format-toolbar/index.js +6 -4
  593. package/src/components/rich-text/index.js +2 -2
  594. package/src/components/rich-text/index.native.js +0 -2
  595. package/src/components/rich-text/style.scss +0 -43
  596. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  597. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  598. package/src/components/rich-text/utils.js +2 -21
  599. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  600. package/src/components/ungroup-button/index.native.js +6 -2
  601. package/src/components/url-input/index.js +57 -73
  602. package/src/components/url-popover/README.md +12 -3
  603. package/src/components/url-popover/index.js +33 -3
  604. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  605. package/src/components/url-popover/test/index.js +21 -9
  606. package/src/components/use-block-display-information/index.js +14 -5
  607. package/src/components/use-setting/index.js +20 -2
  608. package/src/components/use-setting/test/index.js +99 -0
  609. package/src/content.scss +10 -0
  610. package/src/hooks/child-layout.js +190 -0
  611. package/src/hooks/color-panel.js +13 -1
  612. package/src/hooks/color.js +2 -0
  613. package/src/hooks/content-lock-ui.js +47 -35
  614. package/src/hooks/dimensions.js +119 -21
  615. package/src/hooks/layout.js +62 -3
  616. package/src/hooks/margin.js +4 -3
  617. package/src/hooks/min-height.js +104 -0
  618. package/src/hooks/padding.js +4 -3
  619. package/src/hooks/style.js +10 -2
  620. package/src/hooks/test/style.js +4 -0
  621. package/src/hooks/test/use-typography-props.js +1 -1
  622. package/src/layouts/flex.js +43 -38
  623. package/src/store/actions.js +22 -0
  624. package/src/store/reducer.js +480 -434
  625. package/src/store/selectors.js +70 -64
  626. package/src/store/test/actions.js +18 -0
  627. package/src/store/test/performance.js +71 -0
  628. package/src/store/test/reducer.js +662 -490
  629. package/src/store/test/selectors.js +1839 -1306
  630. package/src/style.scss +4 -7
  631. package/src/utils/sorting.js +54 -0
  632. package/src/utils/test/sorting.js +49 -0
  633. package/tsconfig.tsbuildinfo +1 -1
  634. package/build/components/block-preview/live.js +0 -30
  635. package/build/components/block-preview/live.js.map +0 -1
  636. package/build-module/components/block-preview/live.js +0 -20
  637. package/build-module/components/block-preview/live.js.map +0 -1
  638. package/src/components/block-preview/live.js +0 -19
@@ -93,11 +93,13 @@ describe( 'BlockDraggable', () => {
93
93
  it( 'enables drag mode when unselected', async () =>
94
94
  withReanimatedTimer( async () => {
95
95
  const screen = await initializeWithBlocksLayouts( BLOCKS );
96
- const { getByA11yLabel } = screen;
97
96
 
98
97
  // Start dragging from block's content
98
+ const [ paragraphBlock ] = screen.getAllByLabelText(
99
+ /Paragraph Block\. Row 1/
100
+ );
99
101
  fireLongPress(
100
- getByA11yLabel( /Paragraph Block\. Row 1/ ),
102
+ paragraphBlock,
101
103
  'draggable-trigger-content'
102
104
  );
103
105
  expect( getDraggableChip( screen ) ).toBeVisible();
@@ -112,12 +114,12 @@ describe( 'BlockDraggable', () => {
112
114
  it( 'enables drag mode when selected', async () =>
113
115
  withReanimatedTimer( async () => {
114
116
  const screen = await initializeWithBlocksLayouts( BLOCKS );
115
- const { getByA11yLabel } = screen;
117
+
116
118
  const blockDraggableWrapper = getByGestureTestId(
117
119
  'block-draggable-wrapper'
118
120
  );
119
121
 
120
- const paragraphBlock = getByA11yLabel(
122
+ const [ paragraphBlock ] = screen.getAllByLabelText(
121
123
  /Paragraph Block\. Row 1/
122
124
  );
123
125
  fireEvent.press( paragraphBlock );
@@ -146,9 +148,8 @@ describe( 'BlockDraggable', () => {
146
148
  it( 'does not enable drag mode when selected and editing text', async () =>
147
149
  withReanimatedTimer( async () => {
148
150
  const screen = await initializeWithBlocksLayouts( BLOCKS );
149
- const { getByA11yLabel } = screen;
150
151
 
151
- const paragraphBlock = getByA11yLabel(
152
+ const [ paragraphBlock ] = screen.getAllByLabelText(
152
153
  /Paragraph Block\. Row 1/
153
154
  );
154
155
 
@@ -178,13 +179,12 @@ describe( 'BlockDraggable', () => {
178
179
  it( 'finishes editing text and enables drag mode when long-pressing over a different block', async () =>
179
180
  withReanimatedTimer( async () => {
180
181
  const screen = await initializeWithBlocksLayouts( BLOCKS );
181
- const { getByA11yLabel } = screen;
182
182
 
183
- const paragraphBlock = getByA11yLabel(
183
+ const [ paragraphBlock ] = screen.getAllByLabelText(
184
184
  /Paragraph Block\. Row 1/
185
185
  );
186
- const spacerBlock =
187
- getByA11yLabel( /Spacer Block\. Row 3/ );
186
+ const [ spacerBlock ] =
187
+ screen.getAllByLabelText( /Spacer Block\. Row 3/ );
188
188
 
189
189
  // Select Paragraph block and start editing text
190
190
  fireEvent.press( paragraphBlock );
@@ -208,12 +208,11 @@ describe( 'BlockDraggable', () => {
208
208
  it( 'enables drag mode when unselected', async () =>
209
209
  withReanimatedTimer( async () => {
210
210
  const screen = await initializeWithBlocksLayouts( BLOCKS );
211
- const { getAllByA11yLabel } = screen;
212
211
 
213
212
  // We select the first Image block as the Gallery block
214
213
  // also contains Image blocks.
215
- const imageBlock =
216
- getAllByA11yLabel( /Image Block\. Row 2/ )[ 0 ];
214
+ const [ imageBlock ] =
215
+ screen.getAllByLabelText( /Image Block\. Row 2/ );
217
216
  // Start dragging from block's content
218
217
  fireLongPress( imageBlock, 'draggable-trigger-content' );
219
218
  expect( getDraggableChip( screen ) ).toBeVisible();
@@ -228,15 +227,14 @@ describe( 'BlockDraggable', () => {
228
227
  it( 'enables drag mode when selected', async () =>
229
228
  withReanimatedTimer( async () => {
230
229
  const screen = await initializeWithBlocksLayouts( BLOCKS );
231
- const { getAllByA11yLabel } = screen;
232
230
  const blockDraggableWrapper = getByGestureTestId(
233
231
  'block-draggable-wrapper'
234
232
  );
235
233
 
236
234
  // We select the first Image block as the Gallery block
237
235
  // also contains Image blocks.
238
- const imageBlock =
239
- getAllByA11yLabel( /Image Block\. Row 2/ )[ 0 ];
236
+ const [ imageBlock ] =
237
+ screen.getAllByLabelText( /Image Block\. Row 2/ );
240
238
  fireEvent.press( imageBlock );
241
239
 
242
240
  // Start dragging from block's content
@@ -262,15 +260,15 @@ describe( 'BlockDraggable', () => {
262
260
  it( 'enables drag mode when unselected', async () =>
263
261
  withReanimatedTimer( async () => {
264
262
  const screen = await initializeWithBlocksLayouts( BLOCKS );
265
- const { getByA11yLabel } = screen;
266
263
 
267
264
  // Start dragging from block's content, specifically the first
268
265
  // trigger index, which corresponds to the Gallery block content.
269
- fireLongPress(
270
- getByA11yLabel( /Gallery Block\. Row 4/ ),
271
- 'draggable-trigger-content',
272
- { triggerIndex: 0 }
266
+ const [ galleryBlock ] = screen.getAllByLabelText(
267
+ /Gallery Block\. Row 4/
273
268
  );
269
+ fireLongPress( galleryBlock, 'draggable-trigger-content', {
270
+ triggerIndex: 0,
271
+ } );
274
272
  expect( getDraggableChip( screen ) ).toBeVisible();
275
273
 
276
274
  // "firePanGesture" finishes the dragging gesture
@@ -283,12 +281,11 @@ describe( 'BlockDraggable', () => {
283
281
  it( 'enables drag mode when selected', async () =>
284
282
  withReanimatedTimer( async () => {
285
283
  const screen = await initializeWithBlocksLayouts( BLOCKS );
286
- const { getByA11yLabel } = screen;
287
284
  const blockDraggableWrapper = getByGestureTestId(
288
285
  'block-draggable-wrapper'
289
286
  );
290
287
 
291
- const galleryBlock = getByA11yLabel(
288
+ const [ galleryBlock ] = screen.getAllByLabelText(
292
289
  /Gallery Block\. Row 4/
293
290
  );
294
291
  await waitForStoreResolvers( () =>
@@ -319,16 +316,15 @@ describe( 'BlockDraggable', () => {
319
316
  it( 'enables drag mode when nested block is selected', async () =>
320
317
  withReanimatedTimer( async () => {
321
318
  const screen = await initializeWithBlocksLayouts( BLOCKS );
322
- const { getByA11yLabel } = screen;
323
319
  const blockDraggableWrapper = getByGestureTestId(
324
320
  'block-draggable-wrapper'
325
321
  );
326
322
 
327
- const galleryBlock = getByA11yLabel(
323
+ const [ galleryBlock ] = screen.getAllByLabelText(
328
324
  /Gallery Block\. Row 4/
329
325
  );
330
- const galleryItem =
331
- within( galleryBlock ).getByA11yLabel(
326
+ const [ galleryItem ] =
327
+ within( galleryBlock ).getAllByLabelText(
332
328
  /Image Block\. Row 2/
333
329
  );
334
330
  fireEvent.press( galleryBlock );
@@ -361,13 +357,11 @@ describe( 'BlockDraggable', () => {
361
357
  it( 'enables drag mode when unselected', async () =>
362
358
  withReanimatedTimer( async () => {
363
359
  const screen = await initializeWithBlocksLayouts( BLOCKS );
364
- const { getByA11yLabel } = screen;
365
360
 
366
361
  // Start dragging from block's content
367
- fireLongPress(
368
- getByA11yLabel( /Spacer Block\. Row 3/ ),
369
- 'draggable-trigger-content'
370
- );
362
+ const [ spacerBlock ] =
363
+ screen.getAllByLabelText( /Spacer Block\. Row 3/ );
364
+ fireLongPress( spacerBlock, 'draggable-trigger-content' );
371
365
  expect( getDraggableChip( screen ) ).toBeVisible();
372
366
 
373
367
  // "firePanGesture" finishes the dragging gesture
@@ -380,13 +374,12 @@ describe( 'BlockDraggable', () => {
380
374
  it( 'enables drag mode when selected', async () =>
381
375
  withReanimatedTimer( async () => {
382
376
  const screen = await initializeWithBlocksLayouts( BLOCKS );
383
- const { getByA11yLabel } = screen;
384
377
  const blockDraggableWrapper = getByGestureTestId(
385
378
  'block-draggable-wrapper'
386
379
  );
387
380
 
388
- const spacerBlock =
389
- getByA11yLabel( /Spacer Block\. Row 3/ );
381
+ const [ spacerBlock ] =
382
+ screen.getAllByLabelText( /Spacer Block\. Row 3/ );
390
383
  await waitForStoreResolvers( () =>
391
384
  fireEvent.press( spacerBlock )
392
385
  );
@@ -413,9 +406,7 @@ describe( 'BlockDraggable', () => {
413
406
 
414
407
  it( 'moves blocks', async () =>
415
408
  withReanimatedTimer( async () => {
416
- const { getByA11yLabel } = await initializeWithBlocksLayouts(
417
- BLOCKS
418
- );
409
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
419
410
  const blockDraggableWrapper = getByGestureTestId(
420
411
  'block-draggable-wrapper'
421
412
  );
@@ -423,10 +414,10 @@ describe( 'BlockDraggable', () => {
423
414
  expect( getEditorHtml() ).toMatchSnapshot( 'Initial order' );
424
415
 
425
416
  // Move Paragraph block from first to second position
426
- fireLongPress(
427
- getByA11yLabel( /Paragraph Block\. Row 1/ ),
428
- 'draggable-trigger-content'
417
+ const [ paragraphBlock ] = screen.getAllByLabelText(
418
+ /Paragraph Block\. Row 1/
429
419
  );
420
+ fireLongPress( paragraphBlock, 'draggable-trigger-content' );
430
421
  firePanGesture( blockDraggableWrapper, [
431
422
  {
432
423
  id: TOUCH_EVENT_ID,
@@ -453,10 +444,9 @@ describe( 'BlockDraggable', () => {
453
444
  );
454
445
 
455
446
  // Move Spacer block from third to first position
456
- fireLongPress(
457
- getByA11yLabel( /Spacer Block\. Row 3/ ),
458
- 'draggable-trigger-content'
459
- );
447
+ const [ spacerBlock ] =
448
+ screen.getAllByLabelText( /Spacer Block\. Row 3/ );
449
+ fireLongPress( spacerBlock, 'draggable-trigger-content' );
460
450
  firePanGesture( blockDraggableWrapper, [
461
451
  {
462
452
  id: TOUCH_EVENT_ID,
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { pick } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -38,7 +37,11 @@ export const Edit = ( props ) => {
38
37
  // Assign context values using the block type's declared context needs.
39
38
  const context = useMemo( () => {
40
39
  return blockType && blockType.usesContext
41
- ? pick( blockContext, blockType.usesContext )
40
+ ? Object.fromEntries(
41
+ Object.entries( blockContext ).filter( ( [ key ] ) =>
42
+ blockType.usesContext.includes( key )
43
+ )
44
+ )
42
45
  : DEFAULT_BLOCK_CONTEXT;
43
46
  }, [ blockType, blockContext ] );
44
47
 
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { pick } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -34,7 +29,11 @@ export const Edit = ( props ) => {
34
29
  // Assign context values using the block type's declared context needs.
35
30
  const context = useMemo( () => {
36
31
  return blockType && blockType.usesContext
37
- ? pick( blockContext, blockType.usesContext )
32
+ ? Object.fromEntries(
33
+ Object.entries( blockContext ).filter( ( [ key ] ) =>
34
+ blockType.usesContext.includes( key )
35
+ )
36
+ )
38
37
  : DEFAULT_BLOCK_CONTEXT;
39
38
  }, [ blockType, blockContext ] );
40
39
 
@@ -9,9 +9,8 @@ import {
9
9
  store as blocksStore,
10
10
  } from '@wordpress/blocks';
11
11
  import {
12
- PanelBody,
13
- __experimentalUseSlotFills as useSlotFills,
14
12
  FlexItem,
13
+ PanelBody,
15
14
  __experimentalHStack as HStack,
16
15
  __experimentalVStack as VStack,
17
16
  Button,
@@ -24,20 +23,20 @@ import { useMemo, useCallback } from '@wordpress/element';
24
23
  */
25
24
  import SkipToSelectedBlock from '../skip-to-selected-block';
26
25
  import BlockCard from '../block-card';
27
- import {
28
- default as InspectorControls,
29
- InspectorAdvancedControls,
30
- } from '../inspector-controls';
31
- import BlockStyles from '../block-styles';
32
26
  import MultiSelectionInspector from '../multi-selection-inspector';
33
- import DefaultStylePicker from '../default-style-picker';
34
27
  import BlockVariationTransforms from '../block-variation-transforms';
35
28
  import useBlockDisplayInformation from '../use-block-display-information';
36
29
  import { store as blockEditorStore } from '../../store';
37
30
  import BlockIcon from '../block-icon';
31
+ import BlockStyles from '../block-styles';
32
+ import DefaultStylePicker from '../default-style-picker';
33
+ import { default as InspectorControls } from '../inspector-controls';
34
+ import { default as InspectorControlsTabs } from '../inspector-controls-tabs';
35
+ import useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-controls-tabs';
36
+ import AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';
38
37
 
39
38
  function useContentBlocks( blockTypes, block ) {
40
- const contenBlocksObjectAux = useMemo( () => {
39
+ const contentBlocksObjectAux = useMemo( () => {
41
40
  return blockTypes.reduce( ( result, blockType ) => {
42
41
  if (
43
42
  blockType.name !== 'core/list-item' &&
@@ -53,7 +52,7 @@ function useContentBlocks( blockTypes, block ) {
53
52
  }, [ blockTypes ] );
54
53
  const isContentBlock = useCallback(
55
54
  ( blockName ) => {
56
- return !! contenBlocksObjectAux[ blockName ];
55
+ return !! contentBlocksObjectAux[ blockName ];
57
56
  },
58
57
  [ blockTypes ]
59
58
  );
@@ -108,7 +107,10 @@ function BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {
108
107
  const contentBlocks = useContentBlocks( blockTypes, block );
109
108
  return (
110
109
  <div className="block-editor-block-inspector">
111
- <BlockCard { ...blockInformation } />
110
+ <BlockCard
111
+ { ...blockInformation }
112
+ className={ blockInformation.isSynced && 'is-synced' }
113
+ />
112
114
  <BlockVariationTransforms blockClientId={ topLevelLockedBlock } />
113
115
  <VStack
114
116
  spacing={ 1 }
@@ -166,28 +168,37 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
166
168
  };
167
169
  }, [] );
168
170
 
171
+ const availableTabs = useInspectorControlsTabs( blockType?.name );
172
+ const showTabs = availableTabs?.length > 1;
173
+
169
174
  if ( count > 1 ) {
170
175
  return (
171
176
  <div className="block-editor-block-inspector">
172
177
  <MultiSelectionInspector />
173
- <InspectorControls.Slot />
174
- <InspectorControls.Slot
175
- __experimentalGroup="color"
176
- label={ __( 'Color' ) }
177
- className="color-block-support-panel__inner-wrapper"
178
- />
179
- <InspectorControls.Slot
180
- __experimentalGroup="typography"
181
- label={ __( 'Typography' ) }
182
- />
183
- <InspectorControls.Slot
184
- __experimentalGroup="dimensions"
185
- label={ __( 'Dimensions' ) }
186
- />
187
- <InspectorControls.Slot
188
- __experimentalGroup="border"
189
- label={ __( 'Border' ) }
190
- />
178
+ { showTabs ? (
179
+ <InspectorControlsTabs tabs={ availableTabs } />
180
+ ) : (
181
+ <>
182
+ <InspectorControls.Slot />
183
+ <InspectorControls.Slot
184
+ __experimentalGroup="color"
185
+ label={ __( 'Color' ) }
186
+ className="color-block-support-panel__inner-wrapper"
187
+ />
188
+ <InspectorControls.Slot
189
+ __experimentalGroup="typography"
190
+ label={ __( 'Typography' ) }
191
+ />
192
+ <InspectorControls.Slot
193
+ __experimentalGroup="dimensions"
194
+ label={ __( 'Dimensions' ) }
195
+ />
196
+ <InspectorControls.Slot
197
+ __experimentalGroup="border"
198
+ label={ __( 'Border' ) }
199
+ />
200
+ </>
201
+ ) }
191
202
  </div>
192
203
  );
193
204
  }
@@ -229,6 +240,9 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
229
240
  };
230
241
 
231
242
  const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
243
+ const availableTabs = useInspectorControlsTabs( blockName );
244
+ const showTabs = availableTabs?.length > 1;
245
+
232
246
  const hasBlockStyles = useSelect(
233
247
  ( select ) => {
234
248
  const { getBlockStyles } = select( blocksStore );
@@ -238,67 +252,68 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
238
252
  [ blockName ]
239
253
  );
240
254
  const blockInformation = useBlockDisplayInformation( clientId );
255
+
241
256
  return (
242
257
  <div className="block-editor-block-inspector">
243
- <BlockCard { ...blockInformation } />
258
+ <BlockCard
259
+ { ...blockInformation }
260
+ className={ blockInformation.isSynced && 'is-synced' }
261
+ />
244
262
  <BlockVariationTransforms blockClientId={ clientId } />
245
- { hasBlockStyles && (
246
- <div>
247
- <PanelBody title={ __( 'Styles' ) }>
248
- <BlockStyles clientId={ clientId } />
249
- { hasBlockSupport(
250
- blockName,
251
- 'defaultStylePicker',
252
- true
253
- ) && <DefaultStylePicker blockName={ blockName } /> }
254
- </PanelBody>
255
- </div>
263
+ { showTabs && (
264
+ <InspectorControlsTabs
265
+ hasBlockStyles={ hasBlockStyles }
266
+ clientId={ clientId }
267
+ blockName={ blockName }
268
+ tabs={ availableTabs }
269
+ />
270
+ ) }
271
+ { ! showTabs && (
272
+ <>
273
+ { hasBlockStyles && (
274
+ <div>
275
+ <PanelBody title={ __( 'Styles' ) }>
276
+ <BlockStyles clientId={ clientId } />
277
+ { hasBlockSupport(
278
+ blockName,
279
+ 'defaultStylePicker',
280
+ true
281
+ ) && (
282
+ <DefaultStylePicker
283
+ blockName={ blockName }
284
+ />
285
+ ) }
286
+ </PanelBody>
287
+ </div>
288
+ ) }
289
+ <InspectorControls.Slot />
290
+ <InspectorControls.Slot
291
+ __experimentalGroup="color"
292
+ label={ __( 'Color' ) }
293
+ className="color-block-support-panel__inner-wrapper"
294
+ />
295
+ <InspectorControls.Slot
296
+ __experimentalGroup="typography"
297
+ label={ __( 'Typography' ) }
298
+ />
299
+ <InspectorControls.Slot
300
+ __experimentalGroup="dimensions"
301
+ label={ __( 'Dimensions' ) }
302
+ />
303
+ <InspectorControls.Slot
304
+ __experimentalGroup="border"
305
+ label={ __( 'Border' ) }
306
+ />
307
+ <div>
308
+ <AdvancedControls />
309
+ </div>
310
+ </>
256
311
  ) }
257
- <InspectorControls.Slot />
258
- <InspectorControls.Slot
259
- __experimentalGroup="color"
260
- label={ __( 'Color' ) }
261
- className="color-block-support-panel__inner-wrapper"
262
- />
263
- <InspectorControls.Slot
264
- __experimentalGroup="typography"
265
- label={ __( 'Typography' ) }
266
- />
267
- <InspectorControls.Slot
268
- __experimentalGroup="dimensions"
269
- label={ __( 'Dimensions' ) }
270
- />
271
- <InspectorControls.Slot
272
- __experimentalGroup="border"
273
- label={ __( 'Border' ) }
274
- />
275
- <div>
276
- <AdvancedControls />
277
- </div>
278
312
  <SkipToSelectedBlock key="back" />
279
313
  </div>
280
314
  );
281
315
  };
282
316
 
283
- const AdvancedControls = () => {
284
- const fills = useSlotFills( InspectorAdvancedControls.slotName );
285
- const hasFills = Boolean( fills && fills.length );
286
-
287
- if ( ! hasFills ) {
288
- return null;
289
- }
290
-
291
- return (
292
- <PanelBody
293
- className="block-editor-block-inspector__advanced"
294
- title={ __( 'Advanced' ) }
295
- initialOpen={ false }
296
- >
297
- <InspectorControls.Slot __experimentalGroup="advanced" />
298
- </PanelBody>
299
- );
300
- };
301
-
302
317
  /**
303
318
  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md
304
319
  */
@@ -27,7 +27,8 @@
27
27
  }
28
28
  }
29
29
 
30
- .block-editor-block-inspector__no-blocks {
30
+ .block-editor-block-inspector__no-blocks,
31
+ .block-editor-block-inspector__no-block-tools {
31
32
  display: block;
32
33
  font-size: $default-font-size;
33
34
  background: $white;
@@ -35,6 +36,13 @@
35
36
  text-align: center;
36
37
  }
37
38
 
39
+ .block-editor-block-inspector__no-block-tools {
40
+ border-top: $border-width solid $gray-300;
41
+ }
42
+
43
+ .block-editor-block-inspector__tab-item {
44
+ flex: 1 1 0px;
45
+ }
38
46
 
39
47
  .block-editor-block-inspector__block-buttons-container {
40
48
  border-top: $border-width solid $gray-200;
@@ -1,12 +1,12 @@
1
1
  /**
2
- * External dependencies
2
+ * WordPress dependencies
3
3
  */
4
- import { orderBy } from 'lodash';
4
+ import { createContext, useContext } from '@wordpress/element';
5
5
 
6
6
  /**
7
- * WordPress dependencies
7
+ * Internal dependencies
8
8
  */
9
- import { createContext, useContext } from '@wordpress/element';
9
+ import { orderBy } from '../../utils/sorting';
10
10
 
11
11
  export const DEFAULT_BLOCK_LIST_CONTEXT = {
12
12
  scrollRef: null,
@@ -103,10 +103,7 @@ export function deleteBlockLayoutByClientId( data, clientId ) {
103
103
  */
104
104
  function getBlockLayoutsOrderedByYCoord( data ) {
105
105
  // Only enabled for root level blocks.
106
- // Using lodash orderBy due to hermes not having
107
- // stable support for native .sort(). It will be
108
- // supported in the React Native version 0.68.0.
109
- return orderBy( data, [ 'y', 'asc' ] );
106
+ return orderBy( Object.values( data ), 'y' );
110
107
  }
111
108
 
112
109
  /**