@wordpress/block-editor 15.21.0 → 15.21.1

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 (407) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/build/components/block-compare/index.cjs +2 -2
  3. package/build/components/block-compare/index.cjs.map +2 -2
  4. package/build/components/block-patterns-list/index.cjs +1 -1
  5. package/build/components/block-patterns-list/index.cjs.map +2 -2
  6. package/build/components/block-switcher/block-transformations-menu.cjs +16 -15
  7. package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
  8. package/build/components/block-switcher/index.cjs +4 -4
  9. package/build/components/block-switcher/index.cjs.map +2 -2
  10. package/build/components/global-styles/advanced-panel.cjs +23 -15
  11. package/build/components/global-styles/advanced-panel.cjs.map +2 -2
  12. package/build/components/global-styles/background-panel.cjs +2 -2
  13. package/build/components/global-styles/background-panel.cjs.map +2 -2
  14. package/build/components/global-styles/border-panel.cjs +2 -0
  15. package/build/components/global-styles/border-panel.cjs.map +2 -2
  16. package/build/components/global-styles/dimensions-panel.cjs +1 -1
  17. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  18. package/build/components/inner-blocks/use-inner-block-template-sync.cjs +3 -1
  19. package/build/components/inner-blocks/use-inner-block-template-sync.cjs.map +2 -2
  20. package/build/components/inserter/hooks/use-patterns-state.cjs +1 -1
  21. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  22. package/build/components/inserter/index.cjs +179 -220
  23. package/build/components/inserter/index.cjs.map +3 -3
  24. package/build/components/inserter/search-results.cjs +1 -1
  25. package/build/components/inserter/search-results.cjs.map +2 -2
  26. package/build/components/list-view/block-select-button.cjs +10 -12
  27. package/build/components/list-view/block-select-button.cjs.map +2 -2
  28. package/build/components/list-view/block.cjs +2 -1
  29. package/build/components/list-view/block.cjs.map +2 -2
  30. package/build/components/provider/use-block-sync.cjs +11 -2
  31. package/build/components/provider/use-block-sync.cjs.map +2 -2
  32. package/build/components/rich-text/event-listeners/before-input-rules.cjs +4 -4
  33. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  34. package/build/components/rich-text/event-listeners/delete.cjs +4 -4
  35. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  36. package/build/components/rich-text/event-listeners/enter.cjs +7 -2
  37. package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
  38. package/build/components/rich-text/event-listeners/input-events.cjs +4 -4
  39. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  40. package/build/components/rich-text/event-listeners/input-rules.cjs +17 -4
  41. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  42. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +4 -4
  43. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  44. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +4 -4
  45. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  46. package/build/components/rich-text/event-listeners/shortcuts.cjs +4 -4
  47. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  48. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +4 -4
  49. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  50. package/build/components/rich-text/index.cjs +1 -23
  51. package/build/components/rich-text/index.cjs.map +2 -2
  52. package/build/components/use-block-commands/index.cjs +5 -5
  53. package/build/components/use-block-commands/index.cjs.map +2 -2
  54. package/build/hooks/anchor.cjs +11 -15
  55. package/build/hooks/anchor.cjs.map +2 -2
  56. package/build/hooks/border.cjs +0 -3
  57. package/build/hooks/border.cjs.map +2 -2
  58. package/build/hooks/color.cjs +1 -4
  59. package/build/hooks/color.cjs.map +2 -2
  60. package/build/hooks/dimensions.cjs +0 -3
  61. package/build/hooks/dimensions.cjs.map +2 -2
  62. package/build/hooks/fit-text.cjs +11 -0
  63. package/build/hooks/fit-text.cjs.map +2 -2
  64. package/build/hooks/position.cjs +19 -22
  65. package/build/hooks/position.cjs.map +2 -2
  66. package/build/hooks/supports.cjs +0 -7
  67. package/build/hooks/supports.cjs.map +2 -2
  68. package/build/store/actions.cjs +7 -3
  69. package/build/store/actions.cjs.map +2 -2
  70. package/build/store/private-actions.cjs +1 -2
  71. package/build/store/private-actions.cjs.map +2 -2
  72. package/build/store/private-selectors.cjs +23 -0
  73. package/build/store/private-selectors.cjs.map +2 -2
  74. package/build/store/reducer.cjs +14 -6
  75. package/build/store/reducer.cjs.map +2 -2
  76. package/build/store/selectors.cjs +60 -41
  77. package/build/store/selectors.cjs.map +2 -2
  78. package/build-module/components/block-compare/index.mjs +1 -1
  79. package/build-module/components/block-compare/index.mjs.map +2 -2
  80. package/build-module/components/block-patterns-list/index.mjs +1 -1
  81. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  82. package/build-module/components/block-switcher/block-transformations-menu.mjs +16 -15
  83. package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
  84. package/build-module/components/block-switcher/index.mjs +4 -4
  85. package/build-module/components/block-switcher/index.mjs.map +2 -2
  86. package/build-module/components/global-styles/advanced-panel.mjs +23 -15
  87. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  88. package/build-module/components/global-styles/background-panel.mjs +3 -3
  89. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  90. package/build-module/components/global-styles/border-panel.mjs +2 -0
  91. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  92. package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
  93. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  94. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs +3 -1
  95. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs.map +2 -2
  96. package/build-module/components/inserter/hooks/use-patterns-state.mjs +1 -1
  97. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  98. package/build-module/components/inserter/index.mjs +185 -222
  99. package/build-module/components/inserter/index.mjs.map +3 -3
  100. package/build-module/components/inserter/search-results.mjs +1 -1
  101. package/build-module/components/inserter/search-results.mjs.map +2 -2
  102. package/build-module/components/list-view/block-select-button.mjs +10 -12
  103. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  104. package/build-module/components/list-view/block.mjs +2 -1
  105. package/build-module/components/list-view/block.mjs.map +2 -2
  106. package/build-module/components/provider/use-block-sync.mjs +11 -2
  107. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  108. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +4 -4
  109. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  110. package/build-module/components/rich-text/event-listeners/delete.mjs +4 -4
  111. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  112. package/build-module/components/rich-text/event-listeners/enter.mjs +7 -2
  113. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  114. package/build-module/components/rich-text/event-listeners/input-events.mjs +4 -4
  115. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  116. package/build-module/components/rich-text/event-listeners/input-rules.mjs +17 -4
  117. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  118. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +4 -4
  119. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  120. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +4 -4
  121. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  122. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +4 -4
  123. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  124. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +4 -4
  125. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  126. package/build-module/components/rich-text/index.mjs +1 -23
  127. package/build-module/components/rich-text/index.mjs.map +2 -2
  128. package/build-module/components/use-block-commands/index.mjs +5 -5
  129. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  130. package/build-module/hooks/anchor.mjs +11 -15
  131. package/build-module/hooks/anchor.mjs.map +2 -2
  132. package/build-module/hooks/border.mjs +1 -4
  133. package/build-module/hooks/border.mjs.map +2 -2
  134. package/build-module/hooks/color.mjs +2 -5
  135. package/build-module/hooks/color.mjs.map +2 -2
  136. package/build-module/hooks/dimensions.mjs +1 -4
  137. package/build-module/hooks/dimensions.mjs.map +2 -2
  138. package/build-module/hooks/fit-text.mjs +11 -0
  139. package/build-module/hooks/fit-text.mjs.map +2 -2
  140. package/build-module/hooks/position.mjs +20 -23
  141. package/build-module/hooks/position.mjs.map +2 -2
  142. package/build-module/hooks/supports.mjs +0 -7
  143. package/build-module/hooks/supports.mjs.map +2 -2
  144. package/build-module/store/actions.mjs +7 -3
  145. package/build-module/store/actions.mjs.map +2 -2
  146. package/build-module/store/private-actions.mjs +1 -2
  147. package/build-module/store/private-actions.mjs.map +2 -2
  148. package/build-module/store/private-selectors.mjs +21 -0
  149. package/build-module/store/private-selectors.mjs.map +2 -2
  150. package/build-module/store/reducer.mjs +14 -6
  151. package/build-module/store/reducer.mjs.map +2 -2
  152. package/build-module/store/selectors.mjs +62 -42
  153. package/build-module/store/selectors.mjs.map +2 -2
  154. package/build-style/content-rtl.css +12 -0
  155. package/build-style/content.css +12 -0
  156. package/build-style/style-rtl.css +26 -8
  157. package/build-style/style.css +26 -8
  158. package/package.json +49 -46
  159. package/src/components/block-breadcrumb/README.md +2 -2
  160. package/src/components/block-compare/README.md +6 -6
  161. package/src/components/block-compare/index.js +1 -3
  162. package/src/components/block-patterns-list/index.js +1 -1
  163. package/src/components/block-preview/README.md +1 -1
  164. package/src/components/block-switcher/block-transformations-menu.js +16 -18
  165. package/src/components/block-switcher/index.js +4 -4
  166. package/src/components/block-types-list/README.md +0 -19
  167. package/src/components/global-styles/advanced-panel.js +5 -1
  168. package/src/components/global-styles/background-panel.js +3 -3
  169. package/src/components/global-styles/border-panel.js +2 -0
  170. package/src/components/global-styles/dimensions-panel.js +12 -13
  171. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -1
  172. package/src/components/inserter/hooks/use-patterns-state.js +1 -1
  173. package/src/components/inserter/index.js +257 -288
  174. package/src/components/inserter/search-results.js +1 -3
  175. package/src/components/justify-content-control/README.md +1 -1
  176. package/src/components/list-view/block-select-button.js +9 -13
  177. package/src/components/list-view/block.js +1 -0
  178. package/src/components/media-placeholder/README.md +1 -29
  179. package/src/components/media-upload/README.md +0 -19
  180. package/src/components/provider/test/use-block-sync.js +40 -0
  181. package/src/components/provider/use-block-sync.js +12 -2
  182. package/src/components/rich-text/event-listeners/before-input-rules.js +5 -4
  183. package/src/components/rich-text/event-listeners/delete.js +9 -4
  184. package/src/components/rich-text/event-listeners/enter.js +9 -2
  185. package/src/components/rich-text/event-listeners/input-events.js +13 -4
  186. package/src/components/rich-text/event-listeners/input-rules.js +20 -4
  187. package/src/components/rich-text/event-listeners/insert-replacement-text.js +9 -4
  188. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +9 -4
  189. package/src/components/rich-text/event-listeners/shortcuts.js +13 -4
  190. package/src/components/rich-text/event-listeners/undo-automatic-change.js +5 -4
  191. package/src/components/rich-text/index.js +1 -33
  192. package/src/components/unit-control/README.md +1 -1
  193. package/src/components/url-popover/README.md +1 -1
  194. package/src/components/use-block-commands/index.js +5 -5
  195. package/src/hooks/anchor.js +9 -17
  196. package/src/hooks/border.js +1 -5
  197. package/src/hooks/color.js +1 -6
  198. package/src/hooks/dimensions.js +1 -5
  199. package/src/hooks/fit-text.js +16 -0
  200. package/src/hooks/position.js +23 -27
  201. package/src/hooks/supports.js +0 -9
  202. package/src/store/actions.js +13 -3
  203. package/src/store/private-actions.js +1 -4
  204. package/src/store/private-selectors.js +42 -0
  205. package/src/store/reducer.js +19 -7
  206. package/src/store/selectors.js +91 -53
  207. package/src/store/test/actions.js +21 -0
  208. package/src/store/test/reducer.js +46 -0
  209. package/src/store/test/selectors.js +77 -0
  210. package/build/components/media-upload-progress/constants.cjs +0 -46
  211. package/build/components/media-upload-progress/constants.cjs.map +0 -7
  212. package/build/components/rich-text/native/format-edit.cjs +0 -60
  213. package/build/components/rich-text/native/format-edit.cjs.map +0 -7
  214. package/build/components/rich-text/native/index.cjs +0 -28
  215. package/build/components/rich-text/native/index.cjs.map +0 -7
  216. package/build/components/rich-text/native/use-format-types.cjs +0 -139
  217. package/build/components/rich-text/native/use-format-types.cjs.map +0 -7
  218. package/build-module/components/media-upload-progress/constants.mjs +0 -16
  219. package/build-module/components/media-upload-progress/constants.mjs.map +0 -7
  220. package/build-module/components/rich-text/native/format-edit.mjs +0 -39
  221. package/build-module/components/rich-text/native/format-edit.mjs.map +0 -7
  222. package/build-module/components/rich-text/native/index.mjs +0 -7
  223. package/build-module/components/rich-text/native/index.mjs.map +0 -7
  224. package/build-module/components/rich-text/native/use-format-types.mjs +0 -114
  225. package/build-module/components/rich-text/native/use-format-types.mjs.map +0 -7
  226. package/src/components/audio-player/audio-url-parser.native.js +0 -20
  227. package/src/components/audio-player/index.native.js +0 -225
  228. package/src/components/audio-player/styles.native.scss +0 -114
  229. package/src/components/audio-player/test/audio-url-parser.native.js +0 -53
  230. package/src/components/block-alignment-control/test/index.native.js +0 -37
  231. package/src/components/block-alignment-control/ui.native.js +0 -86
  232. package/src/components/block-caption/README.md +0 -104
  233. package/src/components/block-caption/index.native.js +0 -89
  234. package/src/components/block-caption/styles.native.scss +0 -7
  235. package/src/components/block-controls/slot.native.js +0 -33
  236. package/src/components/block-draggable/draggable-chip.native.js +0 -49
  237. package/src/components/block-draggable/dropping-insertion-point.native.js +0 -181
  238. package/src/components/block-draggable/dropping-insertion-point.native.scss +0 -8
  239. package/src/components/block-draggable/index.native.js +0 -467
  240. package/src/components/block-draggable/style.native.scss +0 -19
  241. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +0 -73
  242. package/src/components/block-draggable/test/helpers.native.js +0 -182
  243. package/src/components/block-draggable/test/index.native.js +0 -419
  244. package/src/components/block-draggable/use-scroll-when-dragging.native.js +0 -135
  245. package/src/components/block-edit/edit.native.js +0 -49
  246. package/src/components/block-edit/test/edit.native.js +0 -65
  247. package/src/components/block-heading-level-dropdown/index.native.js +0 -68
  248. package/src/components/block-icon/index.native.js +0 -47
  249. package/src/components/block-icon/style.native.scss +0 -7
  250. package/src/components/block-list/block-crash-boundary.native.js +0 -43
  251. package/src/components/block-list/block-crash-warning.native.js +0 -21
  252. package/src/components/block-list/block-invalid-warning.native.js +0 -70
  253. package/src/components/block-list/block-list-context.native.js +0 -172
  254. package/src/components/block-list/block-list-item-cell.native.js +0 -62
  255. package/src/components/block-list/block-list-item.native.js +0 -209
  256. package/src/components/block-list/block-list-item.native.scss +0 -16
  257. package/src/components/block-list/block-outline.native.js +0 -77
  258. package/src/components/block-list/block-selection-button.native.js +0 -100
  259. package/src/components/block-list/block-selection-button.native.scss +0 -34
  260. package/src/components/block-list/block.native.js +0 -716
  261. package/src/components/block-list/block.native.scss +0 -62
  262. package/src/components/block-list/grid-item.native.js +0 -58
  263. package/src/components/block-list/index.native.js +0 -437
  264. package/src/components/block-list/insertion-point.native.js +0 -36
  265. package/src/components/block-list/style.native.scss +0 -117
  266. package/src/components/block-list/test/block-invalid-warning.native.js +0 -62
  267. package/src/components/block-list/test/block-list-context.native.js +0 -243
  268. package/src/components/block-list/test/block-outline.native.js +0 -255
  269. package/src/components/block-list/test/fixtures/block-list-context.native.js +0 -79
  270. package/src/components/block-list/test/index.native.js +0 -205
  271. package/src/components/block-list/use-block-props/index.native.js +0 -10
  272. package/src/components/block-list/use-scroll-upon-insertion.native.js +0 -52
  273. package/src/components/block-list-appender/index.native.js +0 -70
  274. package/src/components/block-list-appender/style.native.scss +0 -8
  275. package/src/components/block-media-update-progress/README.md +0 -100
  276. package/src/components/block-media-update-progress/index.native.js +0 -299
  277. package/src/components/block-media-update-progress/styles.native.scss +0 -9
  278. package/src/components/block-media-update-progress/test/index.native.js +0 -543
  279. package/src/components/block-mover/index.native.js +0 -193
  280. package/src/components/block-mover/mover-description.native.js +0 -155
  281. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -218
  282. package/src/components/block-mover/test/index.native.js +0 -186
  283. package/src/components/block-settings/button.native.js +0 -41
  284. package/src/components/block-settings/container.native.js +0 -91
  285. package/src/components/block-settings/container.native.scss +0 -4
  286. package/src/components/block-settings/index.native.js +0 -5
  287. package/src/components/block-styles/index.native.js +0 -94
  288. package/src/components/block-styles/preview.native.js +0 -109
  289. package/src/components/block-styles/style.native.scss +0 -64
  290. package/src/components/block-switcher/block-transformations-menu.native.js +0 -91
  291. package/src/components/block-toolbar/block-toolbar-menu.native.js +0 -477
  292. package/src/components/block-toolbar/index.native.js +0 -126
  293. package/src/components/block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap +0 -125
  294. package/src/components/block-toolbar/test/block-toolbar-menu.native.js +0 -405
  295. package/src/components/block-toolbar/test/index.native.js +0 -36
  296. package/src/components/block-types-list/index.native.js +0 -175
  297. package/src/components/block-types-list/style.native.scss +0 -25
  298. package/src/components/block-variation-picker/index.native.js +0 -107
  299. package/src/components/block-variation-picker/style.native.scss +0 -32
  300. package/src/components/button-block-appender/index.native.js +0 -92
  301. package/src/components/button-block-appender/styles.native.scss +0 -43
  302. package/src/components/caption/README.md +0 -44
  303. package/src/components/caption/index.native.js +0 -61
  304. package/src/components/colors-gradients/panel-color-gradient-settings.native.js +0 -59
  305. package/src/components/contrast-checker/index.native.js +0 -113
  306. package/src/components/contrast-checker/style.native.scss +0 -26
  307. package/src/components/convert-to-group-buttons/index.native.js +0 -79
  308. package/src/components/default-block-appender/index.native.js +0 -113
  309. package/src/components/default-block-appender/style.native.scss +0 -18
  310. package/src/components/floating-toolbar/floatingToolbar.android.scss +0 -4
  311. package/src/components/floating-toolbar/floatingToolbar.ios.scss +0 -3
  312. package/src/components/floating-toolbar/index.native.js +0 -141
  313. package/src/components/floating-toolbar/styles.native.scss +0 -43
  314. package/src/components/font-sizes/index.native.js +0 -7
  315. package/src/components/global-styles/color-panel.native.js +0 -207
  316. package/src/components/global-styles/test/use-global-styles-context.native.js +0 -435
  317. package/src/components/global-styles/use-global-styles-context.native.js +0 -592
  318. package/src/components/gradients/index.native.js +0 -2
  319. package/src/components/image-link-destinations/index.native.js +0 -152
  320. package/src/components/image-link-destinations/style.native.scss +0 -16
  321. package/src/components/index.native.js +0 -108
  322. package/src/components/inner-blocks/constants.native.js +0 -5
  323. package/src/components/inner-blocks/index.native.js +0 -221
  324. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -124
  325. package/src/components/inserter/block-types-tab.native.js +0 -76
  326. package/src/components/inserter/hooks/use-block-type-impressions.native.js +0 -47
  327. package/src/components/inserter/hooks/use-clipboard-block.native.js +0 -40
  328. package/src/components/inserter/index.native.js +0 -424
  329. package/src/components/inserter/menu.native.js +0 -237
  330. package/src/components/inserter/no-results.native.js +0 -49
  331. package/src/components/inserter/reusable-blocks-tab.native.js +0 -45
  332. package/src/components/inserter/search-results.native.js +0 -67
  333. package/src/components/inserter/style.native.scss +0 -83
  334. package/src/components/inserter/tabs.native.js +0 -152
  335. package/src/components/inserter/test/__snapshots__/index.native.js.snap +0 -117
  336. package/src/components/inserter/test/fixtures/index.native.js +0 -12
  337. package/src/components/inserter/test/index.native.js +0 -273
  338. package/src/components/inserter/test/reusable-blocks-tab.native.js +0 -62
  339. package/src/components/inserter/test/utils.native.js +0 -37
  340. package/src/components/inserter/utils.native.js +0 -46
  341. package/src/components/inserter-button/index.native.js +0 -108
  342. package/src/components/inserter-button/style.native.scss +0 -72
  343. package/src/components/inspector-controls/fill.native.js +0 -62
  344. package/src/components/inspector-controls/slot.native.js +0 -35
  345. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -31
  346. package/src/components/line-height-control/index.native.js +0 -28
  347. package/src/components/media-placeholder/index.native.js +0 -258
  348. package/src/components/media-placeholder/styles.native.scss +0 -108
  349. package/src/components/media-replace-flow/index.native.js +0 -12
  350. package/src/components/media-upload/constants.native.js +0 -14
  351. package/src/components/media-upload/index.native.js +0 -356
  352. package/src/components/media-upload/style.native.scss +0 -4
  353. package/src/components/media-upload/test/index.native.js +0 -172
  354. package/src/components/media-upload-progress/README.md +0 -100
  355. package/src/components/media-upload-progress/constants.js +0 -6
  356. package/src/components/media-upload-progress/index.native.js +0 -233
  357. package/src/components/media-upload-progress/styles.native.scss +0 -15
  358. package/src/components/media-upload-progress/test/index.native.js +0 -220
  359. package/src/components/plain-text/index.native.js +0 -164
  360. package/src/components/plain-text/style.native.scss +0 -10
  361. package/src/components/provider/index.native.js +0 -32
  362. package/src/components/rich-text/embed-handler-picker.native.js +0 -65
  363. package/src/components/rich-text/file-paste-handler.native.js +0 -3
  364. package/src/components/rich-text/format-toolbar/index.native.js +0 -21
  365. package/src/components/rich-text/format-toolbar-container.native.js +0 -16
  366. package/src/components/rich-text/index.native.js +0 -701
  367. package/src/components/rich-text/input-event.native.js +0 -10
  368. package/src/components/rich-text/native/format-edit.js +0 -44
  369. package/src/components/rich-text/native/get-format-colors.native.js +0 -47
  370. package/src/components/rich-text/native/index.js +0 -1
  371. package/src/components/rich-text/native/index.native.js +0 -1389
  372. package/src/components/rich-text/native/style.native.scss +0 -28
  373. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +0 -79
  374. package/src/components/rich-text/native/test/index.native.js +0 -345
  375. package/src/components/rich-text/native/test/performance/rich-text.native.js +0 -44
  376. package/src/components/rich-text/native/toolbar-button-with-options.native.js +0 -61
  377. package/src/components/rich-text/native/use-format-types.js +0 -146
  378. package/src/components/rich-text/remove-browser-shortcuts.native.js +0 -1
  379. package/src/components/rich-text/shortcut.native.js +0 -10
  380. package/src/components/ungroup-button/README.md +0 -23
  381. package/src/components/ungroup-button/index.native.js +0 -77
  382. package/src/components/unsupported-block-details/index.native.js +0 -187
  383. package/src/components/unsupported-block-details/style.native.scss +0 -56
  384. package/src/components/url-input/index.native.js +0 -33
  385. package/src/components/use-block-drop-zone/index.native.js +0 -207
  386. package/src/components/use-on-block-drop/index.native.js +0 -115
  387. package/src/components/use-unsupported-block-editor/index.native.js +0 -59
  388. package/src/components/video-player/gridicon-play.native.js +0 -13
  389. package/src/components/video-player/index.native.js +0 -133
  390. package/src/components/video-player/styles.native.scss +0 -29
  391. package/src/components/warning/index.native.js +0 -64
  392. package/src/components/warning/style.native.scss +0 -47
  393. package/src/hooks/align.native.js +0 -49
  394. package/src/hooks/custom-class-name.native.js +0 -70
  395. package/src/hooks/index.native.js +0 -36
  396. package/src/hooks/layout.native.js +0 -23
  397. package/src/hooks/test/__snapshots__/align.native.js.snap +0 -73
  398. package/src/hooks/test/__snapshots__/anchor.native.js.snap +0 -7
  399. package/src/hooks/test/align.native.js +0 -134
  400. package/src/hooks/test/anchor.native.js +0 -32
  401. package/src/hooks/test/use-editor-wrapper-styles.native.js +0 -282
  402. package/src/hooks/typography.native.js +0 -60
  403. package/src/hooks/use-editor-wrapper-styles.native.js +0 -250
  404. package/src/hooks/use-editor-wrapper-styles.native.scss +0 -12
  405. package/src/index.native.js +0 -6
  406. package/src/private-apis.native.js +0 -21
  407. package/src/store/defaults.native.js +0 -23
