@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
@@ -111,6 +111,8 @@ function RichTextWrapper(
111
111
  maxWidth,
112
112
  onBlur,
113
113
  setRef,
114
+ disableSuggestions,
115
+ disableAutocorrection,
114
116
  ...props
115
117
  },
116
118
  forwardedRef
@@ -635,6 +637,8 @@ function RichTextWrapper(
635
637
  maxWidth={ maxWidth }
636
638
  onBlur={ onBlur }
637
639
  setRef={ setRef }
640
+ disableSuggestions={ disableSuggestions }
641
+ disableAutocorrection={ disableAutocorrection }
638
642
  // Props to be set on the editable container are destructured on the
639
643
  // element itself for web (see below), but passed through rich text
640
644
  // for native.
@@ -69,15 +69,14 @@ export function useFormatTypes( {
69
69
  ( select ) =>
70
70
  formatTypes.reduce( ( accumulator, type ) => {
71
71
  if ( type.__experimentalGetPropsForEditableTreePreparation ) {
72
- accumulator[
73
- type.name
74
- ] = type.__experimentalGetPropsForEditableTreePreparation(
75
- select,
76
- {
77
- richTextIdentifier: identifier,
78
- blockClientId: clientId,
79
- }
80
- );
72
+ accumulator[ type.name ] =
73
+ type.__experimentalGetPropsForEditableTreePreparation(
74
+ select,
75
+ {
76
+ richTextIdentifier: identifier,
77
+ blockClientId: clientId,
78
+ }
79
+ );
81
80
  }
82
81
 
83
82
  return accumulator;
@@ -116,13 +115,14 @@ export function useFormatTypes( {
116
115
  let dispatchers = {};
117
116
 
118
117
  if ( type.__experimentalGetPropsForEditableTreeChangeHandler ) {
119
- dispatchers = type.__experimentalGetPropsForEditableTreeChangeHandler(
120
- dispatch,
121
- {
122
- richTextIdentifier: identifier,
123
- blockClientId: clientId,
124
- }
125
- );
118
+ dispatchers =
119
+ type.__experimentalGetPropsForEditableTreeChangeHandler(
120
+ dispatch,
121
+ {
122
+ richTextIdentifier: identifier,
123
+ blockClientId: clientId,
124
+ }
125
+ );
126
126
  }
127
127
 
128
128
  changeHandlers.push(
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { findKey } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -17,21 +12,17 @@ import { useDispatch } from '@wordpress/data';
17
12
  */
18
13
  import { store as blockEditorStore } from '../../store';
19
14
  import { preventEventDiscovery } from './prevent-event-discovery';
20
-
21
- // A robust way to retain selection position through various
22
- // transforms is to insert a special character at the position and
23
- // then recover it.
24
- const START_OF_SELECTED_AREA = '\u0086';
15
+ import {
16
+ retrieveSelectedAttribute,
17
+ START_OF_SELECTED_AREA,
18
+ } from '../../utils/selection';
25
19
 
26
20
  function findSelection( blocks ) {
27
21
  let i = blocks.length;
28
22
 
29
23
  while ( i-- ) {
30
- const attributeKey = findKey(
31
- blocks[ i ].attributes,
32
- ( v ) =>
33
- typeof v === 'string' &&
34
- v.indexOf( START_OF_SELECTED_AREA ) !== -1
24
+ const attributeKey = retrieveSelectedAttribute(
25
+ blocks[ i ].attributes
35
26
  );
36
27
 
37
28
  if ( attributeKey ) {
@@ -13,9 +13,8 @@ export function useMarkPersistent( { html, value } ) {
13
13
  const previousText = useRef();
14
14
  const hasActiveFormats =
15
15
  value.activeFormats && !! value.activeFormats.length;
16
- const { __unstableMarkLastChangeAsPersistent } = useDispatch(
17
- blockEditorStore
18
- );
16
+ const { __unstableMarkLastChangeAsPersistent } =
17
+ useDispatch( blockEditorStore );
19
18
 
20
19
  // Must be set synchronously to make sure it applies to the last change.
21
20
  useLayoutEffect( () => {
@@ -254,17 +254,29 @@ export function usePasteHandler( props ) {
254
254
  }
255
255
 
256
256
  /**
257
- * Normalizes a given string of HTML to remove the Windows specific "Fragment" comments
258
- * and any preceeding and trailing whitespace.
257
+ * Normalizes a given string of HTML to remove the Windows-specific "Fragment"
258
+ * comments and any preceeding and trailing content.
259
259
  *
260
260
  * @param {string} html the html to be normalized
261
261
  * @return {string} the normalized html
262
262
  */
263
263
  function removeWindowsFragments( html ) {
264
- const startReg = /.*<!--StartFragment-->/s;
265
- const endReg = /<!--EndFragment-->.*/s;
264
+ const startStr = '<!--StartFragment-->';
265
+ const startIdx = html.indexOf( startStr );
266
+ if ( startIdx > -1 ) {
267
+ html = html.substring( startIdx + startStr.length );
268
+ } else {
269
+ // No point looking for EndFragment
270
+ return html;
271
+ }
272
+
273
+ const endStr = '<!--EndFragment-->';
274
+ const endIdx = html.indexOf( endStr );
275
+ if ( endIdx > -1 ) {
276
+ html = html.substring( 0, endIdx );
277
+ }
266
278
 
267
- return html.replace( startReg, '' ).replace( endReg, '' );
279
+ return html;
268
280
  }
269
281
 
270
282
  /**
@@ -33,8 +33,7 @@ const SkipToSelectedBlock = ( { selectedBlockClientId } ) => {
33
33
  */
34
34
  export default withSelect( ( select ) => {
35
35
  return {
36
- selectedBlockClientId: select(
37
- blockEditorStore
38
- ).getBlockSelectionStart(),
36
+ selectedBlockClientId:
37
+ select( blockEditorStore ).getBlockSelectionStart(),
39
38
  };
40
39
  } )( SkipToSelectedBlock );
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { noop } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -18,6 +13,8 @@ import { compose } from '@wordpress/compose';
18
13
  import UngroupIcon from './icon';
19
14
  import { store as blockEditorStore } from '../../store';
20
15
 
16
+ const noop = () => {};
17
+
21
18
  export function UngroupButton( { onConvertFromGroup, isUngroupable = false } ) {
22
19
  if ( ! isUngroupable ) {
23
20
  return null;
@@ -35,9 +32,8 @@ export function UngroupButton( { onConvertFromGroup, isUngroupable = false } ) {
35
32
 
36
33
  export default compose( [
37
34
  withSelect( ( select ) => {
38
- const { getSelectedBlockClientId, getBlock } = select(
39
- blockEditorStore
40
- );
35
+ const { getSelectedBlockClientId, getBlock } =
36
+ select( blockEditorStore );
41
37
 
42
38
  const { getGroupingBlockName } = select( blocksStore );
43
39
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { debounce, isFunction } from 'lodash';
4
+ import { debounce } from 'lodash';
5
5
  import classnames from 'classnames';
6
6
  import scrollIntoView from 'dom-scroll-into-view';
7
7
 
@@ -27,6 +27,16 @@ import { isURL } from '@wordpress/url';
27
27
  */
28
28
  import { store as blockEditorStore } from '../../store';
29
29
 
30
+ /**
31
+ * Whether the argument is a function.
32
+ *
33
+ * @param {*} maybeFunc The argument to check.
34
+ * @return {boolean} True if the argument is a function, false otherwise.
35
+ */
36
+ function isFunction( maybeFunc ) {
37
+ return typeof maybeFunc === 'function';
38
+ }
39
+
30
40
  class URLInput extends Component {
31
41
  constructor( props ) {
32
42
  super( props );
@@ -60,10 +70,8 @@ class URLInput extends Component {
60
70
 
61
71
  componentDidUpdate( prevProps ) {
62
72
  const { showSuggestions, selectedSuggestion } = this.state;
63
- const {
64
- value,
65
- __experimentalShowInitialSuggestions = false,
66
- } = this.props;
73
+ const { value, __experimentalShowInitialSuggestions = false } =
74
+ this.props;
67
75
 
68
76
  // Only have to worry about scrolling selected suggestion into view
69
77
  // when already expanded.
@@ -122,10 +130,8 @@ class URLInput extends Component {
122
130
 
123
131
  shouldShowInitialSuggestions() {
124
132
  const { suggestions } = this.state;
125
- const {
126
- __experimentalShowInitialSuggestions = false,
127
- value,
128
- } = this.props;
133
+ const { __experimentalShowInitialSuggestions = false, value } =
134
+ this.props;
129
135
  return (
130
136
  ! this.isUpdatingSuggestions &&
131
137
  __experimentalShowInitialSuggestions &&
@@ -257,12 +263,8 @@ class URLInput extends Component {
257
263
  }
258
264
 
259
265
  onKeyDown( event ) {
260
- const {
261
- showSuggestions,
262
- selectedSuggestion,
263
- suggestions,
264
- loading,
265
- } = this.state;
266
+ const { showSuggestions, selectedSuggestion, suggestions, loading } =
267
+ this.state;
266
268
 
267
269
  // If the suggestions are not shown or loading, we shouldn't handle the arrow keys
268
270
  // We shouldn't preventDefault to allow block arrow keys navigation.
@@ -315,9 +317,8 @@ class URLInput extends Component {
315
317
  return;
316
318
  }
317
319
 
318
- const suggestion = this.state.suggestions[
319
- this.state.selectedSuggestion
320
- ];
320
+ const suggestion =
321
+ this.state.suggestions[ this.state.selectedSuggestion ];
321
322
 
322
323
  switch ( event.keyCode ) {
323
324
  case UP: {
@@ -590,8 +591,8 @@ export default compose(
590
591
  }
591
592
  const { getSettings } = select( blockEditorStore );
592
593
  return {
593
- __experimentalFetchLinkSuggestions: getSettings()
594
- .__experimentalFetchLinkSuggestions,
594
+ __experimentalFetchLinkSuggestions:
595
+ getSettings().__experimentalFetchLinkSuggestions,
595
596
  };
596
597
  } )
597
598
  )( URLInput );
@@ -41,12 +41,10 @@ export default function useBlockDisplayInformation( clientId ) {
41
41
  return useSelect(
42
42
  ( select ) => {
43
43
  if ( ! clientId ) return null;
44
- const { getBlockName, getBlockAttributes } = select(
45
- blockEditorStore
46
- );
47
- const { getBlockType, getActiveBlockVariation } = select(
48
- blocksStore
49
- );
44
+ const { getBlockName, getBlockAttributes } =
45
+ select( blockEditorStore );
46
+ const { getBlockType, getActiveBlockVariation } =
47
+ select( blocksStore );
50
48
  const blockName = getBlockName( clientId );
51
49
  const blockType = getBlockType( blockName );
52
50
  if ( ! blockType ) return null;
@@ -101,9 +101,8 @@ export default function useBlockDropZone( {
101
101
  );
102
102
 
103
103
  const { getBlockListSettings } = useSelect( blockEditorStore );
104
- const { showInsertionPoint, hideInsertionPoint } = useDispatch(
105
- blockEditorStore
106
- );
104
+ const { showInsertionPoint, hideInsertionPoint } =
105
+ useDispatch( blockEditorStore );
107
106
 
108
107
  const onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );
109
108
  const throttled = useThrottle(
@@ -113,10 +113,8 @@ export default function useBlockDropZone( {
113
113
  const targetBlockIndex = useSharedValue( null );
114
114
 
115
115
  const { getBlockListSettings, getSettings } = useSelect( blockEditorStore );
116
- const {
117
- blocksLayouts,
118
- getBlockLayoutsOrderedByYCoord,
119
- } = useBlockListContext();
116
+ const { blocksLayouts, getBlockLayoutsOrderedByYCoord } =
117
+ useBlockListContext();
120
118
 
121
119
  const getSortedBlocksLayouts = useCallback( () => {
122
120
  return getBlockLayoutsOrderedByYCoord( blocksLayouts.current );
@@ -39,30 +39,29 @@ const createMockClassList = ( classes ) => {
39
39
  };
40
40
  };
41
41
 
42
- const mapElements = ( orientation ) => (
43
- { top, right, bottom, left },
44
- index
45
- ) => {
46
- return {
47
- dataset: { block: index + 1 },
48
- getBoundingClientRect() {
49
- return orientation === 'vertical'
50
- ? {
51
- top,
52
- right,
53
- bottom,
54
- left,
55
- }
56
- : {
57
- top: left,
58
- bottom: right,
59
- left: top,
60
- right: bottom,
61
- };
62
- },
63
- classList: createMockClassList( 'wp-block' ),
42
+ const mapElements =
43
+ ( orientation ) =>
44
+ ( { top, right, bottom, left }, index ) => {
45
+ return {
46
+ dataset: { block: index + 1 },
47
+ getBoundingClientRect() {
48
+ return orientation === 'vertical'
49
+ ? {
50
+ top,
51
+ right,
52
+ bottom,
53
+ left,
54
+ }
55
+ : {
56
+ top: left,
57
+ bottom: right,
58
+ left: top,
59
+ right: bottom,
60
+ };
61
+ },
62
+ classList: createMockClassList( 'wp-block' ),
63
+ };
64
64
  };
65
- };
66
65
 
67
66
  const verticalElements = elementData.map( mapElements( 'vertical' ) );
68
67
  // Flip the elementData to make a horizontal block list.
@@ -14,9 +14,8 @@ export default function useDisplayBlockControls() {
14
14
  const { isSelected, clientId, name } = useBlockEditContext();
15
15
  return useSelect(
16
16
  ( select ) => {
17
- const { getBlockName, getBlockRootClientId } = select(
18
- blockEditorStore
19
- );
17
+ const { getBlockName, getBlockRootClientId } =
18
+ select( blockEditorStore );
20
19
 
21
20
  const parentId = getBlockRootClientId( clientId );
22
21
  const parentBlockName = getBlockName( parentId );
@@ -16,9 +16,8 @@ import {
16
16
  // of calling itself depending on its `uniqueId` attribute.
17
17
  function Edit( { attributes: { uniqueId } } ) {
18
18
  const { name } = useBlockEditContext();
19
- const [ hasAlreadyRendered, RecursionProvider ] = useNoRecursiveRenders(
20
- uniqueId
21
- );
19
+ const [ hasAlreadyRendered, RecursionProvider ] =
20
+ useNoRecursiveRenders( uniqueId );
22
21
 
23
22
  if ( hasAlreadyRendered ) {
24
23
  return <div className={ `wp-block__${ name }--halted` }>Halt</div>;
@@ -217,11 +217,8 @@ export default function useOnBlockDrop( targetRootClientId, targetBlockIndex ) {
217
217
  ( select ) => select( blockEditorStore ).getSettings().mediaUpload,
218
218
  []
219
219
  );
220
- const {
221
- canInsertBlockType,
222
- getBlockIndex,
223
- getClientIdsOfDescendants,
224
- } = useSelect( blockEditorStore );
220
+ const { canInsertBlockType, getBlockIndex, getClientIdsOfDescendants } =
221
+ useSelect( blockEditorStore );
225
222
  const {
226
223
  insertBlocks,
227
224
  moveBlocksToPosition,
@@ -100,14 +100,10 @@ export function onBlockDrop(
100
100
  * @return {Function} The event handler for a block drop event.
101
101
  */
102
102
  export default function useOnBlockDrop() {
103
- const { getBlockIndex, getClientIdsOfDescendants } = useSelect(
104
- blockEditorStore
105
- );
106
- const {
107
- insertBlocks,
108
- moveBlocksToPosition,
109
- clearSelectedBlock,
110
- } = useDispatch( blockEditorStore );
103
+ const { getBlockIndex, getClientIdsOfDescendants } =
104
+ useSelect( blockEditorStore );
105
+ const { insertBlocks, moveBlocksToPosition, clearSelectedBlock } =
106
+ useDispatch( blockEditorStore );
111
107
 
112
108
  return onBlockDrop(
113
109
  getBlockIndex,
@@ -128,9 +128,10 @@ export default function useSetting( path ) {
128
128
  clientId, // The current block is added last, so it overwrites any ancestor.
129
129
  ];
130
130
  candidates.forEach( ( candidateClientId ) => {
131
- const candidateBlockName = select(
132
- blockEditorStore
133
- ).getBlockName( candidateClientId );
131
+ const candidateBlockName =
132
+ select( blockEditorStore ).getBlockName(
133
+ candidateClientId
134
+ );
134
135
  if (
135
136
  hasBlockSupport(
136
137
  candidateBlockName,
@@ -138,9 +139,10 @@ export default function useSetting( path ) {
138
139
  false
139
140
  )
140
141
  ) {
141
- const candidateAtts = select(
142
- blockEditorStore
143
- ).getBlockAttributes( candidateClientId );
142
+ const candidateAtts =
143
+ select( blockEditorStore ).getBlockAttributes(
144
+ candidateClientId
145
+ );
144
146
  const candidateResult =
145
147
  get(
146
148
  candidateAtts,
@@ -12,7 +12,13 @@ describe( 'isNavigationCandidate', () => {
12
12
  let elements;
13
13
  beforeAll( () => {
14
14
  elements = {};
15
- elements.input = document.createElement( 'input' );
15
+
16
+ elements.inputText = document.createElement( 'input' );
17
+ elements.inputText.setAttribute( 'type', 'text' );
18
+
19
+ elements.inputCheckbox = document.createElement( 'input' );
20
+ elements.inputCheckbox.setAttribute( 'type', 'checkbox' );
21
+
16
22
  elements.contentEditable = document.createElement( 'p' );
17
23
  elements.contentEditable.contentEditable = true;
18
24
  } );
@@ -20,7 +26,7 @@ describe( 'isNavigationCandidate', () => {
20
26
  it( 'should return true if vertically navigating input without modifier', () => {
21
27
  [ UP, DOWN ].forEach( ( keyCode ) => {
22
28
  const result = isNavigationCandidate(
23
- elements.input,
29
+ elements.inputText,
24
30
  keyCode,
25
31
  false
26
32
  );
@@ -32,7 +38,7 @@ describe( 'isNavigationCandidate', () => {
32
38
  it( 'should return false if vertically navigating input with modifier', () => {
33
39
  [ UP, DOWN ].forEach( ( keyCode ) => {
34
40
  const result = isNavigationCandidate(
35
- elements.input,
41
+ elements.inputText,
36
42
  keyCode,
37
43
  true
38
44
  );
@@ -44,7 +50,7 @@ describe( 'isNavigationCandidate', () => {
44
50
  it( 'should return false if horizontally navigating input', () => {
45
51
  [ LEFT, RIGHT ].forEach( ( keyCode ) => {
46
52
  const result = isNavigationCandidate(
47
- elements.input,
53
+ elements.inputText,
48
54
  keyCode,
49
55
  false
50
56
  );
@@ -53,6 +59,18 @@ describe( 'isNavigationCandidate', () => {
53
59
  } );
54
60
  } );
55
61
 
62
+ it( 'should return true if horizontally navigating simple inputs like checkboxes', () => {
63
+ [ LEFT, RIGHT ].forEach( ( keyCode ) => {
64
+ const result = isNavigationCandidate(
65
+ elements.inputCheckbox,
66
+ keyCode,
67
+ false
68
+ );
69
+
70
+ expect( result ).toBe( true );
71
+ } );
72
+ } );
73
+
56
74
  it( 'should return true if horizontally navigating non-input', () => {
57
75
  [ LEFT, RIGHT ].forEach( ( keyCode ) => {
58
76
  const result = isNavigationCandidate(
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { find, reverse } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -43,9 +38,25 @@ export function isNavigationCandidate( element, keyCode, hasModifier ) {
43
38
  return true;
44
39
  }
45
40
 
46
- // Native inputs should not navigate horizontally.
47
41
  const { tagName } = element;
48
- return tagName !== 'INPUT' && tagName !== 'TEXTAREA';
42
+
43
+ // Native inputs should not navigate horizontally, unless they are simple types that don't need left/right arrow keys.
44
+ if ( tagName === 'INPUT' ) {
45
+ const simpleInputTypes = [
46
+ 'button',
47
+ 'checkbox',
48
+ 'color',
49
+ 'file',
50
+ 'image',
51
+ 'radio',
52
+ 'reset',
53
+ 'submit',
54
+ ];
55
+ return simpleInputTypes.includes( element.getAttribute( 'type' ) );
56
+ }
57
+
58
+ // Native textareas should not navigate horizontally.
59
+ return tagName !== 'TEXTAREA';
49
60
  }
50
61
 
51
62
  /**
@@ -73,7 +84,7 @@ export function getClosestTabbable(
73
84
  let focusableNodes = focus.focusable.find( containerElement );
74
85
 
75
86
  if ( isReverse ) {
76
- focusableNodes = reverse( focusableNodes );
87
+ focusableNodes.reverse();
77
88
  }
78
89
 
79
90
  // Consider as candidates those focusables after the current target. It's
@@ -114,7 +125,7 @@ export function getClosestTabbable(
114
125
  return true;
115
126
  }
116
127
 
117
- return find( focusableNodes, isTabCandidate );
128
+ return focusableNodes.find( isTabCandidate );
118
129
  }
119
130
 
120
131
  export default function useArrowNav() {
@@ -215,7 +226,8 @@ export default function useArrowNav() {
215
226
  const selectedBlockClientId = getSelectedBlockClientId();
216
227
 
217
228
  if ( isShift ) {
218
- const selectionEndClientId = getMultiSelectedBlocksEndClientId();
229
+ const selectionEndClientId =
230
+ getMultiSelectedBlocksEndClientId();
219
231
  const selectionBeforeEndClientId = getPreviousBlockClientId(
220
232
  selectionEndClientId || selectedBlockClientId
221
233
  );
@@ -12,11 +12,8 @@ import { getBlockClientId } from '../../utils/dom';
12
12
 
13
13
  export default function useClickSelection() {
14
14
  const { selectBlock } = useDispatch( blockEditorStore );
15
- const {
16
- isSelectionEnabled,
17
- getBlockSelectionStart,
18
- hasMultiSelection,
19
- } = useSelect( blockEditorStore );
15
+ const { isSelectionEnabled, getBlockSelectionStart, hasMultiSelection } =
16
+ useSelect( blockEditorStore );
20
17
  return useRefEffect(
21
18
  ( node ) => {
22
19
  function onMouseDown( event ) {
@@ -25,12 +25,10 @@ function setContentEditableWrapper( node, value ) {
25
25
  * Sets a multi-selection based on the native selection across blocks.
26
26
  */
27
27
  export default function useDragSelection() {
28
- const { startMultiSelect, stopMultiSelect } = useDispatch(
29
- blockEditorStore
30
- );
31
- const { isSelectionEnabled, hasMultiSelection } = useSelect(
32
- blockEditorStore
33
- );
28
+ const { startMultiSelect, stopMultiSelect } =
29
+ useDispatch( blockEditorStore );
30
+ const { isSelectionEnabled, hasMultiSelection } =
31
+ useSelect( blockEditorStore );
34
32
  return useRefEffect(
35
33
  ( node ) => {
36
34
  const { ownerDocument } = node;
@@ -61,9 +59,8 @@ export default function useDragSelection() {
61
59
  const selection = defaultView.getSelection();
62
60
 
63
61
  if ( selection.rangeCount ) {
64
- const {
65
- commonAncestorContainer,
66
- } = selection.getRangeAt( 0 );
62
+ const { commonAncestorContainer } =
63
+ selection.getRangeAt( 0 );
67
64
 
68
65
  if (
69
66
  anchorElement.contains( commonAncestorContainer )
@@ -30,6 +30,16 @@ export default function useInput() {
30
30
  } = useDispatch( blockEditorStore );
31
31
 
32
32
  return useRefEffect( ( node ) => {
33
+ function onBeforeInput( event ) {
34
+ if ( ! hasMultiSelection() ) {
35
+ return;
36
+ }
37
+ // Prevent the browser to format something when we have multiselection.
38
+ if ( event.inputType?.startsWith( 'format' ) ) {
39
+ event.preventDefault();
40
+ }
41
+ }
42
+
33
43
  function onKeyDown( event ) {
34
44
  if ( event.defaultPrevented ) {
35
45
  return;
@@ -102,9 +112,11 @@ export default function useInput() {
102
112
  }
103
113
  }
104
114
 
115
+ node.addEventListener( 'beforeinput', onBeforeInput );
105
116
  node.addEventListener( 'keydown', onKeyDown );
106
117
  node.addEventListener( 'compositionstart', onCompositionStart );
107
118
  return () => {
119
+ node.removeEventListener( 'beforeinput', onBeforeInput );
108
120
  node.removeEventListener( 'keydown', onKeyDown );
109
121
  node.removeEventListener( 'compositionstart', onCompositionStart );
110
122
  };