@wordpress/block-editor 11.8.0 → 12.1.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 (454) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +16 -4
  3. package/build/components/block-controls/slot.js +12 -4
  4. package/build/components/block-controls/slot.js.map +1 -1
  5. package/build/components/block-controls/slot.native.js +10 -1
  6. package/build/components/block-controls/slot.native.js.map +1 -1
  7. package/build/components/block-draggable/index.js +11 -7
  8. package/build/components/block-draggable/index.js.map +1 -1
  9. package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
  10. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  11. package/build/components/block-info-slot-fill/index.js +47 -0
  12. package/build/components/block-info-slot-fill/index.js.map +1 -0
  13. package/build/components/block-inspector/index.js +4 -2
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/block-invalid-warning.native.js +15 -7
  16. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  17. package/build/components/block-list/block-list-item-cell.native.js +15 -2
  18. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  19. package/build/components/block-list/block-list-item.native.js +158 -195
  20. package/build/components/block-list/block-list-item.native.js.map +1 -1
  21. package/build/components/block-list/block-outline.native.js +57 -0
  22. package/build/components/block-list/block-outline.native.js.map +1 -0
  23. package/build/components/block-list/block.native.js +343 -300
  24. package/build/components/block-list/block.native.js.map +1 -1
  25. package/build/components/block-list/index.native.js +202 -298
  26. package/build/components/block-list/index.native.js.map +1 -1
  27. package/build/components/block-list/insertion-point.native.js +4 -2
  28. package/build/components/block-list/insertion-point.native.js.map +1 -1
  29. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  30. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu-controls/index.js +15 -4
  34. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  35. package/build/components/block-toolbar/index.js +2 -1
  36. package/build/components/block-toolbar/index.js.map +1 -1
  37. package/build/components/block-tools/block-contextual-toolbar.js +40 -11
  38. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  39. package/build/components/block-tools/selected-block-popover.js +8 -30
  40. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  41. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  42. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  43. package/build/components/editor-styles/index.js +4 -3
  44. package/build/components/editor-styles/index.js.map +1 -1
  45. package/build/components/font-sizes/fluid-utils.js +21 -14
  46. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  47. package/build/components/global-styles/advanced-panel.js +86 -0
  48. package/build/components/global-styles/advanced-panel.js.map +1 -0
  49. package/build/components/global-styles/border-panel.js +2 -32
  50. package/build/components/global-styles/border-panel.js.map +1 -1
  51. package/build/components/global-styles/color-panel.js +16 -13
  52. package/build/components/global-styles/color-panel.js.map +1 -1
  53. package/build/components/global-styles/color-panel.native.js +174 -0
  54. package/build/components/global-styles/color-panel.native.js.map +1 -0
  55. package/build/components/global-styles/dimensions-panel.js +12 -12
  56. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  57. package/build/components/global-styles/effects-panel.js +1 -1
  58. package/build/components/global-styles/effects-panel.js.map +1 -1
  59. package/build/components/global-styles/filters-panel.js +78 -14
  60. package/build/components/global-styles/filters-panel.js.map +1 -1
  61. package/build/components/global-styles/hooks.js +1 -2
  62. package/build/components/global-styles/hooks.js.map +1 -1
  63. package/build/components/global-styles/index.js +24 -0
  64. package/build/components/global-styles/index.js.map +1 -1
  65. package/build/components/global-styles/typography-panel.js +10 -10
  66. package/build/components/global-styles/typography-panel.js.map +1 -1
  67. package/build/components/global-styles/use-global-styles-output.js +114 -81
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  69. package/build/components/global-styles/utils.js +30 -0
  70. package/build/components/global-styles/utils.js.map +1 -1
  71. package/build/components/image-editor/use-save-image.js +24 -8
  72. package/build/components/image-editor/use-save-image.js.map +1 -1
  73. package/build/components/index.js +7 -0
  74. package/build/components/index.js.map +1 -1
  75. package/build/components/inserter/block-types-tab.js +12 -7
  76. package/build/components/inserter/block-types-tab.js.map +1 -1
  77. package/build/components/inserter/index.js +2 -1
  78. package/build/components/inserter/index.js.map +1 -1
  79. package/build/components/inserter-draggable-blocks/index.js +5 -0
  80. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  81. package/build/components/inspector-controls/fill.js +1 -1
  82. package/build/components/inspector-controls/fill.js.map +1 -1
  83. package/build/components/inspector-controls/fill.native.js +1 -1
  84. package/build/components/inspector-controls/fill.native.js.map +1 -1
  85. package/build/components/inspector-controls/groups.js +2 -0
  86. package/build/components/inspector-controls/groups.js.map +1 -1
  87. package/build/components/inspector-controls/slot.js +3 -6
  88. package/build/components/inspector-controls/slot.js.map +1 -1
  89. package/build/components/inspector-controls/slot.native.js +1 -1
  90. package/build/components/inspector-controls/slot.native.js.map +1 -1
  91. package/build/components/inspector-controls-tabs/styles-tab.js +2 -0
  92. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  93. package/build/components/line-height-control/index.js +7 -2
  94. package/build/components/line-height-control/index.js.map +1 -1
  95. package/build/components/link-control/use-internal-input-value.js +9 -8
  96. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  97. package/build/components/list-view/block-contents.js +7 -2
  98. package/build/components/list-view/block-contents.js.map +1 -1
  99. package/build/components/list-view/block-select-button.js +9 -3
  100. package/build/components/list-view/block-select-button.js.map +1 -1
  101. package/build/components/list-view/block.js +16 -25
  102. package/build/components/list-view/block.js.map +1 -1
  103. package/build/components/list-view/drop-indicator.js +37 -10
  104. package/build/components/list-view/drop-indicator.js.map +1 -1
  105. package/build/components/list-view/index.js +38 -18
  106. package/build/components/list-view/index.js.map +1 -1
  107. package/build/components/list-view/leaf.js +2 -1
  108. package/build/components/list-view/leaf.js.map +1 -1
  109. package/build/components/list-view/use-block-selection.js +1 -1
  110. package/build/components/list-view/use-block-selection.js.map +1 -1
  111. package/build/components/list-view/use-list-view-drop-zone.js +163 -11
  112. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  113. package/build/components/media-placeholder/index.js +68 -7
  114. package/build/components/media-placeholder/index.js.map +1 -1
  115. package/build/components/media-replace-flow/index.js +5 -5
  116. package/build/components/media-replace-flow/index.js.map +1 -1
  117. package/build/components/multi-selection-inspector/index.js +2 -2
  118. package/build/components/multi-selection-inspector/index.js.map +1 -1
  119. package/build/components/navigable-toolbar/index.js +12 -4
  120. package/build/components/navigable-toolbar/index.js.map +1 -1
  121. package/build/components/off-canvas-editor/appender.js +2 -7
  122. package/build/components/off-canvas-editor/appender.js.map +1 -1
  123. package/build/components/off-canvas-editor/leaf-more-menu.js +3 -1
  124. package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  125. package/build/components/preview-options/index.js +6 -1
  126. package/build/components/preview-options/index.js.map +1 -1
  127. package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
  128. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  129. package/build/components/url-input/index.js +1 -2
  130. package/build/components/url-input/index.js.map +1 -1
  131. package/build/hooks/align.js +1 -1
  132. package/build/hooks/align.js.map +1 -1
  133. package/build/hooks/border.js +1 -1
  134. package/build/hooks/border.js.map +1 -1
  135. package/build/hooks/color.js +1 -1
  136. package/build/hooks/color.js.map +1 -1
  137. package/build/hooks/content-lock-ui.js +8 -12
  138. package/build/hooks/content-lock-ui.js.map +1 -1
  139. package/build/hooks/duotone.js +29 -4
  140. package/build/hooks/duotone.js.map +1 -1
  141. package/build/hooks/index.native.js +8 -0
  142. package/build/hooks/index.native.js.map +1 -1
  143. package/build/hooks/layout.js +2 -2
  144. package/build/hooks/layout.js.map +1 -1
  145. package/build/hooks/position.js +1 -1
  146. package/build/hooks/position.js.map +1 -1
  147. package/build/hooks/style.js +1 -1
  148. package/build/hooks/style.js.map +1 -1
  149. package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
  150. package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  151. package/build/hooks/use-typography-props.js +14 -10
  152. package/build/hooks/use-typography-props.js.map +1 -1
  153. package/build/hooks/utils.js +15 -3
  154. package/build/hooks/utils.js.map +1 -1
  155. package/build/index.native.js +31 -0
  156. package/build/index.native.js.map +1 -0
  157. package/build/private-apis.js +10 -1
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/actions.js +7 -0
  160. package/build/store/actions.js.map +1 -1
  161. package/build/utils/object.js +5 -5
  162. package/build/utils/object.js.map +1 -1
  163. package/build/utils/transform-styles/index.js +2 -2
  164. package/build/utils/transform-styles/index.js.map +1 -1
  165. package/build/utils/use-should-contextual-toolbar-show.js +72 -0
  166. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -0
  167. package/build-module/components/block-controls/slot.js +11 -4
  168. package/build-module/components/block-controls/slot.js.map +1 -1
  169. package/build-module/components/block-controls/slot.native.js +9 -1
  170. package/build-module/components/block-controls/slot.native.js.map +1 -1
  171. package/build-module/components/block-draggable/index.js +10 -6
  172. package/build-module/components/block-draggable/index.js.map +1 -1
  173. package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
  174. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  175. package/build-module/components/block-info-slot-fill/index.js +34 -0
  176. package/build-module/components/block-info-slot-fill/index.js.map +1 -0
  177. package/build-module/components/block-inspector/index.js +3 -2
  178. package/build-module/components/block-inspector/index.js.map +1 -1
  179. package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
  180. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  181. package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
  182. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  183. package/build-module/components/block-list/block-list-item.native.js +160 -190
  184. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  185. package/build-module/components/block-list/block-outline.native.js +44 -0
  186. package/build-module/components/block-list/block-outline.native.js.map +1 -0
  187. package/build-module/components/block-list/block.native.js +341 -299
  188. package/build-module/components/block-list/block.native.js.map +1 -1
  189. package/build-module/components/block-list/index.native.js +203 -293
  190. package/build-module/components/block-list/index.native.js.map +1 -1
  191. package/build-module/components/block-list/insertion-point.native.js +4 -2
  192. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  193. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  194. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  195. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
  196. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  197. package/build-module/components/block-settings-menu-controls/index.js +13 -5
  198. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  199. package/build-module/components/block-toolbar/index.js +2 -1
  200. package/build-module/components/block-toolbar/index.js.map +1 -1
  201. package/build-module/components/block-tools/block-contextual-toolbar.js +37 -11
  202. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  203. package/build-module/components/block-tools/selected-block-popover.js +8 -29
  204. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  205. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  206. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  207. package/build-module/components/editor-styles/index.js +4 -3
  208. package/build-module/components/editor-styles/index.js.map +1 -1
  209. package/build-module/components/font-sizes/fluid-utils.js +21 -14
  210. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  211. package/build-module/components/global-styles/advanced-panel.js +74 -0
  212. package/build-module/components/global-styles/advanced-panel.js.map +1 -0
  213. package/build-module/components/global-styles/border-panel.js +2 -32
  214. package/build-module/components/global-styles/border-panel.js.map +1 -1
  215. package/build-module/components/global-styles/color-panel.js +18 -15
  216. package/build-module/components/global-styles/color-panel.js.map +1 -1
  217. package/build-module/components/global-styles/color-panel.native.js +150 -0
  218. package/build-module/components/global-styles/color-panel.native.js.map +1 -0
  219. package/build-module/components/global-styles/dimensions-panel.js +13 -13
  220. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  221. package/build-module/components/global-styles/effects-panel.js +2 -2
  222. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  223. package/build-module/components/global-styles/filters-panel.js +78 -16
  224. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  225. package/build-module/components/global-styles/hooks.js +1 -2
  226. package/build-module/components/global-styles/hooks.js.map +1 -1
  227. package/build-module/components/global-styles/index.js +3 -1
  228. package/build-module/components/global-styles/index.js.map +1 -1
  229. package/build-module/components/global-styles/typography-panel.js +11 -11
  230. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  231. package/build-module/components/global-styles/use-global-styles-output.js +112 -81
  232. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  233. package/build-module/components/global-styles/utils.js +25 -0
  234. package/build-module/components/global-styles/utils.js.map +1 -1
  235. package/build-module/components/image-editor/use-save-image.js +24 -8
  236. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  237. package/build-module/components/index.js +1 -1
  238. package/build-module/components/index.js.map +1 -1
  239. package/build-module/components/inserter/block-types-tab.js +12 -6
  240. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  241. package/build-module/components/inserter/index.js +2 -1
  242. package/build-module/components/inserter/index.js.map +1 -1
  243. package/build-module/components/inserter-draggable-blocks/index.js +4 -0
  244. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  245. package/build-module/components/inspector-controls/fill.js +1 -1
  246. package/build-module/components/inspector-controls/fill.js.map +1 -1
  247. package/build-module/components/inspector-controls/fill.native.js +1 -1
  248. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  249. package/build-module/components/inspector-controls/groups.js +2 -0
  250. package/build-module/components/inspector-controls/groups.js.map +1 -1
  251. package/build-module/components/inspector-controls/slot.js +4 -7
  252. package/build-module/components/inspector-controls/slot.js.map +1 -1
  253. package/build-module/components/inspector-controls/slot.native.js +1 -1
  254. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  255. package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -0
  256. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  257. package/build-module/components/line-height-control/index.js +7 -2
  258. package/build-module/components/line-height-control/index.js.map +1 -1
  259. package/build-module/components/link-control/use-internal-input-value.js +9 -8
  260. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  261. package/build-module/components/list-view/block-contents.js +7 -3
  262. package/build-module/components/list-view/block-contents.js.map +1 -1
  263. package/build-module/components/list-view/block-select-button.js +9 -3
  264. package/build-module/components/list-view/block-select-button.js.map +1 -1
  265. package/build-module/components/list-view/block.js +18 -26
  266. package/build-module/components/list-view/block.js.map +1 -1
  267. package/build-module/components/list-view/drop-indicator.js +36 -10
  268. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  269. package/build-module/components/list-view/index.js +39 -19
  270. package/build-module/components/list-view/index.js.map +1 -1
  271. package/build-module/components/list-view/leaf.js +2 -1
  272. package/build-module/components/list-view/leaf.js.map +1 -1
  273. package/build-module/components/list-view/use-block-selection.js +1 -1
  274. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  275. package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
  276. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  277. package/build-module/components/media-placeholder/index.js +66 -7
  278. package/build-module/components/media-placeholder/index.js.map +1 -1
  279. package/build-module/components/media-replace-flow/index.js +5 -5
  280. package/build-module/components/media-replace-flow/index.js.map +1 -1
  281. package/build-module/components/multi-selection-inspector/index.js +2 -2
  282. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  283. package/build-module/components/navigable-toolbar/index.js +12 -4
  284. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  285. package/build-module/components/off-canvas-editor/appender.js +1 -5
  286. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  287. package/build-module/components/off-canvas-editor/leaf-more-menu.js +3 -1
  288. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  289. package/build-module/components/preview-options/index.js +7 -2
  290. package/build-module/components/preview-options/index.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
  292. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  293. package/build-module/components/url-input/index.js +1 -2
  294. package/build-module/components/url-input/index.js.map +1 -1
  295. package/build-module/hooks/align.js +1 -1
  296. package/build-module/hooks/align.js.map +1 -1
  297. package/build-module/hooks/border.js +1 -1
  298. package/build-module/hooks/border.js.map +1 -1
  299. package/build-module/hooks/color.js +1 -1
  300. package/build-module/hooks/color.js.map +1 -1
  301. package/build-module/hooks/content-lock-ui.js +8 -11
  302. package/build-module/hooks/content-lock-ui.js.map +1 -1
  303. package/build-module/hooks/duotone.js +28 -5
  304. package/build-module/hooks/duotone.js.map +1 -1
  305. package/build-module/hooks/index.native.js +1 -0
  306. package/build-module/hooks/index.native.js.map +1 -1
  307. package/build-module/hooks/layout.js +2 -2
  308. package/build-module/hooks/layout.js.map +1 -1
  309. package/build-module/hooks/position.js +1 -1
  310. package/build-module/hooks/position.js.map +1 -1
  311. package/build-module/hooks/style.js +1 -1
  312. package/build-module/hooks/style.js.map +1 -1
  313. package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
  314. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  315. package/build-module/hooks/use-typography-props.js +14 -10
  316. package/build-module/hooks/use-typography-props.js.map +1 -1
  317. package/build-module/hooks/utils.js +16 -4
  318. package/build-module/hooks/utils.js.map +1 -1
  319. package/build-module/index.native.js +6 -0
  320. package/build-module/index.native.js.map +1 -0
  321. package/build-module/private-apis.js +7 -1
  322. package/build-module/private-apis.js.map +1 -1
  323. package/build-module/store/actions.js +7 -0
  324. package/build-module/store/actions.js.map +1 -1
  325. package/build-module/utils/object.js +4 -4
  326. package/build-module/utils/object.js.map +1 -1
  327. package/build-module/utils/transform-styles/index.js +2 -2
  328. package/build-module/utils/transform-styles/index.js.map +1 -1
  329. package/build-module/utils/use-should-contextual-toolbar-show.js +60 -0
  330. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -0
  331. package/build-style/content-rtl.css +9 -7
  332. package/build-style/content.css +9 -7
  333. package/build-style/style-rtl.css +257 -56
  334. package/build-style/style.css +257 -56
  335. package/package.json +32 -32
  336. package/src/components/block-breadcrumb/style.scss +2 -1
  337. package/src/components/block-controls/slot.js +8 -4
  338. package/src/components/block-controls/slot.native.js +6 -1
  339. package/src/components/block-draggable/index.js +10 -6
  340. package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
  341. package/src/components/block-info-slot-fill/index.js +24 -0
  342. package/src/components/block-inspector/index.js +3 -0
  343. package/src/components/block-list/block-invalid-warning.native.js +17 -9
  344. package/src/components/block-list/block-list-item-cell.native.js +10 -1
  345. package/src/components/block-list/block-list-item.native.js +180 -208
  346. package/src/components/block-list/block-outline.native.js +58 -0
  347. package/src/components/block-list/block.native.js +564 -524
  348. package/src/components/block-list/content.scss +16 -16
  349. package/src/components/block-list/index.native.js +229 -298
  350. package/src/components/block-list/insertion-point.native.js +2 -2
  351. package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
  352. package/src/components/block-list/test/index.native.js +205 -0
  353. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -1
  354. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +9 -9
  355. package/src/components/block-mover/style.scss +10 -4
  356. package/src/components/block-mover/test/index.native.js +4 -4
  357. package/src/components/block-pattern-setup/style.scss +1 -4
  358. package/src/components/block-patterns-list/style.scss +1 -4
  359. package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
  360. package/src/components/block-settings-menu-controls/index.js +24 -4
  361. package/src/components/block-styles/style.scss +4 -4
  362. package/src/components/block-toolbar/index.js +4 -3
  363. package/src/components/block-toolbar/style.scss +56 -33
  364. package/src/components/block-tools/block-contextual-toolbar.js +64 -15
  365. package/src/components/block-tools/selected-block-popover.js +11 -46
  366. package/src/components/block-tools/style.scss +165 -3
  367. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
  368. package/src/components/editor-styles/index.js +9 -5
  369. package/src/components/font-sizes/fluid-utils.js +31 -14
  370. package/src/components/font-sizes/test/fluid-utils.js +5 -16
  371. package/src/components/global-styles/advanced-panel.js +82 -0
  372. package/src/components/global-styles/border-panel.js +1 -30
  373. package/src/components/global-styles/color-panel.js +19 -14
  374. package/src/components/global-styles/color-panel.native.js +207 -0
  375. package/src/components/global-styles/dimensions-panel.js +23 -13
  376. package/src/components/global-styles/effects-panel.js +2 -2
  377. package/src/components/global-styles/filters-panel.js +90 -17
  378. package/src/components/global-styles/hooks.js +1 -5
  379. package/src/components/global-styles/index.js +6 -1
  380. package/src/components/global-styles/style.scss +16 -1
  381. package/src/components/global-styles/test/typography-utils.js +63 -22
  382. package/src/components/global-styles/test/use-global-styles-output.js +126 -4
  383. package/src/components/global-styles/test/utils.js +57 -1
  384. package/src/components/global-styles/typography-panel.js +38 -12
  385. package/src/components/global-styles/use-global-styles-output.js +85 -67
  386. package/src/components/global-styles/utils.js +27 -0
  387. package/src/components/image-editor/use-save-image.js +20 -9
  388. package/src/components/index.js +1 -0
  389. package/src/components/inserter/block-types-tab.js +9 -6
  390. package/src/components/inserter/index.js +1 -1
  391. package/src/components/inserter-draggable-blocks/index.js +4 -0
  392. package/src/components/inspector-controls/fill.js +1 -1
  393. package/src/components/inspector-controls/fill.native.js +1 -1
  394. package/src/components/inspector-controls/groups.js +2 -0
  395. package/src/components/inspector-controls/slot.js +4 -9
  396. package/src/components/inspector-controls/slot.native.js +1 -1
  397. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  398. package/src/components/line-height-control/index.js +7 -2
  399. package/src/components/line-height-control/stories/index.js +1 -1
  400. package/src/components/link-control/test/index.js +42 -0
  401. package/src/components/link-control/use-internal-input-value.js +8 -7
  402. package/src/components/list-view/block-contents.js +26 -20
  403. package/src/components/list-view/block-select-button.js +11 -2
  404. package/src/components/list-view/block.js +28 -33
  405. package/src/components/list-view/drop-indicator.js +67 -22
  406. package/src/components/list-view/index.js +33 -14
  407. package/src/components/list-view/leaf.js +1 -0
  408. package/src/components/list-view/style.scss +18 -3
  409. package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
  410. package/src/components/list-view/use-block-selection.js +1 -1
  411. package/src/components/list-view/use-list-view-drop-zone.js +194 -11
  412. package/src/components/media-placeholder/index.js +74 -1
  413. package/src/components/media-replace-flow/README.md +3 -2
  414. package/src/components/media-replace-flow/index.js +4 -5
  415. package/src/components/multi-selection-inspector/index.js +2 -2
  416. package/src/components/navigable-toolbar/index.js +12 -3
  417. package/src/components/off-canvas-editor/appender.js +1 -4
  418. package/src/components/off-canvas-editor/leaf-more-menu.js +2 -1
  419. package/src/components/preview-options/index.js +9 -2
  420. package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
  421. package/src/components/url-input/index.js +1 -2
  422. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -3
  423. package/src/hooks/align.js +2 -1
  424. package/src/hooks/border.js +2 -1
  425. package/src/hooks/color.js +2 -1
  426. package/src/hooks/content-lock-ui.js +3 -15
  427. package/src/hooks/duotone.js +47 -25
  428. package/src/hooks/index.native.js +1 -0
  429. package/src/hooks/layout.js +4 -2
  430. package/src/hooks/position.js +2 -1
  431. package/src/hooks/style.js +2 -1
  432. package/src/hooks/test/anchor.js +113 -0
  433. package/src/hooks/test/color.js +0 -9
  434. package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
  435. package/src/hooks/test/use-typography-props.js +49 -4
  436. package/src/hooks/test/utils.js +20 -101
  437. package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
  438. package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
  439. package/src/hooks/use-typography-props.js +10 -11
  440. package/src/hooks/utils.js +20 -3
  441. package/src/index.native.js +6 -0
  442. package/src/private-apis.js +6 -0
  443. package/src/store/actions.js +7 -0
  444. package/src/utils/object.js +4 -4
  445. package/src/utils/test/object.js +21 -21
  446. package/src/utils/transform-styles/index.js +2 -2
  447. package/src/utils/use-should-contextual-toolbar-show.js +85 -0
  448. package/tsconfig.json +2 -0
  449. package/tsconfig.tsbuildinfo +1 -1
  450. package/build/hooks/color-panel.native.js +0 -77
  451. package/build/hooks/color-panel.native.js.map +0 -1
  452. package/build-module/hooks/color-panel.native.js +0 -62
  453. package/build-module/hooks/color-panel.native.js.map +0 -1
  454. package/src/hooks/color-panel.native.js +0 -63
