@wordpress/block-editor 8.6.0 → 9.2.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 (466) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +5 -2
  3. package/build/components/block-alignment-control/constants.js +48 -0
  4. package/build/components/block-alignment-control/constants.js.map +1 -0
  5. package/build/components/block-alignment-control/ui.js +9 -40
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +92 -0
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -0
  9. package/build/components/block-alignment-matrix-control/index.js +1 -6
  10. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +4 -82
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-draggable/draggable-chip.native.js +65 -0
  14. package/build/components/block-draggable/draggable-chip.native.js.map +1 -0
  15. package/build/components/block-draggable/dropping-insertion-point.native.js +157 -0
  16. package/build/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  17. package/build/components/block-draggable/index.native.js +488 -0
  18. package/build/components/block-draggable/index.native.js.map +1 -0
  19. package/build/components/block-draggable/use-scroll-when-dragging.native.js +130 -0
  20. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  21. package/build/components/block-list/block-list-context.native.js +195 -0
  22. package/build/components/block-list/block-list-context.native.js.map +1 -0
  23. package/build/components/block-list/block-list-item-cell.native.js +67 -0
  24. package/build/components/block-list/block-list-item-cell.native.js.map +1 -0
  25. package/build/components/block-list/block-list-item.native.js +12 -9
  26. package/build/components/block-list/block-list-item.native.js.map +1 -1
  27. package/build/components/block-list/block.native.js +27 -5
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list/index.js +34 -32
  30. package/build/components/block-list/index.js.map +1 -1
  31. package/build/components/block-list/index.native.js +75 -23
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/use-block-props/index.js +8 -4
  34. package/build/components/block-list/use-block-props/index.js.map +1 -1
  35. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
  36. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +1 -1
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js +10 -3
  40. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  41. package/build/components/block-mover/index.native.js +17 -4
  42. package/build/components/block-mover/index.native.js.map +1 -1
  43. package/build/components/block-navigation/dropdown.js +11 -5
  44. package/build/components/block-navigation/dropdown.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +19 -8
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +20 -16
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/index.js +1 -1
  50. package/build/components/block-preview/index.js.map +1 -1
  51. package/build/components/block-tools/block-selection-button.js +1 -0
  52. package/build/components/block-tools/block-selection-button.js.map +1 -1
  53. package/build/components/block-tools/selected-block-popover.js +1 -29
  54. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  55. package/build/components/block-variation-transforms/index.js +16 -2
  56. package/build/components/block-variation-transforms/index.js.map +1 -1
  57. package/build/components/border-radius-control/input-controls.js +10 -3
  58. package/build/components/border-radius-control/input-controls.js.map +1 -1
  59. package/build/components/color-style-selector/index.js +9 -0
  60. package/build/components/color-style-selector/index.js.map +1 -1
  61. package/build/components/colors-gradients/dropdown.js +122 -41
  62. package/build/components/colors-gradients/dropdown.js.map +1 -1
  63. package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
  64. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  65. package/build/components/convert-to-group-buttons/toolbar.js +22 -5
  66. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  67. package/build/components/iframe/index.js +51 -50
  68. package/build/components/iframe/index.js.map +1 -1
  69. package/build/components/image-editor/use-save-image.js +3 -1
  70. package/build/components/image-editor/use-save-image.js.map +1 -1
  71. package/build/components/index.js +14 -23
  72. package/build/components/index.js.map +1 -1
  73. package/build/components/inserter/index.js +21 -7
  74. package/build/components/inserter/index.js.map +1 -1
  75. package/build/components/inserter/index.native.js +2 -2
  76. package/build/components/inserter/index.native.js.map +1 -1
  77. package/build/components/inserter/quick-inserter.js +4 -5
  78. package/build/components/inserter/quick-inserter.js.map +1 -1
  79. package/build/components/link-control/constants.js +11 -1
  80. package/build/components/link-control/constants.js.map +1 -1
  81. package/build/components/link-control/search-results.js +4 -3
  82. package/build/components/link-control/search-results.js.map +1 -1
  83. package/build/components/link-control/use-search-handler.js +4 -4
  84. package/build/components/link-control/use-search-handler.js.map +1 -1
  85. package/build/components/list-view/block.js +15 -15
  86. package/build/components/list-view/block.js.map +1 -1
  87. package/build/components/list-view/branch.js +9 -13
  88. package/build/components/list-view/branch.js.map +1 -1
  89. package/build/components/list-view/context.js +1 -4
  90. package/build/components/list-view/context.js.map +1 -1
  91. package/build/components/list-view/drop-indicator.js +0 -1
  92. package/build/components/list-view/drop-indicator.js.map +1 -1
  93. package/build/components/list-view/index.js +15 -32
  94. package/build/components/list-view/index.js.map +1 -1
  95. package/build/components/media-placeholder/index.js +0 -2
  96. package/build/components/media-placeholder/index.js.map +1 -1
  97. package/build/components/media-replace-flow/index.js +0 -2
  98. package/build/components/media-replace-flow/index.js.map +1 -1
  99. package/build/components/media-upload/index.native.js +10 -4
  100. package/build/components/media-upload/index.native.js.map +1 -1
  101. package/build/components/navigable-toolbar/index.js +12 -2
  102. package/build/components/navigable-toolbar/index.js.map +1 -1
  103. package/build/components/plain-text/index.native.js +62 -7
  104. package/build/components/plain-text/index.native.js.map +1 -1
  105. package/build/components/publish-date-time-picker/index.js +55 -0
  106. package/build/components/publish-date-time-picker/index.js.map +1 -0
  107. package/build/components/rich-text/format-toolbar-container.js +0 -1
  108. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  109. package/build/components/rich-text/index.js +2 -2
  110. package/build/components/rich-text/index.js.map +1 -1
  111. package/build/components/rich-text/index.native.js +5 -1
  112. package/build/components/rich-text/index.native.js.map +1 -1
  113. package/build/components/url-input/index.js +11 -4
  114. package/build/components/url-input/index.js.map +1 -1
  115. package/build/components/use-block-drop-zone/index.native.js +167 -0
  116. package/build/components/use-block-drop-zone/index.native.js.map +1 -0
  117. package/build/components/use-on-block-drop/index.native.js +95 -0
  118. package/build/components/use-on-block-drop/index.native.js.map +1 -0
  119. package/build/components/use-setting/index.js +42 -18
  120. package/build/components/use-setting/index.js.map +1 -1
  121. package/build/components/warning/index.js +6 -1
  122. package/build/components/warning/index.js.map +1 -1
  123. package/build/components/writing-flow/use-click-selection.js +1 -3
  124. package/build/components/writing-flow/use-click-selection.js.map +1 -1
  125. package/build/components/writing-flow/use-input.js +15 -0
  126. package/build/components/writing-flow/use-input.js.map +1 -1
  127. package/build/components/writing-flow/use-selection-observer.js +49 -8
  128. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  129. package/build/elements/index.js +9 -0
  130. package/build/elements/index.js.map +1 -0
  131. package/build/hooks/anchor.js.map +1 -1
  132. package/build/hooks/border.js +2 -7
  133. package/build/hooks/border.js.map +1 -1
  134. package/build/hooks/color-panel.js +14 -7
  135. package/build/hooks/color-panel.js.map +1 -1
  136. package/build/hooks/color.js +8 -88
  137. package/build/hooks/color.js.map +1 -1
  138. package/build/hooks/dimensions.js +16 -6
  139. package/build/hooks/dimensions.js.map +1 -1
  140. package/build/hooks/index.js +2 -0
  141. package/build/hooks/index.js.map +1 -1
  142. package/build/hooks/margin.js +64 -12
  143. package/build/hooks/margin.js.map +1 -1
  144. package/build/hooks/padding.js +60 -12
  145. package/build/hooks/padding.js.map +1 -1
  146. package/build/hooks/settings.js +32 -0
  147. package/build/hooks/settings.js.map +1 -0
  148. package/build/hooks/style.js +14 -13
  149. package/build/hooks/style.js.map +1 -1
  150. package/build/hooks/typography.js +6 -2
  151. package/build/hooks/typography.js.map +1 -1
  152. package/build/index.js +14 -0
  153. package/build/index.js.map +1 -1
  154. package/build/layouts/flex.js +5 -2
  155. package/build/layouts/flex.js.map +1 -1
  156. package/build/store/actions.js +14 -0
  157. package/build/store/actions.js.map +1 -1
  158. package/build/store/defaults.js +0 -1
  159. package/build/store/defaults.js.map +1 -1
  160. package/build/store/reducer.js +17 -2
  161. package/build/store/reducer.js.map +1 -1
  162. package/build/store/selectors.js +43 -13
  163. package/build/store/selectors.js.map +1 -1
  164. package/build-module/components/block-alignment-control/constants.js +36 -0
  165. package/build-module/components/block-alignment-control/constants.js.map +1 -0
  166. package/build-module/components/block-alignment-control/ui.js +4 -35
  167. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  168. package/build-module/components/block-alignment-control/ui.native.js +78 -0
  169. package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
  170. package/build-module/components/block-alignment-matrix-control/index.js +1 -6
  171. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  172. package/build-module/components/block-content-overlay/index.js +3 -78
  173. package/build-module/components/block-content-overlay/index.js.map +1 -1
  174. package/build-module/components/block-draggable/draggable-chip.native.js +51 -0
  175. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -0
  176. package/build-module/components/block-draggable/dropping-insertion-point.native.js +137 -0
  177. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  178. package/build-module/components/block-draggable/index.native.js +453 -0
  179. package/build-module/components/block-draggable/index.native.js.map +1 -0
  180. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +120 -0
  181. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  182. package/build-module/components/block-list/block-list-context.native.js +179 -0
  183. package/build-module/components/block-list/block-list-context.native.js.map +1 -0
  184. package/build-module/components/block-list/block-list-item-cell.native.js +59 -0
  185. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -0
  186. package/build-module/components/block-list/block-list-item.native.js +12 -9
  187. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  188. package/build-module/components/block-list/block.native.js +26 -5
  189. package/build-module/components/block-list/block.native.js.map +1 -1
  190. package/build-module/components/block-list/index.js +35 -33
  191. package/build-module/components/block-list/index.js.map +1 -1
  192. package/build-module/components/block-list/index.native.js +72 -23
  193. package/build-module/components/block-list/index.native.js.map +1 -1
  194. package/build-module/components/block-list/use-block-props/index.js +9 -5
  195. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  196. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
  197. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  198. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  199. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  200. package/build-module/components/block-mobile-toolbar/index.native.js +9 -3
  201. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  202. package/build-module/components/block-mover/index.native.js +18 -5
  203. package/build-module/components/block-mover/index.native.js.map +1 -1
  204. package/build-module/components/block-navigation/dropdown.js +10 -5
  205. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  206. package/build-module/components/block-popover/inbetween.js +19 -8
  207. package/build-module/components/block-popover/inbetween.js.map +1 -1
  208. package/build-module/components/block-popover/index.js +21 -15
  209. package/build-module/components/block-popover/index.js.map +1 -1
  210. package/build-module/components/block-preview/index.js +1 -1
  211. package/build-module/components/block-preview/index.js.map +1 -1
  212. package/build-module/components/block-tools/block-selection-button.js +1 -0
  213. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  214. package/build-module/components/block-tools/selected-block-popover.js +2 -29
  215. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  216. package/build-module/components/block-variation-transforms/index.js +13 -2
  217. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  218. package/build-module/components/border-radius-control/input-controls.js +11 -4
  219. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  220. package/build-module/components/color-style-selector/index.js +6 -0
  221. package/build-module/components/color-style-selector/index.js.map +1 -1
  222. package/build-module/components/colors-gradients/dropdown.js +124 -43
  223. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  224. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
  225. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  226. package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
  227. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  228. package/build-module/components/iframe/index.js +52 -51
  229. package/build-module/components/iframe/index.js.map +1 -1
  230. package/build-module/components/image-editor/use-save-image.js +2 -1
  231. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  232. package/build-module/components/index.js +2 -3
  233. package/build-module/components/index.js.map +1 -1
  234. package/build-module/components/inserter/index.js +21 -7
  235. package/build-module/components/inserter/index.js.map +1 -1
  236. package/build-module/components/inserter/index.native.js +2 -2
  237. package/build-module/components/inserter/index.native.js.map +1 -1
  238. package/build-module/components/inserter/quick-inserter.js +4 -5
  239. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  240. package/build-module/components/link-control/constants.js +5 -0
  241. package/build-module/components/link-control/constants.js.map +1 -1
  242. package/build-module/components/link-control/search-results.js +3 -4
  243. package/build-module/components/link-control/search-results.js.map +1 -1
  244. package/build-module/components/link-control/use-search-handler.js +5 -5
  245. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  246. package/build-module/components/list-view/block.js +15 -16
  247. package/build-module/components/list-view/block.js.map +1 -1
  248. package/build-module/components/list-view/branch.js +9 -13
  249. package/build-module/components/list-view/branch.js.map +1 -1
  250. package/build-module/components/list-view/context.js +1 -4
  251. package/build-module/components/list-view/context.js.map +1 -1
  252. package/build-module/components/list-view/drop-indicator.js +0 -1
  253. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  254. package/build-module/components/list-view/index.js +15 -31
  255. package/build-module/components/list-view/index.js.map +1 -1
  256. package/build-module/components/media-placeholder/index.js +0 -2
  257. package/build-module/components/media-placeholder/index.js.map +1 -1
  258. package/build-module/components/media-replace-flow/index.js +0 -2
  259. package/build-module/components/media-replace-flow/index.js.map +1 -1
  260. package/build-module/components/media-upload/index.native.js +8 -3
  261. package/build-module/components/media-upload/index.native.js.map +1 -1
  262. package/build-module/components/navigable-toolbar/index.js +12 -2
  263. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  264. package/build-module/components/plain-text/index.native.js +63 -8
  265. package/build-module/components/plain-text/index.native.js.map +1 -1
  266. package/build-module/components/publish-date-time-picker/index.js +42 -0
  267. package/build-module/components/publish-date-time-picker/index.js.map +1 -0
  268. package/build-module/components/rich-text/format-toolbar-container.js +0 -1
  269. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  270. package/build-module/components/rich-text/index.js +2 -2
  271. package/build-module/components/rich-text/index.js.map +1 -1
  272. package/build-module/components/rich-text/index.native.js +5 -1
  273. package/build-module/components/rich-text/index.native.js.map +1 -1
  274. package/build-module/components/url-input/index.js +11 -4
  275. package/build-module/components/url-input/index.js.map +1 -1
  276. package/build-module/components/use-block-drop-zone/index.native.js +148 -0
  277. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -0
  278. package/build-module/components/use-on-block-drop/index.native.js +83 -0
  279. package/build-module/components/use-on-block-drop/index.native.js.map +1 -0
  280. package/build-module/components/use-setting/index.js +43 -19
  281. package/build-module/components/use-setting/index.js.map +1 -1
  282. package/build-module/components/warning/index.js +6 -1
  283. package/build-module/components/warning/index.js.map +1 -1
  284. package/build-module/components/writing-flow/use-click-selection.js +1 -3
  285. package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
  286. package/build-module/components/writing-flow/use-input.js +15 -0
  287. package/build-module/components/writing-flow/use-input.js.map +1 -1
  288. package/build-module/components/writing-flow/use-selection-observer.js +49 -8
  289. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  290. package/build-module/elements/index.js +2 -0
  291. package/build-module/elements/index.js.map +1 -0
  292. package/build-module/hooks/anchor.js.map +1 -1
  293. package/build-module/hooks/border.js +2 -7
  294. package/build-module/hooks/border.js.map +1 -1
  295. package/build-module/hooks/color-panel.js +11 -6
  296. package/build-module/hooks/color-panel.js.map +1 -1
  297. package/build-module/hooks/color.js +8 -88
  298. package/build-module/hooks/color.js.map +1 -1
  299. package/build-module/hooks/dimensions.js +19 -9
  300. package/build-module/hooks/dimensions.js.map +1 -1
  301. package/build-module/hooks/index.js +1 -0
  302. package/build-module/hooks/index.js.map +1 -1
  303. package/build-module/hooks/margin.js +61 -13
  304. package/build-module/hooks/margin.js.map +1 -1
  305. package/build-module/hooks/padding.js +57 -13
  306. package/build-module/hooks/padding.js.map +1 -1
  307. package/build-module/hooks/settings.js +29 -0
  308. package/build-module/hooks/settings.js.map +1 -0
  309. package/build-module/hooks/style.js +15 -14
  310. package/build-module/hooks/style.js.map +1 -1
  311. package/build-module/hooks/typography.js +6 -2
  312. package/build-module/hooks/typography.js.map +1 -1
  313. package/build-module/index.js +1 -0
  314. package/build-module/index.js.map +1 -1
  315. package/build-module/layouts/flex.js +4 -2
  316. package/build-module/layouts/flex.js.map +1 -1
  317. package/build-module/store/actions.js +12 -0
  318. package/build-module/store/actions.js.map +1 -1
  319. package/build-module/store/defaults.js +0 -1
  320. package/build-module/store/defaults.js.map +1 -1
  321. package/build-module/store/reducer.js +17 -2
  322. package/build-module/store/reducer.js.map +1 -1
  323. package/build-module/store/selectors.js +37 -12
  324. package/build-module/store/selectors.js.map +1 -1
  325. package/build-style/style-rtl.css +100 -225
  326. package/build-style/style.css +100 -225
  327. package/package.json +30 -30
  328. package/src/components/block-alignment-control/constants.js +45 -0
  329. package/src/components/block-alignment-control/ui.js +69 -109
  330. package/src/components/block-alignment-control/ui.native.js +86 -0
  331. package/src/components/block-alignment-matrix-control/index.js +1 -5
  332. package/src/components/block-content-overlay/index.js +8 -95
  333. package/src/components/block-content-overlay/style.scss +2 -12
  334. package/src/components/block-draggable/draggable-chip.native.js +49 -0
  335. package/src/components/block-draggable/dropping-insertion-point.native.js +181 -0
  336. package/src/components/block-draggable/dropping-insertion-point.native.scss +8 -0
  337. package/src/components/block-draggable/index.native.js +462 -0
  338. package/src/components/block-draggable/style.native.scss +19 -0
  339. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
  340. package/src/components/block-draggable/test/helpers.native.js +183 -0
  341. package/src/components/block-draggable/test/index.native.js +496 -0
  342. package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
  343. package/src/components/block-list/block-list-context.native.js +175 -0
  344. package/src/components/block-list/block-list-item-cell.native.js +49 -0
  345. package/src/components/block-list/block-list-item.native.js +7 -11
  346. package/src/components/block-list/block.native.js +37 -8
  347. package/src/components/block-list/index.js +44 -44
  348. package/src/components/block-list/index.native.js +54 -13
  349. package/src/components/block-list/style.scss +7 -18
  350. package/src/components/block-list/test/block-list-context.native.js +253 -0
  351. package/src/components/block-list/test/fixtures/block-list-context.native.js +79 -0
  352. package/src/components/block-list/use-block-props/index.js +10 -5
  353. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
  354. package/src/components/block-list/use-in-between-inserter.js +1 -1
  355. package/src/components/block-mobile-toolbar/index.native.js +9 -1
  356. package/src/components/block-mover/index.native.js +22 -6
  357. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -0
  358. package/src/components/block-navigation/dropdown.js +12 -8
  359. package/src/components/block-popover/inbetween.js +21 -8
  360. package/src/components/block-popover/index.js +18 -15
  361. package/src/components/block-popover/style.scss +4 -0
  362. package/src/components/block-preview/index.js +1 -4
  363. package/src/components/block-switcher/style.scss +2 -39
  364. package/src/components/block-tools/block-selection-button.js +1 -0
  365. package/src/components/block-tools/selected-block-popover.js +1 -36
  366. package/src/components/block-tools/style.scss +1 -12
  367. package/src/components/block-variation-transforms/index.js +6 -2
  368. package/src/components/border-radius-control/input-controls.js +16 -8
  369. package/src/components/border-radius-control/style.scss +3 -2
  370. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  371. package/src/components/color-style-selector/index.js +18 -9
  372. package/src/components/colors-gradients/dropdown.js +130 -62
  373. package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
  374. package/src/components/colors-gradients/style.scss +52 -50
  375. package/src/components/convert-to-group-buttons/toolbar.js +30 -13
  376. package/src/components/duotone-control/style.scss +1 -7
  377. package/src/components/iframe/index.js +62 -54
  378. package/src/components/image-editor/use-save-image.js +2 -1
  379. package/src/components/image-size-control/README.md +1 -1
  380. package/src/components/index.js +2 -3
  381. package/src/components/inserter/index.js +20 -0
  382. package/src/components/inserter/index.native.js +2 -2
  383. package/src/components/inserter/quick-inserter.js +3 -11
  384. package/src/components/inserter/style.native.scss +1 -0
  385. package/src/components/inserter/style.scss +2 -1
  386. package/src/components/link-control/constants.js +11 -0
  387. package/src/components/link-control/search-results.js +4 -5
  388. package/src/components/link-control/use-search-handler.js +11 -5
  389. package/src/components/list-view/block.js +24 -34
  390. package/src/components/list-view/branch.js +10 -20
  391. package/src/components/list-view/context.js +1 -4
  392. package/src/components/list-view/drop-indicator.js +0 -1
  393. package/src/components/list-view/index.js +11 -41
  394. package/src/components/list-view/style.scss +2 -1
  395. package/src/components/media-placeholder/index.js +0 -2
  396. package/src/components/media-replace-flow/index.js +0 -2
  397. package/src/components/media-upload/index.native.js +6 -2
  398. package/src/components/media-upload/test/index.native.js +31 -6
  399. package/src/components/navigable-toolbar/index.js +12 -2
  400. package/src/components/plain-text/index.native.js +64 -8
  401. package/src/components/preview-options/style.scss +0 -4
  402. package/src/components/publish-date-time-picker/README.md +52 -0
  403. package/src/components/publish-date-time-picker/index.js +50 -0
  404. package/src/components/publish-date-time-picker/style.scss +20 -0
  405. package/src/components/rich-text/format-toolbar-container.js +0 -1
  406. package/src/components/rich-text/index.js +3 -1
  407. package/src/components/rich-text/index.native.js +4 -0
  408. package/src/components/rich-text/style.scss +2 -8
  409. package/src/components/url-input/index.js +9 -4
  410. package/src/components/use-block-drop-zone/index.native.js +173 -0
  411. package/src/components/use-on-block-drop/index.native.js +119 -0
  412. package/src/components/use-setting/index.js +57 -21
  413. package/src/components/warning/index.js +47 -42
  414. package/src/components/warning/test/__snapshots__/index.js.snap +15 -6
  415. package/src/components/warning/test/index.js +1 -1
  416. package/src/components/writing-flow/use-click-selection.js +1 -4
  417. package/src/components/writing-flow/use-input.js +12 -0
  418. package/src/components/writing-flow/use-selection-observer.js +55 -10
  419. package/src/elements/index.js +1 -0
  420. package/src/hooks/anchor.js +1 -1
  421. package/src/hooks/border.js +2 -11
  422. package/src/hooks/border.scss +0 -48
  423. package/src/hooks/color-panel.js +13 -9
  424. package/src/hooks/color.js +5 -74
  425. package/src/hooks/color.scss +5 -58
  426. package/src/hooks/dimensions.js +55 -41
  427. package/src/hooks/index.js +1 -0
  428. package/src/hooks/margin.js +64 -15
  429. package/src/hooks/padding.js +60 -15
  430. package/src/hooks/padding.scss +12 -0
  431. package/src/hooks/settings.js +32 -0
  432. package/src/hooks/style.js +25 -39
  433. package/src/hooks/test/settings.js +48 -0
  434. package/src/hooks/typography.js +2 -0
  435. package/src/index.js +1 -0
  436. package/src/layouts/flex.js +11 -3
  437. package/src/store/actions.js +12 -0
  438. package/src/store/defaults.js +0 -1
  439. package/src/store/reducer.js +14 -1
  440. package/src/store/selectors.js +42 -12
  441. package/src/store/test/reducer.js +5 -0
  442. package/src/store/test/selectors.js +17 -0
  443. package/src/style.scss +2 -2
  444. package/tsconfig.tsbuildinfo +1 -1
  445. package/build/components/border-style-control/index.js +0 -60
  446. package/build/components/border-style-control/index.js.map +0 -1
  447. package/build/components/colors/color-panel.js +0 -82
  448. package/build/components/colors/color-panel.js.map +0 -1
  449. package/build/components/colors/color-panel.native.js +0 -11
  450. package/build/components/colors/color-panel.native.js.map +0 -1
  451. package/build/components/colors-gradients/tools-panel-color-dropdown.js +0 -89
  452. package/build/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  453. package/build-module/components/border-style-control/index.js +0 -50
  454. package/build-module/components/border-style-control/index.js.map +0 -1
  455. package/build-module/components/colors/color-panel.js +0 -70
  456. package/build-module/components/colors/color-panel.js.map +0 -1
  457. package/build-module/components/colors/color-panel.native.js +0 -4
  458. package/build-module/components/colors/color-panel.native.js.map +0 -1
  459. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js +0 -75
  460. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  461. package/src/components/block-alignment-matrix-control/style.scss +0 -10
  462. package/src/components/border-style-control/index.js +0 -47
  463. package/src/components/border-style-control/style.scss +0 -18
  464. package/src/components/colors/color-panel.js +0 -91
  465. package/src/components/colors/color-panel.native.js +0 -3
  466. package/src/components/colors-gradients/tools-panel-color-dropdown.js +0 -85
