@wordpress/block-editor 11.0.0 → 11.2.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 (470) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +2 -1
  4. package/build/components/alignment-control/ui.js +1 -7
  5. package/build/components/alignment-control/ui.js.map +1 -1
  6. package/build/components/block-actions/index.js +9 -0
  7. package/build/components/block-actions/index.js.map +1 -1
  8. package/build/components/block-alignment-control/use-available-alignments.js +4 -3
  9. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  10. package/build/components/block-icon/index.js +4 -2
  11. package/build/components/block-icon/index.js.map +1 -1
  12. package/build/components/block-inspector/index.js +58 -5
  13. package/build/components/block-inspector/index.js.map +1 -1
  14. package/build/components/block-list-appender/index.js +46 -34
  15. package/build/components/block-list-appender/index.js.map +1 -1
  16. package/build/components/block-list-appender/index.native.js +39 -34
  17. package/build/components/block-list-appender/index.native.js.map +1 -1
  18. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
  19. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  20. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  21. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  22. package/build/components/block-pattern-setup/index.js +14 -7
  23. package/build/components/block-pattern-setup/index.js.map +1 -1
  24. package/build/components/block-preview/auto.js +1 -4
  25. package/build/components/block-preview/auto.js.map +1 -1
  26. package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
  27. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  28. package/build/components/block-styles/index.js +3 -1
  29. package/build/components/block-styles/index.js.map +1 -1
  30. package/build/components/block-styles/index.native.js +1 -3
  31. package/build/components/block-styles/index.native.js.map +1 -1
  32. package/build/components/block-styles/utils.js +7 -10
  33. package/build/components/block-styles/utils.js.map +1 -1
  34. package/build/components/block-toolbar/index.native.js +6 -8
  35. package/build/components/block-toolbar/index.native.js.map +1 -1
  36. package/build/components/block-tools/selected-block-popover.js +1 -3
  37. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  38. package/build/components/block-tools/use-block-toolbar-popover-props.js +43 -10
  39. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  40. package/build/components/block-variation-picker/index.js +1 -1
  41. package/build/components/block-variation-picker/index.js.map +1 -1
  42. package/build/components/colors/utils.js +2 -6
  43. package/build/components/colors/utils.js.map +1 -1
  44. package/build/components/colors-gradients/control.js +0 -3
  45. package/build/components/colors-gradients/control.js.map +1 -1
  46. package/build/components/colors-gradients/dropdown.js +0 -2
  47. package/build/components/colors-gradients/dropdown.js.map +1 -1
  48. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -19
  49. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  50. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -3
  51. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  52. package/build/components/copy-handler/index.js +37 -9
  53. package/build/components/copy-handler/index.js.map +1 -1
  54. package/build/components/default-style-picker/index.js +1 -0
  55. package/build/components/default-style-picker/index.js.map +1 -1
  56. package/build/components/font-sizes/fluid-utils.js +5 -2
  57. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  58. package/build/components/font-sizes/utils.js +10 -4
  59. package/build/components/font-sizes/utils.js.map +1 -1
  60. package/build/components/font-sizes/with-font-sizes.js +14 -12
  61. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  62. package/build/components/gradients/use-gradient.js +2 -8
  63. package/build/components/gradients/use-gradient.js.map +1 -1
  64. package/build/components/iframe/index.js +48 -101
  65. package/build/components/iframe/index.js.map +1 -1
  66. package/build/components/iframe/use-compatibility-styles.js +98 -0
  67. package/build/components/iframe/use-compatibility-styles.js.map +1 -0
  68. package/build/components/image-size-control/index.js +1 -0
  69. package/build/components/image-size-control/index.js.map +1 -1
  70. package/build/components/inner-blocks/index.js +6 -2
  71. package/build/components/inner-blocks/index.js.map +1 -1
  72. package/build/components/inserter/block-patterns-tab.js +4 -4
  73. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  74. package/build/components/inserter/hooks/use-insertion-point.js +4 -3
  75. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  76. package/build/components/inserter/index.js +16 -6
  77. package/build/components/inserter/index.js.map +1 -1
  78. package/build/components/inserter/media-tab/hooks.js +8 -5
  79. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  80. package/build/components/inserter/menu.js +11 -5
  81. package/build/components/inserter/menu.js.map +1 -1
  82. package/build/components/inserter/quick-inserter.js +6 -3
  83. package/build/components/inserter/quick-inserter.js.map +1 -1
  84. package/build/components/inserter/search-items.js +15 -14
  85. package/build/components/inserter/search-items.js.map +1 -1
  86. package/build/components/inserter/search-results.js +4 -2
  87. package/build/components/inserter/search-results.js.map +1 -1
  88. package/build/components/inspector-controls/groups.js +3 -1
  89. package/build/components/inspector-controls/groups.js.map +1 -1
  90. package/build/components/inspector-controls-tabs/position-controls-panel.js +46 -0
  91. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
  92. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  93. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  94. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
  95. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  96. package/build/components/link-control/search-input.js +1 -0
  97. package/build/components/link-control/search-input.js.map +1 -1
  98. package/build/components/list-view/block-select-button.js +1 -1
  99. package/build/components/list-view/block-select-button.js.map +1 -1
  100. package/build/components/off-canvas-editor/appender.js +3 -44
  101. package/build/components/off-canvas-editor/appender.js.map +1 -1
  102. package/build/components/off-canvas-editor/block-contents.js +38 -5
  103. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  104. package/build/components/off-canvas-editor/block-select-button.js +3 -2
  105. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  106. package/build/components/off-canvas-editor/block.js +51 -57
  107. package/build/components/off-canvas-editor/block.js.map +1 -1
  108. package/build/components/off-canvas-editor/index.js +12 -5
  109. package/build/components/off-canvas-editor/index.js.map +1 -1
  110. package/build/components/off-canvas-editor/use-inserted-block.js +58 -0
  111. package/build/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  112. package/build/components/provider/index.js +3 -1
  113. package/build/components/provider/index.js.map +1 -1
  114. package/build/components/responsive-block-control/label.js.map +1 -1
  115. package/build/components/rich-text/format-edit.js +12 -10
  116. package/build/components/rich-text/format-edit.js.map +1 -1
  117. package/build/components/rich-text/index.js.map +1 -1
  118. package/build/components/rich-text/use-enter.js +4 -5
  119. package/build/components/rich-text/use-enter.js.map +1 -1
  120. package/build/components/rich-text/use-paste-handler.js +21 -12
  121. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  122. package/build/components/spacing-sizes-control/index.js +0 -1
  123. package/build/components/spacing-sizes-control/index.js.map +1 -1
  124. package/build/components/spacing-sizes-control/utils.js +1 -1
  125. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  126. package/build/components/typewriter/index.js +1 -1
  127. package/build/components/typewriter/index.js.map +1 -1
  128. package/build/components/url-input/button.js +1 -0
  129. package/build/components/url-input/button.js.map +1 -1
  130. package/build/components/url-input/index.js +15 -1
  131. package/build/components/url-input/index.js.map +1 -1
  132. package/build/components/url-popover/image-url-input-ui.js +2 -2
  133. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  134. package/build/components/url-popover/link-editor.js +1 -0
  135. package/build/components/url-popover/link-editor.js.map +1 -1
  136. package/build/components/use-paste-styles/index.js +188 -0
  137. package/build/components/use-paste-styles/index.js.map +1 -0
  138. package/build/components/writing-flow/index.js +1 -1
  139. package/build/components/writing-flow/index.js.map +1 -1
  140. package/build/components/writing-flow/use-arrow-nav.js +22 -29
  141. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  142. package/build/hooks/border.js +0 -1
  143. package/build/hooks/border.js.map +1 -1
  144. package/build/hooks/color-panel.js +0 -1
  145. package/build/hooks/color-panel.js.map +1 -1
  146. package/build/hooks/color.js +1 -2
  147. package/build/hooks/color.js.map +1 -1
  148. package/build/hooks/font-family.js +4 -4
  149. package/build/hooks/font-family.js.map +1 -1
  150. package/build/hooks/font-size.js +5 -3
  151. package/build/hooks/font-size.js.map +1 -1
  152. package/build/hooks/index.js +2 -0
  153. package/build/hooks/index.js.map +1 -1
  154. package/build/hooks/metadata.js +1 -1
  155. package/build/hooks/metadata.js.map +1 -1
  156. package/build/hooks/position.js +376 -0
  157. package/build/hooks/position.js.map +1 -0
  158. package/build/hooks/supports.js +328 -0
  159. package/build/hooks/supports.js.map +1 -0
  160. package/build/hooks/use-typography-props.js +11 -8
  161. package/build/hooks/use-typography-props.js.map +1 -1
  162. package/build/store/reducer.js +27 -9
  163. package/build/store/reducer.js.map +1 -1
  164. package/build/store/selectors.js +9 -7
  165. package/build/store/selectors.js.map +1 -1
  166. package/build/utils/pasting.js +6 -11
  167. package/build/utils/pasting.js.map +1 -1
  168. package/build-module/components/alignment-control/ui.js +1 -6
  169. package/build-module/components/alignment-control/ui.js.map +1 -1
  170. package/build-module/components/block-actions/index.js +6 -0
  171. package/build-module/components/block-actions/index.js.map +1 -1
  172. package/build-module/components/block-alignment-control/use-available-alignments.js +4 -3
  173. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  174. package/build-module/components/block-icon/index.js +4 -2
  175. package/build-module/components/block-icon/index.js.map +1 -1
  176. package/build-module/components/block-inspector/index.js +58 -6
  177. package/build-module/components/block-inspector/index.js.map +1 -1
  178. package/build-module/components/block-list-appender/index.js +46 -34
  179. package/build-module/components/block-list-appender/index.js.map +1 -1
  180. package/build-module/components/block-list-appender/index.native.js +39 -32
  181. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  182. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
  183. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  184. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  185. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  186. package/build-module/components/block-pattern-setup/index.js +14 -7
  187. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  188. package/build-module/components/block-preview/auto.js +1 -4
  189. package/build-module/components/block-preview/auto.js.map +1 -1
  190. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  192. package/build-module/components/block-styles/index.js +2 -1
  193. package/build-module/components/block-styles/index.js.map +1 -1
  194. package/build-module/components/block-styles/index.native.js +1 -2
  195. package/build-module/components/block-styles/index.native.js.map +1 -1
  196. package/build-module/components/block-styles/utils.js +7 -9
  197. package/build-module/components/block-styles/utils.js.map +1 -1
  198. package/build-module/components/block-toolbar/index.native.js +6 -8
  199. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  200. package/build-module/components/block-tools/selected-block-popover.js +1 -2
  201. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  202. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +42 -11
  203. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  204. package/build-module/components/block-variation-picker/index.js +1 -1
  205. package/build-module/components/block-variation-picker/index.js.map +1 -1
  206. package/build-module/components/colors/utils.js +3 -7
  207. package/build-module/components/colors/utils.js.map +1 -1
  208. package/build-module/components/colors-gradients/control.js +0 -3
  209. package/build-module/components/colors-gradients/control.js.map +1 -1
  210. package/build-module/components/colors-gradients/dropdown.js +0 -2
  211. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  212. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +4 -19
  213. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  214. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  215. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  216. package/build-module/components/copy-handler/index.js +38 -10
  217. package/build-module/components/copy-handler/index.js.map +1 -1
  218. package/build-module/components/default-style-picker/index.js +1 -0
  219. package/build-module/components/default-style-picker/index.js.map +1 -1
  220. package/build-module/components/font-sizes/fluid-utils.js +5 -2
  221. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  222. package/build-module/components/font-sizes/utils.js +11 -5
  223. package/build-module/components/font-sizes/utils.js.map +1 -1
  224. package/build-module/components/font-sizes/with-font-sizes.js +14 -11
  225. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  226. package/build-module/components/gradients/use-gradient.js +2 -7
  227. package/build-module/components/gradients/use-gradient.js.map +1 -1
  228. package/build-module/components/iframe/index.js +46 -102
  229. package/build-module/components/iframe/index.js.map +1 -1
  230. package/build-module/components/iframe/use-compatibility-styles.js +90 -0
  231. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -0
  232. package/build-module/components/image-size-control/index.js +1 -0
  233. package/build-module/components/image-size-control/index.js.map +1 -1
  234. package/build-module/components/inner-blocks/index.js +6 -2
  235. package/build-module/components/inner-blocks/index.js.map +1 -1
  236. package/build-module/components/inserter/block-patterns-tab.js +4 -4
  237. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  238. package/build-module/components/inserter/hooks/use-insertion-point.js +4 -3
  239. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  240. package/build-module/components/inserter/index.js +16 -6
  241. package/build-module/components/inserter/index.js.map +1 -1
  242. package/build-module/components/inserter/media-tab/hooks.js +8 -5
  243. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  244. package/build-module/components/inserter/menu.js +11 -5
  245. package/build-module/components/inserter/menu.js.map +1 -1
  246. package/build-module/components/inserter/quick-inserter.js +6 -3
  247. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  248. package/build-module/components/inserter/search-items.js +15 -13
  249. package/build-module/components/inserter/search-items.js.map +1 -1
  250. package/build-module/components/inserter/search-results.js +4 -2
  251. package/build-module/components/inserter/search-results.js.map +1 -1
  252. package/build-module/components/inspector-controls/groups.js +3 -1
  253. package/build-module/components/inspector-controls/groups.js.map +1 -1
  254. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +33 -0
  255. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
  256. package/build-module/components/inspector-controls-tabs/settings-tab.js +2 -1
  257. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  258. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
  259. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  260. package/build-module/components/link-control/search-input.js +1 -0
  261. package/build-module/components/link-control/search-input.js.map +1 -1
  262. package/build-module/components/list-view/block-select-button.js +1 -1
  263. package/build-module/components/list-view/block-select-button.js.map +1 -1
  264. package/build-module/components/off-canvas-editor/appender.js +5 -44
  265. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  266. package/build-module/components/off-canvas-editor/block-contents.js +37 -7
  267. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  268. package/build-module/components/off-canvas-editor/block-select-button.js +3 -2
  269. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  270. package/build-module/components/off-canvas-editor/block.js +54 -60
  271. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  272. package/build-module/components/off-canvas-editor/index.js +12 -5
  273. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  274. package/build-module/components/off-canvas-editor/use-inserted-block.js +47 -0
  275. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  276. package/build-module/components/provider/index.js +3 -1
  277. package/build-module/components/provider/index.js.map +1 -1
  278. package/build-module/components/responsive-block-control/label.js +1 -2
  279. package/build-module/components/responsive-block-control/label.js.map +1 -1
  280. package/build-module/components/rich-text/format-edit.js +12 -9
  281. package/build-module/components/rich-text/format-edit.js.map +1 -1
  282. package/build-module/components/rich-text/index.js.map +1 -1
  283. package/build-module/components/rich-text/use-enter.js +4 -5
  284. package/build-module/components/rich-text/use-enter.js.map +1 -1
  285. package/build-module/components/rich-text/use-paste-handler.js +22 -12
  286. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/index.js +0 -1
  288. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/utils.js +1 -1
  290. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  291. package/build-module/components/typewriter/index.js +1 -1
  292. package/build-module/components/typewriter/index.js.map +1 -1
  293. package/build-module/components/url-input/button.js +1 -0
  294. package/build-module/components/url-input/button.js.map +1 -1
  295. package/build-module/components/url-input/index.js +14 -1
  296. package/build-module/components/url-input/index.js.map +1 -1
  297. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  298. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  299. package/build-module/components/url-popover/link-editor.js +1 -0
  300. package/build-module/components/url-popover/link-editor.js.map +1 -1
  301. package/build-module/components/use-paste-styles/index.js +174 -0
  302. package/build-module/components/use-paste-styles/index.js.map +1 -0
  303. package/build-module/components/writing-flow/index.js +1 -1
  304. package/build-module/components/writing-flow/index.js.map +1 -1
  305. package/build-module/components/writing-flow/use-arrow-nav.js +22 -29
  306. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  307. package/build-module/hooks/border.js +0 -1
  308. package/build-module/hooks/border.js.map +1 -1
  309. package/build-module/hooks/color-panel.js +0 -1
  310. package/build-module/hooks/color-panel.js.map +1 -1
  311. package/build-module/hooks/color.js +1 -2
  312. package/build-module/hooks/color.js.map +1 -1
  313. package/build-module/hooks/font-family.js +5 -5
  314. package/build-module/hooks/font-family.js.map +1 -1
  315. package/build-module/hooks/font-size.js +5 -3
  316. package/build-module/hooks/font-size.js.map +1 -1
  317. package/build-module/hooks/index.js +1 -0
  318. package/build-module/hooks/index.js.map +1 -1
  319. package/build-module/hooks/metadata.js +1 -1
  320. package/build-module/hooks/metadata.js.map +1 -1
  321. package/build-module/hooks/position.js +337 -0
  322. package/build-module/hooks/position.js.map +1 -0
  323. package/build-module/hooks/supports.js +257 -0
  324. package/build-module/hooks/supports.js.map +1 -0
  325. package/build-module/hooks/use-typography-props.js +11 -8
  326. package/build-module/hooks/use-typography-props.js.map +1 -1
  327. package/build-module/store/reducer.js +27 -8
  328. package/build-module/store/reducer.js.map +1 -1
  329. package/build-module/store/selectors.js +9 -7
  330. package/build-module/store/selectors.js.map +1 -1
  331. package/build-module/utils/pasting.js +6 -10
  332. package/build-module/utils/pasting.js.map +1 -1
  333. package/build-style/content-rtl.css +60 -3
  334. package/build-style/content.css +60 -3
  335. package/build-style/default-editor-styles-rtl.css +3 -3
  336. package/build-style/default-editor-styles.css +3 -3
  337. package/build-style/style-rtl.css +62 -69
  338. package/build-style/style.css +62 -69
  339. package/package.json +29 -29
  340. package/src/components/alignment-control/test/index.js +2 -0
  341. package/src/components/alignment-control/ui.js +1 -7
  342. package/src/components/block-actions/index.js +5 -0
  343. package/src/components/block-alignment-control/test/index.js +2 -0
  344. package/src/components/block-alignment-control/use-available-alignments.js +4 -3
  345. package/src/components/block-icon/index.js +4 -2
  346. package/src/components/block-icon/test/index.js +9 -5
  347. package/src/components/block-inspector/index.js +79 -4
  348. package/src/components/block-inspector/style.scss +7 -0
  349. package/src/components/block-list-appender/index.js +65 -54
  350. package/src/components/block-list-appender/index.native.js +45 -34
  351. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +18 -22
  352. package/src/components/block-mobile-toolbar/index.native.js +1 -1
  353. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +125 -0
  354. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +439 -0
  355. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +42 -0
  356. package/src/components/block-mover/test/index.native.js +157 -1
  357. package/src/components/block-pattern-setup/index.js +15 -6
  358. package/src/components/block-pattern-setup/style.scss +29 -1
  359. package/src/components/block-preview/auto.js +2 -4
  360. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  361. package/src/components/block-styles/index.js +4 -1
  362. package/src/components/block-styles/index.native.js +1 -2
  363. package/src/components/block-styles/utils.js +5 -7
  364. package/src/components/block-switcher/test/index.js +3 -2
  365. package/src/components/block-toolbar/index.native.js +8 -11
  366. package/src/components/block-tools/selected-block-popover.js +1 -3
  367. package/src/components/block-tools/use-block-toolbar-popover-props.js +68 -12
  368. package/src/components/block-variation-picker/index.js +5 -1
  369. package/src/components/block-vertical-alignment-control/test/index.js +2 -0
  370. package/src/components/button-block-appender/{style.scss → content.scss} +0 -0
  371. package/src/components/colors/test/with-colors.js +2 -0
  372. package/src/components/colors/utils.js +5 -3
  373. package/src/components/colors-gradients/control.js +0 -7
  374. package/src/components/colors-gradients/dropdown.js +0 -2
  375. package/src/components/colors-gradients/panel-color-gradient-settings.js +4 -22
  376. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  377. package/src/components/copy-handler/index.js +53 -7
  378. package/src/components/default-block-appender/test/index.js +2 -0
  379. package/src/components/default-style-picker/index.js +1 -0
  380. package/src/components/font-sizes/fluid-utils.js +7 -1
  381. package/src/components/font-sizes/utils.js +5 -3
  382. package/src/components/font-sizes/with-font-sizes.js +36 -36
  383. package/src/components/gradients/use-gradient.js +2 -7
  384. package/src/components/iframe/index.js +60 -122
  385. package/src/components/iframe/use-compatibility-styles.js +101 -0
  386. package/src/components/image-size-control/index.js +1 -0
  387. package/src/components/image-size-control/test/index.js +147 -79
  388. package/src/components/inner-blocks/index.js +4 -2
  389. package/src/components/inserter/block-patterns-tab.js +7 -4
  390. package/src/components/inserter/hooks/use-insertion-point.js +3 -2
  391. package/src/components/inserter/index.js +61 -43
  392. package/src/components/inserter/media-tab/hooks.js +5 -4
  393. package/src/components/inserter/menu.js +8 -4
  394. package/src/components/inserter/quick-inserter.js +3 -0
  395. package/src/components/inserter/search-items.js +1 -2
  396. package/src/components/inserter/search-results.js +2 -0
  397. package/src/components/inserter/test/__snapshots__/index.native.js.snap +117 -0
  398. package/src/components/inserter/test/index.native.js +255 -1
  399. package/src/components/inspector-controls/groups.js +2 -0
  400. package/src/components/inspector-controls-tabs/position-controls-panel.js +37 -0
  401. package/src/components/inspector-controls-tabs/settings-tab.js +2 -0
  402. package/src/components/inspector-controls-tabs/style.scss +15 -0
  403. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -8
  404. package/src/components/link-control/search-input.js +1 -0
  405. package/src/components/link-control/style.scss +1 -0
  406. package/src/components/link-control/test/index.js +18 -4
  407. package/src/components/list-view/block-select-button.js +1 -1
  408. package/src/components/list-view/style.scss +14 -10
  409. package/src/components/media-replace-flow/test/index.js +2 -0
  410. package/src/components/off-canvas-editor/appender.js +4 -49
  411. package/src/components/off-canvas-editor/block-contents.js +84 -23
  412. package/src/components/off-canvas-editor/block-select-button.js +6 -2
  413. package/src/components/off-canvas-editor/block.js +90 -105
  414. package/src/components/off-canvas-editor/index.js +21 -2
  415. package/src/components/off-canvas-editor/style.scss +5 -1
  416. package/src/components/off-canvas-editor/test/use-inserted-block.js +108 -0
  417. package/src/components/off-canvas-editor/use-inserted-block.js +47 -0
  418. package/src/components/provider/index.js +4 -1
  419. package/src/components/responsive-block-control/label.js +2 -3
  420. package/src/components/responsive-block-control/test/index.js +4 -2
  421. package/src/components/rich-text/format-edit.js +6 -10
  422. package/src/components/rich-text/index.js +1 -0
  423. package/src/components/rich-text/use-enter.js +4 -4
  424. package/src/components/rich-text/use-paste-handler.js +33 -14
  425. package/src/components/spacing-sizes-control/index.js +0 -1
  426. package/src/components/spacing-sizes-control/utils.js +1 -1
  427. package/src/components/typewriter/index.js +3 -1
  428. package/src/components/url-input/README.md +5 -0
  429. package/src/components/url-input/button.js +1 -0
  430. package/src/components/url-input/index.js +15 -1
  431. package/src/components/url-input/test/button.js +2 -0
  432. package/src/components/url-popover/image-url-input-ui.js +5 -4
  433. package/src/components/url-popover/link-editor.js +1 -0
  434. package/src/components/url-popover/test/index.js +21 -5
  435. package/src/components/use-paste-styles/index.js +230 -0
  436. package/src/components/warning/test/index.js +2 -0
  437. package/src/components/writing-flow/index.js +1 -1
  438. package/src/components/writing-flow/use-arrow-nav.js +20 -28
  439. package/src/content.scss +1 -0
  440. package/src/hooks/border.js +0 -1
  441. package/src/hooks/color-panel.js +0 -1
  442. package/src/hooks/color.js +0 -2
  443. package/src/hooks/font-family.js +3 -5
  444. package/src/hooks/font-size.js +13 -4
  445. package/src/hooks/index.js +1 -0
  446. package/src/hooks/metadata.js +1 -2
  447. package/src/hooks/position.js +375 -0
  448. package/src/hooks/position.scss +18 -0
  449. package/src/hooks/supports.js +302 -0
  450. package/src/hooks/test/__snapshots__/align.native.js.snap +73 -0
  451. package/src/hooks/test/align.native.js +133 -0
  452. package/src/hooks/test/use-typography-props.js +26 -0
  453. package/src/hooks/use-typography-props.js +15 -7
  454. package/src/store/reducer.js +20 -8
  455. package/src/store/selectors.js +7 -8
  456. package/src/store/test/reducer.js +45 -3
  457. package/src/store/test/selectors.js +12 -9
  458. package/src/style.scss +2 -1
  459. package/src/utils/pasting.js +3 -9
  460. package/tsconfig.tsbuildinfo +1 -1
  461. package/build/components/colors-gradients/use-common-single-multiple-selects.js +0 -21
  462. package/build/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  463. package/build/components/rich-text/file-paste-handler.js +0 -21
  464. package/build/components/rich-text/file-paste-handler.js.map +0 -1
  465. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  466. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  467. package/build-module/components/rich-text/file-paste-handler.js +0 -13
  468. package/build-module/components/rich-text/file-paste-handler.js.map +0 -1
  469. package/src/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  470. package/src/components/rich-text/file-paste-handler.js +0 -13
