@wordpress/block-editor 12.20.0 → 12.22.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 (558) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-actions/index.js +47 -36
  3. package/build/components/block-actions/index.js.map +1 -1
  4. package/build/components/block-bindings-toolbar-indicator/index.js +25 -0
  5. package/build/components/block-bindings-toolbar-indicator/index.js.map +1 -0
  6. package/build/components/block-edit/context.js +2 -1
  7. package/build/components/block-edit/context.js.map +1 -1
  8. package/build/components/block-edit/index.js +8 -3
  9. package/build/components/block-edit/index.js.map +1 -1
  10. package/build/components/block-heading-level-dropdown/index.js +5 -5
  11. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  12. package/build/components/block-heading-level-dropdown/index.native.js +5 -4
  13. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
  14. package/build/components/block-inspector/index.js +5 -4
  15. package/build/components/block-inspector/index.js.map +1 -1
  16. package/build/components/block-list/block-crash-boundary.native.js +49 -0
  17. package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
  18. package/build/components/block-list/block-crash-warning.native.js +24 -0
  19. package/build/components/block-list/block-crash-warning.native.js.map +1 -0
  20. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  21. package/build/components/block-list/block-list-item.native.js +1 -1
  22. package/build/components/block-list/block-list-item.native.js.map +1 -1
  23. package/build/components/block-list/block-outline.native.js +23 -7
  24. package/build/components/block-list/block-outline.native.js.map +1 -1
  25. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  26. package/build/components/block-list/block.native.js +7 -5
  27. package/build/components/block-list/block.native.js.map +1 -1
  28. package/build/components/block-list/use-block-props/index.js +8 -1
  29. package/build/components/block-list/use-block-props/index.js.map +1 -1
  30. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
  31. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  32. package/build/components/block-mover/index.native.js.map +1 -1
  33. package/build/components/block-popover/cover.js +68 -0
  34. package/build/components/block-popover/cover.js.map +1 -0
  35. package/build/components/block-popover/drop-zone.js +2 -3
  36. package/build/components/block-popover/drop-zone.js.map +1 -1
  37. package/build/components/block-popover/index.js +1 -19
  38. package/build/components/block-popover/index.js.map +1 -1
  39. package/build/components/block-preview/index.js +2 -1
  40. package/build/components/block-preview/index.js.map +1 -1
  41. package/build/components/block-removal-warning-modal/index.js +2 -4
  42. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  43. package/build/components/block-rename/modal.js.map +1 -1
  44. package/build/components/block-settings/container.native.js +2 -1
  45. package/build/components/block-settings/container.native.js.map +1 -1
  46. package/build/components/block-settings-menu/block-settings-dropdown.js +41 -39
  47. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  48. package/build/components/block-settings-menu-controls/index.js +1 -3
  49. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  50. package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  51. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  52. package/build/components/block-toolbar/index.js +24 -11
  53. package/build/components/block-toolbar/index.js.map +1 -1
  54. package/build/components/block-toolbar/shuffle.js +89 -0
  55. package/build/components/block-toolbar/shuffle.js.map +1 -0
  56. package/build/components/block-toolbar/use-has-block-toolbar.js +43 -0
  57. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -0
  58. package/build/components/block-tools/block-selection-button.js +5 -1
  59. package/build/components/block-tools/block-selection-button.js.map +1 -1
  60. package/build/components/block-tools/empty-block-inserter.js +2 -5
  61. package/build/components/block-tools/empty-block-inserter.js.map +1 -1
  62. package/build/components/block-tools/index.js +9 -26
  63. package/build/components/block-tools/index.js.map +1 -1
  64. package/build/components/block-tools/use-show-block-tools.js +60 -0
  65. package/build/components/block-tools/use-show-block-tools.js.map +1 -0
  66. package/build/components/caption/index.native.js.map +1 -1
  67. package/build/components/child-layout-control/index.js +108 -11
  68. package/build/components/child-layout-control/index.js.map +1 -1
  69. package/build/components/color-palette/control.js.map +1 -1
  70. package/build/components/colors-gradients/control.js +1 -1
  71. package/build/components/colors-gradients/control.js.map +1 -1
  72. package/build/components/convert-to-group-buttons/toolbar.js +11 -0
  73. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  74. package/build/components/global-styles/border-panel.js +21 -8
  75. package/build/components/global-styles/border-panel.js.map +1 -1
  76. package/build/components/global-styles/color-panel.js +1 -1
  77. package/build/components/global-styles/color-panel.js.map +1 -1
  78. package/build/components/global-styles/dimensions-panel.js +8 -33
  79. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  80. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  81. package/build/components/global-styles/index.js +6 -0
  82. package/build/components/global-styles/index.js.map +1 -1
  83. package/build/components/global-styles/shadow-panel-components.js +80 -23
  84. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  85. package/build/components/global-styles/typography-utils.js +7 -5
  86. package/build/components/global-styles/typography-utils.js.map +1 -1
  87. package/build/components/global-styles/use-global-styles-output.js +16 -16
  88. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  89. package/build/components/global-styles/utils.js +2 -4
  90. package/build/components/global-styles/utils.js.map +1 -1
  91. package/build/components/grid-visualizer/grid-item-resizer.js +77 -0
  92. package/build/components/grid-visualizer/grid-item-resizer.js.map +1 -0
  93. package/build/components/grid-visualizer/grid-visualizer.js +81 -0
  94. package/build/components/grid-visualizer/grid-visualizer.js.map +1 -0
  95. package/build/components/grid-visualizer/index.js +20 -0
  96. package/build/components/grid-visualizer/index.js.map +1 -0
  97. package/build/components/grid-visualizer/utils.js +10 -0
  98. package/build/components/grid-visualizer/utils.js.map +1 -0
  99. package/build/components/iframe/index.js +66 -17
  100. package/build/components/iframe/index.js.map +1 -1
  101. package/build/components/index.native.js +7 -0
  102. package/build/components/index.native.js.map +1 -1
  103. package/build/components/inner-blocks/use-nested-settings-update.js +8 -2
  104. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  105. package/build/components/inserter/block-patterns-explorer/index.js +3 -6
  106. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
  107. package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  108. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  110. package/build/components/inserter/menu.native.js.map +1 -1
  111. package/build/components/inserter/mobile-tab-navigation.js +2 -2
  112. package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
  113. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  114. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
  115. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  116. package/build/components/inspector-controls-tabs/index.js +1 -1
  117. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  118. package/build/components/inspector-controls-tabs/styles-tab.js +1 -1
  119. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  120. package/build/components/link-control/link-preview.js +4 -1
  121. package/build/components/link-control/link-preview.js.map +1 -1
  122. package/build/components/link-control/search-input.js.map +1 -1
  123. package/build/components/list-view/block-select-button.js +0 -2
  124. package/build/components/list-view/block-select-button.js.map +1 -1
  125. package/build/components/list-view/block.js +4 -11
  126. package/build/components/list-view/block.js.map +1 -1
  127. package/build/components/list-view/branch.js.map +1 -1
  128. package/build/components/list-view/drop-indicator.js.map +1 -1
  129. package/build/components/list-view/index.js.map +1 -1
  130. package/build/components/list-view/use-clipboard-handler.js +2 -1
  131. package/build/components/list-view/use-clipboard-handler.js.map +1 -1
  132. package/build/components/list-view/utils.js +5 -3
  133. package/build/components/list-view/utils.js.map +1 -1
  134. package/build/components/panel-color-settings/index.js.map +1 -1
  135. package/build/components/provider/index.js.map +1 -1
  136. package/build/components/resizable-box-popover/index.js +3 -5
  137. package/build/components/resizable-box-popover/index.js.map +1 -1
  138. package/build/components/responsive-block-control/index.js +1 -1
  139. package/build/components/responsive-block-control/index.js.map +1 -1
  140. package/build/components/rich-text/index.js +46 -26
  141. package/build/components/rich-text/index.js.map +1 -1
  142. package/build/components/rich-text/use-enter.js +3 -0
  143. package/build/components/rich-text/use-enter.js.map +1 -1
  144. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  145. package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  146. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  147. package/build/components/url-popover/index.js +3 -3
  148. package/build/components/url-popover/index.js.map +1 -1
  149. package/build/components/use-moving-animation/index.js +4 -0
  150. package/build/components/use-moving-animation/index.js.map +1 -1
  151. package/build/components/warning/index.native.js +9 -4
  152. package/build/components/warning/index.native.js.map +1 -1
  153. package/build/components/writing-flow/use-clipboard-handler.js +2 -1
  154. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  155. package/build/components/writing-flow/utils.js +23 -6
  156. package/build/components/writing-flow/utils.js.map +1 -1
  157. package/build/hooks/anchor.js +7 -8
  158. package/build/hooks/anchor.js.map +1 -1
  159. package/build/hooks/background.js +39 -2
  160. package/build/hooks/background.js.map +1 -1
  161. package/build/hooks/block-hooks.js +34 -8
  162. package/build/hooks/block-hooks.js.map +1 -1
  163. package/build/hooks/border.js +6 -4
  164. package/build/hooks/border.js.map +1 -1
  165. package/build/hooks/dimensions.js +3 -4
  166. package/build/hooks/dimensions.js.map +1 -1
  167. package/build/hooks/font-size.js +6 -7
  168. package/build/hooks/font-size.js.map +1 -1
  169. package/build/hooks/index.js +3 -2
  170. package/build/hooks/index.js.map +1 -1
  171. package/build/hooks/layout-child.js +67 -6
  172. package/build/hooks/layout-child.js.map +1 -1
  173. package/build/hooks/layout.js +32 -14
  174. package/build/hooks/layout.js.map +1 -1
  175. package/build/hooks/line-height.js.map +1 -1
  176. package/build/hooks/position.js +1 -1
  177. package/build/hooks/position.js.map +1 -1
  178. package/build/hooks/spacing-visualizer.js +115 -0
  179. package/build/hooks/spacing-visualizer.js.map +1 -0
  180. package/build/hooks/use-bindings-attributes.js +171 -48
  181. package/build/hooks/use-bindings-attributes.js.map +1 -1
  182. package/build/hooks/use-typography-props.js +1 -2
  183. package/build/hooks/use-typography-props.js.map +1 -1
  184. package/build/layouts/grid.js +6 -2
  185. package/build/layouts/grid.js.map +1 -1
  186. package/build/private-apis.js +7 -3
  187. package/build/private-apis.js.map +1 -1
  188. package/build/private-apis.native.js +3 -1
  189. package/build/private-apis.native.js.map +1 -1
  190. package/build/store/actions.js +42 -12
  191. package/build/store/actions.js.map +1 -1
  192. package/build/store/private-actions.js +29 -55
  193. package/build/store/private-actions.js.map +1 -1
  194. package/build/store/private-selectors.js +0 -8
  195. package/build/store/private-selectors.js.map +1 -1
  196. package/build/store/reducer.js +34 -46
  197. package/build/store/reducer.js.map +1 -1
  198. package/build/store/selectors.js +27 -15
  199. package/build/store/selectors.js.map +1 -1
  200. package/build-module/components/block-actions/index.js +47 -36
  201. package/build-module/components/block-actions/index.js.map +1 -1
  202. package/build-module/components/block-bindings-toolbar-indicator/index.js +18 -0
  203. package/build-module/components/block-bindings-toolbar-indicator/index.js.map +1 -0
  204. package/build-module/components/block-edit/context.js +1 -0
  205. package/build-module/components/block-edit/context.js.map +1 -1
  206. package/build-module/components/block-edit/index.js +9 -4
  207. package/build-module/components/block-edit/index.js.map +1 -1
  208. package/build-module/components/block-heading-level-dropdown/index.js +5 -5
  209. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  210. package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
  211. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
  212. package/build-module/components/block-inspector/index.js +6 -5
  213. package/build-module/components/block-inspector/index.js.map +1 -1
  214. package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
  215. package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
  216. package/build-module/components/block-list/block-crash-warning.native.js +15 -0
  217. package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
  218. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  219. package/build-module/components/block-list/block-list-item.native.js +1 -1
  220. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  221. package/build-module/components/block-list/block-outline.native.js +23 -7
  222. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  223. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  224. package/build-module/components/block-list/block.native.js +7 -5
  225. package/build-module/components/block-list/block.native.js.map +1 -1
  226. package/build-module/components/block-list/use-block-props/index.js +9 -2
  227. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  228. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
  229. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  230. package/build-module/components/block-mover/index.native.js.map +1 -1
  231. package/build-module/components/block-popover/cover.js +60 -0
  232. package/build-module/components/block-popover/cover.js.map +1 -0
  233. package/build-module/components/block-popover/drop-zone.js +2 -3
  234. package/build-module/components/block-popover/drop-zone.js.map +1 -1
  235. package/build-module/components/block-popover/index.js +1 -19
  236. package/build-module/components/block-popover/index.js.map +1 -1
  237. package/build-module/components/block-preview/index.js +2 -1
  238. package/build-module/components/block-preview/index.js.map +1 -1
  239. package/build-module/components/block-removal-warning-modal/index.js +3 -5
  240. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  241. package/build-module/components/block-rename/modal.js.map +1 -1
  242. package/build-module/components/block-settings/container.native.js +3 -2
  243. package/build-module/components/block-settings/container.native.js.map +1 -1
  244. package/build-module/components/block-settings-menu/block-settings-dropdown.js +42 -40
  245. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  246. package/build-module/components/block-settings-menu-controls/index.js +1 -3
  247. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  248. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  249. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  250. package/build-module/components/block-toolbar/index.js +24 -12
  251. package/build-module/components/block-toolbar/index.js.map +1 -1
  252. package/build-module/components/block-toolbar/shuffle.js +82 -0
  253. package/build-module/components/block-toolbar/shuffle.js.map +1 -0
  254. package/build-module/components/block-toolbar/use-has-block-toolbar.js +36 -0
  255. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -0
  256. package/build-module/components/block-tools/block-selection-button.js +5 -1
  257. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  258. package/build-module/components/block-tools/empty-block-inserter.js +2 -5
  259. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -1
  260. package/build-module/components/block-tools/index.js +9 -26
  261. package/build-module/components/block-tools/index.js.map +1 -1
  262. package/build-module/components/block-tools/use-show-block-tools.js +54 -0
  263. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -0
  264. package/build-module/components/caption/index.native.js.map +1 -1
  265. package/build-module/components/child-layout-control/index.js +109 -12
  266. package/build-module/components/child-layout-control/index.js.map +1 -1
  267. package/build-module/components/color-palette/control.js.map +1 -1
  268. package/build-module/components/colors-gradients/control.js +1 -1
  269. package/build-module/components/colors-gradients/control.js.map +1 -1
  270. package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
  271. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  272. package/build-module/components/global-styles/border-panel.js +22 -10
  273. package/build-module/components/global-styles/border-panel.js.map +1 -1
  274. package/build-module/components/global-styles/color-panel.js +1 -1
  275. package/build-module/components/global-styles/color-panel.js.map +1 -1
  276. package/build-module/components/global-styles/dimensions-panel.js +9 -34
  277. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  278. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  279. package/build-module/components/global-styles/index.js +1 -1
  280. package/build-module/components/global-styles/index.js.map +1 -1
  281. package/build-module/components/global-styles/shadow-panel-components.js +82 -24
  282. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  283. package/build-module/components/global-styles/typography-utils.js +7 -5
  284. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  285. package/build-module/components/global-styles/use-global-styles-output.js +17 -17
  286. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  287. package/build-module/components/global-styles/utils.js +2 -4
  288. package/build-module/components/global-styles/utils.js.map +1 -1
  289. package/build-module/components/grid-visualizer/grid-item-resizer.js +69 -0
  290. package/build-module/components/grid-visualizer/grid-item-resizer.js.map +1 -0
  291. package/build-module/components/grid-visualizer/grid-visualizer.js +73 -0
  292. package/build-module/components/grid-visualizer/grid-visualizer.js.map +1 -0
  293. package/build-module/components/grid-visualizer/index.js +3 -0
  294. package/build-module/components/grid-visualizer/index.js.map +1 -0
  295. package/build-module/components/grid-visualizer/utils.js +4 -0
  296. package/build-module/components/grid-visualizer/utils.js.map +1 -0
  297. package/build-module/components/iframe/index.js +66 -17
  298. package/build-module/components/iframe/index.js.map +1 -1
  299. package/build-module/components/index.native.js +1 -1
  300. package/build-module/components/index.native.js.map +1 -1
  301. package/build-module/components/inner-blocks/use-nested-settings-update.js +8 -2
  302. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  303. package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
  304. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
  305. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  306. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  307. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  308. package/build-module/components/inserter/menu.native.js.map +1 -1
  309. package/build-module/components/inserter/mobile-tab-navigation.js +2 -2
  310. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  311. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  312. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
  313. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  314. package/build-module/components/inspector-controls-tabs/index.js +1 -1
  315. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  316. package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -2
  317. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  318. package/build-module/components/link-control/link-preview.js +5 -2
  319. package/build-module/components/link-control/link-preview.js.map +1 -1
  320. package/build-module/components/link-control/search-input.js.map +1 -1
  321. package/build-module/components/list-view/block-select-button.js +0 -2
  322. package/build-module/components/list-view/block-select-button.js.map +1 -1
  323. package/build-module/components/list-view/block.js +6 -13
  324. package/build-module/components/list-view/block.js.map +1 -1
  325. package/build-module/components/list-view/branch.js.map +1 -1
  326. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  327. package/build-module/components/list-view/index.js.map +1 -1
  328. package/build-module/components/list-view/use-clipboard-handler.js +3 -2
  329. package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
  330. package/build-module/components/list-view/utils.js +2 -1
  331. package/build-module/components/list-view/utils.js.map +1 -1
  332. package/build-module/components/panel-color-settings/index.js.map +1 -1
  333. package/build-module/components/provider/index.js.map +1 -1
  334. package/build-module/components/resizable-box-popover/index.js +3 -5
  335. package/build-module/components/resizable-box-popover/index.js.map +1 -1
  336. package/build-module/components/responsive-block-control/index.js +1 -1
  337. package/build-module/components/responsive-block-control/index.js.map +1 -1
  338. package/build-module/components/rich-text/index.js +47 -28
  339. package/build-module/components/rich-text/index.js.map +1 -1
  340. package/build-module/components/rich-text/use-enter.js +3 -0
  341. package/build-module/components/rich-text/use-enter.js.map +1 -1
  342. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  343. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  344. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  345. package/build-module/components/url-popover/index.js +3 -3
  346. package/build-module/components/url-popover/index.js.map +1 -1
  347. package/build-module/components/use-moving-animation/index.js +4 -0
  348. package/build-module/components/use-moving-animation/index.js.map +1 -1
  349. package/build-module/components/warning/index.native.js +9 -4
  350. package/build-module/components/warning/index.native.js.map +1 -1
  351. package/build-module/components/writing-flow/use-clipboard-handler.js +3 -2
  352. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  353. package/build-module/components/writing-flow/utils.js +22 -7
  354. package/build-module/components/writing-flow/utils.js.map +1 -1
  355. package/build-module/hooks/anchor.js +8 -9
  356. package/build-module/hooks/anchor.js.map +1 -1
  357. package/build-module/hooks/background.js +38 -1
  358. package/build-module/hooks/background.js.map +1 -1
  359. package/build-module/hooks/block-hooks.js +34 -8
  360. package/build-module/hooks/block-hooks.js.map +1 -1
  361. package/build-module/hooks/border.js +7 -5
  362. package/build-module/hooks/border.js.map +1 -1
  363. package/build-module/hooks/dimensions.js +1 -2
  364. package/build-module/hooks/dimensions.js.map +1 -1
  365. package/build-module/hooks/font-size.js +7 -8
  366. package/build-module/hooks/font-size.js.map +1 -1
  367. package/build-module/hooks/index.js +3 -2
  368. package/build-module/hooks/index.js.map +1 -1
  369. package/build-module/hooks/layout-child.js +67 -6
  370. package/build-module/hooks/layout-child.js.map +1 -1
  371. package/build-module/hooks/layout.js +32 -14
  372. package/build-module/hooks/layout.js.map +1 -1
  373. package/build-module/hooks/line-height.js.map +1 -1
  374. package/build-module/hooks/position.js +1 -1
  375. package/build-module/hooks/position.js.map +1 -1
  376. package/build-module/hooks/spacing-visualizer.js +106 -0
  377. package/build-module/hooks/spacing-visualizer.js.map +1 -0
  378. package/build-module/hooks/use-bindings-attributes.js +172 -49
  379. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  380. package/build-module/hooks/use-typography-props.js +2 -3
  381. package/build-module/hooks/use-typography-props.js.map +1 -1
  382. package/build-module/layouts/grid.js +6 -2
  383. package/build-module/layouts/grid.js.map +1 -1
  384. package/build-module/private-apis.js +7 -3
  385. package/build-module/private-apis.js.map +1 -1
  386. package/build-module/private-apis.native.js +3 -1
  387. package/build-module/private-apis.native.js.map +1 -1
  388. package/build-module/store/actions.js +42 -12
  389. package/build-module/store/actions.js.map +1 -1
  390. package/build-module/store/private-actions.js +29 -54
  391. package/build-module/store/private-actions.js.map +1 -1
  392. package/build-module/store/private-selectors.js +0 -6
  393. package/build-module/store/private-selectors.js.map +1 -1
  394. package/build-module/store/reducer.js +34 -46
  395. package/build-module/store/reducer.js.map +1 -1
  396. package/build-module/store/selectors.js +23 -13
  397. package/build-module/store/selectors.js.map +1 -1
  398. package/build-style/content-rtl.css +22 -2
  399. package/build-style/content.css +22 -2
  400. package/build-style/default-editor-styles-rtl.css +1 -0
  401. package/build-style/default-editor-styles.css +1 -0
  402. package/build-style/style-rtl.css +106 -27
  403. package/build-style/style.css +106 -27
  404. package/package.json +31 -31
  405. package/src/components/block-actions/index.js +59 -55
  406. package/src/components/block-bindings-toolbar-indicator/index.js +20 -0
  407. package/src/components/block-bindings-toolbar-indicator/style.scss +16 -0
  408. package/src/components/block-draggable/test/index.native.js +2 -2
  409. package/src/components/block-edit/context.js +1 -0
  410. package/src/components/block-edit/index.js +5 -1
  411. package/src/components/block-heading-level-dropdown/README.md +5 -5
  412. package/src/components/block-heading-level-dropdown/index.js +5 -5
  413. package/src/components/block-heading-level-dropdown/index.native.js +5 -4
  414. package/src/components/block-inspector/index.js +7 -5
  415. package/src/components/block-list/block-crash-boundary.native.js +43 -0
  416. package/src/components/block-list/block-crash-warning.native.js +19 -0
  417. package/src/components/block-list/block-invalid-warning.native.js +1 -1
  418. package/src/components/block-list/block-list-item.native.js +1 -1
  419. package/src/components/block-list/block-outline.native.js +36 -21
  420. package/src/components/block-list/block-selection-button.native.js +1 -3
  421. package/src/components/block-list/block.native.js +14 -10
  422. package/src/components/block-list/content.scss +21 -1
  423. package/src/components/block-list/test/block-outline.native.js +255 -0
  424. package/src/components/block-list/use-block-props/index.js +12 -2
  425. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -7
  426. package/src/components/block-mover/index.native.js +1 -1
  427. package/src/components/block-popover/cover.js +63 -0
  428. package/src/components/block-popover/drop-zone.js +3 -4
  429. package/src/components/block-popover/index.js +1 -28
  430. package/src/components/block-preview/index.js +3 -1
  431. package/src/components/block-removal-warning-modal/index.js +5 -19
  432. package/src/components/block-rename/modal.js +1 -1
  433. package/src/components/block-settings/container.native.js +5 -1
  434. package/src/components/block-settings-menu/block-settings-dropdown.js +53 -65
  435. package/src/components/block-settings-menu-controls/README.md +0 -9
  436. package/src/components/block-settings-menu-controls/index.js +1 -6
  437. package/src/components/block-switcher/block-transformations-menu.native.js +1 -1
  438. package/src/components/block-toolbar/block-toolbar-menu.native.js +2 -2
  439. package/src/components/block-toolbar/index.js +22 -16
  440. package/src/components/block-toolbar/shuffle.js +93 -0
  441. package/src/components/block-toolbar/test/index.native.js +1 -7
  442. package/src/components/block-toolbar/use-has-block-toolbar.js +49 -0
  443. package/src/components/block-tools/block-selection-button.js +4 -0
  444. package/src/components/block-tools/empty-block-inserter.js +3 -6
  445. package/src/components/block-tools/index.js +13 -36
  446. package/src/components/block-tools/use-show-block-tools.js +73 -0
  447. package/src/components/caption/index.native.js +1 -1
  448. package/src/components/child-layout-control/index.js +148 -36
  449. package/src/components/color-palette/control.js +1 -1
  450. package/src/components/colors-gradients/control.js +1 -1
  451. package/src/components/colors-gradients/test/control.js +2 -2
  452. package/src/components/contrast-checker/test/index.js +10 -10
  453. package/src/components/convert-to-group-buttons/toolbar.js +13 -1
  454. package/src/components/default-block-appender/content.scss +5 -2
  455. package/src/components/global-styles/border-panel.js +35 -24
  456. package/src/components/global-styles/color-panel.js +1 -1
  457. package/src/components/global-styles/dimensions-panel.js +9 -34
  458. package/src/components/global-styles/image-settings-panel.js +1 -1
  459. package/src/components/global-styles/index.js +5 -1
  460. package/src/components/global-styles/shadow-panel-components.js +92 -23
  461. package/src/components/global-styles/style.scss +33 -10
  462. package/src/components/global-styles/test/typography-utils.js +231 -81
  463. package/src/components/global-styles/test/use-global-styles-output.js +31 -0
  464. package/src/components/global-styles/typography-utils.js +10 -7
  465. package/src/components/global-styles/use-global-styles-output.js +17 -17
  466. package/src/components/global-styles/utils.js +2 -26
  467. package/src/components/grid-visualizer/grid-item-resizer.js +100 -0
  468. package/src/components/grid-visualizer/grid-visualizer.js +81 -0
  469. package/src/components/grid-visualizer/index.js +2 -0
  470. package/src/components/grid-visualizer/style.scss +33 -0
  471. package/src/components/grid-visualizer/utils.js +5 -0
  472. package/src/components/iframe/index.js +89 -26
  473. package/src/components/index.native.js +1 -0
  474. package/src/components/inner-blocks/use-nested-settings-update.js +12 -2
  475. package/src/components/inserter/block-patterns-explorer/index.js +2 -9
  476. package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
  477. package/src/components/inserter/media-tab/media-preview.js +1 -1
  478. package/src/components/inserter/menu.native.js +3 -3
  479. package/src/components/inserter/mobile-tab-navigation.js +2 -2
  480. package/src/components/inserter/style.scss +10 -0
  481. package/src/components/inspector-controls/block-support-tools-panel.js +2 -2
  482. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
  483. package/src/components/inspector-controls-tabs/index.js +1 -1
  484. package/src/components/inspector-controls-tabs/styles-tab.js +2 -2
  485. package/src/components/line-height-control/test/index.js +1 -1
  486. package/src/components/link-control/link-preview.js +9 -2
  487. package/src/components/link-control/search-input.js +1 -1
  488. package/src/components/link-control/style.scss +9 -5
  489. package/src/components/list-view/block-select-button.js +0 -2
  490. package/src/components/list-view/block.js +12 -21
  491. package/src/components/list-view/branch.js +1 -1
  492. package/src/components/list-view/drop-indicator.js +1 -1
  493. package/src/components/list-view/index.js +1 -1
  494. package/src/components/list-view/style.scss +34 -16
  495. package/src/components/list-view/use-clipboard-handler.js +3 -2
  496. package/src/components/list-view/utils.js +4 -1
  497. package/src/components/panel-color-settings/index.js +1 -1
  498. package/src/components/panel-color-settings/test/index.js +3 -3
  499. package/src/components/provider/index.js +1 -4
  500. package/src/components/resizable-box-popover/index.js +4 -6
  501. package/src/components/responsive-block-control/README.md +4 -4
  502. package/src/components/responsive-block-control/index.js +1 -1
  503. package/src/components/responsive-block-control/test/index.js +5 -5
  504. package/src/components/rich-text/README.md +6 -0
  505. package/src/components/rich-text/index.js +76 -53
  506. package/src/components/rich-text/use-enter.js +4 -0
  507. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  508. package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  509. package/src/components/url-popover/index.js +5 -5
  510. package/src/components/url-popover/style.scss +1 -0
  511. package/src/components/use-moving-animation/index.js +1 -0
  512. package/src/components/warning/index.native.js +19 -15
  513. package/src/components/writing-flow/use-clipboard-handler.js +3 -2
  514. package/src/components/writing-flow/utils.js +31 -16
  515. package/src/hooks/anchor.js +41 -61
  516. package/src/hooks/background.js +49 -4
  517. package/src/hooks/block-hooks.js +47 -9
  518. package/src/hooks/block-hooks.scss +6 -0
  519. package/src/hooks/border.js +16 -4
  520. package/src/hooks/dimensions.js +1 -2
  521. package/src/hooks/font-size.js +7 -12
  522. package/src/hooks/index.js +3 -0
  523. package/src/hooks/layout-child.js +82 -8
  524. package/src/hooks/layout.js +34 -19
  525. package/src/hooks/line-height.js +1 -1
  526. package/src/hooks/position.js +1 -1
  527. package/src/hooks/spacing-visualizer.js +126 -0
  528. package/src/hooks/{padding.scss → spacing.scss} +1 -1
  529. package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
  530. package/src/hooks/test/anchor.native.js +32 -0
  531. package/src/hooks/use-bindings-attributes.js +215 -65
  532. package/src/hooks/use-typography-props.js +2 -8
  533. package/src/layouts/grid.js +8 -3
  534. package/src/private-apis.js +6 -2
  535. package/src/private-apis.native.js +2 -0
  536. package/src/store/actions.js +56 -18
  537. package/src/store/private-actions.js +34 -79
  538. package/src/store/private-selectors.js +0 -8
  539. package/src/store/reducer.js +43 -64
  540. package/src/store/selectors.js +41 -46
  541. package/src/store/test/actions.js +0 -4
  542. package/src/style.scss +3 -1
  543. package/tsconfig.json +1 -0
  544. package/build/hooks/margin.js +0 -86
  545. package/build/hooks/margin.js.map +0 -1
  546. package/build/hooks/padding.js +0 -78
  547. package/build/hooks/padding.js.map +0 -1
  548. package/build/utils/use-can-block-toolbar-be-focused.js +0 -46
  549. package/build/utils/use-can-block-toolbar-be-focused.js.map +0 -1
  550. package/build-module/hooks/margin.js +0 -78
  551. package/build-module/hooks/margin.js.map +0 -1
  552. package/build-module/hooks/padding.js +0 -70
  553. package/build-module/hooks/padding.js.map +0 -1
  554. package/build-module/utils/use-can-block-toolbar-be-focused.js +0 -40
  555. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +0 -1
  556. package/src/hooks/margin.js +0 -91
  557. package/src/hooks/padding.js +0 -82
  558. package/src/utils/use-can-block-toolbar-be-focused.js +0 -48
