@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.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 (456) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +13 -1
  3. package/build/components/alignment-control/ui.js +6 -5
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-actions/index.js +5 -9
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +5 -5
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +2 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/draggable-chip.js +2 -1
  12. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  13. package/build/components/block-edit/edit.js +1 -1
  14. package/build/components/block-edit/edit.js.map +1 -1
  15. package/build/components/block-inspector/index.js +125 -17
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block.js +40 -9
  18. package/build/components/block-list/block.js.map +1 -1
  19. package/build/components/block-list/index.js +4 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/index.js +14 -11
  22. package/build/components/block-list/use-block-props/index.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
  24. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
  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-is-hovered.js +1 -2
  28. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  29. package/build/components/block-list/use-in-between-inserter.js +7 -12
  30. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  31. package/build/components/block-list-appender/index.js +20 -21
  32. package/build/components/block-list-appender/index.js.map +1 -1
  33. package/build/components/block-list-appender/index.native.js +1 -7
  34. package/build/components/block-list-appender/index.native.js.map +1 -1
  35. package/build/components/block-lock/use-block-lock.js +3 -1
  36. package/build/components/block-lock/use-block-lock.js.map +1 -1
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
  38. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  39. package/build/components/block-mover/button.js +4 -6
  40. package/build/components/block-mover/button.js.map +1 -1
  41. package/build/components/block-mover/index.js +4 -6
  42. package/build/components/block-mover/index.js.map +1 -1
  43. package/build/components/block-mover/index.native.js +24 -8
  44. package/build/components/block-mover/index.native.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +58 -16
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +3 -2
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/auto.js +4 -2
  50. package/build/components/block-preview/auto.js.map +1 -1
  51. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
  52. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  53. package/build/components/block-settings-menu-controls/index.js +3 -1
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-styles/preview-panel.js +7 -1
  56. package/build/components/block-styles/preview-panel.js.map +1 -1
  57. package/build/components/block-switcher/block-transformations-menu.js +114 -25
  58. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +9 -8
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-tools/block-contextual-toolbar.js +3 -2
  62. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  63. package/build/components/block-tools/block-selection-button.js +13 -5
  64. package/build/components/block-tools/block-selection-button.js.map +1 -1
  65. package/build/components/block-tools/index.js +33 -15
  66. package/build/components/block-tools/index.js.map +1 -1
  67. package/build/components/block-tools/insertion-point.js +4 -9
  68. package/build/components/block-tools/insertion-point.js.map +1 -1
  69. package/build/components/block-tools/selected-block-popover.js +9 -8
  70. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  71. package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  72. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  73. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
  74. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  75. package/build/components/block-vertical-alignment-control/ui.js +5 -2
  76. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +1 -1
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/iframe/index.js +31 -4
  80. package/build/components/iframe/index.js.map +1 -1
  81. package/build/components/inner-blocks/default-block-appender.js +1 -7
  82. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  83. package/build/components/inner-blocks/index.js +2 -2
  84. package/build/components/inner-blocks/index.js.map +1 -1
  85. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  86. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  87. package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
  88. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  89. package/build/components/inserter/index.js +3 -6
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/library.js +14 -3
  92. package/build/components/inserter/library.js.map +1 -1
  93. package/build/components/inserter/menu.js +21 -8
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter/preview-panel.js +1 -1
  96. package/build/components/inserter/preview-panel.js.map +1 -1
  97. package/build/components/inserter/tabs.js +11 -4
  98. package/build/components/inserter/tabs.js.map +1 -1
  99. package/build/components/link-control/link-preview.js +1 -1
  100. package/build/components/link-control/link-preview.js.map +1 -1
  101. package/build/components/link-control/search-input.js +6 -3
  102. package/build/components/link-control/search-input.js.map +1 -1
  103. package/build/components/link-control/search-item.js +36 -5
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/block.js +23 -11
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/branch.js +19 -2
  108. package/build/components/list-view/branch.js.map +1 -1
  109. package/build/components/list-view/index.js +8 -4
  110. package/build/components/list-view/index.js.map +1 -1
  111. package/build/components/list-view/use-block-selection.js +0 -1
  112. package/build/components/list-view/use-block-selection.js.map +1 -1
  113. package/build/components/provider/use-block-sync.js +1 -7
  114. package/build/components/provider/use-block-sync.js.map +1 -1
  115. package/build/components/publish-date-time-picker/index.js +1 -1
  116. package/build/components/publish-date-time-picker/index.js.map +1 -1
  117. package/build/components/rich-text/index.js +27 -19
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +11 -20
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/text-decoration-control/index.js +1 -1
  122. package/build/components/text-decoration-control/index.js.map +1 -1
  123. package/build/components/text-transform-control/index.js +1 -1
  124. package/build/components/text-transform-control/index.js.map +1 -1
  125. package/build/components/tool-selector/index.js +6 -11
  126. package/build/components/tool-selector/index.js.map +1 -1
  127. package/build/components/url-popover/index.js +1 -1
  128. package/build/components/url-popover/index.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +7 -4
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-moving-animation/index.js +9 -28
  132. package/build/components/use-moving-animation/index.js.map +1 -1
  133. package/build/components/writing-flow/use-select-all.js +1 -7
  134. package/build/components/writing-flow/use-select-all.js.map +1 -1
  135. package/build/hooks/align.js +14 -2
  136. package/build/hooks/align.js.map +1 -1
  137. package/build/hooks/color-panel.js +2 -1
  138. package/build/hooks/color-panel.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +145 -0
  140. package/build/hooks/content-lock-ui.js.map +1 -0
  141. package/build/hooks/duotone.js +8 -1
  142. package/build/hooks/duotone.js.map +1 -1
  143. package/build/hooks/index.js +14 -0
  144. package/build/hooks/index.js.map +1 -1
  145. package/build/hooks/layout.js +11 -9
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/metadata-name.js +55 -0
  148. package/build/hooks/metadata-name.js.map +1 -0
  149. package/build/hooks/metadata.js +65 -0
  150. package/build/hooks/metadata.js.map +1 -0
  151. package/build/hooks/use-typography-props.js +51 -0
  152. package/build/hooks/use-typography-props.js.map +1 -0
  153. package/build/hooks/utils.js +3 -1
  154. package/build/hooks/utils.js.map +1 -1
  155. package/build/index.js +7 -0
  156. package/build/index.js.map +1 -1
  157. package/build/layouts/constrained.js +59 -20
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/store/actions.js +65 -21
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/reducer.js +39 -18
  162. package/build/store/reducer.js.map +1 -1
  163. package/build/store/selectors.js +95 -9
  164. package/build/store/selectors.js.map +1 -1
  165. package/build/utils/parse-css-unit-to-px.js +1 -1
  166. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  167. package/build-module/components/alignment-control/ui.js +6 -5
  168. package/build-module/components/alignment-control/ui.js.map +1 -1
  169. package/build-module/components/block-actions/index.js +5 -8
  170. package/build-module/components/block-actions/index.js.map +1 -1
  171. package/build-module/components/block-alignment-control/ui.js +5 -5
  172. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  173. package/build-module/components/block-content-overlay/index.js +2 -4
  174. package/build-module/components/block-content-overlay/index.js.map +1 -1
  175. package/build-module/components/block-draggable/draggable-chip.js +2 -1
  176. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  177. package/build-module/components/block-edit/edit.js +1 -1
  178. package/build-module/components/block-edit/edit.js.map +1 -1
  179. package/build-module/components/block-inspector/index.js +127 -19
  180. package/build-module/components/block-inspector/index.js.map +1 -1
  181. package/build-module/components/block-list/block.js +41 -9
  182. package/build-module/components/block-list/block.js.map +1 -1
  183. package/build-module/components/block-list/index.js +4 -4
  184. package/build-module/components/block-list/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/index.js +13 -11
  186. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
  188. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  190. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
  192. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  193. package/build-module/components/block-list/use-in-between-inserter.js +7 -12
  194. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  195. package/build-module/components/block-list-appender/index.js +20 -20
  196. package/build-module/components/block-list-appender/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.native.js +1 -6
  198. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  199. package/build-module/components/block-lock/use-block-lock.js +3 -1
  200. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  201. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
  202. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  203. package/build-module/components/block-mover/button.js +4 -5
  204. package/build-module/components/block-mover/button.js.map +1 -1
  205. package/build-module/components/block-mover/index.js +4 -5
  206. package/build-module/components/block-mover/index.js.map +1 -1
  207. package/build-module/components/block-mover/index.native.js +24 -7
  208. package/build-module/components/block-mover/index.native.js.map +1 -1
  209. package/build-module/components/block-popover/inbetween.js +59 -17
  210. package/build-module/components/block-popover/inbetween.js.map +1 -1
  211. package/build-module/components/block-popover/index.js +3 -2
  212. package/build-module/components/block-popover/index.js.map +1 -1
  213. package/build-module/components/block-preview/auto.js +4 -2
  214. package/build-module/components/block-preview/auto.js.map +1 -1
  215. package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
  216. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  217. package/build-module/components/block-settings-menu-controls/index.js +3 -1
  218. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  219. package/build-module/components/block-styles/preview-panel.js +6 -1
  220. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  221. package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
  222. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  223. package/build-module/components/block-toolbar/index.js +9 -8
  224. package/build-module/components/block-toolbar/index.js.map +1 -1
  225. package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
  226. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  227. package/build-module/components/block-tools/block-selection-button.js +12 -5
  228. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  229. package/build-module/components/block-tools/index.js +30 -15
  230. package/build-module/components/block-tools/index.js.map +1 -1
  231. package/build-module/components/block-tools/insertion-point.js +4 -9
  232. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  233. package/build-module/components/block-tools/selected-block-popover.js +9 -8
  234. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  235. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  236. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  237. package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
  238. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  239. package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
  240. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  241. package/build-module/components/colors-gradients/dropdown.js +1 -1
  242. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  243. package/build-module/components/iframe/index.js +32 -5
  244. package/build-module/components/iframe/index.js.map +1 -1
  245. package/build-module/components/inner-blocks/default-block-appender.js +1 -6
  246. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  247. package/build-module/components/inner-blocks/index.js +2 -2
  248. package/build-module/components/inner-blocks/index.js.map +1 -1
  249. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  250. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  251. package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
  252. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  253. package/build-module/components/inserter/index.js +3 -6
  254. package/build-module/components/inserter/index.js.map +1 -1
  255. package/build-module/components/inserter/library.js +14 -3
  256. package/build-module/components/inserter/library.js.map +1 -1
  257. package/build-module/components/inserter/menu.js +20 -8
  258. package/build-module/components/inserter/menu.js.map +1 -1
  259. package/build-module/components/inserter/preview-panel.js +1 -1
  260. package/build-module/components/inserter/preview-panel.js.map +1 -1
  261. package/build-module/components/inserter/tabs.js +11 -4
  262. package/build-module/components/inserter/tabs.js.map +1 -1
  263. package/build-module/components/link-control/link-preview.js +1 -1
  264. package/build-module/components/link-control/link-preview.js.map +1 -1
  265. package/build-module/components/link-control/search-input.js +6 -2
  266. package/build-module/components/link-control/search-input.js.map +1 -1
  267. package/build-module/components/link-control/search-item.js +37 -6
  268. package/build-module/components/link-control/search-item.js.map +1 -1
  269. package/build-module/components/list-view/block.js +23 -11
  270. package/build-module/components/list-view/block.js.map +1 -1
  271. package/build-module/components/list-view/branch.js +19 -3
  272. package/build-module/components/list-view/branch.js.map +1 -1
  273. package/build-module/components/list-view/index.js +8 -4
  274. package/build-module/components/list-view/index.js.map +1 -1
  275. package/build-module/components/list-view/use-block-selection.js +0 -1
  276. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  277. package/build-module/components/provider/use-block-sync.js +1 -6
  278. package/build-module/components/provider/use-block-sync.js.map +1 -1
  279. package/build-module/components/publish-date-time-picker/index.js +1 -1
  280. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  281. package/build-module/components/rich-text/index.js +27 -18
  282. package/build-module/components/rich-text/index.js.map +1 -1
  283. package/build-module/components/rich-text/index.native.js +11 -18
  284. package/build-module/components/rich-text/index.native.js.map +1 -1
  285. package/build-module/components/text-decoration-control/index.js +1 -1
  286. package/build-module/components/text-decoration-control/index.js.map +1 -1
  287. package/build-module/components/text-transform-control/index.js +1 -1
  288. package/build-module/components/text-transform-control/index.js.map +1 -1
  289. package/build-module/components/tool-selector/index.js +6 -11
  290. package/build-module/components/tool-selector/index.js.map +1 -1
  291. package/build-module/components/url-popover/index.js +1 -1
  292. package/build-module/components/url-popover/index.js.map +1 -1
  293. package/build-module/components/use-block-drop-zone/index.js +7 -4
  294. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  295. package/build-module/components/use-moving-animation/index.js +9 -28
  296. package/build-module/components/use-moving-animation/index.js.map +1 -1
  297. package/build-module/components/writing-flow/use-select-all.js +1 -6
  298. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  299. package/build-module/hooks/align.js +12 -2
  300. package/build-module/hooks/align.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +2 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/content-lock-ui.js +128 -0
  304. package/build-module/hooks/content-lock-ui.js.map +1 -0
  305. package/build-module/hooks/duotone.js +6 -1
  306. package/build-module/hooks/duotone.js.map +1 -1
  307. package/build-module/hooks/index.js +4 -0
  308. package/build-module/hooks/index.js.map +1 -1
  309. package/build-module/hooks/layout.js +11 -9
  310. package/build-module/hooks/layout.js.map +1 -1
  311. package/build-module/hooks/metadata-name.js +45 -0
  312. package/build-module/hooks/metadata-name.js.map +1 -0
  313. package/build-module/hooks/metadata.js +50 -0
  314. package/build-module/hooks/metadata.js.map +1 -0
  315. package/build-module/hooks/use-typography-props.js +38 -0
  316. package/build-module/hooks/use-typography-props.js.map +1 -0
  317. package/build-module/hooks/utils.js +4 -2
  318. package/build-module/hooks/utils.js.map +1 -1
  319. package/build-module/index.js +1 -1
  320. package/build-module/index.js.map +1 -1
  321. package/build-module/layouts/constrained.js +61 -22
  322. package/build-module/layouts/constrained.js.map +1 -1
  323. package/build-module/store/actions.js +58 -20
  324. package/build-module/store/actions.js.map +1 -1
  325. package/build-module/store/reducer.js +37 -18
  326. package/build-module/store/reducer.js.map +1 -1
  327. package/build-module/store/selectors.js +80 -9
  328. package/build-module/store/selectors.js.map +1 -1
  329. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  330. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  331. package/build-style/style-rtl.css +95 -45
  332. package/build-style/style.css +95 -45
  333. package/package.json +28 -28
  334. package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
  335. package/src/components/alignment-control/test/index.js +124 -33
  336. package/src/components/alignment-control/ui.js +8 -3
  337. package/src/components/block-actions/index.js +9 -8
  338. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
  339. package/src/components/block-alignment-control/test/index.js +95 -31
  340. package/src/components/block-alignment-control/ui.js +2 -2
  341. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
  342. package/src/components/block-compare/test/block-view.js +3 -3
  343. package/src/components/block-content-overlay/index.js +2 -6
  344. package/src/components/block-content-overlay/style.scss +24 -3
  345. package/src/components/block-draggable/draggable-chip.js +4 -1
  346. package/src/components/block-edit/edit.js +5 -1
  347. package/src/components/block-edit/test/edit.js +23 -21
  348. package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
  349. package/src/components/block-icon/test/index.js +31 -16
  350. package/src/components/block-inspector/index.js +126 -12
  351. package/src/components/block-inspector/style.scss +7 -1
  352. package/src/components/block-list/block.js +53 -13
  353. package/src/components/block-list/index.js +4 -4
  354. package/src/components/block-list/style.scss +39 -12
  355. package/src/components/block-list/test/block-list-context.native.js +11 -13
  356. package/src/components/block-list/use-block-props/index.js +10 -10
  357. package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
  358. package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
  360. package/src/components/block-list/use-in-between-inserter.js +11 -13
  361. package/src/components/block-list-appender/index.js +27 -18
  362. package/src/components/block-list-appender/index.native.js +3 -6
  363. package/src/components/block-lock/use-block-lock.js +2 -0
  364. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
  365. package/src/components/block-mover/button.js +6 -5
  366. package/src/components/block-mover/index.js +8 -7
  367. package/src/components/block-mover/index.native.js +20 -13
  368. package/src/components/block-popover/inbetween.js +85 -21
  369. package/src/components/block-popover/index.js +3 -2
  370. package/src/components/block-popover/style.scss +3 -4
  371. package/src/components/block-preview/auto.js +4 -2
  372. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  373. package/src/components/block-settings-menu-controls/README.md +9 -0
  374. package/src/components/block-settings-menu-controls/index.js +13 -2
  375. package/src/components/block-styles/preview-panel.js +3 -0
  376. package/src/components/block-switcher/block-transformations-menu.js +127 -33
  377. package/src/components/block-switcher/style.scss +4 -2
  378. package/src/components/block-title/test/index.js +28 -25
  379. package/src/components/block-toolbar/index.js +27 -17
  380. package/src/components/block-tools/block-contextual-toolbar.js +10 -3
  381. package/src/components/block-tools/block-selection-button.js +35 -16
  382. package/src/components/block-tools/index.js +40 -24
  383. package/src/components/block-tools/insertion-point.js +3 -7
  384. package/src/components/block-tools/selected-block-popover.js +9 -7
  385. package/src/components/block-tools/style.scss +5 -0
  386. package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
  387. package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
  388. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
  389. package/src/components/block-vertical-alignment-control/test/index.js +92 -23
  390. package/src/components/block-vertical-alignment-control/ui.js +3 -2
  391. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
  392. package/src/components/colors/test/with-colors.js +37 -12
  393. package/src/components/colors-gradients/dropdown.js +1 -1
  394. package/src/components/contrast-checker/test/index.js +135 -116
  395. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
  396. package/src/components/default-block-appender/test/index.js +32 -18
  397. package/src/components/font-sizes/README.MD +9 -0
  398. package/src/components/iframe/index.js +64 -5
  399. package/src/components/inner-blocks/README.md +2 -1
  400. package/src/components/inner-blocks/default-block-appender.js +1 -6
  401. package/src/components/inner-blocks/index.js +3 -2
  402. package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
  403. package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
  404. package/src/components/inserter/index.js +2 -8
  405. package/src/components/inserter/library.js +11 -5
  406. package/src/components/inserter/menu.js +42 -29
  407. package/src/components/inserter/preview-panel.js +1 -1
  408. package/src/components/inserter/stories/fixtures.js +44 -0
  409. package/src/components/inserter/stories/index.js +90 -0
  410. package/src/components/inserter/style.scss +21 -27
  411. package/src/components/inserter/tabs.js +8 -4
  412. package/src/components/link-control/link-preview.js +5 -3
  413. package/src/components/link-control/search-input.js +2 -2
  414. package/src/components/link-control/search-item.js +39 -7
  415. package/src/components/list-view/block.js +29 -10
  416. package/src/components/list-view/branch.js +27 -4
  417. package/src/components/list-view/index.js +8 -3
  418. package/src/components/list-view/use-block-selection.js +0 -1
  419. package/src/components/media-placeholder/test/index.js +2 -2
  420. package/src/components/media-replace-flow/README.md +1 -1
  421. package/src/components/provider/use-block-sync.js +3 -6
  422. package/src/components/publish-date-time-picker/index.js +1 -1
  423. package/src/components/rich-text/index.js +24 -35
  424. package/src/components/rich-text/index.native.js +8 -21
  425. package/src/components/text-decoration-control/index.js +1 -1
  426. package/src/components/text-transform-control/index.js +1 -1
  427. package/src/components/tool-selector/index.js +9 -11
  428. package/src/components/url-input/test/button.js +145 -71
  429. package/src/components/url-popover/index.js +1 -1
  430. package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
  431. package/src/components/url-popover/test/index.js +14 -12
  432. package/src/components/use-block-drop-zone/index.js +15 -4
  433. package/src/components/use-moving-animation/index.js +9 -24
  434. package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
  435. package/src/components/warning/test/index.js +32 -29
  436. package/src/components/writing-flow/use-select-all.js +4 -6
  437. package/src/hooks/align.js +22 -13
  438. package/src/hooks/color-panel.js +2 -1
  439. package/src/hooks/content-lock-ui.js +161 -0
  440. package/src/hooks/duotone.js +13 -1
  441. package/src/hooks/index.js +4 -0
  442. package/src/hooks/layout.js +25 -19
  443. package/src/hooks/layout.scss +7 -1
  444. package/src/hooks/metadata-name.js +48 -0
  445. package/src/hooks/metadata.js +64 -0
  446. package/src/hooks/test/use-typography-props.js +28 -0
  447. package/src/hooks/use-typography-props.js +41 -0
  448. package/src/hooks/utils.js +2 -11
  449. package/src/index.js +1 -0
  450. package/src/layouts/constrained.js +73 -24
  451. package/src/store/actions.js +45 -4
  452. package/src/store/reducer.js +33 -21
  453. package/src/store/selectors.js +98 -19
  454. package/src/store/test/reducer.js +8 -5
  455. package/src/utils/parse-css-unit-to-px.js +1 -1
  456. package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { omit } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -19,6 +18,7 @@ import {
19
18
  isUnmodifiedDefaultBlock,
20
19
  serializeRawBlock,
21
20
  switchToBlockType,
21
+ store as blocksStore,
22
22
  } from '@wordpress/blocks';
