@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
@@ -81,7 +81,7 @@ describe( 'Basic rendering', () => {
81
81
  } );
82
82
 
83
83
  const toggleState = screen.getByRole( 'checkbox', {
84
- name: 'Use the same padding on all screensizes.',
84
+ name: 'Use the same padding on all screen sizes.',
85
85
  checked: true,
86
86
  } );
87
87
 
@@ -177,7 +177,7 @@ describe( 'Default and Responsive modes', () => {
177
177
  <ResponsiveBlockControl
178
178
  title="Padding"
179
179
  property="padding"
180
- isResponsive={ true }
180
+ isResponsive
181
181
  renderDefaultControl={ renderTestDefaultControlComponent }
182
182
  />
183
183
  );
@@ -217,7 +217,7 @@ describe( 'Default and Responsive modes', () => {
217
217
  <ResponsiveBlockControl
218
218
  title="Padding"
219
219
  property="padding"
220
- isResponsive={ true }
220
+ isResponsive
221
221
  renderDefaultControl={ mockRenderDefaultControl }
222
222
  viewports={ customViewportSet }
223
223
  />
@@ -268,7 +268,7 @@ describe( 'Default and Responsive modes', () => {
268
268
 
269
269
  // Select elements based on what the user can see.
270
270
  const toggleInput = screen.getByRole( 'checkbox', {
271
- name: 'Use the same padding on all screensizes.',
271
+ name: 'Use the same padding on all screen sizes.',
272
272
  checked: true,
273
273
  } );
274
274
 
@@ -319,7 +319,7 @@ describe( 'Default and Responsive modes', () => {
319
319
  <ResponsiveBlockControl
320
320
  title="Padding"
321
321
  property="padding"
322
- isResponsive={ true }
322
+ isResponsive
323
323
  renderDefaultControl={ spyRenderDefaultControl }
324
324
  renderResponsiveControls={ mockRenderResponsiveControls }
325
325
  />
@@ -12,6 +12,10 @@ _Required._ HTML string to make editable. The HTML should be valid, and valid in
12
12
 
13
13
  _Required._ Called when the value changes.
14
14
 
15
+ ### `identifier: String`
16
+
17
+ _Optional._ If the editable field is bound to a block attribute (through the `value` and `onChange` props) then this prop should specify the attribute name. The field will use this value to set the block editor selection correctly, specifying in which attribute and at what offset does the selection start or end.
18
+
15
19
  ### `tagName: String`
16
20
 
17
21
  _Default: `div`._ The [tag name](https://www.w3.org/TR/html51/syntax.html#tag-name) of the editable element.
@@ -50,6 +54,7 @@ _Optional._ By default, all registered formats are allowed. This setting can be
50
54
  ```js
51
55
  <RichText
52
56
  tagName="h2"
57
+ identifier="content"
53
58
  value={ attributes.content }
54
59
  allowedFormats={ [ 'core/bold', 'core/italic' ] } // Allow the content to be made bold or italic, but do not allow othe formatting options
55
60
  onChange={ ( content ) => setAttributes( { content } ) }
@@ -99,6 +104,7 @@ registerBlockType( /* ... */, {
99
104
  <RichText
100
105
  tagName="h2"
101
106
  className={ className }
107
+ identifier="content"
102
108
  value={ attributes.content }
103
109
  onChange={ ( content ) => setAttributes( { content } ) }
104
110
  />
@@ -19,13 +19,14 @@ import {
19
19
  removeFormat,
20
20
  } from '@wordpress/rich-text';
21
21
  import { Popover } from '@wordpress/components';
22
- import { getBlockType } from '@wordpress/blocks';
22
+ import { getBlockType, store as blocksStore } from '@wordpress/blocks';
23
23
 
24
24
  /**
25
25
  * Internal dependencies
26
26
  */
27
27
  import { useBlockEditorAutocompleteProps } from '../autocomplete';
28
28
  import { useBlockEditContext } from '../block-edit';
29
+ import { blockBindingsKey } from '../block-edit/context';
29
30
  import FormatToolbarContainer from './format-toolbar-container';
30
31
  import { store as blockEditorStore } from '../../store';
31
32
  import { useUndoAutomaticChange } from './use-undo-automatic-change';
@@ -46,7 +47,7 @@ import { getAllowedFormats } from './utils';
46
47
  import { Content } from './content';
47
48
  import { withDeprecations } from './with-deprecations';
48
49
  import { unlock } from '../../lock-unlock';
49
- import { BLOCK_BINDINGS_ALLOWED_BLOCKS } from '../../hooks/use-bindings-attributes';
50
+ import { canBindBlock } from '../../hooks/use-bindings-attributes';
50
51
 
51
52
  export const keyboardShortcutContext = createContext();
52
53
  export const inputEventContext = createContext();
@@ -109,6 +110,7 @@ export function RichTextWrapper(
109
110
  __unstableDisableFormats: disableFormats,
110
111
  disableLineBreaks,
111
112
  __unstableAllowPrefixTransformations,
113
+ disableEditing,
112
114
  ...props
113
115
  },
114
116
  forwardedRef
@@ -116,11 +118,9 @@ export function RichTextWrapper(
116
118
  props = removeNativeProps( props );
117
119
 
118
120
  const anchorRef = useRef();
119
- const {
120
- clientId,
121
- isSelected: isBlockSelected,
122
- name: blockName,
123
- } = useBlockEditContext();
121
+ const context = useBlockEditContext();
122
+ const { clientId, isSelected: isBlockSelected, name: blockName } = context;
123
+ const blockBindings = context[ blockBindingsKey ];
124
124
  const selector = ( select ) => {
125
125
  // Avoid subscribing to the block editor store if the block is not
126
126
  // selected.
@@ -128,12 +128,10 @@ export function RichTextWrapper(
128
128
  return { isSelected: false };
129
129
  }
130
130
 
131
- const { getSelectionStart, getSelectionEnd, getBlockAttributes } =
131
+ const { getSelectionStart, getSelectionEnd } =
132
132
  select( blockEditorStore );
133
133
  const selectionStart = getSelectionStart();
134
134
  const selectionEnd = getSelectionEnd();
135
- const blockBindings =
136
- getBlockAttributes( clientId )?.metadata?.bindings;
137
135
 
138
136
  let isSelected;
139
137
 
@@ -146,50 +144,60 @@ export function RichTextWrapper(
146
144
  isSelected = selectionStart.clientId === clientId;
147
145
  }
148
146
 
149
- // Disable Rich Text editing if block bindings specify that.
150
- let shouldDisableEditing = false;
151
- if ( blockBindings && blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS ) {
152
- const blockTypeAttributes = getBlockType( blockName ).attributes;
153
- const { getBlockBindingsSource } = unlock(
154
- select( blockEditorStore )
155
- );
156
- for ( const [ attribute, args ] of Object.entries(
157
- blockBindings
158
- ) ) {
159
- if (
160
- blockTypeAttributes?.[ attribute ]?.source !== 'rich-text'
161
- ) {
162
- break;
163
- }
164
-
165
- // If the source is not defined, or if its value of `lockAttributesEditing` is `true`, disable it.
166
- const blockBindingsSource = getBlockBindingsSource(
167
- args.source
168
- );
169
- if (
170
- ! blockBindingsSource ||
171
- blockBindingsSource.lockAttributesEditing
172
- ) {
173
- shouldDisableEditing = true;
174
- break;
175
- }
176
- }
177
- }
178
-
179
147
  return {
180
148
  selectionStart: isSelected ? selectionStart.offset : undefined,
181
149
  selectionEnd: isSelected ? selectionEnd.offset : undefined,
182
150
  isSelected,
183
- shouldDisableEditing,
184
151
  };
185
152
  };
186
- const { selectionStart, selectionEnd, isSelected, shouldDisableEditing } =
187
- useSelect( selector, [
188
- clientId,
189
- identifier,
190
- originalIsSelected,
191
- isBlockSelected,
192
- ] );
153
+ const { selectionStart, selectionEnd, isSelected } = useSelect( selector, [
154
+ clientId,
155
+ identifier,
156
+ originalIsSelected,
157
+ isBlockSelected,
158
+ ] );
159
+
160
+ const disableBoundBlocks = useSelect(
161
+ ( select ) => {
162
+ // Disable Rich Text editing if block bindings specify that.
163
+ let _disableBoundBlocks = false;
164
+ if ( blockBindings && canBindBlock( blockName ) ) {
165
+ const blockTypeAttributes =
166
+ getBlockType( blockName ).attributes;
167
+ const { getBlockBindingsSource } = unlock(
168
+ select( blocksStore )
169
+ );
170
+ for ( const [ attribute, args ] of Object.entries(
171
+ blockBindings
172
+ ) ) {
173
+ if (
174
+ blockTypeAttributes?.[ attribute ]?.source !==
175
+ 'rich-text'
176
+ ) {
177
+ break;
178
+ }
179
+
180
+ // If the source is not defined, or if its value of `lockAttributesEditing` is `true`, disable it.
181
+ const blockBindingsSource = getBlockBindingsSource(
182
+ args.source
183
+ );
184
+ if (
185
+ ! blockBindingsSource ||
186
+ blockBindingsSource.lockAttributesEditing
187
+ ) {
188
+ _disableBoundBlocks = true;
189
+ break;
190
+ }
191
+ }
192
+ }
193
+
194
+ return _disableBoundBlocks;
195
+ },
196
+ [ blockBindings, blockName ]
197
+ );
198
+
199
+ const shouldDisableEditing = disableEditing || disableBoundBlocks;
200
+
193
201
  const { getSelectionStart, getSelectionEnd, getBlockRootClientId } =
194
202
  useSelect( blockEditorStore );
195
203
  const { selectionChange } = useDispatch( blockEditorStore );
@@ -418,7 +426,7 @@ export function RichTextWrapper(
418
426
  anchorRef,
419
427
  ] ) }
420
428
  contentEditable={ ! shouldDisableEditing }
421
- suppressContentEditableWarning={ true }
429
+ suppressContentEditableWarning
422
430
  className={ classnames(
423
431
  'block-editor-rich-text__editable',
424
432
  props.className,
@@ -441,19 +449,34 @@ export function RichTextWrapper(
441
449
  );
442
450
  }
443
451
 
444
- const ForwardedRichTextContainer = withDeprecations(
452
+ // This is the private API for the RichText component.
453
+ // It allows access to all props, not just the public ones.
454
+ export const PrivateRichText = withDeprecations(
445
455
  forwardRef( RichTextWrapper )
446
456
  );
447
457
 
448
- ForwardedRichTextContainer.Content = Content;
449
- ForwardedRichTextContainer.isEmpty = ( value ) => {
458
+ PrivateRichText.Content = Content;
459
+ PrivateRichText.isEmpty = ( value ) => {
450
460
  return ! value || value.length === 0;
451
461
  };
452
462
 
463
+ // This is the public API for the RichText component.
464
+ // We wrap the PrivateRichText component to hide some props from the public API.
453
465
  /**
454
466
  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md
455
467
  */
456
- export default ForwardedRichTextContainer;
468
+ const PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {
469
+ return (
470
+ <PrivateRichText ref={ ref } { ...props } disableEditing={ false } />
471
+ );
472
+ } );
473
+
474
+ PublicForwardedRichTextContainer.Content = Content;
475
+ PublicForwardedRichTextContainer.isEmpty = ( value ) => {
476
+ return ! value || value.length === 0;
477
+ };
478
+
479
+ export default PublicForwardedRichTextContainer;
457
480
  export { RichTextShortcut } from './shortcut';
458
481
  export { RichTextToolbarButton } from './toolbar-button';
459
482
  export { __unstableRichTextInputEvent } from './input-event';
@@ -21,6 +21,10 @@ export function useEnter( props ) {
21
21
  propsRef.current = props;
22
22
  return useRefEffect( ( element ) => {
23
23
  function onKeyDown( event ) {
24
+ if ( event.target.contentEditable !== 'true' ) {
25
+ return;
26
+ }
27
+
24
28
  if ( event.defaultPrevented ) {
25
29
  return;
26
30
  }
@@ -226,7 +226,7 @@ export default function SpacingInputControl( {
226
226
  placeholder={ allPlaceholder }
227
227
  disableUnits={ isMixed }
228
228
  label={ ariaLabel }
229
- hideLabelFromVision={ true }
229
+ hideLabelFromVision
230
230
  className="spacing-sizes-control__custom-value-input"
231
231
  size={ '__unstable-large' }
232
232
  />
@@ -272,8 +272,8 @@ export default function SpacingInputControl( {
272
272
  max={ spacingSizes.length - 1 }
273
273
  marks={ marks }
274
274
  label={ ariaLabel }
275
- hideLabelFromVision={ true }
276
- __nextHasNoMarginBottom={ true }
275
+ hideLabelFromVision
276
+ __nextHasNoMarginBottom
277
277
  onFocus={ onMouseOver }
278
278
  onBlur={ onMouseOut }
279
279
  />
@@ -296,7 +296,7 @@ export default function SpacingInputControl( {
296
296
  } }
297
297
  options={ options }
298
298
  label={ ariaLabel }
299
- hideLabelFromVision={ true }
299
+ hideLabelFromVision
300
300
  size={ '__unstable-large' }
301
301
  onMouseOver={ onMouseOver }
302
302
  onMouseOut={ onMouseOut }
@@ -30,7 +30,7 @@ export default function SidesDropdown( {
30
30
  icon={ sideIcon }
31
31
  label={ labelProp }
32
32
  className="spacing-sizes-control__dropdown"
33
- toggleProps={ { isSmall: true } }
33
+ toggleProps={ { size: 'small' } }
34
34
  >
35
35
  { ( { onClose } ) => {
36
36
  return (
@@ -92,12 +92,12 @@ const URLPopover = forwardRef(
92
92
  />
93
93
  ) }
94
94
  </div>
95
- { showSettings && (
96
- <div className="block-editor-url-popover__row block-editor-url-popover__settings">
97
- { renderSettings() }
98
- </div>
99
- ) }
100
95
  </div>
96
+ { showSettings && (
97
+ <div className="block-editor-url-popover__settings">
98
+ { renderSettings() }
99
+ </div>
100
+ ) }
101
101
  { additionalControls && ! showSettings && (
102
102
  <div className="block-editor-url-popover__additional-controls">
103
103
  { additionalControls }
@@ -58,6 +58,7 @@
58
58
  text-overflow: ellipsis;
59
59
  white-space: nowrap;
60
60
  margin-right: $grid-unit-10;
61
+ min-width: 150px;
61
62
  // Avoids the popover from growing too wide when the URL is long.
62
63
  // See https://github.com/WordPress/gutenberg/issues/58599
63
64
  max-width: $modal-min-width;
@@ -142,6 +142,7 @@ function useMovingAnimation( { triggerAnimationOnChange, clientId } ) {
142
142
 
143
143
  return () => {
144
144
  controller.stop();
145
+ controller.set( { x: 0, y: 0 } );
145
146
  };
146
147
  }, [
147
148
  previous,
@@ -16,33 +16,36 @@ import { normalizeIconObject } from '@wordpress/blocks';
16
16
  import styles from './style.scss';
17
17
 
18
18
  function Warning( {
19
+ actions,
19
20
  title,
20
21
  message,
21
22
  icon,
22
23
  iconClass,
23
24
  preferredColorScheme,
24
25
  getStylesFromColorScheme,
26
+ containerStyle: extraContainerStyle,
27
+ titleStyle: extraTitleStyle,
28
+ messageStyle: extraMessageStyle,
25
29
  ...viewProps
26
30
  } ) {
27
31
  icon = icon && normalizeIconObject( icon );
28
32
  const internalIconClass = 'warning-icon' + '-' + preferredColorScheme;
29
- const titleStyle = getStylesFromColorScheme(
30
- styles.title,
31
- styles.titleDark
32
- );
33
- const messageStyle = getStylesFromColorScheme(
34
- styles.message,
35
- styles.messageDark
36
- );
33
+
34
+ const containerStyle = [
35
+ getStylesFromColorScheme( styles.container, styles.containerDark ),
36
+ extraContainerStyle,
37
+ ];
38
+ const titleStyle = [
39
+ getStylesFromColorScheme( styles.title, styles.titleDark ),
40
+ extraTitleStyle,
41
+ ];
42
+ const messageStyle = [
43
+ getStylesFromColorScheme( styles.message, styles.messageDark ),
44
+ extraMessageStyle,
45
+ ];
37
46
 
38
47
  return (
39
- <View
40
- style={ getStylesFromColorScheme(
41
- styles.container,
42
- styles.containerDark
43
- ) }
44
- { ...viewProps }
45
- >
48
+ <View style={ containerStyle } { ...viewProps }>
46
49
  { icon && (
47
50
  <View style={ styles.icon }>
48
51
  <Icon
@@ -53,6 +56,7 @@ function Warning( {
53
56
  ) }
54
57
  { title && <Text style={ titleStyle }>{ title }</Text> }
55
58
  { message && <Text style={ messageStyle }>{ message }</Text> }
59
+ { actions }
56
60
  </View>
57
61
  );
58
62
  }
@@ -5,7 +5,7 @@ import {
5
5
  documentHasSelection,
6
6
  documentHasUncollapsedSelection,
7
7
  } from '@wordpress/dom';
8
- import { useDispatch, useSelect } from '@wordpress/data';
8
+ import { useDispatch, useRegistry, useSelect } from '@wordpress/data';
9
9
  import { useRefEffect } from '@wordpress/compose';
10
10
 
11
11
  /**
@@ -16,6 +16,7 @@ import { useNotifyCopy } from '../../utils/use-notify-copy';
16
16
  import { getPasteBlocks, setClipboardBlocks } from './utils';
17
17
 
18
18
  export default function useClipboardHandler() {
19
+ const registry = useRegistry();
19
20
  const {
20
21
  getBlocksByClientId,
21
22
  getSelectedBlockClientIds,
@@ -104,7 +105,7 @@ export default function useClipboardHandler() {
104
105
  blocks = [ head, ...inBetweenBlocks, tail ];
105
106
  }
106
107
 
107
- setClipboardBlocks( event, blocks );
108
+ setClipboardBlocks( event, blocks, registry );
108
109
  }
109
110
  }
110
111
 
@@ -8,36 +8,51 @@ import {
8
8
  pasteHandler,
9
9
  findTransform,
10
10
  getBlockTransforms,
11
+ store as blocksStore,
11
12
  } from '@wordpress/blocks';
12
13
 
13
14
  /**
14
15
  * Internal dependencies
15
16
  */
16
17
  import { getPasteEventData } from '../../utils/pasting';
18
+ import { store as blockEditorStore } from '../../store';
19
+
20
+ export const requiresWrapperOnCopy = Symbol( 'requiresWrapperOnCopy' );
17
21
 
18
22
  /**
19
23
  * Sets the clipboard data for the provided blocks, with both HTML and plain
20
24
  * text representations.
21
25
  *
22
- * @param {ClipboardEvent} event Clipboard event.
23
- * @param {WPBlock[]} blocks Blocks to set as clipboard data.
26
+ * @param {ClipboardEvent} event Clipboard event.
27
+ * @param {WPBlock[]} blocks Blocks to set as clipboard data.
28
+ * @param {Object} registry The registry to select from.
24
29
  */
25
- export function setClipboardBlocks( event, blocks ) {
30
+ export function setClipboardBlocks( event, blocks, registry ) {
26
31
  let _blocks = blocks;
27
- const wrapperBlockName = event.clipboardData.getData(
28
- '__unstableWrapperBlockName'
29
- );
30
32
 
31
- if ( wrapperBlockName ) {
32
- _blocks = createBlock(
33
- wrapperBlockName,
34
- JSON.parse(
35
- event.clipboardData.getData(
36
- '__unstableWrapperBlockAttributes'
37
- )
38
- ),
39
- _blocks
40
- );
33
+ const [ firstBlock ] = blocks;
34
+
35
+ if ( firstBlock ) {
36
+ const firstBlockType = registry
37
+ .select( blocksStore )
38
+ .getBlockType( firstBlock.name );
39
+
40
+ if ( firstBlockType[ requiresWrapperOnCopy ] ) {
41
+ const { getBlockRootClientId, getBlockName, getBlockAttributes } =
42
+ registry.select( blockEditorStore );
43
+ const wrapperBlockClientId = getBlockRootClientId(
44
+ firstBlock.clientId
45
+ );
46
+ const wrapperBlockName = getBlockName( wrapperBlockClientId );
47
+
48
+ if ( wrapperBlockName ) {
49
+ _blocks = createBlock(
50
+ wrapperBlockName,
51
+ getBlockAttributes( wrapperBlockClientId ),
52
+ _blocks
53
+ );
54
+ }
55
+ }
41
56
  }
42
57
 
43
58
  const serialized = serialize( _blocks );
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { addFilter } from '@wordpress/hooks';
5
- import { PanelBody, TextControl, ExternalLink } from '@wordpress/components';
5
+ import { TextControl, ExternalLink } from '@wordpress/components';
6
6
  import { __ } from '@wordpress/i18n';
7
7
  import { hasBlockSupport } from '@wordpress/blocks';
8
8
  import { Platform } from '@wordpress/element';
@@ -51,71 +51,51 @@ export function addAttribute( settings ) {
51
51
  return settings;
52
52
  }
53
53
 
54
- function BlockEditAnchorControlPure( {
55
- name: blockName,
56
- anchor,
57
- setAttributes,
58
- } ) {
54
+ function BlockEditAnchorControlPure( { anchor, setAttributes } ) {
59
55
  const blockEditingMode = useBlockEditingMode();
60
56
 
61
- const isWeb = Platform.OS === 'web';
62
- const textControl = (
63
- <TextControl
64
- __nextHasNoMarginBottom
65
- __next40pxDefaultSize
66
- className="html-anchor-control"
67
- label={ __( 'HTML anchor' ) }
68
- help={
69
- <>
70
- { __(
71
- 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'
72
- ) }
57
+ if ( blockEditingMode !== 'default' ) {
58
+ return null;
59
+ }
73
60
 
74
- { isWeb && (
75
- <ExternalLink
76
- href={ __(
77
- 'https://wordpress.org/documentation/article/page-jumps/'
78
- ) }
79
- >
80
- { __( 'Learn more about anchors' ) }
81
- </ExternalLink>
82
- ) }
83
- </>
84
- }
85
- value={ anchor || '' }
86
- placeholder={ ! isWeb ? __( 'Add an anchor' ) : null }
87
- onChange={ ( nextValue ) => {
88
- nextValue = nextValue.replace( ANCHOR_REGEX, '-' );
89
- setAttributes( {
90
- anchor: nextValue,
91
- } );
92
- } }
93
- autoCapitalize="none"
94
- autoComplete="off"
95
- />
96
- );
61
+ const isWeb = Platform.OS === 'web';
97
62
 
98
63
  return (
99
- <>
100
- { isWeb && blockEditingMode === 'default' && (
101
- <InspectorControls group="advanced">
102
- { textControl }
103
- </InspectorControls>
104
- ) }
105
- { /*
106
- * We plan to remove scoping anchors to 'core/heading' to support
107
- * anchors for all eligble blocks. Additionally we plan to explore
108
- * leveraging InspectorAdvancedControls instead of a custom
109
- * PanelBody title. https://github.com/WordPress/gutenberg/issues/28363
110
- */ }
111
- { ! isWeb && blockName === 'core/heading' && (
112
- <InspectorControls>
113
- <PanelBody title={ __( 'Heading settings' ) }>
114
- { textControl }
115
- </PanelBody>
116
- </InspectorControls>
117
- ) }
118
- </>
64
+ <InspectorControls group="advanced">
65
+ <TextControl
66
+ __nextHasNoMarginBottom
67
+ __next40pxDefaultSize
68
+ className="html-anchor-control"
69
+ label={ __( 'HTML anchor' ) }
70
+ help={
71
+ <>
72
+ { __(
73
+ 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'
74
+ ) }
75
+
76
+ { isWeb && (
77
+ <ExternalLink
78
+ href={ __(
79
+ 'https://wordpress.org/documentation/article/page-jumps/'
80
+ ) }
81
+ >
82
+ { __( 'Learn more about anchors' ) }
83
+ </ExternalLink>
84
+ ) }
85
+ </>
86
+ }
87
+ value={ anchor || '' }
88
+ placeholder={ ! isWeb ? __( 'Add an anchor' ) : null }
89
+ onChange={ ( nextValue ) => {
90
+ nextValue = nextValue.replace( ANCHOR_REGEX, '-' );
91
+ setAttributes( {
92
+ anchor: nextValue,
93
+ } );
94
+ } }
95
+ autoCapitalize="none"
96
+ autoComplete="off"
97
+ />
98
+ </InspectorControls>
119
99
  );
120
100
  }
121
101