@wordpress/block-editor 12.15.0 → 12.16.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 (500) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +9 -4
  3. package/build/components/block-canvas/index.js +22 -6
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-controls/hook.js +3 -23
  8. package/build/components/block-controls/hook.js.map +1 -1
  9. package/build/components/block-edit/context.js +5 -1
  10. package/build/components/block-edit/context.js.map +1 -1
  11. package/build/components/block-edit/index.js +18 -9
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-info-slot-fill/index.js +3 -4
  14. package/build/components/block-info-slot-fill/index.js.map +1 -1
  15. package/build/components/block-list/block.js +28 -9
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +14 -5
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/use-block-props/index.js +61 -18
  20. package/build/components/block-list/use-block-props/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  22. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
  24. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  26. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +1 -1
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +2 -9
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-rename/modal.js +3 -0
  32. package/build/components/block-rename/modal.js.map +1 -1
  33. package/build/components/block-settings/container.native.js +6 -4
  34. package/build/components/block-settings/container.native.js.map +1 -1
  35. package/build/components/block-styles/index.js +1 -1
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-styles/index.native.js +3 -2
  38. package/build/components/block-styles/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/index.js +89 -27
  40. package/build/components/block-toolbar/index.js.map +1 -1
  41. package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
  42. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  43. package/build/components/block-tools/block-toolbar-popover.js +86 -0
  44. package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
  45. package/build/components/block-tools/index.js +27 -24
  46. package/build/components/block-tools/index.js.map +1 -1
  47. package/build/components/block-types-list/index.native.js +4 -3
  48. package/build/components/block-types-list/index.native.js.map +1 -1
  49. package/build/components/block-variation-picker/index.native.js +2 -1
  50. package/build/components/block-variation-picker/index.native.js.map +1 -1
  51. package/build/components/colors-gradients/control.js +28 -17
  52. package/build/components/colors-gradients/control.js.map +1 -1
  53. package/build/components/duotone-control/index.js +1 -4
  54. package/build/components/duotone-control/index.js.map +1 -1
  55. package/build/components/global-styles/color-panel.js +22 -20
  56. package/build/components/global-styles/color-panel.js.map +1 -1
  57. package/build/components/global-styles/filters-panel.js +9 -3
  58. package/build/components/global-styles/filters-panel.js.map +1 -1
  59. package/build/components/global-styles/typography-panel.js +20 -31
  60. package/build/components/global-styles/typography-panel.js.map +1 -1
  61. package/build/components/image-link-destinations/index.native.js +118 -0
  62. package/build/components/image-link-destinations/index.native.js.map +1 -0
  63. package/build/components/index.native.js +8 -0
  64. package/build/components/index.native.js.map +1 -1
  65. package/build/components/inserter/media-tab/media-panel.js +2 -2
  66. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  67. package/build/components/inserter/menu.js +14 -7
  68. package/build/components/inserter/menu.js.map +1 -1
  69. package/build/components/inserter/preview-panel.js +2 -2
  70. package/build/components/inserter/preview-panel.js.map +1 -1
  71. package/build/components/inserter-button/index.native.js +98 -0
  72. package/build/components/inserter-button/index.native.js.map +1 -0
  73. package/build/components/inserter-button/sparkles.js +23 -0
  74. package/build/components/inserter-button/sparkles.js.map +1 -0
  75. package/build/components/inserter-draggable-blocks/index.js +8 -4
  76. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  77. package/build/components/inspector-controls/fill.js +3 -3
  78. package/build/components/inspector-controls/fill.js.map +1 -1
  79. package/build/components/inspector-controls/fill.native.js +3 -3
  80. package/build/components/inspector-controls/fill.native.js.map +1 -1
  81. package/build/components/navigable-toolbar/index.js +2 -2
  82. package/build/components/navigable-toolbar/index.js.map +1 -1
  83. package/build/components/preview-options/index.js +6 -62
  84. package/build/components/preview-options/index.js.map +1 -1
  85. package/build/components/rich-text/content.js +26 -23
  86. package/build/components/rich-text/content.js.map +1 -1
  87. package/build/components/rich-text/get-rich-text-values.js +2 -1
  88. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  89. package/build/components/rich-text/index.js +2 -30
  90. package/build/components/rich-text/index.js.map +1 -1
  91. package/build/components/rich-text/index.native.js +9 -16
  92. package/build/components/rich-text/index.native.js.map +1 -1
  93. package/build/components/rich-text/native/get-format-colors.native.js +22 -24
  94. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  95. package/build/components/rich-text/native/index.native.js +7 -34
  96. package/build/components/rich-text/native/index.native.js.map +1 -1
  97. package/build/components/rich-text/use-input-rules.js +5 -1
  98. package/build/components/rich-text/use-input-rules.js.map +1 -1
  99. package/build/components/rich-text/with-deprecations.js +50 -0
  100. package/build/components/rich-text/with-deprecations.js.map +1 -0
  101. package/build/components/use-block-drop-zone/index.js +70 -8
  102. package/build/components/use-block-drop-zone/index.js.map +1 -1
  103. package/build/components/use-on-block-drop/index.js +1 -1
  104. package/build/components/use-on-block-drop/index.js.map +1 -1
  105. package/build/components/use-resize-canvas/index.js +4 -1
  106. package/build/components/use-resize-canvas/index.js.map +1 -1
  107. package/build/components/use-settings/index.js +14 -0
  108. package/build/components/use-settings/index.js.map +1 -1
  109. package/build/hooks/align.js +20 -68
  110. package/build/hooks/align.js.map +1 -1
  111. package/build/hooks/align.native.js +11 -1
  112. package/build/hooks/align.native.js.map +1 -1
  113. package/build/hooks/anchor.js +13 -29
  114. package/build/hooks/anchor.js.map +1 -1
  115. package/build/hooks/background.js +28 -31
  116. package/build/hooks/background.js.map +1 -1
  117. package/build/hooks/block-hooks.js +24 -32
  118. package/build/hooks/block-hooks.js.map +1 -1
  119. package/build/hooks/block-renaming.js +18 -22
  120. package/build/hooks/block-renaming.js.map +1 -1
  121. package/build/hooks/border.js +58 -80
  122. package/build/hooks/border.js.map +1 -1
  123. package/build/hooks/color.js +76 -89
  124. package/build/hooks/color.js.map +1 -1
  125. package/build/hooks/content-lock-ui.js +29 -29
  126. package/build/hooks/content-lock-ui.js.map +1 -1
  127. package/build/hooks/custom-class-name.js +12 -29
  128. package/build/hooks/custom-class-name.js.map +1 -1
  129. package/build/hooks/custom-fields.js +24 -38
  130. package/build/hooks/custom-fields.js.map +1 -1
  131. package/build/hooks/dimensions.js +21 -17
  132. package/build/hooks/dimensions.js.map +1 -1
  133. package/build/hooks/duotone.js +31 -61
  134. package/build/hooks/duotone.js.map +1 -1
  135. package/build/hooks/font-family.js +16 -25
  136. package/build/hooks/font-family.js.map +1 -1
  137. package/build/hooks/font-size.js +51 -119
  138. package/build/hooks/font-size.js.map +1 -1
  139. package/build/hooks/index.js +25 -14
  140. package/build/hooks/index.js.map +1 -1
  141. package/build/hooks/index.native.js +10 -3
  142. package/build/hooks/index.native.js.map +1 -1
  143. package/build/hooks/layout-child.js +68 -0
  144. package/build/hooks/layout-child.js.map +1 -0
  145. package/build/hooks/layout.js +16 -101
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/padding.js +2 -2
  148. package/build/hooks/padding.js.map +1 -1
  149. package/build/hooks/position.js +40 -62
  150. package/build/hooks/position.js.map +1 -1
  151. package/build/hooks/style.js +51 -88
  152. package/build/hooks/style.js.map +1 -1
  153. package/build/hooks/typography.js +34 -14
  154. package/build/hooks/typography.js.map +1 -1
  155. package/build/hooks/utils.js +154 -7
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +0 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/private-actions.js +8 -0
  160. package/build/store/private-actions.js.map +1 -1
  161. package/build/store/private-selectors.js +34 -0
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +8 -0
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +10 -60
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/store/utils.js +66 -0
  168. package/build/store/utils.js.map +1 -0
  169. package/build/utils/object.js +21 -61
  170. package/build/utils/object.js.map +1 -1
  171. package/build/utils/selection.js +9 -1
  172. package/build/utils/selection.js.map +1 -1
  173. package/build-module/components/block-canvas/index.js +23 -7
  174. package/build-module/components/block-canvas/index.js.map +1 -1
  175. package/build-module/components/block-card/index.js +1 -1
  176. package/build-module/components/block-card/index.js.map +1 -1
  177. package/build-module/components/block-controls/hook.js +4 -24
  178. package/build-module/components/block-controls/hook.js.map +1 -1
  179. package/build-module/components/block-edit/context.js +2 -0
  180. package/build-module/components/block-edit/context.js.map +1 -1
  181. package/build-module/components/block-edit/index.js +19 -10
  182. package/build-module/components/block-edit/index.js.map +1 -1
  183. package/build-module/components/block-info-slot-fill/index.js +3 -3
  184. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  185. package/build-module/components/block-list/block.js +29 -10
  186. package/build-module/components/block-list/block.js.map +1 -1
  187. package/build-module/components/block-list/block.native.js +14 -5
  188. package/build-module/components/block-list/block.native.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/index.js +62 -19
  190. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  192. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  193. package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
  194. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  195. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  196. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  197. package/build-module/components/block-patterns-list/index.js +1 -1
  198. package/build-module/components/block-patterns-list/index.js.map +1 -1
  199. package/build-module/components/block-removal-warning-modal/index.js +3 -10
  200. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  201. package/build-module/components/block-rename/modal.js +3 -0
  202. package/build-module/components/block-rename/modal.js.map +1 -1
  203. package/build-module/components/block-settings/container.native.js +4 -2
  204. package/build-module/components/block-settings/container.native.js.map +1 -1
  205. package/build-module/components/block-styles/index.js +1 -1
  206. package/build-module/components/block-styles/index.js.map +1 -1
  207. package/build-module/components/block-styles/index.native.js +3 -2
  208. package/build-module/components/block-styles/index.native.js.map +1 -1
  209. package/build-module/components/block-toolbar/index.js +88 -25
  210. package/build-module/components/block-toolbar/index.js.map +1 -1
  211. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
  212. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  213. package/build-module/components/block-tools/block-toolbar-popover.js +76 -0
  214. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
  215. package/build-module/components/block-tools/index.js +27 -24
  216. package/build-module/components/block-tools/index.js.map +1 -1
  217. package/build-module/components/block-types-list/index.native.js +2 -1
  218. package/build-module/components/block-types-list/index.native.js.map +1 -1
  219. package/build-module/components/block-variation-picker/index.native.js +2 -1
  220. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  221. package/build-module/components/colors-gradients/control.js +29 -18
  222. package/build-module/components/colors-gradients/control.js.map +1 -1
  223. package/build-module/components/duotone-control/index.js +1 -4
  224. package/build-module/components/duotone-control/index.js.map +1 -1
  225. package/build-module/components/global-styles/color-panel.js +23 -21
  226. package/build-module/components/global-styles/color-panel.js.map +1 -1
  227. package/build-module/components/global-styles/filters-panel.js +10 -4
  228. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  229. package/build-module/components/global-styles/typography-panel.js +20 -31
  230. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  231. package/build-module/components/image-link-destinations/index.native.js +109 -0
  232. package/build-module/components/image-link-destinations/index.native.js.map +1 -0
  233. package/build-module/components/index.native.js +1 -0
  234. package/build-module/components/index.native.js.map +1 -1
  235. package/build-module/components/inserter/media-tab/media-panel.js +1 -1
  236. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  237. package/build-module/components/inserter/menu.js +14 -7
  238. package/build-module/components/inserter/menu.js.map +1 -1
  239. package/build-module/components/inserter/preview-panel.js +2 -2
  240. package/build-module/components/inserter/preview-panel.js.map +1 -1
  241. package/build-module/components/inserter-button/index.native.js +89 -0
  242. package/build-module/components/inserter-button/index.native.js.map +1 -0
  243. package/build-module/components/inserter-button/sparkles.js +15 -0
  244. package/build-module/components/inserter-button/sparkles.js.map +1 -0
  245. package/build-module/components/inserter-draggable-blocks/index.js +9 -5
  246. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  247. package/build-module/components/inspector-controls/fill.js +3 -3
  248. package/build-module/components/inspector-controls/fill.js.map +1 -1
  249. package/build-module/components/inspector-controls/fill.native.js +3 -3
  250. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  251. package/build-module/components/navigable-toolbar/index.js +2 -2
  252. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  253. package/build-module/components/preview-options/index.js +6 -62
  254. package/build-module/components/preview-options/index.js.map +1 -1
  255. package/build-module/components/rich-text/content.js +25 -21
  256. package/build-module/components/rich-text/content.js.map +1 -1
  257. package/build-module/components/rich-text/get-rich-text-values.js +2 -1
  258. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  259. package/build-module/components/rich-text/index.js +4 -32
  260. package/build-module/components/rich-text/index.js.map +1 -1
  261. package/build-module/components/rich-text/index.native.js +10 -18
  262. package/build-module/components/rich-text/index.native.js.map +1 -1
  263. package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
  264. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  265. package/build-module/components/rich-text/native/index.native.js +7 -34
  266. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  267. package/build-module/components/rich-text/use-input-rules.js +5 -1
  268. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  269. package/build-module/components/rich-text/with-deprecations.js +42 -0
  270. package/build-module/components/rich-text/with-deprecations.js.map +1 -0
  271. package/build-module/components/use-block-drop-zone/index.js +69 -8
  272. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  273. package/build-module/components/use-on-block-drop/index.js +1 -1
  274. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  275. package/build-module/components/use-resize-canvas/index.js +4 -1
  276. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  277. package/build-module/components/use-settings/index.js +13 -1
  278. package/build-module/components/use-settings/index.js.map +1 -1
  279. package/build-module/hooks/align.js +19 -66
  280. package/build-module/hooks/align.js.map +1 -1
  281. package/build-module/hooks/align.native.js +1 -0
  282. package/build-module/hooks/align.native.js.map +1 -1
  283. package/build-module/hooks/anchor.js +11 -26
  284. package/build-module/hooks/anchor.js.map +1 -1
  285. package/build-module/hooks/background.js +26 -28
  286. package/build-module/hooks/background.js.map +1 -1
  287. package/build-module/hooks/block-hooks.js +22 -30
  288. package/build-module/hooks/block-hooks.js.map +1 -1
  289. package/build-module/hooks/block-renaming.js +17 -21
  290. package/build-module/hooks/block-renaming.js.map +1 -1
  291. package/build-module/hooks/border.js +57 -78
  292. package/build-module/hooks/border.js.map +1 -1
  293. package/build-module/hooks/color.js +74 -86
  294. package/build-module/hooks/color.js.map +1 -1
  295. package/build-module/hooks/content-lock-ui.js +27 -27
  296. package/build-module/hooks/content-lock-ui.js.map +1 -1
  297. package/build-module/hooks/custom-class-name.js +11 -27
  298. package/build-module/hooks/custom-class-name.js.map +1 -1
  299. package/build-module/hooks/custom-fields.js +20 -39
  300. package/build-module/hooks/custom-fields.js.map +1 -1
  301. package/build-module/hooks/dimensions.js +21 -16
  302. package/build-module/hooks/dimensions.js.map +1 -1
  303. package/build-module/hooks/duotone.js +30 -61
  304. package/build-module/hooks/duotone.js.map +1 -1
  305. package/build-module/hooks/font-family.js +14 -23
  306. package/build-module/hooks/font-family.js.map +1 -1
  307. package/build-module/hooks/font-size.js +49 -119
  308. package/build-module/hooks/font-size.js.map +1 -1
  309. package/build-module/hooks/index.js +18 -14
  310. package/build-module/hooks/index.js.map +1 -1
  311. package/build-module/hooks/index.native.js +5 -3
  312. package/build-module/hooks/index.native.js.map +1 -1
  313. package/build-module/hooks/layout-child.js +60 -0
  314. package/build-module/hooks/layout-child.js.map +1 -0
  315. package/build-module/hooks/layout.js +13 -98
  316. package/build-module/hooks/layout.js.map +1 -1
  317. package/build-module/hooks/padding.js +2 -2
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/position.js +38 -59
  320. package/build-module/hooks/position.js.map +1 -1
  321. package/build-module/hooks/style.js +51 -84
  322. package/build-module/hooks/style.js.map +1 -1
  323. package/build-module/hooks/typography.js +33 -12
  324. package/build-module/hooks/typography.js.map +1 -1
  325. package/build-module/hooks/utils.js +149 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +0 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/private-actions.js +7 -0
  330. package/build-module/store/private-actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +33 -1
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +8 -0
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +3 -53
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/store/utils.js +56 -0
  338. package/build-module/store/utils.js.map +1 -0
  339. package/build-module/utils/object.js +21 -60
  340. package/build-module/utils/object.js.map +1 -1
  341. package/build-module/utils/selection.js +9 -1
  342. package/build-module/utils/selection.js.map +1 -1
  343. package/build-style/style-rtl.css +113 -293
  344. package/build-style/style.css +113 -293
  345. package/package.json +31 -31
  346. package/src/components/block-canvas/index.js +31 -17
  347. package/src/components/block-caption/README.md +2 -2
  348. package/src/components/block-card/index.js +5 -3
  349. package/src/components/block-card/style.scss +7 -3
  350. package/src/components/block-controls/hook.js +8 -30
  351. package/src/components/block-controls/test/index.js +3 -3
  352. package/src/components/block-edit/context.js +3 -0
  353. package/src/components/block-edit/index.js +36 -10
  354. package/src/components/block-info-slot-fill/index.js +6 -3
  355. package/src/components/block-inspector/style.scss +0 -4
  356. package/src/components/block-list/block.js +39 -5
  357. package/src/components/block-list/block.native.js +18 -4
  358. package/src/components/block-list/use-block-props/index.js +74 -21
  359. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
  360. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
  361. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
  362. package/src/components/block-patterns-list/index.js +1 -1
  363. package/src/components/block-removal-warning-modal/index.js +7 -14
  364. package/src/components/block-rename/modal.js +7 -1
  365. package/src/components/block-settings/container.native.js +3 -5
  366. package/src/components/block-styles/index.js +1 -1
  367. package/src/components/block-styles/index.native.js +4 -2
  368. package/src/components/block-styles/style.scss +0 -11
  369. package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
  370. package/src/components/block-toolbar/index.js +180 -95
  371. package/src/components/block-toolbar/style.scss +50 -66
  372. package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
  373. package/src/components/block-tools/block-toolbar-popover.js +90 -0
  374. package/src/components/block-tools/index.js +42 -29
  375. package/src/components/block-tools/style.scss +60 -172
  376. package/src/components/block-types-list/index.native.js +2 -1
  377. package/src/components/block-variation-picker/index.native.js +1 -1
  378. package/src/components/colors-gradients/control.js +49 -30
  379. package/src/components/colors-gradients/style.scss +0 -7
  380. package/src/components/duotone-control/index.js +2 -5
  381. package/src/components/duotone-control/style.scss +1 -6
  382. package/src/components/global-styles/color-panel.js +34 -25
  383. package/src/components/global-styles/filters-panel.js +8 -4
  384. package/src/components/global-styles/typography-panel.js +23 -43
  385. package/src/components/image-link-destinations/index.native.js +152 -0
  386. package/src/components/image-link-destinations/style.native.scss +16 -0
  387. package/src/components/index.native.js +1 -0
  388. package/src/components/inner-blocks/README.md +13 -2
  389. package/src/components/inserter/media-tab/media-panel.js +1 -1
  390. package/src/components/inserter/menu.js +16 -8
  391. package/src/components/inserter/preview-panel.js +2 -2
  392. package/src/components/inserter/style.scss +15 -17
  393. package/src/components/inserter-button/README.md +62 -0
  394. package/src/components/inserter-button/index.native.js +116 -0
  395. package/src/components/inserter-button/sparkles.js +15 -0
  396. package/src/components/inserter-button/style.native.scss +72 -0
  397. package/src/components/inserter-draggable-blocks/index.js +18 -5
  398. package/src/components/inspector-controls/fill.js +6 -3
  399. package/src/components/inspector-controls/fill.native.js +6 -3
  400. package/src/components/link-control/style.scss +1 -1
  401. package/src/components/link-control/test/index.js +1 -1
  402. package/src/components/navigable-toolbar/README.md +2 -0
  403. package/src/components/navigable-toolbar/index.js +2 -2
  404. package/src/components/preview-options/index.js +6 -86
  405. package/src/components/rich-text/content.js +27 -20
  406. package/src/components/rich-text/get-rich-text-values.js +6 -1
  407. package/src/components/rich-text/index.js +5 -46
  408. package/src/components/rich-text/index.native.js +8 -25
  409. package/src/components/rich-text/native/get-format-colors.native.js +33 -40
  410. package/src/components/rich-text/native/index.native.js +7 -48
  411. package/src/components/rich-text/use-input-rules.js +6 -1
  412. package/src/components/rich-text/with-deprecations.js +51 -0
  413. package/src/components/use-block-drop-zone/index.js +114 -14
  414. package/src/components/use-on-block-drop/index.js +2 -1
  415. package/src/components/use-resize-canvas/README.md +3 -3
  416. package/src/components/use-resize-canvas/index.js +4 -1
  417. package/src/components/use-settings/index.js +15 -1
  418. package/src/hooks/align.js +15 -76
  419. package/src/hooks/align.native.js +1 -0
  420. package/src/hooks/anchor.js +13 -33
  421. package/src/hooks/background.js +28 -23
  422. package/src/hooks/block-hooks.js +22 -51
  423. package/src/hooks/block-renaming.js +23 -37
  424. package/src/hooks/border.js +67 -118
  425. package/src/hooks/color.js +100 -132
  426. package/src/hooks/content-lock-ui.js +110 -122
  427. package/src/hooks/custom-class-name.js +8 -40
  428. package/src/hooks/custom-fields.js +20 -47
  429. package/src/hooks/dimensions.js +20 -16
  430. package/src/hooks/duotone.js +70 -127
  431. package/src/hooks/font-family.js +10 -29
  432. package/src/hooks/font-size.js +66 -162
  433. package/src/hooks/index.js +42 -14
  434. package/src/hooks/index.native.js +6 -3
  435. package/src/hooks/layout-child.js +53 -0
  436. package/src/hooks/layout.js +13 -102
  437. package/src/hooks/padding.js +2 -2
  438. package/src/hooks/position.js +50 -90
  439. package/src/hooks/style.js +117 -187
  440. package/src/hooks/test/align.js +1 -178
  441. package/src/hooks/typography.js +20 -16
  442. package/src/hooks/utils.js +187 -6
  443. package/src/private-apis.js +0 -2
  444. package/src/store/private-actions.js +8 -0
  445. package/src/store/private-selectors.js +45 -0
  446. package/src/store/reducer.js +8 -0
  447. package/src/store/selectors.js +5 -69
  448. package/src/store/utils.js +74 -0
  449. package/src/style.scss +0 -2
  450. package/src/utils/object.js +18 -69
  451. package/src/utils/selection.js +9 -2
  452. package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
  453. package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  454. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
  455. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  456. package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
  457. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  458. package/build/components/block-tools/back-compat.js +0 -45
  459. package/build/components/block-tools/back-compat.js.map +0 -1
  460. package/build/components/block-tools/block-contextual-toolbar.js +0 -91
  461. package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
  462. package/build/components/block-tools/selected-block-tools.js +0 -113
  463. package/build/components/block-tools/selected-block-tools.js.map +0 -1
  464. package/build/components/inserter/hooks/use-debounced-input.js +0 -22
  465. package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
  466. package/build/components/use-display-block-controls/index.js +0 -39
  467. package/build/components/use-display-block-controls/index.js.map +0 -1
  468. package/build/components/use-display-block-controls/index.native.js +0 -39
  469. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  470. package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
  471. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  472. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
  473. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  474. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
  475. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  476. package/build-module/components/block-tools/back-compat.js +0 -35
  477. package/build-module/components/block-tools/back-compat.js.map +0 -1
  478. package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
  479. package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
  480. package/build-module/components/block-tools/selected-block-tools.js +0 -105
  481. package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
  482. package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
  483. package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
  484. package/build-module/components/use-display-block-controls/index.js +0 -32
  485. package/build-module/components/use-display-block-controls/index.js.map +0 -1
  486. package/build-module/components/use-display-block-controls/index.native.js +0 -32
  487. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  488. package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
  489. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
  490. package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
  491. package/src/components/block-parent-selector/style.scss +0 -11
  492. package/src/components/block-tools/back-compat.js +0 -35
  493. package/src/components/block-tools/block-contextual-toolbar.js +0 -100
  494. package/src/components/block-tools/selected-block-tools.js +0 -127
  495. package/src/components/inserter/hooks/use-debounced-input.js +0 -18
  496. package/src/components/preview-options/README.md +0 -94
  497. package/src/components/preview-options/style.scss +0 -64
  498. package/src/components/use-display-block-controls/index.js +0 -36
  499. package/src/components/use-display-block-controls/index.native.js +0 -37
  500. package/src/hooks/test/color.js +0 -112
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
5
4
  import { extend } from 'colord';
