@wordpress/block-editor 11.1.0 → 11.3.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 (765) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +28 -4
  4. package/build/components/alignment-control/ui.js +1 -1
  5. package/build/components/alignment-control/ui.js.map +1 -1
  6. package/build/components/autocomplete/index.js +2 -7
  7. package/build/components/autocomplete/index.js.map +1 -1
  8. package/build/components/block-actions/index.js +9 -0
  9. package/build/components/block-actions/index.js.map +1 -1
  10. package/build/components/block-alignment-matrix-control/index.js +2 -2
  11. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  12. package/build/components/block-card/index.js +2 -4
  13. package/build/components/block-card/index.js.map +1 -1
  14. package/build/components/block-edit/index.js +8 -0
  15. package/build/components/block-edit/index.js.map +1 -1
  16. package/build/components/block-inspector/index.js +18 -15
  17. package/build/components/block-inspector/index.js.map +1 -1
  18. package/build/components/block-list/use-in-between-inserter.js +5 -0
  19. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  20. package/build/components/block-lock/modal.js +0 -1
  21. package/build/components/block-lock/modal.js.map +1 -1
  22. package/build/components/block-mover/mover-description.js +2 -2
  23. package/build/components/block-mover/mover-description.js.map +1 -1
  24. package/build/components/block-navigation/dropdown.js +3 -1
  25. package/build/components/block-navigation/dropdown.js.map +1 -1
  26. package/build/components/block-pattern-setup/index.js +1 -1
  27. package/build/components/block-pattern-setup/index.js.map +1 -1
  28. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  29. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  30. package/build/components/block-patterns-list/index.js +31 -3
  31. package/build/components/block-patterns-list/index.js.map +1 -1
  32. package/build/components/block-preview/auto.js +9 -14
  33. package/build/components/block-preview/auto.js.map +1 -1
  34. package/build/components/block-preview/index.js +32 -8
  35. package/build/components/block-preview/index.js.map +1 -1
  36. package/build/components/block-selection-clearer/index.js +1 -1
  37. package/build/components/block-selection-clearer/index.js.map +1 -1
  38. package/build/components/block-settings/container.native.js +7 -33
  39. package/build/components/block-settings/container.native.js.map +1 -1
  40. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -3
  41. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  42. package/build/components/block-settings-menu-controls/index.js +2 -8
  43. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  44. package/build/components/block-styles/index.js +3 -1
  45. package/build/components/block-styles/index.js.map +1 -1
  46. package/build/components/block-switcher/utils.js +1 -1
  47. package/build/components/block-switcher/utils.js.map +1 -1
  48. package/build/components/block-tools/selected-block-popover.js +55 -47
  49. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  50. package/build/components/block-tools/use-block-toolbar-popover-props.js +43 -10
  51. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  52. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  53. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  54. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  55. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  56. package/build/components/color-style-selector/index.js +3 -1
  57. package/build/components/color-style-selector/index.js.map +1 -1
  58. package/build/components/date-format-picker/index.js +3 -4
  59. package/build/components/date-format-picker/index.js.map +1 -1
  60. package/build/components/default-style-picker/index.js +1 -0
  61. package/build/components/default-style-picker/index.js.map +1 -1
  62. package/build/components/font-family/index.js +1 -7
  63. package/build/components/font-family/index.js.map +1 -1
  64. package/build/components/font-sizes/fluid-utils.js +1 -1
  65. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  66. package/build/components/font-sizes/utils.js +1 -1
  67. package/build/components/font-sizes/utils.js.map +1 -1
  68. package/build/components/font-sizes/with-font-sizes.js +5 -8
  69. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  70. package/build/components/global-styles/context.js +22 -0
  71. package/build/components/global-styles/context.js.map +1 -0
  72. package/build/components/global-styles/hooks.js +142 -0
  73. package/build/components/global-styles/hooks.js.map +1 -0
  74. package/build/components/global-styles/index.js +42 -0
  75. package/build/components/global-styles/index.js.map +1 -0
  76. package/build/components/global-styles/typography-utils.js +92 -0
  77. package/build/components/global-styles/typography-utils.js.map +1 -0
  78. package/build/components/global-styles/use-global-styles-output.js +974 -0
  79. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  80. package/build/components/global-styles/utils.js +340 -0
  81. package/build/components/global-styles/utils.js.map +1 -0
  82. package/build/components/height-control/index.js +13 -1
  83. package/build/components/height-control/index.js.map +1 -1
  84. package/build/components/iframe/index.js +37 -8
  85. package/build/components/iframe/index.js.map +1 -1
  86. package/build/components/iframe/use-compatibility-styles.js +6 -1
  87. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  88. package/build/components/image-editor/constants.js +1 -1
  89. package/build/components/image-editor/constants.js.map +1 -1
  90. package/build/components/image-editor/context.js +1 -2
  91. package/build/components/image-editor/context.js.map +1 -1
  92. package/build/components/image-editor/cropper.js +3 -1
  93. package/build/components/image-editor/cropper.js.map +1 -1
  94. package/build/components/image-editor/index.js +13 -9
  95. package/build/components/image-editor/index.js.map +1 -1
  96. package/build/components/image-editor/use-transform-image.js +11 -35
  97. package/build/components/image-editor/use-transform-image.js.map +1 -1
  98. package/build/components/image-size-control/index.js +2 -7
  99. package/build/components/image-size-control/index.js.map +1 -1
  100. package/build/components/index.js +8 -24
  101. package/build/components/index.js.map +1 -1
  102. package/build/components/inner-blocks/index.js +22 -32
  103. package/build/components/inner-blocks/index.js.map +1 -1
  104. package/build/components/inner-blocks/index.native.js +8 -23
  105. package/build/components/inner-blocks/index.native.js.map +1 -1
  106. package/build/components/inner-blocks/use-block-context.js +53 -0
  107. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  108. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  109. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  110. package/build/components/inserter/block-patterns-tab.js +11 -5
  111. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  112. package/build/components/inserter/block-types-tab.js +2 -2
  113. package/build/components/inserter/block-types-tab.js.map +1 -1
  114. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  115. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  116. package/build/components/inserter/index.js +8 -6
  117. package/build/components/inserter/index.js.map +1 -1
  118. package/build/components/inserter/media-tab/hooks.js +142 -56
  119. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  120. package/build/components/inserter/media-tab/media-list.js +74 -21
  121. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  122. package/build/components/inserter/media-tab/media-panel.js +11 -13
  123. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  124. package/build/components/inserter/media-tab/media-tab.js +6 -3
  125. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  126. package/build/components/inserter/media-tab/utils.js +26 -15
  127. package/build/components/inserter/media-tab/utils.js.map +1 -1
  128. package/build/components/inserter/menu.js +12 -5
  129. package/build/components/inserter/menu.js.map +1 -1
  130. package/build/components/inserter/preview-panel.js +5 -3
  131. package/build/components/inserter/preview-panel.js.map +1 -1
  132. package/build/components/inserter/search-results.js +2 -7
  133. package/build/components/inserter/search-results.js.map +1 -1
  134. package/build/components/inserter-list-item/index.js +1 -9
  135. package/build/components/inserter-list-item/index.js.map +1 -1
  136. package/build/components/inspector-controls/fill.js +15 -2
  137. package/build/components/inspector-controls/fill.js.map +1 -1
  138. package/build/components/inspector-controls/fill.native.js +14 -1
  139. package/build/components/inspector-controls/fill.native.js.map +1 -1
  140. package/build/components/inspector-controls/groups.js +7 -1
  141. package/build/components/inspector-controls/groups.js.map +1 -1
  142. package/build/components/inspector-controls/index.js +2 -2
  143. package/build/components/inspector-controls/index.js.map +1 -1
  144. package/build/components/inspector-controls/slot.js +14 -1
  145. package/build/components/inspector-controls/slot.js.map +1 -1
  146. package/build/components/inspector-controls/slot.native.js +14 -1
  147. package/build/components/inspector-controls/slot.native.js.map +1 -1
  148. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  149. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  150. package/build/components/inspector-controls-tabs/index.js +2 -2
  151. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  152. package/build/components/inspector-controls-tabs/position-controls-panel.js +46 -0
  153. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
  154. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  155. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  156. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  157. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  158. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +20 -22
  159. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  160. package/build/components/justify-content-control/ui.js +8 -1
  161. package/build/components/justify-content-control/ui.js.map +1 -1
  162. package/build/components/link-control/index.js +45 -17
  163. package/build/components/link-control/index.js.map +1 -1
  164. package/build/components/link-control/search-input.js +1 -0
  165. package/build/components/link-control/search-input.js.map +1 -1
  166. package/build/components/list-view/block.js +1 -1
  167. package/build/components/list-view/block.js.map +1 -1
  168. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  169. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  170. package/build/components/media-upload/index.native.js +4 -1
  171. package/build/components/media-upload/index.native.js.map +1 -1
  172. package/build/components/off-canvas-editor/appender.js +49 -38
  173. package/build/components/off-canvas-editor/appender.js.map +1 -1
  174. package/build/components/off-canvas-editor/block-contents.js +38 -5
  175. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  176. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  177. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  178. package/build/components/off-canvas-editor/block.js +13 -52
  179. package/build/components/off-canvas-editor/block.js.map +1 -1
  180. package/build/components/off-canvas-editor/branch.js +25 -10
  181. package/build/components/off-canvas-editor/branch.js.map +1 -1
  182. package/build/components/off-canvas-editor/index.js +15 -17
  183. package/build/components/off-canvas-editor/index.js.map +1 -1
  184. package/build/components/off-canvas-editor/link-ui.js +2 -2
  185. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  186. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  187. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  188. package/build/components/provider/index.js +22 -8
  189. package/build/components/provider/index.js.map +1 -1
  190. package/build/components/provider/index.native.js +5 -6
  191. package/build/components/provider/index.native.js.map +1 -1
  192. package/build/components/rich-text/use-before-input-rules.js +11 -3
  193. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  194. package/build/components/rich-text/use-enter.js +4 -5
  195. package/build/components/rich-text/use-enter.js.map +1 -1
  196. package/build/components/rich-text/utils.js +1 -1
  197. package/build/components/rich-text/utils.js.map +1 -1
  198. package/build/components/spacing-sizes-control/utils.js +2 -8
  199. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  200. package/build/components/tool-selector/index.js +3 -1
  201. package/build/components/tool-selector/index.js.map +1 -1
  202. package/build/components/url-input/button.js +1 -0
  203. package/build/components/url-input/button.js.map +1 -1
  204. package/build/components/url-input/index.js +15 -1
  205. package/build/components/url-input/index.js.map +1 -1
  206. package/build/components/url-popover/image-url-input-ui.js +7 -8
  207. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  208. package/build/components/url-popover/link-editor.js +1 -0
  209. package/build/components/url-popover/link-editor.js.map +1 -1
  210. package/build/components/use-block-display-information/index.js +1 -1
  211. package/build/components/use-block-display-information/index.js.map +1 -1
  212. package/build/components/use-paste-styles/index.js +188 -0
  213. package/build/components/use-paste-styles/index.js.map +1 -0
  214. package/build/components/writing-flow/use-arrow-nav.js +22 -29
  215. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  216. package/build/experiments.js +45 -0
  217. package/build/experiments.js.map +1 -0
  218. package/build/experiments.native.js +40 -0
  219. package/build/experiments.native.js.map +1 -0
  220. package/build/hooks/anchor.js +2 -1
  221. package/build/hooks/anchor.js.map +1 -1
  222. package/build/hooks/border.js +1 -1
  223. package/build/hooks/border.js.map +1 -1
  224. package/build/hooks/child-layout.js +5 -1
  225. package/build/hooks/child-layout.js.map +1 -1
  226. package/build/hooks/color-panel.js +1 -1
  227. package/build/hooks/color-panel.js.map +1 -1
  228. package/build/hooks/color.js +3 -3
  229. package/build/hooks/color.js.map +1 -1
  230. package/build/hooks/custom-class-name.js +2 -1
  231. package/build/hooks/custom-class-name.js.map +1 -1
  232. package/build/hooks/dimensions.js +7 -5
  233. package/build/hooks/dimensions.js.map +1 -1
  234. package/build/hooks/index.js +2 -0
  235. package/build/hooks/index.js.map +1 -1
  236. package/build/hooks/margin.js +1 -0
  237. package/build/hooks/margin.js.map +1 -1
  238. package/build/hooks/metadata.js +1 -1
  239. package/build/hooks/metadata.js.map +1 -1
  240. package/build/hooks/padding.js +1 -0
  241. package/build/hooks/padding.js.map +1 -1
  242. package/build/hooks/position.js +395 -0
  243. package/build/hooks/position.js.map +1 -0
  244. package/build/hooks/supports.js +328 -0
  245. package/build/hooks/supports.js.map +1 -0
  246. package/build/hooks/typography.js +1 -1
  247. package/build/hooks/typography.js.map +1 -1
  248. package/build/hooks/use-color-props.js +3 -3
  249. package/build/hooks/use-color-props.js.map +1 -1
  250. package/build/hooks/utils.js +69 -3
  251. package/build/hooks/utils.js.map +1 -1
  252. package/build/index.js +10 -1
  253. package/build/index.js.map +1 -1
  254. package/build/layouts/constrained.js +3 -0
  255. package/build/layouts/constrained.js.map +1 -1
  256. package/build/layouts/flex.js +59 -9
  257. package/build/layouts/flex.js.map +1 -1
  258. package/build/layouts/flow.js +0 -18
  259. package/build/layouts/flow.js.map +1 -1
  260. package/build/store/actions.js +3 -30
  261. package/build/store/actions.js.map +1 -1
  262. package/build/store/defaults.js +5 -2
  263. package/build/store/defaults.js.map +1 -1
  264. package/build/store/index.js +11 -2
  265. package/build/store/index.js.map +1 -1
  266. package/build/store/private-actions.js +78 -0
  267. package/build/store/private-actions.js.map +1 -0
  268. package/build/store/private-selectors.js +18 -0
  269. package/build/store/private-selectors.js.map +1 -0
  270. package/build/store/reducer.js +7 -3
  271. package/build/store/reducer.js.map +1 -1
  272. package/build/store/selectors.js +68 -40
  273. package/build/store/selectors.js.map +1 -1
  274. package/build/utils/block-variation-transforms.js +1 -1
  275. package/build/utils/block-variation-transforms.js.map +1 -1
  276. package/build/utils/parse-css-unit-to-px.js +1 -1
  277. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  278. package/build/utils/transform-styles/index.js +1 -7
  279. package/build/utils/transform-styles/index.js.map +1 -1
  280. package/build-module/components/alignment-control/ui.js +1 -1
  281. package/build-module/components/alignment-control/ui.js.map +1 -1
  282. package/build-module/components/autocomplete/index.js +2 -6
  283. package/build-module/components/autocomplete/index.js.map +1 -1
  284. package/build-module/components/block-actions/index.js +6 -0
  285. package/build-module/components/block-actions/index.js.map +1 -1
  286. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  287. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  288. package/build-module/components/block-card/index.js +2 -4
  289. package/build-module/components/block-card/index.js.map +1 -1
  290. package/build-module/components/block-edit/index.js +7 -0
  291. package/build-module/components/block-edit/index.js.map +1 -1
  292. package/build-module/components/block-inspector/index.js +17 -15
  293. package/build-module/components/block-inspector/index.js.map +1 -1
  294. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  295. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  296. package/build-module/components/block-lock/modal.js +0 -1
  297. package/build-module/components/block-lock/modal.js.map +1 -1
  298. package/build-module/components/block-mover/mover-description.js +2 -2
  299. package/build-module/components/block-mover/mover-description.js.map +1 -1
  300. package/build-module/components/block-navigation/dropdown.js +3 -1
  301. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  302. package/build-module/components/block-pattern-setup/index.js +1 -1
  303. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  304. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  305. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  306. package/build-module/components/block-patterns-list/index.js +32 -3
  307. package/build-module/components/block-patterns-list/index.js.map +1 -1
  308. package/build-module/components/block-preview/auto.js +9 -14
  309. package/build-module/components/block-preview/auto.js.map +1 -1
  310. package/build-module/components/block-preview/index.js +31 -8
  311. package/build-module/components/block-preview/index.js.map +1 -1
  312. package/build-module/components/block-selection-clearer/index.js +1 -1
  313. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  314. package/build-module/components/block-settings/container.native.js +6 -30
  315. package/build-module/components/block-settings/container.native.js.map +1 -1
  316. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -3
  317. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  318. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  319. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  320. package/build-module/components/block-styles/index.js +2 -1
  321. package/build-module/components/block-styles/index.js.map +1 -1
  322. package/build-module/components/block-switcher/utils.js +1 -1
  323. package/build-module/components/block-switcher/utils.js.map +1 -1
  324. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  325. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  326. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +42 -11
  327. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  328. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  329. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  330. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  331. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  332. package/build-module/components/color-style-selector/index.js +3 -1
  333. package/build-module/components/color-style-selector/index.js.map +1 -1
  334. package/build-module/components/date-format-picker/index.js +4 -5
  335. package/build-module/components/date-format-picker/index.js.map +1 -1
  336. package/build-module/components/default-style-picker/index.js +1 -0
  337. package/build-module/components/default-style-picker/index.js.map +1 -1
  338. package/build-module/components/font-family/index.js +1 -6
  339. package/build-module/components/font-family/index.js.map +1 -1
  340. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  341. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  342. package/build-module/components/font-sizes/utils.js +1 -1
  343. package/build-module/components/font-sizes/utils.js.map +1 -1
  344. package/build-module/components/font-sizes/with-font-sizes.js +5 -7
  345. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  346. package/build-module/components/global-styles/context.js +12 -0
  347. package/build-module/components/global-styles/context.js.map +1 -0
  348. package/build-module/components/global-styles/hooks.js +121 -0
  349. package/build-module/components/global-styles/hooks.js.map +1 -0
  350. package/build-module/components/global-styles/index.js +4 -0
  351. package/build-module/components/global-styles/index.js.map +1 -0
  352. package/build-module/components/global-styles/typography-utils.js +84 -0
  353. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  354. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  355. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  356. package/build-module/components/global-styles/utils.js +321 -0
  357. package/build-module/components/global-styles/utils.js.map +1 -0
  358. package/build-module/components/height-control/index.js +14 -1
  359. package/build-module/components/height-control/index.js.map +1 -1
  360. package/build-module/components/iframe/index.js +36 -9
  361. package/build-module/components/iframe/index.js.map +1 -1
  362. package/build-module/components/iframe/use-compatibility-styles.js +6 -1
  363. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  364. package/build-module/components/image-editor/constants.js +1 -1
  365. package/build-module/components/image-editor/constants.js.map +1 -1
  366. package/build-module/components/image-editor/context.js +1 -2
  367. package/build-module/components/image-editor/context.js.map +1 -1
  368. package/build-module/components/image-editor/cropper.js +3 -1
  369. package/build-module/components/image-editor/cropper.js.map +1 -1
  370. package/build-module/components/image-editor/index.js +13 -3
  371. package/build-module/components/image-editor/index.js.map +1 -1
  372. package/build-module/components/image-editor/use-transform-image.js +12 -37
  373. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  374. package/build-module/components/image-size-control/index.js +2 -6
  375. package/build-module/components/image-size-control/index.js.map +1 -1
  376. package/build-module/components/index.js +2 -3
  377. package/build-module/components/index.js.map +1 -1
  378. package/build-module/components/inner-blocks/index.js +21 -32
  379. package/build-module/components/inner-blocks/index.js.map +1 -1
  380. package/build-module/components/inner-blocks/index.native.js +9 -22
  381. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  382. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  383. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  384. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  385. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  386. package/build-module/components/inserter/block-patterns-tab.js +11 -5
  387. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  388. package/build-module/components/inserter/block-types-tab.js +3 -3
  389. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  390. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  391. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  392. package/build-module/components/inserter/index.js +8 -6
  393. package/build-module/components/inserter/index.js.map +1 -1
  394. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  395. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  396. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  397. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  398. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  399. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  400. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  401. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  402. package/build-module/components/inserter/media-tab/utils.js +27 -15
  403. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  404. package/build-module/components/inserter/menu.js +12 -5
  405. package/build-module/components/inserter/menu.js.map +1 -1
  406. package/build-module/components/inserter/preview-panel.js +5 -3
  407. package/build-module/components/inserter/preview-panel.js.map +1 -1
  408. package/build-module/components/inserter/search-results.js +2 -6
  409. package/build-module/components/inserter/search-results.js.map +1 -1
  410. package/build-module/components/inserter-list-item/index.js +1 -9
  411. package/build-module/components/inserter-list-item/index.js.map +1 -1
  412. package/build-module/components/inspector-controls/fill.js +14 -2
  413. package/build-module/components/inspector-controls/fill.js.map +1 -1
  414. package/build-module/components/inspector-controls/fill.native.js +13 -1
  415. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  416. package/build-module/components/inspector-controls/groups.js +7 -1
  417. package/build-module/components/inspector-controls/groups.js.map +1 -1
  418. package/build-module/components/inspector-controls/index.js +2 -2
  419. package/build-module/components/inspector-controls/index.js.map +1 -1
  420. package/build-module/components/inspector-controls/slot.js +13 -1
  421. package/build-module/components/inspector-controls/slot.js.map +1 -1
  422. package/build-module/components/inspector-controls/slot.native.js +13 -1
  423. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  424. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  425. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  426. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  427. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  428. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +33 -0
  429. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
  430. package/build-module/components/inspector-controls-tabs/settings-tab.js +2 -1
  431. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  432. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  433. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  434. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +20 -22
  435. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  436. package/build-module/components/justify-content-control/ui.js +9 -2
  437. package/build-module/components/justify-content-control/ui.js.map +1 -1
  438. package/build-module/components/link-control/index.js +45 -16
  439. package/build-module/components/link-control/index.js.map +1 -1
  440. package/build-module/components/link-control/search-input.js +1 -0
  441. package/build-module/components/link-control/search-input.js.map +1 -1
  442. package/build-module/components/list-view/block.js +1 -1
  443. package/build-module/components/list-view/block.js.map +1 -1
  444. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  445. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  446. package/build-module/components/media-upload/index.native.js +4 -1
  447. package/build-module/components/media-upload/index.native.js.map +1 -1
  448. package/build-module/components/off-canvas-editor/appender.js +46 -36
  449. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  450. package/build-module/components/off-canvas-editor/block-contents.js +37 -7
  451. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  452. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  453. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  454. package/build-module/components/off-canvas-editor/block.js +15 -52
  455. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  456. package/build-module/components/off-canvas-editor/branch.js +23 -11
  457. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  458. package/build-module/components/off-canvas-editor/index.js +15 -16
  459. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  460. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  461. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  462. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  463. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  464. package/build-module/components/provider/index.js +17 -8
  465. package/build-module/components/provider/index.js.map +1 -1
  466. package/build-module/components/provider/index.native.js +4 -4
  467. package/build-module/components/provider/index.native.js.map +1 -1
  468. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  469. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  470. package/build-module/components/rich-text/use-enter.js +4 -5
  471. package/build-module/components/rich-text/use-enter.js.map +1 -1
  472. package/build-module/components/rich-text/utils.js +1 -1
  473. package/build-module/components/rich-text/utils.js.map +1 -1
  474. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  475. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  476. package/build-module/components/tool-selector/index.js +3 -1
  477. package/build-module/components/tool-selector/index.js.map +1 -1
  478. package/build-module/components/url-input/button.js +1 -0
  479. package/build-module/components/url-input/button.js.map +1 -1
  480. package/build-module/components/url-input/index.js +14 -1
  481. package/build-module/components/url-input/index.js.map +1 -1
  482. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  483. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  484. package/build-module/components/url-popover/link-editor.js +1 -0
  485. package/build-module/components/url-popover/link-editor.js.map +1 -1
  486. package/build-module/components/use-block-display-information/index.js +1 -1
  487. package/build-module/components/use-block-display-information/index.js.map +1 -1
  488. package/build-module/components/use-paste-styles/index.js +174 -0
  489. package/build-module/components/use-paste-styles/index.js.map +1 -0
  490. package/build-module/components/writing-flow/use-arrow-nav.js +22 -29
  491. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  492. package/build-module/experiments.js +25 -0
  493. package/build-module/experiments.js.map +1 -0
  494. package/build-module/experiments.native.js +23 -0
  495. package/build-module/experiments.native.js.map +1 -0
  496. package/build-module/hooks/anchor.js +2 -1
  497. package/build-module/hooks/anchor.js.map +1 -1
  498. package/build-module/hooks/border.js +1 -1
  499. package/build-module/hooks/border.js.map +1 -1
  500. package/build-module/hooks/child-layout.js +5 -1
  501. package/build-module/hooks/child-layout.js.map +1 -1
  502. package/build-module/hooks/color-panel.js +1 -1
  503. package/build-module/hooks/color-panel.js.map +1 -1
  504. package/build-module/hooks/color.js +3 -3
  505. package/build-module/hooks/color.js.map +1 -1
  506. package/build-module/hooks/custom-class-name.js +2 -1
  507. package/build-module/hooks/custom-class-name.js.map +1 -1
  508. package/build-module/hooks/dimensions.js +6 -5
  509. package/build-module/hooks/dimensions.js.map +1 -1
  510. package/build-module/hooks/index.js +1 -0
  511. package/build-module/hooks/index.js.map +1 -1
  512. package/build-module/hooks/margin.js +1 -0
  513. package/build-module/hooks/margin.js.map +1 -1
  514. package/build-module/hooks/metadata.js +1 -1
  515. package/build-module/hooks/metadata.js.map +1 -1
  516. package/build-module/hooks/padding.js +1 -0
  517. package/build-module/hooks/padding.js.map +1 -1
  518. package/build-module/hooks/position.js +354 -0
  519. package/build-module/hooks/position.js.map +1 -0
  520. package/build-module/hooks/supports.js +257 -0
  521. package/build-module/hooks/supports.js.map +1 -0
  522. package/build-module/hooks/typography.js +1 -1
  523. package/build-module/hooks/typography.js.map +1 -1
  524. package/build-module/hooks/use-color-props.js +3 -3
  525. package/build-module/hooks/use-color-props.js.map +1 -1
  526. package/build-module/hooks/utils.js +70 -4
  527. package/build-module/hooks/utils.js.map +1 -1
  528. package/build-module/index.js +1 -0
  529. package/build-module/index.js.map +1 -1
  530. package/build-module/layouts/constrained.js +3 -0
  531. package/build-module/layouts/constrained.js.map +1 -1
  532. package/build-module/layouts/flex.js +60 -10
  533. package/build-module/layouts/flex.js.map +1 -1
  534. package/build-module/layouts/flow.js +0 -18
  535. package/build-module/layouts/flow.js.map +1 -1
  536. package/build-module/store/actions.js +2 -26
  537. package/build-module/store/actions.js.map +1 -1
  538. package/build-module/store/defaults.js +5 -2
  539. package/build-module/store/defaults.js.map +1 -1
  540. package/build-module/store/index.js +8 -2
  541. package/build-module/store/index.js.map +1 -1
  542. package/build-module/store/private-actions.js +66 -0
  543. package/build-module/store/private-actions.js.map +1 -0
  544. package/build-module/store/private-selectors.js +11 -0
  545. package/build-module/store/private-selectors.js.map +1 -0
  546. package/build-module/store/reducer.js +7 -3
  547. package/build-module/store/reducer.js.map +1 -1
  548. package/build-module/store/selectors.js +55 -30
  549. package/build-module/store/selectors.js.map +1 -1
  550. package/build-module/utils/block-variation-transforms.js +1 -1
  551. package/build-module/utils/block-variation-transforms.js.map +1 -1
  552. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  553. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  554. package/build-module/utils/transform-styles/index.js +1 -6
  555. package/build-module/utils/transform-styles/index.js.map +1 -1
  556. package/build-style/content-rtl.css +340 -3
  557. package/build-style/content.css +340 -3
  558. package/build-style/style-rtl.css +125 -272
  559. package/build-style/style.css +125 -272
  560. package/package.json +30 -29
  561. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  562. package/src/components/alignment-control/test/index.js +5 -15
  563. package/src/components/alignment-control/ui.js +1 -1
  564. package/src/components/autocomplete/index.js +3 -6
  565. package/src/components/block-actions/index.js +5 -0
  566. package/src/components/block-alignment-control/test/index.js +3 -11
  567. package/src/components/block-alignment-matrix-control/index.js +1 -2
  568. package/src/components/block-card/index.js +1 -4
  569. package/src/components/block-content-overlay/content.scss +4 -4
  570. package/src/components/block-edit/index.js +15 -1
  571. package/src/components/block-icon/content.scss +31 -0
  572. package/src/components/block-inspector/index.js +15 -17
  573. package/src/components/block-list/use-in-between-inserter.js +5 -0
  574. package/src/components/block-lock/modal.js +0 -1
  575. package/src/components/block-mover/mover-description.js +2 -2
  576. package/src/components/block-mover/stories/index.js +3 -3
  577. package/src/components/block-navigation/dropdown.js +1 -1
  578. package/src/components/block-pattern-setup/index.js +1 -4
  579. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  580. package/src/components/block-patterns-list/index.js +29 -3
  581. package/src/components/block-preview/README.md +9 -9
  582. package/src/components/block-preview/auto.js +10 -14
  583. package/src/components/block-preview/content.scss +23 -0
  584. package/src/components/block-preview/index.js +40 -10
  585. package/src/components/block-preview/style.scss +0 -23
  586. package/src/components/block-selection-clearer/index.js +1 -1
  587. package/src/components/block-selection-clearer/test/index.js +6 -6
  588. package/src/components/block-settings/container.native.js +7 -26
  589. package/src/components/block-settings-menu/block-settings-dropdown.js +14 -2
  590. package/src/components/block-settings-menu-controls/index.js +2 -10
  591. package/src/components/block-styles/index.js +4 -1
  592. package/src/components/block-switcher/test/index.js +43 -44
  593. package/src/components/block-switcher/utils.js +1 -1
  594. package/src/components/block-tools/selected-block-popover.js +77 -80
  595. package/src/components/block-tools/style.scss +0 -1
  596. package/src/components/block-tools/use-block-toolbar-popover-props.js +68 -12
  597. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  598. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  599. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  600. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  601. package/src/components/button-block-appender/{style.scss → content.scss} +0 -0
  602. package/src/components/color-style-selector/index.js +1 -1
  603. package/src/components/colors/test/with-colors.js +2 -8
  604. package/src/components/date-format-picker/index.js +23 -24
  605. package/src/components/date-format-picker/style.scss +0 -6
  606. package/src/components/default-block-appender/content.scss +18 -0
  607. package/src/components/default-block-appender/test/index.js +2 -8
  608. package/src/components/default-style-picker/index.js +1 -0
  609. package/src/components/font-family/index.js +1 -6
  610. package/src/components/font-sizes/fluid-utils.js +1 -1
  611. package/src/components/font-sizes/utils.js +1 -1
  612. package/src/components/font-sizes/with-font-sizes.js +33 -33
  613. package/src/components/global-styles/README.md +77 -0
  614. package/src/components/global-styles/context.js +15 -0
  615. package/src/components/global-styles/hooks.js +145 -0
  616. package/src/components/global-styles/index.js +7 -0
  617. package/src/components/global-styles/test/typography-utils.js +393 -0
  618. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  619. package/src/components/global-styles/test/utils.js +206 -0
  620. package/src/components/global-styles/typography-utils.js +87 -0
  621. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  622. package/src/components/global-styles/utils.js +373 -0
  623. package/src/components/height-control/README.md +55 -0
  624. package/src/components/height-control/index.js +13 -1
  625. package/src/components/iframe/index.js +52 -19
  626. package/src/components/iframe/use-compatibility-styles.js +6 -0
  627. package/src/components/image-editor/constants.js +1 -1
  628. package/src/components/image-editor/context.js +5 -9
  629. package/src/components/image-editor/cropper.js +3 -1
  630. package/src/components/image-editor/index.js +13 -4
  631. package/src/components/image-editor/use-transform-image.js +14 -55
  632. package/src/components/image-size-control/index.js +2 -6
  633. package/src/components/index.js +2 -6
  634. package/src/components/inner-blocks/index.js +29 -33
  635. package/src/components/inner-blocks/index.native.js +27 -47
  636. package/src/components/inner-blocks/use-block-context.js +47 -0
  637. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  638. package/src/components/inserter/block-patterns-tab.js +14 -4
  639. package/src/components/inserter/block-types-tab.js +3 -4
  640. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  641. package/src/components/inserter/index.js +46 -42
  642. package/src/components/inserter/media-tab/hooks.js +167 -65
  643. package/src/components/inserter/media-tab/media-list.js +94 -26
  644. package/src/components/inserter/media-tab/media-panel.js +9 -20
  645. package/src/components/inserter/media-tab/media-tab.js +12 -4
  646. package/src/components/inserter/media-tab/utils.js +20 -10
  647. package/src/components/inserter/menu.js +9 -4
  648. package/src/components/inserter/preview-panel.js +4 -2
  649. package/src/components/inserter/search-results.js +2 -6
  650. package/src/components/inserter/stories/index.js +9 -9
  651. package/src/components/inserter/style.scss +58 -11
  652. package/src/components/inserter/test/__snapshots__/index.native.js.snap +117 -0
  653. package/src/components/inserter/test/index.native.js +255 -1
  654. package/src/components/inserter-list-item/index.js +0 -7
  655. package/src/components/inspector-controls/README.md +3 -7
  656. package/src/components/inspector-controls/fill.js +15 -1
  657. package/src/components/inspector-controls/fill.native.js +14 -1
  658. package/src/components/inspector-controls/groups.js +5 -0
  659. package/src/components/inspector-controls/index.js +2 -6
  660. package/src/components/inspector-controls/slot.js +14 -1
  661. package/src/components/inspector-controls/slot.native.js +14 -1
  662. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  663. package/src/components/inspector-controls-tabs/index.js +2 -4
  664. package/src/components/inspector-controls-tabs/position-controls-panel.js +37 -0
  665. package/src/components/inspector-controls-tabs/settings-tab.js +2 -0
  666. package/src/components/inspector-controls-tabs/style.scss +15 -0
  667. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  668. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +24 -18
  669. package/src/components/justify-content-control/ui.js +9 -0
  670. package/src/components/link-control/index.js +59 -23
  671. package/src/components/link-control/search-input.js +1 -0
  672. package/src/components/link-control/style.scss +8 -24
  673. package/src/components/link-control/test/index.js +134 -5
  674. package/src/components/list-view/block.js +1 -1
  675. package/src/components/list-view/style.scss +13 -3
  676. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  677. package/src/components/media-replace-flow/test/index.js +4 -12
  678. package/src/components/media-upload/index.native.js +2 -2
  679. package/src/components/off-canvas-editor/README.md +2 -2
  680. package/src/components/off-canvas-editor/appender.js +82 -76
  681. package/src/components/off-canvas-editor/block-contents.js +84 -23
  682. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  683. package/src/components/off-canvas-editor/block.js +31 -102
  684. package/src/components/off-canvas-editor/branch.js +32 -5
  685. package/src/components/off-canvas-editor/index.js +19 -24
  686. package/src/components/off-canvas-editor/link-ui.js +2 -2
  687. package/src/components/off-canvas-editor/style.scss +5 -1
  688. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  689. package/src/components/provider/index.js +33 -11
  690. package/src/components/provider/index.native.js +4 -3
  691. package/src/components/provider/test/experimental-provider.js +94 -0
  692. package/src/components/provider/test/use-block-sync.js +10 -0
  693. package/src/components/responsive-block-control/test/index.js +1 -5
  694. package/src/components/rich-text/use-before-input-rules.js +10 -2
  695. package/src/components/rich-text/use-enter.js +4 -4
  696. package/src/components/rich-text/utils.js +1 -1
  697. package/src/components/spacing-sizes-control/utils.js +2 -7
  698. package/src/components/tool-selector/index.js +1 -1
  699. package/src/components/url-input/README.md +5 -0
  700. package/src/components/url-input/button.js +1 -0
  701. package/src/components/url-input/index.js +15 -1
  702. package/src/components/url-input/test/button.js +24 -24
  703. package/src/components/url-popover/image-url-input-ui.js +7 -8
  704. package/src/components/url-popover/link-editor.js +1 -0
  705. package/src/components/url-popover/style.scss +0 -10
  706. package/src/components/use-block-display-information/index.js +1 -1
  707. package/src/components/use-paste-styles/index.js +230 -0
  708. package/src/components/warning/{style.scss → content.scss} +0 -0
  709. package/src/components/warning/test/index.js +1 -5
  710. package/src/components/writing-flow/use-arrow-nav.js +20 -28
  711. package/src/content.scss +8 -0
  712. package/src/experiments.js +27 -0
  713. package/src/experiments.native.js +25 -0
  714. package/src/hooks/anchor.js +2 -1
  715. package/src/hooks/border.js +1 -1
  716. package/src/hooks/child-layout.js +6 -1
  717. package/src/hooks/color-panel.js +1 -1
  718. package/src/hooks/color.js +3 -3
  719. package/src/hooks/custom-class-name.js +2 -1
  720. package/src/hooks/dimensions.js +6 -6
  721. package/src/hooks/index.js +1 -0
  722. package/src/hooks/layout.scss +4 -0
  723. package/src/hooks/margin.js +1 -0
  724. package/src/hooks/metadata.js +1 -2
  725. package/src/hooks/padding.js +1 -0
  726. package/src/hooks/position.js +391 -0
  727. package/src/hooks/position.scss +18 -0
  728. package/src/hooks/supports.js +302 -0
  729. package/src/hooks/test/__snapshots__/align.native.js.snap +73 -0
  730. package/src/hooks/test/align.native.js +133 -0
  731. package/src/hooks/test/utils.js +104 -0
  732. package/src/hooks/typography.js +1 -1
  733. package/src/hooks/use-color-props.js +3 -3
  734. package/src/hooks/utils.js +68 -2
  735. package/src/index.js +1 -0
  736. package/src/layouts/constrained.js +3 -0
  737. package/src/layouts/flex.js +66 -14
  738. package/src/layouts/flow.js +0 -9
  739. package/src/store/actions.js +2 -26
  740. package/src/store/defaults.js +7 -2
  741. package/src/store/index.js +8 -2
  742. package/src/store/private-actions.js +65 -0
  743. package/src/store/private-selectors.js +10 -0
  744. package/src/store/reducer.js +8 -3
  745. package/src/store/selectors.js +108 -57
  746. package/src/store/test/actions.js +0 -18
  747. package/src/store/test/private-actions.js +22 -0
  748. package/src/store/test/private-selectors.js +24 -0
  749. package/src/store/test/reducer.js +45 -3
  750. package/src/store/test/selectors.js +64 -39
  751. package/src/style.scss +5 -6
  752. package/src/utils/block-variation-transforms.js +1 -1
  753. package/src/utils/parse-css-unit-to-px.js +3 -1
  754. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  755. package/src/utils/transform-styles/index.js +1 -6
  756. package/build/components/inner-blocks/get-block-context.js +0 -45
  757. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  758. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  759. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  760. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  761. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  762. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  763. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  764. package/src/components/inner-blocks/get-block-context.js +0 -39
  765. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
