@wordpress/block-editor 15.22.1 → 16.0.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 (700) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/build/autocompleters/block.cjs +10 -2
  3. package/build/autocompleters/block.cjs.map +2 -2
  4. package/build/components/background-image-control/index.cjs +0 -2
  5. package/build/components/background-image-control/index.cjs.map +2 -2
  6. package/build/components/block-canvas/index.cjs +6 -1
  7. package/build/components/block-canvas/index.cjs.map +2 -2
  8. package/build/components/block-controls/groups.cjs +3 -1
  9. package/build/components/block-controls/groups.cjs.map +2 -2
  10. package/build/components/block-edit/edit.cjs +10 -18
  11. package/build/components/block-edit/edit.cjs.map +2 -2
  12. package/build/components/block-inspector/edit-contents.cjs +3 -0
  13. package/build/components/block-inspector/edit-contents.cjs.map +3 -3
  14. package/build/components/block-inspector/index.cjs +18 -36
  15. package/build/components/block-inspector/index.cjs.map +2 -2
  16. package/build/components/block-list/block-invalid-warning.cjs +8 -19
  17. package/build/components/block-list/block-invalid-warning.cjs.map +2 -2
  18. package/build/components/block-list/block.cjs +9 -3
  19. package/build/components/block-list/block.cjs.map +3 -3
  20. package/build/components/block-list/index.cjs +1 -3
  21. package/build/components/block-list/index.cjs.map +2 -2
  22. package/build/components/block-list/use-block-props/index.cjs +3 -1
  23. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  24. package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
  25. package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
  26. package/build/components/block-list/use-block-props/use-focus-handler.cjs +12 -4
  27. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  28. package/build/components/block-styles/use-styles-for-block.cjs +2 -1
  29. package/build/components/block-styles/use-styles-for-block.cjs.map +2 -2
  30. package/build/components/block-title/use-block-display-title.cjs +7 -2
  31. package/build/components/block-title/use-block-display-title.cjs.map +2 -2
  32. package/build/components/block-toolbar/block-toolbar-icon.cjs +10 -14
  33. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  34. package/build/components/block-toolbar/index.cjs +43 -24
  35. package/build/components/block-toolbar/index.cjs.map +2 -2
  36. package/build/components/block-tools/index.cjs +7 -2
  37. package/build/components/block-tools/index.cjs.map +2 -2
  38. package/build/components/block-variation-transforms/index.cjs +0 -1
  39. package/build/components/block-variation-transforms/index.cjs.map +2 -2
  40. package/build/components/block-visibility/modal.cjs +20 -6
  41. package/build/components/block-visibility/modal.cjs.map +2 -2
  42. package/build/components/block-visibility/use-block-visibility.cjs +16 -6
  43. package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
  44. package/build/components/block-visibility/utils.cjs +15 -2
  45. package/build/components/block-visibility/utils.cjs.map +3 -3
  46. package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
  47. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  48. package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
  49. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  50. package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
  51. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  52. package/build/components/child-layout-control/index.cjs +0 -6
  53. package/build/components/child-layout-control/index.cjs.map +2 -2
  54. package/build/components/colors-gradients/control.cjs +5 -5
  55. package/build/components/colors-gradients/control.cjs.map +2 -2
  56. package/build/components/date-format-picker/index.cjs +0 -1
  57. package/build/components/date-format-picker/index.cjs.map +2 -2
  58. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +1 -2
  59. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
  60. package/build/components/dimensions-tool/scale-tool.cjs +0 -1
  61. package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
  62. package/build/components/dimensions-tool/width-height-tool.cjs +2 -4
  63. package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
  64. package/build/components/font-appearance-control/index.cjs +6 -25
  65. package/build/components/font-appearance-control/index.cjs.map +3 -3
  66. package/build/components/font-family/index.cjs +6 -15
  67. package/build/components/font-family/index.cjs.map +3 -3
  68. package/build/components/font-sizes/font-size-picker.cjs +1 -2
  69. package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
  70. package/build/components/global-styles/border-panel.cjs +0 -1
  71. package/build/components/global-styles/border-panel.cjs.map +2 -2
  72. package/build/components/global-styles/dimensions-panel.cjs +0 -3
  73. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  74. package/build/components/global-styles/state-control-badges.cjs +39 -3
  75. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  76. package/build/components/global-styles/typography-panel.cjs +4 -11
  77. package/build/components/global-styles/typography-panel.cjs.map +2 -2
  78. package/build/components/height-control/index.cjs +0 -2
  79. package/build/components/height-control/index.cjs.map +2 -2
  80. package/build/components/html-element-control/index.cjs +0 -1
  81. package/build/components/html-element-control/index.cjs.map +2 -2
  82. package/build/components/image-editor/index.cjs +5 -0
  83. package/build/components/image-editor/index.cjs.map +3 -3
  84. package/build/components/image-editor/zoom-dropdown.cjs +0 -1
  85. package/build/components/image-editor/zoom-dropdown.cjs.map +2 -2
  86. package/build/components/image-size-control/index.cjs +3 -7
  87. package/build/components/image-size-control/index.cjs.map +2 -2
  88. package/build/components/inner-content/index.cjs +107 -0
  89. package/build/components/inner-content/index.cjs.map +7 -0
  90. package/build/components/inserter/hooks/use-block-types-state.cjs +10 -2
  91. package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
  92. package/build/components/inserter/media-tab/hooks.cjs +67 -12
  93. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  94. package/build/components/inserter/media-tab/media-list.cjs +3 -1
  95. package/build/components/inserter/media-tab/media-list.cjs.map +2 -2
  96. package/build/components/inserter/media-tab/media-panel.cjs +287 -28
  97. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  98. package/build/components/inserter/media-tab/media-preview.cjs +32 -17
  99. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  100. package/build/components/inserter/media-tab/media-tab.cjs +26 -6
  101. package/build/components/inserter/media-tab/media-tab.cjs.map +2 -2
  102. package/build/components/inserter/mobile-tab-navigation.cjs +6 -1
  103. package/build/components/inserter/mobile-tab-navigation.cjs.map +2 -2
  104. package/build/components/inserter/no-results.cjs +2 -2
  105. package/build/components/inserter/no-results.cjs.map +2 -2
  106. package/build/components/inserter/preview-panel.cjs +2 -1
  107. package/build/components/inserter/preview-panel.cjs.map +2 -2
  108. package/build/components/inserter-list-item/index.cjs +8 -2
  109. package/build/components/inserter-list-item/index.cjs.map +2 -2
  110. package/build/components/keyboard-shortcuts/index.cjs +19 -11
  111. package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
  112. package/build/components/letter-spacing-control/index.cjs +0 -24
  113. package/build/components/letter-spacing-control/index.cjs.map +3 -3
  114. package/build/components/line-height-control/index.cjs +6 -22
  115. package/build/components/line-height-control/index.cjs.map +3 -3
  116. package/build/components/list-view/block-select-button.cjs +90 -84
  117. package/build/components/list-view/block-select-button.cjs.map +2 -2
  118. package/build/components/list-view/block.cjs +61 -21
  119. package/build/components/list-view/block.cjs.map +2 -2
  120. package/build/components/list-view/expander.cjs +1 -1
  121. package/build/components/list-view/expander.cjs.map +2 -2
  122. package/build/components/list-view/use-list-view-client-ids.cjs +2 -2
  123. package/build/components/list-view/use-list-view-client-ids.cjs.map +2 -2
  124. package/build/components/media-placeholder/index.cjs +0 -1
  125. package/build/components/media-placeholder/index.cjs.map +2 -2
  126. package/build/components/observe-typing/index.cjs +4 -3
  127. package/build/components/observe-typing/index.cjs.map +2 -2
  128. package/build/components/preset-input-control/custom-value-controls.cjs +1 -3
  129. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  130. package/build/components/preset-input-control/index.cjs +1 -3
  131. package/build/components/preset-input-control/index.cjs.map +2 -2
  132. package/build/components/resolution-tool/index.cjs +1 -2
  133. package/build/components/resolution-tool/index.cjs.map +2 -2
  134. package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
  135. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  136. package/build/components/rich-text/event-listeners/delete.cjs +2 -3
  137. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  138. package/build/components/rich-text/event-listeners/enter.cjs +3 -2
  139. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  140. package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
  141. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  142. package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
  143. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  144. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
  145. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  146. package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
  147. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  148. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
  149. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  150. package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
  151. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  152. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
  153. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  154. package/build/components/rich-text/index.cjs +66 -17
  155. package/build/components/rich-text/index.cjs.map +2 -2
  156. package/build/components/text-alignment-control/index.cjs +0 -1
  157. package/build/components/text-alignment-control/index.cjs.map +2 -2
  158. package/build/components/text-decoration-control/index.cjs +0 -1
  159. package/build/components/text-decoration-control/index.cjs.map +2 -2
  160. package/build/components/text-indent-control/index.cjs +0 -8
  161. package/build/components/text-indent-control/index.cjs.map +2 -2
  162. package/build/components/text-transform-control/index.cjs +0 -1
  163. package/build/components/text-transform-control/index.cjs.map +2 -2
  164. package/build/components/typewriter/index.cjs +129 -136
  165. package/build/components/typewriter/index.cjs.map +3 -3
  166. package/build/components/use-block-commands/index.cjs +21 -17
  167. package/build/components/use-block-commands/index.cjs.map +2 -2
  168. package/build/components/use-block-display-information/index.cjs +10 -8
  169. package/build/components/use-block-display-information/index.cjs.map +2 -2
  170. package/build/components/use-on-block-drop/index.cjs +3 -7
  171. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  172. package/build/components/use-resize-canvas/index.cjs +16 -53
  173. package/build/components/use-resize-canvas/index.cjs.map +3 -3
  174. package/build/components/writing-flow/index.cjs +12 -1
  175. package/build/components/writing-flow/index.cjs.map +3 -3
  176. package/build/components/writing-flow/use-arrow-nav.cjs +18 -5
  177. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  178. package/build/components/writing-flow/use-click-selection.cjs +2 -2
  179. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  180. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  181. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  182. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  183. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  184. package/build/components/writing-flow/use-editable-root.cjs +112 -0
  185. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  186. package/build/components/writing-flow/use-home-end.cjs +64 -0
  187. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  188. package/build/components/writing-flow/use-input.cjs +15 -5
  189. package/build/components/writing-flow/use-input.cjs.map +2 -2
  190. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  191. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  192. package/build/components/writing-flow/use-select-all.cjs +14 -2
  193. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  194. package/build/components/writing-flow/use-selection-observer.cjs +126 -20
  195. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  196. package/build/components/writing-flow/utils.cjs +39 -2
  197. package/build/components/writing-flow/utils.cjs.map +2 -2
  198. package/build/components/writing-mode-control/index.cjs +0 -1
  199. package/build/components/writing-mode-control/index.cjs.map +2 -2
  200. package/build/hooks/background.cjs +3 -2
  201. package/build/hooks/background.cjs.map +2 -2
  202. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  203. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  204. package/build/hooks/elements.cjs +1 -1
  205. package/build/hooks/elements.cjs.map +2 -2
  206. package/build/hooks/font-size.cjs +1 -2
  207. package/build/hooks/font-size.cjs.map +2 -2
  208. package/build/hooks/grid-visualizer.cjs +5 -3
  209. package/build/hooks/grid-visualizer.cjs.map +2 -2
  210. package/build/hooks/layout-child.cjs +22 -12
  211. package/build/hooks/layout-child.cjs.map +3 -3
  212. package/build/hooks/layout.cjs +33 -16
  213. package/build/hooks/layout.cjs.map +3 -3
  214. package/build/hooks/position.cjs +36 -16
  215. package/build/hooks/position.cjs.map +2 -2
  216. package/build/hooks/states.cjs +32 -23
  217. package/build/hooks/states.cjs.map +3 -3
  218. package/build/hooks/style.cjs +31 -9
  219. package/build/hooks/style.cjs.map +3 -3
  220. package/build/hooks/text-align.cjs +36 -6
  221. package/build/hooks/text-align.cjs.map +3 -3
  222. package/build/hooks/typography.cjs +1 -1
  223. package/build/hooks/typography.cjs.map +2 -2
  224. package/build/layouts/constrained.cjs +35 -27
  225. package/build/layouts/constrained.cjs.map +2 -2
  226. package/build/layouts/flex.cjs +27 -22
  227. package/build/layouts/flex.cjs.map +2 -2
  228. package/build/layouts/grid.cjs +51 -11
  229. package/build/layouts/grid.cjs.map +2 -2
  230. package/build/private-apis.cjs +4 -2
  231. package/build/private-apis.cjs.map +3 -3
  232. package/build/store/actions.cjs +2 -2
  233. package/build/store/actions.cjs.map +2 -2
  234. package/build/store/private-actions.cjs +16 -0
  235. package/build/store/private-actions.cjs.map +2 -2
  236. package/build/store/private-keys.cjs +3 -3
  237. package/build/store/private-keys.cjs.map +2 -2
  238. package/build/store/private-selectors.cjs +109 -12
  239. package/build/store/private-selectors.cjs.map +3 -3
  240. package/build/store/reducer.cjs +19 -3
  241. package/build/store/reducer.cjs.map +2 -2
  242. package/build/store/selectors.cjs +13 -0
  243. package/build/store/selectors.cjs.map +2 -2
  244. package/build/utils/block-bindings.cjs +29 -0
  245. package/build/utils/block-bindings.cjs.map +2 -2
  246. package/build/utils/dom.cjs +14 -0
  247. package/build/utils/dom.cjs.map +2 -2
  248. package/build-module/autocompleters/block.mjs +10 -2
  249. package/build-module/autocompleters/block.mjs.map +2 -2
  250. package/build-module/components/background-image-control/index.mjs +0 -2
  251. package/build-module/components/background-image-control/index.mjs.map +2 -2
  252. package/build-module/components/block-canvas/index.mjs +7 -2
  253. package/build-module/components/block-canvas/index.mjs.map +2 -2
  254. package/build-module/components/block-controls/groups.mjs +3 -1
  255. package/build-module/components/block-controls/groups.mjs.map +2 -2
  256. package/build-module/components/block-edit/edit.mjs +11 -18
  257. package/build-module/components/block-edit/edit.mjs.map +2 -2
  258. package/build-module/components/block-inspector/edit-contents.mjs +4 -1
  259. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  260. package/build-module/components/block-inspector/index.mjs +18 -36
  261. package/build-module/components/block-inspector/index.mjs.map +2 -2
  262. package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
  263. package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
  264. package/build-module/components/block-list/block.mjs +9 -3
  265. package/build-module/components/block-list/block.mjs.map +3 -3
  266. package/build-module/components/block-list/index.mjs +1 -3
  267. package/build-module/components/block-list/index.mjs.map +2 -2
  268. package/build-module/components/block-list/use-block-props/index.mjs +3 -1
  269. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  270. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  271. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  272. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +12 -4
  273. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  274. package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
  275. package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
  276. package/build-module/components/block-title/use-block-display-title.mjs +7 -2
  277. package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
  278. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
  279. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  280. package/build-module/components/block-toolbar/index.mjs +43 -24
  281. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  282. package/build-module/components/block-tools/index.mjs +7 -2
  283. package/build-module/components/block-tools/index.mjs.map +2 -2
  284. package/build-module/components/block-variation-transforms/index.mjs +0 -1
  285. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  286. package/build-module/components/block-visibility/modal.mjs +22 -10
  287. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  288. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  289. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  290. package/build-module/components/block-visibility/utils.mjs +18 -3
  291. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  292. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  293. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  294. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  295. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  296. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  297. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  298. package/build-module/components/child-layout-control/index.mjs +0 -6
  299. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  300. package/build-module/components/colors-gradients/control.mjs +5 -5
  301. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  302. package/build-module/components/date-format-picker/index.mjs +0 -1
  303. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  304. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
  305. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  306. package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
  307. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  308. package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
  309. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  310. package/build-module/components/font-appearance-control/index.mjs +6 -15
  311. package/build-module/components/font-appearance-control/index.mjs.map +2 -2
  312. package/build-module/components/font-family/index.mjs +6 -15
  313. package/build-module/components/font-family/index.mjs.map +2 -2
  314. package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
  315. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  316. package/build-module/components/global-styles/border-panel.mjs +0 -1
  317. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  318. package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
  319. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  320. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  321. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  322. package/build-module/components/global-styles/typography-panel.mjs +4 -11
  323. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  324. package/build-module/components/height-control/index.mjs +0 -2
  325. package/build-module/components/height-control/index.mjs.map +2 -2
  326. package/build-module/components/html-element-control/index.mjs +0 -1
  327. package/build-module/components/html-element-control/index.mjs.map +2 -2
  328. package/build-module/components/image-editor/index.mjs +5 -0
  329. package/build-module/components/image-editor/index.mjs.map +2 -2
  330. package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
  331. package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
  332. package/build-module/components/image-size-control/index.mjs +3 -7
  333. package/build-module/components/image-size-control/index.mjs.map +2 -2
  334. package/build-module/components/inner-content/index.mjs +82 -0
  335. package/build-module/components/inner-content/index.mjs.map +7 -0
  336. package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
  337. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  338. package/build-module/components/inserter/media-tab/hooks.mjs +66 -12
  339. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  340. package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
  341. package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
  342. package/build-module/components/inserter/media-tab/media-panel.mjs +297 -32
  343. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  344. package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
  345. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  346. package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
  347. package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
  348. package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
  349. package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
  350. package/build-module/components/inserter/no-results.mjs +2 -2
  351. package/build-module/components/inserter/no-results.mjs.map +2 -2
  352. package/build-module/components/inserter/preview-panel.mjs +2 -1
  353. package/build-module/components/inserter/preview-panel.mjs.map +2 -2
  354. package/build-module/components/inserter-list-item/index.mjs +8 -2
  355. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  356. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  357. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  358. package/build-module/components/letter-spacing-control/index.mjs +0 -14
  359. package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
  360. package/build-module/components/line-height-control/index.mjs +6 -12
  361. package/build-module/components/line-height-control/index.mjs.map +2 -2
  362. package/build-module/components/list-view/block-select-button.mjs +90 -84
  363. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  364. package/build-module/components/list-view/block.mjs +61 -21
  365. package/build-module/components/list-view/block.mjs.map +2 -2
  366. package/build-module/components/list-view/expander.mjs +1 -1
  367. package/build-module/components/list-view/expander.mjs.map +2 -2
  368. package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
  369. package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
  370. package/build-module/components/media-placeholder/index.mjs +0 -1
  371. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  372. package/build-module/components/observe-typing/index.mjs +4 -3
  373. package/build-module/components/observe-typing/index.mjs.map +2 -2
  374. package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
  375. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  376. package/build-module/components/preset-input-control/index.mjs +1 -3
  377. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  378. package/build-module/components/resolution-tool/index.mjs +1 -2
  379. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  380. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  381. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  382. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  383. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  384. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  385. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  386. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  387. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  388. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  389. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  390. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  391. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  392. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  393. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  394. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  395. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  396. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  397. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  398. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  399. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  400. package/build-module/components/rich-text/index.mjs +64 -13
  401. package/build-module/components/rich-text/index.mjs.map +2 -2
  402. package/build-module/components/text-alignment-control/index.mjs +0 -1
  403. package/build-module/components/text-alignment-control/index.mjs.map +2 -2
  404. package/build-module/components/text-decoration-control/index.mjs +0 -1
  405. package/build-module/components/text-decoration-control/index.mjs.map +2 -2
  406. package/build-module/components/text-indent-control/index.mjs +0 -8
  407. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  408. package/build-module/components/text-transform-control/index.mjs +0 -1
  409. package/build-module/components/text-transform-control/index.mjs.map +2 -2
  410. package/build-module/components/typewriter/index.mjs +129 -136
  411. package/build-module/components/typewriter/index.mjs.map +2 -2
  412. package/build-module/components/use-block-commands/index.mjs +21 -17
  413. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  414. package/build-module/components/use-block-display-information/index.mjs +10 -8
  415. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  416. package/build-module/components/use-on-block-drop/index.mjs +4 -7
  417. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  418. package/build-module/components/use-resize-canvas/index.mjs +6 -53
  419. package/build-module/components/use-resize-canvas/index.mjs.map +2 -2
  420. package/build-module/components/writing-flow/index.mjs +12 -1
  421. package/build-module/components/writing-flow/index.mjs.map +2 -2
  422. package/build-module/components/writing-flow/use-arrow-nav.mjs +19 -6
  423. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  424. package/build-module/components/writing-flow/use-click-selection.mjs +2 -2
  425. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  426. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  427. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  428. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  429. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  430. package/build-module/components/writing-flow/use-editable-root.mjs +86 -0
  431. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  432. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  433. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  434. package/build-module/components/writing-flow/use-input.mjs +15 -5
  435. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  436. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  437. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  438. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  439. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  440. package/build-module/components/writing-flow/use-selection-observer.mjs +128 -19
  441. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  442. package/build-module/components/writing-flow/utils.mjs +35 -1
  443. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  444. package/build-module/components/writing-mode-control/index.mjs +0 -1
  445. package/build-module/components/writing-mode-control/index.mjs.map +2 -2
  446. package/build-module/hooks/background.mjs +3 -2
  447. package/build-module/hooks/background.mjs.map +2 -2
  448. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  449. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  450. package/build-module/hooks/elements.mjs +1 -1
  451. package/build-module/hooks/elements.mjs.map +2 -2
  452. package/build-module/hooks/font-size.mjs +1 -2
  453. package/build-module/hooks/font-size.mjs.map +2 -2
  454. package/build-module/hooks/grid-visualizer.mjs +5 -3
  455. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  456. package/build-module/hooks/layout-child.mjs +22 -12
  457. package/build-module/hooks/layout-child.mjs.map +2 -2
  458. package/build-module/hooks/layout.mjs +32 -16
  459. package/build-module/hooks/layout.mjs.map +2 -2
  460. package/build-module/hooks/position.mjs +38 -18
  461. package/build-module/hooks/position.mjs.map +2 -2
  462. package/build-module/hooks/states.mjs +32 -23
  463. package/build-module/hooks/states.mjs.map +2 -2
  464. package/build-module/hooks/style.mjs +40 -11
  465. package/build-module/hooks/style.mjs.map +2 -2
  466. package/build-module/hooks/text-align.mjs +39 -10
  467. package/build-module/hooks/text-align.mjs.map +2 -2
  468. package/build-module/hooks/typography.mjs +1 -1
  469. package/build-module/hooks/typography.mjs.map +2 -2
  470. package/build-module/layouts/constrained.mjs +35 -27
  471. package/build-module/layouts/constrained.mjs.map +2 -2
  472. package/build-module/layouts/flex.mjs +27 -22
  473. package/build-module/layouts/flex.mjs.map +2 -2
  474. package/build-module/layouts/grid.mjs +52 -11
  475. package/build-module/layouts/grid.mjs.map +2 -2
  476. package/build-module/private-apis.mjs +5 -3
  477. package/build-module/private-apis.mjs.map +2 -2
  478. package/build-module/store/actions.mjs +3 -3
  479. package/build-module/store/actions.mjs.map +2 -2
  480. package/build-module/store/private-actions.mjs +14 -0
  481. package/build-module/store/private-actions.mjs.map +2 -2
  482. package/build-module/store/private-keys.mjs +2 -2
  483. package/build-module/store/private-keys.mjs.map +2 -2
  484. package/build-module/store/private-selectors.mjs +106 -12
  485. package/build-module/store/private-selectors.mjs.map +2 -2
  486. package/build-module/store/reducer.mjs +17 -3
  487. package/build-module/store/reducer.mjs.map +2 -2
  488. package/build-module/store/selectors.mjs +13 -0
  489. package/build-module/store/selectors.mjs.map +2 -2
  490. package/build-module/utils/block-bindings.mjs +28 -0
  491. package/build-module/utils/block-bindings.mjs.map +2 -2
  492. package/build-module/utils/dom.mjs +13 -0
  493. package/build-module/utils/dom.mjs.map +2 -2
  494. package/build-style/content-rtl.css +15 -14
  495. package/build-style/content.css +15 -14
  496. package/build-style/default-editor-styles-rtl.css +1 -1
  497. package/build-style/default-editor-styles.css +1 -1
  498. package/build-style/style-rtl.css +144 -47
  499. package/build-style/style.css +144 -47
  500. package/build-types/components/block-context/index.d.ts +7 -0
  501. package/build-types/components/block-context/index.d.ts.map +1 -1
  502. package/build-types/utils/block-bindings.d.ts +19 -0
  503. package/build-types/utils/block-bindings.d.ts.map +1 -1
  504. package/build-types/utils/dom.d.ts +11 -0
  505. package/build-types/utils/dom.d.ts.map +1 -1
  506. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  507. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  508. package/build-types/utils/pasting.d.ts +1 -1
  509. package/build-types/utils/pasting.d.ts.map +1 -1
  510. package/package.json +46 -44
  511. package/src/autocompleters/block.js +10 -3
  512. package/src/autocompleters/test/block.js +53 -0
  513. package/src/components/background-image-control/index.js +0 -2
  514. package/src/components/block-canvas/index.js +9 -2
  515. package/src/components/block-card/style.scss +1 -1
  516. package/src/components/block-controls/groups.js +2 -0
  517. package/src/components/block-edit/edit.js +13 -31
  518. package/src/components/block-inspector/edit-contents.js +5 -1
  519. package/src/components/block-inspector/index.js +25 -44
  520. package/src/components/block-list/block-invalid-warning.js +8 -19
  521. package/src/components/block-list/block.js +6 -0
  522. package/src/components/block-list/index.js +0 -2
  523. package/src/components/block-list/use-block-props/index.js +2 -0
  524. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  525. package/src/components/block-list/use-block-props/use-focus-handler.js +34 -9
  526. package/src/components/block-lock/style.scss +1 -1
  527. package/src/components/block-manager/style.scss +1 -1
  528. package/src/components/block-navigation/style.scss +1 -1
  529. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  530. package/src/components/block-quick-navigation/style.scss +1 -3
  531. package/src/components/block-styles/style.scss +2 -2
  532. package/src/components/block-styles/use-styles-for-block.js +1 -0
  533. package/src/components/block-title/use-block-display-title.js +7 -2
  534. package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
  535. package/src/components/block-toolbar/index.js +41 -18
  536. package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
  537. package/src/components/block-tools/index.js +7 -0
  538. package/src/components/block-types-list/style.scss +0 -1
  539. package/src/components/block-variation-transforms/index.js +0 -1
  540. package/src/components/block-visibility/modal.js +24 -10
  541. package/src/components/block-visibility/style.scss +1 -1
  542. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  543. package/src/components/block-visibility/test/utils.js +11 -0
  544. package/src/components/block-visibility/use-block-visibility.js +33 -11
  545. package/src/components/block-visibility/utils.js +31 -6
  546. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  547. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  548. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  549. package/src/components/button-block-appender/content.scss +1 -7
  550. package/src/components/child-layout-control/index.js +0 -6
  551. package/src/components/color-palette/test/__snapshots__/control.js.snap +13 -108
  552. package/src/components/colors-gradients/control.js +4 -4
  553. package/src/components/colors-gradients/style.scss +2 -2
  554. package/src/components/date-format-picker/index.js +0 -1
  555. package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
  556. package/src/components/dimensions-tool/scale-tool.js +0 -1
  557. package/src/components/dimensions-tool/width-height-tool.js +0 -2
  558. package/src/components/font-appearance-control/index.js +6 -19
  559. package/src/components/font-family/README.md +0 -9
  560. package/src/components/font-family/index.js +6 -19
  561. package/src/components/font-family/stories/index.story.jsx +1 -2
  562. package/src/components/font-sizes/font-size-picker.js +0 -1
  563. package/src/components/global-styles/border-panel.js +0 -1
  564. package/src/components/global-styles/dimensions-panel.js +0 -3
  565. package/src/components/global-styles/state-control-badges.js +45 -6
  566. package/src/components/global-styles/style.scss +5 -0
  567. package/src/components/global-styles/test/state-control-badges.js +65 -0
  568. package/src/components/global-styles/typography-panel.js +0 -7
  569. package/src/components/height-control/index.js +0 -2
  570. package/src/components/html-element-control/index.js +0 -1
  571. package/src/components/iframe/content.scss +3 -3
  572. package/src/components/image-editor/index.js +22 -0
  573. package/src/components/image-editor/zoom-dropdown.js +0 -1
  574. package/src/components/image-size-control/index.js +0 -4
  575. package/src/components/inner-content/index.js +119 -0
  576. package/src/components/inner-content/test/index.js +81 -0
  577. package/src/components/inserter/hooks/use-block-types-state.js +10 -2
  578. package/src/components/inserter/media-tab/hooks.js +114 -16
  579. package/src/components/inserter/media-tab/media-list.js +2 -0
  580. package/src/components/inserter/media-tab/media-panel.js +354 -19
  581. package/src/components/inserter/media-tab/media-preview.js +34 -17
  582. package/src/components/inserter/media-tab/media-tab.js +20 -2
  583. package/src/components/inserter/media-tab/test/hooks.js +267 -0
  584. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  585. package/src/components/inserter/mobile-tab-navigation.js +6 -1
  586. package/src/components/inserter/no-results.js +2 -2
  587. package/src/components/inserter/preview-panel.js +1 -0
  588. package/src/components/inserter/style.scss +115 -3
  589. package/src/components/inserter-list-item/index.js +8 -2
  590. package/src/components/inserter-list-item/style.scss +0 -15
  591. package/src/components/keyboard-shortcuts/index.js +28 -11
  592. package/src/components/letter-spacing-control/README.md +0 -8
  593. package/src/components/letter-spacing-control/index.js +5 -23
  594. package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
  595. package/src/components/line-height-control/README.md +0 -8
  596. package/src/components/line-height-control/index.js +6 -16
  597. package/src/components/line-height-control/stories/index.story.jsx +0 -1
  598. package/src/components/line-height-control/test/index.js +1 -7
  599. package/src/components/link-control/style.scss +2 -2
  600. package/src/components/link-control/test/index.js +6 -6
  601. package/src/components/link-picker/style.scss +1 -2
  602. package/src/components/link-picker/test/index.js +3 -1
  603. package/src/components/list-view/block-select-button.js +5 -1
  604. package/src/components/list-view/block.js +69 -23
  605. package/src/components/list-view/expander.js +5 -1
  606. package/src/components/list-view/style.scss +23 -5
  607. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  608. package/src/components/media-placeholder/index.js +0 -1
  609. package/src/components/multi-selection-inspector/style.scss +1 -1
  610. package/src/components/observe-typing/index.js +9 -4
  611. package/src/components/preset-input-control/custom-value-controls.js +0 -2
  612. package/src/components/preset-input-control/index.js +0 -2
  613. package/src/components/resolution-tool/index.js +0 -1
  614. package/src/components/responsive-block-control/style.scss +1 -1
  615. package/src/components/responsive-block-control/test/index.js +1 -5
  616. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  617. package/src/components/rich-text/event-listeners/delete.js +7 -4
  618. package/src/components/rich-text/event-listeners/enter.js +10 -4
  619. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  620. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  621. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  622. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  623. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  624. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  625. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  626. package/src/components/rich-text/index.js +94 -25
  627. package/src/components/skip-to-selected-block/style.scss +1 -1
  628. package/src/components/text-alignment-control/index.js +0 -1
  629. package/src/components/text-decoration-control/index.js +0 -1
  630. package/src/components/text-indent-control/index.js +7 -16
  631. package/src/components/text-transform-control/index.js +0 -1
  632. package/src/components/typewriter/index.js +228 -224
  633. package/src/components/use-block-commands/index.js +27 -17
  634. package/src/components/use-block-display-information/index.js +9 -13
  635. package/src/components/use-block-display-information/test/index.js +47 -9
  636. package/src/components/use-on-block-drop/index.js +4 -7
  637. package/src/components/use-resize-canvas/index.js +10 -71
  638. package/src/components/writing-flow/index.js +15 -1
  639. package/src/components/writing-flow/use-arrow-nav.js +39 -12
  640. package/src/components/writing-flow/use-click-selection.js +2 -3
  641. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  642. package/src/components/writing-flow/use-drag-selection.js +1 -14
  643. package/src/components/writing-flow/use-editable-root.js +182 -0
  644. package/src/components/writing-flow/use-home-end.js +63 -0
  645. package/src/components/writing-flow/use-input.js +25 -8
  646. package/src/components/writing-flow/use-multi-selection.js +2 -3
  647. package/src/components/writing-flow/use-select-all.js +33 -3
  648. package/src/components/writing-flow/use-selection-observer.js +197 -38
  649. package/src/components/writing-flow/utils.js +83 -0
  650. package/src/components/writing-mode-control/index.js +0 -1
  651. package/src/hooks/background.js +7 -9
  652. package/src/hooks/block-fields/link/styles.scss +1 -6
  653. package/src/hooks/block-fields/media/styles.scss +1 -6
  654. package/src/hooks/block-fields/rich-text/index.js +6 -9
  655. package/src/hooks/block-hooks.scss +15 -0
  656. package/src/hooks/elements.js +0 -1
  657. package/src/hooks/font-size.js +0 -1
  658. package/src/hooks/grid-visualizer.js +40 -36
  659. package/src/hooks/layout-child.js +19 -9
  660. package/src/hooks/layout.js +53 -35
  661. package/src/hooks/position.js +44 -23
  662. package/src/hooks/states.js +55 -28
  663. package/src/hooks/style.js +67 -17
  664. package/src/hooks/test/cross-origin-isolation.js +0 -4
  665. package/src/hooks/test/layout.js +75 -1
  666. package/src/hooks/test/style.js +29 -0
  667. package/src/hooks/test/text-align.js +34 -1
  668. package/src/hooks/text-align.js +41 -10
  669. package/src/hooks/typography.js +0 -1
  670. package/src/layouts/constrained.js +56 -29
  671. package/src/layouts/flex.js +5 -4
  672. package/src/layouts/grid.js +59 -9
  673. package/src/layouts/test/constrained.js +91 -0
  674. package/src/layouts/test/grid.js +71 -0
  675. package/src/private-apis.js +4 -2
  676. package/src/store/actions.js +43 -14
  677. package/src/store/private-actions.js +31 -0
  678. package/src/store/private-keys.js +1 -1
  679. package/src/store/private-selectors.js +209 -16
  680. package/src/store/reducer.js +37 -2
  681. package/src/store/selectors.js +41 -0
  682. package/src/store/test/actions.js +1 -1
  683. package/src/store/test/private-selectors.js +547 -10
  684. package/src/store/test/reducer.js +41 -13
  685. package/src/store/test/selectors.js +133 -0
  686. package/src/style.scss +1 -0
  687. package/src/utils/block-bindings.ts +50 -0
  688. package/src/utils/dom.ts +33 -0
  689. package/src/utils/test/block-bindings.js +181 -0
  690. package/build/components/rich-text/input-event.cjs +0 -50
  691. package/build/components/rich-text/input-event.cjs.map +0 -7
  692. package/build/components/rich-text/shortcut.cjs +0 -51
  693. package/build/components/rich-text/shortcut.cjs.map +0 -7
  694. package/build-module/components/rich-text/input-event.mjs +0 -25
  695. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  696. package/build-module/components/rich-text/shortcut.mjs +0 -26
  697. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  698. package/src/components/rich-text/input-event.js +0 -31
  699. package/src/components/rich-text/shortcut.js +0 -32
  700. package/src/components/use-resize-canvas/README.md +0 -37