23
23
  import { withFilters } from '@wordpress/components';
24
24
  import {
@@ -94,10 +94,38 @@ function BlockListBlock( {
94
94
  onMerge,
95
95
  toggleSelection,
96
96
  } ) {
97
- const themeSupportsLayout = useSelect( ( select ) => {
98
- const { getSettings } = select( blockEditorStore );
99
- return getSettings().supportsLayout;
100
- }, [] );
97
+ const {
98
+ themeSupportsLayout,
99
+ hasContentLockedParent,
100
+ isContentBlock,
101
+ isContentLocking,
102
+ isTemporarilyEditingAsBlocks,
103
+ } = useSelect(
104
+ ( select ) => {
105
+ const {
106
+ getSettings,
107
+ __unstableGetContentLockingParent,
108
+ getTemplateLock,
109
+ __unstableGetTemporarilyEditingAsBlocks,
110
+ } = select( blockEditorStore );
111
+ const _hasContentLockedParent =
112
+ !! __unstableGetContentLockingParent( clientId );
113
+ return {
114
+ themeSupportsLayout: getSettings().supportsLayout,
115
+ isContentBlock:
116
+ select( blocksStore ).__experimentalHasContentRoleAttribute(
117
+ name
118
+ ),
119
+ hasContentLockedParent: _hasContentLockedParent,
120
+ isContentLocking:
121
+ getTemplateLock( clientId ) === 'noContent' &&
122
+ ! _hasContentLockedParent,
123
+ isTemporarilyEditingAsBlocks:
124
+ __unstableGetTemporarilyEditingAsBlocks() === clientId,
125
+ };
126
+ },
127
+ [ name, clientId ]
128
+ );
101
129
  const { removeBlock } = useDispatch( blockEditorStore );
102
130
  const onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );
103
131
 
@@ -123,6 +151,12 @@ function BlockListBlock( {
123
151
 
124
152
  const blockType = getBlockType( name );
125
153
 
154
+ if ( hasContentLockedParent && ! isContentBlock ) {
155
+ wrapperProps = {
156
+ ...wrapperProps,
157
+ tabIndex: -1,
158
+ };
159
+ }
126
160
  // Determine whether the block has props to apply to the wrapper.
127
161
  if ( blockType?.getEditWrapperProps ) {
128
162
  wrapperProps = mergeWrapperProps(
@@ -185,18 +219,24 @@ function BlockListBlock( {
185
219
  block = <Block { ...wrapperProps }>{ blockEdit }</Block>;
186
220
  }
187
221
 
222
+ const { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};
223
+
188
224
  const value = {
189
225
  clientId,
190
- className:
191
- wrapperProps?.[ 'data-align' ] && themeSupportsLayout
192
- ? classnames(
193
- className,
194
- `align${ wrapperProps[ 'data-align' ] }`
195
- )
196
- : className,
197
- wrapperProps: omit( wrapperProps, [ 'data-align' ] ),
226
+ className: classnames(
227
+ {
228
+ 'is-content-locked': isContentLocking,
229
+ 'is-content-locked-temporarily-editing-as-blocks':
230
+ isTemporarilyEditingAsBlocks,
231
+ 'is-content-block': hasContentLockedParent && isContentBlock,
232
+ },
233
+ dataAlign && themeSupportsLayout && `align${ dataAlign }`,
234
+ className
235
+ ),
236
+ wrapperProps: restWrapperProps,
198
237
  isAligned,
199
238
  };
239
+
200
240
  const memoizedValue = useMemo( () => value, Object.values( value ) );
201
241
 
202
242
  return (
@@ -34,15 +34,15 @@ export const IntersectionObserver = createContext();
34
34
  function Root( { className, ...settings } ) {
35
35
  const [ element, setElement ] = useState();
36
36
  const isLargeViewport = useViewportMatch( 'medium' );
37
- const { isOutlineMode, isFocusMode, isNavigationMode } = useSelect(
37
+ const { isOutlineMode, isFocusMode, editorMode } = useSelect(
38
38
  ( select ) => {
39
- const { getSettings, isNavigationMode: _isNavigationMode } =
39
+ const { getSettings, __unstableGetEditorMode } =
40
40
  select( blockEditorStore );
41
41
  const { outlineMode, focusMode } = getSettings();
42
42
  return {
43
43
  isOutlineMode: outlineMode,
44
44
  isFocusMode: focusMode,
45
- isNavigationMode: _isNavigationMode(),
45
+ editorMode: __unstableGetEditorMode(),
46
46
  };
47
47
  },
48
48
  []
@@ -74,7 +74,7 @@ function Root( { className, ...settings } ) {
74
74
  className: classnames( 'is-root-container', className, {
75
75
  'is-outline-mode': isOutlineMode,
76
76
  'is-focus-mode': isFocusMode && isLargeViewport,
77
- 'is-navigate-mode': isNavigationMode,
77
+ 'is-navigate-mode': editorMode === 'navigation',
78
78
  } ),
79
79
  },
80
80
  settings
@@ -13,15 +13,8 @@
13
13
  .block-editor-block-list__layout {
14
14
  position: relative;
15
15
 
16
- // Select tool/navigation mode shows the default cursor until an additional click edits.
17
- &.is-navigate-mode {
18
- cursor: default;
19
- }
20
-
21
16
  // The primary indicator of selection in text is the native selection marker.
22
17
  // When selecting multiple blocks, we provide an additional selection indicator.
23
- &.is-navigate-mode .block-editor-block-list__block.is-selected,
24
- &.is-navigate-mode .block-editor-block-list__block.is-hovered,
25
18
  .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected),
26
19
  .block-editor-block-list__block.is-highlighted,
27
20
  .block-editor-block-list__block.is-highlighted ~ .is-multi-selected {
@@ -50,17 +43,14 @@
50
43
  }
51
44
 
52
45
  // Provide exceptions for placeholders.
53
- .components-placeholder {
46
+ .components-placeholder,
47
+ .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected) {
54
48
  ::selection {
55
49
  background: transparent;
56
50
  }
57
51
  }
58
52
  }
59
53
 
60
- &.is-navigate-mode .block-editor-block-list__block.is-hovered:not(.is-selected)::after {
61
- box-shadow: 0 0 0 $border-width var(--wp-admin-theme-color);
62
- }
63
-
64
54
  .block-editor-block-list__block.is-highlighted::after {
65
55
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
66
56
  outline: $border-width solid transparent;
@@ -123,6 +113,15 @@
123
113
  padding: 0;
124
114
  }
125
115
 
116
+ .is-content-locked {
117
+ .block-editor-block-list__block {
118
+ pointer-events: none;
119
+ }
120
+ .is-content-block {
121
+ pointer-events: initial;
122
+ }
123
+ }
124
+
126
125
  .block-editor-block-list__layout .block-editor-block-list__block {
127
126
  position: relative;
128
127
 
@@ -331,6 +330,14 @@
331
330
  }
332
331
  }
333
332
 
333
+ .is-focus-mode .block-editor-block-list__block.is-content-locked.has-child-selected,
334
+ .is-focus-mode .block-editor-block-list__block.is-content-locked-temporarily-editing-as-blocks.has-child-selected {
335
+ &,
336
+ & .block-editor-block-list__block {
337
+ opacity: 1;
338
+ }
339
+ }
340
+
334
341
  .wp-block[data-align="left"] > *,
335
342
  .wp-block[data-align="right"] > *,
336
343
  .wp-block.alignleft,
@@ -431,3 +438,23 @@
431
438
  margin-bottom: auto;
432
439
  }
433
440
  }
441
+
442
+ /** Zoom Out mode styles **/
443
+ .block-editor-iframe__body {
444
+ transition: all 0.3s;
445
+ transform-origin: top center;
446
+
447
+ &.is-zoomed-out {
448
+ margin: 100px 0;
449
+ transform: scale(0.45);
450
+
451
+ // Add a bit more space between the top level blocks.
452
+ .wp-site-blocks > * + * {
453
+ margin-block-start: 2.5rem;
454
+ }
455
+
456
+ > .block-list-appender {
457
+ display: none;
458
+ }
459
+ }
460
+ }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { cloneDeep } from 'lodash';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -19,6 +14,9 @@ import {
19
14
  ROOT_LEVEL_ID,
20
15
  } from './fixtures/block-list-context.native';
21
16
 
17
+ // Deep clone an object to avoid mutating it later.
18
+ const cloneObject = ( obj ) => JSON.parse( JSON.stringify( obj ) );
19
+
22
20
  describe( 'findBlockLayoutByClientId', () => {
23
21
  it( "finds a block's layout data at root level", () => {
24
22
  const { findBlockLayoutByClientId } = DEFAULT_BLOCK_LIST_CONTEXT;
@@ -66,7 +64,7 @@ describe( 'findBlockLayoutByClientId', () => {
66
64
  describe( 'deleteBlockLayoutByClientId', () => {
67
65
  it( "deletes a block's layout data at root level", () => {
68
66
  const { findBlockLayoutByClientId } = DEFAULT_BLOCK_LIST_CONTEXT;
69
- const defaultBlockLayouts = cloneDeep( BLOCKS_LAYOUTS_DATA );
67
+ const defaultBlockLayouts = cloneObject( BLOCKS_LAYOUTS_DATA );
70
68
  const currentBlockLayouts = deleteBlockLayoutByClientId(
71
69
  defaultBlockLayouts,
72
70
  ROOT_LEVEL_ID
@@ -82,7 +80,7 @@ describe( 'deleteBlockLayoutByClientId', () => {
82
80
 
83
81
  it( "deletes a nested block's layout data with inner blocks", () => {
84
82
  const { findBlockLayoutByClientId } = DEFAULT_BLOCK_LIST_CONTEXT;
85
- const defaultBlockLayouts = cloneDeep( BLOCKS_LAYOUTS_DATA );
83
+ const defaultBlockLayouts = cloneObject( BLOCKS_LAYOUTS_DATA );
86
84
  const currentBlockLayouts = deleteBlockLayoutByClientId(
87
85
  defaultBlockLayouts,
88
86
  NESTED_WITH_INNER_BLOCKS_ID
@@ -98,7 +96,7 @@ describe( 'deleteBlockLayoutByClientId', () => {
98
96
 
99
97
  it( "deletes a deep nested block's layout data", () => {
100
98
  const { findBlockLayoutByClientId } = DEFAULT_BLOCK_LIST_CONTEXT;
101
- const defaultBlockLayouts = cloneDeep( BLOCKS_LAYOUTS_DATA );
99
+ const defaultBlockLayouts = cloneObject( BLOCKS_LAYOUTS_DATA );
102
100
  const currentBlockLayouts = deleteBlockLayoutByClientId(
103
101
  defaultBlockLayouts,
104
102
  DEEP_NESTED_ID
@@ -120,7 +118,7 @@ describe( 'updateBlocksLayouts', () => {
120
118
  findBlockLayoutByClientId,
121
119
  updateBlocksLayouts,
122
120
  } = DEFAULT_BLOCK_LIST_CONTEXT;
123
- const currentBlockLayouts = cloneDeep( blocksLayouts );
121
+ const currentBlockLayouts = cloneObject( blocksLayouts );
124
122
  const BLOCK_CLIENT_ID = PARAGRAPH_BLOCK_LAYOUT_DATA.clientId;
125
123
 
126
124
  updateBlocksLayouts( currentBlockLayouts, PARAGRAPH_BLOCK_LAYOUT_DATA );
@@ -142,7 +140,7 @@ describe( 'updateBlocksLayouts', () => {
142
140
  const { findBlockLayoutByClientId, updateBlocksLayouts } =
143
141
  DEFAULT_BLOCK_LIST_CONTEXT;
144
142
  const currentBlockLayouts = {
145
- current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
143
+ current: cloneObject( BLOCKS_LAYOUTS_DATA ),
146
144
  };
147
145
  const PARENT_BLOCK_CLIENT_ID = GROUP_BLOCK_LAYOUT_DATA.clientId;
148
146
 
@@ -181,7 +179,7 @@ describe( 'updateBlocksLayouts', () => {
181
179
  const { findBlockLayoutByClientId, updateBlocksLayouts } =
182
180
  DEFAULT_BLOCK_LIST_CONTEXT;
183
181
  const currentBlockLayouts = {
184
- current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
182
+ current: cloneObject( BLOCKS_LAYOUTS_DATA ),
185
183
  };
186
184
 
187
185
  // Add block layout data to it's parents inner blocks
@@ -207,7 +205,7 @@ describe( 'updateBlocksLayouts', () => {
207
205
  const { findBlockLayoutByClientId, updateBlocksLayouts } =
208
206
  DEFAULT_BLOCK_LIST_CONTEXT;
209
207
  const currentBlockLayouts = {
210
- current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
208
+ current: cloneObject( BLOCKS_LAYOUTS_DATA ),
211
209
  };
212
210
 
213
211
  updateBlocksLayouts( currentBlockLayouts, {
@@ -227,7 +225,7 @@ describe( 'updateBlocksLayouts', () => {
227
225
  const { findBlockLayoutByClientId, updateBlocksLayouts } =
228
226
  DEFAULT_BLOCK_LIST_CONTEXT;
229
227
  const currentBlockLayouts = {
230
- current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
228
+ current: cloneObject( BLOCKS_LAYOUTS_DATA ),
231
229
  };
232
230
 
233
231
  updateBlocksLayouts( currentBlockLayouts, {
@@ -34,6 +34,7 @@ import { useNavModeExit } from './use-nav-mode-exit';
34
34
  import { useBlockRefProvider } from './use-block-refs';
35
35
  import { useIntersectionObserver } from './use-intersection-observer';
36
36
  import { store as blockEditorStore } from '../../../store';
37
+ import useBlockOverlayActive from '../../block-content-overlay';
37
38
 
38
39
  /**
39
40
  * If the block count exceeds the threshold, we disable the reordering animation
@@ -50,18 +51,14 @@ const BLOCK_ANIMATION_THRESHOLD = 200;
50
51
  * also pass any other props through this hook, and they will be merged and
51
52
  * returned.
52
53
  *
53
- * @param {Object} props Optional. Props to pass to the element. Must contain
54
- * the ref if one is defined.
55
- * @param {Object} options Options for internal use only.
54
+ * @param {Object} props Optional. Props to pass to the element. Must contain
55
+ * the ref if one is defined.
56
+ * @param {Object} options Options for internal use only.
56
57
  * @param {boolean} options.__unstableIsHtml
57
- * @param {boolean} options.__unstableIsDisabled Whether the block should be disabled.
58
58
  *
59
59
  * @return {Object} Props to pass to the element to mark as a block.
60
60
  */
61
- export function useBlockProps(
62
- props = {},
63
- { __unstableIsHtml, __unstableIsDisabled = false } = {}
64
- ) {
61
+ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
65
62
  const {
66
63
  clientId,
67
64
  className,
@@ -114,6 +111,8 @@ export function useBlockProps(
114
111
  [ clientId ]
115
112
  );
116
113
 
114
+ const hasOverlay = useBlockOverlayActive( clientId );
115
+
117
116
  // translators: %s: Type of block (i.e. Text, Image etc)
118
117
  const blockLabel = sprintf( __( 'Block: %s' ), blockTitle );
119
118
  const htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';
@@ -132,7 +131,7 @@ export function useBlockProps(
132
131
  enableAnimation,
133
132
  triggerAnimationOnChange: index,
134
133
  } ),
135
- useDisabled( { isDisabled: ! __unstableIsDisabled } ),
134
+ useDisabled( { isDisabled: ! hasOverlay } ),
136
135
  ] );
137
136
 
138
137
  const blockEditContext = useBlockEditContext();
@@ -144,11 +143,11 @@ export function useBlockProps(
144
143
  }
145
144
 
146
145
  return {
146
+ tabIndex: 0,
147
147
  ...wrapperProps,
148
148
  ...props,
149
149
  ref: mergedRefs,
150
150
  id: `block-${ clientId }${ htmlSuffix }`,
151
- tabIndex: 0,
152
151
  role: 'document',
153
152
  'aria-label': blockLabel,
154
153
  'data-block': clientId,
@@ -158,6 +157,7 @@ export function useBlockProps(
158
157
  // The wp-block className is important for editor styles.
159
158
  classnames( 'block-editor-block-list__block', {
160
159
  'wp-block': ! isAligned,
160
+ 'has-block-overlay': hasOverlay,
161
161
  } ),
162
162
  className,
163
163
  props.className,
@@ -34,6 +34,7 @@ export function useBlockClassNames( clientId ) {
34
34
  hasSelectedInnerBlock,
35
35
  isTyping,
36
36
  __unstableIsFullySelected,
37
+ __unstableSelectionHasUnmergeableBlock,
37
38
  } = select( blockEditorStore );
38
39
  const { outlineMode } = getSettings();
39
40
  const isDragging = isBlockBeingDragged( clientId );
@@ -51,7 +52,9 @@ export function useBlockClassNames( clientId ) {
51
52
  'is-highlighted': isBlockHighlighted( clientId ),
52
53
  'is-multi-selected': isMultiSelected,
53
54
  'is-partially-selected':
54
- isMultiSelected && ! __unstableIsFullySelected(),
55
+ isMultiSelected &&
56
+ ! __unstableIsFullySelected() &&
57
+ ! __unstableSelectionHasUnmergeableBlock(),
55
58
  'is-reusable': isReusableBlock( getBlockType( name ) ),
56
59
  'is-dragging': isDragging,
57
60
  'has-child-selected': isAncestorOfSelectedBlock,
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { first, last } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -36,7 +31,7 @@ function useInitialPosition( clientId ) {
36
31
  ( select ) => {
37
32
  const {
38
33
  getSelectedBlocksInitialCaretPosition,
39
- isNavigationMode,
34
+ __unstableGetEditorMode,
40
35
  isBlockSelected,
41
36
  } = select( blockEditorStore );
42
37
 
@@ -44,7 +39,7 @@ function useInitialPosition( clientId ) {
44
39
  return;
45
40
  }
46
41
 
47
- if ( isNavigationMode() ) {
42
+ if ( __unstableGetEditorMode() !== 'edit' ) {
48
43
  return;
49
44
  }
50
45
 
@@ -98,7 +93,7 @@ export function useFocusFirstElement( clientId ) {
98
93
  // tabbables.
99
94
  const isReverse = -1 === initialPosition;
100
95
  const target =
101
- ( isReverse ? last : first )( textInputs ) || ref.current;
96
+ textInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;
102
97
 
103
98
  if ( ! isInsideRootBlock( ref.current, target ) ) {
104
99
  ref.current.focus();
@@ -26,8 +26,8 @@ function listener( event ) {
26
26
  */
27
27
  export function useIsHovered() {
28
28
  const isEnabled = useSelect( ( select ) => {
29
- const { isNavigationMode, getSettings } = select( blockEditorStore );
30
- return isNavigationMode() || getSettings().outlineMode;
29
+ const { getSettings } = select( blockEditorStore );
30
+ return getSettings().outlineMode;
31
31
  }, [] );
32
32
 
33
33
  return useRefEffect(
@@ -14,8 +14,10 @@ import { InsertionPointOpenRef } from '../block-tools/insertion-point';
14
14
 
15
15
  export function useInBetweenInserter() {
16
16
  const openRef = useContext( InsertionPointOpenRef );
17
- const hasReducedUI = useSelect(
18
- ( select ) => select( blockEditorStore ).getSettings().hasReducedUI,
17
+ const isInBetweenInserterDisabled = useSelect(
18
+ ( select ) =>
19
+ select( blockEditorStore ).getSettings().hasReducedUI ||
20
+ select( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',
19
21
  []
20
22
  );
21
23
  const {
@@ -26,13 +28,14 @@ export function useInBetweenInserter() {
26
28
  isMultiSelecting,
27
29
  getSelectedBlockClientIds,
28
30
  getTemplateLock,
31
+ __unstableIsWithinBlockOverlay,
29
32
  } = useSelect( blockEditorStore );
30
33
  const { showInsertionPoint, hideInsertionPoint } =
31
34
  useDispatch( blockEditorStore );
32
35
 
33
36
  return useRefEffect(
34
37
  ( node ) => {
35
- if ( hasReducedUI ) {
38
+ if ( isInBetweenInserterDisabled ) {
36
39
  return;
37
40
  }
38
41
 
@@ -108,16 +111,11 @@ export function useInBetweenInserter() {
108
111
 
109
112
  // Don't show the insertion point if a parent block has an "overlay"
110
113
  // See https://github.com/WordPress/gutenberg/pull/34012#pullrequestreview-727762337
111
- const parentOverlay = element.parentElement?.closest(
112
- '.block-editor-block-content-overlay'
113
- );
114
- if ( parentOverlay ) {
115
- return;
116
- }
117
-
118
114
  const clientId = element.id.slice( 'block-'.length );
119
-
120
- if ( ! clientId ) {
115
+ if (
116
+ ! clientId ||
117
+ __unstableIsWithinBlockOverlay( clientId )
118
+ ) {
121
119
  return;
122
120
  }
123
121
 
@@ -126,7 +124,6 @@ export function useInBetweenInserter() {
126
124
  if ( getSelectedBlockClientIds().includes( clientId ) ) {
127
125
  return;
128
126
  }
129
-
130
127
  const elementRect = element.getBoundingClientRect();
131
128
 
132
129
  if (
@@ -175,6 +172,7 @@ export function useInBetweenInserter() {
175
172
  showInsertionPoint,
176
173
  hideInsertionPoint,
177
174
  getSelectedBlockClientIds,
175
+ isInBetweenInserterDisabled,
178
176
  ]
179
177
  );
180
178
  }
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { withSelect } from '@wordpress/data';
9
+ import { useSelect } from '@wordpress/data';
10
10
  import { getDefaultBlockName } from '@wordpress/blocks';
11
11
 
12
12
  /**
@@ -18,14 +18,35 @@ import { store as blockEditorStore } from '../../store';
18
18
 
19
19
  function BlockListAppender( {
20
20
  rootClientId,
21
- canInsertDefaultBlock,
22
- isLocked,
23
21
  renderAppender: CustomAppender,
24
22
  className,
25
- selectedBlockClientId,
26
23
  tagName: TagName = 'div',
27
24
  } ) {
28
- if ( isLocked || CustomAppender === false ) {
25
+ const { hideInserter, canInsertDefaultBlock, selectedBlockClientId } =
26
+ useSelect(
27
+ ( select ) => {
28
+ const {
29
+ canInsertBlockType,
30
+ getTemplateLock,
31
+ getSelectedBlockClientId,
32
+ __unstableGetEditorMode,
33
+ } = select( blockEditorStore );
34
+
35
+ return {
36
+ hideInserter:
37
+ !! getTemplateLock( rootClientId ) ||
38
+ __unstableGetEditorMode() === 'zoom-out',
39
+ canInsertDefaultBlock: canInsertBlockType(
40
+ getDefaultBlockName(),
41
+ rootClientId
42
+ ),
43
+ selectedBlockClientId: getSelectedBlockClientId(),
44
+ };
45
+ },
46
+ [ rootClientId ]
47
+ );
48
+
49
+ if ( hideInserter || CustomAppender === false ) {
29
50
  return null;
30
51
  }
31
52
 
@@ -92,16 +113,4 @@ function BlockListAppender( {
92
113
  );
93
114
  }
94
115
 
95
- export default withSelect( ( select, { rootClientId } ) => {
96
- const { canInsertBlockType, getTemplateLock, getSelectedBlockClientId } =
97
- select( blockEditorStore );
98
-
99
- return {
100
- isLocked: !! getTemplateLock( rootClientId ),
101
- canInsertDefaultBlock: canInsertBlockType(
102
- getDefaultBlockName(),
103
- rootClientId
104
- ),
105
- selectedBlockClientId: getSelectedBlockClientId(),
106
- };
107
- } )( BlockListAppender );
116
+ export default BlockListAppender;
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { last } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -36,7 +31,9 @@ function BlockListAppender( {
36
31
  return (
37
32
  <DefaultBlockAppender
38
33
  rootClientId={ rootClientId }
39
- lastBlockClientId={ last( blockClientIds ) }
34
+ lastBlockClientId={
35
+ blockClientIds[ blockClientIds.length - 1 ]
36
+ }
40
37
  containerStyle={ styles.blockListAppender }
41
38
  placeholder={ blockClientIds.length > 0 ? '' : null }
42
39
  showSeparator={ showSeparator }
@@ -25,6 +25,7 @@ export default function useBlockLock( clientId ) {
25
25
  canLockBlockType,
26
26
  getBlockName,
27
27
  getBlockRootClientId,
28
+ getTemplateLock,
28
29
  } = select( blockEditorStore );
29
30
  const rootClientId = getBlockRootClientId( clientId );
30
31
 
@@ -37,6 +38,7 @@ export default function useBlockLock( clientId ) {
37
38
  canMove,
38
39
  canRemove,
39
40
  canLock: canLockBlockType( getBlockName( clientId ) ),
41
+ isContentLocked: getTemplateLock( clientId ) === 'noContent',
40
42
  isLocked: ! canEdit || ! canMove || ! canRemove,
41
43
  };
42
44
  },
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { Platform, findNodeHandle } from 'react-native';
5
- import { partial, first, castArray, last, every } from 'lodash';
5
+
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
@@ -307,21 +307,25 @@ export default compose(
307
307
  canInsertBlockType,
308
308
  getTemplateLock,
309
309
  } = select( blockEditorStore );
310
- const normalizedClientIds = castArray( clientIds );
310
+ const normalizedClientIds = Array.isArray( clientIds )
311
+ ? clientIds
312
+ : [ clientIds ];
311
313
  const block = getBlock( normalizedClientIds );
312
314
  const blockName = getBlockName( normalizedClientIds );
313
315
  const blockType = getBlockType( blockName );
314
316
  const blockTitle = blockType?.title;
315
- const firstClientId = first( normalizedClientIds );
317
+ const firstClientId = normalizedClientIds[ 0 ];
316
318
  const rootClientId = getBlockRootClientId( firstClientId );
317
319
  const blockOrder = getBlockOrder( rootClientId );
318
320
 
319
321
  const firstIndex = getBlockIndex( firstClientId );
320
- const lastIndex = getBlockIndex( last( normalizedClientIds ) );
322
+ const lastIndex = getBlockIndex(
323
+ normalizedClientIds[ normalizedClientIds.length - 1 ]
324
+ );
321
325
 
322
326
  const innerBlocks = getBlocksByClientId( clientIds );
323
327
 
324
- const canDuplicate = every( innerBlocks, ( innerBlock ) => {
328
+ const canDuplicate = innerBlocks.every( ( innerBlock ) => {
325
329
  return (
326
330
  !! innerBlock &&
327
331
  hasBlockSupport( innerBlock.name, 'multiple', true ) &&
@@ -336,9 +340,9 @@ export default compose(
336
340
  isExactlyOneBlock && isDefaultBlock && isEmptyContent;
337
341
  const isLocked = !! getTemplateLock( rootClientId );
338
342
 
339
- const selectedBlockClientId = first( getSelectedBlockClientIds() );
343
+ const selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];
340
344
  const selectedBlock = selectedBlockClientId
341
- ? first( getBlocksByClientId( selectedBlockClientId ) )
345
+ ? getBlocksByClientId( selectedBlockClientId )[ 0 ]
342
346
  : undefined;
343
347
  const selectedBlockPossibleTransformations = selectedBlock
344
348
  ? getBlockTransformItems( [ selectedBlock ], rootClientId )
@@ -406,8 +410,10 @@ export default compose(
406
410
  duplicateBlock() {
407
411
  return duplicateBlocks( clientIds );
408
412
  },
409
- onMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),
410
- onMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),
413
+ onMoveDown: ( ...args ) =>
414
+ moveBlocksDown( clientIds, rootClientId, ...args ),
415
+ onMoveUp: ( ...args ) =>
416
+ moveBlocksUp( clientIds, rootClientId, ...args ),
411
417
  openGeneralSidebar: () =>
412
418
  openGeneralSidebar( 'edit-post/block' ),
413
419
  pasteBlock: ( clipboardBlock ) => {