@@ -924,10 +924,8 @@ export const __unstableExpandSelection =
924
924
  export const mergeBlocks =
925
925
  ( firstBlockClientId, secondBlockClientId ) =>
926
926
  ( { registry, select, dispatch } ) => {
927
- const blocks = [ firstBlockClientId, secondBlockClientId ];
928
- dispatch( { type: 'MERGE_BLOCKS', blocks } );
929
-
930
- const [ clientIdA, clientIdB ] = blocks;
927
+ const clientIdA = firstBlockClientId;
928
+ const clientIdB = secondBlockClientId;
931
929
  const blockA = select.getBlock( clientIdA );
932
930
  const blockAType = getBlockType( blockA.name );
933
931
 
@@ -1539,7 +1537,7 @@ export const duplicateBlocks =
1539
1537
  };
1540
1538
 
1541
1539
  /**
1542
- * Action that inserts an empty block before a given block.
1540
+ * Action that inserts a default block before a given block.
1543
1541
  *
1544
1542
  * @param {string} clientId
1545
1543
  */
@@ -1555,16 +1553,34 @@ export const insertBeforeBlock =
1555
1553
  return;
1556
1554
  }
1557
1555
 
1558
- const firstSelectedIndex = select.getBlockIndex( clientId );
1559
- return dispatch.insertDefaultBlock(
1560
- {},
1561
- rootClientId,
1562
- firstSelectedIndex
1563
- );
1556
+ const blockIndex = select.getBlockIndex( clientId );
1557
+ const directInsertBlock = rootClientId
1558
+ ? select.getDirectInsertBlock( rootClientId )
1559
+ : null;
1560
+
1561
+ if ( ! directInsertBlock ) {
1562
+ return dispatch.insertDefaultBlock( {}, rootClientId, blockIndex );
1563
+ }
1564
+
1565
+ const copiedAttributes = {};
1566
+ if ( directInsertBlock.attributesToCopy ) {
1567
+ const attributes = select.getBlockAttributes( clientId );
1568
+ directInsertBlock.attributesToCopy.forEach( ( key ) => {
1569
+ if ( attributes[ key ] ) {
1570
+ copiedAttributes[ key ] = attributes[ key ];
1571
+ }
1572
+ } );
1573
+ }
1574
+
1575
+ const block = createBlock( directInsertBlock.name, {
1576
+ ...directInsertBlock.attributes,
1577
+ ...copiedAttributes,
1578
+ } );
1579
+ return dispatch.insertBlock( block, blockIndex, rootClientId );
1564
1580
  };
