@wordpress/block-editor 10.1.1-next.4d3b314fd5.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +41 -0
  3. package/build/components/block-controls/slot.js +2 -2
  4. package/build/components/block-controls/slot.js.map +1 -1
  5. package/build/components/block-draggable/draggable-chip.js +4 -2
  6. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  7. package/build/components/block-inspector/index.js +4 -5
  8. package/build/components/block-inspector/index.js.map +1 -1
  9. package/build/components/block-list/block-list-compact.native.js +1 -0
  10. package/build/components/block-list/block-list-compact.native.js.map +1 -1
  11. package/build/components/block-list/block.js +72 -14
  12. package/build/components/block-list/block.js.map +1 -1
  13. package/build/components/block-list/block.native.js +79 -12
  14. package/build/components/block-list/block.native.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +7 -23
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +9 -6
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-parent-selector/index.js +5 -5
  20. package/build/components/block-parent-selector/index.js.map +1 -1
  21. package/build/components/block-patterns-list/index.js +5 -4
  22. package/build/components/block-patterns-list/index.js.map +1 -1
  23. package/build/components/block-popover/drop-zone.js +85 -0
  24. package/build/components/block-popover/drop-zone.js.map +1 -0
  25. package/build/components/block-popover/inbetween.js +3 -1
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-popover/index.js +22 -17
  28. package/build/components/block-popover/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +2 -2
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +6 -9
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-preview/live.js +3 -7
  34. package/build/components/block-preview/live.js.map +1 -1
  35. package/build/components/block-selection-clearer/index.js +9 -1
  36. package/build/components/block-selection-clearer/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +22 -16
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/index.js +18 -42
  40. package/build/components/block-styles/index.js.map +1 -1
  41. package/build/components/block-toolbar/index.js +4 -4
  42. package/build/components/block-toolbar/index.js.map +1 -1
  43. package/build/components/block-tools/back-compat.js +2 -1
  44. package/build/components/block-tools/back-compat.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +50 -20
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +15 -3
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/colors-gradients/control.js +1 -1
  50. package/build/components/colors-gradients/control.js.map +1 -1
  51. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  52. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +256 -0
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -0
  55. package/build/components/font-sizes/index.js +8 -0
  56. package/build/components/font-sizes/index.js.map +1 -1
  57. package/build/components/image-editor/use-transform-image.js +2 -2
  58. package/build/components/image-editor/use-transform-image.js.map +1 -1
  59. package/build/components/index.js +0 -9
  60. package/build/components/index.js.map +1 -1
  61. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  62. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  63. package/build/components/inserter/block-patterns-tab.js +151 -78
  64. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  65. package/build/components/inserter/block-types-tab.js +1 -1
  66. package/build/components/inserter/block-types-tab.js.map +1 -1
  67. package/build/components/inserter/menu.js +14 -3
  68. package/build/components/inserter/menu.js.map +1 -1
  69. package/build/components/inserter/search-items.js +2 -17
  70. package/build/components/inserter/search-items.js.map +1 -1
  71. package/build/components/inserter-draggable-blocks/index.js +4 -2
  72. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  73. package/build/components/inspector-controls/slot.js +2 -1
  74. package/build/components/inspector-controls/slot.js.map +1 -1
  75. package/build/components/list-view/use-list-view-drop-zone.js +1 -14
  76. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  77. package/build/components/preview-options/index.js +2 -3
  78. package/build/components/preview-options/index.js.map +1 -1
  79. package/build/components/rich-text/index.js +17 -0
  80. package/build/components/rich-text/index.js.map +1 -1
  81. package/build/components/spacing-sizes-control/index.js +10 -2
  82. package/build/components/spacing-sizes-control/index.js.map +1 -1
  83. package/build/components/spacing-sizes-control/spacing-input-control.js +40 -9
  84. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  85. package/build/components/use-block-drop-zone/index.js +98 -57
  86. package/build/components/use-block-drop-zone/index.js.map +1 -1
  87. package/build/components/use-on-block-drop/index.js +12 -12
  88. package/build/components/use-on-block-drop/index.js.map +1 -1
  89. package/build/components/use-on-block-drop/types.js +6 -0
  90. package/build/components/use-on-block-drop/types.js.map +1 -0
  91. package/build/hooks/align.js +1 -3
  92. package/build/hooks/align.js.map +1 -1
  93. package/build/hooks/align.native.js +1 -7
  94. package/build/hooks/align.native.js.map +1 -1
  95. package/build/hooks/font-size.js +60 -0
  96. package/build/hooks/font-size.js.map +1 -1
  97. package/build/hooks/margin.js +6 -5
  98. package/build/hooks/margin.js.map +1 -1
  99. package/build/hooks/padding.js +2 -1
  100. package/build/hooks/padding.js.map +1 -1
  101. package/build/hooks/style.js +126 -4
  102. package/build/hooks/style.js.map +1 -1
  103. package/build/hooks/use-typography-props.js +17 -3
  104. package/build/hooks/use-typography-props.js.map +1 -1
  105. package/build/hooks/utils.js +1 -1
  106. package/build/hooks/utils.js.map +1 -1
  107. package/build/store/actions.js +59 -45
  108. package/build/store/actions.js.map +1 -1
  109. package/build/store/defaults.js +3 -0
  110. package/build/store/defaults.js.map +1 -1
  111. package/build/store/reducer.js +36 -18
  112. package/build/store/reducer.js.map +1 -1
  113. package/build/utils/math.js +14 -0
  114. package/build/utils/math.js.map +1 -1
  115. package/build/utils/pre-parse-patterns.js +19 -2
  116. package/build/utils/pre-parse-patterns.js.map +1 -1
  117. package/build-module/components/block-controls/slot.js +3 -3
  118. package/build-module/components/block-controls/slot.js.map +1 -1
  119. package/build-module/components/block-draggable/draggable-chip.js +7 -3
  120. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  121. package/build-module/components/block-inspector/index.js +5 -6
  122. package/build-module/components/block-inspector/index.js.map +1 -1
  123. package/build-module/components/block-list/block-list-compact.native.js +1 -0
  124. package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
  125. package/build-module/components/block-list/block.js +72 -14
  126. package/build-module/components/block-list/block.js.map +1 -1
  127. package/build-module/components/block-list/block.native.js +80 -13
  128. package/build-module/components/block-list/block.native.js.map +1 -1
  129. package/build-module/components/block-list/use-in-between-inserter.js +8 -24
  130. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  131. package/build-module/components/block-lock/modal.js +10 -8
  132. package/build-module/components/block-lock/modal.js.map +1 -1
  133. package/build-module/components/block-parent-selector/index.js +5 -5
  134. package/build-module/components/block-parent-selector/index.js.map +1 -1
  135. package/build-module/components/block-patterns-list/index.js +5 -4
  136. package/build-module/components/block-patterns-list/index.js.map +1 -1
  137. package/build-module/components/block-popover/drop-zone.js +70 -0
  138. package/build-module/components/block-popover/drop-zone.js.map +1 -0
  139. package/build-module/components/block-popover/inbetween.js +3 -1
  140. package/build-module/components/block-popover/inbetween.js.map +1 -1
  141. package/build-module/components/block-popover/index.js +22 -17
  142. package/build-module/components/block-popover/index.js.map +1 -1
  143. package/build-module/components/block-preview/auto.js +1 -1
  144. package/build-module/components/block-preview/auto.js.map +1 -1
  145. package/build-module/components/block-preview/index.js +6 -9
  146. package/build-module/components/block-preview/index.js.map +1 -1
  147. package/build-module/components/block-preview/live.js +3 -6
  148. package/build-module/components/block-preview/live.js.map +1 -1
  149. package/build-module/components/block-selection-clearer/index.js +9 -1
  150. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  151. package/build-module/components/block-settings-menu/block-settings-dropdown.js +25 -19
  152. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  153. package/build-module/components/block-styles/index.js +19 -44
  154. package/build-module/components/block-styles/index.js.map +1 -1
  155. package/build-module/components/block-toolbar/index.js +4 -4
  156. package/build-module/components/block-toolbar/index.js.map +1 -1
  157. package/build-module/components/block-tools/back-compat.js +2 -1
  158. package/build-module/components/block-tools/back-compat.js.map +1 -1
  159. package/build-module/components/block-tools/insertion-point.js +48 -20
  160. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  161. package/build-module/components/block-tools/selected-block-popover.js +15 -3
  162. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  163. package/build-module/components/colors-gradients/control.js +2 -2
  164. package/build-module/components/colors-gradients/control.js.map +1 -1
  165. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
  166. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  167. package/build-module/components/font-sizes/fluid-utils.js +245 -0
  168. package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
  169. package/build-module/components/font-sizes/index.js +1 -0
  170. package/build-module/components/font-sizes/index.js.map +1 -1
  171. package/build-module/components/image-editor/use-transform-image.js +2 -2
  172. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  173. package/build-module/components/index.js +0 -1
  174. package/build-module/components/index.js.map +1 -1
  175. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  176. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  177. package/build-module/components/inserter/block-patterns-tab.js +148 -81
  178. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  179. package/build-module/components/inserter/block-types-tab.js +3 -3
  180. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  181. package/build-module/components/inserter/menu.js +10 -3
  182. package/build-module/components/inserter/menu.js.map +1 -1
  183. package/build-module/components/inserter/search-items.js +3 -17
  184. package/build-module/components/inserter/search-items.js.map +1 -1
  185. package/build-module/components/inserter-draggable-blocks/index.js +4 -2
  186. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  187. package/build-module/components/inspector-controls/slot.js +3 -2
  188. package/build-module/components/inspector-controls/slot.js.map +1 -1
  189. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
  190. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  191. package/build-module/components/preview-options/index.js +2 -3
  192. package/build-module/components/preview-options/index.js.map +1 -1
  193. package/build-module/components/rich-text/index.js +17 -0
  194. package/build-module/components/rich-text/index.js.map +1 -1
  195. package/build-module/components/spacing-sizes-control/index.js +10 -3
  196. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  197. package/build-module/components/spacing-sizes-control/spacing-input-control.js +40 -10
  198. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  199. package/build-module/components/use-block-drop-zone/index.js +98 -58
  200. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  201. package/build-module/components/use-on-block-drop/index.js +12 -12
  202. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  203. package/build-module/components/use-on-block-drop/types.js +2 -0
  204. package/build-module/components/use-on-block-drop/types.js.map +1 -0
  205. package/build-module/hooks/align.js +1 -2
  206. package/build-module/hooks/align.js.map +1 -1
  207. package/build-module/hooks/align.native.js +1 -6
  208. package/build-module/hooks/align.native.js.map +1 -1
  209. package/build-module/hooks/font-size.js +59 -1
  210. package/build-module/hooks/font-size.js.map +1 -1
  211. package/build-module/hooks/margin.js +6 -5
  212. package/build-module/hooks/margin.js.map +1 -1
  213. package/build-module/hooks/padding.js +2 -1
  214. package/build-module/hooks/padding.js.map +1 -1
  215. package/build-module/hooks/style.js +124 -3
  216. package/build-module/hooks/style.js.map +1 -1
  217. package/build-module/hooks/use-typography-props.js +17 -4
  218. package/build-module/hooks/use-typography-props.js.map +1 -1
  219. package/build-module/hooks/utils.js +2 -2
  220. package/build-module/hooks/utils.js.map +1 -1
  221. package/build-module/store/actions.js +55 -42
  222. package/build-module/store/actions.js.map +1 -1
  223. package/build-module/store/defaults.js +3 -0
  224. package/build-module/store/defaults.js.map +1 -1
  225. package/build-module/store/reducer.js +36 -19
  226. package/build-module/store/reducer.js.map +1 -1
  227. package/build-module/utils/math.js +12 -0
  228. package/build-module/utils/math.js.map +1 -1
  229. package/build-module/utils/pre-parse-patterns.js +19 -2
  230. package/build-module/utils/pre-parse-patterns.js.map +1 -1
  231. package/build-style/style-rtl.css +256 -152
  232. package/build-style/style.css +256 -152
  233. package/package.json +28 -29
  234. package/src/components/block-breadcrumb/test/index.js +1 -1
  235. package/src/components/block-controls/slot.js +3 -3
  236. package/src/components/block-draggable/draggable-chip.js +4 -2
  237. package/src/components/block-inspector/index.js +8 -11
  238. package/src/components/block-list/block-list-compact.native.js +1 -0
  239. package/src/components/block-list/block.js +111 -7
  240. package/src/components/block-list/block.native.js +123 -9
  241. package/src/components/block-list/style.scss +93 -126
  242. package/src/components/block-list/use-in-between-inserter.js +8 -19
  243. package/src/components/block-lock/modal.js +12 -7
  244. package/src/components/block-mover/style.scss +0 -1
  245. package/src/components/block-parent-selector/index.js +5 -5
  246. package/src/components/block-patterns-list/index.js +9 -5
  247. package/src/components/block-patterns-list/style.scss +7 -3
  248. package/src/components/block-popover/README.md +8 -0
  249. package/src/components/block-popover/drop-zone.js +63 -0
  250. package/src/components/block-popover/inbetween.js +1 -1
  251. package/src/components/block-popover/index.js +39 -22
  252. package/src/components/block-popover/style.scss +17 -1
  253. package/src/components/block-preview/auto.js +1 -1
  254. package/src/components/block-preview/index.js +7 -8
  255. package/src/components/block-preview/live.js +2 -7
  256. package/src/components/block-preview/test/index.js +1 -7
  257. package/src/components/block-selection-clearer/index.js +7 -2
  258. package/src/components/block-selection-clearer/test/index.js +118 -0
  259. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -18
  260. package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
  261. package/src/components/block-styles/index.js +26 -49
  262. package/src/components/block-switcher/test/__snapshots__/index.js.snap +104 -33
  263. package/src/components/block-switcher/test/index.js +121 -61
  264. package/src/components/block-toolbar/index.js +4 -6
  265. package/src/components/block-toolbar/style.scss +38 -14
  266. package/src/components/block-tools/back-compat.js +1 -0
  267. package/src/components/block-tools/insertion-point.js +42 -17
  268. package/src/components/block-tools/selected-block-popover.js +14 -1
  269. package/src/components/button-block-appender/style.scss +5 -1
  270. package/src/components/color-palette/test/__snapshots__/control.js.snap +32 -52
  271. package/src/components/color-palette/test/control.js +11 -15
  272. package/src/components/colors-gradients/control.js +2 -2
  273. package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
  274. package/src/components/colors-gradients/test/control.js +49 -77
  275. package/src/components/font-sizes/fluid-utils.js +296 -0
  276. package/src/components/font-sizes/index.js +1 -0
  277. package/src/components/font-sizes/test/fluid-utils.js +168 -0
  278. package/src/components/image-editor/use-transform-image.js +2 -2
  279. package/src/components/image-size-control/test/index.js +47 -60
  280. package/src/components/index.js +0 -1
  281. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  282. package/src/components/inserter/block-patterns-tab.js +232 -98
  283. package/src/components/inserter/block-types-tab.js +3 -3
  284. package/src/components/inserter/menu.js +15 -2
  285. package/src/components/inserter/search-items.js +3 -15
  286. package/src/components/inserter/style.scss +94 -9
  287. package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
  288. package/src/components/inserter/test/search-items.js +4 -0
  289. package/src/components/inserter-draggable-blocks/index.js +12 -2
  290. package/src/components/inserter-list-item/style.scss +20 -1
  291. package/src/components/inspector-controls/slot.js +6 -2
  292. package/src/components/link-control/test/index.js +1 -1
  293. package/src/components/list-view/use-list-view-drop-zone.js +4 -18
  294. package/src/components/panel-color-settings/test/index.js +4 -4
  295. package/src/components/preview-options/index.js +2 -2
  296. package/src/components/preview-options/style.scss +1 -1
  297. package/src/components/provider/test/use-block-sync.js +131 -165
  298. package/src/components/responsive-block-control/test/index.js +77 -122
  299. package/src/components/rich-text/index.js +22 -0
  300. package/src/components/spacing-sizes-control/index.js +15 -3
  301. package/src/components/spacing-sizes-control/spacing-input-control.js +24 -9
  302. package/src/components/spacing-sizes-control/style.scss +42 -31
  303. package/src/components/use-block-drop-zone/index.js +136 -79
  304. package/src/components/use-block-drop-zone/test/index.js +333 -81
  305. package/src/components/use-on-block-drop/index.js +11 -12
  306. package/src/components/use-on-block-drop/types.ts +1 -0
  307. package/src/hooks/align.js +3 -2
  308. package/src/hooks/align.native.js +5 -8
  309. package/src/hooks/font-size.js +75 -0
  310. package/src/hooks/margin.js +5 -4
  311. package/src/hooks/padding.js +1 -0
  312. package/src/hooks/style.js +122 -3
  313. package/src/hooks/test/style.js +206 -1
  314. package/src/hooks/test/use-typography-props.js +22 -0
  315. package/src/hooks/use-typography-props.js +18 -3
  316. package/src/hooks/utils.js +6 -2
  317. package/src/store/actions.js +20 -12
  318. package/src/store/defaults.js +3 -0
  319. package/src/store/reducer.js +35 -28
  320. package/src/store/test/actions.js +0 -9
  321. package/src/utils/math.js +17 -0
  322. package/src/utils/pre-parse-patterns.js +12 -7
  323. package/build/components/inserter/pattern-panel.js +0 -87
  324. package/build/components/inserter/pattern-panel.js.map +0 -1
  325. package/build-module/components/inserter/pattern-panel.js +0 -74
  326. package/build-module/components/inserter/pattern-panel.js.map +0 -1
  327. package/src/components/inserter/pattern-panel.js +0 -93
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "10.1.1-next.4d3b314fd5.0",
3
+ "version": "10.3.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -33,33 +33,32 @@
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.16.0",
35
35
  "@react-spring/web": "^9.4.5",