@@ -56,26 +56,46 @@
56
56
  }
57
57
  }
58
58
 
59
- .block-editor-block-contextual-toolbar.has-parent:not(.is-fixed) {
60
- margin-left: calc(#{$grid-unit-60} + #{$grid-unit-10});
59
+ // on desktop browsers the fixed toolbar has tweaked borders
60
+ @include break-medium() {
61
+ .block-editor-block-contextual-toolbar.is-fixed {
62
+ .block-editor-block-toolbar {
63
+ .components-toolbar-group,
64
+ .components-toolbar {
65
+ border-right: none;
66
+
67
+ &::after {
68
+ content: "";
69
+ width: $border-width;
70
+ margin-top: $grid-unit + $grid-unit-05;
71
+ margin-bottom: $grid-unit + $grid-unit-05;
72
+ background-color: $gray-300;
73
+ margin-left: $grid-unit;
74
+ }
75
+
76
+ & .components-toolbar-group.components-toolbar-group {
77
+ &::after {
78
+ display: none;
79
+ }
80
+ }
81
+ }
61
82
 
62
- .show-icon-labels & {
63
- margin-left: 0;
83
+ > :last-child,
84
+ > :last-child .components-toolbar-group,
85
+ > :last-child .components-toolbar {
86
+ &::after {
87
+ display: none;
88
+ }
89
+ }
90
+ }
64
91
  }
65
92
  }
66
93
 
67
- .block-editor-block-parent-selector {
68
- position: absolute;
69
- top: -$border-width;
70
- left: calc(-#{$grid-unit-60} - #{$grid-unit-10} - #{$border-width});
94
+ .block-editor-block-contextual-toolbar.has-parent:not(.is-fixed) {
95
+ margin-left: calc(#{$grid-unit-60} + #{$grid-unit-10});
71
96
 
72
97
  .show-icon-labels & {
73
- position: relative;
74
- left: auto;
75
- top: auto;
76
- margin-top: -$border-width;
77
- margin-left: -$border-width;
78
- margin-bottom: -$border-width;
98
+ margin-left: 0;
79
99
  }
80
100
  }
81
101
 
@@ -152,21 +172,38 @@
152
172
  .block-editor-block-icon {
153
173
  width: 0 !important;
154
174
  height: 0 !important;
175
+ min-width: 0 !important;
155
176
  }
156
177
  }
157
178
 
158
179
  // Parent selector overrides
159
180
 
160
181
  .block-editor-block-parent-selector__button {
182
+ border-top-right-radius: 0;
183
+ border-bottom-right-radius: 0;
184
+
161
185
  .block-editor-block-icon {
162
186
  width: 0;
163
187
  }
164
188
  }
165
189
 
166
- .block-editor-block-mover:not(.is-horizontal) .block-editor-block-mover__move-button-container {
190
+ .block-editor-block-mover .block-editor-block-mover__move-button-container {
167
191
  width: auto;
168
192
  }
169
193
 
194
+ .block-editor-block-mover.is-horizontal {
195
+ .block-editor-block-mover__move-button-container,
196
+ .block-editor-block-mover-button {
197
+ padding-left: 6px;
198
+ padding-right: 6px;
199
+ }
200
+ }
201
+
202
+ .block-editor-block-mover:not(.is-horizontal) .block-editor-block-mover-button {
203
+ padding-left: $grid-unit;
204
+ padding-right: $grid-unit;
205
+ }
206
+
170
207
  // Mover overrides.
171
208
  .block-editor-block-toolbar__block-controls .block-editor-block-mover {
172
209
  border-left: 1px solid $gray-900;
@@ -179,15 +216,9 @@
179
216
  border-left-color: $gray-200;
180
217
  }
181
218
 
182
- .block-editor-block-mover-button {
183
- // The specificity can be reduced once https://github.com/WordPress/gutenberg/blob/try/block-toolbar-labels/packages/block-editor/src/components/block-mover/style.scss#L34 is also dealt with.
184
- padding-left: $grid-unit !important;
185
- padding-right: $grid-unit !important;
186
- }
187
-
188
- .block-editor-block-mover__drag-handle.has-icon {
189
- padding-left: 12px !important;
190
- padding-right: 12px !important;
219
+ .block-editor-block-mover .block-editor-block-mover__drag-handle.has-icon {
220
+ padding-left: $grid-unit-15;
221
+ padding-right: $grid-unit-15;
191
222
  }
192
223
 
193
224
  .block-editor-block-contextual-toolbar.is-fixed .block-editor-block-mover__move-button-container {
@@ -204,18 +235,10 @@
204
235
 
205
236
  .block-editor-block-mover__move-button-container {
206
237
  border-left: 1px solid $gray-900;
207
-
208
- &::before {
209
- content: "";
210
- display: block;
211
- height: 1px;
212
- background: $gray-900;
213
- order: 2;
214
- }
215
238
  }
216
239
 
217
240
  .is-down-button.is-down-button.is-down-button {
218
- order: 3;
241
+ order: 2;
219
242
  }
220
243
 
221
244
  .block-editor-block-contextual-toolbar.is-fixed .block-editor-block-mover__move-button-container::before {
@@ -7,8 +7,16 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
+ import { useEffect, useRef, useState } from '@wordpress/element';
10
11
  import { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';
11
12
  import { useSelect } from '@wordpress/data';
13
+ import {
14
+ ToolbarItem,
15
+ ToolbarButton,
16
+ ToolbarGroup,
17
+ } from '@wordpress/components';
18
+ import { levelUp } from '@wordpress/icons';
19
+ import { useViewportMatch } from '@wordpress/compose';
12
20
 
13
21
  /**
14
22
  * Internal dependencies
@@ -16,10 +24,16 @@ import { useSelect } from '@wordpress/data';
16
24
  import NavigableToolbar from '../navigable-toolbar';
17
25
  import BlockToolbar from '../block-toolbar';
18
26
  import { store as blockEditorStore } from '../../store';
27
+ import BlockIcon from '../block-icon';
19
28
 
20
29
  function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
21
- const { blockType, hasParents, showParentSelector } = useSelect(
22
- ( select ) => {
30
+ // When the toolbar is fixed it can be collapsed
31
+ const [ isCollapsed, setIsCollapsed ] = useState( false );
32
+ const toolbarButtonRef = useRef();
33
+
34
+ const isLargeViewport = useViewportMatch( 'medium' );
35
+ const { blockType, hasParents, showParentSelector, selectedBlockClientId } =
36
+ useSelect( ( select ) => {
23
37
  const {
24
38
  getBlockName,
25
39
  getBlockParents,
@@ -28,16 +42,17 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
28
42
  } = select( blockEditorStore );
29
43
  const { getBlockType } = select( blocksStore );
30
44
  const selectedBlockClientIds = getSelectedBlockClientIds();
31
- const selectedBlockClientId = selectedBlockClientIds[ 0 ];
32
- const parents = getBlockParents( selectedBlockClientId );
45
+ const _selectedBlockClientId = selectedBlockClientIds[ 0 ];
46
+ const parents = getBlockParents( _selectedBlockClientId );
33
47
  const firstParentClientId = parents[ parents.length - 1 ];
34
48
  const parentBlockName = getBlockName( firstParentClientId );
35
49
  const parentBlockType = getBlockType( parentBlockName );
36
50
 
37
51
  return {
52
+ selectedBlockClientId: _selectedBlockClientId,
38
53
  blockType:
39
- selectedBlockClientId &&
40
- getBlockType( getBlockName( selectedBlockClientId ) ),
54
+ _selectedBlockClientId &&
55
+ getBlockType( getBlockName( _selectedBlockClientId ) ),
41
56
  hasParents: parents.length,
42
57
  showParentSelector:
43
58
  parentBlockType &&
@@ -48,23 +63,27 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
48
63
  ) &&
49
64
  selectedBlockClientIds.length <= 1 &&
50
65
  ! __unstableGetContentLockingParent(
51
- selectedBlockClientId
66
+ _selectedBlockClientId
52
67
  ),
53
68
  };
54
- },
55
- []
56
- );
69
+ }, [] );
70
+
71
+ useEffect( () => {
72
+ setIsCollapsed( false );
73
+ }, [ selectedBlockClientId ] );
57
74
 
58
- if ( blockType ) {
59
- if ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {
60
- return null;
61
- }
75
+ if (
76
+ blockType &&
77
+ ! hasBlockSupport( blockType, '__experimentalToolbar', true )
78
+ ) {
79
+ return null;
62
80
  }
63
81
 
64
82
  // Shifts the toolbar to make room for the parent block selector.
65
83
  const classes = classnames( 'block-editor-block-contextual-toolbar', {
66
84
  'has-parent': hasParents && showParentSelector,
67
85
  'is-fixed': isFixed,
86
+ 'is-collapsed': isCollapsed,
68
87
  } );
69
88
 
70
89
  return (
@@ -75,7 +94,37 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
75
94
  aria-label={ __( 'Block tools' ) }
76
95
  { ...props }
77
96
  >
78
- <BlockToolbar hideDragHandle={ isFixed } />
97
+ { isFixed && isLargeViewport && blockType && (
98
+ <ToolbarGroup
99
+ className={
100
+ isCollapsed
101
+ ? 'block-editor-block-toolbar__group-expand-fixed-toolbar'
102
+ : 'block-editor-block-toolbar__group-collapse-fixed-toolbar'
103
+ }
104
+ >
105
+ <ToolbarItem
106
+ as={ ToolbarButton }
107
+ ref={ toolbarButtonRef }
108
+ icon={
109
+ isCollapsed ? (
110
+ <BlockIcon icon={ blockType.icon } />
111
+ ) : (
112
+ levelUp
113
+ )
114
+ }
115
+ onClick={ () => {
116
+ setIsCollapsed( ( collapsed ) => ! collapsed );
117
+ toolbarButtonRef.current.focus();
118
+ } }
119
+ label={
120
+ isCollapsed
121
+ ? __( 'Show block tools' )
122
+ : __( 'Show document tools' )
123
+ }
124
+ />
125
+ </ToolbarGroup>
126
+ ) }
127
+ { ! isCollapsed && <BlockToolbar hideDragHandle={ isFixed } /> }
79
128
  </NavigableToolbar>
80
129
  );
81
130
  }
@@ -10,7 +10,6 @@ import { useRef, useEffect } from '@wordpress/element';
10
10
  import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';
11
11
  import { useDispatch, useSelect } from '@wordpress/data';
12
12
  import { useShortcut } from '@wordpress/keyboard-shortcuts';
13
- import { useViewportMatch } from '@wordpress/compose';
14
13
 
15
14
  /**
16
15
  * Internal dependencies
@@ -21,27 +20,20 @@ import { store as blockEditorStore } from '../../store';
21
20
  import BlockPopover from '../block-popover';
22
21
  import useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';
23
22
  import Inserter from '../inserter';
24
- import { unlock } from '../../lock-unlock';
23
+ import { useShouldContextualToolbarShow } from '../../utils/use-should-contextual-toolbar-show';
25
24
 
26
25
  function selector( select ) {
27
26
  const {
28
27
  __unstableGetEditorMode,
29
- isMultiSelecting,
30
28
  hasMultiSelection,
31
29
  isTyping,
32
- isBlockInterfaceHidden,
33
- getSettings,
34
30
  getLastMultiSelectedBlockClientId,
35
- } = unlock( select( blockEditorStore ) );
31
+ } = select( blockEditorStore );
36
32
 
37
33
  return {
38
34
  editorMode: __unstableGetEditorMode(),
39
35
  hasMultiSelection: hasMultiSelection(),
40
- isMultiSelecting: isMultiSelecting(),
41
36
  isTyping: isTyping(),
42
- isBlockInterfaceHidden: isBlockInterfaceHidden(),
43
- hasFixedToolbar: getSettings().hasFixedToolbar,
44
- isDistractionFree: getSettings().isDistractionFree,
45
37
  lastClientId: hasMultiSelection()
46
38
  ? getLastMultiSelectedBlockClientId()
47
39
  : null,
@@ -52,21 +44,15 @@ function SelectedBlockPopover( {
52
44
  clientId,
53
45
  rootClientId,
54
46
  isEmptyDefaultBlock,
55
- showContents, // we may need to mount an empty popover because we reuse
56
47
  capturingClientId,
57
48
  __unstablePopoverSlot,
58
49
  __unstableContentRef,
59
50
  } ) {
60
- const {
61
- editorMode,
62
- hasMultiSelection,
63
- isMultiSelecting,
64
- isTyping,
65
- isBlockInterfaceHidden,
66
- hasFixedToolbar,
67
- isDistractionFree,
68
- lastClientId,
69
- } = useSelect( selector, [] );
51
+ const { editorMode, hasMultiSelection, isTyping, lastClientId } = useSelect(
52
+ selector,
53
+ []
54
+ );
55
+
70
56
  const isInsertionPointVisible = useSelect(
71
57
  ( select ) => {
72
58
  const {
@@ -85,8 +71,10 @@ function SelectedBlockPopover( {
85
71
  },
86
72
  [ clientId ]
87
73
  );
88
- const isLargeViewport = useViewportMatch( 'medium' );
89
74
  const isToolbarForced = useRef( false );
75
+ const { shouldShowContextualToolbar, canFocusHiddenToolbar } =
76
+ useShouldContextualToolbarShow();
77
+
90
78
  const { stopTyping } = useDispatch( blockEditorStore );
91
79
 
92
80
  const showEmptyBlockSideInserter =
@@ -94,20 +82,6 @@ function SelectedBlockPopover( {
94
82
  const shouldShowBreadcrumb =
95
83
  ! hasMultiSelection &&
96
84
  ( editorMode === 'navigation' || editorMode === 'zoom-out' );
97
- const shouldShowContextualToolbar =
98
- editorMode === 'edit' &&
99
- ! hasFixedToolbar &&
100
- isLargeViewport &&
101
- ! isMultiSelecting &&
102
- ! showEmptyBlockSideInserter &&
103
- ! isTyping &&
104
- ! isBlockInterfaceHidden;
105
- const canFocusHiddenToolbar =
106
- editorMode === 'edit' &&
107
- ! shouldShowContextualToolbar &&
108
- ! hasFixedToolbar &&
109
- ! isDistractionFree &&
110
- ! isEmptyDefaultBlock;
111
85
 
112
86
  useShortcut(
113
87
  'core/block-editor/focus-toolbar',
@@ -179,7 +153,7 @@ function SelectedBlockPopover( {
179
153
  resize={ false }
180
154
  { ...popoverProps }
181
155
  >
182
- { shouldShowContextualToolbar && showContents && (
156
+ { shouldShowContextualToolbar && (
183
157
  <BlockContextualToolbar
184
158
  // If the toolbar is being shown because of being forced
185
159
  // it should focus the toolbar right after the mount.
@@ -215,8 +189,6 @@ function wrapperSelector( select ) {
215
189
  getBlockRootClientId,
216
190
  getBlock,
217
191
  getBlockParents,
218
- getSettings,
219
- isNavigationMode: _isNavigationMode,
220
192
  __experimentalGetBlockListSettingsForBlocks,
221
193
  } = select( blockEditorStore );
222
194
 
@@ -242,14 +214,10 @@ function wrapperSelector( select ) {
242
214
  ?.__experimentalCaptureToolbars
243
215
  );
244
216
 
245
- const settings = getSettings();
246
-
247
217
  return {
248
218
  clientId,
249
219
  rootClientId: getBlockRootClientId( clientId ),
250
220
  name,
251
- isDistractionFree: settings.isDistractionFree,
252
- isNavigationMode: _isNavigationMode(),
253
221
  isEmptyDefaultBlock:
254
222
  name && isUnmodifiedDefaultBlock( { name, attributes } ),
255
223
  capturingClientId,
@@ -272,8 +240,6 @@ export default function WrappedBlockPopover( {
272
240
  name,
273
241
  isEmptyDefaultBlock,
274
242
  capturingClientId,
275
- isDistractionFree,
276
- isNavigationMode,
277
243
  } = selected;
278
244
 
279
245
  if ( ! name ) {
@@ -285,7 +251,6 @@ export default function WrappedBlockPopover( {
285
251
  clientId={ clientId }
286
252
  rootClientId={ rootClientId }
287
253
  isEmptyDefaultBlock={ isEmptyDefaultBlock }
288
- showContents={ ! isDistractionFree || isNavigationMode }
289
254
  capturingClientId={ capturingClientId }
290
255
  __unstablePopoverSlot={ __unstablePopoverSlot }
291
256
  __unstableContentRef={ __unstableContentRef }
@@ -89,6 +89,9 @@
89
89
  * Block Toolbar when contextual.
90
90
  */
91
91
 
92
+ // Base left position for the toolbar when fixed.
93
+ @include editor-left(".block-editor-block-contextual-toolbar.is-fixed");
94
+
92
95
  .block-editor-block-contextual-toolbar {
93
96
  // Block UI appearance.
94
97
  display: inline-flex;
@@ -104,11 +107,9 @@
104
107
  &.is-fixed {
105
108
  position: sticky;
106
109
  top: 0;
107
- width: 100%;
108
110
  z-index: z-index(".block-editor-block-popover");
109
- // Fill up when empty
110
- min-height: $block-toolbar-height;
111
111
  display: block;
112
+ width: 100%;
112
113
 
113
114
  border: none;
114
115
  border-bottom: $border-width solid $gray-200;
@@ -119,6 +120,167 @@
119
120
  border-right-color: $gray-200;
120
121
  }
121
122
  }
123
+
124
+ // on desktop and tablet viewports the toolbar is fixed
125
+ // on top of interface header
126
+
127
+ @include break-medium() {
128
+ &.is-fixed {
129
+
130
+ // leave room for block inserter
131
+ margin-left: $grid-unit-80;
132
+ // position on top of interface header
133
+ position: fixed;
134
+ top: $admin-bar-height + $grid-unit;
135
+ // Don't fill up when empty
136
+ min-height: initial;
137
+ // remove the border
138
+ border-bottom: none;
139
+ // has to be flex for collapse button to fit
140
+ display: flex;
141
+
142
+ &.is-collapsed {
143
+ width: initial;
144
+ margin-left: $grid-unit-80 * 3 + $grid-unit-30;
145
+ }
146
+
147
+ .is-fullscreen-mode & {
148
+ // leave room for block inserter
149
+ margin-left: $grid-unit-80 + $grid-unit-70;
150
+ top: $grid-unit;
151
+ &.is-collapsed {
152
+ width: initial;
153
+ margin-left: $grid-unit-80 * 4 + $grid-unit-30;
154
+ }
155
+ }
156
+
157
+ & > .block-editor-block-toolbar__group-collapse-fixed-toolbar {
158
+ border: none;
159
+
160
+ // Add a border as separator in the block toolbar.
161
+ &::after {
162
+ content: "";
163
+ width: $border-width;
164
+ height: 24px;
165
+ margin-top: $grid-unit + $grid-unit-05;
166
+ margin-bottom: $grid-unit + $grid-unit-05;
167
+ background-color: $gray-300;
168
+ position: absolute;
169
+ left: 44px;
170
+ top: -1px;
171
+ }
172
+ }
173
+
174
+ & > .block-editor-block-toolbar__group-expand-fixed-toolbar {
175
+ border: none;
176
+
177
+ // Add a border as separator in the block toolbar.
178
+ &::before {
179
+ content: "";
180
+ width: $border-width;
181
+ margin-top: $grid-unit + $grid-unit-05;
182
+ margin-bottom: $grid-unit + $grid-unit-05;
183
+ background-color: $gray-300;
184
+ position: relative;
185
+ left: -12px; //the padding of buttons
186
+ height: 24px;
187
+ }
188
+ }
189
+
190
+ .show-icon-labels & {
191
+
192
+ margin-left: $grid-unit-80;
193
+
194
+ &.is-collapsed {
195
+ margin-left: $grid-unit-80 * 6;
196
+ }
197
+
198
+ .is-fullscreen-mode & {
199
+ margin-left: $grid-unit-80 + $grid-unit-80;
200
+ &.is-collapsed {
201
+ margin-left: $grid-unit-80 * 7;
202
+ }
203
+ }
204
+
205
+
206
+ .block-editor-block-parent-selector .block-editor-block-parent-selector__button::after {
207
+ left: 0;
208
+ }
209
+
210
+ .block-editor-block-toolbar__block-controls .block-editor-block-mover {
211
+ border-left: none;
212
+ &::before {
213
+ content: "";
214
+ width: $border-width;
215
+ margin-top: $grid-unit + $grid-unit-05;
216
+ margin-bottom: $grid-unit + $grid-unit-05;
217
+ background-color: $gray-300;
218
+ position: relative;
219
+ }
220
+ }
221
+ }
222
+
223
+ .blocks-widgets-container & {
224
+ margin-left: $grid-unit-80 * 2.4;
225
+
226
+ &.is-collapsed {
227
+ margin-left: $grid-unit-80 * 4.2;
228
+ }
229
+ }
230
+ }
231
+
232
+ &.is-fixed .block-editor-block-parent-selector {
233
+ .block-editor-block-parent-selector__button {
234
+ position: relative;
235
+ top: -1px;
236
+ border: 0;
237
+ padding-right: 6px;
238
+ padding-left: 6px;
239
+ &::after {
240
+ content: "\00B7";
241
+ font-size: 16px;
242
+ line-height: $grid-unit-40 + $grid-unit-10;
243
+ position: absolute;
244
+ left: $grid-unit-40 + $grid-unit-15 + 2px;
245
+ bottom: $grid-unit-05;
246
+ }
247
+ }
248
+ }
249
+
250
+ &:not(.is-fixed) .block-editor-block-parent-selector {
251
+ position: absolute;
252
+ top: -$border-width;
253
+ left: calc(-#{$grid-unit-60} - #{$grid-unit-10} - #{$border-width});
254
+
255
+ .show-icon-labels & {
256
+ position: relative;
257
+ left: auto;
258
+ top: auto;
259
+ margin-top: -$border-width;
260
+ margin-left: -$border-width;
261
+ margin-bottom: -$border-width;
262
+ }
263
+ }
264
+ }
265
+
266
+ // on tablet vewports the toolbar is fixed
267
+ // on top of interface header and covers the whole header
268
+ // except for the inserter on the left
269
+ @include break-medium() {
270
+ &.is-fixed {
271
+ width: 100%;
272
+ }
273
+ }
274
+
275
+ // on desktop viewports the toolbar is fixed
276
+ // on top of interface header and leaves room
277
+ // for the block inserter the publish button
278
+ @include break-large() {
279
+ &.is-fixed {
280
+ width: initial;
281
+ }
282
+ }
283
+
122
284
  }
123
285
 
124
286
  /**
@@ -61,7 +61,12 @@ export default function useMultipleOriginColorsAndGradients() {
61
61
  } );
62
62
  }
63
63
  return result;
64
- }, [ defaultColors, themeColors, customColors ] );
64
+ }, [
65
+ defaultColors,
66
+ themeColors,
67
+ customColors,
68
+ shouldDisplayDefaultColors,
69
+ ] );
65
70
 
66
71
  const customGradients = useSetting( 'color.gradients.custom' );
67
72
  const themeGradients = useSetting( 'color.gradients.theme' );
@@ -103,7 +108,16 @@ export default function useMultipleOriginColorsAndGradients() {
103
108
  } );
104
109
  }
105
110
  return result;
106
- }, [ customGradients, themeGradients, defaultGradients ] );
111
+ }, [
112
+ customGradients,
113
+ themeGradients,
114
+ defaultGradients,
115
+ shouldDisplayDefaultGradients,
116
+ ] );
117
+
118
+ colorGradientSettings.hasColorsOrGradients =
119
+ !! colorGradientSettings.colors.length ||
120
+ !! colorGradientSettings.gradients.length;
107
121
 
108
122
  return colorGradientSettings;
109
123
  }
@@ -68,29 +68,33 @@ function useDarkThemeBodyClassName( styles ) {
68
68
  }
69
69
 
70
70
  export default function EditorStyles( { styles } ) {
71
+ const stylesArray = useMemo(
72
+ () => Object.values( styles ?? [] ),
73
+ [ styles ]
74
+ );
71
75
  const transformedStyles = useMemo(
72
76
  () =>
73
77
  transformStyles(
74
- styles.filter( ( style ) => style?.css ),
78
+ stylesArray.filter( ( style ) => style?.css ),
75
79
  EDITOR_STYLES_SELECTOR
76
80
  ),
77
- [ styles ]
81
+ [ stylesArray ]
78
82
  );
79
83
 
80
84
  const transformedSvgs = useMemo(
81
85
  () =>
82
- styles
86
+ stylesArray
83
87
  .filter( ( style ) => style.__unstableType === 'svgs' )
84
88
  .map( ( style ) => style.assets )
85
89
  .join( '' ),
86
- [ styles ]
90
+ [ stylesArray ]
87
91
  );
88
92
 
89
93
  return (
90
94
  <>
91
95
  { /* Use an empty style element to have a document reference,
92
96
  but this could be any element. */ }
93
- <style ref={ useDarkThemeBodyClassName( styles ) } />
97
+ <style ref={ useDarkThemeBodyClassName( stylesArray ) } />
94
98
  { transformedStyles.map( ( css, index ) => (
95
99
  <style key={ index }>{ css }</style>
96
100
  ) ) }