@wordpress/block-editor 11.4.0 → 11.6.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 (400) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/components/block-inspector/index.js +11 -10
  3. package/build/components/block-inspector/index.js.map +1 -1
  4. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
  5. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  6. package/build/components/block-list/block-invalid-warning.js +63 -80
  7. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  8. package/build/components/block-lock/modal.js +1 -0
  9. package/build/components/block-lock/modal.js.map +1 -1
  10. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
  11. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  12. package/build/components/block-settings-menu-controls/index.js +1 -1
  13. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  14. package/build/components/block-styles/index.js +2 -1
  15. package/build/components/block-styles/index.js.map +1 -1
  16. package/build/components/block-switcher/block-transformations-menu.native.js +1 -0
  17. package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  18. package/build/components/child-layout-control/index.js +107 -0
  19. package/build/components/child-layout-control/index.js.map +1 -0
  20. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
  21. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  22. package/build/components/date-format-picker/index.js +3 -3
  23. package/build/components/date-format-picker/index.js.map +1 -1
  24. package/build/components/global-styles/border-panel.js +306 -0
  25. package/build/components/global-styles/border-panel.js.map +1 -0
  26. package/build/components/global-styles/dimensions-panel.js +594 -0
  27. package/build/components/global-styles/dimensions-panel.js.map +1 -0
  28. package/build/components/global-styles/hooks.js +127 -37
  29. package/build/components/global-styles/hooks.js.map +1 -1
  30. package/build/components/global-styles/index.js +36 -2
  31. package/build/components/global-styles/index.js.map +1 -1
  32. package/build/components/global-styles/typography-panel.js +87 -27
  33. package/build/components/global-styles/typography-panel.js.map +1 -1
  34. package/build/components/global-styles/use-global-styles-output.js +21 -14
  35. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  36. package/build/components/global-styles/utils.js +2 -0
  37. package/build/components/global-styles/utils.js.map +1 -1
  38. package/build/components/index.native.js +23 -0
  39. package/build/components/index.native.js.map +1 -1
  40. package/build/components/inserter/index.js +29 -17
  41. package/build/components/inserter/index.js.map +1 -1
  42. package/build/components/inserter/media-tab/hooks.js +10 -11
  43. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  44. package/build/components/inserter/media-tab/media-list.js +5 -108
  45. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  46. package/build/components/inserter/media-tab/media-preview.js +242 -0
  47. package/build/components/inserter/media-tab/media-preview.js.map +1 -0
  48. package/build/components/inserter/menu.js +1 -1
  49. package/build/components/inserter/menu.js.map +1 -1
  50. package/build/components/inserter/quick-inserter.js +4 -2
  51. package/build/components/inserter/quick-inserter.js.map +1 -1
  52. package/build/components/inserter/search-results.js +10 -3
  53. package/build/components/inserter/search-results.js.map +1 -1
  54. package/build/components/inserter/tabs.js +1 -1
  55. package/build/components/inserter/tabs.js.map +1 -1
  56. package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
  57. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  58. package/build/components/inspector-controls/fill.js +38 -9
  59. package/build/components/inspector-controls/fill.js.map +1 -1
  60. package/build/components/link-control/index.js +1 -1
  61. package/build/components/link-control/index.js.map +1 -1
  62. package/build/components/link-control/search-item.js +5 -2
  63. package/build/components/link-control/search-item.js.map +1 -1
  64. package/build/components/link-control/settings-drawer.js +1 -1
  65. package/build/components/link-control/settings-drawer.js.map +1 -1
  66. package/build/components/link-control/settings.js +1 -0
  67. package/build/components/link-control/settings.js.map +1 -1
  68. package/build/components/list-view/block.js +17 -3
  69. package/build/components/list-view/block.js.map +1 -1
  70. package/build/components/list-view/branch.js +2 -2
  71. package/build/components/list-view/branch.js.map +1 -1
  72. package/build/components/list-view/expander.js +2 -1
  73. package/build/components/list-view/expander.js.map +1 -1
  74. package/build/components/list-view/leaf.js +10 -6
  75. package/build/components/list-view/leaf.js.map +1 -1
  76. package/build/components/list-view/use-block-selection.js +1 -2
  77. package/build/components/list-view/use-block-selection.js.map +1 -1
  78. package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
  79. package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  80. package/build/components/off-canvas-editor/appender.js +33 -13
  81. package/build/components/off-canvas-editor/appender.js.map +1 -1
  82. package/build/components/off-canvas-editor/branch.js +6 -3
  83. package/build/components/off-canvas-editor/branch.js.map +1 -1
  84. package/build/components/off-canvas-editor/index.js +8 -2
  85. package/build/components/off-canvas-editor/index.js.map +1 -1
  86. package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
  87. package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  88. package/build/components/provider/use-block-sync.js +17 -3
  89. package/build/components/provider/use-block-sync.js.map +1 -1
  90. package/build/components/responsive-block-control/index.js +1 -0
  91. package/build/components/responsive-block-control/index.js.map +1 -1
  92. package/build/components/rich-text/format-toolbar-container.js +0 -3
  93. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  94. package/build/components/rich-text/index.js +9 -43
  95. package/build/components/rich-text/index.js.map +1 -1
  96. package/build/components/rich-text/use-delete.js +73 -0
  97. package/build/components/rich-text/use-delete.js.map +1 -0
  98. package/build/components/rich-text/use-input-rules.js +14 -6
  99. package/build/components/rich-text/use-input-rules.js.map +1 -1
  100. package/build/components/writing-flow/use-selection-observer.js +4 -1
  101. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  102. package/build/hooks/align.js +3 -1
  103. package/build/hooks/align.js.map +1 -1
  104. package/build/hooks/border.js +91 -240
  105. package/build/hooks/border.js.map +1 -1
  106. package/build/hooks/custom-class-name.js +4 -4
  107. package/build/hooks/custom-class-name.js.map +1 -1
  108. package/build/hooks/custom-class-name.native.js +3 -4
  109. package/build/hooks/custom-class-name.native.js.map +1 -1
  110. package/build/hooks/dimensions.js +72 -190
  111. package/build/hooks/dimensions.js.map +1 -1
  112. package/build/hooks/duotone.js +94 -25
  113. package/build/hooks/duotone.js.map +1 -1
  114. package/build/hooks/gap.js +0 -202
  115. package/build/hooks/gap.js.map +1 -1
  116. package/build/hooks/layout.js +33 -27
  117. package/build/hooks/layout.js.map +1 -1
  118. package/build/hooks/margin.js +7 -163
  119. package/build/hooks/margin.js.map +1 -1
  120. package/build/hooks/padding.js +7 -163
  121. package/build/hooks/padding.js.map +1 -1
  122. package/build/hooks/supports.js +7 -1
  123. package/build/hooks/supports.js.map +1 -1
  124. package/build/hooks/typography.js +52 -66
  125. package/build/hooks/typography.js.map +1 -1
  126. package/build/hooks/utils.js +101 -0
  127. package/build/hooks/utils.js.map +1 -1
  128. package/build/layouts/constrained.js +6 -2
  129. package/build/layouts/constrained.js.map +1 -1
  130. package/build/layouts/flex.js +1 -0
  131. package/build/layouts/flex.js.map +1 -1
  132. package/build/private-apis.js +4 -1
  133. package/build/private-apis.js.map +1 -1
  134. package/build/store/actions.js +28 -14
  135. package/build/store/actions.js.map +1 -1
  136. package/build/store/defaults.js +28 -1
  137. package/build/store/defaults.js.map +1 -1
  138. package/build/store/reducer.js +53 -47
  139. package/build/store/reducer.js.map +1 -1
  140. package/build/store/selectors.js +24 -4
  141. package/build/store/selectors.js.map +1 -1
  142. package/build/utils/parse-css-unit-to-px.js +49 -10
  143. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  144. package/build-module/components/block-inspector/index.js +9 -9
  145. package/build-module/components/block-inspector/index.js.map +1 -1
  146. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
  147. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  148. package/build-module/components/block-list/block-invalid-warning.js +66 -78
  149. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  150. package/build-module/components/block-lock/modal.js +1 -0
  151. package/build-module/components/block-lock/modal.js.map +1 -1
  152. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
  153. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  154. package/build-module/components/block-settings-menu-controls/index.js +1 -1
  155. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  156. package/build-module/components/block-styles/index.js +2 -1
  157. package/build-module/components/block-styles/index.js.map +1 -1
  158. package/build-module/components/block-switcher/block-transformations-menu.native.js +1 -0
  159. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  160. package/build-module/components/child-layout-control/index.js +98 -0
  161. package/build-module/components/child-layout-control/index.js.map +1 -0
  162. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
  163. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  164. package/build-module/components/date-format-picker/index.js +4 -4
  165. package/build-module/components/date-format-picker/index.js.map +1 -1
  166. package/build-module/components/global-styles/border-panel.js +291 -0
  167. package/build-module/components/global-styles/border-panel.js.map +1 -0
  168. package/build-module/components/global-styles/dimensions-panel.js +574 -0
  169. package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
  170. package/build-module/components/global-styles/hooks.js +123 -34
  171. package/build-module/components/global-styles/hooks.js.map +1 -1
  172. package/build-module/components/global-styles/index.js +3 -1
  173. package/build-module/components/global-styles/index.js.map +1 -1
  174. package/build-module/components/global-styles/typography-panel.js +88 -27
  175. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  176. package/build-module/components/global-styles/use-global-styles-output.js +21 -14
  177. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  178. package/build-module/components/global-styles/utils.js +2 -0
  179. package/build-module/components/global-styles/utils.js.map +1 -1
  180. package/build-module/components/index.native.js +2 -1
  181. package/build-module/components/index.native.js.map +1 -1
  182. package/build-module/components/inserter/index.js +28 -16
  183. package/build-module/components/inserter/index.js.map +1 -1
  184. package/build-module/components/inserter/media-tab/hooks.js +10 -11
  185. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  186. package/build-module/components/inserter/media-tab/media-list.js +6 -105
  187. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  188. package/build-module/components/inserter/media-tab/media-preview.js +222 -0
  189. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
  190. package/build-module/components/inserter/menu.js +1 -1
  191. package/build-module/components/inserter/menu.js.map +1 -1
  192. package/build-module/components/inserter/quick-inserter.js +4 -2
  193. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  194. package/build-module/components/inserter/search-results.js +10 -3
  195. package/build-module/components/inserter/search-results.js.map +1 -1
  196. package/build-module/components/inserter/tabs.js +1 -1
  197. package/build-module/components/inserter/tabs.js.map +1 -1
  198. package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
  199. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  200. package/build-module/components/inspector-controls/fill.js +39 -9
  201. package/build-module/components/inspector-controls/fill.js.map +1 -1
  202. package/build-module/components/link-control/index.js +1 -1
  203. package/build-module/components/link-control/index.js.map +1 -1
  204. package/build-module/components/link-control/search-item.js +4 -2
  205. package/build-module/components/link-control/search-item.js.map +1 -1
  206. package/build-module/components/link-control/settings-drawer.js +1 -1
  207. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  208. package/build-module/components/link-control/settings.js +1 -0
  209. package/build-module/components/link-control/settings.js.map +1 -1
  210. package/build-module/components/list-view/block.js +16 -3
  211. package/build-module/components/list-view/block.js.map +1 -1
  212. package/build-module/components/list-view/branch.js +2 -2
  213. package/build-module/components/list-view/branch.js.map +1 -1
  214. package/build-module/components/list-view/expander.js +2 -1
  215. package/build-module/components/list-view/expander.js.map +1 -1
  216. package/build-module/components/list-view/leaf.js +8 -4
  217. package/build-module/components/list-view/leaf.js.map +1 -1
  218. package/build-module/components/list-view/use-block-selection.js +1 -2
  219. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  220. package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
  221. package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
  222. package/build-module/components/off-canvas-editor/appender.js +33 -14
  223. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  224. package/build-module/components/off-canvas-editor/branch.js +6 -3
  225. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  226. package/build-module/components/off-canvas-editor/index.js +8 -2
  227. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  228. package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
  229. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  230. package/build-module/components/provider/use-block-sync.js +17 -3
  231. package/build-module/components/provider/use-block-sync.js.map +1 -1
  232. package/build-module/components/responsive-block-control/index.js +1 -0
  233. package/build-module/components/responsive-block-control/index.js.map +1 -1
  234. package/build-module/components/rich-text/format-toolbar-container.js +0 -3
  235. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  236. package/build-module/components/rich-text/index.js +9 -43
  237. package/build-module/components/rich-text/index.js.map +1 -1
  238. package/build-module/components/rich-text/use-delete.js +62 -0
  239. package/build-module/components/rich-text/use-delete.js.map +1 -0
  240. package/build-module/components/rich-text/use-input-rules.js +14 -6
  241. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  242. package/build-module/components/writing-flow/use-selection-observer.js +4 -1
  243. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  244. package/build-module/hooks/align.js +3 -1
  245. package/build-module/hooks/align.js.map +1 -1
  246. package/build-module/hooks/border.js +93 -240
  247. package/build-module/hooks/border.js.map +1 -1
  248. package/build-module/hooks/custom-class-name.js +4 -4
  249. package/build-module/hooks/custom-class-name.js.map +1 -1
  250. package/build-module/hooks/custom-class-name.native.js +3 -4
  251. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  252. package/build-module/hooks/dimensions.js +75 -187
  253. package/build-module/hooks/dimensions.js.map +1 -1
  254. package/build-module/hooks/duotone.js +86 -24
  255. package/build-module/hooks/duotone.js.map +1 -1
  256. package/build-module/hooks/gap.js +0 -183
  257. package/build-module/hooks/gap.js.map +1 -1
  258. package/build-module/hooks/layout.js +33 -27
  259. package/build-module/hooks/layout.js.map +1 -1
  260. package/build-module/hooks/margin.js +4 -143
  261. package/build-module/hooks/margin.js.map +1 -1
  262. package/build-module/hooks/padding.js +4 -143
  263. package/build-module/hooks/padding.js.map +1 -1
  264. package/build-module/hooks/supports.js +7 -1
  265. package/build-module/hooks/supports.js.map +1 -1
  266. package/build-module/hooks/typography.js +54 -66
  267. package/build-module/hooks/typography.js.map +1 -1
  268. package/build-module/hooks/utils.js +96 -0
  269. package/build-module/hooks/utils.js.map +1 -1
  270. package/build-module/layouts/constrained.js +6 -2
  271. package/build-module/layouts/constrained.js.map +1 -1
  272. package/build-module/layouts/flex.js +1 -0
  273. package/build-module/layouts/flex.js.map +1 -1
  274. package/build-module/private-apis.js +3 -1
  275. package/build-module/private-apis.js.map +1 -1
  276. package/build-module/store/actions.js +28 -14
  277. package/build-module/store/actions.js.map +1 -1
  278. package/build-module/store/defaults.js +28 -1
  279. package/build-module/store/defaults.js.map +1 -1
  280. package/build-module/store/reducer.js +53 -45
  281. package/build-module/store/reducer.js.map +1 -1
  282. package/build-module/store/selectors.js +22 -4
  283. package/build-module/store/selectors.js.map +1 -1
  284. package/build-module/utils/parse-css-unit-to-px.js +49 -10
  285. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  286. package/build-style/style-rtl.css +39 -27
  287. package/build-style/style.css +39 -27
  288. package/package.json +31 -31
  289. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
  290. package/src/components/block-inspector/index.js +11 -14
  291. package/src/components/block-inspector/style.scss +3 -0
  292. package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
  293. package/src/components/block-list/block-invalid-warning.js +72 -64
  294. package/src/components/block-lock/modal.js +1 -0
  295. package/src/components/block-lock/style.scss +0 -9
  296. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
  297. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +35 -17
  298. package/src/components/block-preview/test/index.js +0 -2
  299. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  300. package/src/components/block-settings-menu-controls/index.js +2 -1
  301. package/src/components/block-styles/index.js +5 -1
  302. package/src/components/block-styles/style.scss +2 -2
  303. package/src/components/block-switcher/block-transformations-menu.native.js +1 -0
  304. package/src/components/child-layout-control/index.js +106 -0
  305. package/src/components/color-palette/test/__snapshots__/control.js.snap +17 -15
  306. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +48 -38
  307. package/src/components/date-format-picker/index.js +6 -8
  308. package/src/components/date-format-picker/style.scss +0 -5
  309. package/src/components/global-styles/border-panel.js +285 -0
  310. package/src/components/global-styles/dimensions-panel.js +627 -0
  311. package/src/components/global-styles/hooks.js +160 -44
  312. package/src/components/global-styles/index.js +7 -1
  313. package/src/components/global-styles/test/use-global-styles-output.js +1 -1
  314. package/src/components/global-styles/typography-panel.js +81 -9
  315. package/src/components/global-styles/use-global-styles-output.js +17 -16
  316. package/src/components/global-styles/utils.js +2 -0
  317. package/src/components/index.native.js +5 -0
  318. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  319. package/src/components/inserter/index.js +30 -11
  320. package/src/components/inserter/media-tab/hooks.js +9 -8
  321. package/src/components/inserter/media-tab/media-list.js +3 -122
  322. package/src/components/inserter/media-tab/media-preview.js +268 -0
  323. package/src/components/inserter/menu.js +0 -1
  324. package/src/components/inserter/quick-inserter.js +2 -0
  325. package/src/components/inserter/search-results.js +7 -1
  326. package/src/components/inserter/style.scss +25 -0
  327. package/src/components/inserter/tabs.js +1 -9
  328. package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
  329. package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
  330. package/src/components/inspector-controls/fill.js +32 -8
  331. package/src/components/link-control/index.js +1 -1
  332. package/src/components/link-control/search-item.js +3 -1
  333. package/src/components/link-control/settings-drawer.js +2 -1
  334. package/src/components/link-control/settings.js +1 -0
  335. package/src/components/link-control/style.scss +18 -12
  336. package/src/components/link-control/test/index.js +3 -5
  337. package/src/components/list-view/block.js +19 -1
  338. package/src/components/list-view/branch.js +1 -2
  339. package/src/components/list-view/expander.js +1 -0
  340. package/src/components/list-view/leaf.js +43 -29
  341. package/src/components/list-view/use-block-selection.js +0 -2
  342. package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
  343. package/src/components/media-replace-flow/style.scss +7 -9
  344. package/src/components/off-canvas-editor/appender.js +44 -21
  345. package/src/components/off-canvas-editor/branch.js +4 -1
  346. package/src/components/off-canvas-editor/index.js +7 -1
  347. package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
  348. package/src/components/provider/use-block-sync.js +21 -4
  349. package/src/components/responsive-block-control/index.js +1 -0
  350. package/src/components/rich-text/format-toolbar-container.js +1 -7
  351. package/src/components/rich-text/index.js +8 -44
  352. package/src/components/rich-text/use-delete.js +59 -0
  353. package/src/components/rich-text/use-input-rules.js +13 -5
  354. package/src/components/spacing-sizes-control/style.scss +1 -1
  355. package/src/components/url-popover/stories/index.js +1 -0
  356. package/src/components/url-popover/test/index.js +0 -2
  357. package/src/components/writing-flow/use-selection-observer.js +5 -1
  358. package/src/hooks/align.js +1 -1
  359. package/src/hooks/border.js +94 -225
  360. package/src/hooks/custom-class-name.js +4 -4
  361. package/src/hooks/custom-class-name.native.js +3 -4
  362. package/src/hooks/dimensions.js +85 -269
  363. package/src/hooks/duotone.js +100 -30
  364. package/src/hooks/gap.js +0 -208
  365. package/src/hooks/layout.js +38 -22
  366. package/src/hooks/margin.js +1 -164
  367. package/src/hooks/padding.js +1 -163
  368. package/src/hooks/supports.js +6 -0
  369. package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
  370. package/src/hooks/test/duotone.js +102 -0
  371. package/src/hooks/test/style.js +2 -1
  372. package/src/hooks/test/use-typography-props.js +2 -0
  373. package/src/hooks/typography.js +68 -88
  374. package/src/hooks/utils.js +126 -0
  375. package/src/layouts/constrained.js +23 -17
  376. package/src/layouts/flex.js +1 -0
  377. package/src/private-apis.js +2 -0
  378. package/src/store/actions.js +16 -6
  379. package/src/store/defaults.js +14 -1
  380. package/src/store/reducer.js +68 -43
  381. package/src/store/selectors.js +28 -4
  382. package/src/store/test/actions.js +4 -2
  383. package/src/utils/parse-css-unit-to-px.js +48 -13
  384. package/src/utils/test/parse-css-unit-to-px.js +13 -2
  385. package/tsconfig.tsbuildinfo +1 -1
  386. package/build/hooks/border-radius.js +0 -100
  387. package/build/hooks/border-radius.js.map +0 -1
  388. package/build/hooks/child-layout.js +0 -213
  389. package/build/hooks/child-layout.js.map +0 -1
  390. package/build/hooks/min-height.js +0 -139
  391. package/build/hooks/min-height.js.map +0 -1
  392. package/build-module/hooks/border-radius.js +0 -84
  393. package/build-module/hooks/border-radius.js.map +0 -1
  394. package/build-module/hooks/child-layout.js +0 -193
  395. package/build-module/hooks/child-layout.js.map +0 -1
  396. package/build-module/hooks/min-height.js +0 -116
  397. package/build-module/hooks/min-height.js.map +0 -1
  398. package/src/hooks/border-radius.js +0 -70
  399. package/src/hooks/child-layout.js +0 -195
  400. package/src/hooks/min-height.js +0 -104
