@wordpress/block-editor 9.1.0 → 9.4.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 (640) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/autocompleters/block.js +3 -1
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/components/block-actions/index.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js.map +1 -1
  6. package/build/components/block-alignment-matrix-control/index.js +3 -7
  7. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  8. package/build/components/block-breadcrumb/index.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js.map +1 -1
  10. package/build/components/block-context/index.js.map +1 -1
  11. package/build/components/block-controls/hook.js.map +1 -1
  12. package/build/components/block-draggable/draggable-chip.native.js +2 -1
  13. package/build/components/block-draggable/draggable-chip.native.js.map +1 -1
  14. package/build/components/block-draggable/index.js.map +1 -1
  15. package/build/components/block-draggable/index.native.js +7 -3
  16. package/build/components/block-draggable/index.native.js.map +1 -1
  17. package/build/components/block-list/block-list-item.native.js.map +1 -1
  18. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  19. package/build/components/block-list/block.js.map +1 -1
  20. package/build/components/block-list/block.native.js +2 -1
  21. package/build/components/block-list/block.native.js.map +1 -1
  22. package/build/components/block-list/index.js +34 -32
  23. package/build/components/block-list/index.js.map +1 -1
  24. package/build/components/block-list/index.native.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js.map +1 -1
  26. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  28. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  29. package/build/components/block-list-appender/index.js.map +1 -1
  30. package/build/components/block-list-appender/index.native.js.map +1 -1
  31. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  32. package/build/components/block-mobile-toolbar/index.native.js +2 -1
  33. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  34. package/build/components/block-mover/button.js.map +1 -1
  35. package/build/components/block-mover/index.native.js.map +1 -1
  36. package/build/components/block-parent-selector/index.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +3 -9
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-popover/inbetween.js +9 -6
  42. package/build/components/block-popover/inbetween.js.map +1 -1
  43. package/build/components/block-popover/index.js +2 -1
  44. package/build/components/block-popover/index.js.map +1 -1
  45. package/build/components/block-preview/auto.js +21 -5
  46. package/build/components/block-preview/auto.js.map +1 -1
  47. package/build/components/block-selection-clearer/index.js.map +1 -1
  48. package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
  49. package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  50. package/build/components/block-settings-menu/block-mode-toggle.js +3 -7
  51. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  52. package/build/components/block-settings-menu/block-settings-dropdown.js +6 -3
  53. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  54. package/build/components/block-settings-menu/index.js +6 -2
  55. package/build/components/block-settings-menu/index.js.map +1 -1
  56. package/build/components/block-settings-menu-controls/index.js +4 -1
  57. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  58. package/build/components/block-styles/index.js +6 -3
  59. package/build/components/block-styles/index.js.map +1 -1
  60. package/build/components/block-styles/menu-items.js +3 -7
  61. package/build/components/block-styles/menu-items.js.map +1 -1
  62. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  63. package/build/components/block-title/use-block-display-title.js +3 -10
  64. package/build/components/block-title/use-block-display-title.js.map +1 -1
  65. package/build/components/block-toolbar/index.native.js.map +1 -1
  66. package/build/components/block-toolbar/utils.js +5 -8
  67. package/build/components/block-toolbar/utils.js.map +1 -1
  68. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  69. package/build/components/block-tools/block-selection-button.js +1 -0
  70. package/build/components/block-tools/block-selection-button.js.map +1 -1
  71. package/build/components/block-tools/index.js.map +1 -1
  72. package/build/components/block-types-list/index.native.js.map +1 -1
  73. package/build/components/block-variation-transforms/index.js +16 -2
  74. package/build/components/block-variation-transforms/index.js.map +1 -1
  75. package/build/components/color-style-selector/index.js.map +1 -1
  76. package/build/components/colors/with-colors.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +72 -95
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
  80. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  81. package/build/components/convert-to-group-buttons/toolbar.js +22 -5
  82. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  83. package/build/components/copy-handler/index.js +17 -1
  84. package/build/components/copy-handler/index.js.map +1 -1
  85. package/build/components/default-block-appender/index.js.map +1 -1
  86. package/build/components/default-block-appender/index.native.js.map +1 -1
  87. package/build/components/default-style-picker/index.js.map +1 -1
  88. package/build/components/duotone/components.js +145 -0
  89. package/build/components/duotone/components.js.map +1 -0
  90. package/build/components/duotone/index.js +40 -0
  91. package/build/components/duotone/index.js.map +1 -0
  92. package/build/components/duotone/utils.js +38 -0
  93. package/build/components/duotone/utils.js.map +1 -0
  94. package/build/components/duotone-control/index.js +17 -5
  95. package/build/components/duotone-control/index.js.map +1 -1
  96. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  97. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  98. package/build/components/image-size-control/index.js +3 -1
  99. package/build/components/image-size-control/index.js.map +1 -1
  100. package/build/components/index.js +41 -0
  101. package/build/components/index.js.map +1 -1
  102. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  103. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  104. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  105. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  106. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  107. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  108. package/build/components/inserter/index.js +3 -3
  109. package/build/components/inserter/index.js.map +1 -1
  110. package/build/components/inserter/index.native.js.map +1 -1
  111. package/build/components/inserter/library.js +3 -7
  112. package/build/components/inserter/library.js.map +1 -1
  113. package/build/components/inserter/menu.js.map +1 -1
  114. package/build/components/inserter/menu.native.js.map +1 -1
  115. package/build/components/inserter/no-results.native.js.map +1 -1
  116. package/build/components/inserter/quick-inserter.js.map +1 -1
  117. package/build/components/inserter/search-items.js +1 -1
  118. package/build/components/inserter/search-items.js.map +1 -1
  119. package/build/components/inserter/search-results.native.js.map +1 -1
  120. package/build/components/inspector-popover-header/index.js +56 -0
  121. package/build/components/inspector-popover-header/index.js.map +1 -0
  122. package/build/components/line-height-control/index.js.map +1 -1
  123. package/build/components/link-control/index.js +4 -4
  124. package/build/components/link-control/index.js.map +1 -1
  125. package/build/components/link-control/search-create-button.js +1 -3
  126. package/build/components/link-control/search-create-button.js.map +1 -1
  127. package/build/components/link-control/search-input.js +5 -3
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/settings-drawer.js +3 -7
  130. package/build/components/link-control/settings-drawer.js.map +1 -1
  131. package/build/components/link-control/use-search-handler.js.map +1 -1
  132. package/build/components/list-view/block-contents.js.map +1 -1
  133. package/build/components/list-view/branch.js.map +1 -1
  134. package/build/components/list-view/index.js.map +1 -1
  135. package/build/components/list-view/use-block-selection.js.map +1 -1
  136. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  137. package/build/components/list-view/utils.js +1 -7
  138. package/build/components/list-view/utils.js.map +1 -1
  139. package/build/components/media-placeholder/index.js +5 -6
  140. package/build/components/media-placeholder/index.js.map +1 -1
  141. package/build/components/media-placeholder/index.native.js +4 -4
  142. package/build/components/media-placeholder/index.native.js.map +1 -1
  143. package/build/components/media-replace-flow/index.js +23 -14
  144. package/build/components/media-replace-flow/index.js.map +1 -1
  145. package/build/components/media-upload/index.native.js +10 -4
  146. package/build/components/media-upload/index.native.js.map +1 -1
  147. package/build/components/navigable-toolbar/index.js.map +1 -1
  148. package/build/components/plain-text/index.native.js +62 -7
  149. package/build/components/plain-text/index.native.js.map +1 -1
  150. package/build/components/preview-options/index.js +4 -0
  151. package/build/components/preview-options/index.js.map +1 -1
  152. package/build/components/provider/use-block-sync.js +5 -3
  153. package/build/components/provider/use-block-sync.js.map +1 -1
  154. package/build/components/publish-date-time-picker/index.js +56 -0
  155. package/build/components/publish-date-time-picker/index.js.map +1 -0
  156. package/build/components/rich-text/embed-handler-picker.native.js +4 -8
  157. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -1
  158. package/build/components/rich-text/index.js +1 -1
  159. package/build/components/rich-text/index.js.map +1 -1
  160. package/build/components/rich-text/index.native.js +5 -1
  161. package/build/components/rich-text/index.native.js.map +1 -1
  162. package/build/components/rich-text/use-format-types.js.map +1 -1
  163. package/build/components/rich-text/use-input-rules.js +4 -13
  164. package/build/components/rich-text/use-input-rules.js.map +1 -1
  165. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  166. package/build/components/rich-text/use-paste-handler.js +20 -5
  167. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  168. package/build/components/skip-to-selected-block/index.js.map +1 -1
  169. package/build/components/ungroup-button/index.native.js +3 -7
  170. package/build/components/ungroup-button/index.native.js.map +1 -1
  171. package/build/components/url-input/index.js +14 -3
  172. package/build/components/url-input/index.js.map +1 -1
  173. package/build/components/use-block-display-information/index.js.map +1 -1
  174. package/build/components/use-block-drop-zone/index.js.map +1 -1
  175. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  176. package/build/components/use-display-block-controls/index.native.js.map +1 -1
  177. package/build/components/use-on-block-drop/index.js.map +1 -1
  178. package/build/components/use-on-block-drop/index.native.js.map +1 -1
  179. package/build/components/use-setting/index.js.map +1 -1
  180. package/build/components/writing-flow/use-arrow-nav.js +12 -12
  181. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  182. package/build/components/writing-flow/use-click-selection.js.map +1 -1
  183. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  184. package/build/components/writing-flow/use-input.js +15 -0
  185. package/build/components/writing-flow/use-input.js.map +1 -1
  186. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  187. package/build/components/writing-flow/use-select-all.js.map +1 -1
  188. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  189. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  190. package/build/elements/index.js +17 -0
  191. package/build/elements/index.js.map +1 -0
  192. package/build/hooks/aria-label.js +71 -0
  193. package/build/hooks/aria-label.js.map +1 -0
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color-panel.native.js.map +1 -1
  196. package/build/hooks/color.js +8 -88
  197. package/build/hooks/color.js.map +1 -1
  198. package/build/hooks/dimensions.js +14 -4
  199. package/build/hooks/dimensions.js.map +1 -1
  200. package/build/hooks/duotone.js +33 -160
  201. package/build/hooks/duotone.js.map +1 -1
  202. package/build/hooks/font-family.js.map +1 -1
  203. package/build/hooks/gap.js.map +1 -1
  204. package/build/hooks/index.js +3 -7
  205. package/build/hooks/index.js.map +1 -1
  206. package/build/hooks/layout.js +44 -5
  207. package/build/hooks/layout.js.map +1 -1
  208. package/build/index.js +14 -7
  209. package/build/index.js.map +1 -1
  210. package/build/layouts/flex.js +7 -4
  211. package/build/layouts/flex.js.map +1 -1
  212. package/build/store/actions.js +24 -14
  213. package/build/store/actions.js.map +1 -1
  214. package/build/store/reducer.js +35 -11
  215. package/build/store/reducer.js.map +1 -1
  216. package/build/store/selectors.js +30 -2
  217. package/build/store/selectors.js.map +1 -1
  218. package/build/utils/pasting.js.map +1 -1
  219. package/build/utils/selection.js +34 -0
  220. package/build/utils/selection.js.map +1 -0
  221. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  222. package/build-module/autocompleters/block.js +4 -1
  223. package/build-module/autocompleters/block.js.map +1 -1
  224. package/build-module/components/block-actions/index.js.map +1 -1
  225. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  226. package/build-module/components/block-alignment-matrix-control/index.js +2 -5
  227. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  228. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  229. package/build-module/components/block-content-overlay/index.js.map +1 -1
  230. package/build-module/components/block-context/index.js.map +1 -1
  231. package/build-module/components/block-controls/hook.js.map +1 -1
  232. package/build-module/components/block-draggable/draggable-chip.native.js +2 -1
  233. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -1
  234. package/build-module/components/block-draggable/index.js.map +1 -1
  235. package/build-module/components/block-draggable/index.native.js +7 -3
  236. package/build-module/components/block-draggable/index.native.js.map +1 -1
  237. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  238. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  239. package/build-module/components/block-list/block.js.map +1 -1
  240. package/build-module/components/block-list/block.native.js +2 -1
  241. package/build-module/components/block-list/block.native.js.map +1 -1
  242. package/build-module/components/block-list/index.js +35 -33
  243. package/build-module/components/block-list/index.js.map +1 -1
  244. package/build-module/components/block-list/index.native.js.map +1 -1
  245. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  246. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  247. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  248. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  249. package/build-module/components/block-list-appender/index.js.map +1 -1
  250. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  252. package/build-module/components/block-mobile-toolbar/index.native.js +2 -1
  253. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  254. package/build-module/components/block-mover/button.js.map +1 -1
  255. package/build-module/components/block-mover/index.native.js.map +1 -1
  256. package/build-module/components/block-parent-selector/index.js.map +1 -1
  257. package/build-module/components/block-pattern-setup/index.js +3 -9
  258. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  259. package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
  260. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  261. package/build-module/components/block-popover/inbetween.js +9 -6
  262. package/build-module/components/block-popover/inbetween.js.map +1 -1
  263. package/build-module/components/block-popover/index.js +2 -1
  264. package/build-module/components/block-popover/index.js.map +1 -1
  265. package/build-module/components/block-preview/auto.js +20 -5
  266. package/build-module/components/block-preview/auto.js.map +1 -1
  267. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  268. package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
  269. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  270. package/build-module/components/block-settings-menu/block-mode-toggle.js +3 -5
  271. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  272. package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -2
  273. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  274. package/build-module/components/block-settings-menu/index.js +6 -3
  275. package/build-module/components/block-settings-menu/index.js.map +1 -1
  276. package/build-module/components/block-settings-menu-controls/index.js +5 -2
  277. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  278. package/build-module/components/block-styles/index.js +5 -2
  279. package/build-module/components/block-styles/index.js.map +1 -1
  280. package/build-module/components/block-styles/menu-items.js +3 -5
  281. package/build-module/components/block-styles/menu-items.js.map +1 -1
  282. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  283. package/build-module/components/block-title/use-block-display-title.js +3 -9
  284. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  285. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  286. package/build-module/components/block-toolbar/utils.js +3 -5
  287. package/build-module/components/block-toolbar/utils.js.map +1 -1
  288. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  289. package/build-module/components/block-tools/block-selection-button.js +1 -0
  290. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  291. package/build-module/components/block-tools/index.js.map +1 -1
  292. package/build-module/components/block-types-list/index.native.js.map +1 -1
  293. package/build-module/components/block-variation-transforms/index.js +13 -2
  294. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  295. package/build-module/components/color-style-selector/index.js.map +1 -1
  296. package/build-module/components/colors/with-colors.js.map +1 -1
  297. package/build-module/components/colors-gradients/dropdown.js +74 -97
  298. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  299. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
  300. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  301. package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
  302. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  303. package/build-module/components/copy-handler/index.js +18 -2
  304. package/build-module/components/copy-handler/index.js.map +1 -1
  305. package/build-module/components/default-block-appender/index.js.map +1 -1
  306. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  307. package/build-module/components/default-style-picker/index.js.map +1 -1
  308. package/build-module/components/duotone/components.js +130 -0
  309. package/build-module/components/duotone/components.js.map +1 -0
  310. package/build-module/components/duotone/index.js +3 -0
  311. package/build-module/components/duotone/index.js.map +1 -0
  312. package/build-module/components/duotone/utils.js +30 -0
  313. package/build-module/components/duotone/utils.js.map +1 -0
  314. package/build-module/components/duotone-control/index.js +18 -6
  315. package/build-module/components/duotone-control/index.js.map +1 -1
  316. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  317. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  318. package/build-module/components/image-size-control/index.js +4 -1
  319. package/build-module/components/image-size-control/index.js.map +1 -1
  320. package/build-module/components/index.js +4 -0
  321. package/build-module/components/index.js.map +1 -1
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  323. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  324. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  325. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  326. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  327. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  328. package/build-module/components/inserter/index.js +3 -2
  329. package/build-module/components/inserter/index.js.map +1 -1
  330. package/build-module/components/inserter/index.native.js.map +1 -1
  331. package/build-module/components/inserter/library.js +2 -5
  332. package/build-module/components/inserter/library.js.map +1 -1
  333. package/build-module/components/inserter/menu.js.map +1 -1
  334. package/build-module/components/inserter/menu.native.js.map +1 -1
  335. package/build-module/components/inserter/no-results.native.js.map +1 -1
  336. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  337. package/build-module/components/inserter/search-items.js +2 -2
  338. package/build-module/components/inserter/search-items.js.map +1 -1
  339. package/build-module/components/inserter/search-results.native.js.map +1 -1
  340. package/build-module/components/inspector-popover-header/index.js +46 -0
  341. package/build-module/components/inspector-popover-header/index.js.map +1 -0
  342. package/build-module/components/line-height-control/index.js.map +1 -1
  343. package/build-module/components/link-control/index.js +2 -1
  344. package/build-module/components/link-control/index.js.map +1 -1
  345. package/build-module/components/link-control/search-create-button.js +1 -2
  346. package/build-module/components/link-control/search-create-button.js.map +1 -1
  347. package/build-module/components/link-control/search-input.js +3 -1
  348. package/build-module/components/link-control/search-input.js.map +1 -1
  349. package/build-module/components/link-control/settings-drawer.js +2 -5
  350. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  351. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  352. package/build-module/components/list-view/block-contents.js.map +1 -1
  353. package/build-module/components/list-view/branch.js.map +1 -1
  354. package/build-module/components/list-view/index.js.map +1 -1
  355. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  356. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  357. package/build-module/components/list-view/utils.js +1 -6
  358. package/build-module/components/list-view/utils.js.map +1 -1
  359. package/build-module/components/media-placeholder/index.js +3 -3
  360. package/build-module/components/media-placeholder/index.js.map +1 -1
  361. package/build-module/components/media-placeholder/index.native.js +5 -3
  362. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  363. package/build-module/components/media-replace-flow/index.js +24 -14
  364. package/build-module/components/media-replace-flow/index.js.map +1 -1
  365. package/build-module/components/media-upload/index.native.js +8 -3
  366. package/build-module/components/media-upload/index.native.js.map +1 -1
  367. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  368. package/build-module/components/plain-text/index.native.js +63 -8
  369. package/build-module/components/plain-text/index.native.js.map +1 -1
  370. package/build-module/components/preview-options/index.js +4 -0
  371. package/build-module/components/preview-options/index.js.map +1 -1
  372. package/build-module/components/provider/use-block-sync.js +4 -1
  373. package/build-module/components/provider/use-block-sync.js.map +1 -1
  374. package/build-module/components/publish-date-time-picker/index.js +42 -0
  375. package/build-module/components/publish-date-time-picker/index.js.map +1 -0
  376. package/build-module/components/rich-text/embed-handler-picker.native.js +3 -5
  377. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -1
  378. package/build-module/components/rich-text/index.js +1 -1
  379. package/build-module/components/rich-text/index.js.map +1 -1
  380. package/build-module/components/rich-text/index.native.js +5 -1
  381. package/build-module/components/rich-text/index.native.js.map +1 -1
  382. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  383. package/build-module/components/rich-text/use-input-rules.js +3 -11
  384. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  385. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  386. package/build-module/components/rich-text/use-paste-handler.js +20 -5
  387. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  388. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  389. package/build-module/components/ungroup-button/index.native.js +3 -5
  390. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  391. package/build-module/components/url-input/index.js +11 -1
  392. package/build-module/components/url-input/index.js.map +1 -1
  393. package/build-module/components/use-block-display-information/index.js.map +1 -1
  394. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  395. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  396. package/build-module/components/use-display-block-controls/index.native.js.map +1 -1
  397. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  398. package/build-module/components/use-on-block-drop/index.native.js.map +1 -1
  399. package/build-module/components/use-setting/index.js.map +1 -1
  400. package/build-module/components/writing-flow/use-arrow-nav.js +12 -11
  401. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  402. package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
  403. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  404. package/build-module/components/writing-flow/use-input.js +15 -0
  405. package/build-module/components/writing-flow/use-input.js.map +1 -1
  406. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  407. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  408. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  409. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  410. package/build-module/elements/index.js +8 -0
  411. package/build-module/elements/index.js.map +1 -0
  412. package/build-module/hooks/aria-label.js +59 -0
  413. package/build-module/hooks/aria-label.js.map +1 -0
  414. package/build-module/hooks/color-panel.js.map +1 -1
  415. package/build-module/hooks/color-panel.native.js.map +1 -1
  416. package/build-module/hooks/color.js +8 -88
  417. package/build-module/hooks/color.js.map +1 -1
  418. package/build-module/hooks/dimensions.js +14 -4
  419. package/build-module/hooks/dimensions.js.map +1 -1
  420. package/build-module/hooks/duotone.js +22 -140
  421. package/build-module/hooks/duotone.js.map +1 -1
  422. package/build-module/hooks/font-family.js.map +1 -1
  423. package/build-module/hooks/gap.js.map +1 -1
  424. package/build-module/hooks/index.js +1 -1
  425. package/build-module/hooks/index.js.map +1 -1
  426. package/build-module/hooks/layout.js +45 -6
  427. package/build-module/hooks/layout.js.map +1 -1
  428. package/build-module/index.js +2 -1
  429. package/build-module/index.js.map +1 -1
  430. package/build-module/layouts/flex.js +6 -4
  431. package/build-module/layouts/flex.js.map +1 -1
  432. package/build-module/store/actions.js +18 -11
  433. package/build-module/store/actions.js.map +1 -1
  434. package/build-module/store/reducer.js +36 -12
  435. package/build-module/store/reducer.js.map +1 -1
  436. package/build-module/store/selectors.js +25 -2
  437. package/build-module/store/selectors.js.map +1 -1
  438. package/build-module/utils/pasting.js.map +1 -1
  439. package/build-module/utils/selection.js +24 -0
  440. package/build-module/utils/selection.js.map +1 -0
  441. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  442. package/build-style/style-rtl.css +37 -37
  443. package/build-style/style.css +37 -37
  444. package/package.json +30 -30
  445. package/src/autocompleters/block.js +2 -1
  446. package/src/components/block-actions/index.js +2 -3
  447. package/src/components/block-alignment-control/ui.js +4 -6
  448. package/src/components/block-alignment-matrix-control/index.js +2 -4
  449. package/src/components/block-breadcrumb/index.js +2 -5
  450. package/src/components/block-compare/test/block-view.js +2 -1
  451. package/src/components/block-content-overlay/index.js +2 -5
  452. package/src/components/block-context/index.js +4 -4
  453. package/src/components/block-controls/hook.js +2 -3
  454. package/src/components/block-draggable/draggable-chip.native.js +1 -1
  455. package/src/components/block-draggable/index.js +6 -13
  456. package/src/components/block-draggable/index.native.js +10 -14
  457. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
  458. package/src/components/block-draggable/test/helpers.native.js +183 -0
  459. package/src/components/block-draggable/test/index.native.js +493 -0
  460. package/src/components/block-edit/test/edit.js +2 -1
  461. package/src/components/block-list/block-list-item.native.js +4 -12
  462. package/src/components/block-list/block-selection-button.native.js +2 -3
  463. package/src/components/block-list/block.js +8 -10
  464. package/src/components/block-list/block.native.js +11 -15
  465. package/src/components/block-list/index.js +46 -47
  466. package/src/components/block-list/index.native.js +12 -21
  467. package/src/components/block-list/style.scss +1 -1
  468. package/src/components/block-list/test/block-list-context.native.js +8 -16
  469. package/src/components/block-list/use-block-props/index.js +6 -3
  470. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +2 -3
  471. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +2 -3
  472. package/src/components/block-list/use-in-between-inserter.js +2 -3
  473. package/src/components/block-list-appender/index.js +2 -5
  474. package/src/components/block-list-appender/index.native.js +2 -3
  475. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
  476. package/src/components/block-mobile-toolbar/index.native.js +1 -0
  477. package/src/components/block-mover/button.js +2 -3
  478. package/src/components/block-mover/index.native.js +4 -6
  479. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +4 -0
  480. package/src/components/block-parent-selector/index.js +2 -3
  481. package/src/components/block-pattern-setup/index.js +4 -14
  482. package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
  483. package/src/components/block-popover/inbetween.js +12 -7
  484. package/src/components/block-popover/index.js +1 -0
  485. package/src/components/block-preview/auto.js +21 -11
  486. package/src/components/block-selection-clearer/index.js +2 -3
  487. package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
  488. package/src/components/block-settings-menu/block-mode-toggle.js +4 -8
  489. package/src/components/block-settings-menu/block-settings-dropdown.js +9 -8
  490. package/src/components/block-settings-menu/index.js +15 -11
  491. package/src/components/block-settings-menu-controls/index.js +3 -2
  492. package/src/components/block-styles/index.js +3 -1
  493. package/src/components/block-styles/menu-items.js +2 -5
  494. package/src/components/block-switcher/block-transformations-menu.js +2 -4
  495. package/src/components/block-title/use-block-display-title.js +9 -7
  496. package/src/components/block-toolbar/index.native.js +2 -5
  497. package/src/components/block-toolbar/utils.js +3 -11
  498. package/src/components/block-tools/block-contextual-toolbar.js +2 -5
  499. package/src/components/block-tools/block-selection-button.js +1 -0
  500. package/src/components/block-tools/index.js +2 -3
  501. package/src/components/block-types-list/index.native.js +2 -4
  502. package/src/components/block-variation-transforms/index.js +10 -8
  503. package/src/components/color-palette/test/control.js +2 -1
  504. package/src/components/color-style-selector/index.js +27 -28
  505. package/src/components/colors/test/with-colors.js +14 -14
  506. package/src/components/colors/with-colors.js +8 -12
  507. package/src/components/colors-gradients/dropdown.js +49 -69
  508. package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
  509. package/src/components/colors-gradients/style.scss +11 -37
  510. package/src/components/colors-gradients/test/control.js +10 -10
  511. package/src/components/convert-to-group-buttons/toolbar.js +32 -19
  512. package/src/components/copy-handler/README.md +7 -2
  513. package/src/components/copy-handler/index.js +26 -6
  514. package/src/components/default-block-appender/index.js +4 -6
  515. package/src/components/default-block-appender/index.native.js +4 -9
  516. package/src/components/default-style-picker/index.js +20 -21
  517. package/src/components/duotone/components.js +133 -0
  518. package/src/components/duotone/index.js +7 -0
  519. package/src/components/duotone/utils.js +25 -0
  520. package/src/components/duotone-control/index.js +12 -7
  521. package/src/components/duotone-control/style.scss +5 -0
  522. package/src/components/font-sizes/with-font-sizes.js +2 -3
  523. package/src/components/image-editor/aspect-ratio-dropdown.js +2 -6
  524. package/src/components/image-size-control/index.js +4 -7
  525. package/src/components/index.js +4 -0
  526. package/src/components/inner-blocks/use-inner-block-template-sync.js +2 -3
  527. package/src/components/inner-blocks/use-nested-settings-update.js +6 -9
  528. package/src/components/inserter/block-types-tab.native.js +2 -3
  529. package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -3
  530. package/src/components/inserter/hooks/use-insertion-point.js +3 -2
  531. package/src/components/inserter/hooks/use-patterns-state.js +4 -5
  532. package/src/components/inserter/index.js +7 -11
  533. package/src/components/inserter/index.native.js +6 -11
  534. package/src/components/inserter/library.js +2 -5
  535. package/src/components/inserter/menu.js +14 -19
  536. package/src/components/inserter/menu.native.js +8 -6
  537. package/src/components/inserter/no-results.native.js +2 -1
  538. package/src/components/inserter/quick-inserter.js +2 -3
  539. package/src/components/inserter/search-items.js +6 -6
  540. package/src/components/inserter/search-results.native.js +4 -6
  541. package/src/components/inspector-popover-header/README.md +76 -0
  542. package/src/components/inspector-popover-header/index.js +56 -0
  543. package/src/components/inspector-popover-header/style.scss +16 -0
  544. package/src/components/line-height-control/index.js +1 -2
  545. package/src/components/link-control/index.js +4 -4
  546. package/src/components/link-control/search-create-button.js +4 -2
  547. package/src/components/link-control/search-input.js +3 -1
  548. package/src/components/link-control/settings-drawer.js +2 -5
  549. package/src/components/link-control/test/fixtures/index.js +5 -7
  550. package/src/components/link-control/test/index.js +79 -102
  551. package/src/components/link-control/use-search-handler.js +2 -2
  552. package/src/components/list-view/block-contents.js +2 -4
  553. package/src/components/list-view/branch.js +22 -23
  554. package/src/components/list-view/index.js +4 -8
  555. package/src/components/list-view/use-block-selection.js +5 -5
  556. package/src/components/list-view/use-list-view-drop-zone.js +2 -1
  557. package/src/components/list-view/utils.js +1 -6
  558. package/src/components/media-placeholder/index.js +3 -3
  559. package/src/components/media-placeholder/index.native.js +9 -5
  560. package/src/components/media-replace-flow/index.js +78 -55
  561. package/src/components/media-upload/README.md +8 -0
  562. package/src/components/media-upload/index.native.js +6 -2
  563. package/src/components/media-upload/test/index.native.js +31 -6
  564. package/src/components/navigable-toolbar/index.js +1 -2
  565. package/src/components/panel-color-settings/test/index.js +2 -1
  566. package/src/components/plain-text/index.native.js +60 -8
  567. package/src/components/preview-options/index.js +4 -0
  568. package/src/components/provider/use-block-sync.js +5 -2
  569. package/src/components/publish-date-time-picker/README.md +52 -0
  570. package/src/components/publish-date-time-picker/index.js +41 -0
  571. package/src/components/responsive-block-control/README.md +3 -1
  572. package/src/components/responsive-block-control/test/index.js +4 -4
  573. package/src/components/rich-text/embed-handler-picker.native.js +2 -5
  574. package/src/components/rich-text/index.js +9 -4
  575. package/src/components/rich-text/index.native.js +4 -0
  576. package/src/components/rich-text/use-format-types.js +16 -16
  577. package/src/components/rich-text/use-input-rules.js +6 -15
  578. package/src/components/rich-text/use-mark-persistent.js +2 -3
  579. package/src/components/rich-text/use-paste-handler.js +17 -5
  580. package/src/components/skip-to-selected-block/index.js +2 -3
  581. package/src/components/ungroup-button/index.native.js +4 -8
  582. package/src/components/url-input/index.js +21 -20
  583. package/src/components/use-block-display-information/index.js +4 -6
  584. package/src/components/use-block-drop-zone/index.js +2 -3
  585. package/src/components/use-block-drop-zone/index.native.js +2 -4
  586. package/src/components/use-block-drop-zone/test/index.js +22 -23
  587. package/src/components/use-display-block-controls/index.native.js +2 -3
  588. package/src/components/use-no-recursive-renders/test/use-no-recursive-renders.js +2 -3
  589. package/src/components/use-on-block-drop/index.js +2 -5
  590. package/src/components/use-on-block-drop/index.native.js +4 -8
  591. package/src/components/use-setting/index.js +8 -6
  592. package/src/components/writing-flow/test/index.js +22 -4
  593. package/src/components/writing-flow/use-arrow-nav.js +22 -10
  594. package/src/components/writing-flow/use-click-selection.js +2 -5
  595. package/src/components/writing-flow/use-drag-selection.js +6 -9
  596. package/src/components/writing-flow/use-input.js +12 -0
  597. package/src/components/writing-flow/use-multi-selection.js +2 -4
  598. package/src/components/writing-flow/use-select-all.js +2 -5
  599. package/src/components/writing-flow/use-selection-observer.js +4 -6
  600. package/src/components/writing-flow/use-tab-nav.js +2 -5
  601. package/src/elements/index.js +8 -0
  602. package/src/elements/test/index.js +18 -0
  603. package/src/hooks/aria-label.js +67 -0
  604. package/src/hooks/color-panel.js +4 -4
  605. package/src/hooks/color-panel.native.js +2 -2
  606. package/src/hooks/color.js +7 -76
  607. package/src/hooks/color.scss +9 -0
  608. package/src/hooks/dimensions.js +11 -3
  609. package/src/hooks/duotone.js +18 -139
  610. package/src/hooks/font-family.js +4 -2
  611. package/src/hooks/gap.js +2 -3
  612. package/src/hooks/index.js +1 -1
  613. package/src/hooks/layout.js +74 -13
  614. package/src/hooks/test/align.js +2 -1
  615. package/src/hooks/test/generated-class-name.js +2 -5
  616. package/src/hooks/test/utils.js +2 -5
  617. package/src/index.js +1 -1
  618. package/src/layouts/flex.js +13 -5
  619. package/src/store/actions.js +772 -729
  620. package/src/store/reducer.js +219 -183
  621. package/src/store/selectors.js +82 -54
  622. package/src/store/test/actions.js +2 -1
  623. package/src/store/test/reducer.js +145 -10
  624. package/src/store/test/selectors.js +20 -27
  625. package/src/style.scss +1 -0
  626. package/src/utils/pasting.js +3 -3
  627. package/src/utils/selection.js +26 -0
  628. package/src/utils/test/selection.js +39 -0
  629. package/src/utils/transform-styles/transforms/wrap.js +30 -28
  630. package/tsconfig.tsbuildinfo +1 -1
  631. package/build/components/colors/color-panel.js +0 -82
  632. package/build/components/colors/color-panel.js.map +0 -1
  633. package/build/components/colors/color-panel.native.js +0 -11
  634. package/build/components/colors/color-panel.native.js.map +0 -1
  635. package/build-module/components/colors/color-panel.js +0 -70
  636. package/build-module/components/colors/color-panel.js.map +0 -1
  637. package/build-module/components/colors/color-panel.native.js +0 -4
  638. package/build-module/components/colors/color-panel.native.js.map +0 -1
  639. package/src/components/colors/color-panel.js +0 -91
  640. package/src/components/colors/color-panel.native.js +0 -3
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { AsyncModeProvider, useSelect } from '@wordpress/data';
9
+ import { AsyncModeProvider, useSelect, useDispatch } from '@wordpress/data';
10
10
  import { useViewportMatch, useMergeRefs } from '@wordpress/compose';
