@wordpress/block-editor 14.5.0 → 14.6.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 (431) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -8
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-canvas/index.js +10 -0
  6. package/build/components/block-canvas/index.js.map +1 -1
  7. package/build/components/block-card/index.js +2 -2
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-full-height-alignment-control/index.js +1 -1
  10. package/build/components/block-full-height-alignment-control/index.js.map +1 -1
  11. package/build/components/block-list/block.js +1 -1
  12. package/build/components/block-list/block.js.map +1 -1
  13. package/build/components/block-list/block.native.js +1 -7
  14. package/build/components/block-list/block.native.js.map +1 -1
  15. package/build/components/block-list/index.js +5 -5
  16. package/build/components/block-list/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -2
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  22. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  23. package/build/components/block-list/use-in-between-inserter.js +1 -1
  24. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  25. package/build/components/block-patterns-paging/index.js +1 -1
  26. package/build/components/block-patterns-paging/index.js.map +1 -1
  27. package/build/components/block-popover/index.js +2 -45
  28. package/build/components/block-popover/index.js.map +1 -1
  29. package/build/components/block-preview/index.js +2 -2
  30. package/build/components/block-preview/index.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -0
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu/index.js +4 -3
  34. package/build/components/block-settings-menu/index.js.map +1 -1
  35. package/build/components/block-toolbar/change-design.js +122 -0
  36. package/build/components/block-toolbar/change-design.js.map +1 -0
  37. package/build/components/block-toolbar/index.js +19 -7
  38. package/build/components/block-toolbar/index.js.map +1 -1
  39. package/build/components/block-tools/index.js +4 -10
  40. package/build/components/block-tools/index.js.map +1 -1
  41. package/build/components/block-tools/insertion-point.js +4 -3
  42. package/build/components/block-tools/insertion-point.js.map +1 -1
  43. package/build/components/block-tools/use-show-block-tools.js +3 -9
  44. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  45. package/build/components/block-tools/zoom-out-mode-inserters.js +20 -29
  46. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  47. package/build/components/block-variation-transforms/index.js +2 -2
  48. package/build/components/block-variation-transforms/index.js.map +1 -1
  49. package/build/components/block-vertical-alignment-control/ui.js +6 -10
  50. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  51. package/build/components/border-radius-control/linked-button.js +7 -10
  52. package/build/components/border-radius-control/linked-button.js.map +1 -1
  53. package/build/components/collab/block-comment-icon-slot.js +18 -0
  54. package/build/components/collab/block-comment-icon-slot.js.map +1 -0
  55. package/build/components/collab/block-comment-icon-toolbar-slot.js +18 -0
  56. package/build/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  57. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  58. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  59. package/build/components/convert-to-group-buttons/toolbar.js +4 -4
  60. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  61. package/build/components/global-styles/color-panel.js +1 -4
  62. package/build/components/global-styles/color-panel.js.map +1 -1
  63. package/build/components/global-styles/use-global-styles-context.native.js +6 -0
  64. package/build/components/global-styles/use-global-styles-context.native.js.map +1 -1
  65. package/build/components/iframe/index.js +17 -22
  66. package/build/components/iframe/index.js.map +1 -1
  67. package/build/components/image-size-control/index.js +61 -20
  68. package/build/components/image-size-control/index.js.map +1 -1
  69. package/build/components/inner-blocks/index.js +9 -5
  70. package/build/components/inner-blocks/index.js.map +1 -1
  71. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +2 -2
  72. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  73. package/build/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  74. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  75. package/build/components/inserter/category-tabs/index.js +15 -2
  76. package/build/components/inserter/category-tabs/index.js.map +1 -1
  77. package/build/components/inserter/menu.js +4 -2
  78. package/build/components/inserter/menu.js.map +1 -1
  79. package/build/components/inserter-button/index.native.js +1 -1
  80. package/build/components/inserter-button/index.native.js.map +1 -1
  81. package/build/components/inspector-controls-tabs/index.js +0 -2
  82. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  83. package/build/components/inspector-controls-tabs/utils.js +3 -6
  84. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  85. package/build/components/link-control/link-preview.js +12 -9
  86. package/build/components/link-control/link-preview.js.map +1 -1
  87. package/build/components/list-view/appender.js +4 -3
  88. package/build/components/list-view/appender.js.map +1 -1
  89. package/build/components/list-view/branch.js +6 -5
  90. package/build/components/list-view/branch.js.map +1 -1
  91. package/build/components/list-view/index.js +1 -2
  92. package/build/components/list-view/index.js.map +1 -1
  93. package/build/components/provider/index.js +1 -1
  94. package/build/components/provider/index.js.map +1 -1
  95. package/build/components/rich-text/event-listeners/index.js +3 -1
  96. package/build/components/rich-text/event-listeners/index.js.map +1 -1
  97. package/build/components/rich-text/index.native.js +2 -6
  98. package/build/components/rich-text/index.native.js.map +1 -1
  99. package/build/components/spacing-sizes-control/index.js +2 -2
  100. package/build/components/spacing-sizes-control/index.js.map +1 -1
  101. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  102. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  103. package/build/components/spacing-sizes-control/linked-button.js +1 -5
  104. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  105. package/build/components/tool-selector/index.js +1 -4
  106. package/build/components/tool-selector/index.js.map +1 -1
  107. package/build/components/url-input/index.js +1 -1
  108. package/build/components/url-input/index.js.map +1 -1
  109. package/build/components/use-block-commands/index.js +1 -1
  110. package/build/components/use-block-commands/index.js.map +1 -1
  111. package/build/components/use-block-drop-zone/index.js +5 -5
  112. package/build/components/use-block-drop-zone/index.js.map +1 -1
  113. package/build/components/use-block-drop-zone/index.native.js +0 -1
  114. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  115. package/build/components/use-moving-animation/index.js +1 -3
  116. package/build/components/use-moving-animation/index.js.map +1 -1
  117. package/build/components/use-settings/index.js +1 -3
  118. package/build/components/use-settings/index.js.map +1 -1
  119. package/build/components/writing-flow/index.js +5 -3
  120. package/build/components/writing-flow/index.js.map +1 -1
  121. package/build/components/writing-flow/use-tab-nav.js +2 -3
  122. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  123. package/build/hooks/block-bindings.js +19 -8
  124. package/build/hooks/block-bindings.js.map +1 -1
  125. package/build/hooks/contrast-checker.js +0 -1
  126. package/build/hooks/contrast-checker.js.map +1 -1
  127. package/build/hooks/duotone.js +2 -2
  128. package/build/hooks/duotone.js.map +1 -1
  129. package/build/hooks/style.js +4 -1
  130. package/build/hooks/style.js.map +1 -1
  131. package/build/hooks/use-zoom-out.js +13 -22
  132. package/build/hooks/use-zoom-out.js.map +1 -1
  133. package/build/index.js +0 -7
  134. package/build/index.js.map +1 -1
  135. package/build/private-apis.js +6 -3
  136. package/build/private-apis.js.map +1 -1
  137. package/build/store/actions.js +2 -33
  138. package/build/store/actions.js.map +1 -1
  139. package/build/store/defaults.js +1 -1
  140. package/build/store/defaults.js.map +1 -1
  141. package/build/store/private-actions.js +57 -8
  142. package/build/store/private-actions.js.map +1 -1
  143. package/build/store/private-selectors.js +9 -21
  144. package/build/store/private-selectors.js.map +1 -1
  145. package/build/store/reducer.js +16 -6
  146. package/build/store/reducer.js.map +1 -1
  147. package/build/store/selectors.js +44 -7
  148. package/build/store/selectors.js.map +1 -1
  149. package/build/utils/dom.js +16 -1
  150. package/build/utils/dom.js.map +1 -1
  151. package/build/utils/get-font-styles-and-weights.js +1 -1
  152. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  153. package/build/utils/transform-styles/index.js +4 -3
  154. package/build/utils/transform-styles/index.js.map +1 -1
  155. package/build-module/autocompleters/block.js +14 -6
  156. package/build-module/autocompleters/block.js.map +1 -1
  157. package/build-module/components/block-canvas/index.js +11 -1
  158. package/build-module/components/block-canvas/index.js.map +1 -1
  159. package/build-module/components/block-card/index.js +3 -3
  160. package/build-module/components/block-card/index.js.map +1 -1
  161. package/build-module/components/block-full-height-alignment-control/index.js +1 -1
  162. package/build-module/components/block-full-height-alignment-control/index.js.map +1 -1
  163. package/build-module/components/block-list/block.js +1 -1
  164. package/build-module/components/block-list/block.js.map +1 -1
  165. package/build-module/components/block-list/block.native.js +1 -7
  166. package/build-module/components/block-list/block.native.js.map +1 -1
  167. package/build-module/components/block-list/index.js +5 -5
  168. package/build-module/components/block-list/index.js.map +1 -1
  169. package/build-module/components/block-list/use-block-props/index.js +1 -2
  170. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  171. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  172. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  173. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  174. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  175. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  176. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  177. package/build-module/components/block-patterns-paging/index.js +1 -1
  178. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  179. package/build-module/components/block-popover/index.js +2 -45
  180. package/build-module/components/block-popover/index.js.map +1 -1
  181. package/build-module/components/block-preview/index.js +2 -2
  182. package/build-module/components/block-preview/index.js.map +1 -1
  183. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -0
  184. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  185. package/build-module/components/block-settings-menu/index.js +5 -4
  186. package/build-module/components/block-settings-menu/index.js.map +1 -1
  187. package/build-module/components/block-toolbar/change-design.js +114 -0
  188. package/build-module/components/block-toolbar/change-design.js.map +1 -0
  189. package/build-module/components/block-toolbar/index.js +19 -7
  190. package/build-module/components/block-toolbar/index.js.map +1 -1
  191. package/build-module/components/block-tools/index.js +4 -10
  192. package/build-module/components/block-tools/index.js.map +1 -1
  193. package/build-module/components/block-tools/insertion-point.js +4 -3
  194. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  195. package/build-module/components/block-tools/use-show-block-tools.js +3 -9
  196. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  197. package/build-module/components/block-tools/zoom-out-mode-inserters.js +20 -29
  198. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  199. package/build-module/components/block-variation-transforms/index.js +2 -2
  200. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  201. package/build-module/components/block-vertical-alignment-control/ui.js +6 -10
  202. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  203. package/build-module/components/border-radius-control/linked-button.js +8 -11
  204. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  205. package/build-module/components/collab/block-comment-icon-slot.js +11 -0
  206. package/build-module/components/collab/block-comment-icon-slot.js.map +1 -0
  207. package/build-module/components/collab/block-comment-icon-toolbar-slot.js +11 -0
  208. package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  209. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  210. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  211. package/build-module/components/convert-to-group-buttons/toolbar.js +4 -4
  212. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  213. package/build-module/components/global-styles/color-panel.js +2 -5
  214. package/build-module/components/global-styles/color-panel.js.map +1 -1
  215. package/build-module/components/global-styles/use-global-styles-context.native.js +6 -0
  216. package/build-module/components/global-styles/use-global-styles-context.native.js.map +1 -1
  217. package/build-module/components/iframe/index.js +17 -22
  218. package/build-module/components/iframe/index.js.map +1 -1
  219. package/build-module/components/image-size-control/index.js +62 -21
  220. package/build-module/components/image-size-control/index.js.map +1 -1
  221. package/build-module/components/inner-blocks/index.js +9 -5
  222. package/build-module/components/inner-blocks/index.js.map +1 -1
  223. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +2 -2
  224. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  225. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  226. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  227. package/build-module/components/inserter/category-tabs/index.js +15 -2
  228. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  229. package/build-module/components/inserter/menu.js +5 -3
  230. package/build-module/components/inserter/menu.js.map +1 -1
  231. package/build-module/components/inserter-button/index.native.js +1 -1
  232. package/build-module/components/inserter-button/index.native.js.map +1 -1
  233. package/build-module/components/inspector-controls-tabs/index.js +0 -2
  234. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  235. package/build-module/components/inspector-controls-tabs/utils.js +3 -6
  236. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  237. package/build-module/components/link-control/link-preview.js +13 -10
  238. package/build-module/components/link-control/link-preview.js.map +1 -1
  239. package/build-module/components/list-view/appender.js +4 -3
  240. package/build-module/components/list-view/appender.js.map +1 -1
  241. package/build-module/components/list-view/branch.js +7 -6
  242. package/build-module/components/list-view/branch.js.map +1 -1
  243. package/build-module/components/list-view/index.js +1 -2
  244. package/build-module/components/list-view/index.js.map +1 -1
  245. package/build-module/components/provider/index.js +1 -1
  246. package/build-module/components/provider/index.js.map +1 -1
  247. package/build-module/components/rich-text/event-listeners/index.js +4 -2
  248. package/build-module/components/rich-text/event-listeners/index.js.map +1 -1
  249. package/build-module/components/rich-text/index.native.js +2 -6
  250. package/build-module/components/rich-text/index.native.js.map +1 -1
  251. package/build-module/components/spacing-sizes-control/index.js +3 -3
  252. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  253. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  254. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  255. package/build-module/components/spacing-sizes-control/linked-button.js +2 -6
  256. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  257. package/build-module/components/tool-selector/index.js +1 -4
  258. package/build-module/components/tool-selector/index.js.map +1 -1
  259. package/build-module/components/url-input/index.js +1 -1
  260. package/build-module/components/url-input/index.js.map +1 -1
  261. package/build-module/components/use-block-commands/index.js +1 -1
  262. package/build-module/components/use-block-commands/index.js.map +1 -1
  263. package/build-module/components/use-block-drop-zone/index.js +5 -5
  264. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  265. package/build-module/components/use-block-drop-zone/index.native.js +0 -1
  266. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  267. package/build-module/components/use-moving-animation/index.js +1 -3
  268. package/build-module/components/use-moving-animation/index.js.map +1 -1
  269. package/build-module/components/use-settings/index.js +1 -3
  270. package/build-module/components/use-settings/index.js.map +1 -1
  271. package/build-module/components/writing-flow/index.js +5 -3
  272. package/build-module/components/writing-flow/index.js.map +1 -1
  273. package/build-module/components/writing-flow/use-tab-nav.js +2 -3
  274. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  275. package/build-module/hooks/block-bindings.js +20 -9
  276. package/build-module/hooks/block-bindings.js.map +1 -1
  277. package/build-module/hooks/contrast-checker.js +0 -1
  278. package/build-module/hooks/contrast-checker.js.map +1 -1
  279. package/build-module/hooks/duotone.js +2 -2
  280. package/build-module/hooks/duotone.js.map +1 -1
  281. package/build-module/hooks/style.js +4 -1
  282. package/build-module/hooks/style.js.map +1 -1
  283. package/build-module/hooks/use-zoom-out.js +15 -23
  284. package/build-module/hooks/use-zoom-out.js.map +1 -1
  285. package/build-module/index.js +1 -1
  286. package/build-module/index.js.map +1 -1
  287. package/build-module/private-apis.js +7 -5
  288. package/build-module/private-apis.js.map +1 -1
  289. package/build-module/store/actions.js +2 -33
  290. package/build-module/store/actions.js.map +1 -1
  291. package/build-module/store/defaults.js +1 -1
  292. package/build-module/store/defaults.js.map +1 -1
  293. package/build-module/store/private-actions.js +54 -7
  294. package/build-module/store/private-actions.js.map +1 -1
  295. package/build-module/store/private-selectors.js +9 -20
  296. package/build-module/store/private-selectors.js.map +1 -1
  297. package/build-module/store/reducer.js +16 -6
  298. package/build-module/store/reducer.js.map +1 -1
  299. package/build-module/store/selectors.js +45 -8
  300. package/build-module/store/selectors.js.map +1 -1
  301. package/build-module/utils/dom.js +16 -1
  302. package/build-module/utils/dom.js.map +1 -1
  303. package/build-module/utils/get-font-styles-and-weights.js +2 -2
  304. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  305. package/build-module/utils/transform-styles/index.js +3 -2
  306. package/build-module/utils/transform-styles/index.js.map +1 -1
  307. package/build-style/content-rtl.css +9 -4
  308. package/build-style/content.css +9 -4
  309. package/build-style/style-rtl.css +33 -22
  310. package/build-style/style.css +33 -22
  311. package/build-types/utils/dom.d.ts.map +1 -1
  312. package/package.json +33 -32
  313. package/src/autocompleters/block.js +16 -7
  314. package/src/components/block-canvas/index.js +17 -1
  315. package/src/components/block-canvas/style.scss +2 -0
  316. package/src/components/block-card/index.js +3 -3
  317. package/src/components/block-full-height-alignment-control/index.js +1 -1
  318. package/src/components/block-inspector/style.scss +0 -6
  319. package/src/components/block-list/block.js +1 -2
  320. package/src/components/block-list/block.native.js +0 -4
  321. package/src/components/block-list/content.scss +1 -1
  322. package/src/components/block-list/index.js +4 -4
  323. package/src/components/block-list/use-block-props/index.js +0 -2
  324. package/src/components/block-list/use-block-props/use-focus-first-element.js +5 -3
  325. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +7 -20
  326. package/src/components/block-list/use-in-between-inserter.js +1 -1
  327. package/src/components/block-patterns-list/stories/fixtures.js +834 -0
  328. package/src/components/block-patterns-list/stories/index.story.js +81 -0
  329. package/src/components/block-patterns-list/style.scss +2 -0
  330. package/src/components/block-patterns-paging/index.js +1 -1
  331. package/src/components/block-popover/index.js +0 -62
  332. package/src/components/block-preview/index.js +2 -2
  333. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  334. package/src/components/block-settings-menu/index.js +3 -0
  335. package/src/components/block-toolbar/change-design.js +133 -0
  336. package/src/components/block-toolbar/index.js +25 -8
  337. package/src/components/block-toolbar/style.scss +16 -0
  338. package/src/components/block-tools/index.js +4 -17
  339. package/src/components/block-tools/insertion-point.js +4 -3
  340. package/src/components/block-tools/style.scss +0 -20
  341. package/src/components/block-tools/use-show-block-tools.js +0 -13
  342. package/src/components/block-tools/zoom-out-mode-inserters.js +25 -40
  343. package/src/components/block-variation-transforms/index.js +2 -2
  344. package/src/components/block-vertical-alignment-control/ui.js +11 -15
  345. package/src/components/border-radius-control/linked-button.js +9 -11
  346. package/src/components/collab/block-comment-icon-slot.js +12 -0
  347. package/src/components/collab/block-comment-icon-toolbar-slot.js +12 -0
  348. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  349. package/src/components/convert-to-group-buttons/toolbar.js +4 -4
  350. package/src/components/global-styles/color-panel.js +2 -10
  351. package/src/components/global-styles/test/use-global-styles-context.native.js +1 -0
  352. package/src/components/global-styles/use-global-styles-context.native.js +6 -0
  353. package/src/components/iframe/content.scss +4 -9
  354. package/src/components/iframe/index.js +31 -34
  355. package/src/components/iframe/style.scss +2 -3
  356. package/src/components/image-size-control/index.js +74 -43
  357. package/src/components/image-size-control/test/index.js +5 -63
  358. package/src/components/inner-blocks/index.js +12 -6
  359. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +2 -3
  360. package/src/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  361. package/src/components/inserter/category-tabs/index.js +16 -2
  362. package/src/components/inserter/menu.js +6 -4
  363. package/src/components/inserter/style.scss +13 -0
  364. package/src/components/inserter-button/index.native.js +1 -1
  365. package/src/components/inspector-controls-tabs/index.js +1 -6
  366. package/src/components/inspector-controls-tabs/utils.js +0 -3
  367. package/src/components/link-control/link-preview.js +15 -8
  368. package/src/components/link-control/test/index.js +63 -24
  369. package/src/components/list-view/appender.js +5 -6
  370. package/src/components/list-view/branch.js +8 -6
  371. package/src/components/list-view/index.js +1 -2
  372. package/src/components/provider/index.js +1 -3
  373. package/src/components/provider/test/experimental-provider.js +43 -1
  374. package/src/components/rich-text/event-listeners/index.js +4 -2
  375. package/src/components/rich-text/index.native.js +0 -2
  376. package/src/components/spacing-sizes-control/index.js +3 -3
  377. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  378. package/src/components/spacing-sizes-control/linked-button.js +2 -12
  379. package/src/components/tool-selector/index.js +1 -5
  380. package/src/components/url-input/index.js +1 -1
  381. package/src/components/use-block-commands/index.js +1 -1
  382. package/src/components/use-block-drop-zone/index.js +5 -5
  383. package/src/components/use-block-drop-zone/index.native.js +0 -1
  384. package/src/components/use-moving-animation/index.js +0 -1
  385. package/src/components/use-settings/index.js +0 -1
  386. package/src/components/writing-flow/index.js +5 -3
  387. package/src/components/writing-flow/use-tab-nav.js +1 -2
  388. package/src/hooks/block-bindings.js +48 -31
  389. package/src/hooks/contrast-checker.js +0 -1
  390. package/src/hooks/duotone.js +2 -2
  391. package/src/hooks/style.js +7 -3
  392. package/src/hooks/use-zoom-out.js +14 -34
  393. package/src/index.js +0 -1
  394. package/src/private-apis.js +6 -3
  395. package/src/store/actions.js +3 -52
  396. package/src/store/defaults.js +2 -1
  397. package/src/store/private-actions.js +71 -8
  398. package/src/store/private-selectors.js +9 -19
  399. package/src/store/reducer.js +25 -11
  400. package/src/store/selectors.js +59 -8
  401. package/src/store/test/actions.js +41 -0
  402. package/src/store/test/reducer.js +23 -0
  403. package/src/utils/dom.js +22 -2
  404. package/src/utils/get-font-styles-and-weights.js +2 -2
  405. package/src/utils/transform-styles/index.js +3 -2
  406. package/tsconfig.tsbuildinfo +1 -1
  407. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -57
  408. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  409. package/build/components/block-toolbar/shuffle.js +0 -110
  410. package/build/components/block-toolbar/shuffle.js.map +0 -1
  411. package/build/components/block-tools/zoom-out-popover.js +0 -58
  412. package/build/components/block-tools/zoom-out-popover.js.map +0 -1
  413. package/build/components/block-tools/zoom-out-toolbar.js +0 -132
  414. package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
  415. package/build/components/block-vertical-alignment-control/icons.js +0 -48
  416. package/build/components/block-vertical-alignment-control/icons.js.map +0 -1
  417. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -51
  418. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  419. package/build-module/components/block-toolbar/shuffle.js +0 -103
  420. package/build-module/components/block-toolbar/shuffle.js.map +0 -1
  421. package/build-module/components/block-tools/zoom-out-popover.js +0 -49
  422. package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
  423. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -124
  424. package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
  425. package/build-module/components/block-vertical-alignment-control/icons.js +0 -41
  426. package/build-module/components/block-vertical-alignment-control/icons.js.map +0 -1
  427. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -65
  428. package/src/components/block-toolbar/shuffle.js +0 -111
  429. package/src/components/block-tools/zoom-out-popover.js +0 -47
  430. package/src/components/block-tools/zoom-out-toolbar.js +0 -135
  431. package/src/components/block-vertical-alignment-control/icons.js +0 -34
