@wordpress/block-editor 12.13.0 → 12.15.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 (528) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/build/components/block-heading-level-dropdown/index.js +1 -1
  4. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  5. package/build/components/block-list/block.native.js +2 -0
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/index.js +2 -9
  8. package/build/components/block-list/index.js.map +1 -1
  9. package/build/components/block-list-appender/index.js +16 -3
  10. package/build/components/block-list-appender/index.js.map +1 -1
  11. package/build/components/block-parent-selector/index.js +1 -1
  12. package/build/components/block-parent-selector/index.js.map +1 -1
  13. package/build/components/block-pattern-setup/index.js +25 -16
  14. package/build/components/block-pattern-setup/index.js.map +1 -1
  15. package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
  16. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  17. package/build/components/block-patterns-list/index.js +36 -19
  18. package/build/components/block-patterns-list/index.js.map +1 -1
  19. package/build/components/block-quick-navigation/index.js +6 -4
  20. package/build/components/block-quick-navigation/index.js.map +1 -1
  21. package/build/components/block-rename/index.js +28 -0
  22. package/build/components/block-rename/index.js.map +1 -0
  23. package/build/components/block-rename/is-empty-string.js +10 -0
  24. package/build/components/block-rename/is-empty-string.js.map +1 -0
  25. package/build/components/block-rename/modal.js +87 -0
  26. package/build/components/block-rename/modal.js.map +1 -0
  27. package/build/components/block-rename/rename-control.js +74 -0
  28. package/build/components/block-rename/rename-control.js.map +1 -0
  29. package/build/components/block-rename/use-block-rename.js +17 -0
  30. package/build/components/block-rename/use-block-rename.js.map +1 -0
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu-controls/index.js +7 -0
  34. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  35. package/build/components/block-styles/index.js +0 -8
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
  38. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  39. package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  40. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  41. package/build/components/block-tools/back-compat.js +2 -2
  42. package/build/components/block-tools/back-compat.js.map +1 -1
  43. package/build/components/block-tools/block-contextual-toolbar.js +11 -81
  44. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  45. package/build/components/block-tools/empty-block-inserter.js +56 -0
  46. package/build/components/block-tools/empty-block-inserter.js.map +1 -0
  47. package/build/components/block-tools/index.js +48 -9
  48. package/build/components/block-tools/index.js.map +1 -1
  49. package/build/components/block-tools/selected-block-tools.js +113 -0
  50. package/build/components/block-tools/selected-block-tools.js.map +1 -0
  51. package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
  52. package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  53. package/build/components/block-types-list/index.js +6 -2
  54. package/build/components/block-types-list/index.js.map +1 -1
  55. package/build/components/date-format-picker/index.js +8 -1
  56. package/build/components/date-format-picker/index.js.map +1 -1
  57. package/build/components/editable-text/index.js +1 -2
  58. package/build/components/editable-text/index.js.map +1 -1
  59. package/build/components/global-styles/advanced-panel.js +1 -1
  60. package/build/components/global-styles/advanced-panel.js.map +1 -1
  61. package/build/components/iframe/index.js +4 -3
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/image-size-control/index.js +0 -5
  64. package/build/components/image-size-control/index.js.map +1 -1
  65. package/build/components/inner-blocks/index.js +3 -1
  66. package/build/components/inner-blocks/index.js.map +1 -1
  67. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
  68. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  69. package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
  70. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
  71. package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  72. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  73. package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
  74. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  75. package/build/components/inserter/block-patterns-tab/index.js +75 -0
  76. package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
  77. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  78. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  79. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
  80. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  81. package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
  82. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  83. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
  84. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  85. package/build/components/inserter/block-patterns-tab/utils.js +69 -0
  86. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
  87. package/build/components/inserter/hooks/use-patterns-state.js +2 -1
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/media-tab/media-list.js +9 -5
  90. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  91. package/build/components/inserter/media-tab/media-preview.js +15 -12
  92. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  93. package/build/components/inserter/menu.js +3 -4
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter-listbox/index.js +11 -6
  96. package/build/components/inserter-listbox/index.js.map +1 -1
  97. package/build/components/inserter-listbox/item.js +24 -23
  98. package/build/components/inserter-listbox/item.js.map +1 -1
  99. package/build/components/inserter-listbox/row.js +5 -5
  100. package/build/components/inserter-listbox/row.js.map +1 -1
  101. package/build/components/link-control/index.js +6 -5
  102. package/build/components/link-control/index.js.map +1 -1
  103. package/build/components/list-view/block-select-button.js +39 -0
  104. package/build/components/list-view/block-select-button.js.map +1 -1
  105. package/build/components/list-view/block.js +16 -3
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/index.js +3 -2
  108. package/build/components/list-view/index.js.map +1 -1
  109. package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
  110. package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  111. package/build/components/navigable-toolbar/index.js +69 -18
  112. package/build/components/navigable-toolbar/index.js.map +1 -1
  113. package/build/components/preview-options/index.js +4 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/provider/use-block-sync.js +1 -14
  116. package/build/components/provider/use-block-sync.js.map +1 -1
  117. package/build/components/rich-text/index.js +0 -1
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +4 -2
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/rich-text/native/format-edit.js +45 -0
  122. package/build/components/rich-text/native/format-edit.js.map +1 -0
  123. package/build/components/rich-text/native/get-format-colors.native.js +41 -0
  124. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
  125. package/build/components/rich-text/native/index.js +9 -0
  126. package/build/components/rich-text/native/index.js.map +1 -0
  127. package/build/components/rich-text/native/index.native.js +1189 -0
  128. package/build/components/rich-text/native/index.native.js.map +1 -0
  129. package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
  130. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  131. package/build/components/rich-text/native/use-format-types.js +111 -0
  132. package/build/components/rich-text/native/use-format-types.js.map +1 -0
  133. package/build/components/rich-text/use-input-rules.js +30 -1
  134. package/build/components/rich-text/use-input-rules.js.map +1 -1
  135. package/build/components/rich-text/use-paste-handler.js +2 -5
  136. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  137. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  138. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  139. package/build/components/url-popover/image-url-input-ui.js +2 -1
  140. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  141. package/build/components/use-block-drop-zone/index.js +4 -1
  142. package/build/components/use-block-drop-zone/index.js.map +1 -1
  143. package/build/components/use-moving-animation/index.js +2 -1
  144. package/build/components/use-moving-animation/index.js.map +1 -1
  145. package/build/components/use-settings/index.js +2 -2
  146. package/build/components/use-settings/index.js.map +1 -1
  147. package/build/components/writing-flow/use-tab-nav.js +7 -3
  148. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  149. package/build/hooks/align.js +10 -10
  150. package/build/hooks/align.js.map +1 -1
  151. package/build/hooks/align.native.js +2 -2
  152. package/build/hooks/align.native.js.map +1 -1
  153. package/build/hooks/anchor.js +7 -6
  154. package/build/hooks/anchor.js.map +1 -1
  155. package/build/hooks/background.js +16 -4
  156. package/build/hooks/background.js.map +1 -1
  157. package/build/hooks/block-hooks.js +7 -8
  158. package/build/hooks/block-hooks.js.map +1 -1
  159. package/build/hooks/block-renaming.js +42 -0
  160. package/build/hooks/block-renaming.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +5 -5
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/custom-class-name.js +8 -7
  164. package/build/hooks/custom-class-name.js.map +1 -1
  165. package/build/hooks/custom-fields.js +57 -52
  166. package/build/hooks/custom-fields.js.map +1 -1
  167. package/build/hooks/duotone.js +9 -20
  168. package/build/hooks/duotone.js.map +1 -1
  169. package/build/hooks/index.js +0 -1
  170. package/build/hooks/index.js.map +1 -1
  171. package/build/hooks/layout.js +103 -93
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +10 -9
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +10 -13
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/utils.js +30 -0
  178. package/build/hooks/utils.js.map +1 -1
  179. package/build/layouts/constrained.js +4 -3
  180. package/build/layouts/constrained.js.map +1 -1
  181. package/build/private-apis.js +3 -0
  182. package/build/private-apis.js.map +1 -1
  183. package/build/store/actions.js +30 -37
  184. package/build/store/actions.js.map +1 -1
  185. package/build/store/reducer.js +18 -0
  186. package/build/store/reducer.js.map +1 -1
  187. package/build/store/selectors.js +18 -13
  188. package/build/store/selectors.js.map +1 -1
  189. package/build/utils/transform-styles/index.js +26 -6
  190. package/build/utils/transform-styles/index.js.map +1 -1
  191. package/build-module/components/block-heading-level-dropdown/index.js +1 -1
  192. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  193. package/build-module/components/block-list/block.native.js +2 -0
  194. package/build-module/components/block-list/block.native.js.map +1 -1
  195. package/build-module/components/block-list/index.js +3 -10
  196. package/build-module/components/block-list/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.js +16 -3
  198. package/build-module/components/block-list-appender/index.js.map +1 -1
  199. package/build-module/components/block-parent-selector/index.js +1 -1
  200. package/build-module/components/block-parent-selector/index.js.map +1 -1
  201. package/build-module/components/block-pattern-setup/index.js +24 -15
  202. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  203. package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
  204. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  205. package/build-module/components/block-patterns-list/index.js +36 -19
  206. package/build-module/components/block-patterns-list/index.js.map +1 -1
  207. package/build-module/components/block-quick-navigation/index.js +7 -5
  208. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  209. package/build-module/components/block-rename/index.js +4 -0
  210. package/build-module/components/block-rename/index.js.map +1 -0
  211. package/build-module/components/block-rename/is-empty-string.js +4 -0
  212. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  213. package/build-module/components/block-rename/modal.js +79 -0
  214. package/build-module/components/block-rename/modal.js.map +1 -0
  215. package/build-module/components/block-rename/rename-control.js +66 -0
  216. package/build-module/components/block-rename/rename-control.js.map +1 -0
  217. package/build-module/components/block-rename/use-block-rename.js +10 -0
  218. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  219. package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
  220. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  221. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  222. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  223. package/build-module/components/block-styles/index.js +0 -8
  224. package/build-module/components/block-styles/index.js.map +1 -1
  225. package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
  226. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  227. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  228. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  229. package/build-module/components/block-tools/back-compat.js +1 -1
  230. package/build-module/components/block-tools/back-compat.js.map +1 -1
  231. package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
  232. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  233. package/build-module/components/block-tools/empty-block-inserter.js +48 -0
  234. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
  235. package/build-module/components/block-tools/index.js +48 -9
  236. package/build-module/components/block-tools/index.js.map +1 -1
  237. package/build-module/components/block-tools/selected-block-tools.js +105 -0
  238. package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
  239. package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
  240. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  241. package/build-module/components/block-types-list/index.js +6 -2
  242. package/build-module/components/block-types-list/index.js.map +1 -1
  243. package/build-module/components/date-format-picker/index.js +8 -1
  244. package/build-module/components/date-format-picker/index.js.map +1 -1
  245. package/build-module/components/editable-text/index.js +1 -2
  246. package/build-module/components/editable-text/index.js.map +1 -1
  247. package/build-module/components/global-styles/advanced-panel.js +1 -1
  248. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  249. package/build-module/components/iframe/index.js +4 -3
  250. package/build-module/components/iframe/index.js.map +1 -1
  251. package/build-module/components/image-size-control/index.js +0 -5
  252. package/build-module/components/image-size-control/index.js.map +1 -1
  253. package/build-module/components/inner-blocks/index.js +3 -1
  254. package/build-module/components/inner-blocks/index.js.map +1 -1
  255. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
  256. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  257. package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
  258. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
  259. package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  260. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  261. package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +3 -3
  262. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  263. package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
  264. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
  265. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
  266. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  267. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
  268. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  269. package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
  270. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  271. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
  272. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  273. package/build-module/components/inserter/block-patterns-tab/utils.js +57 -0
  274. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
  275. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
  276. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  277. package/build-module/components/inserter/media-tab/media-list.js +9 -5
  278. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  279. package/build-module/components/inserter/media-tab/media-preview.js +15 -12
  280. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  281. package/build-module/components/inserter/menu.js +4 -3
  282. package/build-module/components/inserter/menu.js.map +1 -1
  283. package/build-module/components/inserter-listbox/index.js +13 -8
  284. package/build-module/components/inserter-listbox/index.js.map +1 -1
  285. package/build-module/components/inserter-listbox/item.js +25 -23
  286. package/build-module/components/inserter-listbox/item.js.map +1 -1
  287. package/build-module/components/inserter-listbox/row.js +6 -5
  288. package/build-module/components/inserter-listbox/row.js.map +1 -1
  289. package/build-module/components/link-control/index.js +7 -6
  290. package/build-module/components/link-control/index.js.map +1 -1
  291. package/build-module/components/list-view/block-select-button.js +39 -0
  292. package/build-module/components/list-view/block-select-button.js.map +1 -1
  293. package/build-module/components/list-view/block.js +16 -3
  294. package/build-module/components/list-view/block.js.map +1 -1
  295. package/build-module/components/list-view/index.js +3 -2
  296. package/build-module/components/list-view/index.js.map +1 -1
  297. package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
  298. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  299. package/build-module/components/navigable-toolbar/index.js +69 -17
  300. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  301. package/build-module/components/preview-options/index.js +4 -2
  302. package/build-module/components/preview-options/index.js.map +1 -1
  303. package/build-module/components/provider/use-block-sync.js +1 -14
  304. package/build-module/components/provider/use-block-sync.js.map +1 -1
  305. package/build-module/components/rich-text/index.js +0 -1
  306. package/build-module/components/rich-text/index.js.map +1 -1
  307. package/build-module/components/rich-text/index.native.js +4 -2
  308. package/build-module/components/rich-text/index.native.js.map +1 -1
  309. package/build-module/components/rich-text/native/format-edit.js +38 -0
  310. package/build-module/components/rich-text/native/format-edit.js.map +1 -0
  311. package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
  312. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
  313. package/build-module/components/rich-text/native/index.js +2 -0
  314. package/build-module/components/rich-text/native/index.js.map +1 -0
  315. package/build-module/components/rich-text/native/index.native.js +1179 -0
  316. package/build-module/components/rich-text/native/index.native.js.map +1 -0
  317. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
  318. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  319. package/build-module/components/rich-text/native/use-format-types.js +104 -0
  320. package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
  321. package/build-module/components/rich-text/use-input-rules.js +31 -2
  322. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  323. package/build-module/components/rich-text/use-paste-handler.js +2 -5
  324. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  325. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  326. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  327. package/build-module/components/url-popover/image-url-input-ui.js +2 -1
  328. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  329. package/build-module/components/use-block-drop-zone/index.js +4 -1
  330. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  331. package/build-module/components/use-moving-animation/index.js +2 -1
  332. package/build-module/components/use-moving-animation/index.js.map +1 -1
  333. package/build-module/components/use-settings/index.js +2 -2
  334. package/build-module/components/use-settings/index.js.map +1 -1
  335. package/build-module/components/writing-flow/use-tab-nav.js +7 -3
  336. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  337. package/build-module/hooks/align.js +8 -8
  338. package/build-module/hooks/align.js.map +1 -1
  339. package/build-module/hooks/align.native.js +2 -2
  340. package/build-module/hooks/align.native.js.map +1 -1
  341. package/build-module/hooks/anchor.js +5 -4
  342. package/build-module/hooks/anchor.js.map +1 -1
  343. package/build-module/hooks/background.js +17 -5
  344. package/build-module/hooks/background.js.map +1 -1
  345. package/build-module/hooks/block-hooks.js +5 -6
  346. package/build-module/hooks/block-hooks.js.map +1 -1
  347. package/build-module/hooks/block-renaming.js +40 -0
  348. package/build-module/hooks/block-renaming.js.map +1 -1
  349. package/build-module/hooks/content-lock-ui.js +3 -3
  350. package/build-module/hooks/content-lock-ui.js.map +1 -1
  351. package/build-module/hooks/custom-class-name.js +6 -5
  352. package/build-module/hooks/custom-class-name.js.map +1 -1
  353. package/build-module/hooks/custom-fields.js +57 -52
  354. package/build-module/hooks/custom-fields.js.map +1 -1
  355. package/build-module/hooks/duotone.js +10 -21
  356. package/build-module/hooks/duotone.js.map +1 -1
  357. package/build-module/hooks/index.js +0 -1
  358. package/build-module/hooks/index.js.map +1 -1
  359. package/build-module/hooks/layout.js +103 -93
  360. package/build-module/hooks/layout.js.map +1 -1
  361. package/build-module/hooks/position.js +11 -10
  362. package/build-module/hooks/position.js.map +1 -1
  363. package/build-module/hooks/style.js +10 -13
  364. package/build-module/hooks/style.js.map +1 -1
  365. package/build-module/hooks/utils.js +30 -1
  366. package/build-module/hooks/utils.js.map +1 -1
  367. package/build-module/layouts/constrained.js +4 -3
  368. package/build-module/layouts/constrained.js.map +1 -1
  369. package/build-module/private-apis.js +4 -1
  370. package/build-module/private-apis.js.map +1 -1
  371. package/build-module/store/actions.js +29 -37
  372. package/build-module/store/actions.js.map +1 -1
  373. package/build-module/store/reducer.js +17 -0
  374. package/build-module/store/reducer.js.map +1 -1
  375. package/build-module/store/selectors.js +17 -13
  376. package/build-module/store/selectors.js.map +1 -1
  377. package/build-module/utils/transform-styles/index.js +24 -7
  378. package/build-module/utils/transform-styles/index.js.map +1 -1
  379. package/build-style/content-rtl.css +6 -6
  380. package/build-style/content.css +6 -6
  381. package/build-style/style-rtl.css +26 -20
  382. package/build-style/style.css +26 -20
  383. package/package.json +31 -31
  384. package/src/components/block-heading-level-dropdown/index.js +1 -1
  385. package/src/components/block-list/block.native.js +2 -0
  386. package/src/components/block-list/index.js +4 -18
  387. package/src/components/block-list-appender/index.js +20 -4
  388. package/src/components/block-parent-selector/index.js +1 -1
  389. package/src/components/block-pattern-setup/index.js +38 -22
  390. package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
  391. package/src/components/block-pattern-setup/style.scss +4 -1
  392. package/src/components/block-patterns-list/README.md +4 -4
  393. package/src/components/block-patterns-list/index.js +60 -34
  394. package/src/components/block-patterns-list/style.scss +7 -0
  395. package/src/components/block-quick-navigation/index.js +11 -5
  396. package/src/components/block-rename/index.js +3 -0
  397. package/src/components/block-rename/is-empty-string.js +3 -0
  398. package/src/components/block-rename/modal.js +115 -0
  399. package/src/components/block-rename/rename-control.js +80 -0
  400. package/src/components/block-rename/use-block-rename.js +10 -0
  401. package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
  402. package/src/components/block-settings-menu-controls/index.js +9 -0
  403. package/src/components/block-styles/index.js +0 -10
  404. package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
  405. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
  406. package/src/components/block-toolbar/style.scss +8 -0
  407. package/src/components/block-tools/back-compat.js +1 -1
  408. package/src/components/block-tools/block-contextual-toolbar.js +11 -134
  409. package/src/components/block-tools/empty-block-inserter.js +56 -0
  410. package/src/components/block-tools/index.js +72 -16
  411. package/src/components/block-tools/selected-block-tools.js +127 -0
  412. package/src/components/block-tools/style.scss +0 -10
  413. package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
  414. package/src/components/block-types-list/index.js +5 -4
  415. package/src/components/button-block-appender/content.scss +2 -2
  416. package/src/components/date-format-picker/index.js +7 -0
  417. package/src/components/editable-text/README.md +0 -36
  418. package/src/components/editable-text/index.js +1 -8
  419. package/src/components/global-styles/advanced-panel.js +1 -1
  420. package/src/components/iframe/index.js +4 -3
  421. package/src/components/image-size-control/index.js +0 -6
  422. package/src/components/inner-blocks/index.js +6 -2
  423. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
  424. package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
  425. package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +9 -2
  426. package/src/components/inserter/block-patterns-tab/index.js +118 -0
  427. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  428. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +179 -0
  429. package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
  430. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +101 -0
  431. package/src/components/inserter/block-patterns-tab/utils.js +78 -0
  432. package/src/components/inserter/hooks/use-patterns-state.js +3 -1
  433. package/src/components/inserter/media-tab/media-list.js +7 -7
  434. package/src/components/inserter/media-tab/media-preview.js +27 -22
  435. package/src/components/inserter/menu.js +4 -5
  436. package/src/components/inserter-listbox/index.js +11 -7
  437. package/src/components/inserter-listbox/item.js +11 -12
  438. package/src/components/inserter-listbox/row.js +6 -12
  439. package/src/components/link-control/README.md +2 -2
  440. package/src/components/link-control/index.js +15 -6
  441. package/src/components/link-control/style.scss +8 -5
  442. package/src/components/list-view/block-select-button.js +44 -1
  443. package/src/components/list-view/block.js +11 -11
  444. package/src/components/list-view/index.js +2 -0
  445. package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
  446. package/src/components/media-replace-flow/style.scss +2 -2
  447. package/src/components/navigable-toolbar/index.js +71 -25
  448. package/src/components/plain-text/README.md +2 -30
  449. package/src/components/preview-options/index.js +2 -0
  450. package/src/components/provider/use-block-sync.js +2 -21
  451. package/src/components/rich-text/README.md +6 -63
  452. package/src/components/rich-text/index.js +0 -1
  453. package/src/components/rich-text/index.native.js +4 -2
  454. package/src/components/rich-text/native/format-edit.js +44 -0
  455. package/src/components/rich-text/native/get-format-colors.native.js +54 -0
  456. package/src/components/rich-text/native/index.js +1 -0
  457. package/src/components/rich-text/native/index.native.js +1406 -0
  458. package/src/components/rich-text/native/style.native.scss +28 -0
  459. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
  460. package/src/components/rich-text/native/test/index.native.js +278 -0
  461. package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
  462. package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
  463. package/src/components/rich-text/native/use-format-types.js +146 -0
  464. package/src/components/rich-text/use-input-rules.js +30 -2
  465. package/src/components/rich-text/use-paste-handler.js +1 -6
  466. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  467. package/src/components/url-input/README.md +1 -74
  468. package/src/components/url-popover/image-url-input-ui.js +1 -0
  469. package/src/components/use-block-drop-zone/index.js +4 -1
  470. package/src/components/use-moving-animation/index.js +1 -1
  471. package/src/components/use-settings/index.js +2 -2
  472. package/src/components/use-settings/test/index.js +1 -1
  473. package/src/components/writing-flow/use-tab-nav.js +8 -3
  474. package/src/hooks/align.js +8 -8
  475. package/src/hooks/align.native.js +2 -2
  476. package/src/hooks/anchor.js +21 -23
  477. package/src/hooks/background.js +28 -6
  478. package/src/hooks/block-hooks.js +20 -16
  479. package/src/hooks/block-renaming.js +47 -0
  480. package/src/hooks/content-lock-ui.js +3 -3
  481. package/src/hooks/custom-class-name.js +7 -6
  482. package/src/hooks/custom-fields.js +73 -70
  483. package/src/hooks/duotone.js +23 -33
  484. package/src/hooks/index.js +0 -1
  485. package/src/hooks/layout.js +126 -113
  486. package/src/hooks/position.js +8 -21
  487. package/src/hooks/style.js +17 -31
  488. package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
  489. package/src/hooks/test/align.js +4 -4
  490. package/src/hooks/utils.js +33 -1
  491. package/src/layouts/constrained.js +57 -50
  492. package/src/private-apis.js +4 -1
  493. package/src/store/actions.js +26 -72
  494. package/src/store/reducer.js +19 -0
  495. package/src/store/selectors.js +15 -19
  496. package/src/style.scss +1 -1
  497. package/src/utils/test/transform-styles.js +49 -0
  498. package/src/utils/transform-styles/index.js +39 -13
  499. package/build/components/block-tools/selected-block-popover.js +0 -221
  500. package/build/components/block-tools/selected-block-popover.js.map +0 -1
  501. package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  502. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  503. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  504. package/build/components/inserter/block-patterns-filter.js.map +0 -1
  505. package/build/components/inserter/block-patterns-tab.js +0 -270
  506. package/build/components/inserter/block-patterns-tab.js.map +0 -1
  507. package/build/hooks/block-rename-ui.js +0 -165
  508. package/build/hooks/block-rename-ui.js.map +0 -1
  509. package/build/store/utils.js +0 -22
  510. package/build/store/utils.js.map +0 -1
  511. package/build-module/components/block-tools/selected-block-popover.js +0 -213
  512. package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
  513. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  514. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  515. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  516. package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
  517. package/build-module/components/inserter/block-patterns-tab.js +0 -254
  518. package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
  519. package/build-module/hooks/block-rename-ui.js +0 -157
  520. package/build-module/hooks/block-rename-ui.js.map +0 -1
  521. package/build-module/store/utils.js +0 -16
  522. package/build-module/store/utils.js.map +0 -1
  523. package/src/components/block-tools/selected-block-popover.js +0 -265
  524. package/src/components/inserter/block-patterns-tab.js +0 -448
  525. package/src/hooks/block-rename-ui.js +0 -226
  526. package/src/store/utils.js +0 -12
  527. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
  528. /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