36
- "@wordpress/a11y": "^3.18.1-next.4d3b314fd5.0",
37
- "@wordpress/api-fetch": "^6.15.1-next.4d3b314fd5.0",
38
- "@wordpress/blob": "^3.18.1-next.4d3b314fd5.0",
39
- "@wordpress/blocks": "^11.18.1-next.4d3b314fd5.0",
40
- "@wordpress/components": "^21.1.2-next.4d3b314fd5.0",
41
- "@wordpress/compose": "^5.16.1-next.4d3b314fd5.0",
42
- "@wordpress/data": "^7.2.1-next.4d3b314fd5.0",
43
- "@wordpress/date": "^4.18.1-next.4d3b314fd5.0",
44
- "@wordpress/deprecated": "^3.18.1-next.4d3b314fd5.0",
45
- "@wordpress/dom": "^3.18.1-next.4d3b314fd5.0",
46
- "@wordpress/element": "^4.16.1-next.4d3b314fd5.0",
47
- "@wordpress/hooks": "^3.18.1-next.4d3b314fd5.0",
48
- "@wordpress/html-entities": "^3.18.1-next.4d3b314fd5.0",
49
- "@wordpress/i18n": "^4.18.1-next.4d3b314fd5.0",
50
- "@wordpress/icons": "^9.9.1-next.4d3b314fd5.0",
51
- "@wordpress/is-shallow-equal": "^4.18.1-next.4d3b314fd5.0",
52
- "@wordpress/keyboard-shortcuts": "^3.16.1-next.4d3b314fd5.0",
53
- "@wordpress/keycodes": "^3.18.1-next.4d3b314fd5.0",
54
- "@wordpress/notices": "^3.18.1-next.4d3b314fd5.0",
55
- "@wordpress/rich-text": "^5.16.1-next.4d3b314fd5.0",
56
- "@wordpress/shortcode": "^3.18.1-next.4d3b314fd5.0",
57
- "@wordpress/style-engine": "^1.1.1-next.4d3b314fd5.0",
58
- "@wordpress/token-list": "^2.18.1-next.4d3b314fd5.0",
59
- "@wordpress/url": "^3.19.1-next.4d3b314fd5.0",
60
- "@wordpress/warning": "^2.18.1-next.4d3b314fd5.0",
61
- "@wordpress/wordcount": "^3.18.1-next.4d3b314fd5.0",
62
- "change-case": "^4.1.2",
36
+ "@wordpress/a11y": "^3.20.0",
37
+ "@wordpress/api-fetch": "^6.17.0",
38
+ "@wordpress/blob": "^3.20.0",
39
+ "@wordpress/blocks": "^11.19.0",
40
+ "@wordpress/components": "^21.3.0",
41
+ "@wordpress/compose": "^5.18.0",
42
+ "@wordpress/data": "^7.4.0",
43
+ "@wordpress/date": "^4.20.0",
44
+ "@wordpress/deprecated": "^3.20.0",
45
+ "@wordpress/dom": "^3.20.0",
46
+ "@wordpress/element": "^4.18.0",
47
+ "@wordpress/hooks": "^3.20.0",
48
+ "@wordpress/html-entities": "^3.20.0",
49
+ "@wordpress/i18n": "^4.20.0",
50
+ "@wordpress/icons": "^9.11.0",
51
+ "@wordpress/is-shallow-equal": "^4.20.0",
52
+ "@wordpress/keyboard-shortcuts": "^3.18.0",
53
+ "@wordpress/keycodes": "^3.20.0",
54
+ "@wordpress/notices": "^3.20.0",
55
+ "@wordpress/rich-text": "^5.18.0",
56
+ "@wordpress/shortcode": "^3.20.0",
57
+ "@wordpress/style-engine": "^1.3.0",
58
+ "@wordpress/token-list": "^2.20.0",
59
+ "@wordpress/url": "^3.21.0",
60
+ "@wordpress/warning": "^2.20.0",
61
+ "@wordpress/wordcount": "^3.20.0",
63
62
  "classnames": "^2.3.1",