1565
1581
 
1566
1582
  /**
1567
- * Action that inserts an empty block after a given block.
1583
+ * Action that inserts a default block after a given block.
1568
1584
  *
1569
1585
  * @param {string} clientId
1570
1586
  */
@@ -1580,12 +1596,34 @@ export const insertAfterBlock =
1580
1596
  return;
1581
1597
  }
1582
1598
 
1583
- const firstSelectedIndex = select.getBlockIndex( clientId );
1584
- return dispatch.insertDefaultBlock(
1585
- {},
1586
- rootClientId,
1587
- firstSelectedIndex + 1
1588
- );
1599
+ const blockIndex = select.getBlockIndex( clientId );
1600
+ const directInsertBlock = rootClientId
1601
+ ? select.getDirectInsertBlock( rootClientId )
1602
+ : null;
1603
+
1604
+ if ( ! directInsertBlock ) {
1605
+ return dispatch.insertDefaultBlock(
1606
+ {},
1607
+ rootClientId,
1608
+ blockIndex + 1
1609
+ );
1610
+ }
1611
+
1612
+ const copiedAttributes = {};
1613
+ if ( directInsertBlock.attributesToCopy ) {
1614
+ const attributes = select.getBlockAttributes( clientId );
1615
+ directInsertBlock.attributesToCopy.forEach( ( key ) => {
1616
+ if ( attributes[ key ] ) {
1617
+ copiedAttributes[ key ] = attributes[ key ];
1618
+ }
1619
+ } );
1620
+ }
1621
+
1622
+ const block = createBlock( directInsertBlock.name, {
1623
+ ...directInsertBlock.attributes,
1624
+ ...copiedAttributes,
1625
+ } );
1626
+ return dispatch.insertBlock( block, blockIndex + 1, rootClientId );
1589
1627
  };