@@ -28,6 +28,7 @@ const SetupContent = ( {
28
28
  activeSlide,
29
29
  patterns,
30
30
  onBlockPatternSelect,
31
+ showTitles,
31
32
  } ) => {
32
33
  const composite = useCompositeState();
33
34
  const containerClass = 'block-editor-block-pattern-setup__container';
@@ -67,6 +68,7 @@ const SetupContent = ( {
67
68
  pattern={ pattern }
68
69
  onSelect={ onBlockPatternSelect }
69
70
  composite={ composite }
71
+ showTitles={ showTitles }
70
72
  />
71
73
  ) ) }
72
74
  </Composite>
@@ -74,7 +76,7 @@ const SetupContent = ( {
74
76
  );
75
77
  };
76
78
 
77
- function BlockPattern( { pattern, onSelect, composite } ) {
79
+ function BlockPattern( { pattern, onSelect, composite, showTitles } ) {
78
80
  const baseClassName = 'block-editor-block-pattern-setup-list';
79
81
  const { blocks, description, viewportWidth = 700 } = pattern;
80
82
  const descriptionId = useInstanceId(
@@ -98,12 +100,17 @@ function BlockPattern( { pattern, onSelect, composite } ) {
98
100
  blocks={ blocks }
99
101
  viewportWidth={ viewportWidth }
100
102
  />
103
+ { showTitles && (
104
+ <div className={ `${ baseClassName }__item-title` }>
105
+ { pattern.title }
106
+ </div>
107
+ ) }
108
+ { !! description && (
109
+ <VisuallyHidden id={ descriptionId }>
110
+ { description }
111
+ </VisuallyHidden>
112
+ ) }
101
113
  </CompositeItem>
102
- { !! description && (
103
- <VisuallyHidden id={ descriptionId }>
104
- { description }
105
- </VisuallyHidden>
106
- ) }
107
114
  </div>
108
115
  );
109
116
  }
@@ -139,6 +146,7 @@ const BlockPatternSetup = ( {
139
146
  filterPatternsFn,
140
147
  onBlockPatternSelect,
141
148
  initialViewMode = VIEWMODES.carousel,
149
+ showTitles = false,
142
150
  } ) => {
143
151
  const [ viewMode, setViewMode ] = useState( initialViewMode );
144
152
  const [ activeSlide, setActiveSlide ] = useState( 0 );
@@ -165,6 +173,7 @@ const BlockPatternSetup = ( {
165
173
  activeSlide={ activeSlide }
166
174
  patterns={ patterns }
167
175
  onBlockPatternSelect={ onPatternSelectCallback }
176
+ showTitles={ showTitles }
168
177
  />
169
178
  <SetupToolbar
170
179
  viewMode={ viewMode }
@@ -6,8 +6,9 @@
6
6
  width: 100%;
7
7
  border-radius: $radius-block-ui;
8
8
 
9
- // TODO change to check parent.
10
9
  &.view-mode-grid {
10
+ padding-top: $grid-unit-05;
11
+
11
12
  .block-editor-block-pattern-setup__toolbar {
12
13
  justify-content: center;
13
14
  }
@@ -30,10 +31,33 @@
30
31
  cursor: pointer;
31
32
  }
32
33
 
34
+ .block-editor-block-pattern-setup-list__item {
35
+ &:hover .block-editor-block-preview__container {
36
+ box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
37
+ }
38
+
39
+ &:focus .block-editor-block-preview__container {
40
+ box-shadow: inset 0 0 0 1px $white, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
41
+
42
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
43
+ outline: 2px solid transparent;
44
+ }
45
+ &:hover .block-editor-block-pattern-setup-list__item-title,
46
+ &:focus .block-editor-block-pattern-setup-list__item-title {
47
+ color: var(--wp-admin-theme-color);
48
+ }
49
+ }
33
50
  .block-editor-block-pattern-setup-list__list-item {
34
51
  break-inside: avoid-column;
35
52
  margin-bottom: $grid-unit-30;
36
53
 
54
+ .block-editor-block-pattern-setup-list__item-title {
55
+ padding-top: $grid-unit-10;
56
+ font-size: 12px;
57
+ text-align: center;
58
+ cursor: pointer;
59
+ }
60
+
37
61
  .block-editor-block-preview__container {
38
62
  min-height: 100px;
39
63
  border-radius: $radius-block-ui;
@@ -84,6 +108,7 @@
84
108
  display: flex;
85
109
  flex-direction: column;
86
110
  width: 100%;
111
+ height: 100%;
87
112
  box-sizing: border-box;
88
113
 
89
114
  .carousel-container {
@@ -91,6 +116,7 @@
91
116
  position: relative;
92
117
  padding: 0;
93
118
  margin: 0;
119
+ height: 100%;
94
120
  list-style: none;
95
121
  transform-style: preserve-3d;
96
122
  * {
@@ -100,6 +126,8 @@
100
126
  position: absolute;
101
127
  top: 0;
102
128
  width: 100%;
129
+ height: 100%;
130
+ background-color: $white;
103
131
  margin: auto;
104
132
  padding: 0;
105
133
  transition: transform 0.5s, z-index 0.5s;
@@ -33,11 +33,10 @@ function ScaledBlockPreview( {
33
33
 
34
34
  const [ contentResizeListener, { height: contentHeight } ] =
35
35
  useResizeObserver();
36
- const { styles, assets, duotone } = useSelect( ( select ) => {
36
+ const { styles, duotone } = useSelect( ( select ) => {
37
37
  const settings = select( store ).getSettings();
38
38
  return {
39
39
  styles: settings.styles,
40
- assets: settings.__unstableResolvedAssets,
41
40
  duotone: settings.__experimentalFeatures?.color?.duotone,
42
41
  };
43
42
  }, [] );
@@ -49,7 +48,7 @@ function ScaledBlockPreview( {
49
48
  ...styles,
50
49
  ...__experimentalStyles,
51
50
  {
52
- css: 'body{height:auto;overflow:hidden;}',
51
+ css: 'body{height:auto;overflow:hidden;border:none;}',
53
52
  __unstableType: 'presets',
54
53
  },
55
54
  ];
@@ -79,7 +78,6 @@ function ScaledBlockPreview( {
79
78
  >
80
79
  <Iframe
81
80
  head={ <EditorStyles styles={ editorStyles } /> }
82
- assets={ assets }
83
81
  contentRef={ useRefEffect( ( bodyElement ) => {
84
82
  const {
85
83
  ownerDocument: { documentElement },
@@ -209,6 +209,7 @@ export function BlockSettingsDropdown( {
209
209
  onInsertBefore,
210
210
  onRemove,
211
211
  onCopy,
212
+ onPasteStyles,
212
213
  onMoveTo,
213
214
  blocks,
214
215
  } ) => (
@@ -262,6 +263,9 @@ export function BlockSettingsDropdown( {
262
263
  blocks={ blocks }
263
264
  onCopy={ onCopy }
264
265
  />
266
+ <MenuItem onClick={ onPasteStyles }>
267
+ { __( 'Paste styles' ) }
268
+ </MenuItem>
265
269
  { canDuplicate && (
266
270
  <MenuItem
267
271
  onClick={ pipe(
@@ -14,6 +14,7 @@ import {
14
14
  Popover,
15
15
  } from '@wordpress/components';
16
16
  import deprecated from '@wordpress/deprecated';
17
+ import { __ } from '@wordpress/i18n';
17
18
 
18
19
  /**
19
20
  * Internal dependencies
@@ -64,7 +65,9 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
64
65
  <div className="block-editor-block-styles">
65
66
  <div className="block-editor-block-styles__variants">
66
67
  { stylesToRender.map( ( style ) => {
67
- const buttonText = style.label || style.name;
68
+ const buttonText = style.isDefault
69
+ ? __( 'Default' )
70
+ : style.label || style.name;
68
71
 
69
72
  return (
70
73
  <Button
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { ScrollView } from 'react-native';
5
- import { find } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -35,7 +34,7 @@ function BlockStyles( { clientId, url } ) {
35
34
 
36
35
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
37
36
 
38
- const renderedStyles = find( styles, 'isDefault' )
37
+ const renderedStyles = styles?.find( ( style ) => style.isDefault )
39
38
  ? styles
40
39
  : [
41
40
  {
@@ -1,7 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { find } from 'lodash';
5
1
  /**
6
2
  * WordPress dependencies
7
3
  */
@@ -23,13 +19,15 @@ export function getActiveStyle( styles, className ) {
23
19
  }
24
20
 
25
21
  const potentialStyleName = style.substring( 9 );
26
- const activeStyle = find( styles, { name: potentialStyleName } );
22
+ const activeStyle = styles?.find(
23
+ ( { name } ) => name === potentialStyleName
24
+ );
27
25
  if ( activeStyle ) {
28
26
  return activeStyle;
29
27
  }
30
28
  }
31
29
 
32
- return find( styles, 'isDefault' );
30
+ return getDefaultStyle( styles );
33
31
  }
34
32
 
35
33
  /**
@@ -88,5 +86,5 @@ export function getRenderedStyles( styles ) {
88
86
  * @return {Object?} The default style object, if found.
89
87
  */
90
88
  export function getDefaultStyle( styles ) {
91
- return find( styles, 'isDefault' );
89
+ return styles?.find( ( style ) => style.isDefault );
92
90
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, within } from '@testing-library/react';
4
+ import { act, render, screen, within } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -15,7 +15,8 @@ import { copy } from '@wordpress/icons';
15
15
  * Internal dependencies
16
16
  */
17
17
  import { BlockSwitcher, BlockSwitcherDropdownMenu } from '../';
18
- import { act } from 'react-test-renderer';
18
+
19
+ jest.useFakeTimers();
19
20
 
20
21
  jest.mock( '@wordpress/data/src/components/use-select', () => jest.fn() );
21
22
  jest.mock( '../../block-title/use-block-display-title', () =>
@@ -11,31 +11,28 @@ import UngroupButton from '../ungroup-button';
11
11
  import { store as blockEditorStore } from '../../store';
12
12
 
13
13
  export default function BlockToolbar() {
14
- const { blockClientIds, isValid, mode } = useSelect( ( select ) => {
14
+ const { isSelected, isValidAndVisual } = useSelect( ( select ) => {
15
15
  const { getBlockMode, getSelectedBlockClientIds, isBlockValid } =
16
16
  select( blockEditorStore );
17
17
  const selectedBlockClientIds = getSelectedBlockClientIds();
18
18
 
19
19
  return {
20
- blockClientIds: selectedBlockClientIds,
21
- isValid:
20
+ isSelected: selectedBlockClientIds.length > 0,
21
+ isValidAndVisual:
22
22
  selectedBlockClientIds.length === 1
23
- ? isBlockValid( selectedBlockClientIds[ 0 ] )
24
- : null,
25
- mode:
26
- selectedBlockClientIds.length === 1
27
- ? getBlockMode( selectedBlockClientIds[ 0 ] )
28
- : null,
23
+ ? isBlockValid( selectedBlockClientIds[ 0 ] ) &&
24
+ getBlockMode( selectedBlockClientIds[ 0 ] ) === 'visual'
25
+ : false,
29
26
  };
30
27
  }, [] );
31
28
 
32
- if ( blockClientIds.length === 0 ) {
29
+ if ( ! isSelected ) {
33
30
  return null;
34
31
  }
35
32
 
36
33
  return (
37
34
  <>
38
- { mode === 'visual' && isValid && (
35
+ { isValidAndVisual && (
39
36
  <>
40
37
  <UngroupButton />
41
38
  <BlockControls.Slot group="block" />
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find } from 'lodash';
5
4
  import classnames from 'classnames';
6
5
 
7
6
  /**
@@ -240,8 +239,7 @@ function wrapperSelector( select ) {
240
239
  );
241
240
 
242
241
  // Get the clientId of the topmost parent with the capture toolbars setting.
243
- const capturingClientId = find(
244
- blockParentsClientIds,
242
+ const capturingClientId = blockParentsClientIds.find(
245
243
  ( parentClientId ) =>
246
244
  parentBlockListSettings[ parentClientId ]
247
245
  ?.__experimentalCaptureToolbars
@@ -3,13 +3,20 @@
3
3
  */
4
4
  import { useRefEffect } from '@wordpress/compose';
5
5
  import { useSelect } from '@wordpress/data';
6
- import { useCallback, useLayoutEffect, useState } from '@wordpress/element';
6
+ import { getScrollContainer } from '@wordpress/dom';
7
+ import {
8
+ useCallback,
9
+ useLayoutEffect,
10
+ useMemo,
11
+ useState,
12
+ } from '@wordpress/element';
7
13
 
8
14
  /**
9
15
  * Internal dependencies
10
16
  */
11
17
  import { store as blockEditorStore } from '../../store';
12
18
  import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
19
+ import { hasStickyOrFixedPositionValue } from '../../hooks/position';
13
20
 
14
21
  const COMMON_PROPS = {
15
22
  placement: 'top-start',
@@ -40,28 +47,50 @@ const RESTRICTED_HEIGHT_PROPS = {
40
47
  *
41
48
  * @param {Element} contentElement The DOM element that represents the editor content or canvas.
42
49
  * @param {Element} selectedBlockElement The outer DOM element of the first selected block.
50
+ * @param {Element} scrollContainer The scrollable container for the contentElement.
43
51
  * @param {number} toolbarHeight The height of the toolbar in pixels.
52
+ * @param {boolean} isSticky Whether or not the selected block is sticky or fixed.
44
53
  *
45
54
  * @return {Object} The popover props used to determine the position of the toolbar.
46
55
  */
47
- function getProps( contentElement, selectedBlockElement, toolbarHeight ) {
56
+ function getProps(
57
+ contentElement,
58
+ selectedBlockElement,
59
+ scrollContainer,
60
+ toolbarHeight,
61
+ isSticky
62
+ ) {
48
63
  if ( ! contentElement || ! selectedBlockElement ) {
49
64
  return DEFAULT_PROPS;
50
65
  }
51
66
 
67
+ // Get how far the content area has been scrolled.
68
+ const scrollTop = scrollContainer?.scrollTop || 0;
69
+
52
70
  const blockRect = selectedBlockElement.getBoundingClientRect();
53
71
  const contentRect = contentElement.getBoundingClientRect();
54
72
 
73
+ // Get the vertical position of top of the visible content area.
74
+ const topOfContentElementInViewport = scrollTop + contentRect.top;
75
+
55
76
  // The document element's clientHeight represents the viewport height.
56
77
  const viewportHeight =
57
78
  contentElement.ownerDocument.documentElement.clientHeight;
58
79
 
59
- const hasSpaceForToolbarAbove =
60
- blockRect.top - contentRect.top > toolbarHeight;
80
+ // The restricted height area is calculated as the sum of the
81
+ // vertical position of the visible content area, plus the height
82
+ // of the block toolbar.
83
+ const restrictedTopArea = topOfContentElementInViewport + toolbarHeight;
84
+ const hasSpaceForToolbarAbove = blockRect.top > restrictedTopArea;
85
+
61
86
  const isBlockTallerThanViewport =
62
87
  blockRect.height > viewportHeight - toolbarHeight;
63
88
 
64
- if ( hasSpaceForToolbarAbove || isBlockTallerThanViewport ) {
89
+ // Sticky blocks are treated as if they will never have enough space for the toolbar above.
90
+ if (
91
+ ! isSticky &&
92
+ ( hasSpaceForToolbarAbove || isBlockTallerThanViewport )
93
+ ) {
65
94
  return DEFAULT_PROPS;
66
95
  }
67
96
 
@@ -83,13 +112,34 @@ export default function useBlockToolbarPopoverProps( {
83
112
  } ) {
84
113
  const selectedBlockElement = useBlockElement( clientId );
85
114
  const [ toolbarHeight, setToolbarHeight ] = useState( 0 );
86
- const [ props, setProps ] = useState( () =>
87
- getProps( contentElement, selectedBlockElement, toolbarHeight )
88
- );
89
- const blockIndex = useSelect(
90
- ( select ) => select( blockEditorStore ).getBlockIndex( clientId ),
115
+ const { blockIndex, isSticky } = useSelect(
116
+ ( select ) => {
117
+ const { getBlockIndex, getBlockAttributes } =
118
+ select( blockEditorStore );
119
+ return {
120
+ blockIndex: getBlockIndex( clientId ),
121
+ isSticky: hasStickyOrFixedPositionValue(
122
+ getBlockAttributes( clientId )
123
+ ),
124
+ };
125
+ },
91
126
  [ clientId ]
92
127
  );
128
+ const scrollContainer = useMemo( () => {
129
+ if ( ! contentElement ) {
130
+ return;
131
+ }
132
+ return getScrollContainer( contentElement );
133
+ }, [ contentElement ] );
134
+ const [ props, setProps ] = useState( () =>
135
+ getProps(
136
+ contentElement,
137
+ selectedBlockElement,
138
+ scrollContainer,
139
+ toolbarHeight,
140
+ isSticky
141
+ )
142
+ );
93
143
 
94
144
  const popoverRef = useRefEffect( ( popoverNode ) => {
95
145
  setToolbarHeight( popoverNode.offsetHeight );
@@ -98,9 +148,15 @@ export default function useBlockToolbarPopoverProps( {
98
148
  const updateProps = useCallback(
99
149
  () =>
100
150
  setProps(
101
- getProps( contentElement, selectedBlockElement, toolbarHeight )
151
+ getProps(
152
+ contentElement,
153
+ selectedBlockElement,
154
+ scrollContainer,
155
+ toolbarHeight,
156
+ isSticky
157
+ )
102
158
  ),
103
- [ contentElement, selectedBlockElement, toolbarHeight ]
159
+ [ contentElement, selectedBlockElement, scrollContainer, toolbarHeight ]
104
160
  );
105
161
 
106
162
  // Update props when the block is moved. This also ensures the props are
@@ -43,7 +43,11 @@ function BlockVariationPicker( {
43
43
  <li key={ variation.name }>
44
44
  <Button
45
45
  variant="secondary"
46
- icon={ variation.icon }
46
+ icon={
47
+ variation.icon && variation.icon.src
48
+ ? variation.icon.src
49
+ : variation.icon
50
+ }
47
51
  iconSize={ 48 }
48
52
  onClick={ () => onSelect( variation ) }
49
53
  className="block-editor-block-variation-picker__variation"
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import BlockVerticalAlignmentUI from '../ui';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  describe( 'BlockVerticalAlignmentUI', () => {
13
15
  const alignment = 'top';
14
16
  const onChange = jest.fn();
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import { createCustomColorsHOC } from '../with-colors';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  describe( 'createCustomColorsHOC', () => {
13
15
  it( 'provides the wrapped component with color values and setter functions as props', () => {
14
16
  const withCustomColors = createCustomColorsHOC( [
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find, kebabCase } from 'lodash';
4
+ import { kebabCase } from 'lodash';
5
5
  import { colord, extend } from 'colord';
6
6
  import namesPlugin from 'colord/plugins/names';
7
7
  import a11yPlugin from 'colord/plugins/a11y';
@@ -26,7 +26,9 @@ export const getColorObjectByAttributeValues = (
26
26
  customColor
27
27
  ) => {
28
28
  if ( definedColor ) {
29
- const colorObj = find( colors, { slug: definedColor } );
29
+ const colorObj = colors?.find(
30
+ ( color ) => color.slug === definedColor
31
+ );
30
32
 
31
33
  if ( colorObj ) {
32
34
  return colorObj;
@@ -47,7 +49,7 @@ export const getColorObjectByAttributeValues = (
47
49
  * Returns undefined if no color object matches this requirement.
48
50
  */
49
51
  export const getColorObjectByColorValue = ( colors, colorValue ) => {
50
- return find( colors, { color: colorValue } );
52
+ return colors?.find( ( color ) => color.color === colorValue );
51
53
  };
52
54
 
53
55
  /**
@@ -45,7 +45,6 @@ function ColorGradientControlInner( {
45
45
  gradients,
46
46
  disableCustomColors,
47
47
  disableCustomGradients,
48
- __experimentalHasMultipleOrigins,
49
48
  __experimentalIsRenderedInSidebar,
50
49
  className,
51
50
  label,
@@ -80,9 +79,6 @@ function ColorGradientControlInner( {
80
79
  : onColorChange
81
80
  }
82
81
  { ...{ colors, disableCustomColors } }
83
- __experimentalHasMultipleOrigins={
84
- __experimentalHasMultipleOrigins
85
- }
86
82
  __experimentalIsRenderedInSidebar={
87
83
  __experimentalIsRenderedInSidebar
88
84
  }
@@ -103,9 +99,6 @@ function ColorGradientControlInner( {
103
99
  : onGradientChange
104
100
  }
105
101
  { ...{ gradients, disableCustomGradients } }
106
- __experimentalHasMultipleOrigins={
107
- __experimentalHasMultipleOrigins
108
- }
109
102
  __experimentalIsRenderedInSidebar={
110
103
  __experimentalIsRenderedInSidebar
111
104
  }
@@ -111,7 +111,6 @@ export default function ColorGradientSettingsDropdown( {
111
111
  enableAlpha,
112
112
  gradients,
113
113
  settings,
114
- __experimentalHasMultipleOrigins,
115
114
  __experimentalIsRenderedInSidebar,
116
115
  ...props
117
116
  } ) {
@@ -140,7 +139,6 @@ export default function ColorGradientSettingsDropdown( {
140
139
  onColorChange: setting.onColorChange,
141
140
  onGradientChange: setting.onGradientChange,
142
141
  showTitle: false,
143
- __experimentalHasMultipleOrigins,
144
142
  __experimentalIsRenderedInSidebar,
145
143
  ...setting,
146
144
  };
@@ -18,9 +18,7 @@ import { useInstanceId } from '@wordpress/compose';
18
18
  * Internal dependencies
19
19
  */
20
20
  import ColorGradientSettingsDropdown from './dropdown';
21
- import useSetting from '../use-setting';
22
- import useCommonSingleMultipleSelects from './use-common-single-multiple-selects';
23
- import useMultipleOriginColorsAndGradients from './use-multiple-origin-colors-and-gradients';
21
+ import useColorsAndGradientsPalettes from './use-multiple-origin-colors-and-gradients';
24
22
 
25
23
  const colorsAndGradientKeys = [
26
24
  'colors',
@@ -39,7 +37,6 @@ export const PanelColorGradientSettingsInner = ( {
39
37
  settings,
40
38
  title,
41
39
  showTitle = true,
42
- __experimentalHasMultipleOrigins,
43
40
  __experimentalIsRenderedInSidebar,
44
41
  enableAlpha,
45
42
  } ) => {
@@ -100,7 +97,6 @@ export const PanelColorGradientSettingsInner = ( {
100
97
  gradients,
101
98
  disableCustomColors,
102
99
  disableCustomGradients,
103
- __experimentalHasMultipleOrigins,
104
100
  __experimentalIsRenderedInSidebar,
105
101
  enableAlpha,
106
102
  } }
@@ -114,19 +110,8 @@ export const PanelColorGradientSettingsInner = ( {
114
110
  );
115
111
  };
116
112
 
117
- const PanelColorGradientSettingsSingleSelect = ( props ) => {
118
- const colorGradientSettings = useCommonSingleMultipleSelects();
119
- colorGradientSettings.colors = useSetting( 'color.palette' );
120
- colorGradientSettings.gradients = useSetting( 'color.gradients' );
121
- return (
122
- <PanelColorGradientSettingsInner
123
- { ...{ ...colorGradientSettings, ...props } }
124
- />
125
- );
126
- };
127
-
128
- const PanelColorGradientSettingsMultipleSelect = ( props ) => {
129
- const colorGradientSettings = useMultipleOriginColorsAndGradients();
113
+ const PanelColorGradientSettingsSelect = ( props ) => {
114
+ const colorGradientSettings = useColorsAndGradientsPalettes();
130
115
  return (
131
116
  <PanelColorGradientSettingsInner
132
117
  { ...{ ...colorGradientSettings, ...props } }
@@ -140,10 +125,7 @@ const PanelColorGradientSettings = ( props ) => {
140
125
  ) {
141
126
  return <PanelColorGradientSettingsInner { ...props } />;
142
127
  }
143
- if ( props.__experimentalHasMultipleOrigins ) {
144
- return <PanelColorGradientSettingsMultipleSelect { ...props } />;
145
- }
146
- return <PanelColorGradientSettingsSingleSelect { ...props } />;
128
+ return <PanelColorGradientSettingsSelect { ...props } />;
147
129
  };
148
130
 
149
131
  export default PanelColorGradientSettings;
@@ -8,7 +8,6 @@ import { _x } from '@wordpress/i18n';
8
8
  * Internal dependencies
9
9
  */
10
10
  import useSetting from '../use-setting';
11
- import useCommonSingleMultipleSelects from './use-common-single-multiple-selects';
12
11
 
13
12
  /**
14
13
  * Retrieves color and gradient related settings.
@@ -19,7 +18,10 @@ import useCommonSingleMultipleSelects from './use-common-single-multiple-selects
19
18
  * @return {Object} Color and gradient related settings.
20
19
  */
21
20
  export default function useMultipleOriginColorsAndGradients() {
22
- const colorGradientSettings = useCommonSingleMultipleSelects();
21
+ const colorGradientSettings = {
22
+ disableCustomColors: ! useSetting( 'color.custom' ),
23
+ disableCustomGradients: ! useSetting( 'color.customGradient' ),
24
+ };
23
25
  const customColors = useSetting( 'color.palette.custom' );
24
26
  const themeColors = useSetting( 'color.palette.theme' );
25
27
  const defaultColors = useSetting( 'color.palette.default' );