@@ -27,7 +27,6 @@ export default function useTabNav() {
27
27
  getLastFocus,
28
28
  getSectionRootClientId,
29
29
  isZoomOut,
30
- __unstableGetEditorMode,
31
30
  } = unlock( useSelect( blockEditorStore ) );
32
31
  const { setLastFocus } = unlock( useDispatch( blockEditorStore ) );
33
32
 
@@ -54,7 +53,7 @@ export default function useTabNav() {
54
53
  }
55
54
  }
56
55
  // In "compose" mode without a selected ID, we want to place focus on the section root when tabbing to the canvas.
57
- else if ( __unstableGetEditorMode() === 'zoom-out' && isZoomOut() ) {
56
+ else if ( isZoomOut() ) {
58
57
  const sectionRootClientId = getSectionRootClientId();
59
58
  const sectionBlocks = getBlockOrder( sectionRootClientId );
60
59
 
@@ -5,6 +5,7 @@ import { __ } from '@wordpress/i18n';
5
5
  import {
6
6
  getBlockBindingsSource,
7
7
  getBlockBindingsSources,
8
+ getBlockType,
8
9
  } from '@wordpress/blocks';
9
10
  import {
10
11
  __experimentalItemGroup as ItemGroup,
@@ -29,10 +30,11 @@ import {
29
30
  import { unlock } from '../lock-unlock';
30
31
  import InspectorControls from '../components/inspector-controls';
31
32
  import BlockContext from '../components/block-context';
33
+ import { useBlockEditContext } from '../components/block-edit';
32
34
  import { useBlockBindingsUtils } from '../utils/block-bindings';
33
35
  import { store as blockEditorStore } from '../store';
34
36
 
35
- const { DropdownMenuV2 } = unlock( componentsPrivateApis );
37
+ const { Menu } = unlock( componentsPrivateApis );
36
38
 
37
39
  const EMPTY_OBJECT = {};
38
40
 
@@ -50,45 +52,60 @@ const useToolsPanelDropdownMenuProps = () => {
50
52
  };
51
53
 
52
54
  function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
55
+ const { clientId } = useBlockEditContext();
53
56
  const registeredSources = getBlockBindingsSources();
54
57
  const { updateBlockBindings } = useBlockBindingsUtils();
55
58
  const currentKey = binding?.args?.key;
59
+ const attributeType = useSelect(
60
+ ( select ) => {
61
+ const { name: blockName } =
62
+ select( blockEditorStore ).getBlock( clientId );
63
+ const _attributeType =
64
+ getBlockType( blockName ).attributes?.[ attribute ]?.type;
65
+ return _attributeType === 'rich-text' ? 'string' : _attributeType;
66
+ },
67
+ [ clientId, attribute ]
68
+ );
56
69
  return (
57
70
  <>
58
71
  { Object.entries( fieldsList ).map( ( [ name, fields ], i ) => (
59
72
  <Fragment key={ name }>
60
- <DropdownMenuV2.Group>
73
+ <Menu.Group>
61
74
  { Object.keys( fieldsList ).length > 1 && (
62
- <DropdownMenuV2.GroupLabel>
75
+ <Menu.GroupLabel>
63
76
  { registeredSources[ name ].label }
64
- </DropdownMenuV2.GroupLabel>
77
+ </Menu.GroupLabel>
65
78
  ) }
66
- { Object.entries( fields ).map( ( [ key, args ] ) => (
67
- <DropdownMenuV2.RadioItem
68
- key={ key }
69
- onChange={ () =>
70
- updateBlockBindings( {
71
- [ attribute ]: {
72
- source: name,
73
- args: { key },
74
- },
75
- } )
76
- }
77
- name={ attribute + '-binding' }
78
- value={ key }
79
- checked={ key === currentKey }
80
- >
81
- <DropdownMenuV2.ItemLabel>
82
- { args?.label }
83
- </DropdownMenuV2.ItemLabel>
84
- <DropdownMenuV2.ItemHelpText>
85
- { args?.value }
86
- </DropdownMenuV2.ItemHelpText>
87
- </DropdownMenuV2.RadioItem>
88
- ) ) }
89
- </DropdownMenuV2.Group>
79
+ { Object.entries( fields )
80
+ .filter(
81
+ ( [ , args ] ) => args?.type === attributeType
82
+ )
83
+ .map( ( [ key, args ] ) => (
84
+ <Menu.RadioItem
85
+ key={ key }
86
+ onChange={ () =>
87
+ updateBlockBindings( {
88
+ [ attribute ]: {
89
+ source: name,
90
+ args: { key },
91
+ },
92
+ } )
93
+ }
94
+ name={ attribute + '-binding' }
95
+ value={ key }
96
+ checked={ key === currentKey }
97
+ >
98
+ <Menu.ItemLabel>
99
+ { args?.label }
100
+ </Menu.ItemLabel>
101
+ <Menu.ItemHelpText>
102
+ { args?.value }
103
+ </Menu.ItemHelpText>
104
+ </Menu.RadioItem>
105
+ ) ) }
106
+ </Menu.Group>
90
107
  { i !== Object.keys( fieldsList ).length - 1 && (
91
- <DropdownMenuV2.Separator />
108
+ <Menu.Separator />
92
109
  ) }
93
110
  </Fragment>
94
111
  ) ) }
@@ -158,7 +175,7 @@ function EditableBlockBindingsPanelItems( {
158
175
  } );
159
176
  } }
160
177
  >
161
- <DropdownMenuV2
178
+ <Menu
162
179
  placement={
163
180
  isMobile ? 'bottom-start' : 'left-start'
164
181
  }
@@ -178,7 +195,7 @@ function EditableBlockBindingsPanelItems( {
178
195
  attribute={ attribute }
179
196
  binding={ binding }
180
197
  />
181
- </DropdownMenuV2>
198
+ </Menu>
182
199
  </ToolsPanelItem>
183
200
  );
184
201
  } ) }
@@ -21,7 +21,6 @@ export default function BlockColorContrastChecker( { clientId } ) {
21
21
 
22
22
  // There are so many things that can change the color of a block
23
23
  // So we perform this check on every render.
24
- // eslint-disable-next-line react-hooks/exhaustive-deps
25
24
  useEffect( () => {
26
25
  if ( ! blockEl ) {
27
26
  return;
@@ -302,12 +302,12 @@ function useDuotoneStyles( {
302
302
  // `inline-block` is used instead of `none` to ensure that scroll
303
303
  // position is not affected, as `none` results in the editor
304
304
  // scrolling to the top of the block.
305
- blockElement.style.display = 'inline-block';
305
+ blockElement.style.setProperty( 'display', 'inline-block' );
306
306
  // Simply accessing el.offsetHeight flushes layout and style changes
307
307
  // in WebKit without having to wait for setTimeout.
308
308
  // eslint-disable-next-line no-unused-expressions
309
309
  blockElement.offsetHeight;
310
- blockElement.style.display = display;
310
+ blockElement.style.setProperty( 'display', display );
311
311
  }
312
312
  // `colors` must be a dependency so this effect runs when the colors
313
313
  // change in Safari.
@@ -376,10 +376,14 @@ const elementTypes = [
376
376
  },
377
377
  ];
378
378
 
379
+ // Used for generating the instance ID
380
+ const STYLE_BLOCK_PROPS_REFERENCE = {};
381
+
379
382
  function useBlockProps( { name, style } ) {
380
- const blockElementsContainerIdentifier = `wp-elements-${ useInstanceId(
381
- useBlockProps
382
- ) }`;
383
+ const blockElementsContainerIdentifier = useInstanceId(
384
+ STYLE_BLOCK_PROPS_REFERENCE,
385
+ 'wp-elements'
386
+ );
383
387
 
384
388
  const baseElementSelector = `.${ blockElementsContainerIdentifier }`;
385
389
  const blockElementStyles = style?.elements;
@@ -2,62 +2,42 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
- import { useEffect, useRef } from '@wordpress/element';
5
+ import { useEffect } from '@wordpress/element';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import { store as blockEditorStore } from '../store';
11
11
  import { unlock } from '../lock-unlock';
12
+
12
13
  /**
13
14
  * A hook used to set the editor mode to zoomed out mode, invoking the hook sets the mode.
14
15
  *
15
16
  * @param {boolean} zoomOut If we should enter into zoomOut mode or not
16
17
  */
17
18
  export function useZoomOut( zoomOut = true ) {
18
- const { __unstableSetEditorMode, setZoomLevel } = unlock(
19
+ const { setZoomLevel, resetZoomLevel } = unlock(
19
20
  useDispatch( blockEditorStore )
20
21
  );
21
- const { __unstableGetEditorMode } = unlock( useSelect( blockEditorStore ) );
22
-
23
- const originalEditingModeRef = useRef( null );
24
- const mode = __unstableGetEditorMode();
22
+ const { isZoomOut } = unlock( useSelect( blockEditorStore ) );
25
23
 
26
24
  useEffect( () => {
27
- // Only set this on mount so we know what to return to when we unmount.
28
- if ( ! originalEditingModeRef.current ) {
29
- originalEditingModeRef.current = mode;
30
- }
25
+ const isZoomOutOnMount = isZoomOut();
31
26
 
32
27
  return () => {
33
- // We need to use __unstableGetEditorMode() here and not `mode`, as mode may not update on unmount
34
- if (
35
- __unstableGetEditorMode() === 'zoom-out' &&
36
- __unstableGetEditorMode() !== originalEditingModeRef.current
37
- ) {
38
- __unstableSetEditorMode( originalEditingModeRef.current );
39
- setZoomLevel( 100 );
28
+ if ( isZoomOutOnMount ) {
29
+ setZoomLevel( 'auto-scaled' );
30
+ } else {
31
+ resetZoomLevel();
40
32
  }
41
33
  };
42
34
  }, [] );
43
35
 
44
- // The effect opens the zoom-out view if we want it open and it's not currently in zoom-out mode.
45
36
  useEffect( () => {
46
- if ( zoomOut && mode !== 'zoom-out' ) {
47
- __unstableSetEditorMode( 'zoom-out' );
48
- setZoomLevel( 50 );
49
- } else if (
50
- ! zoomOut &&
51
- __unstableGetEditorMode() === 'zoom-out' &&
52
- originalEditingModeRef.current !== mode
53
- ) {
54
- __unstableSetEditorMode( originalEditingModeRef.current );
55
- setZoomLevel( 100 );
37
+ if ( zoomOut ) {
38
+ setZoomLevel( 'auto-scaled' );
39
+ } else {
40
+ resetZoomLevel();
56
41
  }
57
- }, [
58
- __unstableGetEditorMode,
59
- __unstableSetEditorMode,
60
- zoomOut,
61
- setZoomLevel,
62
- ] ); // Mode is deliberately excluded from the dependencies so that the effect does not run when mode changes.
42
+ }, [ zoomOut, setZoomLevel, resetZoomLevel ] );
63
43
  }
package/src/index.js CHANGED
@@ -13,7 +13,6 @@ export {
13
13
  getGapCSSValue as __experimentalGetGapCSSValue,
14
14
  getShadowClassesAndStyles as __experimentalGetShadowClassesAndStyles,
15
15
  useCachedTruthy,
16
- useZoomOut,
17
16
  useStyleOverride,
18
17
  } from './hooks';
19
18
  export * from './components';
@@ -24,6 +24,7 @@ import {
24
24
  useLayoutClasses,
25
25
  useLayoutStyles,
26
26
  __unstableBlockStyleVariationOverridesWithConfig,
27
+ useZoomOut,
27
28
  } from './hooks';
28
29
  import DimensionsTool from './components/dimensions-tool';
29
30
  import ResolutionTool from './components/resolution-tool';
@@ -32,7 +33,6 @@ import { usesContextKey } from './components/rich-text/format-edit';
32
33
  import { ExperimentalBlockCanvas } from './components/block-canvas';
33
34
  import { getDuotoneFilter } from './components/duotone/utils';
34
35
  import { useFlashEditableBlocks } from './components/use-flash-editable-blocks';
35
- import { useZoomOutModeExit } from './components/block-list/use-block-props/use-zoom-out-mode-exit';
36
36
  import {
37
37
  selectBlockPatternsKey,
38
38
  reusableBlocksSelectKey,
@@ -48,7 +48,8 @@ import { PrivatePublishDateTimePicker } from './components/publish-date-time-pic
48
48
  import useSpacingSizes from './components/spacing-sizes-control/hooks/use-spacing-sizes';
49
49
  import useBlockDisplayTitle from './components/block-title/use-block-display-title';
50
50
  import TabbedSidebar from './components/tabbed-sidebar';
51
-
51
+ import __unstableCommentIconFill from './components/collab/block-comment-icon-slot';
52
+ import __unstableCommentIconToolbarFill from './components/collab/block-comment-icon-toolbar-slot';
52
53
  /**
53
54
  * Private @wordpress/block-editor APIs.
54
55
  */
@@ -79,7 +80,7 @@ lock( privateApis, {
79
80
  TextAlignmentControl,
80
81
  usesContextKey,
81
82
  useFlashEditableBlocks,
82
- useZoomOutModeExit,
83
+ useZoomOut,
83
84
  globalStylesDataKey,
84
85
  globalStylesLinksDataKey,
85
86
  selectBlockPatternsKey,
@@ -94,4 +95,6 @@ lock( privateApis, {
94
95
  __unstableBlockStyleVariationOverridesWithConfig,
95
96
  setBackgroundStyleDefaults,
96
97
  sectionRootClientIdKey,
98
+ __unstableCommentIconFill,
99
+ __unstableCommentIconToolbarFill,
97
100
  } );
@@ -1669,62 +1669,13 @@ export const setNavigationMode =
1669
1669
  */
1670
1670
  export const __unstableSetEditorMode =
1671
1671
  ( mode ) =>
1672
- ( { dispatch, select, registry } ) => {
1673
- // When switching to zoom-out mode, we need to select the parent section
1674
- if ( mode === 'zoom-out' ) {
1675
- const firstSelectedClientId = select.getBlockSelectionStart();
1676
-
1677
- const sectionRootClientId = select.getSectionRootClientId();
1678
-
1679
- if ( firstSelectedClientId ) {
1680
- let sectionClientId;
1681
-
1682
- if ( sectionRootClientId ) {
1683
- const sectionClientIds =
1684
- select.getBlockOrder( sectionRootClientId );
1685
-
1686
- // If the selected block is a section block, use it.
1687
- if ( sectionClientIds?.includes( firstSelectedClientId ) ) {
1688
- sectionClientId = firstSelectedClientId;
1689
- } else {
1690
- // If the selected block is not a section block, find
1691
- // the parent section that contains the selected block.
1692
- sectionClientId = select
1693
- .getBlockParents( firstSelectedClientId )
1694
- .find( ( parent ) =>
1695
- sectionClientIds.includes( parent )
1696
- );
1697
- }
1698
- } else {
1699
- sectionClientId = select.getBlockHierarchyRootClientId(
1700
- firstSelectedClientId
1701
- );
1702
- }
1703
-
1704
- if ( sectionClientId ) {
1705
- dispatch.selectBlock( sectionClientId );
1706
- } else {
1707
- dispatch.clearSelectedBlock();
1708
- }
1709
- }
1710
- }
1711
-
1672
+ ( { registry } ) => {
1712
1673
  registry.dispatch( preferencesStore ).set( 'core', 'editorTool', mode );
1713
1674
 
1714
1675
  if ( mode === 'navigation' ) {
1715
- speak(
1716
- __(
1717
- 'You are currently in navigation mode. Navigate blocks using the Tab key and Arrow keys. Use Left and Right Arrow keys to move between nesting levels. To exit navigation mode and edit the selected block, press Enter.'
1718
- )
1719
- );
1676
+ speak( __( 'You are currently in Write mode.' ) );
1720
1677
  } else if ( mode === 'edit' ) {
1721
- speak(
1722
- __(
1723
- 'You are currently in edit mode. To return to the navigation mode, press Escape.'
1724
- )
1725
- );
1726
- } else if ( mode === 'zoom-out' ) {
1727
- speak( __( 'You are currently in zoom-out mode.' ) );
1678
+ speak( __( 'You are currently in Design mode.' ) );
1728
1679
  }
1729
1680
  };
1730
1681
 
@@ -167,7 +167,8 @@ export const SETTINGS_DEFAULTS = {
167
167
  __mobileEnablePageTemplates: false,
168
168
  __experimentalBlockPatterns: [],
169
169
  __experimentalBlockPatternCategories: [],
170
- __unstableIsPreviewMode: false,
170
+
171
+ isPreviewMode: false,
171
172
 
172
173
  // These settings will be completely revamped in the future.
173
174
  // The goal is to evolve this into an API which will instruct
@@ -2,6 +2,9 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { Platform } from '@wordpress/element';
5
+ import deprecated from '@wordpress/deprecated';
6
+ import { speak } from '@wordpress/a11y';
7
+ import { __ } from '@wordpress/i18n';
5
8
 
6
9
  /**
7
10
  * Internal dependencies
@@ -39,14 +42,32 @@ export function __experimentalUpdateSettings(
39
42
  settings,
40
43
  { stripExperimentalSettings = false, reset = false } = {}
41
44
  ) {
42
- let cleanSettings = settings;
45
+ let incomingSettings = settings;
46
+
47
+ if ( Object.hasOwn( incomingSettings, '__unstableIsPreviewMode' ) ) {
48
+ deprecated(
49
+ "__unstableIsPreviewMode argument in wp.data.dispatch('core/block-editor').updateSettings",
50
+ {
51
+ since: '6.8',
52
+ alternative: 'isPreviewMode',
53
+ }
54
+ );
55
+
56
+ incomingSettings = { ...incomingSettings };
57
+ incomingSettings.isPreviewMode =
58
+ incomingSettings.__unstableIsPreviewMode;
59
+ delete incomingSettings.__unstableIsPreviewMode;
60
+ }
61
+
62
+ let cleanSettings = incomingSettings;
63
+
43
64
  // There are no plugins in the mobile apps, so there is no
44
65
  // need to strip the experimental settings:
45
66
  if ( stripExperimentalSettings && Platform.OS === 'web' ) {
46
67
  cleanSettings = {};
47
- for ( const key in settings ) {
68
+ for ( const key in incomingSettings ) {
48
69
  if ( ! privateSettings.includes( key ) ) {
49
- cleanSettings[ key ] = settings[ key ];
70
+ cleanSettings[ key ] = incomingSettings[ key ];
50
71
  }
51
72
  }
52
73
  }
@@ -404,12 +425,54 @@ export const modifyContentLockBlock =
404
425
  * @param {number} zoom the new zoom level
405
426
  * @return {Object} Action object.
406
427
  */
407
- export function setZoomLevel( zoom = 100 ) {
408
- return {
409
- type: 'SET_ZOOM_LEVEL',
410
- zoom,
428
+ export const setZoomLevel =
429
+ ( zoom = 100 ) =>
430
+ ( { select, dispatch } ) => {
431
+ // When switching to zoom-out mode, we need to select the parent section
432
+ if ( zoom !== 100 ) {
433
+ const firstSelectedClientId = select.getBlockSelectionStart();
434
+ const sectionRootClientId = select.getSectionRootClientId();
435
+
436
+ if ( firstSelectedClientId ) {
437
+ let sectionClientId;
438
+
439
+ if ( sectionRootClientId ) {
440
+ const sectionClientIds =
441
+ select.getBlockOrder( sectionRootClientId );
442
+
443
+ // If the selected block is a section block, use it.
444
+ if ( sectionClientIds?.includes( firstSelectedClientId ) ) {
445
+ sectionClientId = firstSelectedClientId;
446
+ } else {
447
+ // If the selected block is not a section block, find
448
+ // the parent section that contains the selected block.
449
+ sectionClientId = select
450
+ .getBlockParents( firstSelectedClientId )
451
+ .find( ( parent ) =>
452
+ sectionClientIds.includes( parent )
453
+ );
454
+ }
455
+ } else {
456
+ sectionClientId = select.getBlockHierarchyRootClientId(
457
+ firstSelectedClientId
458
+ );
459
+ }
460
+
461
+ if ( sectionClientId ) {
462
+ dispatch.selectBlock( sectionClientId );
463
+ } else {
464
+ dispatch.clearSelectedBlock();
465
+ }
466
+
467
+ speak( __( 'You are currently in zoom-out mode.' ) );
468
+ }
469
+ }
470
+
471
+ dispatch( {
472
+ type: 'SET_ZOOM_LEVEL',
473
+ zoom,
474
+ } );
411
475
  };
412
- }
413
476
 
414
477
  /**
415
478
  * Resets the Zoom state.
@@ -117,6 +117,7 @@ export const getEnabledClientIdsTree = createSelector(
117
117
  state.settings.templateLock,
118
118
  state.blockListSettings,
119
119
  state.editorMode,
120
+ state.zoomLevel,
120
121
  getSectionRootClientId( state ),
121
122
  ]
122
123
  );
@@ -571,17 +572,6 @@ export const getBlockStyles = createSelector(
571
572
  ]
572
573
  );
573
574
 
574
- /**
575
- * Returns whether zoom out mode is enabled.
576
- *
577
- * @param {Object} state Editor state.
578
- *
579
- * @return {boolean} Is zoom out mode enabled.
580
- */
581
- export function isZoomOutMode( state ) {
582
- return state.editorMode === 'zoom-out';
583
- }
584
-
585
575
  /**
586
576
  * Retrieves the client ID of the block which contains the blocks
587
577
  * acting as "sections" in the editor. This is typically the "main content"
@@ -596,23 +586,23 @@ export function getSectionRootClientId( state ) {
596
586
  }
597
587
 
598
588
  /**
599
- * Returns the zoom out state.
589
+ * Returns whether the editor is considered zoomed out.
600
590
  *
601
591
  * @param {Object} state Global application state.
602
- * @return {boolean} The zoom out state.
592
+ * @return {boolean} Whether the editor is zoomed.
603
593
  */
604
- export function getZoomLevel( state ) {
605
- return state.zoomLevel;
594
+ export function isZoomOut( state ) {
595
+ return state.zoomLevel === 'auto-scaled' || state.zoomLevel < 100;
606
596
  }
607
597
 
608
598
  /**
609
- * Returns whether the editor is considered zoomed out.
599
+ * Returns whether the zoom level.
610
600
  *
611
601
  * @param {Object} state Global application state.
612
- * @return {boolean} Whether the editor is zoomed.
602
+ * @return {number|"auto-scaled"} Zoom level.
613
603
  */
614
- export function isZoomOut( state ) {
615
- return getZoomLevel( state ) < 100;
604
+ export function getZoomLevel( state ) {
605
+ return state.zoomLevel;
616
606
  }
617
607
 
618
608
  /**
@@ -8,6 +8,7 @@ import fastDeepEqual from 'fast-deep-equal/es6';
8
8
  */
9
9
  import { pipe } from '@wordpress/compose';
10
10
  import { combineReducers, select } from '@wordpress/data';
11
+ import deprecated from '@wordpress/deprecated';
11
12
  import { store as blocksStore } from '@wordpress/blocks';
12
13
  /**
13
14
  * Internal dependencies
@@ -1660,17 +1661,30 @@ export function template( state = { isValid: true }, action ) {
1660
1661
  */
1661
1662
  export function settings( state = SETTINGS_DEFAULTS, action ) {
1662
1663
  switch ( action.type ) {
1663
- case 'UPDATE_SETTINGS':
1664
- if ( action.reset ) {
1665
- return {
1666
- ...SETTINGS_DEFAULTS,
1667
- ...action.settings,
1668
- };
1669
- }
1670
- return {
1671
- ...state,
1672
- ...action.settings,
1673
- };
1664
+ case 'UPDATE_SETTINGS': {
1665
+ const updatedSettings = action.reset
1666
+ ? {
1667
+ ...SETTINGS_DEFAULTS,
1668
+ ...action.settings,
1669
+ }
1670
+ : {
1671
+ ...state,
1672
+ ...action.settings,
1673
+ };
1674
+
1675
+ Object.defineProperty( updatedSettings, '__unstableIsPreviewMode', {
1676
+ get() {
1677
+ deprecated( '__unstableIsPreviewMode', {
1678
+ since: '6.8',
1679
+ alternative: 'isPreviewMode',
1680
+ } );
1681
+
1682
+ return this.isPreviewMode;
1683
+ },
1684
+ } );
1685
+
1686
+ return updatedSettings;
1687
+ }
1674
1688
  }
1675
1689
 
1676
1690
  return state;