@wordpress/block-editor 11.2.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 (660) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +28 -4
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/autocomplete/index.js +2 -7
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +2 -2
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-card/index.js +2 -4
  10. package/build/components/block-card/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +8 -0
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-inspector/index.js +15 -14
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +5 -0
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +0 -1
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +2 -2
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-navigation/dropdown.js +3 -1
  22. package/build/components/block-navigation/dropdown.js.map +1 -1
  23. package/build/components/block-pattern-setup/index.js +1 -1
  24. package/build/components/block-pattern-setup/index.js.map +1 -1
  25. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  26. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +31 -3
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +9 -11
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +32 -8
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-selection-clearer/index.js +1 -1
  34. package/build/components/block-selection-clearer/index.js.map +1 -1
  35. package/build/components/block-settings/container.native.js +7 -33
  36. package/build/components/block-settings/container.native.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -6
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-settings-menu-controls/index.js +2 -8
  40. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  41. package/build/components/block-switcher/utils.js +1 -1
  42. package/build/components/block-switcher/utils.js.map +1 -1
  43. package/build/components/block-tools/selected-block-popover.js +55 -47
  44. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  45. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  46. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  48. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  49. package/build/components/color-style-selector/index.js +3 -1
  50. package/build/components/color-style-selector/index.js.map +1 -1
  51. package/build/components/date-format-picker/index.js +3 -4
  52. package/build/components/date-format-picker/index.js.map +1 -1
  53. package/build/components/font-family/index.js +1 -7
  54. package/build/components/font-family/index.js.map +1 -1
  55. package/build/components/font-sizes/fluid-utils.js +1 -1
  56. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  57. package/build/components/font-sizes/utils.js +1 -1
  58. package/build/components/font-sizes/utils.js.map +1 -1
  59. package/build/components/global-styles/context.js +22 -0
  60. package/build/components/global-styles/context.js.map +1 -0
  61. package/build/components/global-styles/hooks.js +142 -0
  62. package/build/components/global-styles/hooks.js.map +1 -0
  63. package/build/components/global-styles/index.js +42 -0
  64. package/build/components/global-styles/index.js.map +1 -0
  65. package/build/components/global-styles/typography-utils.js +92 -0
  66. package/build/components/global-styles/typography-utils.js.map +1 -0
  67. package/build/components/global-styles/use-global-styles-output.js +974 -0
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  69. package/build/components/global-styles/utils.js +340 -0
  70. package/build/components/global-styles/utils.js.map +1 -0
  71. package/build/components/height-control/index.js +13 -1
  72. package/build/components/height-control/index.js.map +1 -1
  73. package/build/components/image-editor/constants.js +1 -1
  74. package/build/components/image-editor/constants.js.map +1 -1
  75. package/build/components/image-editor/context.js +1 -2
  76. package/build/components/image-editor/context.js.map +1 -1
  77. package/build/components/image-editor/cropper.js +3 -1
  78. package/build/components/image-editor/cropper.js.map +1 -1
  79. package/build/components/image-editor/index.js +13 -9
  80. package/build/components/image-editor/index.js.map +1 -1
  81. package/build/components/image-editor/use-transform-image.js +11 -35
  82. package/build/components/image-editor/use-transform-image.js.map +1 -1
  83. package/build/components/image-size-control/index.js +1 -7
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.js +8 -24
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +22 -32
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +8 -23
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-block-context.js +53 -0
  92. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  93. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  94. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  95. package/build/components/inserter/block-patterns-tab.js +7 -1
  96. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  97. package/build/components/inserter/block-types-tab.js +2 -2
  98. package/build/components/inserter/block-types-tab.js.map +1 -1
  99. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  100. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  101. package/build/components/inserter/index.js +5 -4
  102. package/build/components/inserter/index.js.map +1 -1
  103. package/build/components/inserter/media-tab/hooks.js +142 -56
  104. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  105. package/build/components/inserter/media-tab/media-list.js +74 -21
  106. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  107. package/build/components/inserter/media-tab/media-panel.js +11 -13
  108. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-tab.js +6 -3
  110. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  111. package/build/components/inserter/media-tab/utils.js +26 -15
  112. package/build/components/inserter/media-tab/utils.js.map +1 -1
  113. package/build/components/inserter/menu.js +1 -0
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/preview-panel.js +5 -3
  116. package/build/components/inserter/preview-panel.js.map +1 -1
  117. package/build/components/inserter/search-results.js +2 -7
  118. package/build/components/inserter/search-results.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +1 -9
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/fill.js +15 -2
  122. package/build/components/inspector-controls/fill.js.map +1 -1
  123. package/build/components/inspector-controls/fill.native.js +14 -1
  124. package/build/components/inspector-controls/fill.native.js.map +1 -1
  125. package/build/components/inspector-controls/groups.js +4 -0
  126. package/build/components/inspector-controls/groups.js.map +1 -1
  127. package/build/components/inspector-controls/index.js +2 -2
  128. package/build/components/inspector-controls/index.js.map +1 -1
  129. package/build/components/inspector-controls/slot.js +14 -1
  130. package/build/components/inspector-controls/slot.js.map +1 -1
  131. package/build/components/inspector-controls/slot.native.js +14 -1
  132. package/build/components/inspector-controls/slot.native.js.map +1 -1
  133. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  134. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +2 -2
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  138. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  140. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  141. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  142. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  143. package/build/components/justify-content-control/ui.js +8 -1
  144. package/build/components/justify-content-control/ui.js.map +1 -1
  145. package/build/components/link-control/index.js +45 -17
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/list-view/block.js +1 -1
  148. package/build/components/list-view/block.js.map +1 -1
  149. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  150. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  151. package/build/components/media-upload/index.native.js +4 -1
  152. package/build/components/media-upload/index.native.js.map +1 -1
  153. package/build/components/off-canvas-editor/appender.js +50 -3
  154. package/build/components/off-canvas-editor/appender.js.map +1 -1
  155. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  156. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  157. package/build/components/off-canvas-editor/block.js +6 -27
  158. package/build/components/off-canvas-editor/block.js.map +1 -1
  159. package/build/components/off-canvas-editor/branch.js +25 -10
  160. package/build/components/off-canvas-editor/branch.js.map +1 -1
  161. package/build/components/off-canvas-editor/index.js +11 -16
  162. package/build/components/off-canvas-editor/index.js.map +1 -1
  163. package/build/components/off-canvas-editor/link-ui.js +2 -2
  164. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  165. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  166. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  167. package/build/components/provider/index.js +21 -9
  168. package/build/components/provider/index.js.map +1 -1
  169. package/build/components/provider/index.native.js +5 -6
  170. package/build/components/provider/index.native.js.map +1 -1
  171. package/build/components/rich-text/use-before-input-rules.js +11 -3
  172. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  173. package/build/components/rich-text/utils.js +1 -1
  174. package/build/components/rich-text/utils.js.map +1 -1
  175. package/build/components/spacing-sizes-control/utils.js +2 -8
  176. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  177. package/build/components/tool-selector/index.js +3 -1
  178. package/build/components/tool-selector/index.js.map +1 -1
  179. package/build/components/url-popover/image-url-input-ui.js +7 -8
  180. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  181. package/build/components/use-block-display-information/index.js +1 -1
  182. package/build/components/use-block-display-information/index.js.map +1 -1
  183. package/build/experiments.js +45 -0
  184. package/build/experiments.js.map +1 -0
  185. package/build/experiments.native.js +40 -0
  186. package/build/experiments.native.js.map +1 -0
  187. package/build/hooks/anchor.js +2 -1
  188. package/build/hooks/anchor.js.map +1 -1
  189. package/build/hooks/border.js +1 -1
  190. package/build/hooks/border.js.map +1 -1
  191. package/build/hooks/child-layout.js +5 -1
  192. package/build/hooks/child-layout.js.map +1 -1
  193. package/build/hooks/color-panel.js +1 -1
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color.js +3 -3
  196. package/build/hooks/color.js.map +1 -1
  197. package/build/hooks/custom-class-name.js +2 -1
  198. package/build/hooks/custom-class-name.js.map +1 -1
  199. package/build/hooks/dimensions.js +7 -5
  200. package/build/hooks/dimensions.js.map +1 -1
  201. package/build/hooks/margin.js +1 -0
  202. package/build/hooks/margin.js.map +1 -1
  203. package/build/hooks/padding.js +1 -0
  204. package/build/hooks/padding.js.map +1 -1
  205. package/build/hooks/position.js +34 -15
  206. package/build/hooks/position.js.map +1 -1
  207. package/build/hooks/typography.js +1 -1
  208. package/build/hooks/typography.js.map +1 -1
  209. package/build/hooks/use-color-props.js +3 -3
  210. package/build/hooks/use-color-props.js.map +1 -1
  211. package/build/hooks/utils.js +69 -3
  212. package/build/hooks/utils.js.map +1 -1
  213. package/build/index.js +10 -1
  214. package/build/index.js.map +1 -1
  215. package/build/layouts/constrained.js +3 -0
  216. package/build/layouts/constrained.js.map +1 -1
  217. package/build/layouts/flex.js +59 -9
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/layouts/flow.js +0 -18
  220. package/build/layouts/flow.js.map +1 -1
  221. package/build/store/actions.js +3 -30
  222. package/build/store/actions.js.map +1 -1
  223. package/build/store/defaults.js +5 -2
  224. package/build/store/defaults.js.map +1 -1
  225. package/build/store/index.js +11 -2
  226. package/build/store/index.js.map +1 -1
  227. package/build/store/private-actions.js +78 -0
  228. package/build/store/private-actions.js.map +1 -0
  229. package/build/store/private-selectors.js +18 -0
  230. package/build/store/private-selectors.js.map +1 -0
  231. package/build/store/reducer.js +1 -1
  232. package/build/store/reducer.js.map +1 -1
  233. package/build/store/selectors.js +60 -34
  234. package/build/store/selectors.js.map +1 -1
  235. package/build/utils/block-variation-transforms.js +1 -1
  236. package/build/utils/block-variation-transforms.js.map +1 -1
  237. package/build/utils/parse-css-unit-to-px.js +1 -1
  238. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  239. package/build/utils/transform-styles/index.js +1 -7
  240. package/build/utils/transform-styles/index.js.map +1 -1
  241. package/build-module/components/alignment-control/ui.js +1 -1
  242. package/build-module/components/alignment-control/ui.js.map +1 -1
  243. package/build-module/components/autocomplete/index.js +2 -6
  244. package/build-module/components/autocomplete/index.js.map +1 -1
  245. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  246. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  247. package/build-module/components/block-card/index.js +2 -4
  248. package/build-module/components/block-card/index.js.map +1 -1
  249. package/build-module/components/block-edit/index.js +7 -0
  250. package/build-module/components/block-edit/index.js.map +1 -1
  251. package/build-module/components/block-inspector/index.js +15 -14
  252. package/build-module/components/block-inspector/index.js.map +1 -1
  253. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  254. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  255. package/build-module/components/block-lock/modal.js +0 -1
  256. package/build-module/components/block-lock/modal.js.map +1 -1
  257. package/build-module/components/block-mover/mover-description.js +2 -2
  258. package/build-module/components/block-mover/mover-description.js.map +1 -1
  259. package/build-module/components/block-navigation/dropdown.js +3 -1
  260. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  261. package/build-module/components/block-pattern-setup/index.js +1 -1
  262. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  263. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  264. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  265. package/build-module/components/block-patterns-list/index.js +32 -3
  266. package/build-module/components/block-patterns-list/index.js.map +1 -1
  267. package/build-module/components/block-preview/auto.js +9 -11
  268. package/build-module/components/block-preview/auto.js.map +1 -1
  269. package/build-module/components/block-preview/index.js +31 -8
  270. package/build-module/components/block-preview/index.js.map +1 -1
  271. package/build-module/components/block-selection-clearer/index.js +1 -1
  272. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  273. package/build-module/components/block-settings/container.native.js +6 -30
  274. package/build-module/components/block-settings/container.native.js.map +1 -1
  275. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -6
  276. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  277. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  278. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  279. package/build-module/components/block-switcher/utils.js +1 -1
  280. package/build-module/components/block-switcher/utils.js.map +1 -1
  281. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  282. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  283. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  284. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  285. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  286. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  287. package/build-module/components/color-style-selector/index.js +3 -1
  288. package/build-module/components/color-style-selector/index.js.map +1 -1
  289. package/build-module/components/date-format-picker/index.js +4 -5
  290. package/build-module/components/date-format-picker/index.js.map +1 -1
  291. package/build-module/components/font-family/index.js +1 -6
  292. package/build-module/components/font-family/index.js.map +1 -1
  293. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  294. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  295. package/build-module/components/font-sizes/utils.js +1 -1
  296. package/build-module/components/font-sizes/utils.js.map +1 -1
  297. package/build-module/components/global-styles/context.js +12 -0
  298. package/build-module/components/global-styles/context.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +121 -0
  300. package/build-module/components/global-styles/hooks.js.map +1 -0
  301. package/build-module/components/global-styles/index.js +4 -0
  302. package/build-module/components/global-styles/index.js.map +1 -0
  303. package/build-module/components/global-styles/typography-utils.js +84 -0
  304. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  305. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  306. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  307. package/build-module/components/global-styles/utils.js +321 -0
  308. package/build-module/components/global-styles/utils.js.map +1 -0
  309. package/build-module/components/height-control/index.js +14 -1
  310. package/build-module/components/height-control/index.js.map +1 -1
  311. package/build-module/components/image-editor/constants.js +1 -1
  312. package/build-module/components/image-editor/constants.js.map +1 -1
  313. package/build-module/components/image-editor/context.js +1 -2
  314. package/build-module/components/image-editor/context.js.map +1 -1
  315. package/build-module/components/image-editor/cropper.js +3 -1
  316. package/build-module/components/image-editor/cropper.js.map +1 -1
  317. package/build-module/components/image-editor/index.js +13 -3
  318. package/build-module/components/image-editor/index.js.map +1 -1
  319. package/build-module/components/image-editor/use-transform-image.js +12 -37
  320. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  321. package/build-module/components/image-size-control/index.js +1 -6
  322. package/build-module/components/image-size-control/index.js.map +1 -1
  323. package/build-module/components/index.js +2 -3
  324. package/build-module/components/index.js.map +1 -1
  325. package/build-module/components/inner-blocks/index.js +21 -32
  326. package/build-module/components/inner-blocks/index.js.map +1 -1
  327. package/build-module/components/inner-blocks/index.native.js +9 -22
  328. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  329. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  330. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  331. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  332. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab.js +7 -1
  334. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  335. package/build-module/components/inserter/block-types-tab.js +3 -3
  336. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +5 -4
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  342. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  343. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  344. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  345. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  346. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  348. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/utils.js +27 -15
  350. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  351. package/build-module/components/inserter/menu.js +1 -0
  352. package/build-module/components/inserter/menu.js.map +1 -1
  353. package/build-module/components/inserter/preview-panel.js +5 -3
  354. package/build-module/components/inserter/preview-panel.js.map +1 -1
  355. package/build-module/components/inserter/search-results.js +2 -6
  356. package/build-module/components/inserter/search-results.js.map +1 -1
  357. package/build-module/components/inserter-list-item/index.js +1 -9
  358. package/build-module/components/inserter-list-item/index.js.map +1 -1
  359. package/build-module/components/inspector-controls/fill.js +14 -2
  360. package/build-module/components/inspector-controls/fill.js.map +1 -1
  361. package/build-module/components/inspector-controls/fill.native.js +13 -1
  362. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  363. package/build-module/components/inspector-controls/groups.js +4 -0
  364. package/build-module/components/inspector-controls/groups.js.map +1 -1
  365. package/build-module/components/inspector-controls/index.js +2 -2
  366. package/build-module/components/inspector-controls/index.js.map +1 -1
  367. package/build-module/components/inspector-controls/slot.js +13 -1
  368. package/build-module/components/inspector-controls/slot.js.map +1 -1
  369. package/build-module/components/inspector-controls/slot.native.js +13 -1
  370. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  372. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  373. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  374. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  375. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  376. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  377. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  378. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  379. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  380. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  381. package/build-module/components/justify-content-control/ui.js +9 -2
  382. package/build-module/components/justify-content-control/ui.js.map +1 -1
  383. package/build-module/components/link-control/index.js +45 -16
  384. package/build-module/components/link-control/index.js.map +1 -1
  385. package/build-module/components/list-view/block.js +1 -1
  386. package/build-module/components/list-view/block.js.map +1 -1
  387. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  388. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  389. package/build-module/components/media-upload/index.native.js +4 -1
  390. package/build-module/components/media-upload/index.native.js.map +1 -1
  391. package/build-module/components/off-canvas-editor/appender.js +47 -4
  392. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  393. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  394. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  395. package/build-module/components/off-canvas-editor/block.js +6 -25
  396. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  397. package/build-module/components/off-canvas-editor/branch.js +23 -11
  398. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  399. package/build-module/components/off-canvas-editor/index.js +11 -15
  400. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  401. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  402. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  403. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  404. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  405. package/build-module/components/provider/index.js +16 -9
  406. package/build-module/components/provider/index.js.map +1 -1
  407. package/build-module/components/provider/index.native.js +4 -4
  408. package/build-module/components/provider/index.native.js.map +1 -1
  409. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  410. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  411. package/build-module/components/rich-text/utils.js +1 -1
  412. package/build-module/components/rich-text/utils.js.map +1 -1
  413. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  414. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  415. package/build-module/components/tool-selector/index.js +3 -1
  416. package/build-module/components/tool-selector/index.js.map +1 -1
  417. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  418. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  419. package/build-module/components/use-block-display-information/index.js +1 -1
  420. package/build-module/components/use-block-display-information/index.js.map +1 -1
  421. package/build-module/experiments.js +25 -0
  422. package/build-module/experiments.js.map +1 -0
  423. package/build-module/experiments.native.js +23 -0
  424. package/build-module/experiments.native.js.map +1 -0
  425. package/build-module/hooks/anchor.js +2 -1
  426. package/build-module/hooks/anchor.js.map +1 -1
  427. package/build-module/hooks/border.js +1 -1
  428. package/build-module/hooks/border.js.map +1 -1
  429. package/build-module/hooks/child-layout.js +5 -1
  430. package/build-module/hooks/child-layout.js.map +1 -1
  431. package/build-module/hooks/color-panel.js +1 -1
  432. package/build-module/hooks/color-panel.js.map +1 -1
  433. package/build-module/hooks/color.js +3 -3
  434. package/build-module/hooks/color.js.map +1 -1
  435. package/build-module/hooks/custom-class-name.js +2 -1
  436. package/build-module/hooks/custom-class-name.js.map +1 -1
  437. package/build-module/hooks/dimensions.js +6 -5
  438. package/build-module/hooks/dimensions.js.map +1 -1
  439. package/build-module/hooks/margin.js +1 -0
  440. package/build-module/hooks/margin.js.map +1 -1
  441. package/build-module/hooks/padding.js +1 -0
  442. package/build-module/hooks/padding.js.map +1 -1
  443. package/build-module/hooks/position.js +31 -14
  444. package/build-module/hooks/position.js.map +1 -1
  445. package/build-module/hooks/typography.js +1 -1
  446. package/build-module/hooks/typography.js.map +1 -1
  447. package/build-module/hooks/use-color-props.js +3 -3
  448. package/build-module/hooks/use-color-props.js.map +1 -1
  449. package/build-module/hooks/utils.js +70 -4
  450. package/build-module/hooks/utils.js.map +1 -1
  451. package/build-module/index.js +1 -0
  452. package/build-module/index.js.map +1 -1
  453. package/build-module/layouts/constrained.js +3 -0
  454. package/build-module/layouts/constrained.js.map +1 -1
  455. package/build-module/layouts/flex.js +60 -10
  456. package/build-module/layouts/flex.js.map +1 -1
  457. package/build-module/layouts/flow.js +0 -18
  458. package/build-module/layouts/flow.js.map +1 -1
  459. package/build-module/store/actions.js +2 -26
  460. package/build-module/store/actions.js.map +1 -1
  461. package/build-module/store/defaults.js +5 -2
  462. package/build-module/store/defaults.js.map +1 -1
  463. package/build-module/store/index.js +8 -2
  464. package/build-module/store/index.js.map +1 -1
  465. package/build-module/store/private-actions.js +66 -0
  466. package/build-module/store/private-actions.js.map +1 -0
  467. package/build-module/store/private-selectors.js +11 -0
  468. package/build-module/store/private-selectors.js.map +1 -0
  469. package/build-module/store/reducer.js +1 -1
  470. package/build-module/store/reducer.js.map +1 -1
  471. package/build-module/store/selectors.js +48 -25
  472. package/build-module/store/selectors.js.map +1 -1
  473. package/build-module/utils/block-variation-transforms.js +1 -1
  474. package/build-module/utils/block-variation-transforms.js.map +1 -1
  475. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  476. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  477. package/build-module/utils/transform-styles/index.js +1 -6
  478. package/build-module/utils/transform-styles/index.js.map +1 -1
  479. package/build-style/content-rtl.css +283 -3
  480. package/build-style/content.css +283 -3
  481. package/build-style/style-rtl.css +105 -221
  482. package/build-style/style.css +105 -221
  483. package/package.json +30 -29
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  485. package/src/components/alignment-control/test/index.js +5 -15
  486. package/src/components/alignment-control/ui.js +1 -1
  487. package/src/components/autocomplete/index.js +3 -6
  488. package/src/components/block-alignment-control/test/index.js +3 -11
  489. package/src/components/block-alignment-matrix-control/index.js +1 -2
  490. package/src/components/block-card/index.js +1 -4
  491. package/src/components/block-content-overlay/content.scss +4 -4
  492. package/src/components/block-edit/index.js +15 -1
  493. package/src/components/block-icon/content.scss +31 -0
  494. package/src/components/block-inspector/index.js +13 -17
  495. package/src/components/block-list/use-in-between-inserter.js +5 -0
  496. package/src/components/block-lock/modal.js +0 -1
  497. package/src/components/block-mover/mover-description.js +2 -2
  498. package/src/components/block-mover/stories/index.js +3 -3
  499. package/src/components/block-navigation/dropdown.js +1 -1
  500. package/src/components/block-pattern-setup/index.js +1 -4
  501. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  502. package/src/components/block-patterns-list/index.js +29 -3
  503. package/src/components/block-preview/README.md +9 -9
  504. package/src/components/block-preview/auto.js +9 -11
  505. package/src/components/block-preview/content.scss +23 -0
  506. package/src/components/block-preview/index.js +40 -10
  507. package/src/components/block-preview/style.scss +0 -23
  508. package/src/components/block-selection-clearer/index.js +1 -1
  509. package/src/components/block-selection-clearer/test/index.js +6 -6
  510. package/src/components/block-settings/container.native.js +7 -26
  511. package/src/components/block-settings-menu/block-settings-dropdown.js +13 -5
  512. package/src/components/block-settings-menu-controls/index.js +2 -10
  513. package/src/components/block-switcher/test/index.js +43 -44
  514. package/src/components/block-switcher/utils.js +1 -1
  515. package/src/components/block-tools/selected-block-popover.js +77 -80
  516. package/src/components/block-tools/style.scss +0 -1
  517. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  518. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  519. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  520. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  521. package/src/components/color-style-selector/index.js +1 -1
  522. package/src/components/colors/test/with-colors.js +2 -8
  523. package/src/components/date-format-picker/index.js +23 -24
  524. package/src/components/date-format-picker/style.scss +0 -6
  525. package/src/components/default-block-appender/content.scss +18 -0
  526. package/src/components/default-block-appender/test/index.js +2 -8
  527. package/src/components/font-family/index.js +1 -6
  528. package/src/components/font-sizes/fluid-utils.js +1 -1
  529. package/src/components/font-sizes/utils.js +1 -1
  530. package/src/components/global-styles/README.md +77 -0
  531. package/src/components/global-styles/context.js +15 -0
  532. package/src/components/global-styles/hooks.js +145 -0
  533. package/src/components/global-styles/index.js +7 -0
  534. package/src/components/global-styles/test/typography-utils.js +393 -0
  535. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  536. package/src/components/global-styles/test/utils.js +206 -0
  537. package/src/components/global-styles/typography-utils.js +87 -0
  538. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  539. package/src/components/global-styles/utils.js +373 -0
  540. package/src/components/height-control/README.md +55 -0
  541. package/src/components/height-control/index.js +13 -1
  542. package/src/components/image-editor/constants.js +1 -1
  543. package/src/components/image-editor/context.js +5 -9
  544. package/src/components/image-editor/cropper.js +3 -1
  545. package/src/components/image-editor/index.js +13 -4
  546. package/src/components/image-editor/use-transform-image.js +14 -55
  547. package/src/components/image-size-control/index.js +1 -6
  548. package/src/components/index.js +2 -6
  549. package/src/components/inner-blocks/index.js +29 -33
  550. package/src/components/inner-blocks/index.native.js +27 -47
  551. package/src/components/inner-blocks/use-block-context.js +47 -0
  552. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  553. package/src/components/inserter/block-patterns-tab.js +7 -0
  554. package/src/components/inserter/block-types-tab.js +3 -4
  555. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  556. package/src/components/inserter/index.js +3 -4
  557. package/src/components/inserter/media-tab/hooks.js +167 -65
  558. package/src/components/inserter/media-tab/media-list.js +94 -26
  559. package/src/components/inserter/media-tab/media-panel.js +9 -20
  560. package/src/components/inserter/media-tab/media-tab.js +12 -4
  561. package/src/components/inserter/media-tab/utils.js +20 -10
  562. package/src/components/inserter/menu.js +1 -0
  563. package/src/components/inserter/preview-panel.js +4 -2
  564. package/src/components/inserter/search-results.js +2 -6
  565. package/src/components/inserter/stories/index.js +9 -9
  566. package/src/components/inserter/style.scss +58 -11
  567. package/src/components/inserter-list-item/index.js +0 -7
  568. package/src/components/inspector-controls/README.md +3 -7
  569. package/src/components/inspector-controls/fill.js +15 -1
  570. package/src/components/inspector-controls/fill.native.js +14 -1
  571. package/src/components/inspector-controls/groups.js +3 -0
  572. package/src/components/inspector-controls/index.js +2 -6
  573. package/src/components/inspector-controls/slot.js +14 -1
  574. package/src/components/inspector-controls/slot.native.js +14 -1
  575. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  576. package/src/components/inspector-controls-tabs/index.js +2 -4
  577. package/src/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  578. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  579. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +21 -10
  580. package/src/components/justify-content-control/ui.js +9 -0
  581. package/src/components/link-control/index.js +59 -23
  582. package/src/components/link-control/style.scss +7 -24
  583. package/src/components/link-control/test/index.js +134 -5
  584. package/src/components/list-view/block.js +1 -1
  585. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  586. package/src/components/media-replace-flow/test/index.js +4 -12
  587. package/src/components/media-upload/index.native.js +2 -2
  588. package/src/components/off-canvas-editor/README.md +2 -2
  589. package/src/components/off-canvas-editor/appender.js +93 -37
  590. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  591. package/src/components/off-canvas-editor/block.js +3 -42
  592. package/src/components/off-canvas-editor/branch.js +32 -5
  593. package/src/components/off-canvas-editor/index.js +10 -25
  594. package/src/components/off-canvas-editor/link-ui.js +2 -2
  595. package/src/components/off-canvas-editor/style.scss +5 -1
  596. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  597. package/src/components/provider/index.js +33 -14
  598. package/src/components/provider/index.native.js +4 -3
  599. package/src/components/provider/test/experimental-provider.js +94 -0
  600. package/src/components/provider/test/use-block-sync.js +10 -0
  601. package/src/components/responsive-block-control/test/index.js +1 -5
  602. package/src/components/rich-text/use-before-input-rules.js +10 -2
  603. package/src/components/rich-text/utils.js +1 -1
  604. package/src/components/spacing-sizes-control/utils.js +2 -7
  605. package/src/components/tool-selector/index.js +1 -1
  606. package/src/components/url-input/test/button.js +24 -24
  607. package/src/components/url-popover/image-url-input-ui.js +7 -8
  608. package/src/components/url-popover/style.scss +0 -10
  609. package/src/components/use-block-display-information/index.js +1 -1
  610. package/src/components/warning/{style.scss → content.scss} +0 -0
  611. package/src/components/warning/test/index.js +1 -5
  612. package/src/content.scss +7 -0
  613. package/src/experiments.js +27 -0
  614. package/src/experiments.native.js +25 -0
  615. package/src/hooks/anchor.js +2 -1
  616. package/src/hooks/border.js +1 -1
  617. package/src/hooks/child-layout.js +6 -1
  618. package/src/hooks/color-panel.js +1 -1
  619. package/src/hooks/color.js +3 -3
  620. package/src/hooks/custom-class-name.js +2 -1
  621. package/src/hooks/dimensions.js +6 -6
  622. package/src/hooks/layout.scss +4 -0
  623. package/src/hooks/margin.js +1 -0
  624. package/src/hooks/padding.js +1 -0
  625. package/src/hooks/position.js +52 -36
  626. package/src/hooks/test/align.native.js +1 -1
  627. package/src/hooks/test/utils.js +104 -0
  628. package/src/hooks/typography.js +1 -1
  629. package/src/hooks/use-color-props.js +3 -3
  630. package/src/hooks/utils.js +68 -2
  631. package/src/index.js +1 -0
  632. package/src/layouts/constrained.js +3 -0
  633. package/src/layouts/flex.js +66 -14
  634. package/src/layouts/flow.js +0 -9
  635. package/src/store/actions.js +2 -26
  636. package/src/store/defaults.js +7 -2
  637. package/src/store/index.js +8 -2
  638. package/src/store/private-actions.js +65 -0
  639. package/src/store/private-selectors.js +10 -0
  640. package/src/store/reducer.js +1 -1
  641. package/src/store/selectors.js +103 -52
  642. package/src/store/test/actions.js +0 -18
  643. package/src/store/test/private-actions.js +22 -0
  644. package/src/store/test/private-selectors.js +24 -0
  645. package/src/store/test/selectors.js +52 -30
  646. package/src/style.scss +3 -5
  647. package/src/utils/block-variation-transforms.js +1 -1
  648. package/src/utils/parse-css-unit-to-px.js +3 -1
  649. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  650. package/src/utils/transform-styles/index.js +1 -6
  651. package/build/components/inner-blocks/get-block-context.js +0 -45
  652. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  653. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  654. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  655. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  656. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  657. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  658. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  659. package/src/components/inner-blocks/get-block-context.js +0 -39
  660. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -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 ];