5
- import { useEffect, useState } from '@wordpress/element';
4
+ import { useEffect, useState, useRef, useMemo } from '@wordpress/element';
6
5
  import { useSelect } from '@wordpress/data';
7
6
 
8
7
  /**
@@ -10,80 +9,183 @@ import { useSelect } from '@wordpress/data';
10
9
  */
11
10
  import { store as blockEditorStore } from '../../../store';
12
11
 
13
- export function useMediaResults( options = {} ) {
14
- const [ results, setResults ] = useState();
15
- const settings = useSelect(
16
- ( select ) => select( blockEditorStore ).getSettings(),
17
- []
18
- );
12
+ /**
13
+ * Interface for inserter media requests.
14
+ *
15
+ * @typedef {Object} InserterMediaRequest
16
+ * @property {number} per_page How many items to fetch per page.
17
+ * @property {string} search The search term to use for filtering the results.
18
+ */
19
+
20
+ /**
21
+ * Interface for inserter media responses. Any media resource should
22
+ * map their response to this interface, in order to create the core
23
+ * WordPress media blocks (image, video, audio).
24
+ *
25
+ * @typedef {Object} InserterMediaItem
26
+ * @property {string} title The title of the media item.
27
+ * @property {string} url The source url of the media item.
28
+ * @property {string} [previewUrl] The preview source url of the media item to display in the media list.
29
+ * @property {number} [id] The WordPress id of the media item.
30
+ * @property {number|string} [sourceId] The id of the media item from external source.
31
+ * @property {string} [alt] The alt text of the media item.
32
+ * @property {string} [caption] The caption of the media item.
33
+ */
34
+
35
+ /**
36
+ * Fetches media items based on the provided category.
37
+ * Each media category is responsible for providing a `fetch` function.
38
+ *
39
+ * @param {Object} category The media category to fetch results for.
40
+ * @param {InserterMediaRequest} query The query args to use for the request.
41
+ * @return {InserterMediaItem[]} The media results.
42
+ */
43
+ export function useMediaResults( category, query = {} ) {
44
+ const [ mediaList, setMediaList ] = useState();
45
+ const [ isLoading, setIsLoading ] = useState( false );
46
+ // We need to keep track of the last request made because
47
+ // multiple request can be fired without knowing the order
48
+ // of resolution, and we need to ensure we are showing
49
+ // the results of the last request.
50
+ // In the future we could use AbortController to cancel previous
51
+ // requests, but we don't for now as it involves adding support
52
+ // for this to `core-data` package.
53
+ const lastRequest = useRef();
19
54
  useEffect( () => {
20
55
  ( async () => {
21
- setResults();
22
- const _media = await settings?.__unstableFetchMedia( options );
23
- if ( _media ) setResults( _media );
56
+ const key = JSON.stringify( {
57
+ category: category.name,
58
+ ...query,
59
+ } );
60
+ lastRequest.current = key;
61
+ setIsLoading( true );
62
+ setMediaList( [] ); // Empty the previous results.
63
+ const _media = await category.fetch?.( query );
64
+ if ( key === lastRequest.current ) {
65
+ setMediaList( _media );
66
+ setIsLoading( false );
67
+ }
24
68
  } )();
25
- }, Object.values( options ) );
26
- return results;
69
+ }, [ category.name, ...Object.values( query ) ] );
70
+ return { mediaList, isLoading };
71
+ }
72
+
73
+ function useInserterMediaCategories() {
74
+ const {
75
+ inserterMediaCategories,
76
+ allowedMimeTypes,
77
+ enableOpenverseMediaCategory,
78
+ } = useSelect( ( select ) => {
79
+ const settings = select( blockEditorStore ).getSettings();
80
+ return {
81
+ inserterMediaCategories: settings.inserterMediaCategories,
82
+ allowedMimeTypes: settings.allowedMimeTypes,
83
+ enableOpenverseMediaCategory: settings.enableOpenverseMediaCategory,
84
+ };
85
+ }, [] );
86
+ // The allowed `mime_types` can be altered by `upload_mimes` filter and restrict
87
+ // some of them. In this case we shouldn't add the category to the available media
88
+ // categories list in the inserter.
89
+ const allowedCategories = useMemo( () => {
90
+ if ( ! inserterMediaCategories || ! allowedMimeTypes ) {
91
+ return;
92
+ }
93
+ return inserterMediaCategories.filter( ( category ) => {
94
+ // Check if Openverse category is enabled.
95
+ if (
96
+ ! enableOpenverseMediaCategory &&
97
+ category.name === 'openverse'
98
+ ) {
99
+ return false;
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
+ return Object.values( allowedMimeTypes ).some( ( mimeType ) =>
109
+ mimeType.startsWith( `${ category.mediaType }/` )
110
+ );
111
+ } );
112
+ }, [
113
+ inserterMediaCategories,
114
+ allowedMimeTypes,
115
+ enableOpenverseMediaCategory,
116
+ ] );
117
+ return allowedCategories;
27
118
  }
28
119
 
29
- const MEDIA_CATEGORIES = [
30
- { label: __( 'Images' ), name: 'images', mediaType: 'image' },
31
- { label: __( 'Videos' ), name: 'videos', mediaType: 'video' },
32
- { label: __( 'Audio' ), name: 'audio', mediaType: 'audio' },
33
- ];
34
120
  export function useMediaCategories( rootClientId ) {
35
121
  const [ categories, setCategories ] = useState( [] );
36
- const { canInsertImage, canInsertVideo, canInsertAudio, fetchMedia } =
37
- useSelect(
38
- ( select ) => {
39
- const { canInsertBlockType, getSettings } =
40
- select( blockEditorStore );
41
- return {
42
- fetchMedia: getSettings().__unstableFetchMedia,
43
- canInsertImage: canInsertBlockType(
44
- 'core/image',
45
- rootClientId
46
- ),
47
- canInsertVideo: canInsertBlockType(
48
- 'core/video',
49
- rootClientId
50
- ),
51
- canInsertAudio: canInsertBlockType(
52
- 'core/audio',
53
- rootClientId
54
- ),
55
- };
56
- },
57
- [ rootClientId ]
58
- );
122
+ const { canInsertImage, canInsertVideo, canInsertAudio } = useSelect(
123
+ ( select ) => {
124
+ const { canInsertBlockType } = select( blockEditorStore );
125
+ return {
126
+ canInsertImage: canInsertBlockType(
127
+ 'core/image',
128
+ rootClientId
129
+ ),
130
+ canInsertVideo: canInsertBlockType(
131
+ 'core/video',
132
+ rootClientId
133
+ ),
134
+ canInsertAudio: canInsertBlockType(
135
+ 'core/audio',
136
+ rootClientId
137
+ ),
138
+ };
139
+ },
140
+ [ rootClientId ]
141
+ );
142
+ const inserterMediaCategories = useInserterMediaCategories();
59
143
  useEffect( () => {
60
144
  ( async () => {
61
- // If `__unstableFetchMedia` is not defined in block
62
- // editor settings, do not set any media categories.
63
- if ( ! fetchMedia ) return;
64
- const query = {
65
- context: 'view',
66
- per_page: 1,
67
- _fields: [ 'id' ],
68
- };
69
- const [ image, video, audio ] = await Promise.allSettled( [
70
- fetchMedia( { ...query, media_type: 'image' } ),
71
- fetchMedia( { ...query, media_type: 'video' } ),
72
- fetchMedia( { ...query, media_type: 'audio' } ),
73
- ] );
74
- // The `value` property is only present if the promise's status is "fulfilled".
75
- const showImage = canInsertImage && !! image.value?.length;
76
- const showVideo = canInsertVideo && !! video.value?.length;
77
- const showAudio = canInsertAudio && !! audio.value?.length;
78
- setCategories(
79
- MEDIA_CATEGORIES.filter(
80
- ( { mediaType } ) =>
81
- ( mediaType === 'image' && showImage ) ||
82
- ( mediaType === 'video' && showVideo ) ||
83
- ( mediaType === 'audio' && showAudio )
145
+ const _categories = [];
146
+ // If `inserterMediaCategories` is not defined in
147
+ // block editor settings, do not show any media categories.
148
+ if ( ! inserterMediaCategories ) {
149
+ return;
150
+ }
151
+ // Loop through categories to check if they have at least one media item.
152
+ const categoriesHaveMedia = new Map(
153
+ await Promise.all(
154
+ inserterMediaCategories.map( async ( category ) => {
155
+ // Some sources are external and we don't need to make a request.
156
+ if ( category.isExternalResource ) {
157
+ return [ category.name, true ];
158
+ }
159
+ const results = await category.fetch( { per_page: 1 } );
160
+ return [ category.name, !! results.length ];
161
+ } )
84
162
  )
85
163
  );
164
+ // We need to filter out categories that don't have any media items or
165
+ // whose corresponding block type is not allowed to be inserted, based
166
+ // on the category's `mediaType`.
167
+ const canInsertMediaType = {
168
+ image: canInsertImage,
169
+ video: canInsertVideo,
170
+ audio: canInsertAudio,
171
+ };
172
+ inserterMediaCategories.forEach( ( category ) => {
173
+ if (
174
+ canInsertMediaType[ category.mediaType ] &&
175
+ categoriesHaveMedia.get( category.name )
176
+ ) {
177
+ _categories.push( category );
178
+ }
179
+ } );
180
+ if ( !! _categories.length ) {
181
+ setCategories( _categories );
182
+ }
86
183
  } )();
87
- }, [ canInsertImage, canInsertVideo, canInsertAudio, fetchMedia ] );
184
+ }, [
185
+ canInsertImage,
186
+ canInsertVideo,
187
+ canInsertAudio,
188
+ inserterMediaCategories,
189
+ ] );
88
190
  return categories;
89
191
  }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -6,10 +11,14 @@ import {
6
11
  __unstableUseCompositeState as useCompositeState,
7
12
  __unstableCompositeItem as CompositeItem,
8
13
  Tooltip,
14
+ DropdownMenu,
15
+ MenuGroup,
16
+ MenuItem,
9
17
  } from '@wordpress/components';
10
- import { __ } from '@wordpress/i18n';
11
- import { useMemo, useCallback } from '@wordpress/element';
18
+ import { __, sprintf } from '@wordpress/i18n';
19
+ import { useMemo, useCallback, useState } from '@wordpress/element';
12
20
  import { cloneBlock } from '@wordpress/blocks';
21
+ import { moreVertical, external } from '@wordpress/icons';
13
22
 
14
23
  /**
15
24
  * Internal dependencies
@@ -17,39 +26,98 @@ import { cloneBlock } from '@wordpress/blocks';
17
26
  import InserterDraggableBlocks from '../../inserter-draggable-blocks';
18
27
  import { getBlockAndPreviewFromMedia } from './utils';
19
28
 
20
- function MediaPreview( { media, onClick, composite, mediaType } ) {
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 );
21
70
  const [ block, preview ] = useMemo(
22
- () => getBlockAndPreviewFromMedia( media, mediaType ),
23
- [ media, mediaType ]
71
+ () => getBlockAndPreviewFromMedia( media, category.mediaType ),
72
+ [ media, category.mediaType ]
24
73
  );
25
74
  const title = media.title?.rendered || media.title;
26
- const baseCssClass = 'block-editor-inserter__media-list';
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 ), [] );
27
83
  return (
28
84
  <InserterDraggableBlocks isEnabled={ true } blocks={ [ block ] }>
29
85
  { ( { draggable, onDragStart, onDragEnd } ) => (
30
86
  <div
31
- className={ `${ baseCssClass }__list-item` }
87
+ className={ classnames(
88
+ 'block-editor-inserter__media-list__list-item',
89
+ {
90
+ 'is-hovered': isHovered,
91
+ }
92
+ ) }
32
93
  draggable={ draggable }
33
94
  onDragStart={ onDragStart }
34
95
  onDragEnd={ onDragEnd }
35
96
  >
36
- <Tooltip text={ title }>
37
- <CompositeItem
38
- role="option"
39
- as="div"
40
- { ...composite }
41
- className={ `${ baseCssClass }__item` }
42
- onClick={ () => {
43
- onClick( block );
44
- } }
45
- aria-label={ title }
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 }
46
103
  >
47
- <div
48
- className={ `${ baseCssClass }__item-preview` }
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 }
49
111
  >
50
- { preview }
51
- </div>
52
- </CompositeItem>
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>
53
121
  </Tooltip>
54
122
  </div>
55
123
  ) }
@@ -59,7 +127,7 @@ function MediaPreview( { media, onClick, composite, mediaType } ) {
59
127
 
60
128
  function MediaList( {
61
129
  mediaList,
62
- mediaType,
130
+ category,
63
131
  onClick,
64
132
  label = __( 'Media List' ),
65
133
  } ) {
@@ -77,11 +145,11 @@ function MediaList( {
77
145
  className="block-editor-inserter__media-list"
78
146
  aria-label={ label }
79
147
  >
80
- { mediaList.map( ( media ) => (
148
+ { mediaList.map( ( media, index ) => (
81
149
  <MediaPreview
82
- key={ media.id }
150
+ key={ media.id || media.sourceId || index }
83
151
  media={ media }
84
- mediaType={ mediaType }
152
+ category={ category }
85
153
  onClick={ onPreviewClick }
86
154
  composite={ composite }
87
155
  />
@@ -4,7 +4,7 @@
4
4
  import { useRef, useEffect } from '@wordpress/element';
5
5
  import { Spinner, SearchControl } from '@wordpress/components';
6
6
  import { focus } from '@wordpress/dom';
7
- import { __, sprintf } from '@wordpress/i18n';
7
+ import { __ } from '@wordpress/i18n';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -38,44 +38,33 @@ export function MediaCategoryDialog( { rootClientId, onInsert, category } ) {
38
38
 
39
39
  export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
40
40
  const [ search, setSearch, debouncedSearch ] = useDebouncedInput();
41
- const mediaList = useMediaResults( {
41
+ const { mediaList, isLoading } = useMediaResults( category, {
42
42
  per_page: !! debouncedSearch ? 20 : INITIAL_MEDIA_ITEMS_PER_PAGE,
43
- media_type: category.mediaType,
44
43
  search: debouncedSearch,
45
- orderBy: !! debouncedSearch ? 'relevance' : 'date',
46
44
  } );
47
45
  const baseCssClass = 'block-editor-inserter__media-panel';
46
+ const searchLabel = category.labels.search_items || __( 'Search' );
48
47
  return (
49
48
  <div className={ baseCssClass }>
50
49
  <SearchControl
51
50
  className={ `${ baseCssClass }-search` }
52
51
  onChange={ setSearch }
53
52
  value={ search }
54
- label={ sprintf(
55
- /* translators: %s: Name of the media category(ex. 'images, videos'). */
56
- __( 'Search %s' ),
57
- category.label.toLocaleLowerCase()
58
- ) }
59
- placeholder={ sprintf(
60
- /* translators: %s: Name of the media category(ex. 'images, videos'). */
61
- __( 'Search %s' ),
62
- category.label.toLocaleLowerCase()
63
- ) }
53
+ label={ searchLabel }
54
+ placeholder={ searchLabel }
64
55
  />
