@wordpress/block-editor 12.16.0 → 12.17.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 (646) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +3 -6
  4. package/build/components/block-canvas/index.js +0 -2
  5. package/build/components/block-canvas/index.js.map +1 -1
  6. package/build/components/block-card/index.js +1 -1
  7. package/build/components/block-card/index.js.map +1 -1
  8. package/build/components/block-draggable/draggable-chip.js +6 -1
  9. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  10. package/build/components/block-draggable/index.js +76 -6
  11. package/build/components/block-draggable/index.js.map +1 -1
  12. package/build/components/block-draggable/index.native.js +0 -6
  13. package/build/components/block-draggable/index.native.js.map +1 -1
  14. package/build/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  15. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  16. package/build/components/block-editing-mode/index.js +2 -3
  17. package/build/components/block-editing-mode/index.js.map +1 -1
  18. package/build/components/block-inspector/index.js +1 -1
  19. package/build/components/block-inspector/index.js.map +1 -1
  20. package/build/components/block-list/block-list-item-cell.native.js +1 -0
  21. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  22. package/build/components/block-list/block.js +245 -102
  23. package/build/components/block-list/block.js.map +1 -1
  24. package/build/components/block-list/block.native.js +46 -20
  25. package/build/components/block-list/block.native.js.map +1 -1
  26. package/build/components/block-list/index.native.js +3 -5
  27. package/build/components/block-list/index.native.js.map +1 -1
  28. package/build/components/block-list/private-block-context.js +14 -0
  29. package/build/components/block-list/private-block-context.js.map +1 -0
  30. package/build/components/block-list/use-block-props/index.js +33 -96
  31. package/build/components/block-list/use-block-props/index.js.map +1 -1
  32. package/build/components/block-list/use-in-between-inserter.js +3 -2
  33. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  34. package/build/components/block-list/use-scroll-upon-insertion.native.js +41 -0
  35. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  36. package/build/components/block-lock/toolbar.js +15 -27
  37. package/build/components/block-lock/toolbar.js.map +1 -1
  38. package/build/components/block-mover/index.js +2 -1
  39. package/build/components/block-mover/index.js.map +1 -1
  40. package/build/components/block-patterns-list/index.js +4 -4
  41. package/build/components/block-patterns-list/index.js.map +1 -1
  42. package/build/components/block-switcher/index.js +4 -4
  43. package/build/components/block-switcher/index.js.map +1 -1
  44. package/build/components/block-toolbar/index.js +1 -2
  45. package/build/components/block-toolbar/index.js.map +1 -1
  46. package/build/components/block-tools/block-toolbar-popover.js +0 -2
  47. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  48. package/build/components/block-variation-transforms/index.js +29 -2
  49. package/build/components/block-variation-transforms/index.js.map +1 -1
  50. package/build/components/border-radius-control/linked-button.js +1 -1
  51. package/build/components/border-radius-control/linked-button.js.map +1 -1
  52. package/build/components/colors/utils.js +10 -2
  53. package/build/components/colors/utils.js.map +1 -1
  54. package/build/components/colors/with-colors.js +6 -2
  55. package/build/components/colors/with-colors.js.map +1 -1
  56. package/build/components/font-sizes/utils.js +10 -2
  57. package/build/components/font-sizes/utils.js.map +1 -1
  58. package/build/components/global-styles/border-panel.js +2 -1
  59. package/build/components/global-styles/border-panel.js.map +1 -1
  60. package/build/components/global-styles/color-panel.js +2 -1
  61. package/build/components/global-styles/color-panel.js.map +1 -1
  62. package/build/components/global-styles/dimensions-panel.js +4 -3
  63. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  64. package/build/components/global-styles/effects-panel.js +2 -1
  65. package/build/components/global-styles/effects-panel.js.map +1 -1
  66. package/build/components/global-styles/filters-panel.js +1 -4
  67. package/build/components/global-styles/filters-panel.js.map +1 -1
  68. package/build/components/global-styles/get-global-styles-changes.js +192 -0
  69. package/build/components/global-styles/get-global-styles-changes.js.map +1 -0
  70. package/build/components/global-styles/hooks.js +1 -1
  71. package/build/components/global-styles/hooks.js.map +1 -1
  72. package/build/components/global-styles/image-settings-panel.js +7 -1
  73. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  74. package/build/components/global-styles/index.js +7 -0
  75. package/build/components/global-styles/index.js.map +1 -1
  76. package/build/components/global-styles/typography-panel.js +2 -1
  77. package/build/components/global-styles/typography-panel.js.map +1 -1
  78. package/build/components/global-styles/use-global-styles-output.js +22 -8
  79. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  80. package/build/components/global-styles/utils.js +8 -1
  81. package/build/components/global-styles/utils.js.map +1 -1
  82. package/build/components/height-control/index.js +6 -2
  83. package/build/components/height-control/index.js.map +1 -1
  84. package/build/components/image-size-control/index.js +2 -2
  85. package/build/components/image-size-control/index.js.map +1 -1
  86. package/build/components/index.native.js +6 -5
  87. package/build/components/index.native.js.map +1 -1
  88. package/build/components/inner-blocks/index.js +61 -22
  89. package/build/components/inner-blocks/index.js.map +1 -1
  90. package/build/components/inner-blocks/index.native.js +18 -4
  91. package/build/components/inner-blocks/index.native.js.map +1 -1
  92. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  93. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  94. package/build/components/inner-blocks/use-nested-settings-update.js +5 -9
  95. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  96. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  97. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  98. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -9
  99. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  100. package/build/components/inserter/block-patterns-tab/patterns-filter.js +10 -10
  101. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  102. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +9 -9
  103. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  104. package/build/components/inserter/block-patterns-tab/utils.js +10 -14
  105. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  106. package/build/components/inserter/hooks/use-block-types-state.js +4 -14
  107. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  108. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  109. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  110. package/build/components/inserter/index.js +1 -2
  111. package/build/components/inserter/index.js.map +1 -1
  112. package/build/components/inserter/library.js +3 -7
  113. package/build/components/inserter/library.js.map +1 -1
  114. package/build/components/inserter/menu.js +14 -28
  115. package/build/components/inserter/menu.js.map +1 -1
  116. package/build/components/inserter/tabs.js +21 -21
  117. package/build/components/inserter/tabs.js.map +1 -1
  118. package/build/components/inserter-draggable-blocks/index.js +1 -1
  119. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  120. package/build/components/inserter-list-item/index.js +2 -4
  121. package/build/components/inserter-list-item/index.js.map +1 -1
  122. package/build/components/inspector-controls/block-support-tools-panel.js +3 -1
  123. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  124. package/build/components/inspector-controls-tabs/index.js +34 -23
  125. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  126. package/build/components/list-view/block-select-button.js +4 -0
  127. package/build/components/list-view/block-select-button.js.map +1 -1
  128. package/build/components/list-view/block.js +57 -3
  129. package/build/components/list-view/block.js.map +1 -1
  130. package/build/components/media-upload-progress/constants.js +19 -0
  131. package/build/components/media-upload-progress/constants.js.map +1 -0
  132. package/build/components/media-upload-progress/index.native.js +42 -17
  133. package/build/components/media-upload-progress/index.native.js.map +1 -1
  134. package/build/components/navigable-toolbar/index.js +9 -14
  135. package/build/components/navigable-toolbar/index.js.map +1 -1
  136. package/build/components/plain-text/index.native.js +8 -3
  137. package/build/components/plain-text/index.native.js.map +1 -1
  138. package/build/components/provider/index.js +3 -1
  139. package/build/components/provider/index.js.map +1 -1
  140. package/build/components/provider/use-block-sync.js +7 -1
  141. package/build/components/provider/use-block-sync.js.map +1 -1
  142. package/build/components/rich-text/index.js +17 -7
  143. package/build/components/rich-text/index.js.map +1 -1
  144. package/build/components/rich-text/native/index.native.js +16 -24
  145. package/build/components/rich-text/native/index.native.js.map +1 -1
  146. package/build/components/rich-text/use-input-rules.js +2 -2
  147. package/build/components/rich-text/use-input-rules.js.map +1 -1
  148. package/build/components/rich-text/use-mark-persistent.js +1 -1
  149. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  150. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  151. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  152. package/build/components/url-input/index.js +9 -6
  153. package/build/components/url-input/index.js.map +1 -1
  154. package/build/components/use-block-commands/index.js +14 -18
  155. package/build/components/use-block-commands/index.js.map +1 -1
  156. package/build/components/use-block-drop-zone/index.js +51 -22
  157. package/build/components/use-block-drop-zone/index.js.map +1 -1
  158. package/build/components/use-moving-animation/index.js +100 -92
  159. package/build/components/use-moving-animation/index.js.map +1 -1
  160. package/build/components/use-on-block-drop/index.js +8 -11
  161. package/build/components/use-on-block-drop/index.js.map +1 -1
  162. package/build/components/writing-flow/index.js +0 -1
  163. package/build/components/writing-flow/index.js.map +1 -1
  164. package/build/components/writing-flow/use-drag-selection.js +15 -4
  165. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  166. package/build/components/writing-flow/use-selection-observer.js +73 -27
  167. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  168. package/build/components/writing-flow/use-tab-nav.js +7 -4
  169. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  170. package/build/hooks/align.js +1 -1
  171. package/build/hooks/align.js.map +1 -1
  172. package/build/hooks/anchor.js +1 -1
  173. package/build/hooks/anchor.js.map +1 -1
  174. package/build/hooks/aria-label.js +9 -1
  175. package/build/hooks/aria-label.js.map +1 -1
  176. package/build/hooks/background.js +185 -20
  177. package/build/hooks/background.js.map +1 -1
  178. package/build/hooks/border.js +5 -10
  179. package/build/hooks/border.js.map +1 -1
  180. package/build/hooks/color.js +13 -11
  181. package/build/hooks/color.js.map +1 -1
  182. package/build/hooks/custom-class-name.js +1 -1
  183. package/build/hooks/custom-class-name.js.map +1 -1
  184. package/build/hooks/custom-class-name.native.js +9 -1
  185. package/build/hooks/custom-class-name.native.js.map +1 -1
  186. package/build/hooks/dimensions.js +4 -9
  187. package/build/hooks/dimensions.js.map +1 -1
  188. package/build/hooks/font-family.js +7 -3
  189. package/build/hooks/font-family.js.map +1 -1
  190. package/build/hooks/font-size.js +1 -1
  191. package/build/hooks/font-size.js.map +1 -1
  192. package/build/hooks/index.js +4 -3
  193. package/build/hooks/index.js.map +1 -1
  194. package/build/hooks/index.native.js +5 -3
  195. package/build/hooks/index.native.js.map +1 -1
  196. package/build/hooks/layout.js +10 -4
  197. package/build/hooks/layout.js.map +1 -1
  198. package/build/hooks/style.js +1 -1
  199. package/build/hooks/style.js.map +1 -1
  200. package/build/hooks/typography.js +4 -9
  201. package/build/hooks/typography.js.map +1 -1
  202. package/build/hooks/typography.native.js +43 -18
  203. package/build/hooks/typography.native.js.map +1 -1
  204. package/build/hooks/use-typography-props.js +10 -2
  205. package/build/hooks/use-typography-props.js.map +1 -1
  206. package/build/hooks/utils.js +44 -4
  207. package/build/hooks/utils.js.map +1 -1
  208. package/build/private-apis.js +2 -4
  209. package/build/private-apis.js.map +1 -1
  210. package/build/private-apis.native.js +0 -2
  211. package/build/private-apis.native.js.map +1 -1
  212. package/build/store/actions.js +0 -16
  213. package/build/store/actions.js.map +1 -1
  214. package/build/store/private-actions.js +51 -5
  215. package/build/store/private-actions.js.map +1 -1
  216. package/build/store/private-selectors.js +12 -0
  217. package/build/store/private-selectors.js.map +1 -1
  218. package/build/store/reducer.js +14 -6
  219. package/build/store/reducer.js.map +1 -1
  220. package/build/store/selectors.js +1 -13
  221. package/build/store/selectors.js.map +1 -1
  222. package/build/store/undo-ignore.js +12 -0
  223. package/build/store/undo-ignore.js.map +1 -0
  224. package/build/store/utils.js +1 -1
  225. package/build/store/utils.js.map +1 -1
  226. package/build/utils/get-px-from-css-unit.js +16 -0
  227. package/build/utils/get-px-from-css-unit.js.map +1 -0
  228. package/build/utils/index.js +2 -2
  229. package/build/utils/index.js.map +1 -1
  230. package/build/utils/object.js +0 -38
  231. package/build/utils/object.js.map +1 -1
  232. package/build/utils/use-can-block-toolbar-be-focused.js +46 -0
  233. package/build/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  234. package/build-module/components/block-canvas/index.js +0 -2
  235. package/build-module/components/block-canvas/index.js.map +1 -1
  236. package/build-module/components/block-card/index.js +1 -1
  237. package/build-module/components/block-card/index.js.map +1 -1
  238. package/build-module/components/block-draggable/draggable-chip.js +6 -1
  239. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  240. package/build-module/components/block-draggable/index.js +76 -6
  241. package/build-module/components/block-draggable/index.js.map +1 -1
  242. package/build-module/components/block-draggable/index.native.js +1 -7
  243. package/build-module/components/block-draggable/index.native.js.map +1 -1
  244. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  245. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  246. package/build-module/components/block-editing-mode/index.js +3 -4
  247. package/build-module/components/block-editing-mode/index.js.map +1 -1
  248. package/build-module/components/block-inspector/index.js +1 -1
  249. package/build-module/components/block-inspector/index.js.map +1 -1
  250. package/build-module/components/block-list/block-list-item-cell.native.js +1 -0
  251. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  252. package/build-module/components/block-list/block.js +249 -106
  253. package/build-module/components/block-list/block.js.map +1 -1
  254. package/build-module/components/block-list/block.native.js +48 -22
  255. package/build-module/components/block-list/block.native.js.map +1 -1
  256. package/build-module/components/block-list/index.native.js +3 -5
  257. package/build-module/components/block-list/index.native.js.map +1 -1
  258. package/build-module/components/block-list/private-block-context.js +6 -0
  259. package/build-module/components/block-list/private-block-context.js.map +1 -0
  260. package/build-module/components/block-list/use-block-props/index.js +34 -97
  261. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  262. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  263. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  264. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +33 -0
  265. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  266. package/build-module/components/block-lock/toolbar.js +16 -28
  267. package/build-module/components/block-lock/toolbar.js.map +1 -1
  268. package/build-module/components/block-mover/index.js +2 -1
  269. package/build-module/components/block-mover/index.js.map +1 -1
  270. package/build-module/components/block-patterns-list/index.js +5 -5
  271. package/build-module/components/block-patterns-list/index.js.map +1 -1
  272. package/build-module/components/block-switcher/index.js +4 -4
  273. package/build-module/components/block-switcher/index.js.map +1 -1
  274. package/build-module/components/block-toolbar/index.js +1 -2
  275. package/build-module/components/block-toolbar/index.js.map +1 -1
  276. package/build-module/components/block-tools/block-toolbar-popover.js +0 -2
  277. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  278. package/build-module/components/block-variation-transforms/index.js +30 -3
  279. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  280. package/build-module/components/border-radius-control/linked-button.js +1 -1
  281. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  282. package/build-module/components/colors/utils.js +9 -1
  283. package/build-module/components/colors/utils.js.map +1 -1
  284. package/build-module/components/colors/with-colors.js +5 -1
  285. package/build-module/components/colors/with-colors.js.map +1 -1
  286. package/build-module/components/font-sizes/utils.js +9 -1
  287. package/build-module/components/font-sizes/utils.js.map +1 -1
  288. package/build-module/components/global-styles/border-panel.js +3 -2
  289. package/build-module/components/global-styles/border-panel.js.map +1 -1
  290. package/build-module/components/global-styles/color-panel.js +3 -2
  291. package/build-module/components/global-styles/color-panel.js.map +1 -1
  292. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  293. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  294. package/build-module/components/global-styles/effects-panel.js +3 -2
  295. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  296. package/build-module/components/global-styles/filters-panel.js +2 -5
  297. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  298. package/build-module/components/global-styles/get-global-styles-changes.js +184 -0
  299. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -0
  300. package/build-module/components/global-styles/hooks.js +1 -1
  301. package/build-module/components/global-styles/hooks.js.map +1 -1
  302. package/build-module/components/global-styles/image-settings-panel.js +7 -1
  303. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  304. package/build-module/components/global-styles/index.js +1 -0
  305. package/build-module/components/global-styles/index.js.map +1 -1
  306. package/build-module/components/global-styles/typography-panel.js +3 -2
  307. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  308. package/build-module/components/global-styles/use-global-styles-output.js +15 -1
  309. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  310. package/build-module/components/global-styles/utils.js +7 -0
  311. package/build-module/components/global-styles/utils.js.map +1 -1
  312. package/build-module/components/height-control/index.js +6 -2
  313. package/build-module/components/height-control/index.js.map +1 -1
  314. package/build-module/components/image-size-control/index.js +2 -2
  315. package/build-module/components/image-size-control/index.js.map +1 -1
  316. package/build-module/components/index.native.js +2 -1
  317. package/build-module/components/index.native.js.map +1 -1
  318. package/build-module/components/inner-blocks/index.js +62 -23
  319. package/build-module/components/inner-blocks/index.js.map +1 -1
  320. package/build-module/components/inner-blocks/index.native.js +18 -4
  321. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  323. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  324. package/build-module/components/inner-blocks/use-nested-settings-update.js +6 -10
  325. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  326. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  327. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  328. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +11 -10
  329. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  330. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +11 -11
  331. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  332. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +11 -11
  333. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  334. package/build-module/components/inserter/block-patterns-tab/utils.js +7 -11
  335. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  336. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -14
  337. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  338. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -2
  339. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  340. package/build-module/components/inserter/index.js +1 -2
  341. package/build-module/components/inserter/index.js.map +1 -1
  342. package/build-module/components/inserter/library.js +3 -7
  343. package/build-module/components/inserter/library.js.map +1 -1
  344. package/build-module/components/inserter/menu.js +14 -28
  345. package/build-module/components/inserter/menu.js.map +1 -1
  346. package/build-module/components/inserter/tabs.js +22 -22
  347. package/build-module/components/inserter/tabs.js.map +1 -1
  348. package/build-module/components/inserter-draggable-blocks/index.js +2 -2
  349. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  350. package/build-module/components/inserter-list-item/index.js +2 -4
  351. package/build-module/components/inserter-list-item/index.js.map +1 -1
  352. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -1
  353. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  354. package/build-module/components/inspector-controls-tabs/index.js +35 -24
  355. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  356. package/build-module/components/list-view/block-select-button.js +4 -0
  357. package/build-module/components/list-view/block-select-button.js.map +1 -1
  358. package/build-module/components/list-view/block.js +58 -4
  359. package/build-module/components/list-view/block.js.map +1 -1
  360. package/build-module/components/media-upload-progress/constants.js +7 -0
  361. package/build-module/components/media-upload-progress/constants.js.map +1 -0
  362. package/build-module/components/media-upload-progress/index.native.js +37 -8
  363. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  364. package/build-module/components/navigable-toolbar/index.js +9 -14
  365. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  366. package/build-module/components/plain-text/index.native.js +6 -1
  367. package/build-module/components/plain-text/index.native.js.map +1 -1
  368. package/build-module/components/provider/index.js +3 -1
  369. package/build-module/components/provider/index.js.map +1 -1
  370. package/build-module/components/provider/use-block-sync.js +7 -1
  371. package/build-module/components/provider/use-block-sync.js.map +1 -1
  372. package/build-module/components/rich-text/index.js +17 -7
  373. package/build-module/components/rich-text/index.js.map +1 -1
  374. package/build-module/components/rich-text/native/index.native.js +16 -23
  375. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  376. package/build-module/components/rich-text/use-input-rules.js +2 -2
  377. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  378. package/build-module/components/rich-text/use-mark-persistent.js +1 -1
  379. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  380. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  381. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  382. package/build-module/components/url-input/index.js +9 -6
  383. package/build-module/components/url-input/index.js.map +1 -1
  384. package/build-module/components/use-block-commands/index.js +14 -18
  385. package/build-module/components/use-block-commands/index.js.map +1 -1
  386. package/build-module/components/use-block-drop-zone/index.js +51 -23
  387. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  388. package/build-module/components/use-moving-animation/index.js +102 -94
  389. package/build-module/components/use-moving-animation/index.js.map +1 -1
  390. package/build-module/components/use-on-block-drop/index.js +8 -11
  391. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  392. package/build-module/components/writing-flow/index.js +0 -1
  393. package/build-module/components/writing-flow/index.js.map +1 -1
  394. package/build-module/components/writing-flow/use-drag-selection.js +15 -4
  395. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  396. package/build-module/components/writing-flow/use-selection-observer.js +73 -27
  397. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  398. package/build-module/components/writing-flow/use-tab-nav.js +7 -4
  399. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  400. package/build-module/hooks/align.js +1 -1
  401. package/build-module/hooks/align.js.map +1 -1
  402. package/build-module/hooks/anchor.js +1 -1
  403. package/build-module/hooks/anchor.js.map +1 -1
  404. package/build-module/hooks/aria-label.js +7 -1
  405. package/build-module/hooks/aria-label.js.map +1 -1
  406. package/build-module/hooks/background.js +181 -19
  407. package/build-module/hooks/background.js.map +1 -1
  408. package/build-module/hooks/border.js +2 -8
  409. package/build-module/hooks/border.js.map +1 -1
  410. package/build-module/hooks/color.js +11 -9
  411. package/build-module/hooks/color.js.map +1 -1
  412. package/build-module/hooks/custom-class-name.js +1 -1
  413. package/build-module/hooks/custom-class-name.js.map +1 -1
  414. package/build-module/hooks/custom-class-name.native.js +7 -1
  415. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  416. package/build-module/hooks/dimensions.js +1 -7
  417. package/build-module/hooks/dimensions.js.map +1 -1
  418. package/build-module/hooks/font-family.js +6 -2
  419. package/build-module/hooks/font-family.js.map +1 -1
  420. package/build-module/hooks/font-size.js +1 -1
  421. package/build-module/hooks/font-size.js.map +1 -1
  422. package/build-module/hooks/index.js +5 -4
  423. package/build-module/hooks/index.js.map +1 -1
  424. package/build-module/hooks/index.native.js +6 -4
  425. package/build-module/hooks/index.native.js.map +1 -1
  426. package/build-module/hooks/layout.js +9 -3
  427. package/build-module/hooks/layout.js.map +1 -1
  428. package/build-module/hooks/style.js +1 -1
  429. package/build-module/hooks/style.js.map +1 -1
  430. package/build-module/hooks/typography.js +1 -7
  431. package/build-module/hooks/typography.js.map +1 -1
  432. package/build-module/hooks/typography.native.js +43 -17
  433. package/build-module/hooks/typography.native.js.map +1 -1
  434. package/build-module/hooks/use-typography-props.js +9 -1
  435. package/build-module/hooks/use-typography-props.js.map +1 -1
  436. package/build-module/hooks/utils.js +43 -4
  437. package/build-module/hooks/utils.js.map +1 -1
  438. package/build-module/private-apis.js +2 -4
  439. package/build-module/private-apis.js.map +1 -1
  440. package/build-module/private-apis.native.js +0 -2
  441. package/build-module/private-apis.native.js.map +1 -1
  442. package/build-module/store/actions.js +0 -15
  443. package/build-module/store/actions.js.map +1 -1
  444. package/build-module/store/private-actions.js +49 -4
  445. package/build-module/store/private-actions.js.map +1 -1
  446. package/build-module/store/private-selectors.js +11 -0
  447. package/build-module/store/private-selectors.js.map +1 -1
  448. package/build-module/store/reducer.js +14 -6
  449. package/build-module/store/reducer.js.map +1 -1
  450. package/build-module/store/selectors.js +1 -12
  451. package/build-module/store/selectors.js.map +1 -1
  452. package/build-module/store/undo-ignore.js +5 -0
  453. package/build-module/store/undo-ignore.js.map +1 -0
  454. package/build-module/store/utils.js +2 -2
  455. package/build-module/store/utils.js.map +1 -1
  456. package/build-module/utils/get-px-from-css-unit.js +9 -0
  457. package/build-module/utils/get-px-from-css-unit.js.map +1 -0
  458. package/build-module/utils/index.js +1 -1
  459. package/build-module/utils/index.js.map +1 -1
  460. package/build-module/utils/object.js +0 -37
  461. package/build-module/utils/object.js.map +1 -1
  462. package/build-module/utils/use-can-block-toolbar-be-focused.js +40 -0
  463. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  464. package/build-style/content-rtl.css +7 -6
  465. package/build-style/content.css +7 -6
  466. package/build-style/style-rtl.css +51 -8
  467. package/build-style/style.css +51 -8
  468. package/package.json +31 -31
  469. package/src/components/alignment-control/README.md +0 -5
  470. package/src/components/block-alignment-control/README.md +0 -5
  471. package/src/components/block-alignment-matrix-control/README.md +0 -10
  472. package/src/components/block-breadcrumb/README.md +0 -5
  473. package/src/components/block-canvas/index.js +0 -2
  474. package/src/components/block-canvas/style.scss +6 -0
  475. package/src/components/block-caption/README.md +0 -5
  476. package/src/components/block-card/README.md +0 -5
  477. package/src/components/block-card/index.js +1 -1
  478. package/src/components/block-draggable/draggable-chip.js +11 -1
  479. package/src/components/block-draggable/index.js +116 -4
  480. package/src/components/block-draggable/index.native.js +0 -5
  481. package/src/components/block-draggable/style.scss +35 -0
  482. package/src/components/block-draggable/test/helpers.native.js +8 -7
  483. package/src/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  484. package/src/components/block-editing-mode/index.js +3 -3
  485. package/src/components/block-icon/README.md +0 -5
  486. package/src/components/block-inspector/README.md +0 -5
  487. package/src/components/block-inspector/index.js +3 -1
  488. package/src/components/block-list/block-list-item-cell.native.js +5 -1
  489. package/src/components/block-list/block.js +290 -119
  490. package/src/components/block-list/block.native.js +55 -21
  491. package/src/components/block-list/content.scss +14 -10
  492. package/src/components/block-list/index.native.js +3 -5
  493. package/src/components/block-list/{block-list-block-context.js → private-block-context.js} +1 -1
  494. package/src/components/block-list/use-block-props/index.js +32 -128
  495. package/src/components/block-list/use-in-between-inserter.js +4 -1
  496. package/src/components/block-list/use-scroll-upon-insertion.native.js +52 -0
  497. package/src/components/block-lock/toolbar.js +15 -34
  498. package/src/components/block-mover/README.md +0 -5
  499. package/src/components/block-mover/index.js +1 -1
  500. package/src/components/block-parent-selector/README.md +0 -5
  501. package/src/components/block-patterns-list/README.md +0 -5
  502. package/src/components/block-patterns-list/index.js +8 -5
  503. package/src/components/block-switcher/index.js +49 -59
  504. package/src/components/block-toolbar/README.md +0 -5
  505. package/src/components/block-toolbar/index.js +1 -2
  506. package/src/components/block-tools/block-toolbar-popover.js +4 -10
  507. package/src/components/block-types-list/README.md +0 -5
  508. package/src/components/block-variation-picker/README.md +0 -5
  509. package/src/components/block-variation-transforms/README.md +0 -5
  510. package/src/components/block-variation-transforms/index.js +49 -3
  511. package/src/components/border-radius-control/linked-button.js +1 -1
  512. package/src/components/caption/README.md +0 -5
  513. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -1
  514. package/src/components/colors/utils.js +8 -1
  515. package/src/components/colors/with-colors.js +3 -1
  516. package/src/components/contrast-checker/README.md +0 -4
  517. package/src/components/copy-handler/README.md +0 -10
  518. package/src/components/font-sizes/utils.js +7 -1
  519. package/src/components/global-styles/border-panel.js +2 -1
  520. package/src/components/global-styles/color-panel.js +2 -1
  521. package/src/components/global-styles/dimensions-panel.js +4 -3
  522. package/src/components/global-styles/effects-panel.js +2 -1
  523. package/src/components/global-styles/filters-panel.js +2 -5
  524. package/src/components/global-styles/get-global-styles-changes.js +210 -0
  525. package/src/components/global-styles/hooks.js +3 -0
  526. package/src/components/global-styles/image-settings-panel.js +6 -0
  527. package/src/components/global-styles/index.js +1 -0
  528. package/src/components/global-styles/test/get-global-styles-changes.js +234 -0
  529. package/src/components/global-styles/typography-panel.js +2 -1
  530. package/src/components/global-styles/use-global-styles-output.js +9 -5
  531. package/src/components/global-styles/utils.js +7 -0
  532. package/src/components/height-control/README.md +2 -7
  533. package/src/components/height-control/index.js +4 -0
  534. package/src/components/image-size-control/index.js +5 -2
  535. package/src/components/index.native.js +2 -2
  536. package/src/components/inner-blocks/index.js +68 -29
  537. package/src/components/inner-blocks/index.native.js +19 -7
  538. package/src/components/inner-blocks/use-inner-block-template-sync.js +5 -7
  539. package/src/components/inner-blocks/use-nested-settings-update.js +6 -13
  540. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  541. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +15 -15
  542. package/src/components/inserter/block-patterns-tab/patterns-filter.js +15 -13
  543. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +15 -18
  544. package/src/components/inserter/block-patterns-tab/utils.js +11 -12
  545. package/src/components/inserter/hooks/use-block-types-state.js +9 -11
  546. package/src/components/inserter/hooks/use-patterns-state.js +2 -2
  547. package/src/components/inserter/index.js +0 -1
  548. package/src/components/inserter/library.js +2 -8
  549. package/src/components/inserter/menu.js +13 -31
  550. package/src/components/inserter/style.scss +6 -4
  551. package/src/components/inserter/tabs.js +34 -25
  552. package/src/components/inserter-draggable-blocks/index.js +2 -2
  553. package/src/components/inserter-list-item/index.js +6 -6
  554. package/src/components/inspector-controls/block-support-tools-panel.js +2 -0
  555. package/src/components/inspector-controls-tabs/index.js +39 -28
  556. package/src/components/inspector-controls-tabs/style.scss +3 -2
  557. package/src/components/letter-spacing-control/README.md +0 -5
  558. package/src/components/line-height-control/README.md +0 -5
  559. package/src/components/list-view/README.md +0 -5
  560. package/src/components/list-view/block-select-button.js +4 -0
  561. package/src/components/list-view/block.js +73 -2
  562. package/src/components/list-view/style.scss +6 -0
  563. package/src/components/media-upload-progress/constants.js +6 -0
  564. package/src/components/media-upload-progress/index.native.js +66 -14
  565. package/src/components/media-upload-progress/test/index.native.js +2 -2
  566. package/src/components/multi-selection-inspector/README.md +0 -5
  567. package/src/components/navigable-toolbar/index.js +13 -11
  568. package/src/components/plain-text/index.native.js +6 -1
  569. package/src/components/provider/index.js +1 -1
  570. package/src/components/provider/test/use-block-sync.js +20 -17
  571. package/src/components/provider/use-block-sync.js +6 -0
  572. package/src/components/rich-text/index.js +18 -6
  573. package/src/components/rich-text/native/index.native.js +16 -24
  574. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +3 -3
  575. package/src/components/rich-text/native/test/index.native.js +72 -5
  576. package/src/components/rich-text/use-input-rules.js +2 -2
  577. package/src/components/rich-text/use-mark-persistent.js +1 -2
  578. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  579. package/src/components/text-decoration-control/README.md +40 -0
  580. package/src/components/text-transform-control/README.md +0 -4
  581. package/src/components/ungroup-button/README.md +0 -5
  582. package/src/components/unit-control/README.md +0 -4
  583. package/src/components/url-input/index.js +11 -11
  584. package/src/components/use-block-commands/index.js +18 -21
  585. package/src/components/use-block-drop-zone/index.js +85 -34
  586. package/src/components/use-moving-animation/index.js +107 -103
  587. package/src/components/use-on-block-drop/index.js +7 -23
  588. package/src/components/use-on-block-drop/test/index.js +12 -26
  589. package/src/components/use-resize-canvas/README.md +0 -4
  590. package/src/components/use-settings/README.md +0 -4
  591. package/src/components/writing-flow/index.js +0 -1
  592. package/src/components/writing-flow/use-drag-selection.js +18 -4
  593. package/src/components/writing-flow/use-selection-observer.js +99 -37
  594. package/src/components/writing-flow/use-tab-nav.js +7 -7
  595. package/src/hooks/align.js +1 -5
  596. package/src/hooks/anchor.js +1 -5
  597. package/src/hooks/aria-label.js +8 -5
  598. package/src/hooks/background.js +253 -21
  599. package/src/hooks/border.js +2 -13
  600. package/src/hooks/color.js +19 -14
  601. package/src/hooks/custom-class-name.js +1 -5
  602. package/src/hooks/custom-class-name.native.js +8 -5
  603. package/src/hooks/dimensions.js +1 -7
  604. package/src/hooks/font-family.js +4 -7
  605. package/src/hooks/font-size.js +1 -6
  606. package/src/hooks/index.js +19 -3
  607. package/src/hooks/index.native.js +17 -4
  608. package/src/hooks/layout.js +5 -2
  609. package/src/hooks/style.js +1 -6
  610. package/src/hooks/test/anchor.js +4 -9
  611. package/src/hooks/test/custom-class-name.js +3 -8
  612. package/src/hooks/test/style.js +4 -14
  613. package/src/hooks/typography.js +1 -7
  614. package/src/hooks/typography.native.js +31 -33
  615. package/src/hooks/use-typography-props.js +7 -1
  616. package/src/hooks/utils.js +60 -2
  617. package/src/private-apis.js +2 -4
  618. package/src/private-apis.native.js +0 -2
  619. package/src/store/actions.js +0 -15
  620. package/src/store/private-actions.js +44 -4
  621. package/src/store/private-selectors.js +11 -0
  622. package/src/store/reducer.js +16 -5
  623. package/src/store/selectors.js +5 -13
  624. package/src/store/undo-ignore.js +4 -0
  625. package/src/store/utils.js +2 -2
  626. package/src/style.scss +1 -0
  627. package/src/utils/get-px-from-css-unit.js +8 -0
  628. package/src/utils/index.js +1 -1
  629. package/src/utils/object.js +0 -35
  630. package/src/utils/test/object.js +1 -96
  631. package/src/utils/use-can-block-toolbar-be-focused.js +48 -0
  632. package/build/components/block-list/block-list-block-context.js +0 -14
  633. package/build/components/block-list/block-list-block-context.js.map +0 -1
  634. package/build/utils/parse-css-unit-to-px.js +0 -302
  635. package/build/utils/parse-css-unit-to-px.js.map +0 -1
  636. package/build/utils/use-should-contextual-toolbar-show.js +0 -63
  637. package/build/utils/use-should-contextual-toolbar-show.js.map +0 -1
  638. package/build-module/components/block-list/block-list-block-context.js +0 -6
  639. package/build-module/components/block-list/block-list-block-context.js.map +0 -1
  640. package/build-module/utils/parse-css-unit-to-px.js +0 -294
  641. package/build-module/utils/parse-css-unit-to-px.js.map +0 -1
  642. package/build-module/utils/use-should-contextual-toolbar-show.js +0 -57
  643. package/build-module/utils/use-should-contextual-toolbar-show.js.map +0 -1
  644. package/src/utils/parse-css-unit-to-px.js +0 -329
  645. package/src/utils/test/parse-css-unit-to-px.js +0 -172
  646. package/src/utils/use-should-contextual-toolbar-show.js +0 -85
