@wordpress/block-editor 14.1.0 → 14.2.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 (630) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -10
  3. package/build/components/block-alignment-matrix-control/index.js +2 -2
  4. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +8 -2
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-canvas/index.js +8 -1
  8. package/build/components/block-canvas/index.js.map +1 -1
  9. package/build/components/block-compare/block-view.js +4 -1
  10. package/build/components/block-compare/block-view.js.map +1 -1
  11. package/build/components/block-draggable/index.js +4 -4
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-edit/multiple-usage-warning.js +8 -2
  16. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  17. package/build/components/block-inspector/index.js +27 -9
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-invalid-warning.js +6 -3
  20. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  21. package/build/components/block-list/block.js +5 -1
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/use-block-props/index.js +5 -1
  24. package/build/components/block-list/use-block-props/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  26. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +46 -0
  28. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  29. package/build/components/block-lock/toolbar.js +3 -3
  30. package/build/components/block-lock/toolbar.js.map +1 -1
  31. package/build/components/block-mover/button.js +4 -1
  32. package/build/components/block-mover/button.js.map +1 -1
  33. package/build/components/block-mover/index.js +4 -1
  34. package/build/components/block-mover/index.js.map +1 -1
  35. package/build/components/block-navigation/dropdown.js +4 -1
  36. package/build/components/block-navigation/dropdown.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +1 -4
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-patterns-list/index.js +11 -14
  42. package/build/components/block-patterns-list/index.js.map +1 -1
  43. package/build/components/block-patterns-paging/index.js +12 -3
  44. package/build/components/block-patterns-paging/index.js.map +1 -1
  45. package/build/components/block-popover/index.js +2 -15
  46. package/build/components/block-popover/index.js.map +1 -1
  47. package/build/components/block-quick-navigation/index.js +4 -1
  48. package/build/components/block-quick-navigation/index.js.map +1 -1
  49. package/build/components/block-settings-menu-controls/index.js +4 -0
  50. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  51. package/build/components/block-switcher/index.js +22 -17
  52. package/build/components/block-switcher/index.js.map +1 -1
  53. package/build/components/block-switcher/pattern-transformations-menu.js +1 -4
  54. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  55. package/build/components/block-toolbar/index.js +12 -11
  56. package/build/components/block-toolbar/index.js.map +1 -1
  57. package/build/components/block-toolbar/shuffle.js +6 -2
  58. package/build/components/block-toolbar/shuffle.js.map +1 -1
  59. package/build/components/block-tools/block-selection-button.js +8 -2
  60. package/build/components/block-tools/block-selection-button.js.map +1 -1
  61. package/build/components/block-tools/block-toolbar-popover.js +10 -6
  62. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  63. package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  64. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  65. package/build/components/block-tools/zoom-out-mode-inserters.js +4 -9
  66. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  67. package/build/components/block-tools/zoom-out-popover.js +3 -4
  68. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  69. package/build/components/block-tools/zoom-out-toolbar.js +14 -5
  70. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  71. package/build/components/block-variation-picker/index.js +4 -1
  72. package/build/components/block-variation-picker/index.js.map +1 -1
  73. package/build/components/block-variation-transforms/index.js +4 -1
  74. package/build/components/block-variation-transforms/index.js.map +1 -1
  75. package/build/components/button-block-appender/index.js +14 -3
  76. package/build/components/button-block-appender/index.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +4 -1
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/content-lock/index.js +13 -0
  80. package/build/components/content-lock/index.js.map +1 -0
  81. package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
  82. package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  83. package/build/components/editor-styles/index.js +4 -3
  84. package/build/components/editor-styles/index.js.map +1 -1
  85. package/build/components/global-styles/background-panel.js +8 -12
  86. package/build/components/global-styles/background-panel.js.map +1 -1
  87. package/build/components/global-styles/color-panel.js +8 -5
  88. package/build/components/global-styles/color-panel.js.map +1 -1
  89. package/build/components/global-styles/color-panel.native.js +1 -1
  90. package/build/components/global-styles/color-panel.native.js.map +1 -1
  91. package/build/components/global-styles/dimensions-panel.js +34 -37
  92. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  93. package/build/components/global-styles/filters-panel.js +4 -1
  94. package/build/components/global-styles/filters-panel.js.map +1 -1
  95. package/build/components/global-styles/shadow-panel-components.js +13 -7
  96. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  97. package/build/components/global-styles/typography-utils.js +17 -6
  98. package/build/components/global-styles/typography-utils.js.map +1 -1
  99. package/build/components/global-styles/utils.js +4 -6
  100. package/build/components/global-styles/utils.js.map +1 -1
  101. package/build/components/grid/grid-item-movers.js +2 -2
  102. package/build/components/grid/grid-item-movers.js.map +1 -1
  103. package/build/components/iframe/index.js +5 -5
  104. package/build/components/iframe/index.js.map +1 -1
  105. package/build/components/inner-blocks/index.js +2 -4
  106. package/build/components/inner-blocks/index.js.map +1 -1
  107. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  108. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  109. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  110. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  111. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  112. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  113. package/build/components/inserter/library.js +2 -4
  114. package/build/components/inserter/library.js.map +1 -1
  115. package/build/components/inserter/media-tab/hooks.js +3 -3
  116. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  117. package/build/components/inserter/media-tab/media-list.js +1 -4
  118. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  119. package/build/components/inserter/media-tab/media-preview.js +8 -2
  120. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  121. package/build/components/inserter/media-tab/media-tab.js +4 -1
  122. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  123. package/build/components/inserter/menu.js +7 -24
  124. package/build/components/inserter/menu.js.map +1 -1
  125. package/build/components/inserter/quick-inserter.js +4 -1
  126. package/build/components/inserter/quick-inserter.js.map +1 -1
  127. package/build/components/inserter-list-item/index.js +4 -4
  128. package/build/components/inserter-list-item/index.js.map +1 -1
  129. package/build/components/inserter-listbox/index.js +3 -7
  130. package/build/components/inserter-listbox/index.js.map +1 -1
  131. package/build/components/inserter-listbox/item.js +4 -1
  132. package/build/components/inserter-listbox/item.js.map +1 -1
  133. package/build/components/inspector-controls/groups.js +2 -0
  134. package/build/components/inspector-controls/groups.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +4 -1
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  138. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  140. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  141. package/build/components/inspector-popover-header/index.js +8 -2
  142. package/build/components/inspector-popover-header/index.js.map +1 -1
  143. package/build/components/letter-spacing-control/index.js +7 -4
  144. package/build/components/letter-spacing-control/index.js.map +1 -1
  145. package/build/components/link-control/index.js +19 -10
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/link-control/settings-drawer.js +4 -1
  148. package/build/components/link-control/settings-drawer.js.map +1 -1
  149. package/build/components/list-view/block-select-button.js +4 -1
  150. package/build/components/list-view/block-select-button.js.map +1 -1
  151. package/build/components/media-placeholder/index.js +28 -7
  152. package/build/components/media-placeholder/index.js.map +1 -1
  153. package/build/components/media-replace-flow/index.js +8 -1
  154. package/build/components/media-replace-flow/index.js.map +1 -1
  155. package/build/components/provider/use-block-sync.js +19 -19
  156. package/build/components/provider/use-block-sync.js.map +1 -1
  157. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  158. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  159. package/build/components/rich-text/index.js +38 -30
  160. package/build/components/rich-text/index.js.map +1 -1
  161. package/build/components/rich-text/use-mark-persistent.js +5 -5
  162. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  163. package/build/components/skip-to-selected-block/index.js +4 -1
  164. package/build/components/skip-to-selected-block/index.js.map +1 -1
  165. package/build/components/tool-selector/index.js +4 -1
  166. package/build/components/tool-selector/index.js.map +1 -1
  167. package/build/components/url-input/button.js +12 -3
  168. package/build/components/url-input/button.js.map +1 -1
  169. package/build/components/url-input/index.js +4 -1
  170. package/build/components/url-input/index.js.map +1 -1
  171. package/build/components/use-block-drop-zone/index.js +4 -6
  172. package/build/components/use-block-drop-zone/index.js.map +1 -1
  173. package/build/components/writing-flow/index.js +2 -1
  174. package/build/components/writing-flow/index.js.map +1 -1
  175. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  176. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  177. package/build/components/writing-flow/use-event-redirect.js +66 -0
  178. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  179. package/build/components/writing-flow/use-input.js +31 -1
  180. package/build/components/writing-flow/use-input.js.map +1 -1
  181. package/build/components/writing-flow/use-select-all.js +14 -1
  182. package/build/components/writing-flow/use-select-all.js.map +1 -1
  183. package/build/components/writing-flow/use-selection-observer.js +20 -6
  184. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  185. package/build/components/writing-flow/use-tab-nav.js +4 -4
  186. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  187. package/build/components/writing-flow/utils.js +27 -0
  188. package/build/components/writing-flow/utils.js.map +1 -1
  189. package/build/hooks/block-bindings.js +32 -29
  190. package/build/hooks/block-bindings.js.map +1 -1
  191. package/build/hooks/content-lock-ui.js +8 -26
  192. package/build/hooks/content-lock-ui.js.map +1 -1
  193. package/build/hooks/duotone.js +0 -4
  194. package/build/hooks/duotone.js.map +1 -1
  195. package/build/hooks/layout.js +4 -1
  196. package/build/hooks/layout.js.map +1 -1
  197. package/build/hooks/spacing-visualizer.js +3 -3
  198. package/build/hooks/spacing-visualizer.js.map +1 -1
  199. package/build/hooks/style.js +1 -5
  200. package/build/hooks/style.js.map +1 -1
  201. package/build/hooks/use-bindings-attributes.js +19 -20
  202. package/build/hooks/use-bindings-attributes.js.map +1 -1
  203. package/build/hooks/use-zoom-out.js +7 -7
  204. package/build/hooks/use-zoom-out.js.map +1 -1
  205. package/build/layouts/constrained.js +41 -41
  206. package/build/layouts/constrained.js.map +1 -1
  207. package/build/layouts/flex.js +4 -1
  208. package/build/layouts/flex.js.map +1 -1
  209. package/build/layouts/utils.js +1 -7
  210. package/build/layouts/utils.js.map +1 -1
  211. package/build/private-apis.js +2 -1
  212. package/build/private-apis.js.map +1 -1
  213. package/build/store/actions.js +2 -7
  214. package/build/store/actions.js.map +1 -1
  215. package/build/store/private-actions.js +1 -0
  216. package/build/store/private-actions.js.map +1 -1
  217. package/build/store/private-keys.js +2 -1
  218. package/build/store/private-keys.js.map +1 -1
  219. package/build/store/private-selectors.js +13 -15
  220. package/build/store/private-selectors.js.map +1 -1
  221. package/build/store/reducer.js +1 -8
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +19 -43
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/store/utils.js +48 -0
  226. package/build/store/utils.js.map +1 -1
  227. package/build/utils/block-bindings.js +16 -11
  228. package/build/utils/block-bindings.js.map +1 -1
  229. package/build/utils/dom.js +101 -0
  230. package/build/utils/dom.js.map +1 -1
  231. package/build/utils/get-font-styles-and-weights.js +4 -4
  232. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  233. package/build/utils/transform-styles/index.js +120 -16
  234. package/build/utils/transform-styles/index.js.map +1 -1
  235. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  236. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  237. package/build-module/components/block-breadcrumb/index.js +8 -2
  238. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  239. package/build-module/components/block-canvas/index.js +9 -1
  240. package/build-module/components/block-canvas/index.js.map +1 -1
  241. package/build-module/components/block-compare/block-view.js +4 -1
  242. package/build-module/components/block-compare/block-view.js.map +1 -1
  243. package/build-module/components/block-draggable/index.js +4 -4
  244. package/build-module/components/block-draggable/index.js.map +1 -1
  245. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  246. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  247. package/build-module/components/block-edit/multiple-usage-warning.js +8 -2
  248. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  249. package/build-module/components/block-inspector/index.js +27 -9
  250. package/build-module/components/block-inspector/index.js.map +1 -1
  251. package/build-module/components/block-list/block-invalid-warning.js +6 -3
  252. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  253. package/build-module/components/block-list/block.js +5 -1
  254. package/build-module/components/block-list/block.js.map +1 -1
  255. package/build-module/components/block-list/use-block-props/index.js +5 -1
  256. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  257. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  258. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  259. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +40 -0
  260. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  261. package/build-module/components/block-lock/toolbar.js +3 -3
  262. package/build-module/components/block-lock/toolbar.js.map +1 -1
  263. package/build-module/components/block-mover/button.js +4 -1
  264. package/build-module/components/block-mover/button.js.map +1 -1
  265. package/build-module/components/block-mover/index.js +4 -1
  266. package/build-module/components/block-mover/index.js.map +1 -1
  267. package/build-module/components/block-navigation/dropdown.js +4 -1
  268. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  269. package/build-module/components/block-pattern-setup/index.js +1 -4
  270. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  271. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  272. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  273. package/build-module/components/block-patterns-list/index.js +11 -14
  274. package/build-module/components/block-patterns-list/index.js.map +1 -1
  275. package/build-module/components/block-patterns-paging/index.js +12 -3
  276. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  277. package/build-module/components/block-popover/index.js +2 -15
  278. package/build-module/components/block-popover/index.js.map +1 -1
  279. package/build-module/components/block-quick-navigation/index.js +4 -1
  280. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  281. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  282. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  283. package/build-module/components/block-switcher/index.js +22 -17
  284. package/build-module/components/block-switcher/index.js.map +1 -1
  285. package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -4
  286. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  287. package/build-module/components/block-toolbar/index.js +12 -11
  288. package/build-module/components/block-toolbar/index.js.map +1 -1
  289. package/build-module/components/block-toolbar/shuffle.js +6 -2
  290. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  291. package/build-module/components/block-tools/block-selection-button.js +8 -2
  292. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  293. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  294. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  295. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  296. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  297. package/build-module/components/block-tools/zoom-out-mode-inserters.js +4 -9
  298. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  299. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  300. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  301. package/build-module/components/block-tools/zoom-out-toolbar.js +15 -6
  302. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  303. package/build-module/components/block-variation-picker/index.js +4 -1
  304. package/build-module/components/block-variation-picker/index.js.map +1 -1
  305. package/build-module/components/block-variation-transforms/index.js +4 -1
  306. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  307. package/build-module/components/button-block-appender/index.js +15 -4
  308. package/build-module/components/button-block-appender/index.js.map +1 -1
  309. package/build-module/components/colors-gradients/dropdown.js +4 -1
  310. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  311. package/build-module/components/content-lock/index.js +2 -0
  312. package/build-module/components/content-lock/index.js.map +1 -0
  313. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  314. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  315. package/build-module/components/editor-styles/index.js +4 -3
  316. package/build-module/components/editor-styles/index.js.map +1 -1
  317. package/build-module/components/global-styles/background-panel.js +8 -12
  318. package/build-module/components/global-styles/background-panel.js.map +1 -1
  319. package/build-module/components/global-styles/color-panel.js +7 -4
  320. package/build-module/components/global-styles/color-panel.js.map +1 -1
  321. package/build-module/components/global-styles/color-panel.native.js +2 -2
  322. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  323. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  324. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  325. package/build-module/components/global-styles/filters-panel.js +4 -1
  326. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  327. package/build-module/components/global-styles/shadow-panel-components.js +13 -7
  328. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  329. package/build-module/components/global-styles/typography-utils.js +17 -6
  330. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  331. package/build-module/components/global-styles/utils.js +4 -6
  332. package/build-module/components/global-styles/utils.js.map +1 -1
  333. package/build-module/components/grid/grid-item-movers.js +3 -3
  334. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  335. package/build-module/components/iframe/index.js +5 -5
  336. package/build-module/components/iframe/index.js.map +1 -1
  337. package/build-module/components/inner-blocks/index.js +2 -4
  338. package/build-module/components/inner-blocks/index.js.map +1 -1
  339. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  340. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  341. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  342. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  343. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  344. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  345. package/build-module/components/inserter/library.js +2 -4
  346. package/build-module/components/inserter/library.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  348. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/media-list.js +1 -4
  350. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  351. package/build-module/components/inserter/media-tab/media-preview.js +8 -2
  352. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  353. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  354. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  355. package/build-module/components/inserter/menu.js +7 -24
  356. package/build-module/components/inserter/menu.js.map +1 -1
  357. package/build-module/components/inserter/quick-inserter.js +4 -1
  358. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  359. package/build-module/components/inserter-list-item/index.js +4 -4
  360. package/build-module/components/inserter-list-item/index.js.map +1 -1
  361. package/build-module/components/inserter-listbox/index.js +3 -7
  362. package/build-module/components/inserter-listbox/index.js.map +1 -1
  363. package/build-module/components/inserter-listbox/item.js +4 -1
  364. package/build-module/components/inserter-listbox/item.js.map +1 -1
  365. package/build-module/components/inspector-controls/groups.js +2 -0
  366. package/build-module/components/inspector-controls/groups.js.map +1 -1
  367. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  368. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  369. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  370. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  372. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  373. package/build-module/components/inspector-popover-header/index.js +8 -2
  374. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  375. package/build-module/components/letter-spacing-control/index.js +7 -4
  376. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  377. package/build-module/components/link-control/index.js +19 -10
  378. package/build-module/components/link-control/index.js.map +1 -1
  379. package/build-module/components/link-control/settings-drawer.js +4 -1
  380. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  381. package/build-module/components/list-view/block-select-button.js +4 -1
  382. package/build-module/components/list-view/block-select-button.js.map +1 -1
  383. package/build-module/components/media-placeholder/index.js +28 -7
  384. package/build-module/components/media-placeholder/index.js.map +1 -1
  385. package/build-module/components/media-replace-flow/index.js +8 -1
  386. package/build-module/components/media-replace-flow/index.js.map +1 -1
  387. package/build-module/components/provider/use-block-sync.js +19 -19
  388. package/build-module/components/provider/use-block-sync.js.map +1 -1
  389. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  390. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  391. package/build-module/components/rich-text/index.js +39 -31
  392. package/build-module/components/rich-text/index.js.map +1 -1
  393. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  394. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  395. package/build-module/components/skip-to-selected-block/index.js +4 -1
  396. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  397. package/build-module/components/tool-selector/index.js +4 -1
  398. package/build-module/components/tool-selector/index.js.map +1 -1
  399. package/build-module/components/url-input/button.js +12 -3
  400. package/build-module/components/url-input/button.js.map +1 -1
  401. package/build-module/components/url-input/index.js +4 -1
  402. package/build-module/components/url-input/index.js.map +1 -1
  403. package/build-module/components/use-block-drop-zone/index.js +4 -6
  404. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  405. package/build-module/components/writing-flow/index.js +2 -1
  406. package/build-module/components/writing-flow/index.js.map +1 -1
  407. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  408. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  409. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  410. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  411. package/build-module/components/writing-flow/use-input.js +31 -1
  412. package/build-module/components/writing-flow/use-input.js.map +1 -1
  413. package/build-module/components/writing-flow/use-select-all.js +14 -1
  414. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  415. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  416. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  417. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  418. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  419. package/build-module/components/writing-flow/utils.js +26 -0
  420. package/build-module/components/writing-flow/utils.js.map +1 -1
  421. package/build-module/hooks/block-bindings.js +34 -31
  422. package/build-module/hooks/block-bindings.js.map +1 -1
  423. package/build-module/hooks/content-lock-ui.js +10 -30
  424. package/build-module/hooks/content-lock-ui.js.map +1 -1
  425. package/build-module/hooks/duotone.js +0 -4
  426. package/build-module/hooks/duotone.js.map +1 -1
  427. package/build-module/hooks/layout.js +4 -1
  428. package/build-module/hooks/layout.js.map +1 -1
  429. package/build-module/hooks/spacing-visualizer.js +3 -3
  430. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  431. package/build-module/hooks/style.js +1 -5
  432. package/build-module/hooks/style.js.map +1 -1
  433. package/build-module/hooks/use-bindings-attributes.js +19 -20
  434. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  435. package/build-module/hooks/use-zoom-out.js +7 -7
  436. package/build-module/hooks/use-zoom-out.js.map +1 -1
  437. package/build-module/layouts/constrained.js +43 -43
  438. package/build-module/layouts/constrained.js.map +1 -1
  439. package/build-module/layouts/flex.js +4 -1
  440. package/build-module/layouts/flex.js.map +1 -1
  441. package/build-module/layouts/utils.js +1 -7
  442. package/build-module/layouts/utils.js.map +1 -1
  443. package/build-module/private-apis.js +3 -2
  444. package/build-module/private-apis.js.map +1 -1
  445. package/build-module/store/actions.js +2 -7
  446. package/build-module/store/actions.js.map +1 -1
  447. package/build-module/store/private-actions.js +1 -0
  448. package/build-module/store/private-actions.js.map +1 -1
  449. package/build-module/store/private-keys.js +1 -0
  450. package/build-module/store/private-keys.js.map +1 -1
  451. package/build-module/store/private-selectors.js +12 -15
  452. package/build-module/store/private-selectors.js.map +1 -1
  453. package/build-module/store/reducer.js +1 -7
  454. package/build-module/store/reducer.js.map +1 -1
  455. package/build-module/store/selectors.js +22 -46
  456. package/build-module/store/selectors.js.map +1 -1
  457. package/build-module/store/utils.js +46 -0
  458. package/build-module/store/utils.js.map +1 -1
  459. package/build-module/utils/block-bindings.js +17 -12
  460. package/build-module/utils/block-bindings.js.map +1 -1
  461. package/build-module/utils/dom.js +99 -0
  462. package/build-module/utils/dom.js.map +1 -1
  463. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  464. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  465. package/build-module/utils/transform-styles/index.js +120 -16
  466. package/build-module/utils/transform-styles/index.js.map +1 -1
  467. package/build-style/content-rtl.css +2 -11
  468. package/build-style/content.css +2 -11
  469. package/build-style/style-rtl.css +17 -38
  470. package/build-style/style.css +17 -38
  471. package/build-types/utils/dom.d.ts +25 -0
  472. package/build-types/utils/dom.d.ts.map +1 -1
  473. package/package.json +34 -32
  474. package/src/components/block-alignment-matrix-control/index.js +1 -1
  475. package/src/components/block-breadcrumb/index.js +4 -0
  476. package/src/components/block-breadcrumb/style.scss +1 -1
  477. package/src/components/block-canvas/index.js +9 -1
  478. package/src/components/block-compare/block-view.js +7 -1
  479. package/src/components/block-draggable/content.scss +1 -1
  480. package/src/components/block-draggable/index.js +4 -4
  481. package/src/components/block-draggable/style.scss +1 -1
  482. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  483. package/src/components/block-edit/multiple-usage-warning.js +4 -0
  484. package/src/components/block-inspector/index.js +22 -6
  485. package/src/components/block-list/block-invalid-warning.js +4 -2
  486. package/src/components/block-list/block.js +6 -2
  487. package/src/components/block-list/content.scss +2 -3
  488. package/src/components/block-list/use-block-props/index.js +3 -0
  489. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  490. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +44 -0
  491. package/src/components/block-lock/style.scss +1 -1
  492. package/src/components/block-lock/toolbar.js +3 -3
  493. package/src/components/block-mover/button.js +2 -0
  494. package/src/components/block-mover/index.js +2 -0
  495. package/src/components/block-mover/style.scss +1 -1
  496. package/src/components/block-navigation/dropdown.js +2 -0
  497. package/src/components/block-pattern-setup/index.js +3 -7
  498. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  499. package/src/components/block-pattern-setup/style.scss +2 -2
  500. package/src/components/block-patterns-list/index.js +15 -13
  501. package/src/components/block-patterns-list/style.scss +2 -2
  502. package/src/components/block-patterns-paging/index.js +6 -0
  503. package/src/components/block-popover/index.js +7 -28
  504. package/src/components/block-popover/style.scss +1 -1
  505. package/src/components/block-quick-navigation/index.js +2 -0
  506. package/src/components/block-settings-menu-controls/index.js +7 -1
  507. package/src/components/block-switcher/index.js +26 -20
  508. package/src/components/block-switcher/pattern-transformations-menu.js +3 -7
  509. package/src/components/block-switcher/style.scss +5 -6
  510. package/src/components/block-toolbar/index.js +17 -8
  511. package/src/components/block-toolbar/shuffle.js +9 -7
  512. package/src/components/block-tools/block-selection-button.js +4 -0
  513. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  514. package/src/components/block-tools/style.scss +3 -4
  515. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  516. package/src/components/block-tools/zoom-out-mode-inserters.js +2 -5
  517. package/src/components/block-tools/zoom-out-popover.js +3 -7
  518. package/src/components/block-tools/zoom-out-toolbar.js +20 -6
  519. package/src/components/block-variation-picker/README.md +2 -2
  520. package/src/components/block-variation-picker/index.js +6 -1
  521. package/src/components/block-variation-transforms/index.js +2 -0
  522. package/src/components/block-variation-transforms/style.scss +1 -1
  523. package/src/components/button-block-appender/content.scss +0 -1
  524. package/src/components/button-block-appender/index.js +14 -3
  525. package/src/components/color-palette/test/control.js +15 -2
  526. package/src/components/colors-gradients/dropdown.js +5 -1
  527. package/src/components/colors-gradients/style.scss +4 -4
  528. package/src/components/content-lock/index.js +1 -0
  529. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  530. package/src/components/default-block-appender/content.scss +0 -1
  531. package/src/components/editor-styles/index.js +4 -3
  532. package/src/components/global-styles/background-panel.js +6 -14
  533. package/src/components/global-styles/color-panel.js +8 -4
  534. package/src/components/global-styles/color-panel.native.js +2 -2
  535. package/src/components/global-styles/dimensions-panel.js +40 -40
  536. package/src/components/global-styles/filters-panel.js +5 -1
  537. package/src/components/global-styles/shadow-panel-components.js +12 -8
  538. package/src/components/global-styles/style.scss +3 -4
  539. package/src/components/global-styles/test/typography-utils.js +96 -5
  540. package/src/components/global-styles/test/utils.js +10 -0
  541. package/src/components/global-styles/typography-utils.js +22 -6
  542. package/src/components/global-styles/utils.js +4 -6
  543. package/src/components/grid/grid-item-movers.js +3 -3
  544. package/src/components/grid/style.scss +1 -1
  545. package/src/components/iframe/index.js +5 -5
  546. package/src/components/inner-blocks/index.js +2 -2
  547. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  548. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  549. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  550. package/src/components/inserter/library.js +0 -2
  551. package/src/components/inserter/media-tab/hooks.js +3 -3
  552. package/src/components/inserter/media-tab/media-list.js +1 -4
  553. package/src/components/inserter/media-tab/media-preview.js +12 -2
  554. package/src/components/inserter/media-tab/media-tab.js +2 -0
  555. package/src/components/inserter/menu.js +15 -29
  556. package/src/components/inserter/quick-inserter.js +2 -0
  557. package/src/components/inserter/style.scss +6 -8
  558. package/src/components/inserter-list-item/index.js +4 -4
  559. package/src/components/inserter-list-item/style.scss +1 -3
  560. package/src/components/inserter-listbox/index.js +2 -8
  561. package/src/components/inserter-listbox/item.js +9 -1
  562. package/src/components/inspector-controls/groups.js +2 -0
  563. package/src/components/inspector-controls-tabs/index.js +2 -0
  564. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  565. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  566. package/src/components/inspector-popover-header/index.js +4 -0
  567. package/src/components/letter-spacing-control/README.md +8 -1
  568. package/src/components/letter-spacing-control/index.js +7 -4
  569. package/src/components/link-control/index.js +17 -8
  570. package/src/components/link-control/settings-drawer.js +2 -0
  571. package/src/components/link-control/style.scss +1 -3
  572. package/src/components/list-view/block-select-button.js +2 -0
  573. package/src/components/list-view/style.scss +14 -16
  574. package/src/components/media-placeholder/index.js +14 -0
  575. package/src/components/media-replace-flow/index.js +12 -1
  576. package/src/components/provider/use-block-sync.js +20 -20
  577. package/src/components/responsive-block-control/README.md +3 -27
  578. package/src/components/rich-text/content.scss +1 -1
  579. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  580. package/src/components/rich-text/index.js +54 -41
  581. package/src/components/rich-text/style.scss +1 -1
  582. package/src/components/rich-text/use-mark-persistent.js +5 -5
  583. package/src/components/skip-to-selected-block/index.js +2 -0
  584. package/src/components/spacing-sizes-control/style.scss +1 -0
  585. package/src/components/tool-selector/index.js +2 -0
  586. package/src/components/url-input/button.js +6 -0
  587. package/src/components/url-input/index.js +2 -0
  588. package/src/components/url-popover/stories/index.story.js +7 -1
  589. package/src/components/use-block-drop-zone/index.js +4 -4
  590. package/src/components/warning/content.scss +3 -10
  591. package/src/components/writing-flow/index.js +2 -0
  592. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  593. package/src/components/writing-flow/use-event-redirect.js +72 -0
  594. package/src/components/writing-flow/use-input.js +36 -1
  595. package/src/components/writing-flow/use-select-all.js +18 -1
  596. package/src/components/writing-flow/use-selection-observer.js +23 -3
  597. package/src/components/writing-flow/use-tab-nav.js +4 -4
  598. package/src/components/writing-flow/utils.js +30 -0
  599. package/src/hooks/block-bindings.js +42 -43
  600. package/src/hooks/block-bindings.scss +1 -9
  601. package/src/hooks/content-lock-ui.js +11 -36
  602. package/src/hooks/duotone.js +0 -4
  603. package/src/hooks/layout.js +2 -0
  604. package/src/hooks/layout.scss +3 -11
  605. package/src/hooks/spacing-visualizer.js +3 -3
  606. package/src/hooks/style.js +1 -4
  607. package/src/hooks/use-bindings-attributes.js +23 -24
  608. package/src/hooks/use-zoom-out.js +7 -7
  609. package/src/layouts/constrained.js +50 -47
  610. package/src/layouts/flex.js +2 -0
  611. package/src/layouts/test/grid.js +2 -2
  612. package/src/layouts/test/utils.js +6 -8
  613. package/src/layouts/utils.js +1 -9
  614. package/src/private-apis.js +2 -0
  615. package/src/store/actions.js +4 -6
  616. package/src/store/private-actions.js +1 -0
  617. package/src/store/private-keys.js +1 -0
  618. package/src/store/private-selectors.js +12 -11
  619. package/src/store/reducer.js +0 -5
  620. package/src/store/selectors.js +32 -51
  621. package/src/store/utils.js +50 -0
  622. package/src/utils/block-bindings.js +15 -16
  623. package/src/utils/dom.js +117 -0
  624. package/src/utils/get-font-styles-and-weights.js +12 -4
  625. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  626. package/src/utils/test/transform-styles.js +259 -50
  627. package/src/utils/transform-styles/index.js +132 -21
  628. package/tsconfig.json +1 -0
  629. package/tsconfig.tsbuildinfo +1 -1
  630. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -91,8 +91,8 @@ export default function useBlockSync( {
91
91
  [ clientId ]
92
92
  );
93
93
 
94
- const pendingChanges = useRef( { incoming: null, outgoing: [] } );
95
- const subscribed = useRef( false );
94
+ const pendingChangesRef = useRef( { incoming: null, outgoing: [] } );
95
+ const subscribedRef = useRef( false );
96
96
 
97
97
  const setControlledBlocks = () => {
98
98
  if ( ! controlledBlocks ) {
@@ -113,15 +113,15 @@ export default function useBlockSync( {
113
113
  const storeBlocks = controlledBlocks.map( ( block ) =>
114
114
  cloneBlock( block )
115
115
  );
116
- if ( subscribed.current ) {
117
- pendingChanges.current.incoming = storeBlocks;
116
+ if ( subscribedRef.current ) {
117
+ pendingChangesRef.current.incoming = storeBlocks;
118
118
  }
119
119
  __unstableMarkNextChangeAsNotPersistent();
120
120
  replaceInnerBlocks( clientId, storeBlocks );
121
121
  } );
122
122
  } else {
123
- if ( subscribed.current ) {
124
- pendingChanges.current.incoming = controlledBlocks;
123
+ if ( subscribedRef.current ) {
124
+ pendingChangesRef.current.incoming = controlledBlocks;
125
125
  }
126
126
  resetBlocks( controlledBlocks );
127
127
  }
@@ -153,7 +153,7 @@ export default function useBlockSync( {
153
153
 
154
154
  // Determine if blocks need to be reset when they change.
155
155
  useEffect( () => {
156
- if ( pendingChanges.current.outgoing.includes( controlledBlocks ) ) {
156
+ if ( pendingChangesRef.current.outgoing.includes( controlledBlocks ) ) {
157
157
  // Skip block reset if the value matches expected outbound sync
158
158
  // triggered by this component by a preceding change detection.
159
159
  // Only skip if the value matches expectation, since a reset should
@@ -161,18 +161,18 @@ export default function useBlockSync( {
161
161
  // to allow that the consumer may apply modifications to reflect
162
162
  // back on the editor.
163
163
  if (
164
- pendingChanges.current.outgoing[
165
- pendingChanges.current.outgoing.length - 1
164
+ pendingChangesRef.current.outgoing[
165
+ pendingChangesRef.current.outgoing.length - 1
166
166
  ] === controlledBlocks
167
167
  ) {
168
- pendingChanges.current.outgoing = [];
168
+ pendingChangesRef.current.outgoing = [];
169
169
  }
170
170
  } else if ( getBlocks( clientId ) !== controlledBlocks ) {
171
171
  // Reset changing value in all other cases than the sync described
172
172
  // above. Since this can be reached in an update following an out-
173
173
  // bound sync, unset the outbound value to avoid considering it in
174
174
  // subsequent renders.
175
- pendingChanges.current.outgoing = [];
175
+ pendingChangesRef.current.outgoing = [];
176
176
  setControlledBlocks();
177
177
 
178
178
  if ( controlledSelection ) {
@@ -185,19 +185,19 @@ export default function useBlockSync( {
185
185
  }
186
186
  }, [ controlledBlocks, clientId ] );
187
187
 
188
- const isMounted = useRef( false );
188
+ const isMountedRef = useRef( false );
189
189
 
190
190
  useEffect( () => {
191
191
  // On mount, controlled blocks are already set in the effect above.
192
- if ( ! isMounted.current ) {
193
- isMounted.current = true;
192
+ if ( ! isMountedRef.current ) {
193
+ isMountedRef.current = true;
194
194
  return;
195
195
  }
196
196
 
197
197
  // When the block becomes uncontrolled, it means its inner state has been reset
198
198
  // we need to take the blocks again from the external value property.
199
199
  if ( ! isControlled ) {
200
- pendingChanges.current.outgoing = [];
200
+ pendingChangesRef.current.outgoing = [];
201
201
  setControlledBlocks();
202
202
  }
203
203
  }, [ isControlled ] );
@@ -214,7 +214,7 @@ export default function useBlockSync( {
214
214
  let isPersistent = isLastBlockChangePersistent();
215
215
  let previousAreBlocksDifferent = false;
216
216
 
217
- subscribed.current = true;
217
+ subscribedRef.current = true;
218
218
  const unsubscribe = registry.subscribe( () => {
219
219
  // Sometimes, when changing block lists, lingering subscriptions
220
220
  // might trigger before they are cleaned up. If the block for which
@@ -243,10 +243,10 @@ export default function useBlockSync( {
243
243
  blocks = newBlocks;
244
244
  if (
245
245
  areBlocksDifferent &&
246
- ( pendingChanges.current.incoming ||
246
+ ( pendingChangesRef.current.incoming ||
247
247
  __unstableIsLastBlockChangeIgnored() )
248
248
  ) {
249
- pendingChanges.current.incoming = null;
249
+ pendingChangesRef.current.incoming = null;
250
250
  isPersistent = newIsPersistent;
251
251
  return;
252
252
  }
@@ -266,7 +266,7 @@ export default function useBlockSync( {
266
266
  // We need to be aware that it was caused by an outgoing change
267
267
  // so that we do not treat it as an incoming change later on,
268
268
  // which would cause a block reset.
269
- pendingChanges.current.outgoing.push( blocks );
269
+ pendingChangesRef.current.outgoing.push( blocks );
270
270
 
271
271
  // Inform the controlling entity that changes have been made to
272
272
  // the block-editor store they should be aware about.
@@ -286,7 +286,7 @@ export default function useBlockSync( {
286
286
  }, blockEditorStore );
287
287
 
288
288
  return () => {
289
- subscribed.current = false;
289
+ subscribedRef.current = false;
290
290
  unsubscribe();
291
291
  };
292
292
  }, [ registry, clientId ] );
@@ -27,9 +27,6 @@ import {
27
27
  InspectorControls,
28
28
  __experimentalResponsiveBlockControl as ResponsiveBlockControl,
29
29
  } from '@wordpress/block-editor';
30
- import {
31
- DimensionControl,
32
- } from '@wordpress/components';
33
30
 
34
31
  registerBlockType( 'my-plugin/my-block', {
35
32
  // ...
@@ -37,34 +34,13 @@ registerBlockType( 'my-plugin/my-block', {
37
34
  edit( { attributes, setAttributes } ) {
38
35
 
39
36
  const [ isResponsive, setIsResponsive ] = useState( false );
40
-
41
- // Used for example purposes only
42
- const sizeOptions = [
43
- {
44
- label: 'Small',
45
- value: 'small',
46
- },
47
- {
48
- label: 'Medium',
49
- value: 'medium',
50
- },
51
- {
52
- label: 'Large',
53
- value: 'large',
54
- },
55
- ];
56
-
57
37
  const { paddingSize } = attributes;
58
38
 
59
-
60
39
  // Your custom control can be anything you'd like to use.
61
- // You are not restricted to `DimensionControl`s, but this
62
- // makes life easier if dealing with standard CSS values.
63
- // see `packages/components/src/dimension-control/README.md`
64
40
  const paddingControl = ( labelComponent, viewport ) => {
65
41
  return (
66
- <DimensionControl
67
- __nextHasNoMarginBottom
42
+ <input
43
+ type="number"
68
44
  label={ viewport.label }
69
45
  onChange={ // handle update to padding value here }
70
46
  value={ paddingSize }
@@ -155,7 +131,7 @@ const renderDefaultControl = ( labelComponent, viewport ) => {
155
131
  // id: 'small',
156
132
  // label: 'All'
157
133
  // }
158
- return <DimensionControl label={ labelComponent } />;
134
+ return <SelectControl label={ labelComponent } />;
159
135
  };
160
136
  ```
161
137
 
@@ -15,7 +15,7 @@
15
15
  outline: none;
16
16
 
17
17
  [data-rich-text-format-boundary] {
18
- border-radius: 2px;
18
+ border-radius: $radius-small;
19
19
  }
20
20
  }
21
21
  }
@@ -26,10 +26,15 @@ export default ( props ) => ( element ) => {
26
26
  preserveWhiteSpace,
27
27
  pastePlainText,
28
28
  } = props.current;
29
+ const { ownerDocument } = element;
30
+ const { defaultView } = ownerDocument;
31
+ const { anchorNode, focusNode } = defaultView.getSelection();
32
+ const containsSelection =
33
+ element.contains( anchorNode ) && element.contains( focusNode );
29
34
 
30
35
  // The event listener is attached to the window, so we need to check if
31
36
  // the target is the element.
32
- if ( event.target !== element ) {
37
+ if ( ! containsSelection ) {
33
38
  return;
34
39
  }
35
40
 
@@ -20,8 +20,9 @@ import {
20
20
  removeFormat,
21
21
  } from '@wordpress/rich-text';
22
22
  import { Popover } from '@wordpress/components';
23
- import { getBlockType, store as blocksStore } from '@wordpress/blocks';
23
+ import { store as blocksStore } from '@wordpress/blocks';
24
24
  import deprecated from '@wordpress/deprecated';
25
+ import { __, sprintf } from '@wordpress/i18n';
25
26
 
26
27
  /**
27
28
  * Internal dependencies
@@ -163,49 +164,47 @@ export function RichTextWrapper(
163
164
  isBlockSelected,
164
165
  ] );
165
166
 
166
- const disableBoundBlocks = useSelect(
167
+ const { disableBoundBlock, bindingsPlaceholder } = useSelect(
167
168
  ( select ) => {
168
- // Disable Rich Text editing if block bindings specify that.
169
- let _disableBoundBlocks = false;
170
- if ( blockBindings && canBindBlock( blockName ) ) {
171
- const blockTypeAttributes =
172
- getBlockType( blockName ).attributes;
173
- const { getBlockBindingsSource } = unlock(
174
- select( blocksStore )
175
- );
176
- for ( const [ attribute, binding ] of Object.entries(
177
- blockBindings
178
- ) ) {
179
- if (
180
- blockTypeAttributes?.[ attribute ]?.source !==
181
- 'rich-text'
182
- ) {
183
- break;
184
- }
185
-
186
- // If the source is not defined, or if its value of `canUserEditValue` is `false`, disable it.
187
- const blockBindingsSource = getBlockBindingsSource(
188
- binding.source
189
- );
190
- if (
191
- ! blockBindingsSource?.canUserEditValue?.( {
192
- select,
193
- context: blockContext,
194
- args: binding.args,
195
- } )
196
- ) {
197
- _disableBoundBlocks = true;
198
- break;
199
- }
200
- }
169
+ if (
170
+ ! blockBindings?.[ identifier ] ||
171
+ ! canBindBlock( blockName )
172
+ ) {
173
+ return {};
201
174
  }
202
175
 
203
- return _disableBoundBlocks;
176
+ const relatedBinding = blockBindings[ identifier ];
177
+ const { getBlockBindingsSource } = unlock( select( blocksStore ) );
178
+ const blockBindingsSource = getBlockBindingsSource(
179
+ relatedBinding.source
180
+ );
181
+
182
+ const _disableBoundBlock =
183
+ ! blockBindingsSource?.canUserEditValue?.( {
184
+ select,
185
+ context: blockContext,
186
+ args: relatedBinding.args,
187
+ } );
188
+
189
+ const _bindingsPlaceholder = _disableBoundBlock
190
+ ? relatedBinding?.args?.key || blockBindingsSource?.label
191
+ : sprintf(
192
+ /* translators: %s: source label or key */
193
+ __( 'Add %s' ),
194
+ relatedBinding?.args?.key || blockBindingsSource?.label
195
+ );
196
+
197
+ return {
198
+ disableBoundBlock: _disableBoundBlock,
199
+ bindingsPlaceholder:
200
+ ( ! adjustedValue || adjustedValue.length === 0 ) &&
201
+ _bindingsPlaceholder,
202
+ };
204
203
  },
205
- [ blockBindings, blockName ]
204
+ [ blockBindings, identifier, blockName, blockContext, adjustedValue ]
206
205
  );
207
206
 
208
- const shouldDisableEditing = readOnly || disableBoundBlocks;
207
+ const shouldDisableEditing = readOnly || disableBoundBlock;
209
208
 
210
209
  const { getSelectionStart, getSelectionEnd, getBlockRootClientId } =
211
210
  useSelect( blockEditorStore );
@@ -335,7 +334,7 @@ export function RichTextWrapper(
335
334
  selectionStart,
336
335
  selectionEnd,
337
336
  onSelectionChange,
338
- placeholder,
337
+ placeholder: bindingsPlaceholder || placeholder,
339
338
  __unstableIsSelected: isSelected,
340
339
  __unstableDisableFormats: disableFormats,
341
340
  preserveWhiteSpace,
@@ -357,7 +356,19 @@ export function RichTextWrapper(
357
356
  const inputEvents = useRef( new Set() );
358
357
 
359
358
  function onFocus() {
360
- anchorRef.current?.focus();
359
+ let element = anchorRef.current;
360
+
361
+ if ( ! element ) {
362
+ return;
363
+ }
364
+
365
+ // Writing flow might be editable, so we should make sure focus goes to
366
+ // the root editable element.
367
+ while ( element.parentElement?.isContentEditable ) {
368
+ element = element.parentElement;
369
+ }
370
+
371
+ element.focus();
361
372
  }
362
373
 
363
374
  const registry = useRegistry();
@@ -392,9 +403,11 @@ export function RichTextWrapper(
392
403
  // Overridable props.
393
404
  role="textbox"
394
405
  aria-multiline={ ! disableLineBreaks }
395
- aria-label={ placeholder }
396
406
  aria-readonly={ shouldDisableEditing }
397
407
  { ...props }
408
+ aria-label={
409
+ bindingsPlaceholder || props[ 'aria-label' ] || placeholder
410
+ }
398
411
  { ...autocompleteProps }
399
412
  ref={ useMergeRefs( [
400
413
  // Rich text ref must be first because its focus listener
@@ -12,7 +12,7 @@
12
12
  }
13
13
 
14
14
  .components-toolbar {
15
- border-radius: $radius-block-ui;
15
+ border-radius: $radius-small;
16
16
  }
17
17
 
18
18
  .components-toolbar__control,
@@ -10,7 +10,7 @@ import { useDispatch } from '@wordpress/data';
10
10
  import { store as blockEditorStore } from '../../store';
11
11
 
12
12
  export function useMarkPersistent( { html, value } ) {
13
- const previousText = useRef();
13
+ const previousTextRef = useRef();
14
14
  const hasActiveFormats = !! value.activeFormats?.length;
15
15
  const { __unstableMarkLastChangeAsPersistent } =
16
16
  useDispatch( blockEditorStore );
@@ -18,18 +18,18 @@ export function useMarkPersistent( { html, value } ) {
18
18
  // Must be set synchronously to make sure it applies to the last change.
19
19
  useLayoutEffect( () => {
20
20
  // Ignore mount.
21
- if ( ! previousText.current ) {
22
- previousText.current = value.text;
21
+ if ( ! previousTextRef.current ) {
22
+ previousTextRef.current = value.text;
23
23
  return;
24
24
  }
25
25
 
26
26
  // Text input, so don't create an undo level for every character.
27
27
  // Create an undo level after 1 second of no input.
28
- if ( previousText.current !== value.text ) {
28
+ if ( previousTextRef.current !== value.text ) {
29
29
  const timeout = window.setTimeout( () => {
30
30
  __unstableMarkLastChangeAsPersistent();
31
31
  }, 1000 );
32
- previousText.current = value.text;
32
+ previousTextRef.current = value.text;
33
33
  return () => {
34
34
  window.clearTimeout( timeout );
35
35
  };
@@ -28,6 +28,8 @@ export default function SkipToSelectedBlock() {
28
28
 
29
29
  return selectedBlockClientId ? (
30
30
  <Button
31
+ // TODO: Switch to `true` (40px size) if possible
32
+ __next40pxDefaultSize={ false }
31
33
  variant="secondary"
32
34
  className="block-editor-skip-to-selected-block"
33
35
  onClick={ onClick }
@@ -19,6 +19,7 @@
19
19
  .spacing-sizes-control__range-control,
20
20
  .spacing-sizes-control__custom-value-range {
21
21
  flex: 1;
22
+ margin-bottom: 0; // Needed for some instances of the range control, such as the Spacer block.
22
23
  }
23
24
 
24
25
  .components-range-control__mark {
@@ -41,6 +41,8 @@ function ToolSelector( props, ref ) {
41
41
  <Dropdown
42
42
  renderToggle={ ( { isOpen, onToggle } ) => (
43
43
  <Button
44
+ // TODO: Switch to `true` (40px size) if possible
45
+ __next40pxDefaultSize={ false }
44
46
  { ...props }
45
47
  ref={ ref }
46
48
  icon={ mode === 'navigation' ? selectIcon : editIcon }
@@ -38,6 +38,8 @@ class URLInputButton extends Component {
38
38
  return (
39
39
  <div className="block-editor-url-input__button">
40
40
  <Button
41
+ // TODO: Switch to `true` (40px size) if possible
42
+ __next40pxDefaultSize={ false }
41
43
  icon={ link }
42
44
  label={ buttonLabel }
43
45
  onClick={ this.toggle }
@@ -51,6 +53,8 @@ class URLInputButton extends Component {
51
53
  >
52
54
  <div className="block-editor-url-input__button-modal-line">
53
55
  <Button
56
+ // TODO: Switch to `true` (40px size) if possible
57
+ __next40pxDefaultSize={ false }
54
58
  className="block-editor-url-input__back"
55
59
  icon={ arrowLeft }
56
60
  label={ __( 'Close' ) }
@@ -61,6 +65,8 @@ class URLInputButton extends Component {
61
65
  onChange={ onChange }
62
66
  />
63
67
  <Button
68
+ // TODO: Switch to `true` (40px size) if possible
69
+ __next40pxDefaultSize={ false }
64
70
  icon={ keyboardReturn }
65
71
  label={ __( 'Submit' ) }
66
72
  type="submit"
@@ -539,6 +539,8 @@ class URLInput extends Component {
539
539
  >
540
540
  { suggestions.map( ( suggestion, index ) => (
541
541
  <Button
542
+ // TODO: Switch to `true` (40px size) if possible
543
+ __next40pxDefaultSize={ false }
542
544
  { ...buildSuggestionItemProps( suggestion, index ) }
543
545
  key={ suggestion.id }
544
546
  className={ clsx(
@@ -22,7 +22,12 @@ const TestURLPopover = () => {
22
22
 
23
23
  return (
24
24
  <>
25
- <Button onClick={ () => setVisiblility( true ) }>Edit URL</Button>
25
+ <Button
26
+ __next40pxDefaultSize
27
+ onClick={ () => setVisiblility( true ) }
28
+ >
29
+ Edit URL
30
+ </Button>
26
31
  { isVisible && (
27
32
  <URLPopover
28
33
  onClose={ close }
@@ -37,6 +42,7 @@ const TestURLPopover = () => {
37
42
  <form onSubmit={ close }>
38
43
  <input type="url" value={ url } onChange={ setUrl } />
39
44
  <Button
45
+ __next40pxDefaultSize
40
46
  icon={ keyboardReturn }
41
47
  label={ __( 'Apply' ) }
42
48
  type="submit"
@@ -313,8 +313,8 @@ export default function useBlockDropZone( {
313
313
  getAllowedBlocks,
314
314
  isDragging,
315
315
  isGroupable,
316
- getSettings,
317
316
  isZoomOutMode,
317
+ getSectionRootClientId,
318
318
  } = unlock( useSelect( blockEditorStore ) );
319
319
  const {
320
320
  showInsertionPoint,
@@ -360,7 +360,7 @@ export default function useBlockDropZone( {
360
360
  return;
361
361
  }
362
362
 
363
- const { sectionRootClientId } = unlock( getSettings() );
363
+ const sectionRootClientId = getSectionRootClientId();
364
364
 
365
365
  // In Zoom Out mode, if the target is not the section root provided by settings then
366
366
  // do not allow dropping as the drop target is not within the root (that which is
@@ -492,6 +492,8 @@ export default function useBlockDropZone( {
492
492
  getBlockNamesByClientId,
493
493
  getDraggedBlockClientIds,
494
494
  getBlockType,
495
+ getSectionRootClientId,
496
+ isZoomOutMode,
495
497
  getBlocks,
496
498
  getBlockListSettings,
497
499
  dropZoneElement,
@@ -504,8 +506,6 @@ export default function useBlockDropZone( {
504
506
  isGroupable,
505
507
  getBlockVariations,
506
508
  getGroupingBlockName,
507
- getSettings,
508
- isZoomOutMode,
509
509
  ]
510
510
  ),
511
511
  200
@@ -7,7 +7,7 @@
7
7
 
8
8
  // Block UI appearance.
9
9
  border: $border-width solid $gray-900;
10
- border-radius: $radius-block-ui;
10
+ border-radius: $radius-small;
11
11
  background-color: $white;
12
12
 
13
13
  .block-editor-warning__message {
@@ -30,21 +30,14 @@
30
30
  flex-wrap: wrap;
31
31
  align-items: baseline;
32
32
  width: 100%;
33
+ gap: $grid-unit-15;
33
34
  }
34
35
 
35
36
  .block-editor-warning__actions {
36
37
  align-items: center;
37
38
  display: flex;
38
- margin-top: 1em;
39
+ gap: $grid-unit-10;
39
40
  }
40
-
41
- .block-editor-warning__action {
42
- margin: 0 $grid-unit-10 0 0;
43
- }
44
- }
45
-
46
- .block-editor-warning__secondary {
47
- margin: auto 0 auto $grid-unit-10;
48
41
  }
49
42
 
50
43
  .components-popover.block-editor-warning__dropdown {
@@ -23,6 +23,7 @@ import useSelectionObserver from './use-selection-observer';
23
23
  import useClickSelection from './use-click-selection';
24
24
  import useInput from './use-input';
25
25
  import useClipboardHandler from './use-clipboard-handler';
26
+ import useEventRedirect from './use-event-redirect';
26
27
  import { store as blockEditorStore } from '../../store';
27
28
 
28
29
  export function useWritingFlow() {
@@ -65,6 +66,7 @@ export function useWritingFlow() {
65
66
  },
66
67
  [ hasMultiSelection ]
67
68
  ),
69
+ useEventRedirect(),
68
70
  ] ),
69
71
  after,
70
72
  ];
@@ -19,6 +19,7 @@ import { useRefEffect } from '@wordpress/compose';
19
19
  */
20
20
  import { getBlockClientId, isInSameBlock } from '../../utils/dom';
21
21
  import { store as blockEditorStore } from '../../store';
22
+ import { getSelectionRoot } from './utils';
22
23
 
23
24
  /**
24
25
  * Returns true if the element should consider edge navigation upon a keyboard
@@ -190,8 +191,7 @@ export default function useArrowNav() {
190
191
  return;
191
192
  }
192
193
 
193
- const { keyCode, target, shiftKey, ctrlKey, altKey, metaKey } =
194
- event;
194
+ const { keyCode, shiftKey, ctrlKey, altKey, metaKey } = event;
195
195
  const isUp = keyCode === UP;
196
196
  const isDown = keyCode === DOWN;
197
197
  const isLeft = keyCode === LEFT;
@@ -233,6 +233,11 @@ export default function useArrowNav() {
233
233
  return;
234
234
  }
235
235
 
236
+ const target =
237
+ ownerDocument.activeElement === node
238
+ ? getSelectionRoot( ownerDocument )
239
+ : event.target;
240
+
236
241
  // Abort if our current target is not a candidate for navigation
237
242
  // (e.g. preserve native input behaviors).
238
243
  if ( ! isNavigationCandidate( target, keyCode, hasModifier ) ) {
@@ -274,6 +279,7 @@ export default function useArrowNav() {
274
279
  ( altKey ? isHorizontalEdge( target, isReverseDir ) : true ) &&
275
280
  ! keepCaretInsideBlock
276
281
  ) {
282
+ node.contentEditable = false;
277
283
  const closestTabbable = getClosestTabbable(
278
284
  target,
279
285
  isReverse,
@@ -297,6 +303,7 @@ export default function useArrowNav() {
297
303
  isHorizontalEdge( target, isReverseDir ) &&
298
304
  ! keepCaretInsideBlock
299
305
  ) {
306
+ node.contentEditable = false;
300
307
  const closestTabbable = getClosestTabbable(
301
308
  target,
302
309
  isReverseDir,
@@ -0,0 +1,72 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useRefEffect } from '@wordpress/compose';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { getSelectionRoot } from './utils';
10
+
11
+ /**
12
+ * Whenever content editable is enabled on writing flow, it will have focus, so
13
+ * we need to dispatch some events to the root of the selection to ensure
14
+ * compatibility with rich text. In the future, perhaps the rich text event
15
+ * handlers should be attached to the window instead.
16
+ *
17
+ * Alternatively, we could try to find a way to always maintain rich text focus.
18
+ */
19
+ export default function useEventRedirect() {
20
+ return useRefEffect( ( node ) => {
21
+ function onInput( event ) {
22
+ if ( event.target !== node ) {
23
+ return;
24
+ }
25
+
26
+ const { ownerDocument } = node;
27
+ const { defaultView } = ownerDocument;
28
+ const prototype = Object.getPrototypeOf( event );
29
+ const constructorName = prototype.constructor.name;
30
+ const Constructor = defaultView[ constructorName ];
31
+ const root = getSelectionRoot( ownerDocument );
32
+
33
+ if ( ! root || root === node ) {
34
+ return;
35
+ }
36
+
37
+ const init = {};
38
+
39
+ for ( const key in event ) {
40
+ init[ key ] = event[ key ];
41
+ }
42
+
43
+ init.bubbles = false;
44
+
45
+ const newEvent = new Constructor( event.type, init );
46
+ const cancelled = ! root.dispatchEvent( newEvent );
47
+
48
+ if ( cancelled ) {
49
+ event.preventDefault();
50
+ }
51
+ }
52
+
53
+ const events = [
54
+ 'beforeinput',
55
+ 'input',
56
+ 'compositionstart',
57
+ 'compositionend',
58
+ 'compositionupdate',
59
+ 'keydown',
60
+ ];
61
+
62
+ events.forEach( ( eventType ) => {
63
+ node.addEventListener( eventType, onInput );
64
+ } );
65
+
66
+ return () => {
67
+ events.forEach( ( eventType ) => {
68
+ node.removeEventListener( eventType, onInput );
69
+ } );
70
+ };
71
+ }, [] );
72
+ }