64
63
  "colord": "^2.7.0",
65
64
  "diff": "^4.0.2",
@@ -79,5 +78,5 @@
79
78
  "publishConfig": {
80
79
  "access": "public"
81
80
  },
82
- "gitHead": "25054766423cb49d959eb656c2533530073ff5c2"
81
+ "gitHead": "a2ff0e6471c88436dad0287beb88d1729aa6f5dd"
83
82
  }
@@ -30,7 +30,7 @@ describe( 'BlockBreadcrumb', () => {
30
30
  const rootLabelText = screen.getByText( 'Tuhinga' );
31
31
  const rootLabelTextDefault = screen.queryByText( 'Document' );
32
32
 
33
- expect( rootLabelTextDefault ).toBeNull();
33
+ expect( rootLabelTextDefault ).not.toBeInTheDocument();
34
34
  expect( rootLabelText ).toBeInTheDocument();
35
35
  } );
36
36
  } );
@@ -5,7 +5,7 @@ import { useContext } from '@wordpress/element';
5
5
  import {
6
6
  __experimentalToolbarContext as ToolbarContext,
7
7
  ToolbarGroup,
8
- __experimentalUseSlot as useSlot,
8
+ __experimentalUseSlotFills as useSlotFills,
9
9
  } from '@wordpress/components';