1590
1628
 
1591
1629
  /**
@@ -123,61 +123,36 @@ export const privateRemoveBlocks =
123
123
  //
124
124
  // @see https://github.com/WordPress/gutenberg/pull/51145
125
125
  const rules = ! forceRemove && select.getBlockRemovalRules();
126
- if ( rules ) {
127
- const blockNamesForPrompt = new Set();
128
-
129
- // Given a list of client IDs of blocks that the user intended to
130
- // remove, perform a tree search (BFS) to find all block names
131
- // corresponding to "important" blocks, i.e. blocks that require a
132
- // removal prompt.
133
- const queue = [ ...clientIds ];
134
- let messageType = 'templates';
135
- while ( queue.length ) {
136
- const clientId = queue.shift();
137
- const blockName = select.getBlockName( clientId );
138
- if ( rules[ blockName ] ) {
139
- blockNamesForPrompt.add( blockName );
140
- }
141
126
 
142
- if ( rules[ 'bindings/core/pattern-overrides' ] ) {
143
- const parentPatternBlocks =
144
- select.getBlockParentsByBlockName(
145
- clientId,
146
- 'core/block'
147
- );
148
- // We only need to run this check when editing the original pattern, not pattern instances.
149
- if ( parentPatternBlocks?.length > 0 ) {
150
- continue;
151
- }
152
- const blockAttributes =
153
- select.getBlockAttributes( clientId );
154
- if (
155
- blockAttributes?.metadata?.bindings &&
156
- JSON.stringify(
157
- blockAttributes.metadata.bindings
158
- ).includes( 'core/pattern-overrides' )
159
- ) {
160
- blockNamesForPrompt.add( blockName );
161
- messageType = 'patternOverrides';
162
- }
127
+ if ( rules ) {
128
+ function flattenBlocks( blocks ) {
129
+ const result = [];
130
+ const stack = [ ...blocks ];
131
+ while ( stack.length ) {
132
+ const { innerBlocks, ...block } = stack.shift();
133
+ stack.push( ...innerBlocks );
134
+ result.push( block );
163
135
  }
164
-
165
- const innerBlocks = select.getBlockOrder( clientId );
166
- queue.push( ...innerBlocks );
136
+ return result;
167
137
  }
168
138
 
169
- // If any such blocks were found, trigger the removal prompt and
170
- // skip any other steps (thus postponing actual removal).
171
- if ( blockNamesForPrompt.size ) {
172
- dispatch(
173
- displayBlockRemovalPrompt(
174
- clientIds,
175
- selectPrevious,
176
- Array.from( blockNamesForPrompt ),
177
- messageType
178
- )
179
- );
180
- return;
139
+ const blockList = clientIds.map( select.getBlock );
140
+ const flattenedBlocks = flattenBlocks( blockList );
141
+
142
+ // Find the first message and use it.
143
+ let message;
144
+ for ( const rule of rules ) {
145
+ message = rule.callback( flattenedBlocks );
146
+ if ( message ) {
147
+ dispatch(
148
+ displayBlockRemovalPrompt(
149
+ clientIds,
150
+ selectPrevious,
151
+ message
152
+ )
153
+ );
154
+ return;
155
+ }
181
156
  }
182
157
  }
183
158
 
@@ -228,31 +203,21 @@ export const ensureDefaultBlock =
228
203
  *
229
204
  * Contrast with `setBlockRemovalRules`.
230
205
  *
231
- * @param {string|string[]} clientIds Client IDs of blocks to remove.
232
- * @param {boolean} selectPrevious True if the previous block
233
- * or the immediate parent
234
- * (if no previous block exists)
235
- * should be selected
236
- * when a block is removed.
237
- * @param {string[]} blockNamesForPrompt Names of the blocks that
238
- * triggered the need for
239
- * confirmation before removal.
240
- * @param {string} messageType The type of message to display.
206
+ * @param {string|string[]} clientIds Client IDs of blocks to remove.
207
+ * @param {boolean} selectPrevious True if the previous block or the
208
+ * immediate parent (if no previous
209
+ * block exists) should be selected
210
+ * when a block is removed.
211
+ * @param {string} message Message to display in the prompt.
241
212
  *
242
213
  * @return {Object} Action object.
243
214
  */
