@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
@@ -20,42 +20,55 @@ export default function BlockActions( {
20
20
  children,
21
21
  __experimentalUpdateSelection: updateSelection,
22
22
  } ) {
23
- const {
24
- canInsertBlockType,
25
- getBlockRootClientId,
26
- getBlocksByClientId,
27
- canMoveBlocks,
28
- canRemoveBlocks,
29
- } = useSelect( blockEditorStore );
30
23
  const { getDefaultBlockName, getGroupingBlockName } =
31
24
  useSelect( blocksStore );
32
-
33
- const blocks = getBlocksByClientId( clientIds );
34
- const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
35
-
36
- const canCopyStyles = blocks.every( ( block ) => {
37
- return (
38
- !! block &&
39
- ( hasBlockSupport( block.name, 'color' ) ||
40
- hasBlockSupport( block.name, 'typography' ) )
41
- );
42
- } );
43
-
44
- const canDuplicate = blocks.every( ( block ) => {
45
- return (
46
- !! block &&
47
- hasBlockSupport( block.name, 'multiple', true ) &&
48
- canInsertBlockType( block.name, rootClientId )
49
- );
50
- } );
51
-
52
- const canInsertDefaultBlock = canInsertBlockType(
53
- getDefaultBlockName(),
54
- rootClientId
25
+ const selected = useSelect(
26
+ ( select ) => {
27
+ const {
28
+ canInsertBlockType,
29
+ getBlockRootClientId,
30
+ getBlocksByClientId,
31
+ getDirectInsertBlock,
32
+ canMoveBlocks,
33
+ canRemoveBlocks,
34
+ } = select( blockEditorStore );
35
+
36
+ const blocks = getBlocksByClientId( clientIds );
37
+ const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
38
+ const canInsertDefaultBlock = canInsertBlockType(
39
+ getDefaultBlockName(),
40
+ rootClientId
41
+ );
42
+ const directInsertBlock = rootClientId
43
+ ? getDirectInsertBlock( rootClientId )
44
+ : null;
45
+
46
+ return {
47
+ canMove: canMoveBlocks( clientIds, rootClientId ),
48
+ canRemove: canRemoveBlocks( clientIds, rootClientId ),
49
+ canInsertBlock: canInsertDefaultBlock || !! directInsertBlock,
50
+ canCopyStyles: blocks.every( ( block ) => {
51
+ return (
52
+ !! block &&
53
+ ( hasBlockSupport( block.name, 'color' ) ||
54
+ hasBlockSupport( block.name, 'typography' ) )
55
+ );
56
+ } ),
57
+ canDuplicate: blocks.every( ( block ) => {
58
+ return (
59
+ !! block &&
60
+ hasBlockSupport( block.name, 'multiple', true ) &&
61
+ canInsertBlockType( block.name, rootClientId )
62
+ );
63
+ } ),
64
+ };
65
+ },
66
+ [ clientIds, getDefaultBlockName ]
55
67
  );
68
+ const { getBlocksByClientId, getBlocks } = useSelect( blockEditorStore );
56
69
 
57
- const canMove = canMoveBlocks( clientIds, rootClientId );
58
- const canRemove = canRemoveBlocks( clientIds, rootClientId );
70
+ const { canMove, canRemove, canInsertBlock, canCopyStyles, canDuplicate } =
71
+ selected;
59
72
 
60
73
  const {
61
74
  removeBlocks,
@@ -75,11 +88,9 @@ export default function BlockActions( {
75
88
  return children( {
76
89
  canCopyStyles,
77
90
  canDuplicate,
78
- canInsertDefaultBlock,
91
+ canInsertBlock,
79
92
  canMove,
80
93
  canRemove,
81
- rootClientId,
82
- blocks,
83
94
  onDuplicate() {
84
95
  return duplicateBlocks( clientIds, updateSelection );
85
96
  },
@@ -87,16 +98,10 @@ export default function BlockActions( {
87
98
  return removeBlocks( clientIds, updateSelection );
88
99
  },
89
100
  onInsertBefore() {
90
- const clientId = Array.isArray( clientIds )
91
- ? clientIds[ 0 ]
92
- : clientId;
93
- insertBeforeBlock( clientId );
101
+ insertBeforeBlock( clientIds[ 0 ] );
94
102
  },
95
103
  onInsertAfter() {
96
- const clientId = Array.isArray( clientIds )
97
- ? clientIds[ clientIds.length - 1 ]
98
- : clientId;
99
- insertAfterBlock( clientId );
104
+ insertAfterBlock( clientIds[ clientIds.length - 1 ] );
100
105
  },
101
106
  onMoveTo() {
102
107
  setNavigationMode( true );
@@ -104,14 +109,17 @@ export default function BlockActions( {
104
109
  setBlockMovingClientId( clientIds[ 0 ] );
105
110
  },
106
111
  onGroup() {
107
- if ( ! blocks.length ) {
112
+ if ( ! clientIds.length ) {
108
113
  return;
109
114
  }
110
115
 
111
116
  const groupingBlockName = getGroupingBlockName();
112
117
 
113
118
  // Activate the `transform` on `core/group` which does the conversion.
114
- const newBlocks = switchToBlockType( blocks, groupingBlockName );
119
+ const newBlocks = switchToBlockType(
120
+ getBlocksByClientId( clientIds ),
121
+ groupingBlockName
122
+ );
115
123
 
116
124
  if ( ! newBlocks ) {
117
125
  return;
@@ -119,12 +127,11 @@ export default function BlockActions( {
119
127
  replaceBlocks( clientIds, newBlocks );
120
128
  },
121
129
  onUngroup() {
122
- if ( ! blocks.length ) {
130
+ if ( ! clientIds.length ) {
123
131
  return;
124
132
  }
125
133
 
126
- const innerBlocks = blocks[ 0 ].innerBlocks;
127
-
134
+ const innerBlocks = getBlocks( clientIds[ 0 ] );
128
135
  if ( ! innerBlocks.length ) {
129
136
  return;
130
137
  }
@@ -132,16 +139,13 @@ export default function BlockActions( {
132
139
  replaceBlocks( clientIds, innerBlocks );
133
140
  },
134
141
  onCopy() {
135
- const selectedBlockClientIds = blocks.map(
136
- ( { clientId } ) => clientId
137
- );
138
- if ( blocks.length === 1 ) {
139
- flashBlock( selectedBlockClientIds[ 0 ] );
142
+ if ( clientIds.length === 1 ) {
143
+ flashBlock( clientIds[ 0 ] );
140
144
  }
141
- notifyCopy( 'copy', selectedBlockClientIds );
145
+ notifyCopy( 'copy', clientIds );
142
146
  },
143
147
  async onPasteStyles() {
144
- await pasteStyles( blocks );
148
+ await pasteStyles( getBlocksByClientId( clientIds ) );
145
149
  },
146
150
  } );
147
151
  }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { ToolbarItem, ToolbarGroup, Icon } from '@wordpress/components';
5
+ import { connection } from '@wordpress/icons';
6
+ import { _x } from '@wordpress/i18n';
7
+
8
+ export default function BlockBindingsToolbarIndicator() {
9
+ return (
10
+ <ToolbarGroup>
11
+ <ToolbarItem
12
+ as={ 'div' }
13
+ aria-label={ _x( 'Connected', 'block toolbar button label' ) }
14
+ className="block-editor-block-bindings-toolbar-indicator"
15
+ >
16
+ <Icon icon={ connection } size={ 24 } />
17
+ </ToolbarItem>
18
+ </ToolbarGroup>
19
+ );
20
+ }
@@ -0,0 +1,16 @@
1
+ .block-editor-block-bindings-toolbar-indicator {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ padding: 6px;
6
+ svg {
7
+ fill: var(--wp-bound-block-color);
8
+ }
9
+ }
10
+
11
+ .edit-post-header__toolbar
12
+ .selected-block-tools-wrapper
13
+ .block-editor-block-toolbar
14
+ .block-editor-block-bindings-toolbar-indicator {
15
+ height: 32px;
16
+ }
@@ -382,7 +382,7 @@ describe( 'BlockDraggable', () => {
382
382
  // activate the gesture. Since this not available in tests, the library
383
383
  // displays a warning message.
384
384
  expect( console ).toHaveWarnedWith(
385
- '[Reanimated] You can not use setGestureState in non-worklet function.'
385
+ '[Reanimated] setGestureState() cannot be used with Jest.'
386
386
  );
387
387
  expect( getEditorHtml() ).toMatchSnapshot(
388
388
  'Paragraph block moved from first to second position'
@@ -410,7 +410,7 @@ describe( 'BlockDraggable', () => {
410
410
  // activate the gesture. Since this not available in tests, the library
411
411
  // displays a warning message.
412
412
  expect( console ).toHaveWarnedWith(
413
- '[Reanimated] You can not use setGestureState in non-worklet function.'
413
+ '[Reanimated] setGestureState() cannot be used with Jest.'
414
414
  );
415
415
  expect( getEditorHtml() ).toMatchSnapshot(
416
416
  'Spacer block moved from third to first position'
@@ -6,6 +6,7 @@ import { createContext, useContext } from '@wordpress/element';
6
6
  export const mayDisplayControlsKey = Symbol( 'mayDisplayControls' );
7
7
  export const mayDisplayParentControlsKey = Symbol( 'mayDisplayParentControls' );
8
8
  export const blockEditingModeKey = Symbol( 'blockEditingMode' );
9
+ export const blockBindingsKey = Symbol( 'blockBindings' );
9
10
 
10
11
  export const DEFAULT_BLOCK_EDIT_CONTEXT = {
11
12
  name: '',
@@ -14,6 +14,7 @@ import {
14
14
  mayDisplayControlsKey,
15
15
  mayDisplayParentControlsKey,
16
16
  blockEditingModeKey,
17
+ blockBindingsKey,
17
18
  } from './context';
18
19
 
19
20
  /**
@@ -41,7 +42,8 @@ export default function BlockEdit( {
41
42
  attributes = {},
42
43
  __unstableLayoutClassNames,
43
44
  } = props;
44
- const { layout = null } = attributes;
45
+ const { layout = null, metadata = {} } = attributes;
46
+ const { bindings } = metadata;
45
47
  const layoutSupport =
46
48
  hasBlockSupport( name, 'layout', false ) ||
47
49
  hasBlockSupport( name, '__experimentalLayout', false );
@@ -62,6 +64,7 @@ export default function BlockEdit( {
62
64
  [ mayDisplayControlsKey ]: mayDisplayControls,
63
65
  [ mayDisplayParentControlsKey ]: mayDisplayParentControls,
64
66
  [ blockEditingModeKey ]: blockEditingMode,
67
+ [ blockBindingsKey ]: bindings,
65
68
  } ),
66
69
  [
67
70
  name,
@@ -73,6 +76,7 @@ export default function BlockEdit( {
73
76
  mayDisplayControls,
74
77
  mayDisplayParentControls,
75
78
  blockEditingMode,
79
+ bindings,
76
80
  ]
77
81
  ) }
78
82
  >
@@ -28,23 +28,23 @@ const MyHeadingLevelToolbar = () => (
28
28
 
29
29
  #### options
30
30
 
31
- The list of available HTML tags, passed from the block.
31
+ The list of available heading levels, passed from the block.
32
32
 
33
33
  - Type: `Object`
34
34
  - Required: no
35
35
 
36
36
  #### value
37
37
 
38
- The chosen HTML tag.
38
+ The chosen heading level.
39
39
 
40
- - Type: `string`
40
+ - Type: `number`
41
41
  - Required: no
42
42
 
43
43
  #### onChange
44
44
 
45
- Callback to run when toolbar value is changed.
45
+ Function called with the selected value changes.
46
46
 
47
- - Type: `string`
47
+ - Type: `() => number`
48
48
  - Required: yes
49
49
 
50
50
  ## Related components
@@ -22,10 +22,10 @@ const POPOVER_PROPS = {
22
22
  *
23
23
  * @typedef WPHeadingLevelDropdownProps
24
24
  *
25
- * @property {number} value The chosen heading level.
26
- * @property {number[]} options An array of supported heading levels.
27
- * @property {(newValue:number)=>any} onChange Callback to run when
28
- * toolbar value is changed.
25
+ * @property {number} value The chosen heading level.
26
+ * @property {number[]} options An array of supported heading levels.
27
+ * @property {()=>number} onChange Function called with
28
+ * the selected value changes.
29
29
  */
30
30
 
31
31
  /**
@@ -53,7 +53,7 @@ export default function HeadingLevelDropdown( {
53
53
  targetLevel === 0
54
54
  ? __( 'Paragraph' )
55
55
  : sprintf(
56
- // translators: %s: heading level e.g: "1", "2", "3"
56
+ // translators: %d: heading level e.g: "1", "2", "3"
57
57
  __( 'Heading %d' ),
58
58
  targetLevel
59
59
  ),
@@ -18,9 +18,10 @@ const HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];
18
18
  *
19
19
  * @typedef WPHeadingLevelDropdownProps
20
20
  *
21
- * @property {number} selectedLevel The chosen heading level.
22
- * @property {(newValue:number)=>any} onChange Callback to run when
23
- * toolbar value is changed.
21
+ * @property {number} value The chosen heading level.
22
+ * @property {number[]} options An array of supported heading levels.
23
+ * @property {()=>number} onChange Function called with
24
+ * the selected value changes.
24
25
  */
25
26
 
26
27
  /**
@@ -48,7 +49,7 @@ export default function HeadingLevelDropdown( {
48
49
  isPressed={ isActive }
49
50
  />
50
51
  ),
51
- // translators: %s: heading level e.g: "1", "2", "3"
52
+ // translators: %d: heading level e.g: "1", "2", "3"
52
53
  title: sprintf( __( 'Heading %d' ), targetLevel ),
53
54
  isActive,
54
55
  onClick: () => onChangeCallback( targetLevel ),
@@ -28,7 +28,7 @@ import PositionControls from '../inspector-controls-tabs/position-controls-panel
28
28
  import useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';
29
29
  import BlockInfo from '../block-info-slot-fill';
30
30
  import BlockQuickNavigation from '../block-quick-navigation';
31
- import { getBorderPanelLabel } from '../../hooks/border';
31
+ import { useBorderPanelLabel } from '../../hooks/border';
32
32
 
33
33
  function BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {
34
34
  const contentClientIds = useSelect(
@@ -114,6 +114,10 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
114
114
  selectedBlockClientId
115
115
  );
116
116
 
117
+ const borderPanelLabel = useBorderPanelLabel( {
118
+ blockName: selectedBlockName,
119
+ } );
120
+
117
121
  if ( count > 1 ) {
118
122
  return (
119
123
  <div className="block-editor-block-inspector">
@@ -138,9 +142,7 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
138
142
  />
139
143
  <InspectorControls.Slot
140
144
  group="border"
141
- label={ getBorderPanelLabel( {
142
- blockName: selectedBlockName,
143
- } ) }
145
+ label={ borderPanelLabel }
144
146
  />
145
147
  <InspectorControls.Slot group="styles" />
146
148
  </>
@@ -249,7 +251,7 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
249
251
  [ blockName ]
250
252
  );
251
253
  const blockInformation = useBlockDisplayInformation( clientId );
252
- const borderPanelLabel = getBorderPanelLabel( { blockName } );
254
+ const borderPanelLabel = useBorderPanelLabel( { blockName } );
253
255
 
254
256
  return (
255
257
  <div className="block-editor-block-inspector">
@@ -0,0 +1,43 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Component } from '@wordpress/element';
5
+ import { logException } from '@wordpress/react-native-bridge';
6
+
7
+ class BlockCrashBoundary extends Component {
8
+ constructor() {
9
+ super( ...arguments );
10
+
11
+ this.state = {
12
+ error: null,
13
+ };
14
+ }
15
+
16
+ static getDerivedStateFromError( error ) {
17
+ return { error };
18
+ }
19
+
20
+ componentDidCatch( error ) {
21
+ const { blockName } = this.props;
22
+
23
+ logException( error, {
24
+ context: {
25
+ component_stack: error.componentStack,
26
+ block_name: blockName,
27
+ },
28
+ isHandled: true,
29
+ handledBy: 'Block-level Error Boundary',
30
+ } );
31
+ }
32
+
33
+ render() {
34
+ const { error } = this.state;
35
+ if ( ! error ) {
36
+ return this.props.children;
37
+ }
38
+
39
+ return this.props.fallback;
40
+ }
41
+ }
42
+
43
+ export default BlockCrashBoundary;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import Warning from '../warning';
10
+
11
+ const warning = (
12
+ <Warning
13
+ message={ __(
14
+ 'This block has encountered an error and cannot be previewed.'
15
+ ) }
16
+ />
17
+ );
18
+
19
+ export default () => warning;
@@ -53,7 +53,7 @@ export default function BlockInvalidWarning( { clientId } ) {
53
53
  return (
54
54
  <TouchableWithoutFeedback
55
55
  onPress={ attemptBlockRecovery }
56
- accessible={ true }
56
+ accessible
57
57
  accessibilityRole={ 'button' }
58
58
  >
59
59
  <Warning
@@ -98,7 +98,7 @@ function BlockListItemContent( {
98
98
  const name = getBlockName( clientId );
99
99
  const parentName = getBlockName( rootClientId );
100
100
  const { align } = getBlockAttributes( clientId ) || {};
101
- const { align: parentBlockAlign } =
101
+ const { textAlign: parentBlockAlign } =
102
102
  getBlockAttributes( rootClientId ) || {};
103
103
 
104
104
  return {
@@ -14,16 +14,11 @@ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
14
14
  import styles from './block.scss';
15
15
 
16
16
  const TEXT_BLOCKS_WITH_OUTLINE = [ 'core/missing', 'core/freeform' ];
17
+ const DESIGN_BLOCKS_WITHOUT_OUTLINE = [ 'core/button', 'core/spacer' ];
18
+ const MEDIA_BLOCKS_WITH_OUTLINE = [ 'core/audio', 'core/file' ];
17
19
 
18
- function BlockOutline( {
19
- blockCategory,
20
- hasInnerBlocks,
21
- isRootList,
22
- isSelected,
23
- name,
24
- } ) {
20
+ function BlockOutline( { blockCategory, hasInnerBlocks, isSelected, name } ) {
25
21
  const textBlockWithOutline = TEXT_BLOCKS_WITH_OUTLINE.includes( name );
26
- const socialBlockWithOutline = name.includes( 'core/social-link' );
27
22
 
28
23
  const hasBlockTextCategory =
29
24
  blockCategory === 'text' && ! textBlockWithOutline;
@@ -44,19 +39,39 @@ function BlockOutline( {
44
39
  hasBlockTextCategory && styles.solidBorderTextContent,
45
40
  ];
46
41
 
47
- const shoudlShowOutline =
48
- isSelected &&
49
- ( ( hasBlockTextCategory && hasInnerBlocks ) ||
50
- ( ! hasBlockTextCategory && hasInnerBlocks ) ||
51
- ( ! hasBlockTextCategory && isRootList ) ||
52
- socialBlockWithOutline ||
53
- textBlockWithOutline );
54
-
55
- return (
56
- shoudlShowOutline && (
57
- <View pointerEvents="box-none" style={ styleSolidBorder } />
58
- )
59
- );
42
+ if ( ! isSelected ) {
43
+ return null;
44
+ }
45
+
46
+ let shouldShowOutline = true;
47
+ if ( hasBlockTextCategory && ! hasInnerBlocks ) {
48
+ shouldShowOutline = false;
49
+ } else if (
50
+ blockCategory === 'media' &&
51
+ ! hasInnerBlocks &&
52
+ ! MEDIA_BLOCKS_WITH_OUTLINE.includes( name )
53
+ ) {
54
+ shouldShowOutline = false;
55
+ } else if ( blockCategory === 'media' && name === 'core/cover' ) {
56
+ shouldShowOutline = false;
57
+ } else if (
58
+ blockCategory === 'design' &&
59
+ DESIGN_BLOCKS_WITHOUT_OUTLINE.includes( name )
60
+ ) {
61
+ shouldShowOutline = false;
62
+ }
63
+
64
+ if ( shouldShowOutline ) {
65
+ return (
66
+ <View
67
+ pointerEvents="box-none"
68
+ style={ styleSolidBorder }
69
+ testID="block-outline"
70
+ />
71
+ );
72
+ }
73
+
74
+ return null;
60
75
  }
61
76
 
62
77
  export default BlockOutline;
@@ -40,9 +40,7 @@ const BlockSelectionButton = ( {
40
40
  onPress={ () => {
41
41
  /* Open BottomSheet with markup. */
42
42
  } }
43
- disabled={
44
- true
45
- } /* Disable temporarily since onPress function is empty. */
43
+ disabled /* Disable temporarily since onPress function is empty. */
46
44
  >
47
45
  { rootClientId &&
48
46
  rootBlockIcon && [
@@ -49,6 +49,8 @@ import { useLayout } from './layout';
49
49
  import useScrollUponInsertion from './use-scroll-upon-insertion';
50
50
  import { useSettings } from '../use-settings';
51
51
  import { unlock } from '../../lock-unlock';
52
+ import BlockCrashBoundary from './block-crash-boundary';
53
+ import BlockCrashWarning from './block-crash-warning';
52
54
 
53
55
  const EMPTY_ARRAY = [];
54
56
 
@@ -93,7 +95,6 @@ function BlockWrapper( {
93
95
  draggingEnabled,
94
96
  hasInnerBlocks,
95
97
  isDescendentBlockSelected,
96
- isRootList,
97
98
  isSelected,
98
99
  isTouchable,
99
100
  marginHorizontal,
@@ -137,18 +138,22 @@ function BlockWrapper( {
137
138
  <BlockOutline
138
139
  blockCategory={ blockCategory }
139
140
  hasInnerBlocks={ hasInnerBlocks }
140
- isRootList={ isRootList }
141
141
  isSelected={ isSelected }
142
142
  name={ name }
143
143
  />
144
- <BlockDraggable
145
- clientId={ clientId }
146
- draggingClientId={ draggingClientId }
147
- enabled={ draggingEnabled }
148
- testID="draggable-trigger-content"
144
+ <BlockCrashBoundary
145
+ blockName={ name }
146
+ fallback={ <BlockCrashWarning /> }
149
147
  >
150
- { children }
151
- </BlockDraggable>
148
+ <BlockDraggable
149
+ clientId={ clientId }
150
+ draggingClientId={ draggingClientId }
151
+ enabled={ draggingEnabled }
152
+ testID="draggable-trigger-content"
153
+ >
154
+ { children }
155
+ </BlockDraggable>
156
+ </BlockCrashBoundary>
152
157
  </Pressable>
153
158
  );
154
159
  }
@@ -361,7 +366,6 @@ function BlockListBlock( {
361
366
  hasInnerBlocks={ hasInnerBlocks }
362
367
  isDescendentBlockSelected={ isDescendentBlockSelected }
363
368
  isFocused={ isFocused }
364
- isRootList={ ! rootClientId }
365
369
  isSelected={ isSelected }
366
370
  isStackedHorizontally={ isStackedHorizontally }
367
371
  isTouchable={ isTouchable }
@@ -360,6 +360,22 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b
360
360
  z-index: z-index("{core/image aligned left or right} .wp-block");
361
361
  }
362
362
 
363
+ body.is-zoomed-out {
364
+ display: flex;
365
+ flex-direction: column;
366
+
367
+ > .is-root-container {
368
+ flex: 1;
369
+ display: flex;
370
+ flex-direction: column;
371
+ height: 100%;
372
+
373
+ > main {
374
+ flex: 1;
375
+ }
376
+ }
377
+ }
378
+
363
379
  .wp-site-blocks > [data-align="left"] {
364
380
  float: left;
365
381
  margin-right: 2em;
@@ -453,7 +469,11 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b
453
469
  }
454
470
  }
455
471
 
456
- .block-editor-iframe__body {
472
+ .block-editor-iframe__html {
457
473
  transition: all 0.3s;
458
474
  transform-origin: top center;
459
475
  }
476
+
477
+ .block-editor-iframe__html[style*="scale"] {
478
+ background-color: $gray-300;
479
+ }