@@ -1,10 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Component } from '@wordpress/element';
5
-
6
- export class RichTextShortcut extends Component {
7
- render() {
8
- return null;
9
- }
10
- }
@@ -1,23 +0,0 @@
1
- # Ungroup Button
2
-
3
- The `UngroupButton` components adds an icon on the BlockControls toolbar when a group block is selected. Then, it's possible to ungroup the inner blocks. After click on the icon, it removes the group block holding the InnerBlocks components which are moved one level up in the hierarchy.
4
-
5
- This only happens in the mobile WordPress apps.
6
-
7
- ![Ungroup button icon](https://user-images.githubusercontent.com/21242757/65593577-11006000-df91-11e9-8460-1179e9ef46d2.png)
8
-
9
- ## Development guidelines
10
-
11
- ### Usage
12
-
13
- Display the `UngroupButton` icon.
14
-
15
- ```jsx
16
- import { UngroupButton } from '@wordpress/block-editor';
17
-
18
- const MyUngroupButton = () => <UngroupButton />;
19
- ```
20
-
21
- ## Related components
22
-
23
- Block Editor components are components that can be used to compose the UI of your block editor. Thus, they can only be used under a [`BlockEditorProvider`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/provider/README.md) in the components tree.
@@ -1,77 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { store as blocksStore } from '@wordpress/blocks';
5
- import { ToolbarGroup, ToolbarButton } from '@wordpress/components';
6
- import { __ } from '@wordpress/i18n';
7
- import { withSelect, withDispatch } from '@wordpress/data';
8
- import { compose } from '@wordpress/compose';
9
- import { ungroup } from '@wordpress/icons';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { store as blockEditorStore } from '../../store';
15
-
16
- const noop = () => {};
17
- const EMPTY_BLOCKS_LIST = [];
18
-
19
- export function UngroupButton( { onConvertFromGroup, isUngroupable = false } ) {
20
- if ( ! isUngroupable ) {
21
- return null;
22
- }
23
- return (
24
- <ToolbarGroup>
25
- <ToolbarButton
26
- title={ __( 'Ungroup' ) }
27
- icon={ ungroup }
28
- onClick={ onConvertFromGroup }
29
- />
30
- </ToolbarGroup>
31
- );
32
- }
33
-
34
- export default compose( [
35
- withSelect( ( select ) => {
36
- const { getSelectedBlockClientId, getBlock } =
37
- select( blockEditorStore );
38
-
39
- const { getGroupingBlockName } = select( blocksStore );
40
-
41
- const selectedId = getSelectedBlockClientId();
42
- const selectedBlock = getBlock( selectedId );
43
-
44
- const groupingBlockName = getGroupingBlockName();
45
-
46
- const isUngroupable =
47
- selectedBlock &&
48
- selectedBlock.innerBlocks &&
49
- selectedBlock.innerBlocks.length > 0 &&
50
- selectedBlock.name === groupingBlockName;
51
-
52
- const innerBlocks = isUngroupable
53
- ? selectedBlock.innerBlocks
54
- : EMPTY_BLOCKS_LIST;
55
-
56
- return {
57
- isUngroupable,
58
- clientId: selectedId,
59
- innerBlocks,
60
- };
61
- } ),
62
- withDispatch( ( dispatch, { clientId, innerBlocks, onToggle = noop } ) => {
63
- const { replaceBlocks } = dispatch( blockEditorStore );
64
-
65
- return {
66
- onConvertFromGroup() {
67
- if ( ! innerBlocks.length ) {
68
- return;
69
- }
70
-
71
- replaceBlocks( clientId, innerBlocks );
72
-
73
- onToggle();
74
- },
75
- };
76
- } ),
77
- ] )( UngroupButton );
@@ -1,187 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { View, Text } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import {
10
- BottomSheet,
11
- Icon as WCIcon,
12
- TextControl,
13
- } from '@wordpress/components';
14
- import {
15
- requestUnsupportedBlockFallback,
16
- sendActionButtonPressedAction,
17
- actionButtons,
18
- } from '@wordpress/react-native-bridge';
19
- import { help } from '@wordpress/icons';
20
- import { __ } from '@wordpress/i18n';
21
- import { usePreferredColorSchemeStyle } from '@wordpress/compose';
22
- import { getBlockType } from '@wordpress/blocks';
23
- import { useCallback, useState } from '@wordpress/element';
24
- import { applyFilters } from '@wordpress/hooks';
25
-
26
- /**
27
- * Internal dependencies
28
- */
29
- import styles from './style.scss';
30
- import useUnsupportedBlockEditor from '../use-unsupported-block-editor';
31
-
32
- const EMPTY_ARRAY = [];
33
-
34
- const UnsupportedBlockDetails = ( {
35
- clientId,
36
- showSheet,
37
- onCloseSheet,
38
- customBlockTitle = '',
39
- icon,
40
- title,
41
- description,
42
- actionButtonLabel,
43
- customActions = EMPTY_ARRAY,
44
- } ) => {
45
- const [ sendFallbackMessage, setSendFallbackMessage ] = useState( false );
46
- const [ sendButtonPressMessage, setSendButtonPressMessage ] =
47
- useState( false );
48
-
49
- const {
50
- blockName,
51
- blockContent,
52
- isUnsupportedBlockEditorSupported,
53
- canEnableUnsupportedBlockEditor,
54
- isEditableInUnsupportedBlockEditor,
55
- } = useUnsupportedBlockEditor( clientId );
56
-
57
- // Styles
58
- const textStyle = usePreferredColorSchemeStyle(
59
- styles[ 'unsupported-block-details__text' ],
60
- styles[ 'unsupported-block-details__text--dark' ]
61
- );
62
- const titleStyle = usePreferredColorSchemeStyle(
63
- styles[ 'unsupported-block-details__title' ],
64
- styles[ 'unsupported-block-details__title--dark' ]
65
- );
66
- const descriptionStyle = usePreferredColorSchemeStyle(
67
- styles[ 'unsupported-block-details__description' ],
68
- styles[ 'unsupported-block-details__description--dark' ]
69
- );
70
- const iconStyle = usePreferredColorSchemeStyle(
71
- styles[ 'unsupported-block-details__icon' ],
72
- styles[ 'unsupported-block-details__icon--dark' ]
73
- );
74
- const actionButtonStyle = usePreferredColorSchemeStyle(
75
- styles[ 'unsupported-block-details__action-button' ],
76
- styles[ 'unsupported-block-details__action-button--dark' ]
77
- );
78
-
79
- const blockTitle =
80
- customBlockTitle || getBlockType( blockName )?.title || blockName;
81
-
82
- const requestFallback = useCallback( () => {
83
- if (
84
- canEnableUnsupportedBlockEditor &&
85
- isUnsupportedBlockEditorSupported === false
86
- ) {
87
- onCloseSheet();
88
- setSendButtonPressMessage( true );
89
- } else {
90
- onCloseSheet();
91
- setSendFallbackMessage( true );
92
- }
93
- }, [
94
- canEnableUnsupportedBlockEditor,
95
- isUnsupportedBlockEditorSupported,
96
- onCloseSheet,
97
- ] );
98
-
99
- // The description can include extra notes via WP hooks.
100
- const descriptionWithNotes = applyFilters(
101
- 'native.unsupported_block_details_extra_note',
102
- description,
103
- blockName
104
- );
105
-
106
- const webEditorDefaultLabel = applyFilters(
107
- 'native.unsupported_block_details_web_editor_action',
108
- __( 'Edit using web editor' )
109
- );
110
-
111
- const canUseWebEditor =
112
- ( isUnsupportedBlockEditorSupported ||
113
- canEnableUnsupportedBlockEditor ) &&
114
- isEditableInUnsupportedBlockEditor;
115
- const actions = [
116
- ...[
117
- canUseWebEditor && {
118
- label: actionButtonLabel || webEditorDefaultLabel,
119
- onPress: requestFallback,
120
- },
121
- ],
122
- ...customActions,
123
- ].filter( Boolean );
124
-
125
- return (
126
- <BottomSheet
127
- isVisible={ showSheet }
128
- hideHeader
129
- onClose={ onCloseSheet }
130
- onModalHide={ () => {
131
- if ( sendFallbackMessage ) {
132
- // On iOS, onModalHide is called when the controller is still part of the hierarchy.
133
- // A small delay will ensure that the controller has already been removed.
134
- this.timeout = setTimeout( () => {
135
- // For the Classic block, the content is kept in the `content` attribute.
136
- requestUnsupportedBlockFallback(
137
- blockContent,
138
- clientId,
139
- blockName,
140
- blockTitle
141
- );
142
- }, 100 );
143
- setSendFallbackMessage( false );
144
- } else if ( sendButtonPressMessage ) {
145
- this.timeout = setTimeout( () => {
146
- sendActionButtonPressedAction(
147
- actionButtons.missingBlockAlertActionButton
148
- );
149
- }, 100 );
150
- setSendButtonPressMessage( false );
151
- }
152
- } }
153
- >
154
- <View style={ styles[ 'unsupported-block-details__container' ] }>
155
- <WCIcon
156
- icon={ icon || help }
157
- color={ iconStyle.color }
158
- size={ iconStyle.size }
159
- />
160
- <Text style={ [ textStyle, titleStyle ] }>{ title }</Text>
161
- { isEditableInUnsupportedBlockEditor &&
162
- descriptionWithNotes && (
163
- <Text style={ [ textStyle, descriptionStyle ] }>
164
- { descriptionWithNotes }
165
- </Text>
166
- ) }
167
- </View>
168
- { actions.map( ( { label, onPress }, index ) => (
169
- <TextControl
170
- key={ `${ label } - ${ index }` }
171
- label={ label }
172
- separatorType="topFullWidth"
173
- onPress={ onPress }
174
- labelStyle={ actionButtonStyle }
175
- />
176
- ) ) }
177
- <TextControl
178
- label={ __( 'Dismiss' ) }
179
- separatorType="topFullWidth"
180
- onPress={ onCloseSheet }
181
- labelStyle={ actionButtonStyle }
182
- />
183
- </BottomSheet>
184
- );
185
- };
186
-
187
- export default UnsupportedBlockDetails;
@@ -1,56 +0,0 @@
1
- .unsupported-block-details__container {
2
- flex-direction: column;
3
- align-items: center;
4
- justify-content: flex-end;
5
- }
6
-
7
- .unsupported-block-details__icon {
8
- size: 36;
9
- height: 36;
10
- padding-top: 8;
11
- padding-bottom: 8;
12
- color: $gray;
13
- }
14
-
15
- .unsupported-block-details__icon--dark {
16
- color: $gray-20;
17
- }
18
-
19
- .unsupported-block-details__text {
20
- text-align: center;
21
- color: $gray-dark;
22
- }
23
-
24
- .unsupported-block-details__text--dark {
25
- color: $white;
26
- }
27
-
28
- .unsupported-block-details__title {
29
- padding-top: 8;
30
- padding-bottom: 12;
31
- font-size: 20;
32
- font-weight: bold;
33
- color: $gray-dark;
34
- }
35
-
36
- .unsupported-block-details__title--dark {
37
- color: $white;
38
- }
39
-
40
- .unsupported-block-details__description {
41
- padding-bottom: 24;
42
- font-size: 16;
43
- color: $gray-darken-20;
44
- }
45
-
46
- .unsupported-block-details__description--dark {
47
- color: $gray-20;
48
- }
49
-
50
- .unsupported-block-details__action-button {
51
- color: $blue-50;
52
- }
53
-
54
- .unsupported-block-details__action-button--dark {
55
- color: $blue-30;
56
- }
@@ -1,33 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { TextInput } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { __ } from '@wordpress/i18n';
10
-
11
- export default function URLInput( {
12
- value = '',
13
- autoFocus = true,
14
- onChange,
15
- ...extraProps
16
- } ) {
17
- /* eslint-disable jsx-a11y/no-autofocus */
18
- return (
19
- <TextInput
20
- autoFocus={ autoFocus }
21
- editable
22
- selectTextOnFocus
23
- autoCapitalize="none"
24
- autoCorrect={ false }
25
- textContentType="URL"
26
- value={ value }
27
- onChangeText={ onChange }
28
- placeholder={ __( 'Paste URL' ) }
29
- { ...extraProps }
30
- />
31
- );
32
- /* eslint-enable jsx-a11y/no-autofocus */
33
- }
@@ -1,207 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import {
5
- runOnJS,
6
- useDerivedValue,
7
- useSharedValue,
8
- } from 'react-native-reanimated';
9
-
10
- /**
11
- * WordPress dependencies
12
- */
13
- import { useSelect } from '@wordpress/data';
14
- import { useCallback } from '@wordpress/element';
15
-
16
- /**
17
- * Internal dependencies
18
- */
19
- import { store as blockEditorStore } from '../../store';
20
- import { useBlockListContext } from '../block-list/block-list-context';
21
- import { getDistanceToNearestEdge } from '../../utils/math';
22
- import useOnBlockDrop from '../use-on-block-drop';
23
-
24
- const UPDATE_TARGET_BLOCK_INDEX_THRESHOLD = 20; // In pixels
25
-
26
- /** @typedef {import('../../utils/math').WPPoint} WPPoint */
27
-
28
- /**
29
- * The orientation of a block list.
30
- *
31
- * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation
32
- */
33
-
34
- /**
35
- * Given a list of blocks layouts finds the index that a block should be dropped at.
36
- *
37
- * @param {Object} blocksLayouts Blocks layouts object.
38
- * @param {WPPoint} position The position of the item being dragged.
39
- * @param {WPBlockListOrientation} orientation The orientation of a block list.
40
- * @param {boolean} isRTL Check if current locale is RTL.
41
- *
42
- * @return {number|undefined} The block index that's closest to the drag position.
43
- */
44
- export function getNearestBlockIndex(
45
- blocksLayouts,
46
- position,
47
- orientation,
48
- isRTL
49
- ) {
50
- const allowedEdges =
51
- orientation === 'horizontal'
52
- ? [ 'left', 'right' ]
53
- : [ 'top', 'bottom' ];
54
-
55
- const isRightToLeft = isRTL;
56
-
57
- let candidateIndex;
58
- let candidateDistance;
59
-
60
- // Only enabled for root level blocks.
61
- blocksLayouts.forEach( ( element, index ) => {
62
- const { x, y, width, height } = element;
63
- const rect = {
64
- x: element.x,
65
- y: element.y,
66
- top: y,
67
- right: x + width,
68
- bottom: y + height,
69
- left: x,
70
- width,
71
- height,
72
- };
73
- const [ distance, edge ] = getDistanceToNearestEdge(
74
- position,
75
- rect,
76
- allowedEdges
77
- );
78
-
79
- if ( candidateDistance === undefined || distance < candidateDistance ) {
80
- // If the user is dropping to the trailing edge of the block
81
- // add 1 to the index to represent dragging after.
82
- // Take RTL languages into account where the left edge is
83
- // the trailing edge.
84
- const isTrailingEdge =
85
- edge === 'bottom' ||
86
- ( ! isRightToLeft && edge === 'right' ) ||
87
- ( isRightToLeft && edge === 'left' );
88
- const offset = isTrailingEdge ? 1 : 0;
89
-
90
- // Update the currently known best candidate.
91
- candidateDistance = distance;
92
- candidateIndex = index + offset;
93
- }
94
- } );
95
- return candidateIndex;
96
- }
97
-
98
- /**
99
- * @typedef {Object} WPBlockDropZoneConfig
100
- * @property {string} rootClientId The root client id for the block list.
101
- */
102
-
103
- /**
104
- * A React hook that can be used to make a block list handle drag and drop.
105
- *
106
- * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.
107
- *
108
- * @return {Object} An object that contains `targetBlockIndex` and the event
109
- * handlers `onBlockDragOver`, `onBlockDragEnd` and `onBlockDrop`.
110
- */
111
- export default function useBlockDropZone( {
112
- // An undefined value represents a top-level block. Default to an empty
113
- // string for this so that `targetRootClientId` can be easily compared to
114
- // values returned by the `getRootBlockClientId` selector, which also uses
115
- // an empty string to represent top-level blocks.
116
- rootClientId: targetRootClientId = '',
117
- } = {} ) {
118
- const targetBlockIndex = useSharedValue( null );
119
- const dragPosition = {
120
- x: useSharedValue( 0 ),
121
- y: useSharedValue( 0 ),
122
- };
123
- const prevDragPosition = {
124
- x: useSharedValue( 0 ),
125
- y: useSharedValue( 0 ),
126
- };
127
-
128
- const { getBlockListSettings, getSettings } = useSelect( blockEditorStore );
129
- const { blocksLayouts, getBlockLayoutsOrderedByYCoord } =
130
- useBlockListContext();
131
-
132
- const getSortedBlocksLayouts = useCallback( () => {
133
- return getBlockLayoutsOrderedByYCoord( blocksLayouts.current );
134
- // We use the value of `blocksLayouts` as the dependency.
135
- }, [ blocksLayouts.current ] );
136
-
137
- const isRTL = getSettings().isRTL;
138
-
139
- const onBlockDrop = useOnBlockDrop();
140
-
141
- const updateTargetBlockIndex = useCallback(
142
- ( event ) => {
143
- const sortedBlockLayouts = getSortedBlocksLayouts();
144
-
145
- const targetIndex = getNearestBlockIndex(
146
- sortedBlockLayouts,
147
- { x: event.x, y: event.y },
148
- getBlockListSettings( targetRootClientId )?.orientation,
149
- isRTL
150
- );
151
- if ( targetIndex !== null ) {
152
- targetBlockIndex.value = targetIndex ?? 0;
153
- }
154
- },
155
- [
156
- getSortedBlocksLayouts,
157
- getBlockListSettings,
158
- targetRootClientId,
159
- isRTL,
160
- targetBlockIndex,
161
- ]
162
- );
163
-
164
- useDerivedValue( () => {
165
- const x = dragPosition.x.value;
166
- const y = dragPosition.y.value;
167
- const prevX = prevDragPosition.x.value;
168
- const prevY = prevDragPosition.y.value;
169
- // `updateTargetBlockIndex` performs expensive calculations, so we throttle
170
- // the call using a offset threshold based on the dragging position.
171
- if (
172
- Math.abs( x - prevX ) >= UPDATE_TARGET_BLOCK_INDEX_THRESHOLD ||
173
- Math.abs( y - prevY ) >= UPDATE_TARGET_BLOCK_INDEX_THRESHOLD
174
- ) {
175
- runOnJS( updateTargetBlockIndex )( { x, y } );
176
- prevDragPosition.x.value = x;
177
- prevDragPosition.y.value = y;
178
- return true;
179
- }
180
- return false;
181
- } );
182
-
183
- return {
184
- onBlockDragOver( { x, y } ) {
185
- dragPosition.x.value = x;
186
- dragPosition.y.value = y;
187
- },
188
- onBlockDragOverWorklet( { x, y } ) {
189
- 'worklet';
190
- dragPosition.x.value = x;
191
- dragPosition.y.value = y;
192
- },
193
- onBlockDragEnd() {
194
- targetBlockIndex.value = null;
195
- },
196
- onBlockDrop: ( event ) => {
197
- if ( targetBlockIndex.value !== null ) {
198
- onBlockDrop( {
199
- ...event,
200
- targetRootClientId,
201
- targetBlockIndex: targetBlockIndex.value,
202
- } );
203
- }
204
- },
205
- targetBlockIndex,
206
- };
207
- }
@@ -1,115 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { cloneBlock } from '@wordpress/blocks';
5
- import { useDispatch, useSelect } from '@wordpress/data';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { store as blockEditorStore } from '../../store';
11
-
12
- /**
13
- * A function that returns an event handler function for block drop events.
14
- *
15
- * @param {Function} getBlockIndex A function that gets the index of a block.
16
- * @param {Function} getClientIdsOfDescendants A function that gets the client ids of descendant blocks.
17
- * @param {Function} moveBlocksToPosition A function that moves blocks.
18
- * @param {Function} insertBlocks A function that inserts blocks.
19
- * @param {Function} clearSelectedBlock A function that clears block selection.
20
- * @return {Function} The event handler for a block drop event.
21
- */
22
- export function onBlockDrop(
23
- getBlockIndex,
24
- getClientIdsOfDescendants,
25
- moveBlocksToPosition,
26
- insertBlocks,
27
- clearSelectedBlock
28
- ) {
29
- return ( {
30
- blocks,
31
- srcClientIds: sourceClientIds,
32
- srcRootClientId: sourceRootClientId,
33
- targetBlockIndex,
34
- targetRootClientId,
35
- type: dropType,
36
- } ) => {
37
- // If the user is inserting a block.
38
- if ( dropType === 'inserter' ) {
39
- clearSelectedBlock();
40
- const blocksToInsert = blocks.map( ( block ) =>
41
- cloneBlock( block )
42
- );
43
- insertBlocks(
44
- blocksToInsert,
45
- targetBlockIndex,
46
- targetRootClientId,
47
- true,
48
- null
49
- );
50
- }
51
-
52
- // If the user is moving a block.
53
- if ( dropType === 'block' ) {
54
- const sourceBlockIndex = getBlockIndex( sourceClientIds[ 0 ] );
55
-
56
- // If the user is dropping to the same position, return early.
57
- if (
58
- sourceRootClientId === targetRootClientId &&
59
- sourceBlockIndex === targetBlockIndex
60
- ) {
61
- return;
62
- }
63
-
64
- // If the user is attempting to drop a block within its own
65
- // nested blocks, return early as this would create infinite
66
- // recursion.
67
- if (
68
- sourceClientIds.includes( targetRootClientId ) ||
69
- getClientIdsOfDescendants( sourceClientIds ).some(
70
- ( id ) => id === targetRootClientId
71
- )
72
- ) {
73
- return;
74
- }
75
-
76
- const isAtSameLevel = sourceRootClientId === targetRootClientId;
77
- const draggedBlockCount = sourceClientIds.length;
78
-
79
- // If the block is kept at the same level and moved downwards,
80
- // subtract to take into account that the blocks being dragged
81
- // were removed from the block list above the insertion point.
82
- const insertIndex =
83
- isAtSameLevel && sourceBlockIndex < targetBlockIndex
84
- ? targetBlockIndex - draggedBlockCount
85
- : targetBlockIndex;
86
-
87
- moveBlocksToPosition(
88
- sourceClientIds,
89
- sourceRootClientId,
90
- targetRootClientId,
91
- insertIndex
92
- );
93
- }
94
- };
95
- }
96
-
97
- /**
98
- * A React hook for handling block drop events.
99
- *
100
- * @return {Function} The event handler for a block drop event.
101
- */
102
- export default function useOnBlockDrop() {
103
- const { getBlockIndex, getClientIdsOfDescendants } =
104
- useSelect( blockEditorStore );
105
- const { insertBlocks, moveBlocksToPosition, clearSelectedBlock } =
106
- useDispatch( blockEditorStore );
107
-
108
- return onBlockDrop(
109
- getBlockIndex,
110
- getClientIdsOfDescendants,
111
- moveBlocksToPosition,
112
- insertBlocks,
113
- clearSelectedBlock
114
- );
115
- }