244
- function displayBlockRemovalPrompt(
245
- clientIds,
246
- selectPrevious,
247
- blockNamesForPrompt,
248
- messageType
249
- ) {
215
+ function displayBlockRemovalPrompt( clientIds, selectPrevious, message ) {
250
216
  return {
251
217
  type: 'DISPLAY_BLOCK_REMOVAL_PROMPT',
252
218
  clientIds,
253
219
  selectPrevious,
254
- blockNamesForPrompt,
255
- messageType,
220
+ message,
256
221
  };
257
222
  }
258
223
 
@@ -390,16 +355,6 @@ export function stopEditingAsBlocks( clientId ) {
390
355
  };
391
356
  }
392
357
 
393
- export function registerBlockBindingsSource( source ) {
394
- return {
395
- type: 'REGISTER_BLOCK_BINDINGS_SOURCE',
396
- sourceName: source.name,
397
- sourceLabel: source.label,
398
- useSource: source.useSource,
399
- lockAttributesEditing: source.lockAttributesEditing,
400
- };
401
- }
402
-
403
358
  /**
404
359
  * Returns an action object used in signalling that the user has begun to drag.
405
360
  *
@@ -341,14 +341,6 @@ export function getLastFocus( state ) {
341
341
  return state.lastFocus;
342
342
  }
343
343
 
344
- export function getAllBlockBindingsSources( state ) {
345
- return state.blockBindingsSources;
346
- }
347
-
348
- export function getBlockBindingsSource( state, sourceName ) {
349
- return state.blockBindingsSources[ sourceName ];
350
- }
351
-
352
344
  /**
353
345
  * Returns true if the user is dragging anything, or false otherwise. It is possible for a
354
346
  * user to be dragging data from outside of the editor, so this selector is separate from
@@ -329,16 +329,13 @@ const withBlockTree =
329
329
  // If there are no replaced blocks, it means we're removing blocks so we need to update their parent.
330
330
  const parentsOfRemovedBlocks = [];
331
331
  for ( const clientId of action.clientIds ) {
332
+ const parentId = state.parents.get( clientId );
332
333
  if (
333
- state.parents.get( clientId ) !== undefined &&
334
- ( state.parents.get( clientId ) === '' ||
335
- newState.byClientId.get(
336
- state.parents.get( clientId )
337
- ) )
334
+ parentId !== undefined &&
335
+ ( parentId === '' ||
336
+ newState.byClientId.get( parentId ) )
338
337
  ) {
339
- parentsOfRemovedBlocks.push(
340
- state.parents.get( clientId )
341
- );
338
+ parentsOfRemovedBlocks.push( parentId );
342
339
  }
343
340
  }
344
341
  updateParentInnerBlocksInTree(
@@ -351,16 +348,13 @@ const withBlockTree =
351
348
  case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
352
349
  const parentsOfRemovedBlocks = [];
353
350
  for ( const clientId of action.clientIds ) {
351
+ const parentId = state.parents.get( clientId );
354
352
  if (
355
- state.parents.get( clientId ) !== undefined &&
356
- ( state.parents.get( clientId ) === '' ||
357
- newState.byClientId.get(
358
- state.parents.get( clientId )
359
- ) )
353
+ parentId !== undefined &&
354
+ ( parentId === '' ||
355
+ newState.byClientId.get( parentId ) )
360
356
  ) {
361
- parentsOfRemovedBlocks.push(
362
- state.parents.get( clientId )
363
- );
357
+ parentsOfRemovedBlocks.push( parentId );
364
358
  }
365
359
  }
366
360
  newState.tree = new Map( newState.tree );
@@ -1521,17 +1515,11 @@ export function isSelectionEnabled( state = true, action ) {
1521
1515
  function removalPromptData( state = false, action ) {
1522
1516
  switch ( action.type ) {
1523
1517
  case 'DISPLAY_BLOCK_REMOVAL_PROMPT':
1524
- const {
1525
- clientIds,
1526
- selectPrevious,
1527
- blockNamesForPrompt,
1528
- messageType,
1529
- } = action;
1518
+ const { clientIds, selectPrevious, message } = action;
1530
1519
  return {
1531
1520
  clientIds,
1532
1521
  selectPrevious,
1533
- blockNamesForPrompt,
1534
- messageType,
1522
+ message,
1535
1523
  };
1536
1524
  case 'CLEAR_BLOCK_REMOVAL_PROMPT':
1537
1525
  return false;
@@ -1709,36 +1697,42 @@ export function settings( state = SETTINGS_DEFAULTS, action ) {
1709
1697
  export function preferences( state = PREFERENCES_DEFAULTS, action ) {
1710
1698
  switch ( action.type ) {
1711
1699
  case 'INSERT_BLOCKS':
1712
- case 'REPLACE_BLOCKS':
1713
- return action.blocks.reduce( ( prevState, block ) => {
1714
- const { attributes, name: blockName } = block;
1715
- let id = blockName;
1716
- // If a block variation match is found change the name to be the same with the
1717
- // one that is used for block variations in the Inserter (`getItemFromVariation`).
1718
- const match = select( blocksStore ).getActiveBlockVariation(
1719
- blockName,
1720
- attributes
1721
- );
1722
- if ( match?.name ) {
1723
- id += '/' + match.name;
1724
- }
1725
- if ( blockName === 'core/block' ) {
1726
- id += '/' + attributes.ref;
1727
- }
1700
+ case 'REPLACE_BLOCKS': {
1701
+ const nextInsertUsage = action.blocks.reduce(
1702
+ ( prevUsage, block ) => {
1703
+ const { attributes, name: blockName } = block;
1704
+ let id = blockName;
1705
+ // If a block variation match is found change the name to be the same with the
1706
+ // one that is used for block variations in the Inserter (`getItemFromVariation`).
1707
+ const match = select( blocksStore ).getActiveBlockVariation(
1708
+ blockName,
1709
+ attributes
1710
+ );
1711
+ if ( match?.name ) {
1712
+ id += '/' + match.name;
1713
+ }
1714
+ if ( blockName === 'core/block' ) {
1715
+ id += '/' + attributes.ref;
1716
+ }
1728
1717
 
1729
- return {
1730
- ...prevState,
1731
- insertUsage: {
1732
- ...prevState.insertUsage,
1718
+ return {
1719
+ ...prevUsage,
1733
1720
  [ id ]: {
1734
1721
  time: action.time,
1735
- count: prevState.insertUsage[ id ]
1736
- ? prevState.insertUsage[ id ].count + 1
1722
+ count: prevUsage[ id ]
1723
+ ? prevUsage[ id ].count + 1
1737
1724
  : 1,
1738
1725
  },
1739
- },
1740
- };
1741
- }, state );
1726
+ };
1727
+ },
1728
+ state.insertUsage
1729
+ );
1730
+
1731
+ return {
1732
+ ...state,
1733
+ insertUsage: nextInsertUsage,
1734
+ };
1735
+ }
1742
1736
  }
1743
1737
 
1744
1738
  return state;
@@ -2050,20 +2044,6 @@ export function lastFocus( state = false, action ) {
2050
2044
  return state;
2051
2045
  }
2052
2046
 
2053
- function blockBindingsSources( state = {}, action ) {
2054
- if ( action.type === 'REGISTER_BLOCK_BINDINGS_SOURCE' ) {
2055
- return {
2056
- ...state,
2057
- [ action.sourceName ]: {
2058
- label: action.sourceLabel,
2059
- useSource: action.useSource,
2060
- lockAttributesEditing: action.lockAttributesEditing ?? true,
2061
- },
2062
- };
2063
- }
2064
- return state;
2065
- }
2066
-
2067
2047
  const combinedReducers = combineReducers( {
2068
2048
  blocks,
2069
2049
  isDragging,
@@ -2095,7 +2075,6 @@ const combinedReducers = combineReducers( {
2095
2075
  blockRemovalRules,
2096
2076
  openedBlockSettingsMenu,
2097
2077
  registeredInserterMediaCategories,
2098
- blockBindingsSources,
2099
2078
  } );
2100
2079
 
2101
2080
  function withAutomaticChangeReset( reducer ) {
@@ -2231,56 +2231,41 @@ export const __experimentalGetAllowedBlocks = createSelector(
2231
2231
  * @param {Object} state Editor state.
2232
2232
  * @param {?string} rootClientId Optional root client ID of block list.
2233
2233
  *
2234
- * @return {?WPDirectInsertBlock} The block type to be directly inserted.
2234
+ * @return {WPDirectInsertBlock|undefined} The block type to be directly inserted.
2235
2235
  *
2236
2236
  * @typedef {Object} WPDirectInsertBlock
2237
2237
  * @property {string} name The type of block.
2238
2238
  * @property {?Object} attributes Attributes to pass to the newly created block.
2239
2239
  * @property {?Array<string>} attributesToCopy Attributes to be copied from adjecent blocks when inserted.
2240
2240
  */