@@ -98,13 +98,6 @@ function useInserterMediaCategories() {
98
98
  ) {
99
99
  return false;
100
100
  }
101
- // When a category has set `isExternalResource` to `true`, we
102
- // don't need to check for allowed mime types, as they are used
103
- // for restricting uploads for this media type and not for
104
- // inserting media from external sources.
105
- if ( category.isExternalResource ) {
106
- return true;
107
- }
108
101
  return Object.values( allowedMimeTypes ).some( ( mimeType ) =>
109
102
  mimeType.startsWith( `${ category.mediaType }/` )
110
103
  );
@@ -156,7 +149,15 @@ export function useMediaCategories( rootClientId ) {
156
149
  if ( category.isExternalResource ) {
157
150
  return [ category.name, true ];
158
151
  }
159
- const results = await category.fetch( { per_page: 1 } );
152
+ let results = [];
153
+ try {
154
+ results = await category.fetch( {
155
+ per_page: 1,
156
+ } );
157
+ } catch ( e ) {
158
+ // If the request fails, we shallow the error and just don't show
159
+ // the category, in order to not break the media tab.
160
+ }
160
161
  return [ category.name, !! results.length ];
161
162
  } )
162
163
  )
@@ -1,129 +1,16 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
4
  import {
10
5
  __unstableComposite as Composite,
11
6
  __unstableUseCompositeState as useCompositeState,
12
- __unstableCompositeItem as CompositeItem,
13
- Tooltip,
14
- DropdownMenu,
15
- MenuGroup,
16
- MenuItem,
17
7
  } from '@wordpress/components';