6
5
  import namesPlugin from 'colord/plugins/names';
7
6
 
@@ -13,7 +12,7 @@ import {
13
12
  getBlockType,
14
13
  hasBlockSupport,
15
14
  } from '@wordpress/blocks';
16
- import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
15
+ import { useInstanceId } from '@wordpress/compose';
17
16
  import { addFilter } from '@wordpress/hooks';
18
17
  import { useMemo, useEffect } from '@wordpress/element';
19
18
 
@@ -95,8 +94,7 @@ export function getDuotonePresetFromColors( colors, duotonePalette ) {
95
94
  return preset ? `var:preset|duotone|${ preset.slug }` : undefined;
96
95
  }
97
96
 
98
- function DuotonePanel( { attributes, setAttributes, name } ) {
99
- const style = attributes?.style;
97
+ function DuotonePanelPure( { style, setAttributes, name } ) {
100
98
  const duotoneStyle = style?.color?.duotone;
101
99
  const settings = useBlockSettings( name );
102
100
  const blockEditingMode = useBlockEditingMode();
@@ -176,6 +174,16 @@ function DuotonePanel( { attributes, setAttributes, name } ) {
176
174
  );
177
175
  }
178
176
 
177
+ export default {
178
+ shareWithChildBlocks: true,
179
+ edit: DuotonePanelPure,
180
+ useBlockProps,
181
+ attributeKeys: [ 'style' ],
182
+ hasSupport( name ) {
183
+ return hasBlockSupport( name, 'filter.duotone' );
184
+ },
185
+ };
186
+
179
187
  /**
180
188
  * Filters registered block settings, extending attributes to include
181
189
  * the `duotone` attribute.
@@ -204,38 +212,7 @@ function addDuotoneAttributes( settings ) {
204
212
  return settings;
205
213
  }
206
214
 
207
- /**
208
- * Override the default edit UI to include toolbar controls for duotone if the
209
- * block supports duotone.
210
- *
211
- * @param {Function} BlockEdit Original component.
212
- *
213
- * @return {Function} Wrapped component.
214
- */
215
- const withDuotoneControls = createHigherOrderComponent(
216
- ( BlockEdit ) => ( props ) => {
217
- // Previous `color.__experimentalDuotone` support flag is migrated via
218
- // block_type_metadata_settings filter in `lib/block-supports/duotone.php`.
219
- const hasDuotoneSupport = hasBlockSupport(
220
- props.name,
221
- 'filter.duotone'
222
- );
223
-
224
- // CAUTION: code added before this line will be executed
225
- // for all blocks, not just those that support duotone. Code added
226
- // above this line should be carefully evaluated for its impact on
227
- // performance.
228
- return (
229
- <>
230
- { hasDuotoneSupport && <DuotonePanel { ...props } /> }
231
- <BlockEdit { ...props } />
232
- </>
233
- );
234
- },
235
- 'withDuotoneControls'
236
- );
237
-
238
- function DuotoneStyles( {
215
+ function useDuotoneStyles( {
239
216
  clientId,
240
217
  id: filterId,
241
218
  selector: duotoneSelector,
@@ -333,103 +310,69 @@ function DuotoneStyles( {
333
310
  blockElement.style.display = display;
334
311
  }
335
312
  }, [ isValidFilter, blockElement ] );
336
-
337
- return null;
338
313
  }
339
314
 
340
- /**
341
- * Override the default block element to include duotone styles.
342
- *
343
- * @param {Function} BlockListBlock Original component.
344
- *
345
- * @return {Function} Wrapped component.
346
- */
347
- const withDuotoneStyles = createHigherOrderComponent(
348
- ( BlockListBlock ) => ( props ) => {
349
- const id = useInstanceId( BlockListBlock );
350
-
351
- const selector = useMemo( () => {
352
- const blockType = getBlockType( props.name );
353
-
354
- if ( blockType ) {
355
- // Backwards compatibility for `supports.color.__experimentalDuotone`
356
- // is provided via the `block_type_metadata_settings` filter. If
357
- // `supports.filter.duotone` has not been set and the
358
- // experimental property has been, the experimental property
359
- // value is copied into `supports.filter.duotone`.
360
- const duotoneSupport = getBlockSupport(
361
- blockType,
362
- 'filter.duotone',
363
- false
364
- );
365
- if ( ! duotoneSupport ) {
366
- return null;
367
- }
368
-
369
- // If the experimental duotone support was set, that value is
370
- // to be treated as a selector and requires scoping.
371
- const experimentalDuotone = getBlockSupport(
372
- blockType,
373
- 'color.__experimentalDuotone',
374
- false
375
- );
376
- if ( experimentalDuotone ) {
377
- const rootSelector = getBlockCSSSelector( blockType );
378
- return typeof experimentalDuotone === 'string'
379
- ? scopeSelector( rootSelector, experimentalDuotone )
380
- : rootSelector;
381
- }
382
-
383
- // Regular filter.duotone support uses filter.duotone selectors with fallbacks.
384
- return getBlockCSSSelector( blockType, 'filter.duotone', {
385
- fallback: true,
386
- } );
315
+ function useBlockProps( { name, style } ) {
316
+ const id = useInstanceId( useBlockProps );
317
+ const selector = useMemo( () => {
318
+ const blockType = getBlockType( name );
319
+
320
+ if ( blockType ) {
321
+ // Backwards compatibility for `supports.color.__experimentalDuotone`
322
+ // is provided via the `block_type_metadata_settings` filter. If
323
+ // `supports.filter.duotone` has not been set and the
324
+ // experimental property has been, the experimental property
325
+ // value is copied into `supports.filter.duotone`.
326
+ const duotoneSupport = getBlockSupport(
327
+ blockType,
328
+ 'filter.duotone',
329
+ false
330
+ );
331
+ if ( ! duotoneSupport ) {
332
+ return null;
387
333
  }
388
- }, [ props.name ] );
389
-
390
- const attribute = props?.attributes?.style?.color?.duotone;
391
-
392
- const filterClass = `wp-duotone-${ id }`;
393
-
394
- const shouldRender = selector && attribute;
395
-
396
- const className = shouldRender
397
- ? classnames( props?.className, filterClass )
398
- : props?.className;
399
-
400
- // CAUTION: code added before this line will be executed
401
- // for all blocks, not just those that support duotone. Code added
402
- // above this line should be carefully evaluated for its impact on
403
- // performance.
404
- return (
405
- <>
406
- { shouldRender && (
407
- <DuotoneStyles
408
- clientId={ props.clientId }
409
- id={ filterClass }
410
- selector={ selector }
411
- attribute={ attribute }
412
- />
413
- ) }
414
- <BlockListBlock { ...props } className={ className } />
415
- </>
416
- );
417
- },
418
- 'withDuotoneStyles'
419
- );
334
+
335
+ // If the experimental duotone support was set, that value is
336
+ // to be treated as a selector and requires scoping.
337
+ const experimentalDuotone = getBlockSupport(
338
+ blockType,
339
+ 'color.__experimentalDuotone',
340
+ false
341
+ );
342
+ if ( experimentalDuotone ) {
343
+ const rootSelector = getBlockCSSSelector( blockType );
344
+ return typeof experimentalDuotone === 'string'
345
+ ? scopeSelector( rootSelector, experimentalDuotone )
346
+ : rootSelector;
347
+ }
348
+
349
+ // Regular filter.duotone support uses filter.duotone selectors with fallbacks.
350
+ return getBlockCSSSelector( blockType, 'filter.duotone', {
351
+ fallback: true,
352
+ } );
353
+ }
354
+ }, [ name ] );
355
+
356
+ const attribute = style?.color?.duotone;
357
+
358
+ const filterClass = `wp-duotone-${ id }`;
359
+
360
+ const shouldRender = selector && attribute;
361
+
362
+ useDuotoneStyles( {
363
+ clientId: id,
364
+ id: filterClass,
365
+ selector,
366
+ attribute,
367
+ } );
368
+
369
+ return {
370
+ className: shouldRender ? filterClass : '',
371
+ };
372
+ }
420
373
 
421
374
  addFilter(
422
375
  'blocks.registerBlockType',
423
376
  'core/editor/duotone/add-attributes',
424
377
  addDuotoneAttributes
425
378
  );
426
- addFilter(
427
- 'editor.BlockEdit',
428
- 'core/editor/duotone/with-editor-controls',
429
- withDuotoneControls
430
- );
431
- addFilter(
432
- 'editor.BlockListBlock',
433
- 'core/editor/duotone/with-styles',
434
- withDuotoneStyles
435
- );
@@ -74,31 +74,18 @@ function addSaveProps( props, blockType, attributes ) {
74
74
  return props;
75
75
  }
76
76
 
77
- /**
78
- * Filters registered block settings to expand the block edit wrapper
79
- * by applying the desired styles and classnames.
80
- *
81
- * @param {Object} settings Original block settings.
82
- *
83
- * @return {Object} Filtered block settings.
84
- */
85
- function addEditProps( settings ) {
86
- if ( ! hasBlockSupport( settings, FONT_FAMILY_SUPPORT_KEY ) ) {
87
- return settings;
88
- }
89
-
90
- const existingGetEditWrapperProps = settings.getEditWrapperProps;
91
- settings.getEditWrapperProps = ( attributes ) => {
92
- let props = {};
93
- if ( existingGetEditWrapperProps ) {
94
- props = existingGetEditWrapperProps( attributes );
95
- }
96
- return addSaveProps( props, settings, attributes );
97
- };
98
-
99
- return settings;
77
+ function useBlockProps( { name, fontFamily } ) {
78
+ return addSaveProps( {}, name, { fontFamily } );
100
79
  }
101
80
 
81
+ export default {
82
+ useBlockProps,
83
+ attributeKeys: [ 'fontFamily' ],
84
+ hasSupport( name ) {
85
+ return hasBlockSupport( name, FONT_FAMILY_SUPPORT_KEY );
86
+ },
87
+ };
88
+
102
89
  /**
103
90
  * Resets the font family block support attribute. This can be used when
104
91
  * disabling the font family support controls for a block via a progressive
@@ -122,9 +109,3 @@ addFilter(
122
109
  'core/fontFamily/addSaveProps',
123
110
  addSaveProps
124
111
  );
125
-
126
- addFilter(
127
- 'blocks.registerBlockType',
128
- 'core/fontFamily/addEditProps',
129
- addEditProps
130
- );
@@ -4,7 +4,6 @@
4
4
  import { addFilter } from '@wordpress/hooks';
5
5
  import { hasBlockSupport } from '@wordpress/blocks';
6
6
  import TokenList from '@wordpress/token-list';
7
- import { createHigherOrderComponent } from '@wordpress/compose';
8
7
  import { select } from '@wordpress/data';
9
8
 
10
9
  /**
@@ -59,19 +58,23 @@ function addAttributes( settings ) {
59
58
  /**
60
59
  * Override props assigned to save component to inject font size.
61
60
  *
62
- * @param {Object} props Additional props applied to save element.
63
- * @param {Object} blockType Block type.
64
- * @param {Object} attributes Block attributes.
61
+ * @param {Object} props Additional props applied to save element.
62
+ * @param {Object} blockNameOrType Block type.
63
+ * @param {Object} attributes Block attributes.
65
64
  *
66
65
  * @return {Object} Filtered props applied to save element.
67
66
  */
68
- function addSaveProps( props, blockType, attributes ) {
69
- if ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {
67
+ function addSaveProps( props, blockNameOrType, attributes ) {
68
+ if ( ! hasBlockSupport( blockNameOrType, FONT_SIZE_SUPPORT_KEY ) ) {
70
69
  return props;
71
70
  }
72
71
 
73
72
  if (
74
- shouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )
73
+ shouldSkipSerialization(
74
+ blockNameOrType,
75
+ TYPOGRAPHY_SUPPORT_KEY,
76
+ 'fontSize'
77
+ )
75
78
  ) {
76
79
  return props;
77
80
  }
@@ -85,31 +88,6 @@ function addSaveProps( props, blockType, attributes ) {
85
88
  return props;
86
89
  }
87
90
 
88
- /**
89
- * Filters registered block settings to expand the block edit wrapper
90
- * by applying the desired styles and classnames.
91
- *
92
- * @param {Object} settings Original block settings.
93
- *
94
- * @return {Object} Filtered block settings.
95
- */
96
- function addEditProps( settings ) {
97
- if ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {
98
- return settings;
99
- }
100
-
101
- const existingGetEditWrapperProps = settings.getEditWrapperProps;
102
- settings.getEditWrapperProps = ( attributes ) => {
103
- let props = {};
104
- if ( existingGetEditWrapperProps ) {
105
- props = existingGetEditWrapperProps( attributes );
106
- }
107
- return addSaveProps( props, settings, attributes );
108
- };
109
-
110
- return settings;
111
- }
112
-
113
91
  /**
114
92
  * Inspector control panel containing the font size related configuration
115
93
  *
@@ -175,62 +153,69 @@ export function useIsFontSizeDisabled( { name: blockName } = {} ) {
175
153
  );
176
154
  }
177
155
 
178
- /**
179
- * Add inline styles for font sizes.
180
- * Ideally, this is not needed and themes load the font-size classes on the
181
- * editor.
182
- *
183
- * @param {Function} BlockListBlock Original component.
184
- *
185
- * @return {Function} Wrapped component.
186
- */
187
- const withFontSizeInlineStyles = createHigherOrderComponent(
188
- ( BlockListBlock ) => ( props ) => {
189
- const [ fontSizes ] = useSettings( 'typography.fontSizes' );
190
- const {
191
- name: blockName,
192
- attributes: { fontSize, style },
193
- wrapperProps,
194
- } = props;
156
+ function useBlockProps( { name, fontSize, style } ) {
157
+ const [ fontSizes ] = useSettings( 'typography.fontSizes' );
195
158
 
196
- // Only add inline styles if the block supports font sizes,
197
- // doesn't skip serialization of font sizes,
198
- // doesn't already have an inline font size,
199
- // and does have a class to extract the font size from.
200
- if (
201
- ! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||
202
- shouldSkipSerialization(
203
- blockName,
204
- TYPOGRAPHY_SUPPORT_KEY,
205
- 'fontSize'
206
- ) ||
207
- ! fontSize ||
208
- style?.typography?.fontSize
209
- ) {
210
- return <BlockListBlock { ...props } />;
211
- }
159
+ // Only add inline styles if the block supports font sizes,
160
+ // doesn't skip serialization of font sizes,
161
+ // doesn't already have an inline font size,
162
+ // and does have a class to extract the font size from.
163
+ if (
164
+ ! hasBlockSupport( name, FONT_SIZE_SUPPORT_KEY ) ||
165
+ shouldSkipSerialization( name, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' ) ||
166
+ ! fontSize
167
+ ) {
168
+ return;
169
+ }
212
170
 
213
- const fontSizeValue = getFontSize(
214
- fontSizes,
215
- fontSize,
216
- style?.typography?.fontSize
217
- ).size;
171
+ let props = {};
218
172
 
219
- const newProps = {
220
- ...props,
221
- wrapperProps: {
222
- ...wrapperProps,
223
- style: {
224
- fontSize: fontSizeValue,
225
- ...wrapperProps?.style,
226
- },
173
+ if ( ! style?.typography?.fontSize ) {
174
+ props = {
175
+ style: {
176
+ fontSize: getFontSize(
177
+ fontSizes,
178
+ fontSize,
179
+ style?.typography?.fontSize
180
+ ).size,
227
181
  },
228
182
  };
183
+ }
184
+
185
+ // TODO: This sucks! We should be using useSetting( 'typography.fluid' )
186
+ // or even useSelect( blockEditorStore ). We can't do either here
187
+ // because getEditWrapperProps is a plain JavaScript function called by
188
+ // BlockListBlock and not a React component rendered within
189
+ // BlockListContext.Provider. If we set fontSize using editor.
190
+ // BlockListBlock instead of using getEditWrapperProps then the value is
191
+ // clobbered when the core/style/addEditProps filter runs.
192
+
193
+ // TODO: We can do the thing above now.
194
+ const fluidTypographySettings = getFluidTypographyOptionsFromSettings(
195
+ select( blockEditorStore ).getSettings().__experimentalFeatures
196
+ );
197
+
198
+ if ( fontSize ) {
199
+ props = {
200
+ style: {
201
+ fontSize: getTypographyFontSizeValue(
202
+ { size: fontSize },
203
+ fluidTypographySettings
204
+ ),
205
+ },
206
+ };
207
+ }
229
208
 
230
- return <BlockListBlock { ...newProps } />;
209
+ return addSaveProps( props, name, { fontSize } );
210
+ }
211
+
212
+ export default {
213
+ useBlockProps,
214
+ attributeKeys: [ 'fontSize', 'style' ],
215
+ hasSupport( name ) {
216
+ return hasBlockSupport( name, FONT_SIZE_SUPPORT_KEY );
231
217
  },
232
- 'withFontSizeInlineStyles'
233
- );
218
+ };
234
219
 
235
220
  const MIGRATION_PATHS = {
236
221
  fontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],
@@ -254,70 +239,6 @@ function addTransforms( result, source, index, results ) {
254
239
  );
255
240
  }
256
241
 
257
- /**
258
- * Allow custom font sizes to appear fluid when fluid typography is enabled at
259
- * the theme level.
260
- *
261
- * Adds a custom getEditWrapperProps() callback to all block types that support
262
- * font sizes. Then, if fluid typography is enabled, this callback will swap any
263
- * custom font size in style.fontSize with a fluid font size (i.e. one that uses
264
- * clamp()).
265
- *
266
- * It's important that this hook runs after 'core/style/addEditProps' sets
267
- * style.fontSize as otherwise fontSize will be overwritten.
268
- *
269
- * @param {Object} blockType Block settings object.
270
- */
271
- function addEditPropsForFluidCustomFontSizes( blockType ) {
272
- if (
273
- ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||
274
- shouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )
275
- ) {
276
- return blockType;
277
- }
278
-
279
- const existingGetEditWrapperProps = blockType.getEditWrapperProps;
280
-
281
- blockType.getEditWrapperProps = ( attributes ) => {
282
- const wrapperProps = existingGetEditWrapperProps
283
- ? existingGetEditWrapperProps( attributes )
284
- : {};
285
-
286
- const fontSize = wrapperProps?.style?.fontSize;
287
-
288
- // TODO: This sucks! We should be using useSetting( 'typography.fluid' )
289
- // or even useSelect( blockEditorStore ). We can't do either here
290
- // because getEditWrapperProps is a plain JavaScript function called by
291
- // BlockListBlock and not a React component rendered within
292
- // BlockListContext.Provider. If we set fontSize using editor.
293
- // BlockListBlock instead of using getEditWrapperProps then the value is
294
- // clobbered when the core/style/addEditProps filter runs.
295
- const fluidTypographySettings = getFluidTypographyOptionsFromSettings(
296
- select( blockEditorStore ).getSettings().__experimentalFeatures
297
- );
298
- const newFontSize = fontSize
299
- ? getTypographyFontSizeValue(
300
- { size: fontSize },
301
- fluidTypographySettings
302
- )
303
- : null;
304
-
305
- if ( newFontSize === null ) {
306
- return wrapperProps;
307
- }
308
-
309
- return {
310
- ...wrapperProps,
311
- style: {
312
- ...wrapperProps?.style,
313
- fontSize: newFontSize,
314
- },
315
- };
316
- };
317
-
318
- return blockType;
319
- }
320
-
321
242
  addFilter(
322
243
  'blocks.registerBlockType',
323
244
  'core/font/addAttribute',
@@ -330,25 +251,8 @@ addFilter(
330
251
  addSaveProps
331
252
  );
332
253
 
333
- addFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );
334
-
335
- addFilter(
336
- 'editor.BlockListBlock',
337
- 'core/font-size/with-font-size-inline-styles',
338
- withFontSizeInlineStyles
339
- );
340
-
341
254
  addFilter(
342
255
  'blocks.switchToBlockType.transformedBlock',
343
256
  'core/font-size/addTransforms',
344
257
  addTransforms
345
258
  );
346
-
347
- addFilter(
348
- 'blocks.registerBlockType',
349
- 'core/font-size/addEditPropsForFluidCustomFontSizes',
350
- addEditPropsForFluidCustomFontSizes,
351
- // Run after 'core/style/addEditProps' so that the style object has already
352
- // been translated into inline CSS.
353
- 11
354
- );
@@ -1,27 +1,55 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
+ import { createBlockEditFilter, createBlockListBlockFilter } from './utils';
4
5
  import './compat';
5
- import './align';
6
+ import align from './align';
6
7
  import './lock';
7
- import './anchor';
8
+ import anchor from './anchor';
8
9
  import './aria-label';
9
- import './custom-class-name';
10
+ import customClassName from './custom-class-name';
10
11
  import './generated-class-name';
11
- import './style';
12
+ import style from './style';
12
13
  import './settings';
13
- import './color';
14
- import './duotone';
15
- import './font-family';
16
- import './font-size';
17
- import './border';
18
- import './position';
19
- import './layout';
14
+ import color from './color';
15
+ import duotone from './duotone';
16
+ import fontFamily from './font-family';
17
+ import fontSize from './font-size';
18
+ import border from './border';
19
+ import position from './position';
20
+ import layout from './layout';
21
+ import childLayout from './layout-child';
20
22
  import './content-lock-ui';
21
23
  import './metadata';
22
- import './custom-fields';
23
- import './block-hooks';
24
- import './block-renaming';
24
+ import customFields from './custom-fields';
25
+ import blockHooks from './block-hooks';
26
+ import blockRenaming from './block-renaming';
27
+
28
+ createBlockEditFilter(
29
+ [
30
+ align,
31
+ anchor,
32
+ customClassName,
33
+ style,
34
+ duotone,
35
+ position,
36
+ layout,
37
+ window.__experimentalConnections ? customFields : null,
38
+ blockHooks,
39
+ blockRenaming,
40
+ ].filter( Boolean )
41
+ );
42
+ createBlockListBlockFilter( [
43
+ align,
44
+ style,
45
+ color,
46
+ duotone,
47
+ fontFamily,
48
+ fontSize,
49
+ border,
50
+ position,
51
+ childLayout,
52
+ ] );
25
53
 
26
54
  export { useCustomSides } from './dimensions';
27
55
  export { useLayoutClasses, useLayoutStyles } from './layout';
@@ -1,16 +1,19 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
+ import { createBlockEditFilter } from './utils';
4
5
  import './compat';
5
- import './align';
6
- import './anchor';
6
+ import align from './align';
7
+ import anchor from './anchor';
7
8
  import './custom-class-name';
8
9
  import './generated-class-name';
9
- import './style';
10
+ import style from './style';
10
11
  import './color';
11
12
  import './font-size';
12
13
  import './layout';
13
14
 
15
+ createBlockEditFilter( [ align, anchor, style ] );
16
+
14
17
  export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
15
18
  export { getColorClassesAndStyles, useColorProps } from './use-color-props';
16
19
  export { getSpacingClassesAndStyles } from './use-spacing-props';