2241
- export const getDirectInsertBlock = createSelector(
2242
- ( state, rootClientId = null ) => {
2243
- if ( ! rootClientId ) {
2244
- return;
2245
- }
2246
- const defaultBlock =
2247
- state.blockListSettings[ rootClientId ]?.defaultBlock;
2248
- const directInsert =
2249
- state.blockListSettings[ rootClientId ]?.directInsert;
2250
- if ( ! defaultBlock || ! directInsert ) {
2251
- return;
2252
- }
2253
- if ( typeof directInsert === 'function' ) {
2254
- return directInsert( getBlock( state, rootClientId ) )
2255
- ? defaultBlock
2256
- : null;
2257
- }
2258
- return defaultBlock;
2259
- },
2260
- ( state, rootClientId ) => [
2261
- state.blockListSettings[ rootClientId ],
2262
- state.blocks.tree.get( rootClientId ),
2263
- ]
2264
- );
2241
+ export function getDirectInsertBlock( state, rootClientId = null ) {
2242
+ if ( ! rootClientId ) {
2243
+ return;
2244
+ }
2245
+ const { defaultBlock, directInsert } =
2246
+ state.blockListSettings[ rootClientId ] ?? {};
2247
+ if ( ! defaultBlock || ! directInsert ) {
2248
+ return;
2249
+ }
2265
2250
 
2266
- export const __experimentalGetDirectInsertBlock = createSelector(
2267
- ( state, rootClientId = null ) => {
2268
- deprecated(
2269
- 'wp.data.select( "core/block-editor" ).__experimentalGetDirectInsertBlock',
2270
- {
2271
- alternative:
2272
- 'wp.data.select( "core/block-editor" ).getDirectInsertBlock',
2273
- since: '6.3',
2274
- version: '6.4',
2275
- }
2276
- );
2277
- return getDirectInsertBlock( state, rootClientId );
2278
- },
2279
- ( state, rootClientId ) => [
2280
- state.blockListSettings[ rootClientId ],
2281
- state.blocks.tree.get( rootClientId ),
2282
- ]
2283
- );
2251
+ return defaultBlock;
2252
+ }
2253
+
2254
+ export function __experimentalGetDirectInsertBlock(
2255
+ state,
2256
+ rootClientId = null
2257
+ ) {
2258
+ deprecated(
2259
+ 'wp.data.select( "core/block-editor" ).__experimentalGetDirectInsertBlock',
2260
+ {
2261
+ alternative:
2262
+ 'wp.data.select( "core/block-editor" ).getDirectInsertBlock',
2263
+ since: '6.3',
2264
+ version: '6.4',
2265
+ }
2266
+ );
2267
+ return getDirectInsertBlock( state, rootClientId );
2268
+ }
2284
2269
 