18
- import { __, sprintf } from '@wordpress/i18n';
19
- import { useMemo, useCallback, useState } from '@wordpress/element';
20
- import { cloneBlock } from '@wordpress/blocks';
21
- import { moreVertical, external } from '@wordpress/icons';
8
+ import { __ } from '@wordpress/i18n';
22
9
 
23
10
  /**
24
11
  * Internal dependencies
25
12
  */
26
- import InserterDraggableBlocks from '../../inserter-draggable-blocks';
27
- import { getBlockAndPreviewFromMedia } from './utils';
28
-
29
- const MAXIMUM_TITLE_LENGTH = 25;
30
- const MEDIA_OPTIONS_POPOVER_PROPS = {
31
- position: 'bottom left',
32
- className:
33
- 'block-editor-inserter__media-list__item-preview-options__popover',
34
- };
35
-
36
- function MediaPreviewOptions( { category, media } ) {
37
- if ( ! category.getReportUrl ) {
38
- return null;
39
- }
40
- const reportUrl = category.getReportUrl( media );
41
- return (
42
- <DropdownMenu
43
- className="block-editor-inserter__media-list__item-preview-options"
44
- label={ __( 'Options' ) }
45
- popoverProps={ MEDIA_OPTIONS_POPOVER_PROPS }
46
- icon={ moreVertical }
47
- >
48
- { () => (
49
- <MenuGroup>
50
- <MenuItem
51
- onClick={ () =>
52
- window.open( reportUrl, '_blank' ).focus()
53
- }
54
- icon={ external }
55
- >
56
- { sprintf(
57
- /* translators: %s: The media type to report e.g: "image", "video", "audio" */
58
- __( 'Report %s' ),
59
- category.mediaType
60
- ) }
61
- </MenuItem>
62
- </MenuGroup>
63
- ) }
64
- </DropdownMenu>
65
- );
66
- }
67
-
68
- function MediaPreview( { media, onClick, composite, category } ) {
69
- const [ isHovered, setIsHovered ] = useState( false );
70
- const [ block, preview ] = useMemo(
71
- () => getBlockAndPreviewFromMedia( media, category.mediaType ),
72
- [ media, category.mediaType ]
73
- );
74
- const title = media.title?.rendered || media.title;
75
- let truncatedTitle;
76
- if ( title.length > MAXIMUM_TITLE_LENGTH ) {
77
- const omission = '...';
78
- truncatedTitle =
79
- title.slice( 0, MAXIMUM_TITLE_LENGTH - omission.length ) + omission;
80
- }
81
- const onMouseEnter = useCallback( () => setIsHovered( true ), [] );
82
- const onMouseLeave = useCallback( () => setIsHovered( false ), [] );
83
- return (
84
- <InserterDraggableBlocks isEnabled={ true } blocks={ [ block ] }>
85
- { ( { draggable, onDragStart, onDragEnd } ) => (
86
- <div
87
- className={ classnames(
88
- 'block-editor-inserter__media-list__list-item',
89
- {
90
- 'is-hovered': isHovered,
91
- }
92
- ) }
93
- draggable={ draggable }
94
- onDragStart={ onDragStart }
95
- onDragEnd={ onDragEnd }
96
- >
97
- <Tooltip text={ truncatedTitle || title }>
98
- { /* Adding `is-hovered` class to the wrapper element is needed
99
- because the options Popover is rendered outside of this node. */ }
100
- <div
101
- onMouseEnter={ onMouseEnter }
102
- onMouseLeave={ onMouseLeave }
103
- >
104
- <CompositeItem
105
- role="option"
106
- as="div"
107
- { ...composite }
108
- className="block-editor-inserter__media-list__item"
109
- onClick={ () => onClick( block ) }
110
- aria-label={ title }
111
- >
112
- <div className="block-editor-inserter__media-list__item-preview">
113
- { preview }
114
- </div>
115
- </CompositeItem>
116
- <MediaPreviewOptions
117
- category={ category }
118
- media={ media }
119
- />
120
- </div>
121
- </Tooltip>
122
- </div>
123
- ) }
124
- </InserterDraggableBlocks>
125
- );
126
- }
13
+ import { MediaPreview } from './media-preview';
127
14
 