@@ -14,22 +14,16 @@ import {
14
14
  } from '@wordpress/components';
15
15
  import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
16
16
  import { useSelect } from '@wordpress/data';
17
- import {
18
- useContext,
19
- useMemo,
20
- createPortal,
21
- Platform,
22
- } from '@wordpress/element';
17
+ import { useMemo, Platform } from '@wordpress/element';
23
18
  import { addFilter } from '@wordpress/hooks';
24
19
 
25
20
  /**
26
21
  * Internal dependencies
27
22
  */
28
- import BlockList from '../components/block-list';
29
23
  import { useSettings } from '../components/use-settings';
30
24
  import InspectorControls from '../components/inspector-controls';
31
25
  import useBlockDisplayInformation from '../components/use-block-display-information';
32
- import { cleanEmptyObject } from './utils';
26
+ import { cleanEmptyObject, useStyleOverride } from './utils';
33
27
  import { unlock } from '../lock-unlock';
34
28
  import { store as blockEditorStore } from '../store';
35
29
 
@@ -329,7 +323,7 @@ export function PositionPanel( props ) {
329
323
  *
330
324
  * @return {Function} Wrapped component.
331
325
  */
332
- export const withInspectorControls = createHigherOrderComponent(
326
+ export const withPositionControls = createHigherOrderComponent(
333
327
  ( BlockEdit ) => ( props ) => {
334
328
  const { name: blockName } = props;
335
329
  const positionSupport = hasBlockSupport(
@@ -346,7 +340,7 @@ export const withInspectorControls = createHigherOrderComponent(
346
340
  <BlockEdit key="edit" { ...props } />,
347
341
  ];
348
342
  },
349
- 'withInspectorControls'
343
+ 'withPositionControls'
350
344
  );
351
345
 
352
346
  /**
@@ -368,7 +362,6 @@ export const withPositionStyles = createHigherOrderComponent(
368
362
  hasPositionBlockSupport && ! isPositionDisabled;
369
363
 
370
364
  const id = useInstanceId( BlockListBlock );
371
- const element = useContext( BlockList.__unstableElementContext );
372
365
 
373
366
  // Higher specificity to override defaults in editor UI.
374
367
  const positionSelector = `.wp-container-${ id }.wp-container-${ id }`;
@@ -392,15 +385,9 @@ export const withPositionStyles = createHigherOrderComponent(
392
385
  !! attributes?.style?.position?.type,
393
386
  } );
394
387
 
395
- return (
396
- <>
397
- { allowPositionStyles &&
398
- element &&
399
- !! css &&
400
- createPortal( <style>{ css }</style>, element ) }
401
- <BlockListBlock { ...props } className={ className } />
402
- </>
403
- );
388
+ useStyleOverride( { css } );
389
+
390
+ return <BlockListBlock { ...props } className={ className } />;
404
391
  },
405
392
  'withPositionStyles'
406
393
  );
@@ -413,5 +400,5 @@ addFilter(
413
400
  addFilter(
414
401
  'editor.BlockEdit',
415
402
  'core/editor/position/with-inspector-controls',
416
- withInspectorControls
403
+ withPositionControls
417
404
  );
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { useContext, useMemo, createPortal } from '@wordpress/element';
9
+ import { useMemo } from '@wordpress/element';
10
10
  import { addFilter } from '@wordpress/hooks';
11
11
  import {
12
12
  getBlockSupport,
@@ -19,7 +19,6 @@ import { getCSSRules, compileCSS } from '@wordpress/style-engine';
19
19
  /**
20
20
  * Internal dependencies
21
21
  */
22
- import BlockList from '../components/block-list';
23
22
  import { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from './background';
24
23
  import { BORDER_SUPPORT_KEY, BorderPanel } from './border';
25
24
  import { COLOR_SUPPORT_KEY, ColorEdit } from './color';
@@ -34,7 +33,7 @@ import {
34
33
  DimensionsPanel,
35
34
  } from './dimensions';
36
35
  import useDisplayBlockControls from '../components/use-display-block-controls';
37
- import { shouldSkipSerialization } from './utils';
36
+ import { shouldSkipSerialization, useStyleOverride } from './utils';
38
37
  import { scopeSelector } from '../components/global-styles/utils';
39
38
  import { useBlockEditingMode } from '../components/block-editing-mode';
40
39
 
@@ -354,7 +353,7 @@ export function addEditProps( settings ) {
354
353
  *
355
354
  * @return {Function} Wrapped component.
356
355
  */
357
- export const withBlockControls = createHigherOrderComponent(
356
+ export const withBlockStyleControls = createHigherOrderComponent(
358
357
  ( BlockEdit ) => ( props ) => {
359
358
  if ( ! hasStyleSupport( props.name ) ) {
360
359
  return <BlockEdit key="edit" { ...props } />;
@@ -378,7 +377,7 @@ export const withBlockControls = createHigherOrderComponent(
378
377
  </>
379
378
  );
380
379
  },
381
- 'withToolbarControls'
380
+ 'withBlockStyleControls'
382
381
  );
383
382
 
384
383
  // Defines which element types are supported, including their hover styles or
@@ -484,33 +483,20 @@ const withElementsStyles = createHigherOrderComponent(
484
483
  : undefined;
485
484
  }, [ baseElementSelector, blockElementStyles, props.name ] );
486
485
 
487
- const element = useContext( BlockList.__unstableElementContext );
486
+ useStyleOverride( { css: styles } );
488
487
 
489
488
  return (
490
- <>
491
- { styles &&
492
- element &&
493
- createPortal(
494
- <style
495
- dangerouslySetInnerHTML={ {
496
- __html: styles,
497
- } }
498
- />,
499
- element
500
- ) }
501
-
502
- <BlockListBlock
503
- { ...props }
504
- className={
505
- props.attributes.style?.elements
506
- ? classnames(
507
- props.className,
508
- blockElementsContainerIdentifier
509
- )
510
- : props.className
511
- }
512
- />
513
- </>
489
+ <BlockListBlock
490
+ { ...props }
491
+ className={
492
+ props.attributes.style?.elements
493
+ ? classnames(
494
+ props.className,
495
+ blockElementsContainerIdentifier
496
+ )
497
+ : props.className
498
+ }
499
+ />
514
500
  );
515
501
  },
516
502
  'withElementsStyles'
@@ -537,7 +523,7 @@ addFilter(
537
523
  addFilter(
538
524
  'editor.BlockEdit',
539
525
  'core/style/with-block-controls',
540
- withBlockControls
526
+ withBlockStyleControls
541
527
  );
542
528
 
543
529
  addFilter(
@@ -19,25 +19,25 @@ exports[`Align options for group block sets Wide width option 1`] = `
19
19
  `;
20
20
 
21
21
  exports[`Align options for media block sets Align center option 1`] = `
22
- "<!-- wp:image {"align":"center","id":1,"sizeSlug":"large","linkDestination":"none"} -->
22
+ "<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","align":"center"} -->
23
23
  <figure class="wp-block-image aligncenter size-large"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-1"/></figure>
24
24
  <!-- /wp:image -->"
25
25
  `;
26
26
 
27
27
  exports[`Align options for media block sets Align left option 1`] = `
28
- "<!-- wp:image {"align":"left","id":1,"sizeSlug":"large","linkDestination":"none"} -->
28
+ "<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","align":"left"} -->
29
29
  <figure class="wp-block-image alignleft size-large"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-1"/></figure>
30
30
  <!-- /wp:image -->"
31
31
  `;
32
32
 
33
33
  exports[`Align options for media block sets Align right option 1`] = `
34
- "<!-- wp:image {"align":"right","id":1,"sizeSlug":"large","linkDestination":"none"} -->
34
+ "<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","align":"right"} -->
35
35
  <figure class="wp-block-image alignright size-large"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-1"/></figure>
36
36
  <!-- /wp:image -->"
37
37
  `;
38
38
 
39
39
  exports[`Align options for media block sets Full width option 1`] = `
40
- "<!-- wp:image {"align":"full","id":1,"sizeSlug":"large","linkDestination":"none"} -->
40
+ "<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","align":"full"} -->
41
41
  <figure class="wp-block-image alignfull size-large"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-1"/></figure>
42
42
  <!-- /wp:image -->"
43
43
  `;
@@ -49,7 +49,7 @@ exports[`Align options for media block sets None option 1`] = `
49
49
  `;
50
50
 
51
51
  exports[`Align options for media block sets Wide width option 1`] = `
52
- "<!-- wp:image {"align":"wide","id":1,"sizeSlug":"large","linkDestination":"none"} -->
52
+ "<!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
53
53
  <figure class="wp-block-image alignwide size-large"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-1"/></figure>
54
54
  <!-- /wp:image -->"
55
55
  `;
@@ -22,7 +22,7 @@ import BlockEdit from '../../components/block-edit';
22
22
  import BlockEditorProvider from '../../components/provider';
23
23
  import {
24
24
  getValidAlignments,
25
- withToolbarControls,
25
+ withAlignmentControls,
26
26
  withDataAlign,
27
27
  addAssignedAlign,
28
28
  } from '../align';
@@ -157,7 +157,7 @@ describe( 'align', () => {
157
157
  } );
158
158
  } );
159
159
 
160
- describe( 'withToolbarControls', () => {
160
+ describe( 'withAlignControls', () => {
161
161
  const componentProps = {
162
162
  name: 'core/foo',
163
163
  attributes: {},
@@ -167,7 +167,7 @@ describe( 'align', () => {
167
167
  it( 'should do nothing if no valid alignments', () => {
168
168
  registerBlockType( 'core/foo', blockSettings );
169
169
 
170
- const EnhancedComponent = withToolbarControls(
170
+ const EnhancedComponent = withAlignmentControls(
171
171
  ( { wrapperProps } ) => <div { ...wrapperProps } />
172
172
  );
173
173
 
@@ -197,7 +197,7 @@ describe( 'align', () => {
197
197
  },
198
198
  } );
199
199
 
200
- const EnhancedComponent = withToolbarControls(
200
+ const EnhancedComponent = withAlignmentControls(
201
201
  ( { wrapperProps } ) => <div { ...wrapperProps } />
202
202
  );
203
203
 
@@ -2,7 +2,8 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { getBlockSupport } from '@wordpress/blocks';
5
- import { useMemo } from '@wordpress/element';
5
+ import { useMemo, useEffect, useId } from '@wordpress/element';
6
+ import { useDispatch } from '@wordpress/data';
6
7
 
7
8
  /**
8
9
  * Internal dependencies
@@ -10,6 +11,8 @@ import { useMemo } from '@wordpress/element';
10
11
  import { useSettings } from '../components';
11
12
  import { useSettingsForBlockElement } from '../components/global-styles/hooks';
12
13
  import { getValueFromObjectPath, setImmutably } from '../utils/object';
14
+ import { store as blockEditorStore } from '../store';
15
+ import { unlock } from '../lock-unlock';
13
16
 
14
17
  /**
15
18
  * Removed falsy values from nested object.
@@ -115,6 +118,35 @@ export function shouldSkipSerialization( blockType, featureSet, feature ) {
115
118
  return skipSerialization;
116
119
  }
117
120
 
121
+ export function useStyleOverride( { id, css, assets, __unstableType } = {} ) {
122
+ const { setStyleOverride, deleteStyleOverride } = unlock(
123
+ useDispatch( blockEditorStore )
124
+ );
125
+ const fallbackId = useId();
126
+ useEffect( () => {
127
+ // Unmount if there is CSS and assets are empty.
128
+ if ( ! css && ! assets ) return;
129
+ const _id = id || fallbackId;
130
+ setStyleOverride( _id, {
131
+ id,
132
+ css,
133
+ assets,
134
+ __unstableType,
135
+ } );
136
+ return () => {
137
+ deleteStyleOverride( _id );
138
+ };
139
+ }, [
140
+ id,
141
+ css,
142
+ assets,
143
+ __unstableType,
144
+ fallbackId,
145
+ setStyleOverride,
146
+ deleteStyleOverride,
147
+ ] );
148
+ }
149
+
118
150
  /**
119
151
  * Based on the block and its context, returns an object of all the block settings.
120
152
  * This object can be passed as a prop to all the Styles UI components
@@ -36,7 +36,10 @@ export default {
36
36
  layoutBlockSupport = {},
37
37
  } ) {
38
38
  const { wideSize, contentSize, justifyContent = 'center' } = layout;
39
- const { allowJustification = true } = layoutBlockSupport;
39
+ const {
40
+ allowJustification = true,
41
+ allowCustomContentAndWideSize = true,
42
+ } = layoutBlockSupport;
40
43
  const onJustificationChange = ( value ) => {
41
44
  onChange( {
42
45
  ...layout,
@@ -66,55 +69,59 @@ export default {
66
69
  } );
67
70
  return (
68
71
  <>
69
- <div className="block-editor-hooks__layout-controls">
70
- <div className="block-editor-hooks__layout-controls-unit">
71
- <UnitControl
72
- className="block-editor-hooks__layout-controls-unit-input"
73
- label={ __( 'Content' ) }
74
- labelPosition="top"
75
- __unstableInputWidth="80px"
76
- value={ contentSize || wideSize || '' }
77
- onChange={ ( nextWidth ) => {
78
- nextWidth =
79
- 0 > parseFloat( nextWidth )
80
- ? '0'
81
- : nextWidth;
82
- onChange( {
83
- ...layout,
84
- contentSize: nextWidth,
85
- } );
86
- } }
87
- units={ units }
88
- />
89
- <Icon icon={ positionCenter } />
90
- </div>
91
- <div className="block-editor-hooks__layout-controls-unit">
92
- <UnitControl
93
- className="block-editor-hooks__layout-controls-unit-input"
94
- label={ __( 'Wide' ) }
95
- labelPosition="top"
96
- __unstableInputWidth="80px"
97
- value={ wideSize || contentSize || '' }
98
- onChange={ ( nextWidth ) => {
99
- nextWidth =
100
- 0 > parseFloat( nextWidth )
101
- ? '0'
102
- : nextWidth;
103
- onChange( {
104
- ...layout,
105
- wideSize: nextWidth,
106
- } );
107
- } }
108
- units={ units }
109
- />
110
- <Icon icon={ stretchWide } />
111
- </div>
112
- </div>
113
- <p className="block-editor-hooks__layout-controls-helptext">
114
- { __(
115
- 'Customize the width for all elements that are assigned to the center or wide columns.'
116
- ) }
117
- </p>
72
+ { allowCustomContentAndWideSize && (
73
+ <>
74
+ <div className="block-editor-hooks__layout-controls">
75
+ <div className="block-editor-hooks__layout-controls-unit">
76
+ <UnitControl
77
+ className="block-editor-hooks__layout-controls-unit-input"
78
+ label={ __( 'Content' ) }
79
+ labelPosition="top"
80
+ __unstableInputWidth="80px"
81
+ value={ contentSize || wideSize || '' }
82
+ onChange={ ( nextWidth ) => {
83
+ nextWidth =
84
+ 0 > parseFloat( nextWidth )
85
+ ? '0'
86
+ : nextWidth;
87
+ onChange( {
88
+ ...layout,
89
+ contentSize: nextWidth,
90
+ } );
91
+ } }
92
+ units={ units }
93
+ />
94
+ <Icon icon={ positionCenter } />
95
+ </div>
96
+ <div className="block-editor-hooks__layout-controls-unit">
97
+ <UnitControl
98
+ className="block-editor-hooks__layout-controls-unit-input"
99
+ label={ __( 'Wide' ) }
100
+ labelPosition="top"
101
+ __unstableInputWidth="80px"
102
+ value={ wideSize || contentSize || '' }
103
+ onChange={ ( nextWidth ) => {
104
+ nextWidth =
105
+ 0 > parseFloat( nextWidth )
106
+ ? '0'
107
+ : nextWidth;
108
+ onChange( {
109
+ ...layout,
110
+ wideSize: nextWidth,
111
+ } );
112
+ } }
113
+ units={ units }
114
+ />
115
+ <Icon icon={ stretchWide } />
116
+ </div>
117
+ </div>
118
+ <p className="block-editor-hooks__layout-controls-helptext">
119
+ { __(
120
+ 'Customize the width for all elements that are assigned to the center or wide columns.'
121
+ ) }
122
+ </p>
123
+ </>
124
+ ) }
118
125
  { allowJustification && (
119
126
  <ToggleGroupControl
120
127
  __nextHasNoMarginBottom
@@ -10,8 +10,9 @@ import ResizableBoxPopover from './components/resizable-box-popover';
10
10
  import { ComposedPrivateInserter as PrivateInserter } from './components/inserter';
11
11
  import { PrivateListView } from './components/list-view';
12
12
  import BlockInfo from './components/block-info-slot-fill';
13
+ import BlockContextualToolbar from './components/block-tools/block-contextual-toolbar';
13
14
  import { useShouldContextualToolbarShow } from './utils/use-should-contextual-toolbar-show';
14
- import { cleanEmptyObject } from './hooks/utils';
15
+ import { cleanEmptyObject, useStyleOverride } from './hooks/utils';
15
16
  import BlockQuickNavigation from './components/block-quick-navigation';
16
17
  import { LayoutStyle } from './components/block-list/layout';
17
18
  import { BlockRemovalWarningModal } from './components/block-removal-warning-modal';
@@ -41,8 +42,10 @@ lock( privateApis, {
41
42
  PrivateListView,
42
43
  ResizableBoxPopover,
43
44
  BlockInfo,
45
+ BlockContextualToolbar,
44
46
  useShouldContextualToolbarShow,
45
47
  cleanEmptyObject,
48
+ useStyleOverride,
46
49
  BlockQuickNavigation,
47
50
  LayoutStyle,
48
51
  BlockRemovalWarningModal,
@@ -23,7 +23,6 @@ import deprecated from '@wordpress/deprecated';
23
23
  /**
24
24
  * Internal dependencies
25
25
  */
26
- import { mapRichTextSettings } from './utils';
27
26
  import {
28
27
  retrieveSelectedAttribute,
29
28
  START_OF_SELECTED_AREA,
@@ -759,43 +758,23 @@ export const __unstableDeleteSelection =
759
758
  const selectionB = selectionEnd;
760
759
 
761
760
  const blockA = select.getBlock( selectionA.clientId );
762
- const blockAType = getBlockType( blockA.name );
763
-
764
761
  const blockB = select.getBlock( selectionB.clientId );
765
- const blockBType = getBlockType( blockB.name );
766
762
 
767
763
  const htmlA = blockA.attributes[ selectionA.attributeKey ];
768
764
  const htmlB = blockB.attributes[ selectionB.attributeKey ];
769
765
 
770
- const attributeDefinitionA =
771
- blockAType.attributes[ selectionA.attributeKey ];
772
- const attributeDefinitionB =
773
- blockBType.attributes[ selectionB.attributeKey ];
774
-
775
- let valueA = create( {
776
- html: htmlA,
777
- ...mapRichTextSettings( attributeDefinitionA ),
778
- } );
779
- let valueB = create( {
780
- html: htmlB,
781
- ...mapRichTextSettings( attributeDefinitionB ),
782
- } );
766
+ let valueA = create( { html: htmlA } );
767
+ let valueB = create( { html: htmlB } );
783
768
 
784
769
  valueA = remove( valueA, selectionA.offset, valueA.text.length );
785
770
  valueB = insert( valueB, START_OF_SELECTED_AREA, 0, selectionB.offset );
786
771
 
787
772
  // Clone the blocks so we don't manipulate the original.
788
773
  const cloneA = cloneBlock( blockA, {
789
- [ selectionA.attributeKey ]: toHTMLString( {
790
- value: valueA,
791
- ...mapRichTextSettings( attributeDefinitionA ),
792
- } ),
774
+ [ selectionA.attributeKey ]: toHTMLString( { value: valueA } ),
793
775
  } );
794
776
  const cloneB = cloneBlock( blockB, {
795
- [ selectionB.attributeKey ]: toHTMLString( {
796
- value: valueB,
797
- ...mapRichTextSettings( attributeDefinitionB ),
798
- } ),
777
+ [ selectionB.attributeKey ]: toHTMLString( { value: valueB } ),
799
778
  } );
800
779
 
801
780
  const followingBlock = isForward ? cloneA : cloneB;
@@ -831,20 +810,10 @@ export const __unstableDeleteSelection =
831
810
  const newAttributeKey = retrieveSelectedAttribute( updatedAttributes );
832
811
 
833
812
  const convertedHtml = updatedAttributes[ newAttributeKey ];
834
- const convertedValue = create( {
835
- html: convertedHtml,
836
- ...mapRichTextSettings(
837
- targetBlockType.attributes[ newAttributeKey ]
838
- ),
839
- } );
813
+ const convertedValue = create( { html: convertedHtml } );
840
814
  const newOffset = convertedValue.text.indexOf( START_OF_SELECTED_AREA );
841
815
  const newValue = remove( convertedValue, newOffset, newOffset + 1 );
842
- const newHtml = toHTMLString( {
843
- value: newValue,
844
- ...mapRichTextSettings(
845
- targetBlockType.attributes[ newAttributeKey ]
846
- ),
847
- } );
816
+ const newHtml = toHTMLString( { value: newValue } );
848
817
 
849
818
  updatedAttributes[ newAttributeKey ] = newHtml;
850
819
 
@@ -931,27 +900,13 @@ export const __unstableSplitSelection =
931
900
  const selectionB = selectionEnd;
932
901
 
933
902
  const blockA = select.getBlock( selectionA.clientId );
934
- const blockAType = getBlockType( blockA.name );
935
-
936
903
  const blockB = select.getBlock( selectionB.clientId );
937
- const blockBType = getBlockType( blockB.name );
938
904
 
939
905
  const htmlA = blockA.attributes[ selectionA.attributeKey ];
940
906
  const htmlB = blockB.attributes[ selectionB.attributeKey ];
941
907
 
942
- const attributeDefinitionA =
943
- blockAType.attributes[ selectionA.attributeKey ];
944
- const attributeDefinitionB =
945
- blockBType.attributes[ selectionB.attributeKey ];
946
-
947
- let valueA = create( {
948
- html: htmlA,
949
- ...mapRichTextSettings( attributeDefinitionA ),
950
- } );
951
- let valueB = create( {
952
- html: htmlB,
953
- ...mapRichTextSettings( attributeDefinitionB ),
954
- } );
908
+ let valueA = create( { html: htmlA } );
909
+ let valueB = create( { html: htmlB } );
955
910
 
956
911
  valueA = remove( valueA, selectionA.offset, valueA.text.length );
957
912
  valueB = remove( valueB, 0, selectionB.offset );
@@ -964,7 +919,6 @@ export const __unstableSplitSelection =
964
919
  ...blockA.attributes,
965
920
  [ selectionA.attributeKey ]: toHTMLString( {
966
921
  value: valueA,
967
- ...mapRichTextSettings( attributeDefinitionA ),
968
922
  } ),
969
923
  },
970
924
  },
@@ -975,7 +929,6 @@ export const __unstableSplitSelection =
975
929
  ...blockB.attributes,
976
930
  [ selectionB.attributeKey ]: toHTMLString( {
977
931
  value: valueB,
978
- ...mapRichTextSettings( attributeDefinitionB ),
979
932
  } ),
980
933
  },
981
934
  },
@@ -1143,10 +1096,7 @@ export const mergeBlocks =
1143
1096
  const selectedBlock = clientId === clientIdA ? cloneA : cloneB;
1144
1097
  const html = selectedBlock.attributes[ attributeKey ];
1145
1098
  const value = insert(
1146
- create( {
1147
- html,
1148
- ...mapRichTextSettings( attributeDefinition ),
1149
- } ),
1099
+ create( { html } ),
1150
1100
  START_OF_SELECTED_AREA,
1151
1101
  offset,
1152
1102
  offset
@@ -1154,7 +1104,6 @@ export const mergeBlocks =
1154
1104
 
1155
1105
  selectedBlock.attributes[ attributeKey ] = toHTMLString( {
1156
1106
  value,
1157
- ...mapRichTextSettings( attributeDefinition ),
1158
1107
  } );
1159
1108
  }
1160
1109
 
@@ -1180,22 +1129,12 @@ export const mergeBlocks =
1180
1129
  const newAttributeKey =
1181
1130
  retrieveSelectedAttribute( updatedAttributes );
1182
1131
  const convertedHtml = updatedAttributes[ newAttributeKey ];
1183
- const convertedValue = create( {
1184
- html: convertedHtml,
1185
- ...mapRichTextSettings(
1186
- blockAType.attributes[ newAttributeKey ]
1187
- ),
1188
- } );
1132
+ const convertedValue = create( { html: convertedHtml } );
1189
1133
  const newOffset = convertedValue.text.indexOf(
1190
1134
  START_OF_SELECTED_AREA
1191
1135
  );
1192
1136
  const newValue = remove( convertedValue, newOffset, newOffset + 1 );
1193
- const newHtml = toHTMLString( {
1194
- value: newValue,
1195
- ...mapRichTextSettings(
1196
- blockAType.attributes[ newAttributeKey ]
1197
- ),
1198
- } );
1137
+ const newHtml = toHTMLString( { value: newValue } );
1199
1138
 
1200
1139
  updatedAttributes[ newAttributeKey ] = newHtml;
1201
1140
 
@@ -1980,3 +1919,18 @@ export function unsetBlockEditingMode( clientId = '' ) {
1980
1919
  clientId,
1981
1920
  };
1982
1921
  }
1922
+
1923
+ /**
1924
+ * Action that sets the element that had focus when focus leaves the editor canvas.
1925
+ *
1926
+ * @param {Object} lastFocus The last focused element.
1927
+ *
1928
+ *
1929
+ * @return {Object} Action object.
1930
+ */
1931
+ export function setLastFocus( lastFocus = null ) {
1932
+ return {
1933
+ type: 'LAST_FOCUS',
1934
+ lastFocus,
1935
+ };
1936
+ }
@@ -1962,6 +1962,24 @@ export function registeredInserterMediaCategories( state = [], action ) {
1962
1962
  case 'REGISTER_INSERTER_MEDIA_CATEGORY':
1963
1963
  return [ ...state, action.category ];
1964
1964
  }
1965
+
1966
+ return state;
1967
+ }
1968
+
1969
+ /**
1970
+ * Reducer setting last focused element
1971
+ *
1972
+ * @param {boolean} state Current state.
1973
+ * @param {Object} action Dispatched action.
1974
+ *
1975
+ * @return {boolean} Updated state.
1976
+ */
1977
+ export function lastFocus( state = false, action ) {
1978
+ switch ( action.type ) {
1979
+ case 'LAST_FOCUS':
1980
+ return action.lastFocus;
1981
+ }
1982
+
1965
1983
  return state;
1966
1984
  }
1967
1985
 
@@ -1981,6 +1999,7 @@ const combinedReducers = combineReducers( {
1981
1999
  settings,
1982
2000
  preferences,
1983
2001
  lastBlockAttributesChange,
2002
+ lastFocus,
1984
2003
  editorMode,
1985
2004
  hasBlockMovingClientId,
1986
2005
  highlightedBlock,