@@ -296,6 +296,7 @@ function InserterMenu(
296
296
  <BlockPatternsCategoryDialog
297
297
  rootClientId={ destinationRootClientId }
298
298
  onInsert={ onInsertPattern }
299
+ onHover={ onHover }
299
300
  category={ selectedPatternCategory }
300
301
  showTitlesAsTooltip
301
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>
@@ -2,7 +2,7 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import BlockLibrary from '../library';
5
- import BlockEditorProvider from '../../provider';
5
+ import { ExperimentalBlockEditorProvider } from '../../provider';
6
6
  import { patternCategories, patterns, reusableBlocks } from './utils/fixtures';
7
7
  import Inserter from '../';
8
8
 
@@ -16,11 +16,11 @@ export const libraryWithoutPatterns = () => {
16
16
  display: 'inline-block',
17
17
  };
18
18
  return (
19
- <BlockEditorProvider>
19
+ <ExperimentalBlockEditorProvider>
20
20
  <div style={ wrapperStyle }>
21
21
  <BlockLibrary showInserterHelpPanel />
22
22
  </div>
23
- </BlockEditorProvider>
23
+ </ExperimentalBlockEditorProvider>
24
24
  );
25
25
  };
26
26
 
@@ -32,7 +32,7 @@ export const libraryWithPatterns = () => {
32
32
  display: 'inline-block',
33
33
  };
