@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
@@ -222,6 +222,8 @@ export default function SpacingInputControl( {
222
222
  <UnitControl
223
223
  onMouseOver={ onMouseOver }
224
224
  onMouseOut={ onMouseOut }
225
+ onFocus={ onMouseOver }
226
+ onBlur={ onMouseOut }
225
227
  onChange={ ( newSize ) =>
226
228
  onChange( getNewCustomValue( newSize ) )
227
229
  }
@@ -239,6 +241,8 @@ export default function SpacingInputControl( {
239
241
  <RangeControl
240
242
  onMouseOver={ onMouseOver }
241
243
  onMouseOut={ onMouseOut }
244
+ onFocus={ onMouseOver }
245
+ onBlur={ onMouseOut }
242
246
  value={ customRangeValue }
243
247
  min={ 0 }
244
248
  max={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }
@@ -248,6 +252,7 @@ export default function SpacingInputControl( {
248
252
  withInputField={ false }
249
253
  onChange={ handleCustomValueSliderChange }
250
254
  className="components-spacing-sizes-control__custom-value-range"
255
+ __nextHasNoMarginBottom
251
256
  />
252
257
  </>
253
258
  ) }
@@ -277,6 +282,8 @@ export default function SpacingInputControl( {
277
282
  label={ ariaLabel }
278
283
  hideLabelFromVision={ true }
279
284
  __nextHasNoMarginBottom={ true }
285
+ onFocus={ onMouseOver }
286
+ onBlur={ onMouseOut }
280
287
  />
281
288
  ) }
282
289
  { ! showRangeControl && ! showCustomValueControl && (
@@ -302,6 +309,8 @@ export default function SpacingInputControl( {
302
309
  size={ '__unstable-large' }
303
310
  onMouseOver={ onMouseOver }
304
311
  onMouseOut={ onMouseOut }
312
+ onFocus={ onMouseOver }
313
+ onBlur={ onMouseOut }
305
314
  />
306
315
  ) }
307
316
  </>
@@ -14,6 +14,7 @@ import UngroupIcon from './icon';
14
14
  import { store as blockEditorStore } from '../../store';
15
15
 
16
16
  const noop = () => {};
17
+ const EMPTY_BLOCKS_LIST = [];
17
18
 
18
19
  export function UngroupButton( { onConvertFromGroup, isUngroupable = false } ) {
19
20
  if ( ! isUngroupable ) {
@@ -45,9 +46,12 @@ export default compose( [
45
46
  const isUngroupable =
46
47
  selectedBlock &&
47
48
  selectedBlock.innerBlocks &&
48
- !! selectedBlock.innerBlocks.length &&
49
+ selectedBlock.innerBlocks.length > 0 &&
49
50
  selectedBlock.name === groupingBlockName;
50
- const innerBlocks = isUngroupable ? selectedBlock.innerBlocks : [];
51
+
52
+ const innerBlocks = isUngroupable
53
+ ? selectedBlock.innerBlocks
54
+ : EMPTY_BLOCKS_LIST;
51
55
 
52
56
  return {
53
57
  isUngroupable,
@@ -60,13 +60,14 @@ class URLInput extends Component {
60
60
 
61
61
  this.suggestionNodes = [];
62
62
 
63
- this.isUpdatingSuggestions = false;
63
+ this.suggestionsRequest = null;
64
64
 
65
65
  this.state = {
66
66
  suggestions: [],
67
67
  showSuggestions: false,
68
+ isUpdatingSuggestions: false,
69
+ suggestionsValue: null,
68
70
  selectedSuggestion: null,
69
-
70
71
  suggestionsListboxId: '',
71
72
  suggestionOptionIdPrefix: '',
72
73
  };
@@ -103,7 +104,7 @@ class URLInput extends Component {
103
104
  if (
104
105
  prevProps.value !== value &&
105
106
  ! this.props.disableSuggestions &&
106
- ! this.isUpdatingSuggestions
107
+ ! this.state.isUpdatingSuggestions
107
108
  ) {
108
109
  if ( value?.length ) {
109
110
  // If the new value is not empty we need to update with suggestions for it.
@@ -123,7 +124,7 @@ class URLInput extends Component {
123
124
 
124
125
  componentWillUnmount() {
125
126
  this.suggestionsRequest?.cancel?.();
126
- delete this.suggestionsRequest;
127
+ this.suggestionsRequest = null;
127
128
  }
128
129
 
129
130
  bindSuggestionNode( index ) {
@@ -133,14 +134,10 @@ class URLInput extends Component {
133
134
  }
134
135
 
135
136
  shouldShowInitialSuggestions() {
136
- const { suggestions } = this.state;
137
137
  const { __experimentalShowInitialSuggestions = false, value } =
138
138
  this.props;
139
139
  return (
140
- ! this.isUpdatingSuggestions &&
141
- __experimentalShowInitialSuggestions &&
142
- ! ( value && value.length ) &&
143
- ! ( suggestions && suggestions.length )
140
+ __experimentalShowInitialSuggestions && ! ( value && value.length )
144
141
  );
145
142
  }
146
143
 
@@ -170,8 +167,13 @@ class URLInput extends Component {
170
167
  ! isInitialSuggestions &&
171
168
  ( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )
172
169
  ) {
170
+ this.suggestionsRequest?.cancel?.();
171
+ this.suggestionsRequest = null;
172
+
173
173
  this.setState( {
174
+ suggestions: [],
174
175
  showSuggestions: false,
176
+ suggestionsValue: value,
175
177
  selectedSuggestion: null,
176
178
  loading: false,
177
179
  } );
@@ -179,9 +181,8 @@ class URLInput extends Component {
179
181
  return;
180
182
  }
181
183
 
182
- this.isUpdatingSuggestions = true;
183
-
184
184
  this.setState( {
185
+ isUpdatingSuggestions: true,
185
186
  selectedSuggestion: null,
186
187
  loading: true,
187
188
  } );
@@ -201,6 +202,8 @@ class URLInput extends Component {
201
202
 
202
203
  this.setState( {
203
204
  suggestions,
205
+ isUpdatingSuggestions: false,
206
+ suggestionsValue: value,
204
207
  loading: false,
205
208
  showSuggestions: !! suggestions.length,
206
209
  } );
@@ -224,15 +227,16 @@ class URLInput extends Component {
224
227
  'assertive'
225
228
  );
226
229
  }
227
- this.isUpdatingSuggestions = false;
228
230
  } )
229
231
  .catch( () => {
230
- if ( this.suggestionsRequest === request ) {
231
- this.setState( {
232
- loading: false,
233
- } );
234
- this.isUpdatingSuggestions = false;
232
+ if ( this.suggestionsRequest !== request ) {
233
+ return;
235
234
  }
235
+
236
+ this.setState( {
237
+ isUpdatingSuggestions: false,
238
+ loading: false,
239
+ } );
236
240
  } );
237
241
 
238
242
  // Note that this assignment is handled *before* the async search request
@@ -241,12 +245,7 @@ class URLInput extends Component {
241
245
  }
242
246
 
243
247
  onChange( event ) {
244
- const inputValue = event.target.value;
245
-
246
- this.props.onChange( inputValue );
247
- if ( ! this.props.disableSuggestions ) {
248
- this.updateSuggestions( inputValue );
249
- }
248
+ this.props.onChange( event.target.value );
250
249
  }
251
250
 
252
251
  onFocus() {
@@ -258,7 +257,7 @@ class URLInput extends Component {
258
257
  if (
259
258
  value &&
260
259
  ! disableSuggestions &&
261
- ! this.isUpdatingSuggestions &&
260
+ ! this.state.isUpdatingSuggestions &&
262
261
  ! ( suggestions && suggestions.length )
263
262
  ) {
264
263
  // Ensure the suggestions are updated with the current input value.
@@ -490,19 +489,22 @@ class URLInput extends Component {
490
489
  const {
491
490
  className,
492
491
  __experimentalRenderSuggestions: renderSuggestions,
493
- value = '',
494
- __experimentalShowInitialSuggestions = false,
495
492
  } = this.props;
496
493
 
497
494
  const {
498
495
  showSuggestions,
499
496
  suggestions,
497
+ suggestionsValue,
500
498
  selectedSuggestion,
501
499
  suggestionsListboxId,
502
500
  suggestionOptionIdPrefix,
503
501
  loading,
504
502
  } = this.state;
505
503
 
504
+ if ( ! showSuggestions || suggestions.length === 0 ) {
505
+ return null;
506
+ }
507
+
506
508
  const suggestionsListProps = {
507
509
  id: suggestionsListboxId,
508
510
  ref: this.autocompleteRef,
@@ -519,11 +521,7 @@ class URLInput extends Component {
519
521
  };
520
522
  };
521
523
 
522
- if (
523
- isFunction( renderSuggestions ) &&
524
- showSuggestions &&
525
- !! suggestions.length
526
- ) {
524
+ if ( isFunction( renderSuggestions ) ) {
527
525
  return renderSuggestions( {
528
526
  suggestions,
529
527
  selectedSuggestion,
@@ -531,52 +529,38 @@ class URLInput extends Component {
531
529
  buildSuggestionItemProps,
532
530
  isLoading: loading,
533
531
  handleSuggestionClick: this.handleOnClick,
534
- isInitialSuggestions:
535
- __experimentalShowInitialSuggestions &&
536
- ! ( value && value.length ),
532
+ isInitialSuggestions: ! suggestionsValue?.length,
533
+ currentInputValue: suggestionsValue,
537
534
  } );
538
535
  }
539
536
 
540
- if (
541
- ! isFunction( renderSuggestions ) &&
542
- showSuggestions &&
543
- !! suggestions.length
544
- ) {
545
- return (
546
- <Popover placement="bottom" focusOnMount={ false }>
547
- <div
548
- { ...suggestionsListProps }
549
- className={ classnames(
550
- 'block-editor-url-input__suggestions',
551
- `${ className }__suggestions`
552
- ) }
553
- >
554
- { suggestions.map( ( suggestion, index ) => (
555
- <Button
556
- { ...buildSuggestionItemProps(
557
- suggestion,
558
- index
559
- ) }
560
- key={ suggestion.id }
561
- className={ classnames(
562
- 'block-editor-url-input__suggestion',
563
- {
564
- 'is-selected':
565
- index === selectedSuggestion,
566
- }
567
- ) }
568
- onClick={ () =>
569
- this.handleOnClick( suggestion )
537
+ return (
538
+ <Popover placement="bottom" focusOnMount={ false }>
539
+ <div
540
+ { ...suggestionsListProps }
541
+ className={ classnames(
542
+ 'block-editor-url-input__suggestions',
543
+ `${ className }__suggestions`
544
+ ) }
545
+ >
546
+ { suggestions.map( ( suggestion, index ) => (
547
+ <Button
548
+ { ...buildSuggestionItemProps( suggestion, index ) }
549
+ key={ suggestion.id }
550
+ className={ classnames(
551
+ 'block-editor-url-input__suggestion',
552
+ {
553
+ 'is-selected': index === selectedSuggestion,
570
554
  }
571
- >
572
- { suggestion.title }
573
- </Button>
574
- ) ) }
575
- </div>
576
- </Popover>
577
- );
578
- }
579
- return null;
555
+ ) }
556
+ onClick={ () => this.handleOnClick( suggestion ) }
557
+ >
558
+ { suggestion.title }
559
+ </Button>
560
+ ) ) }
561
+ </div>
562
+ </Popover>
563
+ );
580
564
  }
581
565
  }
582
566
 
@@ -94,13 +94,13 @@ class MyURLPopover extends Component {
94
94
 
95
95
  The component accepts the following props. Any other props are passed through to the underlying `Popover` component ([refer to props documentation](/packages/components/src/popover/README.md)).
96
96
 
97
- ### position
97
+ ### placement
98
98
 
99
- Where the Popover should be positioned relative to its parent. Defaults to "bottom center".
99
+ Where the Popover should be positioned relative to its parent. Defaults to "bottom".
100
100
 
101
101
  - Type: `String`
102
102
  - Required: No
103
- - Default: "bottom center"
103
+ - Default: "bottom"
104
104
 
105
105
  ### focusOnMount
106
106
 
@@ -194,3 +194,12 @@ Reference passed to the auto complete element of the ([URLInput component](/pack
194
194
 
195
195
  - Type: `Object`
196
196
  - Required: no
197
+
198
+ ### position
199
+
200
+ _Note: this prop is deprecated. Please use the `placement` prop instead._
201
+
202
+ Where the Popover should be positioned relative to its parent.
203
+
204
+ - Type: `String`
205
+ - Required: No
@@ -3,8 +3,13 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useState } from '@wordpress/element';
6
- import { Button, Popover } from '@wordpress/components';
6
+ import {
7
+ Button,
8
+ Popover,
9
+ __experimentalPopoverPositionToPlacement as positionToPlacement,
10
+ } from '@wordpress/components';
7
11
  import { chevronDown } from '@wordpress/icons';
12
+ import deprecated from '@wordpress/deprecated';
8
13
 
9
14
  /**
10
15
  * Internal dependencies
@@ -12,14 +17,39 @@ import { chevronDown } from '@wordpress/icons';
12
17
  import LinkViewer from './link-viewer';
13
18
  import LinkEditor from './link-editor';
14
19
 
20
+ const DEFAULT_PLACEMENT = 'bottom';
21
+
15
22
  function URLPopover( {
16
23
  additionalControls,
17
24
  children,
18
25
  renderSettings,
19
- position = 'bottom center',
26
+ // The DEFAULT_PLACEMENT value is assigned inside the function's body
27
+ placement,
20
28
  focusOnMount = 'firstElement',
29
+ // Deprecated
30
+ position,
31
+ // Rest
21
32
  ...popoverProps
22
33
  } ) {
34
+ if ( position !== undefined ) {
35
+ deprecated( '`position` prop in wp.blockEditor.URLPopover', {
36
+ since: '6.2',
37
+ alternative: '`placement` prop',
38
+ } );
39
+ }
40
+
41
+ // Compute popover's placement:
42
+ // - give priority to `placement` prop, if defined
43
+ // - otherwise, compute it from the legacy `position` prop (if defined)
44
+ // - finally, fallback to the DEFAULT_PLACEMENT.
45
+ let computedPlacement;
46
+ if ( placement !== undefined ) {
47
+ computedPlacement = placement;
48
+ } else if ( position !== undefined ) {
49
+ computedPlacement = positionToPlacement( position );
50
+ }
51
+ computedPlacement = computedPlacement || DEFAULT_PLACEMENT;
52
+
23
53
  const [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );
24
54
 
25
55
  const showSettings = !! renderSettings && isSettingsExpanded;
@@ -32,7 +62,7 @@ function URLPopover( {
32
62
  <Popover
33
63
  className="block-editor-url-popover"
34
64
  focusOnMount={ focusOnMount }
35
- position={ position }
65
+ placement={ computedPlacement }
36
66
  shift
37
67
  { ...popoverProps }
38
68
  >
@@ -4,12 +4,13 @@ exports[`URLPopover matches the snapshot in its default state 1`] = `
4
4
  <div>
5
5
  <span>
6
6
  <div
7
- class="components-popover block-editor-url-popover"
8
- style="position: absolute; opacity: 0; transform: translateY(-2em) scale(0) translateZ(0); transform-origin: 50% 0% 0;"
7
+ class="components-popover block-editor-url-popover is-positioned"
8
+ style="position: absolute; top: 0px; left: 0px; transform: none;"
9
9
  tabindex="-1"
10
10
  >
11
11
  <div
12
12
  class="components-popover__content"
13
+ style="max-height: 0px; overflow: auto;"
13
14
  >
14
15
  <div
15
16
  class="block-editor-url-popover__input-container"
@@ -51,8 +52,8 @@ exports[`URLPopover matches the snapshot when the settings are toggled open 1`]
51
52
  <div>
52
53
  <span>
53
54
  <div
54
- class="components-popover block-editor-url-popover"
55
- style="position: absolute; opacity: 0; transform: translateY(-2em) scale(0) translateZ(0); transform-origin: 50% 0% 0; left: 0px; top: 0px;"
55
+ class="components-popover block-editor-url-popover is-positioned"
56
+ style="position: absolute; top: 0px; left: 0px; transform: none;"
56
57
  tabindex="-1"
57
58
  >
58
59
  <div
@@ -106,12 +107,13 @@ exports[`URLPopover matches the snapshot when there are no settings 1`] = `
106
107
  <div>
107
108
  <span>
108
109
  <div
109
- class="components-popover block-editor-url-popover"
110
- style="position: absolute; opacity: 0; transform: translateY(-2em) scale(0) translateZ(0); transform-origin: 50% 0% 0;"
110
+ class="components-popover block-editor-url-popover is-positioned"
111
+ style="position: absolute; top: 0px; left: 0px; transform: none;"
111
112
  tabindex="-1"
112
113
  >
113
114
  <div
114
115
  class="components-popover__content"
116
+ style="max-height: 0px; overflow: auto;"
115
117
  >
116
118
  <div
117
119
  class="block-editor-url-popover__input-container"
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen } from '@testing-library/react';
4
+ import { act, render, screen } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -9,23 +9,32 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import URLPopover from '../';
11
11
 
12
+ jest.useRealTimers();
13
+
12
14
  describe( 'URLPopover', () => {
13
- it( 'matches the snapshot in its default state', () => {
15
+ it( 'matches the snapshot in its default state', async () => {
14
16
  const { container } = render(
15
- <URLPopover renderSettings={ () => <div>Settings</div> }>
17
+ <URLPopover
18
+ animate={ false }
19
+ renderSettings={ () => <div>Settings</div> }
20
+ >
16
21
  <div>Editor</div>
17
22
  </URLPopover>
18
23
  );
19
24
 
25
+ // wait for `Popover` effects to finish
26
+ await act( () => Promise.resolve() );
27
+
20
28
  expect( container ).toMatchSnapshot();
21
29
  } );
22
30
 
23
31
  it( 'matches the snapshot when the settings are toggled open', async () => {
24
- const user = userEvent.setup( {
25
- advanceTimers: jest.advanceTimersByTime,
26
- } );
32
+ const user = userEvent.setup();
27
33
  const { container } = render(
28
- <URLPopover renderSettings={ () => <div>Settings</div> }>
34
+ <URLPopover
35
+ animate={ false }
36
+ renderSettings={ () => <div>Settings</div> }
37
+ >
29
38
  <div>Editor</div>
30
39
  </URLPopover>
31
40
  );
@@ -37,13 +46,16 @@ describe( 'URLPopover', () => {
37
46
  expect( container ).toMatchSnapshot();
38
47
  } );
39
48
 
40
- it( 'matches the snapshot when there are no settings', () => {
49
+ it( 'matches the snapshot when there are no settings', async () => {
41
50
  const { container } = render(
42
- <URLPopover>
51
+ <URLPopover animate={ false }>
43
52
  <div>Editor</div>
44
53
  </URLPopover>
45
54
  );
46
55
 
56
+ // wait for `Popover` effects to finish
57
+ await act( () => Promise.resolve() );
58
+
47
59
  expect( container ).toMatchSnapshot();
48
60
  } );
49
61
  } );
@@ -2,7 +2,11 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect } from '@wordpress/data';
5
- import { store as blocksStore } from '@wordpress/blocks';
5
+ import {
6
+ store as blocksStore,
7
+ isReusableBlock,
8
+ isTemplatePart,
9
+ } from '@wordpress/blocks';
6
10
 
7
11
  /**
8
12
  * Internal dependencies
@@ -16,10 +20,11 @@ import { store as blockEditorStore } from '../../store';
16
20
  *
17
21
  * @typedef {Object} WPBlockDisplayInformation
18
22
  *
19
- * @property {string} title Human-readable block type label.
20
- * @property {WPIcon} icon Block type icon.
21
- * @property {string} description A detailed block type description.
22
- * @property {string} anchor HTML anchor.
23
+ * @property {boolean} isSynced True if is a reusable block or template part
24
+ * @property {string} title Human-readable block type label.
25
+ * @property {WPIcon} icon Block type icon.
26
+ * @property {string} description A detailed block type description.
27
+ * @property {string} anchor HTML anchor.
23
28
  */
24
29
 
25
30
  /**
@@ -50,7 +55,10 @@ export default function useBlockDisplayInformation( clientId ) {
50
55
  if ( ! blockType ) return null;
51
56
  const attributes = getBlockAttributes( clientId );
52
57
  const match = getActiveBlockVariation( blockName, attributes );
58
+ const isSynced =
59
+ isReusableBlock( blockType ) || isTemplatePart( blockType );
53
60
  const blockTypeInfo = {
61
+ isSynced,
54
62
  title: blockType.title,
55
63
  icon: blockType.icon,
56
64
  description: blockType.description,
@@ -59,6 +67,7 @@ export default function useBlockDisplayInformation( clientId ) {
59
67
  if ( ! match ) return blockTypeInfo;
60
68
 
61
69
  return {
70
+ isSynced,
62
71
  title: match.title || blockType.title,
63
72
  icon: match.icon || blockType.icon,
64
73
  description: match.description || blockType.description,
@@ -11,6 +11,7 @@ import {
11
11
  __EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE,
12
12
  hasBlockSupport,
13
13
  } from '@wordpress/blocks';
14
+ import { applyFilters } from '@wordpress/hooks';
14
15
 
15
16
  /**
16
17
  * Internal dependencies
@@ -18,7 +19,13 @@ import {
18
19
  import { useBlockEditContext } from '../block-edit';
19
20
  import { store as blockEditorStore } from '../../store';
20
21
 
21
- const blockedPaths = [ 'color', 'border', 'typography', 'spacing' ];
22
+ const blockedPaths = [
23
+ 'color',
24
+ 'border',
25
+ 'dimensions',
26
+ 'typography',
27
+ 'spacing',
28
+ ];
22
29
 
23
30
  const deprecatedFlags = {
24
31
  'color.palette': ( settings ) => settings.colors,
@@ -116,7 +123,18 @@ export default function useSetting( path ) {
116
123
  return undefined;
117
124
  }
118
125
 
119
- let result;
126
+ // 0. Allow third parties to filter the block's settings at runtime.
127
+ let result = applyFilters(
128
+ 'blockEditor.useSetting.before',
129
+ undefined,
130
+ path,
131
+ clientId,
132
+ blockName
133
+ );
134
+
135
+ if ( undefined !== result ) {
136
+ return result;
137
+ }
120
138
 
121
139
  const normalizedPath = removeCustomPrefixes( path );
122
140