@@ -125,8 +125,14 @@ function createBlockCompleter() {
125
125
  return ! ( /\S/.test( before ) || /\S/.test( after ) );
126
126
  },
127
127
  getOptionCompletion( inserterItem ) {
128
- const { name, initialAttributes, innerBlocks, syncStatus, blocks } =
129
- inserterItem;
128
+ const {
129
+ name,
130
+ initialAttributes,
131
+ innerBlocks,
132
+ innerContent,
133
+ syncStatus,
134
+ blocks,
135
+ } = inserterItem;
130
136
 
131
137
  return {
132
138
  action: 'replace',
@@ -140,7 +146,8 @@ function createBlockCompleter() {
140
146
  initialAttributes,
141
147
  createBlocksFromInnerBlocksTemplate(
142
148
  innerBlocks
143
- )
149
+ ),
150
+ innerContent
144
151
  ),
145
152
  };
146
153
  },
@@ -0,0 +1,53 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import blockCompleter from '../block';
10
+
11
+ describe( 'block autocompleter', () => {
12
+ beforeAll( () => {
13
+ registerBlockType( 'core/html', {
14
+ apiVersion: 3,
15
+ save: () => null,
16
+ category: 'text',
17
+ title: 'Custom HTML',
18
+ } );
19
+ registerBlockType( 'core/paragraph', {
20
+ apiVersion: 3,
21
+ save: ( { attributes } ) => attributes.content || null,
22
+ category: 'text',
23
+ title: 'Paragraph',
24
+ attributes: { content: { type: 'string', source: 'html' } },
25
+ } );
26
+ } );
27
+
28
+ afterAll( () => {
29
+ unregisterBlockType( 'core/html' );
30
+ unregisterBlockType( 'core/paragraph' );
31
+ } );
32
+
33
+ describe( 'getOptionCompletion', () => {
34
+ it( "carries a variation's innerContent onto the inserted block", () => {
35
+ const { action, value } = blockCompleter.getOptionCompletion( {
36
+ name: 'core/html',
37
+ initialAttributes: {},
38
+ innerBlocks: [ [ 'core/paragraph', { content: 'Editable' } ] ],
39
+ innerContent: [ '<div class="card">', null, '</div>' ],
40
+ } );
41
+
42
+ expect( action ).toBe( 'replace' );
43
+ expect( value.name ).toBe( 'core/html' );
44
+ expect( value.innerContent ).toEqual( [
45
+ '<div class="card">',
46
+ null,
47
+ '</div>',
48
+ ] );
49
+ expect( value.innerBlocks ).toHaveLength( 1 );
50
+ expect( value.innerBlocks[ 0 ].name ).toBe( 'core/paragraph' );
51
+ } );
52
+ } );
53
+ } );
@@ -579,7 +579,6 @@ function BackgroundSizeControls( {
579
579
  onChange={ toggleScrollWithPage }
580
580
  />
581
581
  <ToggleGroupControl
582
- size="__unstable-large"
583
582
  label={ __( 'Size' ) }
584
583
  value={ currentValueForToggle }
585
584
  onChange={ updateBackgroundSize }
@@ -618,7 +617,6 @@ function BackgroundSizeControls( {
618
617
  aria-label={ __( 'Background image width' ) }
619
618
  onChange={ updateBackgroundSize }
620
619
  value={ sizeValue }
621
- size="__unstable-large"
622
620
  __unstableInputWidth="100px"
623
621
  min={ 0 }
624
622
  placeholder={ __( 'Auto' ) }
@@ -14,7 +14,7 @@ import BlockTools from '../block-tools';
14
14
  import EditorStyles from '../editor-styles';
15
15
  import Iframe from '../iframe';
16
16
  import WritingFlow from '../writing-flow';
17
- import { useMouseMoveTypingReset } from '../observe-typing';
17
+ import { useMouseMoveTypingReset, useTypingObserver } from '../observe-typing';
18
18
  import { useBlockSelectionClearer } from '../block-selection-clearer';
19
19
  import { useBlockCommands } from '../use-block-commands';
20
20
  import { store as blockEditorStore } from '../../store';
@@ -60,7 +60,14 @@ export function ExperimentalBlockCanvas( {
60
60
  const resetTypingRef = useMouseMoveTypingReset();
61
61
  const clearerRef = useBlockSelectionClearer();
62
62
  const localRef = useRef();
63
- const contentRef = useMergeRefs( [ contentRefProp, clearerRef, localRef ] );
63
+ // Attached to the same node as the writing flow ref: the iframe body,
64
+ // or the WritingFlow element when the canvas is not iframed.
65
+ const contentRef = useMergeRefs( [
66
+ contentRefProp,
67
+ clearerRef,
68
+ localRef,
69
+ useTypingObserver(),
70
+ ] );
64
71
  const zoomLevel = useSelect(
65
72
  ( select ) => unlock( select( blockEditorStore ) ).getZoomLevel(),
66
73
  []
@@ -22,7 +22,7 @@
22
22
  }
23
23
 
24
24
  .block-editor-block-card__title {
25
- font-weight: $font-weight-medium;
25
+ font-weight: var(--wpds-typography-font-weight-emphasis);
26
26
  display: flex;
27
27
  align-items: center;
28
28
  flex-wrap: wrap;
@@ -8,6 +8,7 @@ const BlockControlsBlock = createSlotFill( 'BlockControlsBlock' );
8
8
  const BlockControlsInline = createSlotFill( 'BlockFormatControls' );
9
9
  const BlockControlsOther = createSlotFill( 'BlockControlsOther' );
10
10
  const BlockControlsParent = createSlotFill( 'BlockControlsParent' );
11
+ const BlockControlsStyleState = createSlotFill( 'BlockControlsStyleState' );
11
12
 
12
13
  const groups = {
13
14
  default: BlockControlsDefault,
@@ -15,6 +16,7 @@ const groups = {
15
16
  inline: BlockControlsInline,
16
17
  other: BlockControlsOther,
17
18
  parent: BlockControlsParent,
19
+ 'style-state': BlockControlsStyleState,
18
20
  };
19
21
 
20
22
  export default groups;
@@ -22,22 +22,13 @@ import { useCallback, useContext, useMemo } from '@wordpress/element';
22
22
  import BlockContext from '../block-context';
23
23
  import isURLLike from '../link-control/is-url-like';
24
24
  import {
25
+ getBlockBindingsContext,
25
26
  hasPatternOverridesDefaultBinding,
26
27
  replacePatternOverridesDefaultBinding,
27
28
  } from '../../utils/block-bindings';
28
29
  import { unlock } from '../../lock-unlock';
29
30
  import { PrivateBlockContext } from '../block-list/private-block-context';
30
31
 
31
- /**
32
- * Default value used for blocks which do not define their own context needs,
33
- * used to guarantee that a block's `context` prop will always be an object. It
34
- * is assigned as a constant since it is always expected to be an empty object,
35
- * and in order to avoid unnecessary React reconciliations of a changing object.
36
- *
37
- * @type {{}}
38
- */
39
- const DEFAULT_BLOCK_CONTEXT = {};
40
-
41
32
  const Edit = ( props ) => {
42
33
  const { name } = props;
43
34
  const blockType = getBlockType( name );
@@ -69,32 +60,23 @@ const EditWithGeneratedProps = ( props ) => {
69
60
  const { bindableAttributes } = useContext( PrivateBlockContext );
70
61
 
71
62
  const { blockBindings, context, hasPatternOverrides } = useMemo( () => {
72
- // Assign context values using the block type's declared context needs.
73
- const computedContext = blockType?.usesContext
74
- ? Object.fromEntries(
75
- Object.entries( blockContext ).filter( ( [ key ] ) =>
76
- blockType.usesContext.includes( key )
77
- )
78
- )
79
- : DEFAULT_BLOCK_CONTEXT;
80
- // Add context requested by Block Bindings sources.
81
- if ( attributes?.metadata?.bindings ) {
82
- Object.values( attributes?.metadata?.bindings || {} ).forEach(
83
- ( binding ) => {
84
- registeredSources[ binding?.source ]?.usesContext?.forEach(
85
- ( key ) => {
86
- computedContext[ key ] = blockContext[ key ];
87
- }
88
- );
89
- }
90
- );
91
- }
92
63
  return {
93
64
  blockBindings: replacePatternOverridesDefaultBinding(
94
65
  attributes?.metadata?.bindings,
95
66
  bindableAttributes
96
67
  ),
97
- context: computedContext,
68
+ // Assign context values using the block type's declared context
69
+ // needs, plus the context requested by the block's bindings
70
+ // sources.
71
+ context: getBlockBindingsContext(
72
+ blockContext,
73
+ blockType?.usesContext,
74
+ attributes?.metadata?.bindings
75
+ ? Object.values( attributes.metadata.bindings ).map(
76
+ ( binding ) => registeredSources[ binding?.source ]
77
+ )
78
+ : undefined
79
+ ),
98
80
  hasPatternOverrides: hasPatternOverridesDefaultBinding(
99
81
  attributes?.metadata?.bindings
100
82
  ),
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Button, __experimentalVStack as VStack } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
- import { useSelect } from '@wordpress/data';
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
7
  import { isReusableBlock, isTemplatePart } from '@wordpress/blocks';
8
8
 
9
9
  /**
@@ -59,11 +59,15 @@ function InlineEditButton( {
59
59
  editContentOnlySection,
60
60
  stopEditingContentOnlySection,
61
61
  } ) {
62
+ const { selectBlock } = useDispatch( blockEditorStore );
62
63
  const handleClick = () => {
63
64
  if ( ! editedContentOnlySection ) {
64
65
  editContentOnlySection( clientId );
66
+ selectBlock( clientId );
65
67
  } else {
66
68
  stopEditingContentOnlySection();
69
+ // Keep the selected section pattern or content block selected after exiting.
70
+ selectBlock( clientId );
67
71
  }
68
72
  };
69
73
 
@@ -45,7 +45,6 @@ import {
45
45
  hasViewportBlockStyleState,
46
46
  isDefaultBlockStyleState,
47
47
  } from '../../hooks/block-style-state';
48
- import { onViewportStateChangeKey } from '../../store/private-keys';
49
48
 
50
49
  function StyleInspectorSlots( {
51
50
  blockName,
@@ -150,7 +149,7 @@ function BlockInspector() {
150
149
  blockEditingMode,
151
150
  selectedBlockStyleState,
152
151
  showStateOnCanvas,
153
- onViewportStateChange,
152
+ isResponsiveEditing,
154
153
  } = useSelect( ( select ) => {
155
154
  const {
156
155
  getSelectedBlockClientId,
@@ -164,8 +163,8 @@ function BlockInspector() {
164
163
  getBlockEditingMode,
165
164
  getSelectedBlockStyleState,
166
165
  isSelectedBlockStyleStateShownOnCanvas,
166
+ isResponsiveEditing: _isResponsiveEditing,
167
167
  } = unlock( select( blockEditorStore ) );
168
- const blockEditorSettings = select( blockEditorStore ).getSettings();
169
168
  const { getBlockStyles } = select( blocksStore );
170
169
  const _selectedBlockClientId = getSelectedBlockClientId();
171
170
  const isWithinEditedSection = isWithinEditedContentOnlySection(
@@ -203,8 +202,7 @@ function BlockInspector() {
203
202
  showStateOnCanvas: isSelectedBlockStyleStateShownOnCanvas(
204
203
  _renderedBlockClientId
205
204
  ),
206
- onViewportStateChange:
207
- blockEditorSettings?.[ onViewportStateChangeKey ],
205
+ isResponsiveEditing: _isResponsiveEditing(),
208
206
  };
209
207
  }, [] );
210
208
 
@@ -339,7 +337,7 @@ function BlockInspector() {
339
337
  blockEditingMode={ blockEditingMode }
340
338
  selectedBlockStyleState={ selectedBlockStyleState }
341
339
  showStateOnCanvas={ showStateOnCanvas }
342
- onViewportStateChange={ onViewportStateChange }
340
+ isResponsiveEditing={ isResponsiveEditing }
343
341
  isBlockStyleStateSelected={ isBlockStyleStateSelected }
344
342
  />
345
343
  </BlockInspectorSingleBlockWrapper>
@@ -395,11 +393,15 @@ const BlockInspectorSingleBlock = ( {
395
393
  blockEditingMode,
396
394
  selectedBlockStyleState,
397
395
  showStateOnCanvas,
398
- onViewportStateChange,
399
- isBlockStyleStateSelected,
396
+ isResponsiveEditing,
400
397
  } ) => {
401
398
  const listViewRef = useRef( null );
402
399
  const hasMultipleTabs = availableTabs?.length > 1;
400
+ const hasPseudoState = hasPseudoBlockStyleState( selectedBlockStyleState );
401
+ const isEditingStyleState =
402
+ ( hasViewportBlockStyleState( selectedBlockStyleState ) &&
403
+ isResponsiveEditing ) ||
404
+ hasPseudoBlockStyleState( selectedBlockStyleState );
403
405
  const hasParentChildBlockCards =
404
406
  editedContentOnlySection &&
405
407
  editedContentOnlySection !== renderedBlockClientId;
@@ -415,32 +417,10 @@ const BlockInspectorSingleBlock = ( {
415
417
  setSelectedBlockStyleStateCanvasPreview,
416
418
  } = unlock( useDispatch( blockEditorStore ) );
417
419
  const onBlockStyleStateChange = ( value ) => {
418
- const nextSelectedBlockStyleState = {
419
- ...selectedBlockStyleState,
420
- ...value,
421
- };
422
-
423
- setSelectedBlockStyleState(
424
- renderedBlockClientId,
425
- nextSelectedBlockStyleState
426
- );
427
-
428
- if ( value.viewport ) {
429
- onViewportStateChange?.( {
430
- viewport: nextSelectedBlockStyleState.viewport,
431
- showStateOnCanvas,
432
- } );
433
- }
420
+ setSelectedBlockStyleState( renderedBlockClientId, value );
434
421
  };
435
422
  const onShowStateOnCanvasChange = ( value ) => {
436
423
  setSelectedBlockStyleStateCanvasPreview( renderedBlockClientId, value );
437
-
438
- if ( value ) {
439
- onViewportStateChange?.( {
440
- viewport: selectedBlockStyleState.viewport,
441
- showStateOnCanvas: value,
442
- } );
443
- }
444
424
  };
445
425
 
446
426
  return (
@@ -470,34 +450,37 @@ const BlockInspectorSingleBlock = ( {
470
450
  )
471
451
  }
472
452
  />
473
- { blockEditingMode === 'default' && isBlockStyleStateSelected && (
453
+ { blockEditingMode === 'default' && isEditingStyleState && (
474
454
  <Spacer paddingX={ 4 } paddingY={ 2 }>
475
- <ToggleControl
476
- label={ __( 'Show state on canvas' ) }
477
- checked={ showStateOnCanvas }
478
- onChange={ onShowStateOnCanvasChange }
479
- />
455
+ { hasPseudoState && (
456
+ <ToggleControl
457
+ label={ __( 'Show state on canvas' ) }
458
+ checked={ showStateOnCanvas }
459
+ onChange={ onShowStateOnCanvasChange }
460
+ />
461
+ ) }
480
462
  <BlockStateBadges
481
463
  name={ blockName }
482
464
  value={ selectedBlockStyleState }
465
+ isResponsiveEditing={ isResponsiveEditing }
483
466
  />
484
467
  </Spacer>
485
468
  ) }
486
469
  <ViewportVisibilityInfo clientId={ renderedBlockClientId } />
487
470
  <EditContents clientId={ renderedBlockClientId } />
488
- { ! isBlockStyleStateSelected && (
471
+ { ! isEditingStyleState && (
489
472
  <BlockVariationTransforms
490
473
  blockClientId={ renderedBlockClientId }
491
474
  />
492
475
  ) }
493
476
  <BlockInspectorPreTabsSlot />
494
- { isBlockStyleStateSelected && ! isSectionBlock && (
477
+ { isEditingStyleState && ! isSectionBlock && (
495
478
  <StyleStateInspectorSlots
496
479
  blockName={ blockName }
497
480
  selectedBlockStyleState={ selectedBlockStyleState }
498
481
  />
499
482
  ) }
500
- { ! isBlockStyleStateSelected && hasMultipleTabs && (
483
+ { ! isEditingStyleState && hasMultipleTabs && (
501
484
  <>
502
485
  <InspectorControlsTabs
503
486
  hasBlockStyles={ hasBlockStyles }
@@ -509,7 +492,7 @@ const BlockInspectorSingleBlock = ( {
509
492
  />
510
493
  </>
511
494
  ) }
512
- { ! isBlockStyleStateSelected && ! hasMultipleTabs && (
495
+ { ! isEditingStyleState && ! hasMultipleTabs && (
513
496
  <>
514
497
  { hasBlockStyles && (
515
498
  <BlockStyles clientId={ renderedBlockClientId } />
@@ -523,9 +506,7 @@ const BlockInspectorSingleBlock = ( {
523
506
  ) }
524
507
  </>
525
508
  ) }
526
- { ! isBlockStyleStateSelected && (
527
- <InspectorControlsLastItem.Slot />
528
- ) }
509
+ { ! isEditingStyleState && <InspectorControlsLastItem.Slot /> }
529
510
  <SkipToSelectedBlock key="back" />
530
511
  </div>
531
512
  );
@@ -20,7 +20,7 @@ const blockToBlocks = ( block ) =>
20
20
  } );
21
21
 
22
22
  export default function BlockInvalidWarning( { clientId } ) {
23
- const { block, canInsertHTMLBlock, canInsertClassicBlock } = useSelect(
23
+ const { block, canInsertHTMLBlock } = useSelect(
24
24
  ( select ) => {
25
25
  const { canInsertBlockType, getBlock, getBlockRootClientId } =
26
26
  select( blockEditorStore );
@@ -33,10 +33,6 @@ export default function BlockInvalidWarning( { clientId } ) {
33
33
  'core/html',
34
34
  rootClientId
35
35
  ),
36
- canInsertClassicBlock: canInsertBlockType(
37
- 'core/freeform',
38
- rootClientId
39
- ),
40
36
  };
41
37
  },
42
38
  [ clientId ]
@@ -48,16 +44,13 @@ export default function BlockInvalidWarning( { clientId } ) {
48
44
 
49
45
  const convert = useMemo(
50
46
  () => ( {
51
- toClassic() {
52
- const classicBlock = createBlock( 'core/freeform', {
53
- content: block.originalContent,
54
- } );
55
- return replaceBlock( block.clientId, classicBlock );
56
- },
57
47
  toHTML() {
58
- const htmlBlock = createBlock( 'core/html', {
59
- content: block.originalContent,
60
- } );
48
+ const htmlBlock = createBlock(
49
+ 'core/html',
50
+ {},
51
+ [],
52
+ [ block.originalContent ]
53
+ );
61
54
  return replaceBlock( block.clientId, htmlBlock );
62
55
  },
63
56
  toBlocks() {
@@ -88,12 +81,8 @@ export default function BlockInvalidWarning( { clientId } ) {
88
81
  title: __( 'Convert to HTML' ),
89
82
  onClick: convert.toHTML,
90
83
  },
91
- canInsertClassicBlock && {
92
- title: __( 'Convert to Classic Block' ),
93
- onClick: convert.toClassic,
94
- },
95
84
  ].filter( Boolean ),
96
- [ canInsertHTMLBlock, canInsertClassicBlock, convert ]
85
+ [ canInsertHTMLBlock, convert ]
97
86
  );
98
87
 
99
88
  return (
@@ -622,6 +622,7 @@ function BlockListBlockProvider( props ) {
622
622
  const blockVisibility = attributes?.metadata?.blockVisibility;
623
623
  const deviceType =
624
624
  settings?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';
625
+ const viewportSettings = settings?.__experimentalFeatures?.viewport;
625
626
 
626
627
  const hasLightBlockWrapper = blockType?.apiVersion > 1;
627
628
  const isMultiSelected = isBlockMultiSelected( clientId );
@@ -645,6 +646,7 @@ function BlockListBlockProvider( props ) {
645
646
  bindableAttributes,
646
647
  blockVisibility,
647
648
  deviceType,
649
+ viewportSettings,
648
650
  isMultiSelected,
649
651
  blockEditingMode,
650
652
  isEditingDisabled: blockEditingMode === 'disabled',
@@ -736,6 +738,7 @@ function BlockListBlockProvider( props ) {
736
738
  : false,
737
739
  blockVisibility,
738
740
  deviceType,
741
+ viewportSettings,
739
742
  };
740
743
  },
741
744
  [ clientId, rootClientId ]
@@ -753,6 +756,7 @@ function BlockListBlockProvider( props ) {
753
756
  const { isBlockCurrentlyHidden } = useBlockVisibility( {
754
757
  blockVisibility: selectedProps?.blockVisibility,
755
758
  deviceType: selectedProps?.deviceType,
759
+ viewportSettings: selectedProps?.viewportSettings,
756
760
  view: defaultViewRef.current,
757
761
  } );
758
762
 
@@ -817,6 +821,7 @@ function BlockListBlockProvider( props ) {
817
821
  bindableAttributes,
818
822
  blockVisibility,
819
823
  deviceType,
824
+ viewportSettings,
820
825
  } = selectedProps;
821
826
 
822
827
  const privateContext = {
@@ -856,6 +861,7 @@ function BlockListBlockProvider( props ) {
856
861
  bindableAttributes,
857
862
  blockVisibility,
858
863
  deviceType,
864
+ viewportSettings,
859
865
  };
860
866
 
861
867
  if (
@@ -35,7 +35,6 @@ import {
35
35
  BlockEditContextProvider,
36
36
  DEFAULT_BLOCK_EDIT_CONTEXT,
37
37
  } from '../block-edit/context';
38
- import { useTypingObserver } from '../observe-typing';
39
38
  import { ZoomOutSeparator } from './zoom-out-separator';
40
39
  import { unlock } from '../../lock-unlock';
41
40
 
@@ -113,7 +112,6 @@ function Root( { className, ...settings } ) {
113
112
  ref: useMergeRefs( [
114
113
  useBlockSelectionClearer(),
115
114
  useInBetweenInserter(),
116
- useTypingObserver(),
117
115
  ] ),
118
116
  className: clsx( 'is-root-container', className, {
119
117
  'is-outline-mode': isOutlineMode,
@@ -105,6 +105,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
105
105
  canMove,
106
106
  blockVisibility,
107
107
  deviceType,
108
+ viewportSettings,
108
109
  } = useContext( PrivateBlockContext );
109
110
 
110
111
  const defaultViewRef = useRefEffect( ( element ) => {
@@ -153,6 +154,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
153
154
  const { isBlockCurrentlyHidden } = useBlockVisibility( {
154
155
  blockVisibility,
155
156
  deviceType,
157
+ viewportSettings,
156
158
  view: defaultViewRef.current,
157
159
  } );
158
160
 
@@ -29,9 +29,8 @@ import { unlock } from '../../../lock-unlock';
29
29
  */
30
30
  export function useFocusFirstElement( { clientId, initialPosition } ) {
31
31
  const ref = useRef();
32
- const { isBlockSelected, isMultiSelecting, isZoomOut } = unlock(
33
- useSelect( blockEditorStore )
34
- );
32
+ const { isBlockSelected, isMultiSelecting, isZoomOut, getSelectionStart } =
33
+ unlock( useSelect( blockEditorStore ) );
35
34
 
36
35
  useEffect( () => {
37
36
  // Check if the block is still selected at the time this effect runs.
@@ -87,7 +86,27 @@ export function useFocusFirstElement( { clientId, initialPosition } ) {
87
86
  return;
88
87
  }
89
88
  }
90
- placeCaretAtHorizontalEdge( target, isReverse );
89
+ // Do not place a caret when the target already contains one:
90
+ // while a focused editing host contains the target (the block
91
+ // supports `editableRoot`), the caret can be inside it without the
92
+ // target holding focus. Only a caret the rich text synchronized to
93
+ // the store (offsets present) is deliberate; a leftover one yields
94
+ // to an explicitly requested edge position (initialPosition -1).
95
+ const { activeElement } = ownerDocument;
96
+ const selection = ownerDocument.defaultView.getSelection();
97
+ const { clientId: selectionClientId, offset } = getSelectionStart();
98
+ const hasCaret =
99
+ activeElement?.isContentEditable &&
100
+ activeElement.contains( target ) &&
101
+ !! selection.anchorNode &&
102
+ target.contains( selection.anchorNode );
103
+ const isDeliberate =
104
+ initialPosition === 0 ||
105
+ ( offset !== undefined && selectionClientId === clientId );
106
+
107
+ if ( ! ( hasCaret && isDeliberate ) ) {
108
+ placeCaretAtHorizontalEdge( target, isReverse );
109
+ }
91
110
  }, [ initialPosition, clientId ] );
92
111
 
93
112
  return ref;
@@ -12,6 +12,7 @@ import {
12
12
  */
13
13
  import { isInsideRootBlock } from '../../../utils/dom';
14
14
  import { store as blockEditorStore } from '../../../store';
15
+ import { isShiftClickInProgress } from '../../writing-flow/utils';
15
16
  import { unlock } from '../../../lock-unlock';
16
17
 
17
18
  const { subscribeDelegatedListener } = unlock( composePrivateApis );
@@ -22,7 +23,8 @@ const { subscribeDelegatedListener } = unlock( composePrivateApis );
22
23
  * @param {string} clientId Block client ID.
23
24
  */
24
25
  export function useFocusHandler( clientId ) {
25
- const { isBlockSelected } = useSelect( blockEditorStore );
26
+ const { isBlockSelected, isBlockMultiSelected } =
27
+ useSelect( blockEditorStore );
26
28
  const { selectBlock, selectionChange } = useDispatch( blockEditorStore );
27
29
 
28
30
  return useRefEffect(
@@ -36,14 +38,6 @@ export function useFocusHandler( clientId ) {
36
38
  * @param {FocusEvent} event Focus event.
37
39
  */
38
40
  function onFocus( event ) {
39
- // When the whole editor is editable, let writing flow handle
40
- // selection.
41
- if (
42
- node.parentElement.closest( '[contenteditable="true"]' )
43
- ) {
44
- return;
45
- }
46
-
47
41
  // Check synchronously because a non-selected block might be
48
42
  // getting data through `useSelect` asynchronously.
49
43
  if ( isBlockSelected( clientId ) ) {
@@ -54,12 +48,43 @@ export function useFocusHandler( clientId ) {
54
48
  return;
55
49
  }
56
50
 
51
+ // Never select on the focus fired by a shift+click: the
52
+ // browser can focus the common editable ancestor of the
53
+ // range (e.g. a group block), and any selection re-render
54
+ // mid gesture destroys the native selection being made. The
55
+ // selection observer builds the multi-selection on mouseup.
56
+ if ( isShiftClickInProgress() ) {
57
+ return;
58
+ }
59
+
60
+ // A block that is part of the current multi-selection must
61
+ // not collapse it. Focus can land on the clicked block after
62
+ // the multi-selection was built: the focus event of a
63
+ // shift+click is not ordered consistently against its
64
+ // mouseup across browsers.
65
+ if ( isBlockMultiSelected( clientId ) ) {
66
+ return;
67
+ }
68
+
57
69
  // If an inner block is focussed, that block is responsible for
58
70
  // setting the selected block.
59
71
  if ( ! isInsideRootBlock( node, event.target ) ) {
60
72
  return;
61
73
  }
62
74
 
75
+ // For editable targets, select without initial caret
76
+ // placement: the caret is inside the target. Placement would
77
+ // move it, and would collapse a native selection in the
78
+ // making, e.g. a shift+click extending the selection across
79
+ // blocks while the wrapper is the editing host. The observer
80
+ // builds the multi-selection from the anchor it recorded at
81
+ // mousedown, so this dispatch overwriting the store anchor
82
+ // is harmless.
83
+ if ( event.target.isContentEditable ) {
84
+ selectBlock( clientId, null );
85
+ return;
86
+ }
87
+
63
88
  selectBlock( clientId );
64
89
  }
65
90
 
@@ -29,7 +29,7 @@
29
29
  padding: $grid-unit-15 0;
30
30
 
31
31
  .components-checkbox-control__label {
32
- font-weight: 600;
32
+ font-weight: var(--wpds-typography-font-weight-emphasis);
33
33
  }
34
34
  }
35
35
 
@@ -21,7 +21,7 @@
21
21
  z-index: 1;
22
22
 
23
23
  .components-checkbox-control__label {
24
- font-weight: 600;
24
+ font-weight: var(--wpds-typography-font-weight-emphasis);
25
25
  }
26
26
  }
27
27