34
34
  return (
35
- <BlockEditorProvider
35
+ <ExperimentalBlockEditorProvider
36
36
  settings={ {
37
37
  __experimentalBlockPatternCategories: patternCategories,
38
38
  __experimentalBlockPatterns: patterns,
@@ -41,7 +41,7 @@ export const libraryWithPatterns = () => {
41
41
  <div style={ wrapperStyle }>
42
42
  <BlockLibrary showInserterHelpPanel />
43
43
  </div>
44
- </BlockEditorProvider>
44
+ </ExperimentalBlockEditorProvider>
45
45
  );
46
46
  };
47
47
 
@@ -53,7 +53,7 @@ export const libraryWithPatternsAndReusableBlocks = () => {
53
53
  display: 'inline-block',
54
54
  };
55
55
  return (
56
- <BlockEditorProvider
56
+ <ExperimentalBlockEditorProvider
57
57
  settings={ {
58
58
  __experimentalBlockPatternCategories: patternCategories,
59
59
  __experimentalBlockPatterns: patterns,
@@ -63,7 +63,7 @@ export const libraryWithPatternsAndReusableBlocks = () => {
63
63
  <div style={ wrapperStyle }>
64
64
  <BlockLibrary showInserterHelpPanel />
65
65
  </div>
66
- </BlockEditorProvider>
66
+ </ExperimentalBlockEditorProvider>
67
67
  );
68
68
  };
69
69
 
@@ -75,7 +75,7 @@ export const quickInserter = () => {
75
75
  display: 'inline-block',
76
76
  };
77
77
  return (
78
- <BlockEditorProvider
78
+ <ExperimentalBlockEditorProvider
79
79
  settings={ {
80
80
  __experimentalBlockPatternCategories: patternCategories,
81
81
  __experimentalBlockPatterns: patterns,
@@ -85,6 +85,6 @@ export const quickInserter = () => {
85
85
  <div style={ wrapperStyle }>
86
86
  <Inserter __experimentalIsQuick />
87
87
  </div>
88
- </BlockEditorProvider>
88
+ </ExperimentalBlockEditorProvider>
89
89
  );
90
90
  };
@@ -564,8 +564,10 @@ $block-inserter-tabs-height: 44px;
564
564
  }
565
565
 
566
566
  .block-editor-inserter__media-panel {
567
- height: 100%;
567
+ min-height: 100%;
568
568
  padding: 0 $grid-unit-20;
569
+ display: flex;
570
+ flex-direction: column;
569
571
 
570
572
  @include break-medium {
571
573
  padding: 0;
@@ -576,6 +578,7 @@ $block-inserter-tabs-height: 44px;
576
578
  display: flex;
577
579
  align-items: center;
578
580
  justify-content: center;
581
+ flex: 1;
579
582
  }
580
583
 
581
584
  .block-editor-inserter__media-panel-search {
@@ -583,13 +586,19 @@ $block-inserter-tabs-height: 44px;
583
586
  input[type="search"].components-search-control__input {
584
587
  background: $white;
585
588
  }
589
+ button.components-button {
590
+ min-width: auto;
591
+ padding-left: $grid-unit-05 * 0.5;
592
+ padding-right: $grid-unit-05 * 0.5;
593
+ }
586
594
  }
587
595
  }
588
596
  }
589
597
 
590
598
  .block-editor-inserter__media-list {
591
599
  margin-top: $grid-unit-20;
592
- &__list-item {
600
+ .block-editor-inserter__media-list__list-item {
601
+ position: relative;
593
602
  cursor: pointer;
594
603
  margin-bottom: $grid-unit-30;
595
604
 
@@ -600,16 +609,52 @@ $block-inserter-tabs-height: 44px;
600
609
  &[draggable="true"] .block-editor-block-preview__container {
601
610
  cursor: grab;
602
611
  }
612
+
613
+ &.is-hovered {
614
+ .block-editor-inserter__media-list__item-preview {
615
+ box-shadow: 0 0 0 2px $gray-900, 0 15px 25px rgb(0 0 0 / 7%);
616
+ }
617
+
618
+ .block-editor-inserter__media-list__item-preview-options > button {
619
+ display: block;
620
+ }
621
+ }
622
+
623
+ .block-editor-inserter__media-list__item-preview-options {
624
+ position: absolute;
625
+ right: $grid-unit-10;
626
+ top: $grid-unit-10;
627
+
628
+ > button {
629
+ background: $white;
630
+ border-radius: $radius-block-ui;
631
+ display: none;
632
+
633
+ // These styles are important so as focus isn't lost
634
+ // when the button is focused and we hover away.
635
+ &.is-opened,
636
+ &:focus {
637
+ display: block;
638
+ }
639
+
640
+ &:hover {
641
+ box-shadow: inset 0 0 0 2px $white, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
642
+
643
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
644
+ outline: 2px solid transparent;
645
+ }
646
+ }
647
+ }
603
648
  }
604
649
 
605
- &__item {
650
+ .block-editor-inserter__media-list__item {
606
651
  height: 100%;
607
652
 
608
- &-preview {
653
+ .block-editor-inserter__media-list__item-preview {
609
654
  display: flex;
610
655
  align-items: center;
611
656
  overflow: hidden;
612
- border-radius: 4px;
657
+ border-radius: 2px;
613
658
 
614
659
  > * {
615
660
  margin: 0 auto;
@@ -617,12 +662,8 @@ $block-inserter-tabs-height: 44px;
617
662
  }
618
663
  }
619
664
 
620
- &:hover &-preview {
621
- box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
622
- }
623
-
624
- &:focus &-preview {
625
- box-shadow: inset 0 0 0 1px $white, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
665
+ &:focus .block-editor-inserter__media-list__item-preview {
666
+ box-shadow: inset 0 0 0 2px $white, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
626
667
 
627
668
  // Windows High Contrast mode will show this outline, but not the box-shadow.
628
669
  outline: 2px solid transparent;
@@ -630,6 +671,12 @@ $block-inserter-tabs-height: 44px;
630
671
  }
631
672
  }
632
673
 
674
+ .block-editor-inserter__media-list__item-preview-options__popover {
675
+ .components-menu-item__button .components-menu-item__item {
676
+ min-width: auto;
677
+ }
678
+ }
679
+
633
680
 
634
681
  .block-editor-inserter__mobile-tab-navigation {
635
682
  padding: $grid-unit-20;
@@ -107,12 +107,6 @@ function InserterListItem( {
107
107
  onHover( null );
108
108
  }
109
109
  } }
110
- onFocus={ () => {
111
- if ( isDragging.current ) {
112
- return;
113
- }
114
- onHover( item );
115
- } }
116
110
  onMouseEnter={ () => {
117
111
  if ( isDragging.current ) {
118
112
  return;
@@ -120,7 +114,6 @@ function InserterListItem( {
120
114
  onHover( item );
121
115
  } }
122
116
  onMouseLeave={ () => onHover( null ) }
123
- onBlur={ () => onHover( null ) }
124
117
  { ...props }
125
118
  >
126
119
  <span
@@ -188,9 +188,7 @@ Inspector Advanced Controls appear under the _Advanced_ panel of a block's [Insp
188
188
  ### Usage
189
189
 
190
190
  ```js
191
- import {
192
- TextControl,
193
- } from '@wordpress/components';
191
+ import { TextControl } from '@wordpress/components';
194
192
  import {
195
193
  InspectorControls,
196
194
  InspectorAdvancedControls,
@@ -199,11 +197,9 @@ import {
199
197
  function MyBlockEdit( { attributes, setAttributes } ) {
200
198
  return (
201
199
  <>
202
- <div>
203
- { /* Block markup goes here */ }
204
- </div
200
+ <div>{ /* Block markup goes here */ }</div>
205
201
  <InspectorControls>
206
- { /* Regular control goes here */
202
+ { /* Regular control goes here */ }
207
203
  </InspectorControls>
208
204
  <InspectorAdvancedControls>
209
205
  <TextControl
@@ -11,6 +11,7 @@ import {
11
11
  __experimentalToolsPanelContext as ToolsPanelContext,
12
12
  } from '@wordpress/components';
13
13
  import warning from '@wordpress/warning';
14
+ import deprecated from '@wordpress/deprecated';
14
15
 
15
16
  /**
16
17
  * Internal dependencies
@@ -19,9 +20,22 @@ import useDisplayBlockControls from '../use-display-block-controls';
19
20
  import groups from './groups';
20
21
 
21
22
  export default function InspectorControlsFill( {
22
- __experimentalGroup: group = 'default',
23
23
  children,
24
+ group = 'default',
25
+ __experimentalGroup,
24
26
  } ) {
27
+ if ( __experimentalGroup ) {
28
+ deprecated(
29
+ '`__experimentalGroup` property in `InspectorControlsFill`',
30
+ {
31
+ since: '6.2',
32
+ version: '6.4',
33
+ alternative: '`group`',
34
+ }
35
+ );
36
+ group = __experimentalGroup;
37
+ }
38
+
25
39
  const isDisplayed = useDisplayBlockControls();
26
40
  const Fill = groups[ group ]?.Fill;
27
41
  if ( ! Fill ) {