@wordpress/block-editor 15.19.1-next.v.202605131032.0 → 15.20.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 (352) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/build/components/block-card/index.cjs +51 -41
  3. package/build/components/block-card/index.cjs.map +3 -3
  4. package/build/components/block-heading-level-dropdown/heading-level-icon.cjs.map +3 -3
  5. package/build/components/block-icon/index.cjs +7 -1
  6. package/build/components/block-icon/index.cjs.map +3 -3
  7. package/build/components/block-inspector/index.cjs +156 -11
  8. package/build/components/block-inspector/index.cjs.map +3 -3
  9. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs +38 -0
  10. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs.map +7 -0
  11. package/build/components/block-list/use-block-props/index.cjs +1 -1
  12. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  13. package/build/components/block-list/use-block-props/use-focus-handler.cjs +3 -4
  14. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
  15. package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
  16. package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
  17. package/build/components/block-lock/modal.cjs.map +3 -3
  18. package/build/components/block-patterns-list/index.cjs +13 -2
  19. package/build/components/block-patterns-list/index.cjs.map +2 -2
  20. package/build/components/block-popover/index.cjs +13 -3
  21. package/build/components/block-popover/index.cjs.map +2 -2
  22. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  23. package/build/components/block-visibility/modal.cjs.map +3 -3
  24. package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
  25. package/build/components/colors-gradients/control.cjs +7 -4
  26. package/build/components/colors-gradients/control.cjs.map +2 -2
  27. package/build/components/global-styles/advanced-panel.cjs +24 -22
  28. package/build/components/global-styles/advanced-panel.cjs.map +3 -3
  29. package/build/components/global-styles/color-panel.cjs +95 -58
  30. package/build/components/global-styles/color-panel.cjs.map +2 -2
  31. package/build/components/global-styles/dimensions-panel.cjs +11 -5
  32. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  33. package/build/components/global-styles/index.cjs +3 -0
  34. package/build/components/global-styles/index.cjs.map +2 -2
  35. package/build/components/global-styles/shadow-panel-components.cjs +38 -26
  36. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  37. package/build/components/global-styles/state-control-badges.cjs +69 -0
  38. package/build/components/global-styles/state-control-badges.cjs.map +7 -0
  39. package/build/components/global-styles/state-control.cjs +54 -63
  40. package/build/components/global-styles/state-control.cjs.map +3 -3
  41. package/build/components/iframe/index.cjs +0 -3
  42. package/build/components/iframe/index.cjs.map +2 -2
  43. package/build/components/iframe/use-scale-canvas.cjs +4 -1
  44. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  45. package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
  46. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  47. package/build/components/inserter/index.cjs +1 -0
  48. package/build/components/inserter/index.cjs.map +2 -2
  49. package/build/components/inserter/media-tab/media-preview.cjs +27 -18
  50. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  51. package/build/components/inserter/media-tab/utils.cjs +1 -1
  52. package/build/components/inserter/media-tab/utils.cjs.map +2 -2
  53. package/build/components/inserter/panel.cjs.map +3 -3
  54. package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
  55. package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
  56. package/build/components/inspector-controls/fill.cjs +14 -4
  57. package/build/components/inspector-controls/fill.cjs.map +2 -2
  58. package/build/components/inspector-controls/groups.cjs +2 -0
  59. package/build/components/inspector-controls/groups.cjs.map +2 -2
  60. package/build/components/inspector-controls-tabs/index.cjs +13 -8
  61. package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
  62. package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
  63. package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
  64. package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
  65. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
  66. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
  67. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  68. package/build/components/list-view/block-select-button.cjs +20 -8
  69. package/build/components/list-view/block-select-button.cjs.map +2 -2
  70. package/build/components/list-view/block.cjs +2 -1
  71. package/build/components/list-view/block.cjs.map +2 -2
  72. package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
  73. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  74. package/build/components/preset-input-control/index.cjs.map +3 -3
  75. package/build/components/provider/use-media-upload-settings.cjs +1 -0
  76. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  77. package/build/components/rich-text/event-listeners/enter.cjs +9 -2
  78. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  79. package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
  80. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  81. package/build/hooks/background.cjs +13 -3
  82. package/build/hooks/background.cjs.map +2 -2
  83. package/build/hooks/block-fields/link/index.cjs.map +3 -3
  84. package/build/hooks/block-fields/media/index.cjs.map +3 -3
  85. package/build/hooks/block-style-state.cjs +112 -0
  86. package/build/hooks/block-style-state.cjs.map +7 -0
  87. package/build/hooks/border.cjs +13 -3
  88. package/build/hooks/border.cjs.map +2 -2
  89. package/build/hooks/color.cjs +28 -9
  90. package/build/hooks/color.cjs.map +2 -2
  91. package/build/hooks/dimensions.cjs +15 -6
  92. package/build/hooks/dimensions.cjs.map +2 -2
  93. package/build/hooks/layout-child.cjs +147 -61
  94. package/build/hooks/layout-child.cjs.map +2 -2
  95. package/build/hooks/layout.cjs +263 -56
  96. package/build/hooks/layout.cjs.map +3 -3
  97. package/build/hooks/state-utils.cjs +94 -0
  98. package/build/hooks/state-utils.cjs.map +7 -0
  99. package/build/hooks/states.cjs +124 -0
  100. package/build/hooks/states.cjs.map +7 -0
  101. package/build/hooks/style.cjs +304 -17
  102. package/build/hooks/style.cjs.map +3 -3
  103. package/build/hooks/typography.cjs +14 -5
  104. package/build/hooks/typography.cjs.map +2 -2
  105. package/build/layouts/constrained.cjs +128 -55
  106. package/build/layouts/constrained.cjs.map +3 -3
  107. package/build/layouts/flex.cjs +119 -31
  108. package/build/layouts/flex.cjs.map +3 -3
  109. package/build/layouts/grid.cjs +103 -40
  110. package/build/layouts/grid.cjs.map +3 -3
  111. package/build/private-apis.cjs +2 -0
  112. package/build/private-apis.cjs.map +2 -2
  113. package/build/store/private-actions.cjs +18 -0
  114. package/build/store/private-actions.cjs.map +2 -2
  115. package/build/store/private-keys.cjs +10 -2
  116. package/build/store/private-keys.cjs.map +2 -2
  117. package/build/store/private-selectors.cjs +26 -2
  118. package/build/store/private-selectors.cjs.map +2 -2
  119. package/build/store/reducer.cjs +70 -1
  120. package/build/store/reducer.cjs.map +2 -2
  121. package/build/store/utils.cjs +1 -1
  122. package/build/store/utils.cjs.map +2 -2
  123. package/build/utils/color-values.cjs +44 -0
  124. package/build/utils/color-values.cjs.map +7 -0
  125. package/build-module/components/block-card/index.mjs +52 -45
  126. package/build-module/components/block-card/index.mjs.map +2 -2
  127. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
  128. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
  129. package/build-module/components/block-icon/index.mjs +8 -2
  130. package/build-module/components/block-icon/index.mjs.map +2 -2
  131. package/build-module/components/block-inspector/index.mjs +166 -13
  132. package/build-module/components/block-inspector/index.mjs.map +2 -2
  133. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
  134. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
  135. package/build-module/components/block-list/use-block-props/index.mjs +1 -1
  136. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  137. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +7 -5
  138. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  139. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +28 -15
  140. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
  141. package/build-module/components/block-lock/modal.mjs +4 -4
  142. package/build-module/components/block-lock/modal.mjs.map +2 -2
  143. package/build-module/components/block-patterns-list/index.mjs +14 -4
  144. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  145. package/build-module/components/block-popover/index.mjs +13 -3
  146. package/build-module/components/block-popover/index.mjs.map +2 -2
  147. package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
  148. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  149. package/build-module/components/block-visibility/modal.mjs +2 -2
  150. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  151. package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
  152. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  153. package/build-module/components/colors-gradients/control.mjs +7 -4
  154. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  155. package/build-module/components/global-styles/advanced-panel.mjs +25 -27
  156. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  157. package/build-module/components/global-styles/color-panel.mjs +96 -59
  158. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  159. package/build-module/components/global-styles/dimensions-panel.mjs +14 -5
  160. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  161. package/build-module/components/global-styles/index.mjs +2 -0
  162. package/build-module/components/global-styles/index.mjs.map +2 -2
  163. package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
  164. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  165. package/build-module/components/global-styles/state-control-badges.mjs +48 -0
  166. package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
  167. package/build-module/components/global-styles/state-control.mjs +57 -71
  168. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  169. package/build-module/components/iframe/index.mjs +0 -3
  170. package/build-module/components/iframe/index.mjs.map +2 -2
  171. package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
  172. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  173. package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
  174. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  175. package/build-module/components/inserter/index.mjs +1 -0
  176. package/build-module/components/inserter/index.mjs.map +2 -2
  177. package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
  178. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  179. package/build-module/components/inserter/media-tab/utils.mjs +1 -1
  180. package/build-module/components/inserter/media-tab/utils.mjs.map +2 -2
  181. package/build-module/components/inserter/panel.mjs +2 -2
  182. package/build-module/components/inserter/panel.mjs.map +2 -2
  183. package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
  184. package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
  185. package/build-module/components/inspector-controls/fill.mjs +18 -5
  186. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  187. package/build-module/components/inspector-controls/groups.mjs +2 -0
  188. package/build-module/components/inspector-controls/groups.mjs.map +2 -2
  189. package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
  190. package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
  191. package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
  192. package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
  193. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
  194. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  195. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
  196. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  197. package/build-module/components/list-view/block-select-button.mjs +20 -9
  198. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  199. package/build-module/components/list-view/block.mjs +2 -1
  200. package/build-module/components/list-view/block.mjs.map +2 -2
  201. package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
  202. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  203. package/build-module/components/preset-input-control/index.mjs +2 -2
  204. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  205. package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
  206. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  207. package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
  208. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  209. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
  210. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  211. package/build-module/hooks/background.mjs +18 -3
  212. package/build-module/hooks/background.mjs.map +2 -2
  213. package/build-module/hooks/block-fields/link/index.mjs +3 -3
  214. package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
  215. package/build-module/hooks/block-fields/media/index.mjs +3 -3
  216. package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
  217. package/build-module/hooks/block-style-state.mjs +79 -0
  218. package/build-module/hooks/block-style-state.mjs.map +7 -0
  219. package/build-module/hooks/border.mjs +18 -3
  220. package/build-module/hooks/border.mjs.map +2 -2
  221. package/build-module/hooks/color.mjs +33 -9
  222. package/build-module/hooks/color.mjs.map +2 -2
  223. package/build-module/hooks/dimensions.mjs +20 -6
  224. package/build-module/hooks/dimensions.mjs.map +2 -2
  225. package/build-module/hooks/layout-child.mjs +141 -61
  226. package/build-module/hooks/layout-child.mjs.map +2 -2
  227. package/build-module/hooks/layout.mjs +270 -58
  228. package/build-module/hooks/layout.mjs.map +2 -2
  229. package/build-module/hooks/state-utils.mjs +64 -0
  230. package/build-module/hooks/state-utils.mjs.map +7 -0
  231. package/build-module/hooks/states.mjs +85 -0
  232. package/build-module/hooks/states.mjs.map +7 -0
  233. package/build-module/hooks/style.mjs +309 -18
  234. package/build-module/hooks/style.mjs.map +2 -2
  235. package/build-module/hooks/typography.mjs +19 -5
  236. package/build-module/hooks/typography.mjs.map +2 -2
  237. package/build-module/layouts/constrained.mjs +130 -57
  238. package/build-module/layouts/constrained.mjs.map +2 -2
  239. package/build-module/layouts/flex.mjs +123 -35
  240. package/build-module/layouts/flex.mjs.map +2 -2
  241. package/build-module/layouts/grid.mjs +105 -42
  242. package/build-module/layouts/grid.mjs.map +2 -2
  243. package/build-module/private-apis.mjs +4 -0
  244. package/build-module/private-apis.mjs.map +2 -2
  245. package/build-module/store/private-actions.mjs +16 -0
  246. package/build-module/store/private-actions.mjs.map +2 -2
  247. package/build-module/store/private-keys.mjs +7 -1
  248. package/build-module/store/private-keys.mjs.map +2 -2
  249. package/build-module/store/private-selectors.mjs +25 -2
  250. package/build-module/store/private-selectors.mjs.map +2 -2
  251. package/build-module/store/reducer.mjs +69 -1
  252. package/build-module/store/reducer.mjs.map +2 -2
  253. package/build-module/store/utils.mjs +5 -2
  254. package/build-module/store/utils.mjs.map +2 -2
  255. package/build-module/utils/color-values.mjs +19 -0
  256. package/build-module/utils/color-values.mjs.map +7 -0
  257. package/build-style/content-rtl.css +18 -3
  258. package/build-style/content.css +18 -3
  259. package/build-style/style-rtl.css +14 -17
  260. package/build-style/style.css +14 -17
  261. package/package.json +41 -41
  262. package/src/components/audio-player/index.native.js +7 -3
  263. package/src/components/block-card/index.js +67 -60
  264. package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
  265. package/src/components/block-icon/index.js +5 -2
  266. package/src/components/block-icon/index.native.js +2 -2
  267. package/src/components/block-inspector/index.js +153 -7
  268. package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
  269. package/src/components/block-list/block-selection-button.native.js +3 -3
  270. package/src/components/block-list/content.scss +0 -6
  271. package/src/components/block-list/use-block-props/index.js +1 -1
  272. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
  273. package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
  274. package/src/components/block-lock/modal.js +4 -4
  275. package/src/components/block-patterns-list/index.js +14 -5
  276. package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
  277. package/src/components/block-patterns-list/style.scss +0 -1
  278. package/src/components/block-popover/index.js +20 -10
  279. package/src/components/block-toolbar/switch-section-style.js +2 -2
  280. package/src/components/block-visibility/modal.js +2 -2
  281. package/src/components/block-visibility/viewport-visibility-info.js +2 -2
  282. package/src/components/colors/test/with-colors.js +1 -1
  283. package/src/components/colors-gradients/control.js +10 -8
  284. package/src/components/colors-gradients/test/control.js +98 -1
  285. package/src/components/global-styles/advanced-panel.js +44 -39
  286. package/src/components/global-styles/color-panel.js +133 -60
  287. package/src/components/global-styles/dimensions-panel.js +17 -4
  288. package/src/components/global-styles/index.js +1 -0
  289. package/src/components/global-styles/shadow-panel-components.js +29 -19
  290. package/src/components/global-styles/state-control-badges.js +58 -0
  291. package/src/components/global-styles/state-control.js +28 -36
  292. package/src/components/global-styles/test/color-panel.js +135 -0
  293. package/src/components/iframe/index.js +0 -3
  294. package/src/components/iframe/use-scale-canvas.js +8 -2
  295. package/src/components/inserter/hooks/use-patterns-state.js +12 -7
  296. package/src/components/inserter/index.js +1 -0
  297. package/src/components/inserter/media-tab/media-preview.js +29 -20
  298. package/src/components/inserter/media-tab/utils.js +1 -1
  299. package/src/components/inserter/panel.js +2 -2
  300. package/src/components/inserter/style.scss +1 -0
  301. package/src/components/inserter-button/index.native.js +5 -2
  302. package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
  303. package/src/components/inspector-controls/fill.js +18 -5
  304. package/src/components/inspector-controls/groups.js +2 -0
  305. package/src/components/inspector-controls-tabs/index.js +9 -5
  306. package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
  307. package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
  308. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
  309. package/src/components/list-view/block-select-button.js +19 -9
  310. package/src/components/list-view/block.js +6 -1
  311. package/src/components/media-replace-flow/style.scss +0 -18
  312. package/src/components/preset-input-control/custom-value-controls.js +13 -6
  313. package/src/components/preset-input-control/index.js +2 -2
  314. package/src/components/provider/use-media-upload-settings.js +1 -0
  315. package/src/components/rich-text/event-listeners/enter.js +14 -2
  316. package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
  317. package/src/components/unsupported-block-details/index.native.js +6 -2
  318. package/src/components/video-player/index.native.js +2 -2
  319. package/src/components/warning/index.native.js +2 -2
  320. package/src/hooks/background.js +59 -37
  321. package/src/hooks/block-fields/link/index.js +3 -3
  322. package/src/hooks/block-fields/media/index.js +3 -3
  323. package/src/hooks/block-style-state.js +127 -0
  324. package/src/hooks/border.js +25 -6
  325. package/src/hooks/color.js +40 -18
  326. package/src/hooks/dimensions.js +32 -11
  327. package/src/hooks/layout-child.js +179 -62
  328. package/src/hooks/layout.js +349 -75
  329. package/src/hooks/layout.scss +6 -0
  330. package/src/hooks/state-utils.js +158 -0
  331. package/src/hooks/states.js +109 -0
  332. package/src/hooks/style.js +456 -19
  333. package/src/hooks/test/block-style-state.js +270 -0
  334. package/src/hooks/test/layout.js +185 -0
  335. package/src/hooks/test/state-utils.js +193 -0
  336. package/src/hooks/test/style.js +301 -1
  337. package/src/hooks/typography.js +33 -14
  338. package/src/layouts/constrained.js +182 -95
  339. package/src/layouts/flex.js +141 -36
  340. package/src/layouts/grid.js +122 -32
  341. package/src/layouts/test/flex.js +57 -20
  342. package/src/private-apis.js +4 -0
  343. package/src/store/private-actions.js +32 -0
  344. package/src/store/private-keys.js +4 -0
  345. package/src/store/private-selectors.js +44 -2
  346. package/src/store/reducer.js +105 -1
  347. package/src/store/test/private-actions.js +26 -0
  348. package/src/store/test/private-selectors.js +90 -0
  349. package/src/store/test/reducer.js +363 -0
  350. package/src/store/utils.js +6 -2
  351. package/src/utils/color-values.js +28 -0
  352. package/src/utils/test/color-values.js +78 -0