128
15
  function MediaList( {
129
16
  mediaList,
@@ -132,12 +19,6 @@ function MediaList( {
132
19
  label = __( 'Media List' ),
133
20
  } ) {
134
21
  const composite = useCompositeState();
135
- const onPreviewClick = useCallback(
136
- ( block ) => {
137
- onClick( cloneBlock( block ) );
138
- },
139
- [ onClick ]
140
- );
141
22
  return (
142
23
  <Composite
143
24
  { ...composite }
@@ -150,7 +31,7 @@ function MediaList( {
150
31
  key={ media.id || media.sourceId || index }
151
32
  media={ media }
152
33
  category={ category }
153
- onClick={ onPreviewClick }
34
+ onClick={ onClick }
154
35
  composite={ composite }
155
36
  />
156
37
  ) ) }
@@ -0,0 +1,268 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ __unstableCompositeItem as CompositeItem,
11
+ Tooltip,
12
+ DropdownMenu,
13
+ MenuGroup,
14
+ MenuItem,
15
+ Spinner,
16
+ Modal,
17
+ Flex,
18
+ FlexItem,
19
+ Button,
20
+ __experimentalVStack as VStack,
21
+ } from '@wordpress/components';
22
+ import { __, sprintf } from '@wordpress/i18n';
23
+ import { useMemo, useCallback, useState } from '@wordpress/element';
24
+ import { cloneBlock } from '@wordpress/blocks';
25
+ import { moreVertical, external } from '@wordpress/icons';
26
+ import { useSelect, useDispatch } from '@wordpress/data';
27
+ import { store as noticesStore } from '@wordpress/notices';
28
+ import { isBlobURL } from '@wordpress/blob';
29
+
30
+ /**
31
+ * Internal dependencies
32
+ */
33
+ import InserterDraggableBlocks from '../../inserter-draggable-blocks';
34
+ import { getBlockAndPreviewFromMedia } from './utils';
35
+ import { store as blockEditorStore } from '../../../store';
36
+
37
+ const ALLOWED_MEDIA_TYPES = [ 'image' ];
38
+ const MAXIMUM_TITLE_LENGTH = 25;
39
+ const MEDIA_OPTIONS_POPOVER_PROPS = {
40
+ position: 'bottom left',
41
+ className:
42
+ 'block-editor-inserter__media-list__item-preview-options__popover',
43
+ };
44
+
45
+ function MediaPreviewOptions( { category, media } ) {
46
+ if ( ! category.getReportUrl ) {
47
+ return null;
48
+ }
49
+ const reportUrl = category.getReportUrl( media );
50
+ return (
51
+ <DropdownMenu
52
+ className="block-editor-inserter__media-list__item-preview-options"
53
+ label={ __( 'Options' ) }
54
+ popoverProps={ MEDIA_OPTIONS_POPOVER_PROPS }
55
+ icon={ moreVertical }
56
+ >
57
+ { () => (
58
+ <MenuGroup>
59
+ <MenuItem
60
+ onClick={ () =>
61
+ window.open( reportUrl, '_blank' ).focus()
62
+ }
63
+ icon={ external }
64
+ >
65
+ { sprintf(
66
+ /* translators: %s: The media type to report e.g: "image", "video", "audio" */
67
+ __( 'Report %s' ),
68
+ category.mediaType
69
+ ) }
70
+ </MenuItem>
71
+ </MenuGroup>
72
+ ) }
73
+ </DropdownMenu>
74
+ );
75
+ }
76
+
77
+ function InsertExternalImageModal( { onClose, onSubmit } ) {
78
+ return (
79
+ <Modal
80
+ title={ __( 'Insert external image' ) }
81
+ onRequestClose={ onClose }
82
+ className="block-editor-inserter-media-tab-media-preview-inserter-external-image-modal"
83
+ >
84
+ <VStack spacing={ 3 }>
85
+ <p>
86
+ { __(
87
+ 'This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.'
88
+ ) }
89
+ </p>
90
+ <p>
91
+ { __(
92
+ 'External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.'
93
+ ) }
94
+ </p>
95
+ </VStack>
96
+ <Flex
97
+ className="block-editor-block-lock-modal__actions"
98
+ justify="flex-end"
99
+ expanded={ false }
100
+ >
101
+ <FlexItem>
102
+ <Button variant="tertiary" onClick={ onClose }>
103
+ { __( 'Cancel' ) }
104
+ </Button>
105
+ </FlexItem>
106
+ <FlexItem>
107
+ <Button variant="primary" onClick={ onSubmit }>
108
+ { __( 'Insert' ) }
109
+ </Button>
110
+ </FlexItem>
111
+ </Flex>
112
+ </Modal>
113
+ );
114
+ }
115
+
116
+ export function MediaPreview( { media, onClick, composite, category } ) {
117
+ const [ showExternalUploadModal, setShowExternalUploadModal ] =
118
+ useState( false );
119
+ const [ isHovered, setIsHovered ] = useState( false );
120
+ const [ isInserting, setIsInserting ] = useState( false );
121
+ const [ block, preview ] = useMemo(
122
+ () => getBlockAndPreviewFromMedia( media, category.mediaType ),
123
+ [ media, category.mediaType ]
124
+ );
125
+ const { createErrorNotice, createSuccessNotice } =
126
+ useDispatch( noticesStore );
127
+ const mediaUpload = useSelect(
128
+ ( select ) => select( blockEditorStore ).getSettings().mediaUpload,
129
+ []
130
+ );
131
+ const onMediaInsert = useCallback(
132
+ ( previewBlock ) => {
133
+ // Prevent multiple uploads when we're in the process of inserting.
134
+ if ( isInserting ) {
135
+ return;
136
+ }
137
+ const clonedBlock = cloneBlock( previewBlock );
138
+ const { id, url, caption } = clonedBlock.attributes;
139
+ // Media item already exists in library, so just insert it.
140
+ if ( !! id ) {
141
+ onClick( clonedBlock );
142
+ return;
143
+ }
144
+ setIsInserting( true );
145
+ // Media item does not exist in library, so try to upload it.
146
+ // Fist fetch the image data. This may fail if the image host
147
+ // doesn't allow CORS with the domain.
148
+ // If this happens, we insert the image block using the external
149
+ // URL and let the user know about the possible implications.
150
+ window
151
+ .fetch( url )
152
+ .then( ( response ) => response.blob() )
153
+ .then( ( blob ) => {
154
+ mediaUpload( {
155
+ filesList: [ blob ],
156
+ additionalData: { caption },
157
+ onFileChange( [ img ] ) {
158
+ if ( isBlobURL( img.url ) ) {
159
+ return;
160
+ }
161
+ onClick( {
162
+ ...clonedBlock,
163
+ attributes: {
164
+ ...clonedBlock.attributes,
165
+ id: img.id,
166
+ url: img.url,
167
+ },
168
+ } );
169
+ createSuccessNotice(
170
+ __( 'Image uploaded and inserted.' ),
171
+ { type: 'snackbar' }
172
+ );
173
+ setIsInserting( false );
174
+ },
175
+ allowedTypes: ALLOWED_MEDIA_TYPES,
176
+ onError( message ) {
177
+ createErrorNotice( message, { type: 'snackbar' } );
178
+ setIsInserting( false );
179
+ },
180
+ } );
181
+ } )
182
+ .catch( () => {
183
+ setShowExternalUploadModal( true );
184
+ setIsInserting( false );
185
+ } );
186
+ },
187
+ [
188
+ isInserting,
189
+ onClick,
190
+ mediaUpload,
191
+ createErrorNotice,
192
+ createSuccessNotice,
193
+ ]
194
+ );
195
+ const title = media.title?.rendered || media.title;
196
+ let truncatedTitle;
197
+ if ( title.length > MAXIMUM_TITLE_LENGTH ) {
198
+ const omission = '...';
199
+ truncatedTitle =
200
+ title.slice( 0, MAXIMUM_TITLE_LENGTH - omission.length ) + omission;
201
+ }
202
+ const onMouseEnter = useCallback( () => setIsHovered( true ), [] );
203
+ const onMouseLeave = useCallback( () => setIsHovered( false ), [] );
204
+ return (
205
+ <>
206
+ <InserterDraggableBlocks isEnabled={ true } blocks={ [ block ] }>
207
+ { ( { draggable, onDragStart, onDragEnd } ) => (
208
+ <div
209
+ className={ classnames(
210
+ 'block-editor-inserter__media-list__list-item',
211
+ {
212
+ 'is-hovered': isHovered,
213
+ }
214
+ ) }
215
+ draggable={ draggable }
216
+ onDragStart={ onDragStart }
217
+ onDragEnd={ onDragEnd }
218
+ >
219
+ <Tooltip text={ truncatedTitle || title }>
220
+ { /* Adding `is-hovered` class to the wrapper element is needed
221
+ because the options Popover is rendered outside of this node. */ }
222
+ <div
223
+ onMouseEnter={ onMouseEnter }
224
+ onMouseLeave={ onMouseLeave }
225
+ >
226
+ <CompositeItem
227
+ role="option"
228
+ as="div"
229
+ { ...composite }
230
+ className="block-editor-inserter__media-list__item"
231
+ onClick={ () => onMediaInsert( block ) }
232
+ aria-label={ title }
233
+ >
234
+ <div className="block-editor-inserter__media-list__item-preview">
235
+ { preview }
236
+ { isInserting && (
237
+ <div className="block-editor-inserter__media-list__item-preview-spinner">
238
+ <Spinner />
239
+ </div>
240
+ ) }
241
+ </div>
242
+ </CompositeItem>
243
+ { ! isInserting && (
244
+ <MediaPreviewOptions
245
+ category={ category }
246
+ media={ media }
247
+ />
248
+ ) }
249
+ </div>
250
+ </Tooltip>
251
+ </div>
252
+ ) }
253
+ </InserterDraggableBlocks>
254
+ { showExternalUploadModal && (
255
+ <InsertExternalImageModal
256
+ onClose={ () => setShowExternalUploadModal( false ) }
257
+ onSubmit={ () => {
258
+ onClick( cloneBlock( block ) );
259
+ createSuccessNotice( __( 'Image inserted.' ), {
260
+ type: 'snackbar',
261
+ } );
262
+ setShowExternalUploadModal( false );
263
+ } }
264
+ />
265
+ ) }
266
+ </>
267
+ );
268
+ }
@@ -152,7 +152,6 @@ function InserterMenu(
152
152
  destinationRootClientId,
153
153
  onInsert,
154
154
  onHover,
155
- delayedFilterValue,
156
155
  showMostUsedBlocks,
157
156
  showInserterHelpPanel,
158
157
  ]
@@ -32,6 +32,7 @@ export default function QuickInserter( {
32
32
  isAppender,
33
33
  prioritizePatterns,
34
34
  selectBlockOnInsert,
35
+ orderInitialBlockItems,
35
36
  } ) {
36
37
  const [ filterValue, setFilterValue ] = useState( '' );
37
38
  const [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {
@@ -124,6 +125,7 @@ export default function QuickInserter( {
124
125
  isDraggable={ false }
125
126
  prioritizePatterns={ prioritizePatterns }
126
127
  selectBlockOnInsert={ selectBlockOnInsert }
128
+ orderInitialBlockItems={ orderInitialBlockItems }
127
129
  />
128
130
  </div>
129
131
 
@@ -46,6 +46,7 @@ function InserterSearchResults( {
46
46
  shouldFocusBlock = true,
47
47
  prioritizePatterns,
48
48
  selectBlockOnInsert,
49
+ orderInitialBlockItems,
49
50
  } ) {
50
51
  const debouncedSpeak = useDebounce( speak, 500 );
51
52
 
@@ -88,8 +89,12 @@ function InserterSearchResults( {
88
89
  if ( maxBlockTypesToShow === 0 ) {
89
90
  return [];
90
91
  }
92
+ let orderedItems = orderBy( blockTypes, 'frecency', 'desc' );
93
+ if ( ! filterValue && orderInitialBlockItems ) {
94
+ orderedItems = orderInitialBlockItems( orderedItems );
95
+ }
91
96
  const results = searchBlockItems(
92
- orderBy( blockTypes, 'frecency', 'desc' ),
97
+ orderedItems,
93
98
  blockTypeCategories,
94
99
  blockTypeCollections,
95
100
  filterValue
@@ -104,6 +109,7 @@ function InserterSearchResults( {
104
109
  blockTypeCategories,
105
110
  blockTypeCollections,
106
111
  maxBlockTypes,
112
+ orderInitialBlockItems,
107
113
  ] );
108
114
 
109
115
  // Announce search results on change.
@@ -35,6 +35,7 @@ $block-inserter-tabs-height: 44px;
35
35
  .components-popover__content {
36
36
  border: none;
37
37
  outline: none;
38
+ box-shadow: $shadow-popover;
38
39
 
39
40
  .block-editor-inserter__quick-inserter > * {
40
41
  border-left: $border-width solid $gray-400;
@@ -42,10 +43,12 @@ $block-inserter-tabs-height: 44px;
42
43
 
43
44
  &:first-child {
44
45
  border-top: $border-width solid $gray-400;
46
+ border-radius: $radius-block-ui $radius-block-ui 0 0;
45
47
  }
46
48
 
47
49
  &:last-child {
48
50
  border-bottom: $border-width solid $gray-400;
51
+ border-radius: 0 0 $radius-block-ui $radius-block-ui;
49
52
  }
50
53
 
51
54
  &.components-button {
@@ -660,6 +663,17 @@ $block-inserter-tabs-height: 44px;
660
663
  margin: 0 auto;
661
664
  max-width: 100%;
662
665
  }
666
+
667
+ .block-editor-inserter__media-list__item-preview-spinner {
668
+ display: flex;
669
+ height: 100%;
670
+ width: 100%;
671
+ position: absolute;
672
+ justify-content: center;
673
+ background: rgba($white, 0.7);
674
+ align-items: center;
675
+ pointer-events: none;
676
+ }
663
677
  }
664
678
 
665
679
  &:focus .block-editor-inserter__media-list__item-preview {
@@ -686,3 +700,14 @@ $block-inserter-tabs-height: 44px;
686
700
  height: 100%;
687
701
  }
688
702
  }
703
+
704
+
705
+ .block-editor-inserter-media-tab-media-preview-inserter-external-image-modal {
706
+ @include break-small() {
707
+ max-width: $break-mobile;
708
+ }
709
+
710
+ p {
711
+ margin: 0;
712
+ }
713
+ }
@@ -52,15 +52,7 @@ function InserterTabs( {
52
52
  tempTabs.push( reusableBlocksTab );
53
53
  }
54
54
  return tempTabs;
55
- }, [
56
- prioritizePatterns,
57
- blocksTab,
58
- showPatterns,
59
- patternsTab,
60
- showReusableBlocks,
61
- showMedia,
62
- reusableBlocksTab,
63
- ] );
55
+ }, [ prioritizePatterns, showPatterns, showReusableBlocks, showMedia ] );
64
56
 
65
57
  return (
66
58
  <TabPanel
@@ -2,21 +2,21 @@
2
2
 
3
3
  exports[`Inserter can add blocks adds new block at the end of post 1`] = `
4
4
  "<!-- wp:spacer -->
5
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
5
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
6
6
  <!-- /wp:spacer -->
7
7
 
8
8
  <!-- wp:heading -->
9
- <h2 class=\\"wp-block-heading\\"></h2>
9
+ <h2 class="wp-block-heading"></h2>
10
10
  <!-- /wp:heading -->"
11
11
  `;
12
12
 
13
13
  exports[`Inserter can add blocks after another block 1`] = `
14
14
  "<!-- wp:spacer -->
15
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
15
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
16
16
  <!-- /wp:spacer -->
17
17
 
18
18
  <!-- wp:heading -->
19
- <h2 class=\\"wp-block-heading\\"></h2>
19
+ <h2 class="wp-block-heading"></h2>
20
20
  <!-- /wp:heading -->
21
21
 
22
22
  <!-- wp:more -->
@@ -30,7 +30,7 @@ exports[`Inserter can add blocks after another block 1`] = `
30
30
 
31
31
  exports[`Inserter can add blocks before another block 1`] = `
32
32
  "<!-- wp:heading -->
33
- <h2 class=\\"wp-block-heading\\"></h2>
33
+ <h2 class="wp-block-heading"></h2>
34
34
  <!-- /wp:heading -->
35
35
 
36
36
  <!-- wp:paragraph -->
@@ -40,11 +40,11 @@ exports[`Inserter can add blocks before another block 1`] = `
40
40
 
41
41
  exports[`Inserter can add blocks creates a new Paragraph block tapping on the empty area below the last block 1`] = `
42
42
  "<!-- wp:spacer -->
43
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
43
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
44
44
  <!-- /wp:spacer -->
45
45
 
46
46
  <!-- wp:heading -->
47
- <h2 class=\\"wp-block-heading\\"></h2>
47
+ <h2 class="wp-block-heading"></h2>
48
48
  <!-- /wp:heading -->
49
49
 
50
50
  <!-- wp:paragraph -->
@@ -54,7 +54,7 @@ exports[`Inserter can add blocks creates a new Paragraph block tapping on the em
54
54
 
55
55
  exports[`Inserter can add blocks inserts between 2 existing blocks 1`] = `
56
56
  "<!-- wp:spacer -->
57
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
57
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
58
58
  <!-- /wp:spacer -->
59
59
 
60
60
  <!-- wp:more -->
@@ -62,17 +62,17 @@ exports[`Inserter can add blocks inserts between 2 existing blocks 1`] = `
62
62
  <!-- /wp:more -->
63
63
 
64
64
  <!-- wp:heading -->
65
- <h2 class=\\"wp-block-heading\\"></h2>
65
+ <h2 class="wp-block-heading"></h2>
66
66
  <!-- /wp:heading -->"
67
67
  `;
68
68
 
69
69
  exports[`Inserter can add blocks inserts block at the end of post when no block is selected 1`] = `
70
70
  "<!-- wp:spacer -->
71
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
71
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
72
72
  <!-- /wp:spacer -->
73
73
 
74
74
  <!-- wp:heading -->
75
- <h2 class=\\"wp-block-heading\\"></h2>
75
+ <h2 class="wp-block-heading"></h2>
76
76
  <!-- /wp:heading -->
77
77
 
78
78
  <!-- wp:more -->
@@ -86,11 +86,11 @@ exports[`Inserter can add blocks to the beginning 1`] = `
86
86
  <!-- /wp:more -->
87
87
 
88
88
  <!-- wp:spacer -->
89
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
89
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
90
90
  <!-- /wp:spacer -->
91
91
 
92
92
  <!-- wp:heading -->
93
- <h2 class=\\"wp-block-heading\\"></h2>
93
+ <h2 class="wp-block-heading"></h2>
94
94
  <!-- /wp:heading -->
95
95
 
96
96
  <!-- wp:paragraph -->
@@ -100,11 +100,11 @@ exports[`Inserter can add blocks to the beginning 1`] = `
100
100
 
101
101
  exports[`Inserter can add blocks to the end 1`] = `
102
102
  "<!-- wp:spacer -->
103
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
103
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
104
104
  <!-- /wp:spacer -->
105
105
 
106
106
  <!-- wp:heading -->
107
- <h2 class=\\"wp-block-heading\\"></h2>
107
+ <h2 class="wp-block-heading"></h2>
108
108
  <!-- /wp:heading -->
109
109
 
110
110
  <!-- wp:paragraph -->
@@ -52,7 +52,6 @@ export default function BlockSupportToolsPanel( { children, group, label } ) {
52
52
  updateBlockAttributes( clientIds, newAttributes, true );
53
53
  },
54
54
  [
55
- cleanEmptyObject,
56
55
  getBlockAttributes,
57
56
  getMultiSelectedBlockClientIds,
58
57
  hasMultiSelection,