10
10
 
11
11
  /**
@@ -16,8 +16,8 @@ import groups from './groups';
16
16
  export default function BlockControlsSlot( { group = 'default', ...props } ) {
17
17
  const accessibleToolbarState = useContext( ToolbarContext );
18
18
  const Slot = groups[ group ].Slot;
19
- const slot = useSlot( Slot.__unstableName );
20
- const hasFills = Boolean( slot.fills && slot.fills.length );
19
+ const fills = useSlotFills( Slot.__unstableName );
20
+ const hasFills = Boolean( fills && fills.length );
21
21
 
22
22
  if ( ! hasFills ) {
23
23
  return null;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { _n, sprintf } from '@wordpress/i18n';
4
+ import { __, _n, sprintf } from '@wordpress/i18n';
5
5
  import { Flex, FlexItem } from '@wordpress/components';
6
6
  import { dragHandle } from '@wordpress/icons';
7
7
 
@@ -10,7 +10,8 @@ import { dragHandle } from '@wordpress/icons';
10
10
  */
11
11
  import BlockIcon from '../block-icon';
12
12
 
13
- export default function BlockDraggableChip( { count, icon } ) {
13
+ export default function BlockDraggableChip( { count, icon, isPattern } ) {
14
+ const patternLabel = isPattern && __( 'Pattern' );
14
15
  return (
15
16
  <div className="block-editor-block-draggable-chip-wrapper">
16
17
  <div
@@ -25,6 +26,7 @@ export default function BlockDraggableChip( { count, icon } ) {
25
26
  { icon ? (
26
27
  <BlockIcon icon={ icon } />
27
28
  ) : (
29
+ patternLabel ||
28
30
  sprintf(
29
31
  /* translators: %d: Number of blocks. */
30
32
  _n( '%d block', '%d blocks', count ),
@@ -10,7 +10,7 @@ import {
10
10
  } from '@wordpress/blocks';
11
11
  import {
12
12
  PanelBody,
13
- __experimentalUseSlot as useSlot,
13
+ __experimentalUseSlotFills as useSlotFills,
14
14
  FlexItem,
15
15
  __experimentalHStack as HStack,
16
16
  __experimentalVStack as VStack,
@@ -40,6 +40,7 @@ function useContentBlocks( blockTypes, block ) {
40
40
  const contenBlocksObjectAux = useMemo( () => {
41
41
  return blockTypes.reduce( ( result, blockType ) => {
42
42
  if (
43
+ blockType.name !== 'core/list-item' &&
43
44
  Object.entries( blockType.attributes ).some(
44
45
  ( [ , { __experimentalRole } ] ) =>
45
46
  __experimentalRole === 'content'
@@ -158,11 +159,10 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
158
159
  selectedBlockName: _selectedBlockName,
159
160
  blockType: _blockType,
160
161
  topLevelLockedBlock:
161
- getTemplateLock( _selectedBlockClientId ) === 'contentOnly'
162
+ __unstableGetContentLockingParent( _selectedBlockClientId ) ||
163
+ ( getTemplateLock( _selectedBlockClientId ) === 'contentOnly'
162
164
  ? _selectedBlockClientId
163
- : __unstableGetContentLockingParent(
164
- _selectedBlockClientId
165
- ),
165
+ : undefined ),
166
166
  };
167
167
  }, [] );
168
168
 
@@ -245,10 +245,7 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
245
245
  { hasBlockStyles && (
246
246
  <div>
247
247
  <PanelBody title={ __( 'Styles' ) }>
248
- <BlockStyles
249
- scope="core/block-inspector"
250
- clientId={ clientId }
251
- />
248
+ <BlockStyles clientId={ clientId } />
252
249
  { hasBlockSupport(
253
250
  blockName,
254
251
  'defaultStylePicker',
@@ -284,8 +281,8 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
284
281
  };
285
282
 
286
283
  const AdvancedControls = () => {
287
- const slot = useSlot( InspectorAdvancedControls.slotName );
288
- const hasFills = Boolean( slot.fills && slot.fills.length );
284
+ const fills = useSlotFills( InspectorAdvancedControls.slotName );
285
+ const hasFills = Boolean( fills && fills.length );
289
286
 
290
287
  if ( ! hasFills ) {
291
288
  return null;
@@ -50,6 +50,7 @@ function BlockListCompact( props ) {
50
50
  { blockClientIds.map( ( currentClientId ) => (
51
51
  <BlockListBlock
52
52
  clientId={ currentClientId }
53
+ rootClientId={ rootClientId }
53
54
  key={ currentClientId }
54
55
  marginHorizontal={ marginHorizontal }
55
56
  marginVertical={ marginVertical }
@@ -296,7 +296,7 @@ const applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {
296
296
  };
297
297
  } );
298
298
 
299
- const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
299
+ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
300
300
  const {
301
301
  updateBlockAttributes,
302
302
  insertBlocks,
@@ -304,6 +304,9 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
304
304
  replaceBlocks,
305
305
  toggleSelection,
306
306
  __unstableMarkLastChangeAsPersistent,
307
+ moveBlocksToPosition,
308
+ removeBlock,
309
+ selectBlock,
307
310
  } = dispatch( blockEditorStore );
308
311
 
309
312
  // Do not add new properties here, use `useDispatch` instead to avoid
@@ -311,7 +314,7 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
311
314
  return {
312
315
  setAttributes( newAttributes ) {
313
316
  const { getMultiSelectedBlockClientIds } =
314
- select( blockEditorStore );
317
+ registry.select( blockEditorStore );
315
318
  const multiSelectedBlockClientIds =
316
319
  getMultiSelectedBlockClientIds();
317
320
  const { clientId } = ownProps;
@@ -327,26 +330,124 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
327
330
  },
328
331
  onInsertBlocksAfter( blocks ) {
329
332
  const { clientId, rootClientId } = ownProps;
330
- const { getBlockIndex } = select( blockEditorStore );
333
+ const { getBlockIndex } = registry.select( blockEditorStore );
331
334
  const index = getBlockIndex( clientId );
332
335
  insertBlocks( blocks, index + 1, rootClientId );
333
336
  },
334
337
  onMerge( forward ) {
335
338
  const { clientId, rootClientId } = ownProps;
336
- const { getPreviousBlockClientId, getNextBlockClientId, getBlock } =
337
- select( blockEditorStore );
339
+ const {
340
+ getPreviousBlockClientId,
341
+ getNextBlockClientId,
342
+ getBlock,
343
+ getBlockAttributes,
344
+ getBlockName,
345
+ getBlockOrder,
346
+ } = registry.select( blockEditorStore );
338
347
 
348
+ // For `Delete` or forward merge, we should do the exact same thing
349
+ // as `Backspace`, but from the other block.
339
350
  if ( forward ) {
351
+ if ( rootClientId ) {
352
+ const nextRootClientId =
353
+ getNextBlockClientId( rootClientId );
354
+
355
+ if ( nextRootClientId ) {
356
+ // If there is a block that follows with the same parent
357
+ // block name and the same attributes, merge the inner
358
+ // blocks.
359
+ if (
360
+ getBlockName( rootClientId ) ===
361
+ getBlockName( nextRootClientId )
362
+ ) {
363
+ const rootAttributes =
364
+ getBlockAttributes( rootClientId );
365
+ const previousRootAttributes =
366
+ getBlockAttributes( nextRootClientId );
367
+
368
+ if (
369
+ Object.keys( rootAttributes ).every(
370
+ ( key ) =>
371
+ rootAttributes[ key ] ===
372
+ previousRootAttributes[ key ]
373
+ )
374
+ ) {
375
+ registry.batch( () => {
376
+ moveBlocksToPosition(
377
+ getBlockOrder( nextRootClientId ),
378
+ nextRootClientId,
379
+ rootClientId
380
+ );
381
+ removeBlock( nextRootClientId, false );
382
+ } );
383
+ return;
384
+ }
385
+ } else {
386
+ mergeBlocks( rootClientId, nextRootClientId );
387
+ return;
388
+ }
389
+ }
390
+ }
391
+
340
392
  const nextBlockClientId = getNextBlockClientId( clientId );
341
- if ( nextBlockClientId ) {
393
+
394
+ if ( ! nextBlockClientId ) {
395
+ return;
396
+ }
397
+
398
+ // Check if it's possibile to "unwrap" the following block
399
+ // before trying to merge.
400
+ const replacement = switchToBlockType(
401
+ getBlock( nextBlockClientId ),
402
+ '*'
403
+ );
404
+
405
+ if ( replacement && replacement.length ) {
406
+ replaceBlocks( nextBlockClientId, replacement );
407
+ } else {
342
408
  mergeBlocks( clientId, nextBlockClientId );
343
409
  }
344
410
  } else {
345
411
  const previousBlockClientId =
346
412
  getPreviousBlockClientId( clientId );
413
+
347
414
  if ( previousBlockClientId ) {
348
415
  mergeBlocks( previousBlockClientId, clientId );
349
416
  } else if ( rootClientId ) {
417
+ const previousRootClientId =
418
+ getPreviousBlockClientId( rootClientId );
419
+
420
+ // If there is a preceding block with the same parent block
421
+ // name and the same attributes, merge the inner blocks.
422
+ if (
423
+ previousRootClientId &&
424
+ getBlockName( rootClientId ) ===
425
+ getBlockName( previousRootClientId )
426
+ ) {
427
+ const rootAttributes =
428
+ getBlockAttributes( rootClientId );
429
+ const previousRootAttributes =
430
+ getBlockAttributes( previousRootClientId );
431
+
432
+ if (
433
+ Object.keys( rootAttributes ).every(
434
+ ( key ) =>
435
+ rootAttributes[ key ] ===
436
+ previousRootAttributes[ key ]
437
+ )
438
+ ) {
439
+ registry.batch( () => {
440
+ moveBlocksToPosition(
441
+ getBlockOrder( rootClientId ),
442
+ rootClientId,
443
+ previousRootClientId
444
+ );
445
+ removeBlock( rootClientId, false );
446
+ } );
447
+ return;
448
+ }
449
+ }
450
+
350
451
  // Attempt to "unwrap" the block contents when there's no
351
452
  // preceding block to merge with.
352
453
  const replacement = switchToBlockType(
@@ -354,7 +455,10 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
354
455
  '*'
355
456
  );
356
457
  if ( replacement && replacement.length ) {
357
- replaceBlocks( rootClientId, replacement, 0 );
458
+ registry.batch( () => {
459
+ replaceBlocks( rootClientId, replacement );
460
+ selectBlock( replacement[ 0 ].clientId, 0 );
461
+ } );
358
462
  }
359
463
  }
360
464
  }
@@ -20,6 +20,7 @@ import { compose, withPreferredColorScheme } from '@wordpress/compose';
20
20
  import {
21
21
  getBlockType,
22
22
  __experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,
23
+ switchToBlockType,
23
24
  } from '@wordpress/blocks';
24
25
  import { useSetting } from '@wordpress/block-editor';
25
26
 
@@ -41,7 +42,7 @@ function BlockForType( {
41
42
  getBlockWidth,
42
43
  insertBlocksAfter,
43
44
  isSelected,
44
- mergeBlocks,
45
+ onMerge,
45
46
  name,
46
47
  onBlockFocus,
47
48
  onChange,
@@ -87,7 +88,7 @@ function BlockForType( {
87
88
  onFocus={ onBlockFocus }
88
89
  onReplace={ onReplace }
89
90
  insertBlocksAfter={ insertBlocksAfter }
90
- mergeBlocks={ mergeBlocks }
91
+ mergeBlocks={ onMerge }
91
92
  // Block level styles.
92
93
  wrapperProps={ wrapperProps }
93
94
  // Inherited styles merged with block level styles.
@@ -407,31 +408,144 @@ export default compose( [
407
408
  ),
408
409
  };
409
410
  } ),
410
- withDispatch( ( dispatch, ownProps, { select } ) => {
411
+ withDispatch( ( dispatch, ownProps, registry ) => {
411
412
  const {
412
413
  insertBlocks,
413
414
  mergeBlocks,
414
415
  replaceBlocks,
415
416
  selectBlock,
416
417
  updateBlockAttributes,
418
+ moveBlocksToPosition,
419
+ removeBlock,
417
420
  } = dispatch( blockEditorStore );
418
421
 
419
422
  return {
420
- mergeBlocks( forward ) {
421
- const { clientId } = ownProps;
422
- const { getPreviousBlockClientId, getNextBlockClientId } =
423
- select( blockEditorStore );
424
-
423
+ onMerge( forward ) {
424
+ const { clientId, rootClientId } = ownProps;
425
+ const {
426
+ getPreviousBlockClientId,
427
+ getNextBlockClientId,
428
+ getBlock,
429
+ getBlockAttributes,
430
+ getBlockName,
431
+ getBlockOrder,
432
+ } = registry.select( blockEditorStore );
433
+
434
+ // For `Delete` or forward merge, we should do the exact same thing
435
+ // as `Backspace`, but from the other block.
425
436
  if ( forward ) {
437
+ if ( rootClientId ) {
438
+ const nextRootClientId =
439
+ getNextBlockClientId( rootClientId );
440
+
441
+ if ( nextRootClientId ) {
442
+ // If there is a block that follows with the same parent
443
+ // block name and the same attributes, merge the inner
444
+ // blocks.
445
+ if (
446
+ getBlockName( rootClientId ) ===
447
+ getBlockName( nextRootClientId )
448
+ ) {
449
+ const rootAttributes =
450
+ getBlockAttributes( rootClientId );
451
+ const previousRootAttributes =
452
+ getBlockAttributes( nextRootClientId );
453
+
454
+ if (
455
+ Object.keys( rootAttributes ).every(
456
+ ( key ) =>
457
+ rootAttributes[ key ] ===
458
+ previousRootAttributes[ key ]
459
+ )
460
+ ) {
461
+ registry.batch( () => {
462
+ moveBlocksToPosition(
463
+ getBlockOrder( nextRootClientId ),
464
+ nextRootClientId,
465
+ rootClientId
466
+ );
467
+ removeBlock( nextRootClientId, false );
468
+ } );
469
+ return;
470
+ }
471
+ } else {
472
+ mergeBlocks( rootClientId, nextRootClientId );
473
+ return;
474
+ }
475
+ }
476
+ }
477
+
426
478
  const nextBlockClientId = getNextBlockClientId( clientId );
427
- if ( nextBlockClientId ) {
479
+
480
+ if ( ! nextBlockClientId ) {
481
+ return;
482
+ }
483
+
484
+ // Check if it's possibile to "unwrap" the following block
485
+ // before trying to merge.
486
+ const replacement = switchToBlockType(
487
+ getBlock( nextBlockClientId ),
488
+ '*'
489
+ );
490
+
491
+ if ( replacement && replacement.length ) {
492
+ replaceBlocks( nextBlockClientId, replacement );
493
+ } else {
428
494
  mergeBlocks( clientId, nextBlockClientId );
429
495
  }
430
496
  } else {
431
497
  const previousBlockClientId =
432
498
  getPreviousBlockClientId( clientId );
499
+
433
500
  if ( previousBlockClientId ) {
434
501
  mergeBlocks( previousBlockClientId, clientId );
502
+ } else if ( rootClientId ) {
503
+ const previousRootClientId =
504
+ getPreviousBlockClientId( rootClientId );
505
+
506
+ // If there is a preceding block with the same parent block
507
+ // name and the same attributes, merge the inner blocks.
508
+ if (
509
+ previousRootClientId &&
510
+ getBlockName( rootClientId ) ===
511
+ getBlockName( previousRootClientId )
512
+ ) {
513
+ const rootAttributes =
514
+ getBlockAttributes( rootClientId );
515
+ const previousRootAttributes =
516
+ getBlockAttributes( previousRootClientId );
517
+
518
+ if (
519
+ Object.keys( rootAttributes ).every(
520
+ ( key ) =>
521
+ rootAttributes[ key ] ===
522
+ previousRootAttributes[ key ]
523
+ )
524
+ ) {
525
+ registry.batch( () => {
526
+ moveBlocksToPosition(
527
+ getBlockOrder( rootClientId ),
528
+ rootClientId,
529
+ previousRootClientId
530
+ );
531
+ removeBlock( rootClientId, false );
532
+ } );
533
+ return;
534
+ }
535
+ }
536
+
537
+ // Attempt to "unwrap" the block contents when there's no
538
+ // preceding block to merge with.
539
+ const replacement = switchToBlockType(
540
+ getBlock( rootClientId ),
541
+ '*'
542
+ );
543
+ if ( replacement && replacement.length ) {
544
+ registry.batch( () => {
545
+ replaceBlocks( rootClientId, replacement );
546
+ selectBlock( replacement[ 0 ].clientId, 0 );
547
+ } );
548
+ }
435
549
  }
436
550
  }
437
551
  },