11
11
  import { createContext, useState, useMemo } from '@wordpress/element';
12
12
 
@@ -36,9 +36,8 @@ function Root( { className, ...settings } ) {
36
36
  const isLargeViewport = useViewportMatch( 'medium' );
37
37
  const { isOutlineMode, isFocusMode, isNavigationMode } = useSelect(
38
38
  ( select ) => {
39
- const { getSettings, isNavigationMode: _isNavigationMode } = select(
40
- blockEditorStore
41
- );
39
+ const { getSettings, isNavigationMode: _isNavigationMode } =
40
+ select( blockEditorStore );
42
41
  const { outlineMode, focusMode } = getSettings();
43
42
  return {
44
43
  isOutlineMode: outlineMode,
@@ -48,6 +47,23 @@ function Root( { className, ...settings } ) {
48
47
  },
49
48
  []
50
49
  );
50
+ const { setBlockVisibility } = useDispatch( blockEditorStore );
51
+ const intersectionObserver = useMemo( () => {
52
+ const { IntersectionObserver: Observer } = window;
53
+
54
+ if ( ! Observer ) {
55
+ return;
56
+ }
57
+
58
+ return new Observer( ( entries ) => {
59
+ const updates = {};
60
+ for ( const entry of entries ) {
61
+ const clientId = entry.target.getAttribute( 'data-block' );
62
+ updates[ clientId ] = entry.isIntersecting;
63
+ }
64
+ setBlockVisibility( updates );
65
+ } );
66
+ }, [] );
51
67
  const innerBlocksProps = useInnerBlocksProps(
52
68
  {
53
69
  ref: useMergeRefs( [
@@ -65,7 +81,9 @@ function Root( { className, ...settings } ) {
65
81
  );
66
82
  return (
67
83
  <elementContext.Provider value={ element }>
68
- <div { ...innerBlocksProps } />
84
+ <IntersectionObserver.Provider value={ intersectionObserver }>
85
+ <div { ...innerBlocksProps } />
86
+ </IntersectionObserver.Provider>
69
87
  </elementContext.Provider>
70
88
  );
71
89
  }
@@ -90,34 +108,17 @@ function Items( {
90
108
  __experimentalAppenderTagName,
91
109
  __experimentalLayout: layout = defaultLayout,
92
110
  } ) {
93
- const [ intersectingBlocks, setIntersectingBlocks ] = useState( new Set() );
94
- const intersectionObserver = useMemo( () => {
95
- const { IntersectionObserver: Observer } = window;
96
-
97
- if ( ! Observer ) {
98
- return;
99
- }
100
-
101
- return new Observer( ( entries ) => {
102
- setIntersectingBlocks( ( oldIntersectingBlocks ) => {
103
- const newIntersectingBlocks = new Set( oldIntersectingBlocks );
104
- for ( const entry of entries ) {
105
- const clientId = entry.target.getAttribute( 'data-block' );
106
- const action = entry.isIntersecting ? 'add' : 'delete';
107
- newIntersectingBlocks[ action ]( clientId );
108
- }
109
- return newIntersectingBlocks;
110
- } );
111
- } );
112
- }, [ setIntersectingBlocks ] );
113
- const { order, selectedBlocks } = useSelect(
111
+ const { order, selectedBlocks, visibleBlocks } = useSelect(
114
112
  ( select ) => {
115
- const { getBlockOrder, getSelectedBlockClientIds } = select(
116
- blockEditorStore
117
- );
113
+ const {
114
+ getBlockOrder,
115
+ getSelectedBlockClientIds,
116
+ __unstableGetVisibleBlocks,
117
+ } = select( blockEditorStore );
118
118
  return {
119
119
  order: getBlockOrder( rootClientId ),
120
120
  selectedBlocks: getSelectedBlockClientIds(),
121
+ visibleBlocks: __unstableGetVisibleBlocks(),
121
122
  };
122
123
  },
123
124
  [ rootClientId ]
@@ -125,24 +126,22 @@ function Items( {
125
126
 
126
127
  return (
127
128
  <LayoutProvider value={ layout }>
128
- <IntersectionObserver.Provider value={ intersectionObserver }>
129
- { order.map( ( clientId ) => (
130
- <AsyncModeProvider
131
- key={ clientId }
132
- value={
133
- // Only provide data asynchronously if the block is
134
- // not visible and not selected.
135
- ! intersectingBlocks.has( clientId ) &&
136
- ! selectedBlocks.includes( clientId )
137
- }
138
- >
139
- <BlockListBlock
140
- rootClientId={ rootClientId }
141
- clientId={ clientId }
142
- />
143
- </AsyncModeProvider>
144
- ) ) }
145
- </IntersectionObserver.Provider>
129
+ { order.map( ( clientId ) => (
130
+ <AsyncModeProvider
131
+ key={ clientId }
132
+ value={
133
+ // Only provide data asynchronously if the block is
134
+ // not visible and not selected.
135
+ ! visibleBlocks.has( clientId ) &&
136
+ ! selectedBlocks.includes( clientId )
137
+ }
138
+ >
139
+ <BlockListBlock
140
+ rootClientId={ rootClientId }
141
+ clientId={ clientId }
142
+ />
143
+ </AsyncModeProvider>
144
+ ) ) }
146
145
  { order.length < 1 && placeholder }
147
146
  <BlockListAppender
148
147
  tagName={ __experimentalAppenderTagName }
@@ -70,22 +70,18 @@ export class BlockList extends Component {
70
70
  };
71
71
  this.renderItem = this.renderItem.bind( this );
72
72
  this.renderBlockListFooter = this.renderBlockListFooter.bind( this );
73
- this.onCaretVerticalPositionChange = this.onCaretVerticalPositionChange.bind(
74
- this
75
- );
73
+ this.onCaretVerticalPositionChange =
74
+ this.onCaretVerticalPositionChange.bind( this );
76
75
  this.scrollViewInnerRef = this.scrollViewInnerRef.bind( this );
77
76
  this.addBlockToEndOfPost = this.addBlockToEndOfPost.bind( this );
78
- this.shouldFlatListPreventAutomaticScroll = this.shouldFlatListPreventAutomaticScroll.bind(
79
- this
80
- );
81
- this.shouldShowInnerBlockAppender = this.shouldShowInnerBlockAppender.bind(
82
- this
83
- );
77
+ this.shouldFlatListPreventAutomaticScroll =
78
+ this.shouldFlatListPreventAutomaticScroll.bind( this );
79
+ this.shouldShowInnerBlockAppender =
80
+ this.shouldShowInnerBlockAppender.bind( this );
84
81
  this.renderEmptyList = this.renderEmptyList.bind( this );
85
82
  this.getExtraData = this.getExtraData.bind( this );
86
- this.getCellRendererComponent = this.getCellRendererComponent.bind(
87
- this
88
- );
83
+ this.getCellRendererComponent =
84
+ this.getCellRendererComponent.bind( this );
89
85
 
90
86
  this.onLayout = this.onLayout.bind( this );
91
87
 
@@ -241,12 +237,8 @@ export class BlockList extends Component {
241
237
  } = this.props;
242
238
  const { parentScrollRef, onScroll } = extraProps;
243
239
 
244
- const {
245
- blockToolbar,
246
- blockBorder,
247
- headerToolbar,
248
- floatingToolbar,
249
- } = styles;
240
+ const { blockToolbar, blockBorder, headerToolbar, floatingToolbar } =
241
+ styles;
250
242
 
251
243
  const containerStyle = {
252
244
  flex: isRootList ? 1 : 0,
@@ -456,9 +448,8 @@ export default compose( [
456
448
  }
457
449
  ),
458
450
  withDispatch( ( dispatch ) => {
459
- const { insertBlock, replaceBlock, clearSelectedBlock } = dispatch(
460
- blockEditorStore
461
- );
451
+ const { insertBlock, replaceBlock, clearSelectedBlock } =
452
+ dispatch( blockEditorStore );
462
453
 
463
454
  return {
464
455
  clearSelectedBlock,
@@ -293,7 +293,7 @@
293
293
 
294
294
  // Spotlight mode. Fade out blocks unless they contain a selected block.
295
295
  .is-focus-mode .block-editor-block-list__block:not(.has-child-selected) {
296
- opacity: 0.5;
296
+ opacity: 0.2;
297
297
  transition: opacity 0.1s linear;
298
298
  @include reduce-motion("transition");
299
299
 
@@ -139,10 +139,8 @@ describe( 'updateBlocksLayouts', () => {
139
139
  } );
140
140
 
141
141
  it( "adds a new block's layout data at root level with inner blocks", () => {
142
- const {
143
- findBlockLayoutByClientId,
144
- updateBlocksLayouts,
145
- } = DEFAULT_BLOCK_LIST_CONTEXT;
142
+ const { findBlockLayoutByClientId, updateBlocksLayouts } =
143
+ DEFAULT_BLOCK_LIST_CONTEXT;
146
144
  const currentBlockLayouts = {
147
145
  current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
148
146
  };
@@ -180,10 +178,8 @@ describe( 'updateBlocksLayouts', () => {
180
178
  } );
181
179
 
182
180
  it( "adds a new block's layout data at deep level", () => {
183
- const {
184
- findBlockLayoutByClientId,
185
- updateBlocksLayouts,
186
- } = DEFAULT_BLOCK_LIST_CONTEXT;
181
+ const { findBlockLayoutByClientId, updateBlocksLayouts } =
182
+ DEFAULT_BLOCK_LIST_CONTEXT;
187
183
  const currentBlockLayouts = {
188
184
  current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
189
185
  };
@@ -208,10 +204,8 @@ describe( 'updateBlocksLayouts', () => {
208
204
  } );
209
205
 
210
206
  it( "deletes a block's layout data at root level", () => {
211
- const {
212
- findBlockLayoutByClientId,
213
- updateBlocksLayouts,
214
- } = DEFAULT_BLOCK_LIST_CONTEXT;
207
+ const { findBlockLayoutByClientId, updateBlocksLayouts } =
208
+ DEFAULT_BLOCK_LIST_CONTEXT;
215
209
  const currentBlockLayouts = {
216
210
  current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
217
211
  };
@@ -230,10 +224,8 @@ describe( 'updateBlocksLayouts', () => {
230
224
  } );
231
225
 
232
226
  it( "deletes a block's layout data at a deep level", () => {
233
- const {
234
- findBlockLayoutByClientId,
235
- updateBlocksLayouts,
236
- } = DEFAULT_BLOCK_LIST_CONTEXT;
227
+ const { findBlockLayoutByClientId, updateBlocksLayouts } =
228
+ DEFAULT_BLOCK_LIST_CONTEXT;
237
229
  const currentBlockLayouts = {
238
230
  current: cloneDeep( BLOCKS_LAYOUTS_DATA ),
239
231
  };
@@ -62,9 +62,12 @@ export function useBlockProps(
62
62
  props = {},
63
63
  { __unstableIsHtml, __unstableIsDisabled = false } = {}
64
64
  ) {
65
- const { clientId, className, wrapperProps = {}, isAligned } = useContext(
66
- BlockListBlockContext
67
- );
65
+ const {
66
+ clientId,
67
+ className,
68
+ wrapperProps = {},
69
+ isAligned,
70
+ } = useContext( BlockListBlockContext );
68
71
  const {
69
72
  index,
70
73
  mode,
@@ -22,9 +22,8 @@ export function useBlockCustomClassName( clientId ) {
22
22
  // as much.
23
23
  return useSelect(
24
24
  ( select ) => {
25
- const { getBlockName, getBlockAttributes } = select(
26
- blockEditorStore
27
- );
25
+ const { getBlockName, getBlockAttributes } =
26
+ select( blockEditorStore );
28
27
  const attributes = getBlockAttributes( clientId );
29
28
 
30
29
  if ( ! attributes?.className ) {
@@ -24,9 +24,8 @@ export function useEventHandlers( clientId ) {
24
24
  ( select ) => select( blockEditorStore ).isBlockSelected( clientId ),
25
25
  [ clientId ]
26
26
  );
27
- const { getBlockRootClientId, getBlockIndex } = useSelect(
28
- blockEditorStore
29
- );
27
+ const { getBlockRootClientId, getBlockIndex } =
28
+ useSelect( blockEditorStore );
30
29
  const { insertDefaultBlock, removeBlock } = useDispatch( blockEditorStore );
31
30
 
32
31
  return useRefEffect(
@@ -27,9 +27,8 @@ export function useInBetweenInserter() {
27
27
  getSelectedBlockClientIds,
28
28
  getTemplateLock,
29
29
  } = useSelect( blockEditorStore );
30
- const { showInsertionPoint, hideInsertionPoint } = useDispatch(
31
- blockEditorStore
32
- );
30
+ const { showInsertionPoint, hideInsertionPoint } =
31
+ useDispatch( blockEditorStore );
33
32
 
34
33
  return useRefEffect(
35
34
  ( node ) => {
@@ -93,11 +93,8 @@ function BlockListAppender( {
93
93
  }
94
94
 
95
95
  export default withSelect( ( select, { rootClientId } ) => {
96
- const {
97
- canInsertBlockType,
98
- getTemplateLock,
99
- getSelectedBlockClientId,
100
- } = select( blockEditorStore );
96
+ const { canInsertBlockType, getTemplateLock, getSelectedBlockClientId } =
97
+ select( blockEditorStore );
101
98
 
102
99
  return {
103
100
  isLocked: !! getTemplateLock( rootClientId ),
@@ -48,9 +48,8 @@ function BlockListAppender( {
48
48
  }
49
49
 
50
50
  export default withSelect( ( select, { rootClientId } ) => {
51
- const { getBlockOrder, canInsertBlockType, getTemplateLock } = select(
52
- blockEditorStore
53
- );
51
+ const { getBlockOrder, canInsertBlockType, getTemplateLock } =
52
+ select( blockEditorStore );
54
53
 
55
54
  return {
56
55
  isLocked: !! getTemplateLock( rootClientId ),
@@ -386,14 +386,12 @@ export default compose(
386
386
  clearSelectedBlock,
387
387
  } = dispatch( blockEditorStore );
388
388
  const { openGeneralSidebar } = dispatch( 'core/edit-post' );
389
- const { getBlockSelectionEnd, getBlock } = select(
390
- blockEditorStore
391
- );
389
+ const { getBlockSelectionEnd, getBlock } =
390
+ select( blockEditorStore );
392
391
  const { createSuccessNotice } = dispatch( noticesStore );
393
392
 
394
- const {
395
- __experimentalConvertBlockToStatic: convertBlockToStatic,
396
- } = dispatch( reusableBlocksStore );
393
+ const { __experimentalConvertBlockToStatic: convertBlockToStatic } =
394
+ dispatch( reusableBlocksStore );
397
395
 
398
396
  return {
399
397
  createSuccessNotice,
@@ -78,6 +78,7 @@ const BlockMobileToolbar = ( {
78
78
  <BlockDraggable
79
79
  clientId={ clientId }
80
80
  draggingClientId={ draggingClientId }
81
+ testID="draggable-trigger-mobile-toolbar"
81
82
  >
82
83
  { () => <View style={ styles.spacer } /> }
83
84
  </BlockDraggable>
@@ -108,9 +108,8 @@ const BlockMoverButton = forwardRef(
108
108
  [ clientIds, direction ]
109
109
  );
110
110
 
111
- const { moveBlocksDown, moveBlocksUp } = useDispatch(
112
- blockEditorStore
113
- );
111
+ const { moveBlocksDown, moveBlocksUp } =
112
+ useDispatch( blockEditorStore );
114
113
  const moverFunction =
115
114
  direction === 'up' ? moveBlocksUp : moveBlocksDown;
116
115
 
@@ -37,9 +37,8 @@ export const BlockMover = ( {
37
37
  } ) => {
38
38
  const pickerRef = useRef();
39
39
  const [ shouldPresentPicker, setShouldPresentPicker ] = useState( false );
40
- const [ blockPageMoverState, setBlockPageMoverState ] = useState(
41
- undefined
42
- );
40
+ const [ blockPageMoverState, setBlockPageMoverState ] =
41
+ useState( undefined );
43
42
  const showBlockPageMover = ( direction ) => () => {
44
43
  if ( ! pickerRef.current ) {
45
44
  setBlockPageMoverState( undefined );
@@ -167,9 +166,8 @@ export default compose(
167
166
  };
168
167
  } ),
169
168
  withDispatch( ( dispatch, { clientIds, rootClientId } ) => {
170
- const { moveBlocksDown, moveBlocksUp, moveBlocksToPosition } = dispatch(
171
- blockEditorStore
172
- );
169
+ const { moveBlocksDown, moveBlocksUp, moveBlocksToPosition } =
170
+ dispatch( blockEditorStore );
173
171
  return {
174
172
  onMoveDown: partial( moveBlocksDown, clientIds, rootClientId ),
175
173
  onMoveUp: partial( moveBlocksUp, clientIds, rootClientId ),
@@ -35,6 +35,8 @@ Array [
35
35
  >
36
36
  <View
37
37
  collapsable={false}
38
+ handlerTag={3}
39
+ handlerType="LongPressGestureHandler"
38
40
  onGestureHandlerEvent={[Function]}
39
41
  onGestureHandlerStateChange={[Function]}
40
42
  style={
@@ -93,6 +95,8 @@ Array [
93
95
  >
94
96
  <View
95
97
  collapsable={false}
98
+ handlerTag={4}
99
+ handlerType="LongPressGestureHandler"
96
100
  onGestureHandlerEvent={[Function]}
97
101
  onGestureHandlerStateChange={[Function]}
98
102
  style={
@@ -22,9 +22,8 @@ import { store as blockEditorStore } from '../../store';
22
22
  * @return {WPComponent} Parent block selector.
23
23
  */
24
24
  export default function BlockParentSelector() {
25
- const { selectBlock, toggleBlockHighlight } = useDispatch(
26
- blockEditorStore
27
- );
25
+ const { selectBlock, toggleBlockHighlight } =
26
+ useDispatch( blockEditorStore );
28
27
  const { firstParentClientId, shouldHide, hasReducedUI } = useSelect(
29
28
  ( select ) => {
30
29
  const {
@@ -145,21 +145,17 @@ const BlockPatternSetup = ( {
145
145
  clientId,
146
146
  blockName,
147
147
  filterPatternsFn,
148
- startBlankComponent,
149
148
  onBlockPatternSelect,
150
149
  } ) => {
151
150
  const [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );
152
151
  const [ activeSlide, setActiveSlide ] = useState( 0 );
153
- const [ showBlank, setShowBlank ] = useState( false );
154
152
  const { replaceBlock } = useDispatch( blockEditorStore );
155
153
  const patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );
156
- const [
157
- contentResizeListener,
158
- { height: contentHeight },
159
- ] = useResizeObserver();
154
+ const [ contentResizeListener, { height: contentHeight } ] =
155
+ useResizeObserver();
160
156
 
161
- if ( ! patterns?.length || showBlank ) {
162
- return startBlankComponent;
157
+ if ( ! patterns?.length ) {
158
+ return null;
163
159
  }
164
160
 
165
161
  const onBlockPatternSelectDefault = ( blocks ) => {
@@ -168,11 +164,6 @@ const BlockPatternSetup = ( {
168
164
  };
169
165
  const onPatternSelectCallback =
170
166
  onBlockPatternSelect || onBlockPatternSelectDefault;
171
- const onStartBlank = startBlankComponent
172
- ? () => {
173
- setShowBlank( true );
174
- }
175
- : undefined;
176
167
  return (
177
168
  <>
178
169
  { contentResizeListener }
@@ -202,7 +193,6 @@ const BlockPatternSetup = ( {
202
193
  patterns[ activeSlide ].blocks
203
194
  );
204
195
  } }
205
- onStartBlank={ onStartBlank }
206
196
  />
207
197
  </div>
208
198
  </>
@@ -15,11 +15,8 @@ import {
15
15
  */
16
16
  import { VIEWMODES } from './constants';
17
17
 
18
- const Actions = ( { onStartBlank, onBlockPatternSelect } ) => (
18
+ const Actions = ( { onBlockPatternSelect } ) => (
19
19
  <div className="block-editor-block-pattern-setup__actions">
20
- { onStartBlank && (
21
- <Button onClick={ onStartBlank }>{ __( 'Start blank' ) }</Button>
22
- ) }
23
20
  <Button variant="primary" onClick={ onBlockPatternSelect }>
24
21
  { __( 'Choose' ) }
25
22
  </Button>
@@ -56,7 +53,6 @@ const SetupToolbar = ( {
56
53
  activeSlide,
57
54
  totalSlides,
58
55
  onBlockPatternSelect,
59
- onStartBlank,
60
56
  } ) => {
61
57
  const isCarouselView = viewMode === VIEWMODES.carousel;
62
58
  const displayControls = (
@@ -87,10 +83,7 @@ const SetupToolbar = ( {
87
83
  ) }
88
84
  { displayControls }
89
85
  { isCarouselView && (
90
- <Actions
91
- onBlockPatternSelect={ onBlockPatternSelect }
92
- onStartBlank={ onStartBlank }
93
- />
86
+ <Actions onBlockPatternSelect={ onBlockPatternSelect } />
94
87
  ) }
95
88
  </div>
96
89
  );
@@ -28,11 +28,13 @@ function BlockPopoverInbetween( {
28
28
  __unstableContentRef,
29
29
  ...props
30
30
  } ) {
31
- const { orientation, rootClientId } = useSelect(
31
+ const { orientation, rootClientId, isVisible } = useSelect(
32
32
  ( select ) => {
33
- const { getBlockListSettings, getBlockRootClientId } = select(
34
- blockEditorStore
35
- );
33
+ const {
34
+ getBlockListSettings,
35
+ getBlockRootClientId,
36
+ isBlockVisible,
37
+ } = select( blockEditorStore );
36
38
 
37
39
  const _rootClientId = getBlockRootClientId( previousClientId );
38
40
  return {
@@ -40,6 +42,9 @@ function BlockPopoverInbetween( {
40
42
  getBlockListSettings( _rootClientId )?.orientation ||
41
43
  'vertical',
42
44
  rootClientId: _rootClientId,
45
+ isVisible:
46
+ isBlockVisible( previousClientId ) &&
47
+ isBlockVisible( nextClientId ),
43
48
  };
44
49
  },
45
50
  [ previousClientId ]
@@ -48,7 +53,7 @@ function BlockPopoverInbetween( {
48
53
  const nextElement = useBlockElement( nextClientId );
49
54
  const isVertical = orientation === 'vertical';
50
55
  const style = useMemo( () => {
51
- if ( ! previousElement && ! nextElement ) {
56
+ if ( ( ! previousElement && ! nextElement ) || ! isVisible ) {
52
57
  return {};
53
58
  }
54
59
 
@@ -87,7 +92,7 @@ function BlockPopoverInbetween( {
87
92
  }, [ previousElement, nextElement, isVertical ] );
88
93
 
89
94
  const getAnchorRect = useCallback( () => {
90
- if ( ! previousElement && ! nextElement ) {
95
+ if ( ( ! previousElement && ! nextElement ) || ! isVisible ) {
91
96
  return {};
92
97
  }
93
98
 
@@ -149,7 +154,7 @@ function BlockPopoverInbetween( {
149
154
 
150
155
  const popoverScrollRef = usePopoverScroll( __unstableContentRef );
151
156
 
152
- if ( ! previousElement || ! nextElement ) {
157
+ if ( ! previousElement || ! nextElement || ! isVisible ) {
153
158
  return null;
154
159
  }
155
160
 
@@ -62,6 +62,7 @@ export default function BlockPopover( {
62
62
  // Observe movement for block animations (especially horizontal).
63
63
  __unstableObserveElement={ selectedElement }
64
64
  __unstableForcePosition
65
+ __unstableShift
65
66
  { ...props }
66
67
  className={ classnames(
67
68
  'block-editor-block-popover',
@@ -12,6 +12,7 @@ import { useMemo } from '@wordpress/element';
12
12
  import BlockList from '../block-list';
13
13
  import Iframe from '../iframe';
14
14
  import EditorStyles from '../editor-styles';
15
+ import { __unstablePresetDuotoneFilter as PresetDuotoneFilter } from '../../components/duotone';
15
16
  import { store } from '../../store';
16
17
 
17
18
  // This is used to avoid rendering the block list if the sizes change.
@@ -24,19 +25,16 @@ function AutoBlockPreview( {
24
25
  __experimentalPadding,
25
26
  __experimentalMinHeight,
26
27
  } ) {
27
- const [
28
- containerResizeListener,
29
- { width: containerWidth },
30
- ] = useResizeObserver();
31
- const [
32
- contentResizeListener,
33
- { height: contentHeight },
34
- ] = useResizeObserver();
35
- const { styles, assets } = useSelect( ( select ) => {
28
+ const [ containerResizeListener, { width: containerWidth } ] =
29
+ useResizeObserver();
30
+ const [ contentResizeListener, { height: contentHeight } ] =
31
+ useResizeObserver();
32
+ const { styles, assets, duotone } = useSelect( ( select ) => {
36
33
  const settings = select( store ).getSettings();
37
34
  return {
38
35
  styles: settings.styles,
39
36
  assets: settings.__unstableResolvedAssets,
37
+ duotone: settings.__experimentalFeatures?.color?.duotone,
40
38
  };
41
39
  }, [] );
42
40
 
@@ -55,11 +53,14 @@ function AutoBlockPreview( {
55
53
  return styles;
56
54
  }, [ styles ] );
57
55
 
56
+ const svgFilters = useMemo( () => {
57
+ return [ ...( duotone?.default ?? [] ), ...( duotone?.theme ?? [] ) ];
58
+ }, [ duotone ] );
59
+
58
60
  // Initialize on render instead of module top level, to avoid circular dependency issues.
59
61
  MemoizedBlockList = MemoizedBlockList || pure( BlockList );
60
62
 
61
63
  const scale = containerWidth / viewportWidth;
62
-
63
64
  return (
64
65
  <div className="block-editor-block-preview__container">
65
66
  { containerResizeListener }
@@ -104,12 +105,21 @@ function AutoBlockPreview( {
104
105
  // See: https://github.com/WordPress/gutenberg/pull/38175.
105
106
  maxHeight: MAX_HEIGHT,
106
107
  minHeight:
107
- scale < 1 && __experimentalMinHeight
108
+ scale !== 0 && scale < 1 && __experimentalMinHeight
108
109
  ? __experimentalMinHeight / scale
109
110
  : __experimentalMinHeight,
110
111
  } }
111
112
  >
112
113
  { contentResizeListener }
114
+ {
115
+ /* Filters need to be rendered before children to avoid Safari rendering issues. */
116
+ svgFilters.map( ( preset ) => (
117
+ <PresetDuotoneFilter
118
+ preset={ preset }
119
+ key={ preset.slug }
120
+ />
121
+ ) )
122
+ }
113
123
  <MemoizedBlockList renderAppender={ false } />
114
124
  </Iframe>
115
125
  </Disabled>
@@ -17,9 +17,8 @@ import { store as blockEditorStore } from '../../store';
17
17
  * @return {import('react').RefCallback} Ref callback.
18
18
  */
19
19
  export function useBlockSelectionClearer() {
20
- const { hasSelectedBlock, hasMultiSelection } = useSelect(
21
- blockEditorStore
22
- );
20
+ const { hasSelectedBlock, hasMultiSelection } =
21
+ useSelect( blockEditorStore );
23
22
  const { clearSelectedBlock } = useDispatch( blockEditorStore );
24
23
 
25
24
  return useRefEffect(