65
- { ! mediaList && (
56
+ { isLoading && (
66
57
  <div className={ `${ baseCssClass }-spinner` }>
67
58
  <Spinner />
68
59
  </div>
69
60
  ) }
70
- { Array.isArray( mediaList ) && ! mediaList.length && (
71
- <InserterNoResults />
72
- ) }
73
- { !! mediaList?.length && (
61
+ { ! isLoading && ! mediaList?.length && <InserterNoResults /> }
62
+ { ! isLoading && !! mediaList?.length && (
74
63
  <MediaList
75
64
  rootClientId={ rootClientId }
76
65
  onClick={ onInsert }
77
66
  mediaList={ mediaList }
78
- mediaType={ category.mediaType }
67
+ category={ category }
79
68
  />
80
69
  ) }
81
70
  </div>
@@ -15,7 +15,7 @@ import {
15
15
  FlexBlock,
16
16
  Button,
17
17
  } from '@wordpress/components';
18
- import { useCallback } from '@wordpress/element';
18
+ import { useCallback, useMemo } from '@wordpress/element';
19
19
  import { Icon, chevronRight } from '@wordpress/icons';
20
20
 
21
21
  /**
@@ -49,6 +49,14 @@ function MediaTab( {
49
49
  },
50
50
  [ onInsert ]
51
51
  );
52
+ const mobileMediaCategories = useMemo(
53
+ () =>
54
+ mediaCategories.map( ( mediaCategory ) => ( {
55
+ ...mediaCategory,
56
+ label: mediaCategory.labels.name,
57
+ } ) ),
58
+ [ mediaCategories ]
59
+ );
52
60
  return (
53
61
  <>
54
62
  { ! isMobile && (
@@ -70,7 +78,7 @@ function MediaTab( {
70
78
  mediaCategory,
71
79
  }
72
80
  ) }
73
- aria-label={ mediaCategory.label }
81
+ aria-label={ mediaCategory.labels.name }
74
82
  aria-current={
75
83
  mediaCategory === selectedCategory
76
84
  ? 'true'
@@ -79,7 +87,7 @@ function MediaTab( {
79
87
  >
80
88
  <HStack>
81
89
  <FlexBlock>
82
- { mediaCategory.label }
90
+ { mediaCategory.labels.name }
83
91
  </FlexBlock>
84
92
  <Icon icon={ chevronRight } />
85
93
  </HStack>
@@ -118,7 +126,7 @@ function MediaTab( {
118
126
  </div>
119
127
  ) }
120
128
  { isMobile && (
121
- <MobileTabNavigation categories={ mediaCategories }>
129
+ <MobileTabNavigation categories={ mobileMediaCategories }>
122
130
  { ( category ) => (
123
131
  <MediaCategoryPanel
124
132
  onInsert={ onInsert }
@@ -5,19 +5,23 @@ import { createBlock } from '@wordpress/blocks';
5
5
 
6
6
  const mediaTypeTag = { image: 'img', video: 'video', audio: 'audio' };
7
7
 
8
+ /** @typedef {import('./hooks').InserterMediaItem} InserterMediaItem */
9
+
10
+ /**
11
+ * Creates a block and a preview element from a media object.
12
+ *
13
+ * @param {InserterMediaItem} media The media object to create the block from.
14
+ * @param {('image'|'audio'|'video')} mediaType The media type to create the block for.
15
+ * @return {[WPBlock, JSX.Element]} An array containing the block and the preview element.
16
+ */
8
17
  export function getBlockAndPreviewFromMedia( media, mediaType ) {
9
18
  // Add the common attributes between the different media types.
10
19
  const attributes = {
11
- id: media.id,
20
+ id: media.id || undefined,
21
+ caption: media.caption || undefined,
12
22
  };
13
- // Some props are named differently between the Media REST API and Media Library API.
14
- // For example `source_url` is used in the former and `url` is used in the latter.
15
- const mediaSrc = media.source_url || media.url;
16
- const alt = media.alt_text || media.alt || undefined;
17
- const caption = media.caption?.raw || media.caption;
18
- if ( caption && typeof caption === 'string' ) {
19
- attributes.caption = caption;
20
- }
23
+ const mediaSrc = media.url;
24
+ const alt = media.alt || undefined;
21
25
  if ( mediaType === 'image' ) {
22
26
  attributes.url = mediaSrc;
23
27
  attributes.alt = alt;
@@ -27,10 +31,16 @@ export function getBlockAndPreviewFromMedia( media, mediaType ) {
27
31
  const PreviewTag = mediaTypeTag[ mediaType ];
28
32
  const preview = (
29
33
  <PreviewTag
30
- src={ mediaSrc }
34
+ src={ media.previewUrl || mediaSrc }
31
35
  alt={ alt }
32
36
  controls={ mediaType === 'audio' ? true : undefined }
33
37
  inert="true"
38
+ onError={ ( { currentTarget } ) => {
39
+ // Fall back to the media source if the preview cannot be loaded.
40
+ if ( currentTarget.src === media.previewUrl ) {
41
+ currentTarget.src = mediaSrc;
42
+ }
43
+ } }
34
44
  />
35
45
  );
36
46
  return [ createBlock( `core/${ mediaType }`, attributes ), preview ];
@@ -67,20 +67,24 @@ function InserterMenu(
67
67
  insertionIndex: __experimentalInsertionIndex,
68
68
  shouldFocusBlock,
69
69
  } );
70
- const { showPatterns, hasReusableBlocks } = useSelect(
70
+ const { showPatterns, inserterItems } = useSelect(
71
71
  ( select ) => {
72
- const { __experimentalGetAllowedPatterns, getSettings } =
72
+ const { __experimentalGetAllowedPatterns, getInserterItems } =
73
73
  select( blockEditorStore );
74
74
  return {
75
75
  showPatterns: !! __experimentalGetAllowedPatterns(
76
76
  destinationRootClientId
77
77
  ).length,
78
- hasReusableBlocks:
79
- !! getSettings().__experimentalReusableBlocks?.length,
78
+ inserterItems: getInserterItems( destinationRootClientId ),
80
79
  };
81
80
  },
82
81
  [ destinationRootClientId ]
83
82
  );
83
+ const hasReusableBlocks = useMemo( () => {
84
+ return inserterItems.some(
85
+ ( { category } ) => category === 'reusable'
86
+ );
87
+ }, [ inserterItems ] );
84
88
 
85
89
  const mediaCategories = useMediaCategories( destinationRootClientId );
86
90
  const showMedia = !! mediaCategories.length;
@@ -292,6 +296,7 @@ function InserterMenu(
292
296
  <BlockPatternsCategoryDialog
293
297
  rootClientId={ destinationRootClientId }
294
298
  onInsert={ onInsertPattern }
299
+ onHover={ onHover }
295
300
  category={ selectedPatternCategory }
296
301
  showTitlesAsTooltip
297
302
  />
@@ -23,8 +23,6 @@ function InserterPreviewPanel( { item } ) {
23
23
  { isReusable || example ? (
24
24
  <div className="block-editor-inserter__preview-content">
25
25
  <BlockPreview
26
- __experimentalPadding={ 16 }
27
- viewportWidth={ example?.viewportWidth ?? 500 }
28
26
  blocks={
29
27
  example
30
28
  ? getBlockFromExample( name, {
@@ -36,6 +34,10 @@ function InserterPreviewPanel( { item } ) {
36
34
  } )
37
35
  : createBlock( name, initialAttributes )
38
36
  }
37
+ viewportWidth={ example?.viewportWidth ?? 500 }
38
+ additionalStyles={ [
39
+ { css: 'body { padding: 16px; }' },
40
+ ] }
39
41
  />
40
42
  </div>
41
43
  ) : (
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isEmpty } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -135,7 +130,7 @@ function InserterSearchResults( {
135
130
  );
136
131
 
137
132
  const hasItems =
138
- ! isEmpty( filteredBlockTypes ) || ! isEmpty( filteredBlockPatterns );
133
+ filteredBlockTypes.length > 0 || filteredBlockPatterns.length > 0;
139
134
 
140
135
  const blocksUI = !! filteredBlockTypes.length && (
141
136
  <InserterPanel
@@ -162,6 +157,7 @@ function InserterSearchResults( {
162
157
  shownPatterns={ currentShownPatterns }
163
158
  blockPatterns={ filteredBlockPatterns }
164
159
  onClickPattern={ onSelectBlockPattern }
160
+ onHover={ onHover }
165
161
  isDraggable={ isDraggable }
166
162
  />
167
163
  </div>