@@ -0,0 +1,462 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { AccessibilityInfo } from 'react-native';
5
+ import {
6
+ useSafeAreaInsets,
7
+ useSafeAreaFrame,
8
+ } from 'react-native-safe-area-context';
9
+ import Animated, {
10
+ runOnJS,
11
+ runOnUI,
12
+ useAnimatedRef,
13
+ useAnimatedStyle,
14
+ useSharedValue,
15
+ withDelay,
16
+ withTiming,
17
+ ZoomInEasyDown,
18
+ } from 'react-native-reanimated';
19
+
20
+ /**
21
+ * WordPress dependencies
22
+ */
23
+ import { Draggable, DraggableTrigger } from '@wordpress/components';
24
+ import { select, useSelect, useDispatch } from '@wordpress/data';
25
+ import {
26
+ useCallback,
27
+ useEffect,
28
+ useRef,
29
+ useState,
30
+ Platform,
31
+ } from '@wordpress/element';
32
+ import { getBlockType } from '@wordpress/blocks';
33
+ import { generateHapticFeedback } from '@wordpress/react-native-bridge';
34
+ import RCTAztecView from '@wordpress/react-native-aztec';
35
+
36
+ /**
37
+ * Internal dependencies
38
+ */
39
+ import useScrollWhenDragging from './use-scroll-when-dragging';
40
+ import DraggableChip from './draggable-chip';
41
+ import { store as blockEditorStore } from '../../store';
42
+ import { useBlockListContext } from '../block-list/block-list-context';
43
+ import DroppingInsertionPoint from './dropping-insertion-point';
44
+ import useBlockDropZone from '../use-block-drop-zone';
45
+ import styles from './style.scss';
46
+
47
+ const CHIP_OFFSET_TO_TOUCH_POSITION = 32;
48
+ const BLOCK_OPACITY_ANIMATION_CONFIG = { duration: 350 };
49
+ const BLOCK_OPACITY_ANIMATION_DELAY = 250;
50
+ const DEFAULT_LONG_PRESS_MIN_DURATION = 500;
51
+ const DEFAULT_IOS_LONG_PRESS_MIN_DURATION =
52
+ DEFAULT_LONG_PRESS_MIN_DURATION - 50;
53
+
54
+ /**
55
+ * Block draggable wrapper component
56
+ *
57
+ * This component handles all the interactions for dragging blocks.
58
+ * It relies on the block list and its context for dragging, hence it
59
+ * should be rendered between the `BlockListProvider` component and the
60
+ * block list rendering. It also requires listening to scroll events,
61
+ * therefore for this purpose, it returns the `onScroll` event handler
62
+ * that should be attached to the list that renders the blocks.
63
+ *
64
+ *
65
+ * @param {Object} props Component props.
66
+ * @param {JSX.Element} props.children Children to be rendered.
67
+ * @param {boolean} props.isRTL Check if current locale is RTL.
68
+ *
69
+ * @return {Function} Render function that passes `onScroll` event handler.
70
+ */
71
+ const BlockDraggableWrapper = ( { children, isRTL } ) => {
72
+ const [ draggedBlockIcon, setDraggedBlockIcon ] = useState();
73
+
74
+ const {
75
+ selectBlock,
76
+ startDraggingBlocks,
77
+ stopDraggingBlocks,
78
+ } = useDispatch( blockEditorStore );
79
+
80
+ const { scrollRef } = useBlockListContext();
81
+ const animatedScrollRef = useAnimatedRef();
82
+ const { left, right } = useSafeAreaInsets();
83
+ const { width } = useSafeAreaFrame();
84
+ const safeAreaOffset = left + right;
85
+ const contentWidth = width - safeAreaOffset;
86
+ animatedScrollRef( scrollRef );
87
+
88
+ const scroll = {
89
+ offsetY: useSharedValue( 0 ),
90
+ };
91
+ const chip = {
92
+ x: useSharedValue( 0 ),
93
+ y: useSharedValue( 0 ),
94
+ width: useSharedValue( 0 ),
95
+ height: useSharedValue( 0 ),
96
+ };
97
+ const currentYPosition = useSharedValue( 0 );
98
+ const isDragging = useSharedValue( false );
99
+
100
+ const [
101
+ startScrolling,
102
+ scrollOnDragOver,
103
+ stopScrolling,
104
+ draggingScrollHandler,
105
+ ] = useScrollWhenDragging();
106
+
107
+ const scrollHandler = ( event ) => {
108
+ 'worklet';
109
+ const { contentOffset } = event;
110
+ scroll.offsetY.value = contentOffset.y;
111
+
112
+ draggingScrollHandler( event );
113
+ };
114
+
115
+ const {
116
+ onBlockDragOver,
117
+ onBlockDragEnd,
118
+ onBlockDrop,
119
+ targetBlockIndex,
120
+ } = useBlockDropZone();
121
+
122
+ // Stop dragging blocks if the block draggable is unmounted.
123
+ useEffect( () => {
124
+ return () => {
125
+ if ( isDragging.value ) {
126
+ stopDraggingBlocks();
127
+ }
128
+ };
129
+ }, [] );
130
+
131
+ const setDraggedBlockIconByClientId = ( clientId ) => {
132
+ const blockName = select( blockEditorStore ).getBlockName( clientId );
133
+ const blockIcon = getBlockType( blockName )?.icon;
134
+ if ( blockIcon ) {
135
+ setDraggedBlockIcon( blockIcon );
136
+ }
137
+ };
138
+
139
+ const onStartDragging = ( { clientId, position } ) => {
140
+ if ( clientId ) {
141
+ startDraggingBlocks( [ clientId ] );
142
+ setDraggedBlockIconByClientId( clientId );
143
+ runOnUI( startScrolling )( position.y );
144
+ generateHapticFeedback();
145
+ } else {
146
+ // We stop dragging if no block is found.
147
+ runOnUI( stopDragging )();
148
+ }
149
+ };
150
+
151
+ const onStopDragging = ( { clientId } ) => {
152
+ if ( clientId ) {
153
+ onBlockDrop( {
154
+ // Dropping is only allowed at root level
155
+ srcRootClientId: '',
156
+ srcClientIds: [ clientId ],
157
+ type: 'block',
158
+ } );
159
+ selectBlock( clientId );
160
+ setDraggedBlockIcon( undefined );
161
+ }
162
+ onBlockDragEnd();
163
+ stopDraggingBlocks();
164
+ };
165
+
166
+ const onChipLayout = ( { nativeEvent: { layout } } ) => {
167
+ if ( layout.width > 0 ) {
168
+ chip.width.value = layout.width;
169
+ }
170
+ if ( layout.height > 0 ) {
171
+ chip.height.value = layout.height;
172
+ }
173
+ };
174
+
175
+ const startDragging = ( { x, y, id } ) => {
176
+ 'worklet';
177
+ const dragPosition = { x, y };
178
+ chip.x.value = dragPosition.x;
179
+ chip.y.value = dragPosition.y;
180
+ currentYPosition.value = dragPosition.y;
181
+
182
+ isDragging.value = true;
183
+
184
+ runOnJS( onStartDragging )( { clientId: id, position: dragPosition } );
185
+ };
186
+
187
+ const updateDragging = ( { x, y } ) => {
188
+ 'worklet';
189
+ const dragPosition = { x, y };
190
+ chip.x.value = dragPosition.x;
191
+ chip.y.value = dragPosition.y;
192
+ currentYPosition.value = dragPosition.y;
193
+
194
+ runOnJS( onBlockDragOver )( { x, y: y + scroll.offsetY.value } );
195
+
196
+ // Update scrolling velocity
197
+ scrollOnDragOver( dragPosition.y );
198
+ };
199
+
200
+ const stopDragging = ( { id } ) => {
201
+ 'worklet';
202
+ isDragging.value = false;
203
+
204
+ stopScrolling();
205
+ runOnJS( onStopDragging )( { clientId: id } );
206
+ };
207
+
208
+ const chipDynamicStyles = useAnimatedStyle( () => {
209
+ const chipOffset = chip.width.value / 2;
210
+ const translateX = ! isRTL
211
+ ? chip.x.value - chipOffset
212
+ : -( contentWidth - ( chip.x.value + chipOffset ) );
213
+
214
+ return {
215
+ transform: [
216
+ {
217
+ translateX,
218
+ },
219
+ {
220
+ translateY:
221
+ chip.y.value -
222
+ chip.height.value -
223
+ CHIP_OFFSET_TO_TOUCH_POSITION,
224
+ },
225
+ ],
226
+ };
227
+ } );
228
+ const chipStyles = [
229
+ chipDynamicStyles,
230
+ styles[ 'draggable-chip__wrapper' ],
231
+ ];
232
+
233
+ const exitingAnimation = ( { currentHeight, currentWidth } ) => {
234
+ 'worklet';
235
+ const translateX = ! isRTL ? 0 : currentWidth * -1;
236
+ const duration = 150;
237
+ const animations = {
238
+ transform: [
239
+ {
240
+ translateY: withTiming( currentHeight, {
241
+ duration,
242
+ } ),
243
+ },
244
+ {
245
+ translateX: withTiming( translateX, {
246
+ duration,
247
+ } ),
248
+ },
249
+ { scale: withTiming( 0, { duration } ) },
250
+ ],
251
+ };
252
+ const initialValues = {
253
+ transform: [ { translateY: 0 }, { translateX }, { scale: 1 } ],
254
+ };
255
+ return {
256
+ initialValues,
257
+ animations,
258
+ };
259
+ };
260
+
261
+ return (
262
+ <>
263
+ <DroppingInsertionPoint
264
+ scroll={ scroll }
265
+ currentYPosition={ currentYPosition }
266
+ isDragging={ isDragging }
267
+ targetBlockIndex={ targetBlockIndex }
268
+ />
269
+ <Draggable
270
+ onDragStart={ startDragging }
271
+ onDragOver={ updateDragging }
272
+ onDragEnd={ stopDragging }
273
+ testID="block-draggable-wrapper"
274
+ >
275
+ { children( { onScroll: scrollHandler } ) }
276
+ </Draggable>
277
+ <Animated.View
278
+ onLayout={ onChipLayout }
279
+ style={ chipStyles }
280
+ pointerEvents="none"
281
+ >
282
+ { draggedBlockIcon && (
283
+ <Animated.View
284
+ entering={ ZoomInEasyDown.duration( 200 ) }
285
+ exiting={ exitingAnimation }
286
+ >
287
+ <DraggableChip icon={ draggedBlockIcon } />
288
+ </Animated.View>
289
+ ) }
290
+ </Animated.View>
291
+ </>
292
+ );
293
+ };
294
+
295
+ /**
296
+ * Block draggable component
297
+ *
298
+ * This component serves for animating the block when it is being dragged.
299
+ * Hence, it should be wrapped around the rendering of a block.
300
+ *
301
+ * @param {Object} props Component props.
302
+ * @param {JSX.Element} props.children Children to be rendered.
303
+ * @param {string} props.clientId Client id of the block.
304
+ * @param {string} [props.draggingClientId] Client id to use for dragging. If not defined, the value from `clientId` will be used.
305
+ * @param {boolean} [props.enabled] Enables the draggable trigger.
306
+ * @param {string} [props.testID] Id used for querying the long-press gesture handler in tests.
307
+ *
308
+ * @return {Function} Render function which includes the parameter `isDraggable` to determine if the block can be dragged.
309
+ */
310
+ const BlockDraggable = ( {
311
+ clientId,
312
+ children,
313
+ draggingClientId,
314
+ enabled = true,
315
+ testID,
316
+ } ) => {
317
+ const wasBeingDragged = useRef( false );
318
+ const [ isEditingText, setIsEditingText ] = useState( false );
319
+ const [ isScreenReaderEnabled, setIsScreenReaderEnabled ] = useState(
320
+ false
321
+ );
322
+
323
+ const draggingAnimation = {
324
+ opacity: useSharedValue( 1 ),
325
+ };
326
+
327
+ const startDraggingBlock = () => {
328
+ draggingAnimation.opacity.value = withTiming(
329
+ 0.4,
330
+ BLOCK_OPACITY_ANIMATION_CONFIG
331
+ );
332
+ };
333
+
334
+ const stopDraggingBlock = () => {
335
+ draggingAnimation.opacity.value = withDelay(
336
+ BLOCK_OPACITY_ANIMATION_DELAY,
337
+ withTiming( 1, BLOCK_OPACITY_ANIMATION_CONFIG )
338
+ );
339
+ };
340
+
341
+ const { isDraggable, isBeingDragged, isBlockSelected } = useSelect(
342
+ ( _select ) => {
343
+ const {
344
+ getBlockRootClientId,
345
+ getTemplateLock,
346
+ isBlockBeingDragged,
347
+ getSelectedBlockClientId,
348
+ } = _select( blockEditorStore );
349
+ const rootClientId = getBlockRootClientId( clientId );
350
+ const templateLock = rootClientId
351
+ ? getTemplateLock( rootClientId )
352
+ : null;
353
+ const selectedBlockClientId = getSelectedBlockClientId();
354
+
355
+ return {
356
+ isBeingDragged: isBlockBeingDragged( clientId ),
357
+ isDraggable: 'all' !== templateLock,
358
+ isBlockSelected:
359
+ selectedBlockClientId && selectedBlockClientId === clientId,
360
+ };
361
+ },
362
+ [ clientId ]
363
+ );
364
+
365
+ useEffect( () => {
366
+ if ( isBeingDragged !== wasBeingDragged.current ) {
367
+ if ( isBeingDragged ) {
368
+ startDraggingBlock();
369
+ } else {
370
+ stopDraggingBlock();
371
+ }
372
+ }
373
+ wasBeingDragged.current = isBeingDragged;
374
+ }, [ isBeingDragged ] );
375
+
376
+ const onFocusChangeAztec = useCallback( ( { isFocused } ) => {
377
+ setIsEditingText( isFocused );
378
+ }, [] );
379
+
380
+ useEffect( () => {
381
+ let mounted = true;
382
+
383
+ const isAnyAztecInputFocused = RCTAztecView.InputState.isFocused();
384
+ if ( isAnyAztecInputFocused ) {
385
+ setIsEditingText( isAnyAztecInputFocused );
386
+ }
387
+
388
+ RCTAztecView.InputState.addFocusChangeListener( onFocusChangeAztec );
389
+
390
+ const screenReaderChangedListener = AccessibilityInfo.addEventListener(
391
+ 'screenReaderChanged',
392
+ setIsScreenReaderEnabled
393
+ );
394
+ AccessibilityInfo.isScreenReaderEnabled().then(
395
+ ( screenReaderEnabled ) => {
396
+ if ( mounted ) {
397
+ setIsScreenReaderEnabled( screenReaderEnabled );
398
+ }
399
+ }
400
+ );
401
+
402
+ return () => {
403
+ mounted = false;
404
+
405
+ RCTAztecView.InputState.removeFocusChangeListener(
406
+ onFocusChangeAztec
407
+ );
408
+
409
+ screenReaderChangedListener.remove();
410
+ };
411
+ }, [] );
412
+
413
+ const onLongPressDraggable = useCallback( () => {
414
+ // Ensure that no text input is focused when starting the dragging gesture in order to prevent conflicts with text editing.
415
+ RCTAztecView.InputState.blurCurrentFocusedElement();
416
+ }, [] );
417
+
418
+ const animatedWrapperStyles = useAnimatedStyle( () => {
419
+ return {
420
+ opacity: draggingAnimation.opacity.value,
421
+ };
422
+ } );
423
+ const wrapperStyles = [
424
+ animatedWrapperStyles,
425
+ styles[ 'draggable-wrapper__container' ],
426
+ ];
427
+
428
+ const canDragBlock =
429
+ enabled &&
430
+ ! isScreenReaderEnabled &&
431
+ ( ! isBlockSelected || ! isEditingText );
432
+
433
+ if ( ! isDraggable ) {
434
+ return children( { isDraggable: false } );
435
+ }
436
+
437
+ return (
438
+ <DraggableTrigger
439
+ id={ draggingClientId || clientId }
440
+ enabled={ enabled && canDragBlock }
441
+ minDuration={ Platform.select( {
442
+ // On iOS, using a lower min duration than the default
443
+ // value prevents the long-press gesture from being
444
+ // triggered in underneath elements. This is required to
445
+ // prevent enabling text editing when dragging is available.
446
+ ios: canDragBlock
447
+ ? DEFAULT_IOS_LONG_PRESS_MIN_DURATION
448
+ : DEFAULT_LONG_PRESS_MIN_DURATION,
449
+ android: DEFAULT_LONG_PRESS_MIN_DURATION,
450
+ } ) }
451
+ onLongPress={ onLongPressDraggable }
452
+ testID={ testID }
453
+ >
454
+ <Animated.View style={ wrapperStyles }>
455
+ { children( { isDraggable: true } ) }
456
+ </Animated.View>
457
+ </DraggableTrigger>
458
+ );
459
+ };
460
+
461
+ export { BlockDraggableWrapper };
462
+ export default BlockDraggable;
@@ -0,0 +1,19 @@
1
+ .draggable-wrapper__container {
2
+ flex: 1;
3
+ }
4
+
5
+ .draggable-chip__wrapper {
6
+ position: absolute;
7
+ z-index: 10;
8
+ }
9
+
10
+ .draggable-chip__container {
11
+ flex-direction: row;
12
+ padding: 16px;
13
+ background-color: $gray-0;
14
+ border-radius: 8px;
15
+ }
16
+
17
+ .draggable-chip__container--dark {
18
+ background-color: $app-background-dark-alt;
19
+ }
@@ -0,0 +1,73 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`BlockDraggable moves blocks: Initial order 1`] = `
4
+ "<!-- wp:paragraph -->
5
+ <p>This is a paragraph.</p>
6
+ <!-- /wp:paragraph -->
7
+
8
+ <!-- wp:image {\\"sizeSlug\\":\\"large\\"} -->
9
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
10
+ <!-- /wp:image -->
11
+
12
+ <!-- wp:spacer -->
13
+ <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
14
+ <!-- /wp:spacer -->
15
+
16
+ <!-- wp:gallery {\\"linkTo\\":\\"none\\"} -->
17
+ <figure class=\\"wp-block-gallery has-nested-images columns-default is-cropped\\"><!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
18
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
19
+ <!-- /wp:image -->
20
+
21
+ <!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
22
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
23
+ <!-- /wp:image --></figure>
24
+ <!-- /wp:gallery -->"
25
+ `;
26
+
27
+ exports[`BlockDraggable moves blocks: Paragraph block moved from first to second position 1`] = `
28
+ "<!-- wp:image {\\"sizeSlug\\":\\"large\\"} -->
29
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
30
+ <!-- /wp:image -->
31
+
32
+ <!-- wp:paragraph -->
33
+ <p>This is a paragraph.</p>
34
+ <!-- /wp:paragraph -->
35
+
36
+ <!-- wp:spacer -->
37
+ <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
38
+ <!-- /wp:spacer -->
39
+
40
+ <!-- wp:gallery {\\"linkTo\\":\\"none\\"} -->
41
+ <figure class=\\"wp-block-gallery has-nested-images columns-default is-cropped\\"><!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
42
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
43
+ <!-- /wp:image -->
44
+
45
+ <!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
46
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
47
+ <!-- /wp:image --></figure>
48
+ <!-- /wp:gallery -->"
49
+ `;
50
+
51
+ exports[`BlockDraggable moves blocks: Spacer block moved from third to first position 1`] = `
52
+ "<!-- wp:spacer -->
53
+ <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
54
+ <!-- /wp:spacer -->
55
+
56
+ <!-- wp:image {\\"sizeSlug\\":\\"large\\"} -->
57
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
58
+ <!-- /wp:image -->
59
+
60
+ <!-- wp:paragraph -->
61
+ <p>This is a paragraph.</p>
62
+ <!-- /wp:paragraph -->
63
+
64
+ <!-- wp:gallery {\\"linkTo\\":\\"none\\"} -->
65
+ <figure class=\\"wp-block-gallery has-nested-images columns-default is-cropped\\"><!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
66
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
67
+ <!-- /wp:image -->
68
+
69
+ <!-- wp:image {\\"sizeSlug\\":\\"large\\",\\"linkDestination\\":\\"none\\"} -->
70
+ <figure class=\\"wp-block-image size-large\\"><img src=\\"https://cldup.com/cXyG__fTLN.jpg\\" alt=\\"\\"/></figure>
71
+ <!-- /wp:image --></figure>
72
+ <!-- /wp:gallery -->"
73
+ `;