@@ -1,7 +1,10 @@
1
1
  // packages/block-editor/src/store/utils.js
2
2
  import { parse } from "@wordpress/blocks";
3
3
  import { parse as grammarParse } from "@wordpress/block-serialization-default-parser";
4
- import { selectBlockPatternsKey } from "./private-keys.mjs";
4
+ import {
5
+ selectBlockPatternsKey,
6
+ userPatternCategoriesSelectKey
7
+ } from "./private-keys.mjs";
5
8
  import { unlock } from "../lock-unlock.mjs";
6
9
  import { STORE_NAME } from "./constants.mjs";
7
10
  import {
@@ -103,7 +106,7 @@ var checkAllowListRecursive = (blocks, allowedBlockTypes) => {
103
106
  var getAllPatternsDependants = (select) => (state) => {
104
107
  return [
105
108
  state.settings.__experimentalBlockPatterns,
106
- state.settings.__experimentalUserPatternCategories,
109
+ state.settings[userPatternCategoriesSelectKey]?.(select) ?? state.settings.__experimentalUserPatternCategories,
107
110
  state.settings.__experimentalReusableBlocks,
108
111
  state.settings[selectBlockPatternsKey]?.(select),
109
112
  state.blockPatterns,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/utils.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { parse as grammarParse } from '@wordpress/block-serialization-default-parser';\n\n/**\n * Internal dependencies\n */\nimport { selectBlockPatternsKey } from './private-keys';\nimport { unlock } from '../lock-unlock';\nimport { STORE_NAME } from './constants';\nimport {\n\tgetSectionRootClientId,\n\tisSectionBlock,\n\tgetParentSectionBlock,\n} from './private-selectors';\nimport { getBlockEditingMode } from './selectors';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\n\nexport const isFiltered = Symbol( 'isFiltered' );\nconst parsedPatternCache = new WeakMap();\nconst grammarMapCache = new WeakMap();\n\nexport function mapUserPattern(\n\tuserPattern,\n\t__experimentalUserPatternCategories = []\n) {\n\treturn {\n\t\tname: `core/block/${ userPattern.id }`,\n\t\tid: userPattern.id,\n\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\ttitle: userPattern.title?.raw,\n\t\tcategories: userPattern.wp_pattern_category?.map( ( catId ) => {\n\t\t\tconst category = __experimentalUserPatternCategories.find(\n\t\t\t\t( { id } ) => id === catId\n\t\t\t);\n\t\t\treturn category ? category.slug : catId;\n\t\t} ),\n\t\tcontent: userPattern.content?.raw,\n\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t};\n}\n\nfunction parsePattern( pattern ) {\n\tconst blocks = parse( pattern.content, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} );\n\tif ( blocks.length === 1 ) {\n\t\tblocks[ 0 ].attributes = {\n\t\t\t...blocks[ 0 ].attributes,\n\t\t\tmetadata: {\n\t\t\t\t...( blocks[ 0 ].attributes.metadata || {} ),\n\t\t\t\tcategories: pattern.categories,\n\t\t\t\tpatternName: pattern.name,\n\t\t\t\tname: blocks[ 0 ].attributes.metadata?.name || pattern.title,\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\t...pattern,\n\t\tblocks,\n\t};\n}\n\nexport function getParsedPattern( pattern ) {\n\tlet parsedPattern = parsedPatternCache.get( pattern );\n\tif ( ! parsedPattern ) {\n\t\tparsedPattern = parsePattern( pattern );\n\t\tparsedPatternCache.set( pattern, parsedPattern );\n\t}\n\treturn parsedPattern;\n}\n\nexport function getGrammar( pattern ) {\n\tlet grammarMap = grammarMapCache.get( pattern );\n\tif ( ! grammarMap ) {\n\t\tgrammarMap = grammarParse( pattern.content );\n\t\t// Block names are null only at the top level for whitespace.\n\t\tgrammarMap = grammarMap.filter( ( block ) => block.blockName !== null );\n\t\tgrammarMapCache.set( pattern, grammarMap );\n\t}\n\treturn grammarMap;\n}\n\nexport const checkAllowList = ( list, item, defaultResult = null ) => {\n\tif ( typeof list === 'boolean' ) {\n\t\treturn list;\n\t}\n\tif ( Array.isArray( list ) ) {\n\t\t// TODO: when there is a canonical way to detect that we are editing a post\n\t\t// the following check should be changed to something like:\n\t\t// if ( list.includes( 'core/post-content' ) && getEditorMode() === 'post-content' && item === null )\n\t\tif ( list.includes( 'core/post-content' ) && item === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn list.includes( item );\n\t}\n\treturn defaultResult;\n};\n\nexport const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {\n\tif ( typeof allowedBlockTypes === 'boolean' ) {\n\t\treturn allowedBlockTypes;\n\t}\n\n\tconst blocksQueue = [ ...blocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\n\t\tconst isAllowed = checkAllowList(\n\t\t\tallowedBlockTypes,\n\t\t\tblock.name || block.blockName,\n\t\t\ttrue\n\t\t);\n\t\tif ( ! isAllowed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\n\treturn true;\n};\n\nexport const getAllPatternsDependants = ( select ) => ( state ) => {\n\treturn [\n\t\tstate.settings.__experimentalBlockPatterns,\n\t\tstate.settings.__experimentalUserPatternCategories,\n\t\tstate.settings.__experimentalReusableBlocks,\n\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\tstate.blockPatterns,\n\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t];\n};\n\nexport const getInsertBlockTypeDependants = () => ( state, rootClientId ) => {\n\treturn [\n\t\tstate.blockListSettings.get( rootClientId ),\n\t\tstate.blocks.byClientId.get( rootClientId ),\n\t\tstate.blocks.order.get( rootClientId || '' ),\n\t\tstate.settings.allowedBlockTypes,\n\t\tstate.settings.templateLock,\n\t\tgetBlockEditingMode( state, rootClientId ),\n\t\tgetSectionRootClientId( state ),\n\t\tisSectionBlock( state, rootClientId ),\n\t\tgetParentSectionBlock( state, rootClientId ),\n\t];\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { parse as grammarParse } from '@wordpress/block-serialization-default-parser';\n\n/**\n * Internal dependencies\n */\nimport {\n\tselectBlockPatternsKey,\n\tuserPatternCategoriesSelectKey,\n} from './private-keys';\nimport { unlock } from '../lock-unlock';\nimport { STORE_NAME } from './constants';\nimport {\n\tgetSectionRootClientId,\n\tisSectionBlock,\n\tgetParentSectionBlock,\n} from './private-selectors';\nimport { getBlockEditingMode } from './selectors';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\n\nexport const isFiltered = Symbol( 'isFiltered' );\nconst parsedPatternCache = new WeakMap();\nconst grammarMapCache = new WeakMap();\n\nexport function mapUserPattern(\n\tuserPattern,\n\t__experimentalUserPatternCategories = []\n) {\n\treturn {\n\t\tname: `core/block/${ userPattern.id }`,\n\t\tid: userPattern.id,\n\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\ttitle: userPattern.title?.raw,\n\t\tcategories: userPattern.wp_pattern_category?.map( ( catId ) => {\n\t\t\tconst category = __experimentalUserPatternCategories.find(\n\t\t\t\t( { id } ) => id === catId\n\t\t\t);\n\t\t\treturn category ? category.slug : catId;\n\t\t} ),\n\t\tcontent: userPattern.content?.raw,\n\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t};\n}\n\nfunction parsePattern( pattern ) {\n\tconst blocks = parse( pattern.content, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} );\n\tif ( blocks.length === 1 ) {\n\t\tblocks[ 0 ].attributes = {\n\t\t\t...blocks[ 0 ].attributes,\n\t\t\tmetadata: {\n\t\t\t\t...( blocks[ 0 ].attributes.metadata || {} ),\n\t\t\t\tcategories: pattern.categories,\n\t\t\t\tpatternName: pattern.name,\n\t\t\t\tname: blocks[ 0 ].attributes.metadata?.name || pattern.title,\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\t...pattern,\n\t\tblocks,\n\t};\n}\n\nexport function getParsedPattern( pattern ) {\n\tlet parsedPattern = parsedPatternCache.get( pattern );\n\tif ( ! parsedPattern ) {\n\t\tparsedPattern = parsePattern( pattern );\n\t\tparsedPatternCache.set( pattern, parsedPattern );\n\t}\n\treturn parsedPattern;\n}\n\nexport function getGrammar( pattern ) {\n\tlet grammarMap = grammarMapCache.get( pattern );\n\tif ( ! grammarMap ) {\n\t\tgrammarMap = grammarParse( pattern.content );\n\t\t// Block names are null only at the top level for whitespace.\n\t\tgrammarMap = grammarMap.filter( ( block ) => block.blockName !== null );\n\t\tgrammarMapCache.set( pattern, grammarMap );\n\t}\n\treturn grammarMap;\n}\n\nexport const checkAllowList = ( list, item, defaultResult = null ) => {\n\tif ( typeof list === 'boolean' ) {\n\t\treturn list;\n\t}\n\tif ( Array.isArray( list ) ) {\n\t\t// TODO: when there is a canonical way to detect that we are editing a post\n\t\t// the following check should be changed to something like:\n\t\t// if ( list.includes( 'core/post-content' ) && getEditorMode() === 'post-content' && item === null )\n\t\tif ( list.includes( 'core/post-content' ) && item === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn list.includes( item );\n\t}\n\treturn defaultResult;\n};\n\nexport const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {\n\tif ( typeof allowedBlockTypes === 'boolean' ) {\n\t\treturn allowedBlockTypes;\n\t}\n\n\tconst blocksQueue = [ ...blocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\n\t\tconst isAllowed = checkAllowList(\n\t\t\tallowedBlockTypes,\n\t\t\tblock.name || block.blockName,\n\t\t\ttrue\n\t\t);\n\t\tif ( ! isAllowed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\n\treturn true;\n};\n\nexport const getAllPatternsDependants = ( select ) => ( state ) => {\n\treturn [\n\t\tstate.settings.__experimentalBlockPatterns,\n\t\tstate.settings[ userPatternCategoriesSelectKey ]?.( select ) ??\n\t\t\tstate.settings.__experimentalUserPatternCategories,\n\t\tstate.settings.__experimentalReusableBlocks,\n\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\tstate.blockPatterns,\n\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t];\n};\n\nexport const getInsertBlockTypeDependants = () => ( state, rootClientId ) => {\n\treturn [\n\t\tstate.blockListSettings.get( rootClientId ),\n\t\tstate.blocks.byClientId.get( rootClientId ),\n\t\tstate.blocks.order.get( rootClientId || '' ),\n\t\tstate.settings.allowedBlockTypes,\n\t\tstate.settings.templateLock,\n\t\tgetBlockEditingMode( state, rootClientId ),\n\t\tgetSectionRootClientId( state ),\n\t\tisSectionBlock( state, rootClientId ),\n\t\tgetParentSectionBlock( state, rootClientId ),\n\t];\n};\n"],
5
+ "mappings": ";AAGA,SAAS,aAAa;AACtB,SAAS,SAAS,oBAAoB;AAKtC;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,2BAA2B;AACpC,SAAS,8BAA8B;AAEhC,IAAM,aAAa,uBAAQ,YAAa;AAC/C,IAAM,qBAAqB,oBAAI,QAAQ;AACvC,IAAM,kBAAkB,oBAAI,QAAQ;AAE7B,SAAS,eACf,aACA,sCAAsC,CAAC,GACtC;AACD,SAAO;AAAA,IACN,MAAM,cAAe,YAAY,EAAG;AAAA,IACpC,IAAI,YAAY;AAAA,IAChB,MAAM,uBAAuB;AAAA,IAC7B,OAAO,YAAY,OAAO;AAAA,IAC1B,YAAY,YAAY,qBAAqB,IAAK,CAAE,UAAW;AAC9D,YAAM,WAAW,oCAAoC;AAAA,QACpD,CAAE,EAAE,GAAG,MAAO,OAAO;AAAA,MACtB;AACA,aAAO,WAAW,SAAS,OAAO;AAAA,IACnC,CAAE;AAAA,IACF,SAAS,YAAY,SAAS;AAAA,IAC9B,YAAY,YAAY;AAAA,EACzB;AACD;AAEA,SAAS,aAAc,SAAU;AAChC,QAAM,SAAS,MAAO,QAAQ,SAAS;AAAA,IACtC,6BAA6B;AAAA,EAC9B,CAAE;AACF,MAAK,OAAO,WAAW,GAAI;AAC1B,WAAQ,CAAE,EAAE,aAAa;AAAA,MACxB,GAAG,OAAQ,CAAE,EAAE;AAAA,MACf,UAAU;AAAA,QACT,GAAK,OAAQ,CAAE,EAAE,WAAW,YAAY,CAAC;AAAA,QACzC,YAAY,QAAQ;AAAA,QACpB,aAAa,QAAQ;AAAA,QACrB,MAAM,OAAQ,CAAE,EAAE,WAAW,UAAU,QAAQ,QAAQ;AAAA,MACxD;AAAA,IACD;AAAA,EACD;AACA,SAAO;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;AAEO,SAAS,iBAAkB,SAAU;AAC3C,MAAI,gBAAgB,mBAAmB,IAAK,OAAQ;AACpD,MAAK,CAAE,eAAgB;AACtB,oBAAgB,aAAc,OAAQ;AACtC,uBAAmB,IAAK,SAAS,aAAc;AAAA,EAChD;AACA,SAAO;AACR;AAEO,SAAS,WAAY,SAAU;AACrC,MAAI,aAAa,gBAAgB,IAAK,OAAQ;AAC9C,MAAK,CAAE,YAAa;AACnB,iBAAa,aAAc,QAAQ,OAAQ;AAE3C,iBAAa,WAAW,OAAQ,CAAE,UAAW,MAAM,cAAc,IAAK;AACtE,oBAAgB,IAAK,SAAS,UAAW;AAAA,EAC1C;AACA,SAAO;AACR;AAEO,IAAM,iBAAiB,CAAE,MAAM,MAAM,gBAAgB,SAAU;AACrE,MAAK,OAAO,SAAS,WAAY;AAChC,WAAO;AAAA,EACR;AACA,MAAK,MAAM,QAAS,IAAK,GAAI;AAI5B,QAAK,KAAK,SAAU,mBAAoB,KAAK,SAAS,MAAO;AAC5D,aAAO;AAAA,IACR;AACA,WAAO,KAAK,SAAU,IAAK;AAAA,EAC5B;AACA,SAAO;AACR;AAEO,IAAM,0BAA0B,CAAE,QAAQ,sBAAuB;AACvE,MAAK,OAAO,sBAAsB,WAAY;AAC7C,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,CAAE,GAAG,MAAO;AAChC,SAAQ,YAAY,SAAS,GAAI;AAChC,UAAM,QAAQ,YAAY,MAAM;AAEhC,UAAM,YAAY;AAAA,MACjB;AAAA,MACA,MAAM,QAAQ,MAAM;AAAA,MACpB;AAAA,IACD;AACA,QAAK,CAAE,WAAY;AAClB,aAAO;AAAA,IACR;AAEA,UAAM,aAAa,QAAS,CAAE,eAAgB;AAC7C,kBAAY,KAAM,UAAW;AAAA,IAC9B,CAAE;AAAA,EACH;AAEA,SAAO;AACR;AAEO,IAAM,2BAA2B,CAAE,WAAY,CAAE,UAAW;AAClE,SAAO;AAAA,IACN,MAAM,SAAS;AAAA,IACf,MAAM,SAAU,8BAA+B,IAAK,MAAO,KAC1D,MAAM,SAAS;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,MAAM,SAAU,sBAAuB,IAAK,MAAO;AAAA,IACnD,MAAM;AAAA,IACN,OAAQ,OAAQ,UAAW,CAAE,EAAE,kBAAkB;AAAA,EAClD;AACD;AAEO,IAAM,+BAA+B,MAAM,CAAE,OAAO,iBAAkB;AAC5E,SAAO;AAAA,IACN,MAAM,kBAAkB,IAAK,YAAa;AAAA,IAC1C,MAAM,OAAO,WAAW,IAAK,YAAa;AAAA,IAC1C,MAAM,OAAO,MAAM,IAAK,gBAAgB,EAAG;AAAA,IAC3C,MAAM,SAAS;AAAA,IACf,MAAM,SAAS;AAAA,IACf,oBAAqB,OAAO,YAAa;AAAA,IACzC,uBAAwB,KAAM;AAAA,IAC9B,eAAgB,OAAO,YAAa;AAAA,IACpC,sBAAuB,OAAO,YAAa;AAAA,EAC5C;AACD;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,19 @@
1
+ // packages/block-editor/src/utils/color-values.js
2
+ function extractPresetSlug(rawValue, type) {
3
+ if (typeof rawValue !== "string") {
4
+ return void 0;
5
+ }
6
+ const userPrefix = `var:preset|${type}|`;
7
+ if (rawValue.startsWith(userPrefix)) {
8
+ return rawValue.slice(userPrefix.length);
9
+ }
10
+ const cssVarPrefix = `--wp--preset--${type}--`;
11
+ const themeFormatMatch = rawValue.match(
12
+ new RegExp(`^var\\(${cssVarPrefix}([^)]+)\\)$`)
13
+ );
14
+ return themeFormatMatch?.[1];
15
+ }
16
+ export {
17
+ extractPresetSlug
18
+ };
19
+ //# sourceMappingURL=color-values.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/color-values.js"],
4
+ "sourcesContent": ["/**\n * Extracts the palette slug from a style value for any preset type, supporting\n * both the user preset format and the theme CSS-variable format:\n *\n * - User format: `var:preset|<type>|slug`\n * - Theme format: `var(--wp--preset--<type>--slug)`\n *\n * Returns `undefined` for plain values, non-strings, or any other\n * unrecognised format.\n *\n * @param {*} rawValue Raw style value stored in the style object.\n * @param {'color'|'gradient'} type Preset type, e.g. `'color'` or `'gradient'`.\n * @return {string|undefined} The palette slug, or undefined.\n */\nexport function extractPresetSlug( rawValue, type ) {\n\tif ( typeof rawValue !== 'string' ) {\n\t\treturn undefined;\n\t}\n\tconst userPrefix = `var:preset|${ type }|`;\n\tif ( rawValue.startsWith( userPrefix ) ) {\n\t\treturn rawValue.slice( userPrefix.length );\n\t}\n\tconst cssVarPrefix = `--wp--preset--${ type }--`;\n\tconst themeFormatMatch = rawValue.match(\n\t\tnew RegExp( `^var\\\\(${ cssVarPrefix }([^)]+)\\\\)$` )\n\t);\n\treturn themeFormatMatch?.[ 1 ];\n}\n"],
5
+ "mappings": ";AAcO,SAAS,kBAAmB,UAAU,MAAO;AACnD,MAAK,OAAO,aAAa,UAAW;AACnC,WAAO;AAAA,EACR;AACA,QAAM,aAAa,cAAe,IAAK;AACvC,MAAK,SAAS,WAAY,UAAW,GAAI;AACxC,WAAO,SAAS,MAAO,WAAW,MAAO;AAAA,EAC1C;AACA,QAAM,eAAe,iBAAkB,IAAK;AAC5C,QAAM,mBAAmB,SAAS;AAAA,IACjC,IAAI,OAAQ,UAAW,YAAa,aAAc;AAAA,EACnD;AACA,SAAO,mBAAoB,CAAE;AAC9B;",
6
+ "names": []
7
+ }
@@ -248,9 +248,6 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
248
248
  margin: 0 0 12px 0;
249
249
  width: 100%;
250
250
  }
251
- .block-editor-block-list__layout .block-editor-block-list__block .components-with-notices-ui .components-notice .components-notice__content {
252
- font-size: 13px;
253
- }
254
251
  .block-editor-block-list__layout .block-editor-block-list__block.has-warning {
255
252
  min-height: 48px;
256
253
  }
@@ -698,6 +695,14 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
698
695
  color: #fff;
699
696
  background: var(--wp-admin-theme-color);
700
697
  }
698
+ @media not (prefers-reduced-motion) {
699
+ .block-editor-default-block-appender .block-editor-inserter__toggle.components-button.has-icon svg {
700
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
701
+ }
702
+ }
703
+ .block-editor-default-block-appender .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg {
704
+ transform: rotate(-45deg);
705
+ }
701
706
 
702
707
  .block-editor-default-block-appender .block-editor-inserter {
703
708
  position: absolute;
@@ -746,6 +751,16 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
746
751
  color: #fff;
747
752
  background: var(--wp-admin-theme-color);
748
753
  }
754
+ @media not (prefers-reduced-motion) {
755
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon svg,
756
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle svg {
757
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
758
+ }
759
+ }
760
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg,
761
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle.is-pressed svg {
762
+ transform: rotate(-45deg);
763
+ }
749
764
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
750
765
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
751
766
  flex-direction: row;
@@ -248,9 +248,6 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
248
248
  margin: 0 0 12px 0;
249
249
  width: 100%;
250
250
  }
251
- .block-editor-block-list__layout .block-editor-block-list__block .components-with-notices-ui .components-notice .components-notice__content {
252
- font-size: 13px;
253
- }
254
251
  .block-editor-block-list__layout .block-editor-block-list__block.has-warning {
255
252
  min-height: 48px;
256
253
  }
@@ -699,6 +696,14 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
699
696
  color: #fff;
700
697
  background: var(--wp-admin-theme-color);
701
698
  }
699
+ @media not (prefers-reduced-motion) {
700
+ .block-editor-default-block-appender .block-editor-inserter__toggle.components-button.has-icon svg {
701
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
702
+ }
703
+ }
704
+ .block-editor-default-block-appender .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg {
705
+ transform: rotate(45deg);
706
+ }
702
707
 
703
708
  .block-editor-default-block-appender .block-editor-inserter {
704
709
  position: absolute;
@@ -747,6 +752,16 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
747
752
  color: #fff;
748
753
  background: var(--wp-admin-theme-color);
749
754
  }
755
+ @media not (prefers-reduced-motion) {
756
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon svg,
757
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle svg {
758
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
759
+ }
760
+ }
761
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg,
762
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle.is-pressed svg {
763
+ transform: rotate(45deg);
764
+ }
750
765
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
751
766
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
752
767
  flex-direction: row;
@@ -419,6 +419,16 @@ iframe[name=editor-canvas] {
419
419
  color: #fff;
420
420
  background: var(--wp-admin-theme-color);
421
421
  }
422
+ @media not (prefers-reduced-motion) {
423
+ .block-editor-block-list__empty-block-inserter .block-editor-inserter__toggle.components-button.has-icon svg,
424
+ .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon svg {
425
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
426
+ }
427
+ }
428
+ .block-editor-block-list__empty-block-inserter .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg,
429
+ .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg {
430
+ transform: rotate(-45deg);
431
+ }
422
432
 
423
433
  .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon {
424
434
  background: var(--wp-admin-theme-color);
@@ -1000,7 +1010,6 @@ iframe[name=editor-canvas] {
1000
1010
  }
1001
1011
  .block-editor-block-patterns-list__item .block-editor-block-patterns-list__item-title {
1002
1012
  flex-grow: 1;
1003
- font-size: 12px;
1004
1013
  text-align: right;
1005
1014
  }
1006
1015
  .block-editor-block-patterns-list__item .block-editor-block-preview__container {
@@ -3042,22 +3051,6 @@ iframe[name=editor-canvas] {
3042
3051
  padding: 8px 0 0;
3043
3052
  }
3044
3053
 
3045
- .block-editor-media-flow__error {
3046
- padding: 0 20px 20px 20px;
3047
- max-width: 255px;
3048
- }
3049
- .block-editor-media-flow__error .components-with-notices-ui {
3050
- max-width: 255px;
3051
- }
3052
- .block-editor-media-flow__error .components-with-notices-ui .components-notice__content {
3053
- overflow: hidden;
3054
- word-wrap: break-word;
3055
- }
3056
- .block-editor-media-flow__error .components-with-notices-ui .components-notice__dismiss {
3057
- position: absolute;
3058
- left: 10px;
3059
- }
3060
-
3061
3054
  .block-editor-multi-selection-inspector__card {
3062
3055
  padding: 16px;
3063
3056
  }
@@ -3665,6 +3658,10 @@ div.block-editor-bindings__panel button:hover .block-editor-bindings__item span
3665
3658
  margin-bottom: 0;
3666
3659
  }
3667
3660
 
3661
+ .layout-block-support-panel .block-editor-hooks__flex-layout-controls {
3662
+ grid-column: 1/-1;
3663
+ }
3664
+
3668
3665
  .block-editor-hooks__flex-layout-justification-controls,
3669
3666
  .block-editor-hooks__flex-layout-orientation-controls {
3670
3667
  margin-bottom: 12px;
@@ -419,6 +419,16 @@ iframe[name=editor-canvas] {
419
419
  color: #fff;
420
420
  background: var(--wp-admin-theme-color);
421
421
  }
422
+ @media not (prefers-reduced-motion) {
423
+ .block-editor-block-list__empty-block-inserter .block-editor-inserter__toggle.components-button.has-icon svg,
424
+ .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon svg {
425
+ transition: transform cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
426
+ }
427
+ }
428
+ .block-editor-block-list__empty-block-inserter .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg,
429
+ .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon.is-pressed svg {
430
+ transform: rotate(45deg);
431
+ }
422
432
 
423
433
  .block-editor-block-list__insertion-point-inserter .block-editor-inserter__toggle.components-button.has-icon {
424
434
  background: var(--wp-admin-theme-color);
@@ -1000,7 +1010,6 @@ iframe[name=editor-canvas] {
1000
1010
  }
1001
1011
  .block-editor-block-patterns-list__item .block-editor-block-patterns-list__item-title {
1002
1012
  flex-grow: 1;
1003
- font-size: 12px;
1004
1013
  text-align: left;
1005
1014
  }
1006
1015
  .block-editor-block-patterns-list__item .block-editor-block-preview__container {
@@ -3044,22 +3053,6 @@ iframe[name=editor-canvas] {
3044
3053
  padding: 8px 0 0;
3045
3054
  }
3046
3055
 
3047
- .block-editor-media-flow__error {
3048
- padding: 0 20px 20px 20px;
3049
- max-width: 255px;
3050
- }
3051
- .block-editor-media-flow__error .components-with-notices-ui {
3052
- max-width: 255px;
3053
- }
3054
- .block-editor-media-flow__error .components-with-notices-ui .components-notice__content {
3055
- overflow: hidden;
3056
- word-wrap: break-word;
3057
- }
3058
- .block-editor-media-flow__error .components-with-notices-ui .components-notice__dismiss {
3059
- position: absolute;
3060
- right: 10px;
3061
- }
3062
-
3063
3056
  .block-editor-multi-selection-inspector__card {
3064
3057
  padding: 16px;
3065
3058
  }
@@ -3667,6 +3660,10 @@ div.block-editor-bindings__panel button:hover .block-editor-bindings__item span
3667
3660
  margin-bottom: 0;
3668
3661
  }
3669
3662
 
3663
+ .layout-block-support-panel .block-editor-hooks__flex-layout-controls {
3664
+ grid-column: 1/-1;
3665
+ }
3666
+
3670
3667
  .block-editor-hooks__flex-layout-justification-controls,
3671
3668
  .block-editor-hooks__flex-layout-orientation-controls {
3672
3669
  margin-bottom: 12px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "15.19.1-next.v.202605131032.0+f6d6e7149",
3
+ "version": "15.20.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -61,43 +61,43 @@
61
61
  ],
62
62
  "dependencies": {
63
63
  "@react-spring/web": "^9.4.5",
64
- "@wordpress/a11y": "^4.45.1-next.v.202605131032.0+f6d6e7149",
65
- "@wordpress/base-styles": "^8.0.1-next.v.202605131032.0+f6d6e7149",
66
- "@wordpress/blob": "^4.45.1-next.v.202605131032.0+f6d6e7149",
67
- "@wordpress/block-serialization-default-parser": "^5.45.1-next.v.202605131032.0+f6d6e7149",
68
- "@wordpress/blocks": "^15.18.1-next.v.202605131032.0+f6d6e7149",
69
- "@wordpress/commands": "^1.45.1-next.v.202605131032.0+f6d6e7149",
70
- "@wordpress/components": "^33.1.1-next.v.202605131032.0+f6d6e7149",
71
- "@wordpress/compose": "^7.45.1-next.v.202605131032.0+f6d6e7149",
72
- "@wordpress/data": "^10.45.1-next.v.202605131032.0+f6d6e7149",
73
- "@wordpress/dataviews": "^14.2.1-next.v.202605131032.0+f6d6e7149",
74
- "@wordpress/date": "^5.45.1-next.v.202605131032.0+f6d6e7149",
75
- "@wordpress/deprecated": "^4.45.1-next.v.202605131032.0+f6d6e7149",
76
- "@wordpress/dom": "^4.45.1-next.v.202605131032.0+f6d6e7149",
77
- "@wordpress/element": "^6.45.1-next.v.202605131032.0+f6d6e7149",
78
- "@wordpress/escape-html": "^3.45.1-next.v.202605131032.0+f6d6e7149",
79
- "@wordpress/global-styles-engine": "^1.12.1-next.v.202605131032.0+f6d6e7149",
80
- "@wordpress/hooks": "^4.45.1-next.v.202605131032.0+f6d6e7149",
81
- "@wordpress/html-entities": "^4.45.1-next.v.202605131032.0+f6d6e7149",
82
- "@wordpress/i18n": "^6.18.1-next.v.202605131032.0+f6d6e7149",
83
- "@wordpress/icons": "^13.0.1-next.v.202605131032.0+f6d6e7149",
84
- "@wordpress/image-cropper": "^1.9.1-next.v.202605131032.0+f6d6e7149",
85
- "@wordpress/interactivity": "^6.45.1-next.v.202605131032.0+f6d6e7149",
86
- "@wordpress/is-shallow-equal": "^5.45.1-next.v.202605131032.0+f6d6e7149",
87
- "@wordpress/keyboard-shortcuts": "^5.45.1-next.v.202605131032.0+f6d6e7149",
88
- "@wordpress/keycodes": "^4.45.1-next.v.202605131032.0+f6d6e7149",
89
- "@wordpress/notices": "^5.45.1-next.v.202605131032.0+f6d6e7149",
90
- "@wordpress/preferences": "^4.45.1-next.v.202605131032.0+f6d6e7149",
91
- "@wordpress/priority-queue": "^3.45.1-next.v.202605131032.0+f6d6e7149",
92
- "@wordpress/private-apis": "^1.45.1-next.v.202605131032.0+f6d6e7149",
93
- "@wordpress/rich-text": "^7.45.1-next.v.202605131032.0+f6d6e7149",
94
- "@wordpress/style-engine": "^2.45.1-next.v.202605131032.0+f6d6e7149",
95
- "@wordpress/token-list": "^3.45.1-next.v.202605131032.0+f6d6e7149",
96
- "@wordpress/ui": "^0.13.1-next.v.202605131032.0+f6d6e7149",
97
- "@wordpress/upload-media": "^0.30.1-next.v.202605131032.0+f6d6e7149",
98
- "@wordpress/url": "^4.45.1-next.v.202605131032.0+f6d6e7149",
99
- "@wordpress/warning": "^3.45.1-next.v.202605131032.0+f6d6e7149",
100
- "@wordpress/wordcount": "^4.45.1-next.v.202605131032.0+f6d6e7149",
64
+ "@wordpress/a11y": "^4.47.0",
65
+ "@wordpress/base-styles": "^9.0.0",
66
+ "@wordpress/blob": "^4.47.0",
67
+ "@wordpress/block-serialization-default-parser": "^5.47.0",
68
+ "@wordpress/blocks": "^15.20.0",
69
+ "@wordpress/commands": "^1.47.0",
70
+ "@wordpress/components": "^34.0.0",
71
+ "@wordpress/compose": "^8.0.0",
72
+ "@wordpress/data": "^10.47.0",
73
+ "@wordpress/dataviews": "^15.0.0",
74
+ "@wordpress/date": "^5.47.0",
75
+ "@wordpress/deprecated": "^4.47.0",
76
+ "@wordpress/dom": "^4.47.0",
77
+ "@wordpress/element": "^7.0.0",
78
+ "@wordpress/escape-html": "^3.47.0",
79
+ "@wordpress/global-styles-engine": "^1.14.0",
80
+ "@wordpress/hooks": "^4.47.0",
81
+ "@wordpress/html-entities": "^4.47.0",
82
+ "@wordpress/i18n": "^6.20.0",
83
+ "@wordpress/icons": "^13.2.0",
84
+ "@wordpress/image-cropper": "^1.11.0",
85
+ "@wordpress/interactivity": "^6.47.0",
86
+ "@wordpress/is-shallow-equal": "^5.47.0",
87
+ "@wordpress/keyboard-shortcuts": "^5.47.0",
88
+ "@wordpress/keycodes": "^4.47.0",
89
+ "@wordpress/notices": "^5.47.0",
90
+ "@wordpress/preferences": "^4.47.0",
91
+ "@wordpress/priority-queue": "^3.47.0",
92
+ "@wordpress/private-apis": "^1.47.0",
93
+ "@wordpress/rich-text": "^7.47.0",
94
+ "@wordpress/style-engine": "^2.47.0",
95
+ "@wordpress/token-list": "^3.47.0",
96
+ "@wordpress/ui": "^0.14.0",
97
+ "@wordpress/upload-media": "^0.32.0",
98
+ "@wordpress/url": "^4.47.0",
99
+ "@wordpress/warning": "^3.47.0",
100
+ "@wordpress/wordcount": "^4.47.0",
101
101
  "change-case": "^4.1.2",
102
102
  "clsx": "^2.1.1",
103
103
  "colord": "^2.7.0",
@@ -118,11 +118,11 @@
118
118
  "deep-freeze": "0.0.1"
119
119
  },
120
120
  "peerDependencies": {
121
- "react": "^18.0.0",
122
- "react-dom": "^18.0.0"
121
+ "react": "^19.2.4",
122
+ "react-dom": "^19.2.4"
123
123
  },
124
124
  "publishConfig": {
125
125
  "access": "public"
126
126
  },
127
- "gitHead": "0e198c7ac7ca634e73ded9220ce048c0302174dd"
127
+ "gitHead": "d653c5fd6161571a0c2ebde28553d6e25624eacc"
128
128
  }
@@ -14,7 +14,7 @@ import { default as VideoPlayer } from 'react-native-video';
14
14
  * WordPress dependencies
15
15
  */
16
16
  import { View } from '@wordpress/primitives';
17
- import { Icon } from '@wordpress/components';
17
+ import { Icon as WCIcon } from '@wordpress/components';
18
18
  import { withPreferredColorScheme } from '@wordpress/compose';
19
19
  import { __ } from '@wordpress/i18n';
20
20
  import { audio, cautionFilled } from '@wordpress/icons';
@@ -160,13 +160,17 @@ function Player( {
160
160
  >
161
161
  <View style={ containerStyle }>
162
162
  <View style={ iconContainerStyle }>
163
- <Icon icon={ audio } style={ finalIconStyle } size={ 24 } />
163
+ <WCIcon
164
+ icon={ audio }
165
+ style={ finalIconStyle }
166
+ size={ 24 }
167
+ />
164
168
  </View>
165
169
  <View style={ titleContainerStyle }>
166
170
  <Text style={ titleStyle }>{ title }</Text>
167
171
  <View style={ styles.subtitleContainer }>
168
172
  { isUploadFailed && (
169
- <Icon
173
+ <WCIcon
170
174
  icon={ cautionFilled }
171
175
  style={ {
172
176
  ...styles.errorIcon,
@@ -8,12 +8,10 @@ import clsx from 'clsx';
8
8
  */
9
9
  import {
10
10
  Button,
11
- Icon,
12
- __experimentalText as WCText,
13
- __experimentalVStack as VStack,
14
- __experimentalHStack as HStack,
11
+ Icon as WCIcon,
15
12
  privateApis as componentsPrivateApis,
16
13
  } from '@wordpress/components';
14
+ import { Text, Stack } from '@wordpress/ui';
17
15
  import { useDispatch, useSelect } from '@wordpress/data';
18
16
  import deprecated from '@wordpress/deprecated';
19
17
  import { __, sprintf, isRTL } from '@wordpress/i18n';
@@ -81,6 +79,7 @@ function OptionalParentSelectButton( { children, onClick } ) {
81
79
  * @param {string} [props.parentClientId] The parent clientId, if this card is for a parent block.
82
80
  * @param {string} [props.isChild] Whether the block card is for a child block, in which case, indent the block using an arrow.
83
81
  * @param {string} [props.clientId] Whether the block card is for a child block, in which case, indent the block using an arrow.
82
+ * @param {Element} [props.controls] Controls rendered beside the block title.
84
83
  * @param {Element} [props.children] Children.
85
84
  * @return {Element} Block card component.
86
85
  */
@@ -96,6 +95,7 @@ function BlockCard( {
96
95
  isChild,
97
96
  children,
98
97
  clientId,
98
+ controls,
99
99
  } ) {
100
100
  if ( blockType ) {
101
101
  deprecated( '`blockType` property in `BlockCard component`', {
@@ -150,66 +150,73 @@ function BlockCard( {
150
150
  className
151
151
  ) }
152
152
  >
153
- <VStack>
154
- <HStack justify="flex-start" spacing={ 0 }>
155
- { parentBlockClientId && (
156
- <Button
157
- onClick={ () => selectBlock( parentBlockClientId ) }
158
- label={
159
- parentBlockName
160
- ? sprintf(
161
- /* translators: %s: The name of the parent block. */
162
- __( 'Go to "%s" block' ),
163
- getBlockType( parentBlockName )
164
- ?.title
165
- )
166
- : __( 'Go to parent block' )
153
+ <Stack direction="column" gap="sm">
154
+ <Stack direction="row" align="center" justify="space-between">
155
+ <Stack direction="row" align="center" justify="flex-start">
156
+ { parentBlockClientId && (
157
+ <Button
158
+ onClick={ () =>
159
+ selectBlock( parentBlockClientId )
160
+ }
161
+ label={
162
+ parentBlockName
163
+ ? sprintf(
164
+ /* translators: %s: The name of the parent block. */
165
+ __( 'Go to "%s" block' ),
166
+ getBlockType( parentBlockName )
167
+ ?.title
168
+ )
169
+ : __( 'Go to parent block' )
170
+ }
171
+ style={
172
+ // TODO: This style override is also used in ToolsPanelHeader.
173
+ // It should be supported out-of-the-box by Button.
174
+ { minWidth: 24, padding: 0 }
175
+ }
176
+ icon={ isRTL() ? chevronRight : chevronLeft }
177
+ size="small"
178
+ />
179
+ ) }
180
+ { isChild && (
181
+ <span className="block-editor-block-card__child-indicator-icon">
182
+ <WCIcon
183
+ icon={ isRTL() ? arrowLeft : arrowRight }
184
+ />
185
+ </span>
186
+ ) }
187
+ <OptionalParentSelectButton
188
+ onClick={
189
+ parentClientId
190
+ ? () => {
191
+ selectBlock( parentClientId );
192
+ }
193
+ : undefined
167
194
  }
168
- style={
169
- // TODO: This style override is also used in ToolsPanelHeader.
170
- // It should be supported out-of-the-box by Button.
171
- { minWidth: 24, padding: 0 }
172
- }
173
- icon={ isRTL() ? chevronRight : chevronLeft }
174
- size="small"
175
- />
176
- ) }
177
- { isChild && (
178
- <span className="block-editor-block-card__child-indicator-icon">
179
- <Icon icon={ isRTL() ? arrowLeft : arrowRight } />
180
- </span>
181
- ) }
182
- <OptionalParentSelectButton
183
- onClick={
184
- parentClientId
185
- ? () => {
186
- selectBlock( parentClientId );
187
- }
188
- : undefined
189
- }
190
- >
191
- <BlockIcon icon={ icon } showColors />
192
- <VStack spacing={ 1 }>
193
- <TitleElement className="block-editor-block-card__title">
194
- <span className="block-editor-block-card__name">
195
- { !! name?.length ? name : title }
196
- </span>
197
- { ! parentClientId &&
198
- ! isChild &&
199
- !! name?.length && (
200
- <WCBadge>{ title }</WCBadge>
201
- ) }
202
- </TitleElement>
203
- { children }
204
- </VStack>
205
- </OptionalParentSelectButton>
206
- </HStack>
195
+ >
196
+ <BlockIcon icon={ icon } showColors />
197
+ <Stack direction="column" gap="xs">
198
+ <TitleElement className="block-editor-block-card__title">
199
+ <span className="block-editor-block-card__name">
200
+ { !! name?.length ? name : title }
201
+ </span>
202
+ { ! parentClientId &&
203
+ ! isChild &&
204
+ !! name?.length && (
205
+ <WCBadge>{ title }</WCBadge>
206
+ ) }
207
+ </TitleElement>
208
+ { children }
209
+ </Stack>
210
+ </OptionalParentSelectButton>
211
+ </Stack>
212
+ { controls }
213
+ </Stack>
207
214
  { ! parentClientId && ! isChild && description && (
208
- <WCText className="block-editor-block-card__description">
215
+ <Text className="block-editor-block-card__description">
209
216
  { description }
210
- </WCText>
217
+ </Text>
211
218
  ) }
212
- </VStack>
219
+ </Stack>
213
220
  </div>
214
221
  );
215
222
  }
@@ -10,7 +10,7 @@ import {
10
10
  headingLevel6,
11
11
  paragraph,
12
12
  } from '@wordpress/icons';
13
- import { Icon } from '@wordpress/components';
13
+ import { Icon as WCIcon } from '@wordpress/components';
14
14
 
15
15
  /** @typedef {React.ComponentType} ComponentType */
16
16
 
@@ -41,7 +41,7 @@ const LEVEL_TO_PATH = {
41
41
  */
42
42
  export default function HeadingLevelIcon( { level } ) {
43
43
  if ( LEVEL_TO_PATH[ level ] ) {
44
- return <Icon icon={ LEVEL_TO_PATH[ level ] } />;
44
+ return <WCIcon icon={ LEVEL_TO_PATH[ level ] } />;
45
45
  }
46
46
 
47
47
  return null;
@@ -6,7 +6,7 @@ import clsx from 'clsx';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { Icon } from '@wordpress/components';
9
+ import { Icon as WCIcon } from '@wordpress/components';
10
10
  import { blockDefault } from '@wordpress/icons';
11
11
  import { memo } from '@wordpress/element';
12
12
 
@@ -18,7 +18,10 @@ function BlockIcon( { icon, showColors = false, className, context } ) {
18
18
  }
19
19
 
20
20
  const renderedIcon = (
21
- <Icon icon={ icon && icon.src ? icon.src : icon } context={ context } />
21
+ <WCIcon
22
+ icon={ icon && icon.src ? icon.src : icon }
23
+ context={ context }
24
+ />
22
25
  );
23
26
  const style = showColors
24
27
  ? {
@@ -6,7 +6,7 @@ import { View } from 'react-native';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { Icon } from '@wordpress/components';
9
+ import { Icon as WCIcon } from '@wordpress/components';
10
10
  import { blockDefault } from '@wordpress/icons';
11
11
  import { usePreferredColorSchemeStyle } from '@wordpress/compose';
12
12
 
@@ -29,7 +29,7 @@ export function BlockIcon( { icon, fill, size, showColors = false } ) {
29
29
  const iconForeground = showColors ? icon?.foreground : undefined;
30
30
 
31
31
  const renderedIcon = (
32
- <Icon
32
+ <WCIcon
33
33
  icon={ icon && icon.src ? icon.src : icon }
34
34
  fill={ fill || iconForeground || defaultFill }
35
35
  { ...( size && { size } ) }