2285
2270
  export const __experimentalGetParsedPattern = createRegistrySelector(
2286
2271
  ( select ) =>
@@ -2293,11 +2278,21 @@ export const __experimentalGetParsedPattern = createRegistrySelector(
2293
2278
  if ( ! pattern ) {
2294
2279
  return null;
2295
2280
  }
2281
+ const blocks = parse( pattern.content, {
2282
+ __unstableSkipMigrationLogs: true,
2283
+ } );
2284
+ if ( blocks.length === 1 ) {
2285
+ blocks[ 0 ].attributes = {
2286
+ ...blocks[ 0 ].attributes,
2287
+ metadata: {
2288
+ ...( blocks[ 0 ].attributes.metadata || {} ),
2289
+ categories: pattern.categories,
2290
+ },
2291
+ };
2292
+ }
2296
2293
  return {
2297
2294
  ...pattern,
2298
- blocks: parse( pattern.content, {
2299
- __unstableSkipMigrationLogs: true,
2300
- } ),
2295
+ blocks,
2301
2296
  };
2302
2297
  }, getAllPatternsDependants( select ) )
2303
2298
  );
@@ -832,10 +832,6 @@ describe( 'actions', () => {
832
832
  blockB.clientId
833
833
  )( { select, dispatch } );
834
834
 
835
- expect( dispatch ).toHaveBeenCalledWith( {
836
- type: 'MERGE_BLOCKS',
837
- blocks: [ blockA.clientId, blockB.clientId ],
838
- } );
839
835
  expect( dispatch.selectBlock ).toHaveBeenCalledWith( 'chicken' );
840
836
  } );