@@ -8,7 +8,6 @@ import classnames from 'classnames';
8
8
  */
9
9
  import { getBlockSupport } from '@wordpress/blocks';
10
10
  import { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';
11
- import { pure } from '@wordpress/compose';
12
11
  import { Platform, useCallback, useMemo } from '@wordpress/element';
13
12
  import { addFilter } from '@wordpress/hooks';
14
13
  import { useSelect } from '@wordpress/data';
@@ -133,7 +132,7 @@ function BordersInspectorControl( { children, resetAllFilter } ) {
133
132
  );
134
133
  }
135
134
 
136
- function BorderPanelPure( { clientId, name, setAttributes, settings } ) {
135
+ export function BorderPanel( { clientId, name, setAttributes, settings } ) {
137
136
  const isEnabled = useHasBorderPanel( settings );
138
137
  function selector( select ) {
139
138
  const { style, borderColor } =
@@ -170,11 +169,6 @@ function BorderPanelPure( { clientId, name, setAttributes, settings } ) {
170
169
  );
171
170
  }
172
171
 
173
- // We don't want block controls to re-render when typing inside a block. `pure`
174
- // will prevent re-renders unless props change, so only pass the needed props
175
- // and not the whole attributes object.
176
- export const BorderPanel = pure( BorderPanelPure );
177
-
178
172
  /**
179
173
  * Determine whether there is block support for border properties.
180
174
  *
@@ -348,6 +342,7 @@ function useBlockProps( { name, borderColor, style } ) {
348
342
 
349
343
  export default {
350
344
  useBlockProps,
345
+ addSaveProps,
351
346
  attributeKeys: [ 'borderColor', 'style' ],
352
347
  hasSupport( name ) {
353
348
  return hasBorderSupport( name, 'color' );
@@ -359,9 +354,3 @@ addFilter(
359
354
  'core/border/addAttributes',
360
355
  addAttributes
361
356
  );
362
-
363
- addFilter(
364
- 'blocks.getSaveContent.extraProps',
365
- 'core/border/addSaveProps',
366
- addSaveProps
367
- );
@@ -9,7 +9,6 @@ import classnames from 'classnames';
9
9
  import { addFilter } from '@wordpress/hooks';
10
10
  import { getBlockSupport } from '@wordpress/blocks';
11
11
  import { useMemo, Platform, useCallback } from '@wordpress/element';
12
- import { pure } from '@wordpress/compose';
13
12
  import { useSelect } from '@wordpress/data';
14
13
 
15
14
  /**
@@ -25,6 +24,7 @@ import {
25
24
  transformStyles,
26
25
  shouldSkipSerialization,
27
26
  } from './utils';
27
+ import { getBackgroundImageClasses } from './background';
28
28
  import { useSettings } from '../components/use-settings';
29
29
  import InspectorControls from '../components/inspector-controls';
30
30
  import {
@@ -267,7 +267,7 @@ function ColorInspectorControl( { children, resetAllFilter } ) {
267
267
  );
268
268
  }
269
269
 
270
- function ColorEditPure( { clientId, name, setAttributes, settings } ) {
270
+ export function ColorEdit( { clientId, name, setAttributes, settings } ) {
271
271
  const isEnabled = useHasColorPanel( settings );
272
272
  function selector( select ) {
273
273
  const { style, textColor, backgroundColor, gradient } =
@@ -336,11 +336,6 @@ function ColorEditPure( { clientId, name, setAttributes, settings } ) {
336
336
  );
337
337
  }
338
338
 
339
- // We don't want block controls to re-render when typing inside a block. `pure`
340
- // will prevent re-renders unless props change, so only pass the needed props
341
- // and not the whole attributes object.
342
- export const ColorEdit = pure( ColorEditPure );
343
-
344
339
  function useBlockProps( {
345
340
  name,
346
341
  backgroundColor,
@@ -389,16 +384,32 @@ function useBlockProps( {
389
384
  )?.color;
390
385
  }
391
386
 
392
- return addSaveProps( { style: extraStyles }, name, {
387
+ const saveProps = addSaveProps( { style: extraStyles }, name, {
393
388
  textColor,
394
389
  backgroundColor,
395
390
  gradient,
396
391
  style,
397
392
  } );
393
+
394
+ const hasBackgroundValue =
395
+ backgroundColor ||
396
+ style?.color?.background ||
397
+ gradient ||
398
+ style?.color?.gradient;
399
+
400
+ return {
401
+ ...saveProps,
402
+ className: classnames(
403
+ saveProps.className,
404
+ // Add background image classes in the editor, if not already handled by background color values.
405
+ ! hasBackgroundValue && getBackgroundImageClasses( style )
406
+ ),
407
+ };
398
408
  }
399
409
 
400
410
  export default {
401
411
  useBlockProps,
412
+ addSaveProps,
402
413
  attributeKeys: [ 'backgroundColor', 'textColor', 'gradient', 'style' ],
403
414
  hasSupport: hasColorSupport,
404
415
  };
@@ -437,12 +448,6 @@ addFilter(
437
448
  addAttributes
438
449
  );
439
450
 
440
- addFilter(
441
- 'blocks.getSaveContent.extraProps',
442
- 'core/color/addSaveProps',
443
- addSaveProps
444
- );
445
-
446
451
  addFilter(
447
452
  'blocks.switchToBlockType.transformedBlock',
448
453
  'core/color/addTransforms',
@@ -65,6 +65,7 @@ function CustomClassNameControlsPure( { className, setAttributes } ) {
65
65
 
66
66
  export default {
67
67
  edit: CustomClassNameControlsPure,
68
+ addSaveProps,
68
69
  attributeKeys: [ 'className' ],
69
70
  hasSupport( name ) {
70
71
  return hasBlockSupport( name, 'customClassName', true );
@@ -140,11 +141,6 @@ addFilter(
140
141
  'core/editor/custom-class-name/attribute',
141
142
  addAttribute
142
143
  );
143
- addFilter(
144
- 'blocks.getSaveContent.extraProps',
145
- 'core/editor/custom-class-name/save-props',
146
- addSaveProps
147
- );
148
144
 
149
145
  addFilter(
150
146
  'blocks.switchToBlockType.transformedBlock',
@@ -60,8 +60,11 @@ addFilter(
60
60
  'core/custom-class-name/attribute',
61
61
  addAttribute
62
62
  );
63
- addFilter(
64
- 'blocks.getSaveContent.extraProps',
65
- 'core/custom-class-name/save-props',
66
- addSaveProps
67
- );
63
+
64
+ export default {
65
+ addSaveProps,
66
+ attributeKeys: [ 'className' ],
67
+ hasSupport( name ) {
68
+ return hasBlockSupport( name, 'customClassName', true );
69
+ },
70
+ };
@@ -5,7 +5,6 @@ import { useState, useEffect, useCallback } from '@wordpress/element';
5
5
  import { useDispatch, useSelect } from '@wordpress/data';
6
6
  import { getBlockSupport } from '@wordpress/blocks';
7
7
  import deprecated from '@wordpress/deprecated';
8
- import { pure } from '@wordpress/compose';
9
8
 
10
9
  /**
11
10
  * Internal dependencies
@@ -66,7 +65,7 @@ function DimensionsInspectorControl( { children, resetAllFilter } ) {
66
65
  );
67
66
  }
68
67
 
69
- function DimensionsPanelPure( { clientId, name, setAttributes, settings } ) {
68
+ export function DimensionsPanel( { clientId, name, setAttributes, settings } ) {
70
69
  const isEnabled = useHasDimensionsPanel( settings );
71
70
  const value = useSelect(
72
71
  ( select ) =>
@@ -126,11 +125,6 @@ function DimensionsPanelPure( { clientId, name, setAttributes, settings } ) {
126
125
  );
127
126
  }
128
127
 
129
- // We don't want block controls to re-render when typing inside a block. `pure`
130
- // will prevent re-renders unless props change, so only pass the needed props
131
- // and not the whole attributes object.
132
- export const DimensionsPanel = pure( DimensionsPanelPure );
133
-
134
128
  /**
135
129
  * @deprecated
136
130
  */
@@ -4,13 +4,14 @@
4
4
  import { addFilter } from '@wordpress/hooks';
5
5
  import { hasBlockSupport } from '@wordpress/blocks';
6
6
  import TokenList from '@wordpress/token-list';
7
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
7
8
 
8
9
  /**
9
10
  * Internal dependencies
10
11
  */
11
12
  import { shouldSkipSerialization } from './utils';
12
13
  import { TYPOGRAPHY_SUPPORT_KEY } from './typography';
13
- import { kebabCase } from '../utils/object';
14
+ import { unlock } from '../lock-unlock';
14
15
 
15
16
  export const FONT_FAMILY_SUPPORT_KEY = 'typography.__experimentalFontFamily';
16
17
 
@@ -67,6 +68,7 @@ function addSaveProps( props, blockType, attributes ) {
67
68
 
68
69
  // Use TokenList to dedupe classes.
69
70
  const classes = new TokenList( props.className );
71
+ const { kebabCase } = unlock( componentsPrivateApis );
70
72
  classes.add( `has-${ kebabCase( attributes?.fontFamily ) }-font-family` );
71
73
  const newClassName = classes.value;
72
74
  props.className = newClassName ? newClassName : undefined;
@@ -80,6 +82,7 @@ function useBlockProps( { name, fontFamily } ) {
80
82
 
81
83
  export default {
82
84
  useBlockProps,
85
+ addSaveProps,
83
86
  attributeKeys: [ 'fontFamily' ],
84
87
  hasSupport( name ) {
85
88
  return hasBlockSupport( name, FONT_FAMILY_SUPPORT_KEY );
@@ -103,9 +106,3 @@ addFilter(
103
106
  'core/fontFamily/addAttribute',
104
107
  addAttributes
105
108
  );
106
-
107
- addFilter(
108
- 'blocks.getSaveContent.extraProps',
109
- 'core/fontFamily/addSaveProps',
110
- addSaveProps
111
- );
@@ -211,6 +211,7 @@ function useBlockProps( { name, fontSize, style } ) {
211
211
 
212
212
  export default {
213
213
  useBlockProps,
214
+ addSaveProps,
214
215
  attributeKeys: [ 'fontSize', 'style' ],
215
216
  hasSupport( name ) {
216
217
  return hasBlockSupport( name, FONT_SIZE_SUPPORT_KEY );
@@ -245,12 +246,6 @@ addFilter(
245
246
  addAttributes
246
247
  );
247
248
 
248
- addFilter(
249
- 'blocks.getSaveContent.extraProps',
250
- 'core/font/addSaveProps',
251
- addSaveProps
252
- );
253
-
254
249
  addFilter(
255
250
  'blocks.switchToBlockType.transformedBlock',
256
251
  'core/font-size/addTransforms',
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import { createBlockEditFilter, createBlockListBlockFilter } from './utils';
4
+ import {
5
+ createBlockEditFilter,
6
+ createBlockListBlockFilter,
7
+ createBlockSaveFilter,
8
+ } from './utils';
5
9
  import './compat';
6
10
  import align from './align';
7
11
  import './lock';
8
12
  import anchor from './anchor';
9
- import './aria-label';
13
+ import ariaLabel from './aria-label';
10
14
  import customClassName from './custom-class-name';
11
15
  import './generated-class-name';
12
16
  import style from './style';
@@ -19,7 +23,7 @@ import border from './border';
19
23
  import position from './position';
20
24
  import layout from './layout';
21
25
  import childLayout from './layout-child';
22
- import './content-lock-ui';
26
+ import contentLockUI from './content-lock-ui';
23
27
  import './metadata';
24
28
  import customFields from './custom-fields';
25
29
  import blockHooks from './block-hooks';
@@ -34,6 +38,7 @@ createBlockEditFilter(
34
38
  duotone,
35
39
  position,
36
40
  layout,
41
+ contentLockUI,
37
42
  window.__experimentalConnections ? customFields : null,
38
43
  blockHooks,
39
44
  blockRenaming,
@@ -50,6 +55,17 @@ createBlockListBlockFilter( [
50
55
  position,
51
56
  childLayout,
52
57
  ] );
58
+ createBlockSaveFilter( [
59
+ align,
60
+ anchor,
61
+ ariaLabel,
62
+ customClassName,
63
+ border,
64
+ color,
65
+ style,
66
+ fontFamily,
67
+ fontSize,
68
+ ] );
53
69
 
54
70
  export { useCustomSides } from './dimensions';
55
71
  export { useLayoutClasses, useLayoutStyles } from './layout';
@@ -1,18 +1,31 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import { createBlockEditFilter } from './utils';
4
+ import {
5
+ createBlockEditFilter,
6
+ createBlockListBlockFilter,
7
+ createBlockSaveFilter,
8
+ } from './utils';
5
9
  import './compat';
6
10
  import align from './align';
7
11
  import anchor from './anchor';
8
- import './custom-class-name';
12
+ import customClassName from './custom-class-name';
9
13
  import './generated-class-name';
10
14
  import style from './style';
11
- import './color';
12
- import './font-size';
15
+ import color from './color';
16
+ import fontSize from './font-size';
13
17
  import './layout';
14
18
 
15
19
  createBlockEditFilter( [ align, anchor, style ] );
20
+ createBlockListBlockFilter( [ align, style, color, fontSize ] );
21
+ createBlockSaveFilter( [
22
+ align,
23
+ anchor,
24
+ customClassName,
25
+ color,
26
+ style,
27
+ fontSize,
28
+ ] );
16
29
 
17
30
  export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
18
31
  export { getColorClassesAndStyles, useColorProps } from './use-color-props';
@@ -15,6 +15,7 @@ import {
15
15
  ButtonGroup,
16
16
  ToggleControl,
17
17
  PanelBody,
18
+ privateApis as componentsPrivateApis,
18
19
  } from '@wordpress/components';
19
20
  import { __ } from '@wordpress/i18n';
20
21
 
@@ -27,8 +28,8 @@ import { useSettings } from '../components/use-settings';
27
28
  import { getLayoutType, getLayoutTypes } from '../layouts';
28
29
  import { useBlockEditingMode } from '../components/block-editing-mode';
29
30
  import { LAYOUT_DEFINITIONS } from '../layouts/definitions';
30
- import { kebabCase } from '../utils/object';
31
31
  import { useBlockSettings, useStyleOverride } from './utils';
32
+ import { unlock } from '../lock-unlock';
32
33
 
33
34
  const layoutBlockSupportKey = 'layout';
34
35
 
@@ -48,6 +49,7 @@ function hasLayoutBlockSupport( blockName ) {
48
49
  * @return { Array } Array of CSS classname strings.
49
50
  */
50
51
  export function useLayoutClasses( blockAttributes = {}, blockName = '' ) {
52
+ const { kebabCase } = unlock( componentsPrivateApis );
51
53
  const rootPaddingAlignment = useSelect( ( select ) => {
52
54
  const { getSettings } = select( blockEditorStore );
53
55
  return getSettings().__experimentalFeatures
@@ -348,7 +350,8 @@ function BlockWithLayoutStyles( { block: BlockListBlock, props } ) {
348
350
  : layout || defaultBlockLayout || {};
349
351
  const layoutClasses = useLayoutClasses( attributes, name );
350
352
 
351
- const selectorPrefix = `wp-container-${ kebabCase( name ) }-layout-`;
353
+ const { kebabCase } = unlock( componentsPrivateApis );
354
+ const selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`;
352
355
  // Higher specificity to override defaults from theme.json.
353
356
  const selector = `.${ selectorPrefix }${ id }.${ selectorPrefix }${ id }`;
354
357
  const [ blockGapSupport ] = useSettings( 'spacing.blockGap' );
@@ -343,6 +343,7 @@ function BlockStyleControls( {
343
343
  export default {
344
344
  edit: BlockStyleControls,
345
345
  hasSupport: hasStyleSupport,
346
+ addSaveProps,
346
347
  attributeKeys: [ 'style' ],
347
348
  useBlockProps,
348
349
  };
@@ -455,9 +456,3 @@ addFilter(
455
456
  'core/style/addAttribute',
456
457
  addAttribute
457
458
  );
458
-
459
- addFilter(
460
- 'blocks.getSaveContent.extraProps',
461
- 'core/style/addSaveProps',
462
- addSaveProps
463
- );
@@ -6,7 +6,7 @@ import { applyFilters } from '@wordpress/hooks';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import '../anchor';
9
+ import anchor from '../anchor';
10
10
 
11
11
  const noop = () => {};
12
12
 
@@ -62,14 +62,9 @@ describe( 'anchor', () => {
62
62
  } );
63
63
 
64
64
  describe( 'addSaveProps', () => {
65
- const getSaveContentExtraProps = applyFilters.bind(
66
- null,
67
- 'blocks.getSaveContent.extraProps'
68
- );
69
-
70
65
  it( 'should do nothing if the block settings do not define anchor support', () => {
71
66
  const attributes = { anchor: 'foo' };
72
- const extraProps = getSaveContentExtraProps(
67
+ const extraProps = anchor.addSaveProps(
73
68
  {},
74
69
  blockSettings,
75
70
  attributes
@@ -80,7 +75,7 @@ describe( 'anchor', () => {
80
75
 
81
76
  it( 'should inject anchor attribute ID', () => {
82
77
  const attributes = { anchor: 'foo' };
83
- const extraProps = getSaveContentExtraProps(
78
+ const extraProps = anchor.addSaveProps(
84
79
  {},
85
80
  {
86
81
  ...blockSettings,
@@ -96,7 +91,7 @@ describe( 'anchor', () => {
96
91
 
97
92
  it( 'should remove an anchor attribute ID when field is cleared', () => {
98
93
  const attributes = { anchor: '' };
99
- const extraProps = getSaveContentExtraProps(
94
+ const extraProps = anchor.addSaveProps(
100
95
  {},
101
96
  {
102
97
  ...blockSettings,
@@ -6,7 +6,7 @@ import { applyFilters } from '@wordpress/hooks';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import '../custom-class-name';
9
+ import customClassName from '../custom-class-name';
10
10
 
11
11
  describe( 'custom className', () => {
12
12
  const blockSettings = {
@@ -40,14 +40,9 @@ describe( 'custom className', () => {
40
40
  } );
41
41
 
42
42
  describe( 'addSaveProps', () => {
43
- const addSaveProps = applyFilters.bind(
44
- null,
45
- 'blocks.getSaveContent.extraProps'
46
- );
47
-
48
43
  it( 'should do nothing if the block settings do not define custom className support', () => {
49
44
  const attributes = { className: 'foo' };
50
- const extraProps = addSaveProps(
45
+ const extraProps = customClassName.addSaveProps(
51
46
  {},
52
47
  {
53
48
  ...blockSettings,
@@ -63,7 +58,7 @@ describe( 'custom className', () => {
63
58
 
64
59
  it( 'should inject the custom className', () => {
65
60
  const attributes = { className: 'bar' };
66
- const extraProps = addSaveProps(
61
+ const extraProps = customClassName.addSaveProps(
67
62
  { className: 'foo' },
68
63
  blockSettings,
69
64
  attributes
@@ -1,12 +1,7 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { applyFilters } from '@wordpress/hooks';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
9
- import { getInlineStyles, omitStyle } from '../style';
4
+ import _style, { getInlineStyles, omitStyle } from '../style';
10
5
 
11
6
  describe( 'getInlineStyles', () => {
12
7
  it( 'should return an empty object when called with undefined', () => {
@@ -120,11 +115,6 @@ describe( 'getInlineStyles', () => {
120
115
  } );
121
116
 
122
117
  describe( 'addSaveProps', () => {
123
- const addSaveProps = applyFilters.bind(
124
- null,
125
- 'blocks.getSaveContent.extraProps'
126
- );
127
-
128
118
  const blockSettings = {
129
119
  save: () => <div className="default" />,
130
120
  category: 'text',
@@ -166,7 +156,7 @@ describe( 'addSaveProps', () => {
166
156
  };
167
157
 
168
158
  it( 'should serialize all styles by default', () => {
169
- const extraProps = addSaveProps( {}, blockSettings, attributes );
159
+ const extraProps = _style.addSaveProps( {}, blockSettings, attributes );
170
160
 
171
161
  expect( extraProps.style ).toEqual( {
172
162
  background:
@@ -183,7 +173,7 @@ describe( 'addSaveProps', () => {
183
173
  const settings = applySkipSerialization( {
184
174
  typography: true,
185
175
  } );
186
- const extraProps = addSaveProps( {}, settings, attributes );
176
+ const extraProps = _style.addSaveProps( {}, settings, attributes );
187
177
 
188
178
  expect( extraProps.style ).toEqual( {
189
179
  background:
@@ -198,7 +188,7 @@ describe( 'addSaveProps', () => {
198
188
  color: [ 'gradient' ],
199
189
  typography: [ 'textDecoration', 'textTransform' ],
200
190
  } );
201
- const extraProps = addSaveProps( {}, settings, attributes );
191
+ const extraProps = _style.addSaveProps( {}, settings, attributes );
202
192
 
203
193
  expect( extraProps.style ).toEqual( {
204
194
  color: '#d92828',
@@ -4,7 +4,6 @@
4
4
  import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
5
5
  import { useMemo, useCallback } from '@wordpress/element';
6
6
  import { useSelect } from '@wordpress/data';
7
- import { pure } from '@wordpress/compose';
8
7
 
9
8
  /**
10
9
  * Internal dependencies
@@ -109,7 +108,7 @@ function TypographyInspectorControl( { children, resetAllFilter } ) {
109
108
  );
110
109
  }
111
110
 
112
- function TypographyPanelPure( { clientId, name, setAttributes, settings } ) {
111
+ export function TypographyPanel( { clientId, name, setAttributes, settings } ) {
113
112
  function selector( select ) {
114
113
  const { style, fontFamily, fontSize } =
115
114
  select( blockEditorStore ).getBlockAttributes( clientId ) || {};
@@ -147,11 +146,6 @@ function TypographyPanelPure( { clientId, name, setAttributes, settings } ) {
147
146
  );
148
147
  }
149
148
 
150
- // We don't want block controls to re-render when typing inside a block. `pure`
151
- // will prevent re-renders unless props change, so only pass the needed props
152
- // and not the whole attributes object.
153
- export const TypographyPanel = pure( TypographyPanelPure );
154
-
155
149
  export const hasTypographySupport = ( blockName ) => {
156
150
  return TYPOGRAPHY_SUPPORT_KEYS.some( ( key ) =>
157
151
  hasBlockSupport( blockName, key )
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { hasBlockSupport } from '@wordpress/blocks';
5
- /**
6
- * External dependencies
7
- */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { pure } from '@wordpress/compose';
8
6
  import { PanelBody } from '@wordpress/components';
9
7
  import { __ } from '@wordpress/i18n';
10
8
 
@@ -12,17 +10,12 @@ import { __ } from '@wordpress/i18n';
12
10
  * Internal dependencies
13
11
  */
14
12
  import InspectorControls from '../components/inspector-controls';
13
+ import { useHasTypographyPanel } from '../components/global-styles/typography-panel';
15
14
 
16
- import {
17
- LINE_HEIGHT_SUPPORT_KEY,
18
- LineHeightEdit,
19
- useIsLineHeightDisabled,
20
- } from './line-height';
21
- import {
22
- FONT_SIZE_SUPPORT_KEY,
23
- FontSizeEdit,
24
- useIsFontSizeDisabled,
25
- } from './font-size';
15
+ import { store as blockEditorStore } from '../store';
16
+
17
+ import { LINE_HEIGHT_SUPPORT_KEY, LineHeightEdit } from './line-height';
18
+ import { FONT_SIZE_SUPPORT_KEY, FontSizeEdit } from './font-size';
26
19
 
27
20
  export const TYPOGRAPHY_SUPPORT_KEY = 'typography';
28
21
  export const TYPOGRAPHY_SUPPORT_KEYS = [
@@ -30,11 +23,26 @@ export const TYPOGRAPHY_SUPPORT_KEYS = [
30
23
  FONT_SIZE_SUPPORT_KEY,
31
24
  ];
32
25
 
33
- export function TypographyPanel( props ) {
34
- const isDisabled = useIsTypographyDisabled( props );
35
- const isSupported = hasTypographySupport( props.name );
36
-
37
- if ( isDisabled || ! isSupported ) return null;
26
+ function TypographyPanelPure( { clientId, setAttributes, settings } ) {
27
+ function selector( select ) {
28
+ const { style, fontFamily, fontSize } =
29
+ select( blockEditorStore ).getBlockAttributes( clientId ) || {};
30
+ return { style, fontFamily, fontSize };
31
+ }
32
+ const { style, fontSize } = useSelect( selector, [ clientId ] );
33
+ const isEnabled = useHasTypographyPanel( settings );
34
+
35
+ if ( ! isEnabled ) {
36
+ return null;
37
+ }
38
+
39
+ const props = {
40
+ attributes: {
41
+ fontSize,
42
+ style,
43
+ },
44
+ setAttributes,
45
+ };
38
46
 
39
47
  return (
40
48
  <InspectorControls>
@@ -46,17 +54,7 @@ export function TypographyPanel( props ) {
46
54
  );
47
55
  }
48
56
 
49
- const hasTypographySupport = ( blockName ) => {
50
- return TYPOGRAPHY_SUPPORT_KEYS.some( ( key ) =>
51
- hasBlockSupport( blockName, key )
52
- );
53
- };
54
-
55
- function useIsTypographyDisabled( props = {} ) {
56
- const configs = [
57
- useIsFontSizeDisabled( props ),
58
- useIsLineHeightDisabled( props ),
59
- ];
60
-
61
- return configs.filter( Boolean ).length === configs.length;
62
- }
57
+ // We don't want block controls to re-render when typing inside a block. `pure`
58
+ // will prevent re-renders unless props change, so only pass the needed props
59
+ // and not the whole attributes object.
60
+ export const TypographyPanel = pure( TypographyPanelPure );
@@ -3,6 +3,11 @@
3
3
  */
4
4
  import classnames from 'classnames';
5
5
 
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
10
+
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
@@ -12,7 +17,7 @@ import {
12
17
  getTypographyFontSizeValue,
13
18
  getFluidTypographyOptionsFromSettings,
14
19
  } from '../components/global-styles/typography-utils';
15
- import { kebabCase } from '../utils/object';
20
+ import { unlock } from '../lock-unlock';
16
21
 
17
22
  /*
18
23
  * This utility is intended to assist where the serialization of the typography
@@ -29,6 +34,7 @@ import { kebabCase } from '../utils/object';
29
34
  * @return {Object} Typography block support derived CSS classes & styles.
30
35
  */
31
36
  export function getTypographyClassesAndStyles( attributes, settings ) {
37
+ const { kebabCase } = unlock( componentsPrivateApis );
32
38
  let typographyStyles = attributes?.style?.typography || {};
33
39
  const fluidTypographySettings =
34
40
  getFluidTypographyOptionsFromSettings( settings );