@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
@@ -0,0 +1,493 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ fireEvent,
6
+ getEditorHtml,
7
+ within,
8
+ waitForStoreResolvers,
9
+ withReanimatedTimer,
10
+ } from 'test/helpers';
11
+ import { getByGestureTestId } from 'react-native-gesture-handler/jest-utils';
12
+ import TextInputState from 'react-native/Libraries/Components/TextInput/TextInputState';
13
+
14
+ /**
15
+ * WordPress dependencies
16
+ */
17
+ import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
18
+ import { registerCoreBlocks } from '@wordpress/block-library';
19
+ import '@wordpress/jest-console';
20
+
21
+ /**
22
+ * Internal dependencies
23
+ */
24
+ import {
25
+ initializeWithBlocksLayouts,
26
+ fireLongPress,
27
+ firePanGesture,
28
+ TouchEventType,
29
+ getDraggableChip,
30
+ } from './helpers';
31
+
32
+ // Mock throttle to allow updating the dragging position on every "onDragOver" event.
33
+ jest.mock( 'lodash', () => ( {
34
+ ...jest.requireActual( 'lodash' ),
35
+ throttle: ( fn ) => {
36
+ fn.cancel = jest.fn();
37
+ return fn;
38
+ },
39
+ } ) );
40
+
41
+ beforeAll( () => {
42
+ // Register all core blocks
43
+ registerCoreBlocks();
44
+ } );
45
+
46
+ afterAll( () => {
47
+ // Clean up registered blocks
48
+ getBlockTypes().forEach( ( block ) => {
49
+ unregisterBlockType( block.name );
50
+ } );
51
+ } );
52
+
53
+ const TOUCH_EVENT_ID = 1;
54
+ const BLOCKS = [
55
+ {
56
+ name: 'Paragraph',
57
+ html: `
58
+ <!-- wp:paragraph -->
59
+ <p>This is a paragraph.</p>
60
+ <!-- /wp:paragraph -->`,
61
+ layout: { x: 0, y: 0, width: 100, height: 100 },
62
+ },
63
+ {
64
+ name: 'Image',
65
+ html: `
66
+ <!-- wp:image {"sizeSlug":"large"} -->
67
+ <figure class="wp-block-image size-large"><img src="https://cldup.com/cXyG__fTLN.jpg" alt=""/></figure>
68
+ <!-- /wp:image -->`,
69
+ layout: { x: 0, y: 100, width: 100, height: 100 },
70
+ },
71
+ {
72
+ name: 'Spacer',
73
+ html: `
74
+ <!-- wp:spacer -->
75
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
76
+ <!-- /wp:spacer -->`,
77
+ layout: { x: 0, y: 200, width: 100, height: 100 },
78
+ },
79
+ {
80
+ name: 'Gallery',
81
+ html: `
82
+ <!-- wp:gallery {"linkTo":"none"} -->
83
+ <figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
84
+ <figure class="wp-block-image size-large"><img src="https://cldup.com/cXyG__fTLN.jpg" alt=""/></figure>
85
+ <!-- /wp:image -->
86
+
87
+ <!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
88
+ <figure class="wp-block-image size-large"><img src="https://cldup.com/cXyG__fTLN.jpg" alt=""/></figure>
89
+ <!-- /wp:image --></figure>
90
+ <!-- /wp:gallery -->`,
91
+ layout: { x: 0, y: 300, width: 100, height: 100 },
92
+ nestedBlocks: [
93
+ { name: 'Image', layout: { x: 0, y: 300, width: 50, height: 50 } },
94
+ { name: 'Image', layout: { x: 50, y: 300, width: 50, height: 50 } },
95
+ ],
96
+ },
97
+ ];
98
+
99
+ describe( 'BlockDraggable', () => {
100
+ describe( 'drag mode', () => {
101
+ describe( 'Text block', () => {
102
+ it( 'enables drag mode when unselected', async () =>
103
+ withReanimatedTimer( async () => {
104
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
105
+ const { getByA11yLabel } = screen;
106
+
107
+ // Start dragging from block's content
108
+ fireLongPress(
109
+ getByA11yLabel( /Paragraph Block\. Row 1/ ),
110
+ 'draggable-trigger-content'
111
+ );
112
+ expect( getDraggableChip( screen ) ).toBeVisible();
113
+
114
+ // "firePanGesture" finishes the dragging gesture
115
+ firePanGesture(
116
+ getByGestureTestId( 'block-draggable-wrapper' )
117
+ );
118
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
119
+ } ) );
120
+
121
+ it( 'enables drag mode when selected', async () =>
122
+ withReanimatedTimer( async () => {
123
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
124
+ const { getByA11yLabel } = screen;
125
+ const blockDraggableWrapper = getByGestureTestId(
126
+ 'block-draggable-wrapper'
127
+ );
128
+
129
+ const paragraphBlock = getByA11yLabel(
130
+ /Paragraph Block\. Row 1/
131
+ );
132
+ fireEvent.press( paragraphBlock );
133
+
134
+ // Start dragging from block's content
135
+ fireLongPress(
136
+ paragraphBlock,
137
+ 'draggable-trigger-content'
138
+ );
139
+ expect( getDraggableChip( screen ) ).toBeVisible();
140
+ // "firePanGesture" finishes the dragging gesture
141
+ firePanGesture( blockDraggableWrapper );
142
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
143
+
144
+ // Start dragging from block's mobile toolbar
145
+ fireLongPress(
146
+ paragraphBlock,
147
+ 'draggable-trigger-mobile-toolbar'
148
+ );
149
+ expect( getDraggableChip( screen ) ).toBeVisible();
150
+ // "firePanGesture" finishes the dragging gesture
151
+ firePanGesture( blockDraggableWrapper );
152
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
153
+ } ) );
154
+
155
+ it( 'does not enable drag mode when selected and editing text', async () =>
156
+ withReanimatedTimer( async () => {
157
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
158
+ const { getByA11yLabel } = screen;
159
+
160
+ const paragraphBlock = getByA11yLabel(
161
+ /Paragraph Block\. Row 1/
162
+ );
163
+
164
+ // Select Paragraph block and start editing text
165
+ fireEvent.press( paragraphBlock );
166
+ fireEvent(
167
+ within( paragraphBlock ).getByPlaceholderText(
168
+ 'Start writing…'
169
+ ),
170
+ 'focus'
171
+ );
172
+
173
+ // Start dragging from block's content
174
+ fireLongPress(
175
+ paragraphBlock,
176
+ 'draggable-trigger-content',
177
+ { failed: true }
178
+ );
179
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
180
+ // Check that no text input has been unfocused to confirm
181
+ // that editing text is still enabled.
182
+ expect(
183
+ TextInputState.blurTextInput
184
+ ).not.toHaveBeenCalled();
185
+ } ) );
186
+
187
+ it( 'finishes editing text and enables drag mode when long-pressing over a different block', async () =>
188
+ withReanimatedTimer( async () => {
189
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
190
+ const { getByA11yLabel } = screen;
191
+
192
+ const paragraphBlock = getByA11yLabel(
193
+ /Paragraph Block\. Row 1/
194
+ );
195
+ const spacerBlock =
196
+ getByA11yLabel( /Spacer Block\. Row 3/ );
197
+
198
+ // Select Paragraph block and start editing text
199
+ fireEvent.press( paragraphBlock );
200
+ fireEvent(
201
+ within( paragraphBlock ).getByPlaceholderText(
202
+ 'Start writing…'
203
+ ),
204
+ 'focus'
205
+ );
206
+
207
+ // Start dragging from a different block's content
208
+ fireLongPress( spacerBlock, 'draggable-trigger-content' );
209
+ expect( getDraggableChip( screen ) ).toBeVisible();
210
+ // Check that any text input has been unfocused to confirm
211
+ // that editing text finished.
212
+ expect( TextInputState.blurTextInput ).toHaveBeenCalled();
213
+ } ) );
214
+ } );
215
+
216
+ describe( 'Media block', () => {
217
+ it( 'enables drag mode when unselected', async () =>
218
+ withReanimatedTimer( async () => {
219
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
220
+ const { getAllByA11yLabel } = screen;
221
+
222
+ // We select the first Image block as the Gallery block
223
+ // also contains Image blocks.
224
+ const imageBlock =
225
+ getAllByA11yLabel( /Image Block\. Row 2/ )[ 0 ];
226
+ // Start dragging from block's content
227
+ fireLongPress( imageBlock, 'draggable-trigger-content' );
228
+ expect( getDraggableChip( screen ) ).toBeVisible();
229
+
230
+ // "firePanGesture" finishes the dragging gesture
231
+ firePanGesture(
232
+ getByGestureTestId( 'block-draggable-wrapper' )
233
+ );
234
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
235
+ } ) );
236
+
237
+ it( 'enables drag mode when selected', async () =>
238
+ withReanimatedTimer( async () => {
239
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
240
+ const { getAllByA11yLabel } = screen;
241
+ const blockDraggableWrapper = getByGestureTestId(
242
+ 'block-draggable-wrapper'
243
+ );
244
+
245
+ // We select the first Image block as the Gallery block
246
+ // also contains Image blocks.
247
+ const imageBlock =
248
+ getAllByA11yLabel( /Image Block\. Row 2/ )[ 0 ];
249
+ fireEvent.press( imageBlock );
250
+
251
+ // Start dragging from block's content
252
+ fireLongPress( imageBlock, 'draggable-trigger-content' );
253
+ expect( getDraggableChip( screen ) ).toBeVisible();
254
+ // "firePanGesture" finishes the dragging gesture
255
+ firePanGesture( blockDraggableWrapper );
256
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
257
+
258
+ // Start dragging from block's mobile toolbar
259
+ fireLongPress(
260
+ imageBlock,
261
+ 'draggable-trigger-mobile-toolbar'
262
+ );
263
+ expect( getDraggableChip( screen ) ).toBeVisible();
264
+ // "firePanGesture" finishes the dragging gesture
265
+ firePanGesture( blockDraggableWrapper );
266
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
267
+ } ) );
268
+ } );
269
+
270
+ describe( 'Nested block', () => {
271
+ it( 'enables drag mode when unselected', async () =>
272
+ withReanimatedTimer( async () => {
273
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
274
+ const { getByA11yLabel } = screen;
275
+
276
+ // Start dragging from block's content, specifically the first
277
+ // trigger index, which corresponds to the Gallery block content.
278
+ fireLongPress(
279
+ getByA11yLabel( /Gallery Block\. Row 4/ ),
280
+ 'draggable-trigger-content',
281
+ { triggerIndex: 0 }
282
+ );
283
+ expect( getDraggableChip( screen ) ).toBeVisible();
284
+
285
+ // "firePanGesture" finishes the dragging gesture
286
+ firePanGesture(
287
+ getByGestureTestId( 'block-draggable-wrapper' )
288
+ );
289
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
290
+ } ) );
291
+
292
+ it( 'enables drag mode when selected', async () =>
293
+ withReanimatedTimer( async () => {
294
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
295
+ const { getByA11yLabel } = screen;
296
+ const blockDraggableWrapper = getByGestureTestId(
297
+ 'block-draggable-wrapper'
298
+ );
299
+
300
+ const galleryBlock = getByA11yLabel(
301
+ /Gallery Block\. Row 4/
302
+ );
303
+ await waitForStoreResolvers( () =>
304
+ fireEvent.press( galleryBlock )
305
+ );
306
+
307
+ // Start dragging from block's content, specifically the first
308
+ // trigger index, which corresponds to the Gallery block content.
309
+ fireLongPress( galleryBlock, 'draggable-trigger-content', {
310
+ triggerIndex: 0,
311
+ } );
312
+ expect( getDraggableChip( screen ) ).toBeVisible();
313
+ // "firePanGesture" finishes the dragging gesture
314
+ firePanGesture( blockDraggableWrapper );
315
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
316
+
317
+ // Start dragging from block's mobile toolbar
318
+ fireLongPress(
319
+ galleryBlock,
320
+ 'draggable-trigger-mobile-toolbar'
321
+ );
322
+ expect( getDraggableChip( screen ) ).toBeVisible();
323
+ // "firePanGesture" finishes the dragging gesture
324
+ firePanGesture( blockDraggableWrapper );
325
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
326
+ } ) );
327
+
328
+ it( 'enables drag mode when nested block is selected', async () =>
329
+ withReanimatedTimer( async () => {
330
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
331
+ const { getByA11yLabel } = screen;
332
+ const blockDraggableWrapper = getByGestureTestId(
333
+ 'block-draggable-wrapper'
334
+ );
335
+
336
+ const galleryBlock = getByA11yLabel(
337
+ /Gallery Block\. Row 4/
338
+ );
339
+ const galleryItem =
340
+ within( galleryBlock ).getByA11yLabel(
341
+ /Image Block\. Row 2/
342
+ );
343
+ fireEvent.press( galleryBlock );
344
+ fireEvent.press( galleryItem );
345
+
346
+ // Start dragging from nested block's content
347
+ fireLongPress( galleryItem, 'draggable-trigger-content' );
348
+ expect( getDraggableChip( screen ) ).toBeVisible();
349
+ // "firePanGesture" finishes the dragging gesture
350
+ firePanGesture( blockDraggableWrapper );
351
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
352
+
353
+ // After dropping the block, the gallery item gets automatically selected.
354
+ // Hence, we have to select the gallery item again.
355
+ fireEvent.press( galleryItem );
356
+
357
+ // Start dragging from nested block's mobile toolbar
358
+ fireLongPress(
359
+ galleryItem,
360
+ 'draggable-trigger-mobile-toolbar'
361
+ );
362
+ expect( getDraggableChip( screen ) ).toBeVisible();
363
+ // "firePanGesture" finishes the dragging gesture
364
+ firePanGesture( blockDraggableWrapper );
365
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
366
+ } ) );
367
+ } );
368
+
369
+ describe( 'Other block', () => {
370
+ it( 'enables drag mode when unselected', async () =>
371
+ withReanimatedTimer( async () => {
372
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
373
+ const { getByA11yLabel } = screen;
374
+
375
+ // Start dragging from block's content
376
+ fireLongPress(
377
+ getByA11yLabel( /Spacer Block\. Row 3/ ),
378
+ 'draggable-trigger-content'
379
+ );
380
+ expect( getDraggableChip( screen ) ).toBeVisible();
381
+
382
+ // "firePanGesture" finishes the dragging gesture
383
+ firePanGesture(
384
+ getByGestureTestId( 'block-draggable-wrapper' )
385
+ );
386
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
387
+ } ) );
388
+
389
+ it( 'enables drag mode when selected', async () =>
390
+ withReanimatedTimer( async () => {
391
+ const screen = await initializeWithBlocksLayouts( BLOCKS );
392
+ const { getByA11yLabel } = screen;
393
+ const blockDraggableWrapper = getByGestureTestId(
394
+ 'block-draggable-wrapper'
395
+ );
396
+
397
+ const spacerBlock =
398
+ getByA11yLabel( /Spacer Block\. Row 3/ );
399
+ await waitForStoreResolvers( () =>
400
+ fireEvent.press( spacerBlock )
401
+ );
402
+
403
+ // Start dragging from block's content
404
+ fireLongPress( spacerBlock, 'draggable-trigger-content' );
405
+ expect( getDraggableChip( screen ) ).toBeVisible();
406
+ // "firePanGesture" finishes the dragging gesture
407
+ firePanGesture( blockDraggableWrapper );
408
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
409
+
410
+ // Start dragging from block's mobile toolbar
411
+ fireLongPress(
412
+ spacerBlock,
413
+ 'draggable-trigger-mobile-toolbar'
414
+ );
415
+ expect( getDraggableChip( screen ) ).toBeVisible();
416
+ // "firePanGesture" finishes the dragging gesture
417
+ firePanGesture( blockDraggableWrapper );
418
+ expect( getDraggableChip( screen ) ).not.toBeDefined();
419
+ } ) );
420
+ } );
421
+ } );
422
+
423
+ it( 'moves blocks', async () =>
424
+ withReanimatedTimer( async () => {
425
+ const { getByA11yLabel } = await initializeWithBlocksLayouts(
426
+ BLOCKS
427
+ );
428
+ const blockDraggableWrapper = getByGestureTestId(
429
+ 'block-draggable-wrapper'
430
+ );
431
+
432
+ expect( getEditorHtml() ).toMatchSnapshot( 'Initial order' );
433
+
434
+ // Move Paragraph block from first to second position
435
+ fireLongPress(
436
+ getByA11yLabel( /Paragraph Block\. Row 1/ ),
437
+ 'draggable-trigger-content'
438
+ );
439
+ firePanGesture( blockDraggableWrapper, [
440
+ {
441
+ id: TOUCH_EVENT_ID,
442
+ eventType: TouchEventType.TOUCHES_DOWN,
443
+ x: 0,
444
+ y: 0,
445
+ },
446
+ {
447
+ id: TOUCH_EVENT_ID,
448
+ eventType: TouchEventType.TOUCHES_MOVE,
449
+ x: 0,
450
+ // Dropping position is in the second half of the second block's height.
451
+ y: 180,
452
+ },
453
+ ] );
454
+ // Draggable Pan gesture uses the Gesture state manager to manually
455
+ // activate the gesture. Since this not available in tests, the library
456
+ // displays a warning message.
457
+ expect( console ).toHaveWarnedWith(
458
+ '[react-native-gesture-handler] You have to use react-native-reanimated in order to control the state of the gesture.'
459
+ );
460
+ expect( getEditorHtml() ).toMatchSnapshot(
461
+ 'Paragraph block moved from first to second position'
462
+ );
463
+
464
+ // Move Spacer block from third to first position
465
+ fireLongPress(
466
+ getByA11yLabel( /Spacer Block\. Row 3/ ),
467
+ 'draggable-trigger-content'
468
+ );
469
+ firePanGesture( blockDraggableWrapper, [
470
+ {
471
+ id: TOUCH_EVENT_ID,
472
+ eventType: TouchEventType.TOUCHES_DOWN,
473
+ x: 0,
474
+ y: 250,
475
+ },
476
+ {
477
+ id: TOUCH_EVENT_ID,
478
+ eventType: TouchEventType.TOUCHES_MOVE,
479
+ x: 0,
480
+ y: 0,
481
+ },
482
+ ] );
483
+ // Draggable Pan gesture uses the Gesture state manager to manually
484
+ // activate the gesture. Since this not available in tests, the library
485
+ // displays a warning message.
486
+ expect( console ).toHaveWarnedWith(
487
+ '[react-native-gesture-handler] You have to use react-native-reanimated in order to control the state of the gesture.'
488
+ );
489
+ expect( getEditorHtml() ).toMatchSnapshot(
490
+ 'Spacer block moved from third to first position'
491
+ );
492
+ } ) );
493
+ } );
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { shallow, mount } from 'enzyme';
5
- import { noop } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -19,6 +18,8 @@ import {
19
18
  import { Edit } from '../edit';
20
19
  import { BlockContextProvider } from '../../block-context';
21
20
 
21
+ const noop = () => {};
22
+
22
23
  describe( 'Edit', () => {
23
24
  afterEach( () => {
24
25
  getBlockTypes().forEach( ( block ) => {
@@ -37,12 +37,8 @@ export class BlockListItem extends Component {
37
37
  parentWidth,
38
38
  blockWidth,
39
39
  } = this.props;
40
- const {
41
- isFullWidth,
42
- isWideWidth,
43
- isWider,
44
- isContainerRelated,
45
- } = alignmentHelpers;
40
+ const { isFullWidth, isWideWidth, isWider, isContainerRelated } =
41
+ alignmentHelpers;
46
42
 
47
43
  if ( isFullWidth( blockAlignment ) ) {
48
44
  if ( ! hasParents ) {
@@ -83,12 +79,8 @@ export class BlockListItem extends Component {
83
79
  }
84
80
 
85
81
  getContentStyles( readableContentViewStyle ) {
86
- const {
87
- blockAlignment,
88
- blockName,
89
- hasParents,
90
- parentBlockName,
91
- } = this.props;
82
+ const { blockAlignment, blockName, hasParents, parentBlockName } =
83
+ this.props;
92
84
  const { isFullWidth, isContainerRelated } = alignmentHelpers;
93
85
 
94
86
  return [
@@ -81,9 +81,8 @@ const BlockSelectionButton = ( {
81
81
 
82
82
  export default compose( [
83
83
  withSelect( ( select, { clientId } ) => {
84
- const { getBlockRootClientId, getBlockName, getSettings } = select(
85
- blockEditorStore
86
- );
84
+ const { getBlockRootClientId, getBlockName, getSettings } =
85
+ select( blockEditorStore );
87
86
  const rootClientId = getBlockRootClientId( clientId );
88
87
 
89
88
  if ( ! rootClientId ) {
@@ -269,10 +269,10 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
269
269
  // leaking new props to the public API (editor.BlockListBlock filter).
270
270
  return {
271
271
  setAttributes( newAttributes ) {
272
- const { getMultiSelectedBlockClientIds } = select(
273
- blockEditorStore
274
- );
275
- const multiSelectedBlockClientIds = getMultiSelectedBlockClientIds();
272
+ const { getMultiSelectedBlockClientIds } =
273
+ select( blockEditorStore );
274
+ const multiSelectedBlockClientIds =
275
+ getMultiSelectedBlockClientIds();
276
276
  const { clientId } = ownProps;
277
277
  const clientIds = multiSelectedBlockClientIds.length
278
278
  ? multiSelectedBlockClientIds
@@ -292,9 +292,8 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
292
292
  },
293
293
  onMerge( forward ) {
294
294
  const { clientId } = ownProps;
295
- const { getPreviousBlockClientId, getNextBlockClientId } = select(
296
- blockEditorStore
297
- );
295
+ const { getPreviousBlockClientId, getNextBlockClientId } =
296
+ select( blockEditorStore );
298
297
 
299
298
  if ( forward ) {
300
299
  const nextBlockClientId = getNextBlockClientId( clientId );
@@ -302,9 +301,8 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
302
301
  mergeBlocks( clientId, nextBlockClientId );
303
302
  }
304
303
  } else {
305
- const previousBlockClientId = getPreviousBlockClientId(
306
- clientId
307
- );
304
+ const previousBlockClientId =
305
+ getPreviousBlockClientId( clientId );
308
306
  if ( previousBlockClientId ) {
309
307
  mergeBlocks( previousBlockClientId, clientId );
310
308
  }
@@ -263,6 +263,7 @@ class BlockListBlock extends Component {
263
263
  clientId={ clientId }
264
264
  draggingClientId={ draggingClientId }
265
265
  enabled={ draggingEnabled }
266
+ testID="draggable-trigger-content"
266
267
  >
267
268
  { () =>
268
269
  isValid ? (
@@ -346,9 +347,8 @@ export default compose( [
346
347
 
347
348
  const selectedBlockClientId = getSelectedBlockClientId();
348
349
 
349
- const commonAncestor = getLowestCommonAncestorWithSelectedBlock(
350
- clientId
351
- );
350
+ const commonAncestor =
351
+ getLowestCommonAncestorWithSelectedBlock( clientId );
352
352
  const commonAncestorIndex = parents.indexOf( commonAncestor ) - 1;
353
353
  const firstToSelectId = commonAncestor
354
354
  ? parents[ commonAncestorIndex ]
@@ -362,16 +362,15 @@ export default compose( [
362
362
  const selectedParents = selectedBlockClientId
363
363
  ? getBlockParents( selectedBlockClientId )
364
364
  : [];
365
- const isDescendantOfParentSelected = selectedParents.includes(
366
- parentId
367
- );
365
+ const isDescendantOfParentSelected =
366
+ selectedParents.includes( parentId );
368
367
  const isTouchable =
369
368
  isSelected ||
370
369
  isDescendantOfParentSelected ||
371
370
  isParentSelected ||
372
371
  parentId === '';
373
- const baseGlobalStyles = getSettings()
374
- ?.__experimentalGlobalStylesBaseStyles;
372
+ const baseGlobalStyles =
373
+ getSettings()?.__experimentalGlobalStylesBaseStyles;
375
374
 
376
375
  const hasInnerBlocks = getBlockCount( clientId ) > 0;
377
376
  // For blocks with inner blocks, we only enable the dragging in the nested
@@ -419,10 +418,8 @@ export default compose( [
419
418
  return {
420
419
  mergeBlocks( forward ) {
421
420
  const { clientId } = ownProps;
422
- const {
423
- getPreviousBlockClientId,
424
- getNextBlockClientId,
425
- } = select( blockEditorStore );
421
+ const { getPreviousBlockClientId, getNextBlockClientId } =
422
+ select( blockEditorStore );
426
423
 
427
424
  if ( forward ) {
428
425
  const nextBlockClientId = getNextBlockClientId( clientId );
@@ -430,9 +427,8 @@ export default compose( [
430
427
  mergeBlocks( clientId, nextBlockClientId );
431
428
  }
432
429
  } else {
433
- const previousBlockClientId = getPreviousBlockClientId(
434
- clientId
435
- );
430
+ const previousBlockClientId =
431
+ getPreviousBlockClientId( clientId );
436
432
  if ( previousBlockClientId ) {
437
433
  mergeBlocks( previousBlockClientId, clientId );
438
434
  }