841
837
 
package/src/style.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  @import "./autocompleters/style.scss";
2
2
  @import "./components/block-alignment-control/style.scss";
3
+ @import "./components/block-bindings-toolbar-indicator/style.scss";
3
4
  @import "./components/block-canvas/style.scss";
4
5
  @import "./components/block-icon/style.scss";
5
6
  @import "./components/block-inspector/style.scss";
@@ -27,6 +28,7 @@
27
28
  @import "./components/duotone-control/style.scss";
28
29
  @import "./components/font-appearance-control/style.scss";
29
30
  @import "./components/global-styles/style.scss";
31
+ @import "./components/grid-visualizer/style.scss";
30
32
  @import "./components/height-control/style.scss";
31
33
  @import "./components/image-size-control/style.scss";
32
34
  @import "./components/inserter-list-item/style.scss";
@@ -52,8 +54,8 @@
52
54
  @import "./hooks/color.scss";
53
55
  @import "./hooks/dimensions.scss";
54
56
  @import "./hooks/layout.scss";
55
- @import "./hooks/padding.scss";
56
57
  @import "./hooks/position.scss";
58
+ @import "./hooks/spacing.scss";
57
59
  @import "./hooks/typography.scss";
58
60
 
59
61
  @import "./components/block-toolbar/style.scss";
package/tsconfig.json CHANGED
@@ -1,4 +1,5 @@
1
1
  {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
2
3
  "extends": "../../tsconfig.base.json",
3
4
  "compilerOptions": {
4
5
  "rootDir": "src",
@@ -1,86 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.MarginVisualizer = MarginVisualizer;
8
- var _react = require("react");
9
- var _element = require("@wordpress/element");
10
- var _isShallowEqual = _interopRequireDefault(require("@wordpress/is-shallow-equal"));
11
- var _blockPopover = _interopRequireDefault(require("../components/block-popover"));
12
- var _useBlockRefs = require("../components/block-list/use-block-props/use-block-refs");
13
- /**
14
- * WordPress dependencies
15
- */
16
-
17
- /**
18
- * Internal dependencies
19
- */
20
-
21
- function getComputedCSS(element, property) {
22
- return element.ownerDocument.defaultView.getComputedStyle(element).getPropertyValue(property);
23
- }
24
- function MarginVisualizer({
25
- clientId,
26
- attributes,
27
- forceShow
28
- }) {
29
- const blockElement = (0, _useBlockRefs.__unstableUseBlockElement)(clientId);
30
- const [style, setStyle] = (0, _element.useState)();
31
- const margin = attributes?.style?.spacing?.margin;
32
- (0, _element.useEffect)(() => {
33
- if (!blockElement || null === blockElement.ownerDocument.defaultView) {
34
- return;
35
- }
36
- const top = getComputedCSS(blockElement, 'margin-top');
37
- const right = getComputedCSS(blockElement, 'margin-right');
38
- const bottom = getComputedCSS(blockElement, 'margin-bottom');
39
- const left = getComputedCSS(blockElement, 'margin-left');
40
- setStyle({
41
- borderTopWidth: top,
42
- borderRightWidth: right,
43
- borderBottomWidth: bottom,
44
- borderLeftWidth: left,
45
- top: top ? `-${top}` : 0,
46
- right: right ? `-${right}` : 0,
47
- bottom: bottom ? `-${bottom}` : 0,
48
- left: left ? `-${left}` : 0
49
- });
50
- }, [blockElement, margin]);
51
- const [isActive, setIsActive] = (0, _element.useState)(false);
52
- const valueRef = (0, _element.useRef)(margin);
53
- const timeoutRef = (0, _element.useRef)();
54
- const clearTimer = () => {
55
- if (timeoutRef.current) {
56
- window.clearTimeout(timeoutRef.current);
57
- }
58
- };
59
- (0, _element.useEffect)(() => {
60
- if (!(0, _isShallowEqual.default)(margin, valueRef.current) && !forceShow) {
61
- setIsActive(true);
62
- valueRef.current = margin;
63
- timeoutRef.current = setTimeout(() => {
64
- setIsActive(false);
65
- }, 400);
66
- }
67
- return () => {
68
- setIsActive(false);
69
- clearTimer();
70
- };
71
- }, [margin, forceShow]);
72
- if (!isActive && !forceShow) {
73
- return null;
74
- }
75
- return (0, _react.createElement)(_blockPopover.default, {
76
- clientId: clientId,
77
- __unstableCoverTarget: true,
78
- __unstableRefreshSize: margin,
79
- __unstablePopoverSlot: "block-toolbar",
80
- shift: false
81
- }, (0, _react.createElement)("div", {
82
- className: "block-editor__padding-visualizer",
83
- style: style
84
- }));
85
- }
86
- //# sourceMappingURL=margin.js.map