@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,716 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { Pressable, View } from 'react-native';
5
- import clsx from 'clsx';
6
-
7
- /**
8
- * WordPress dependencies
9
- */
10
- import {
11
- useCallback,
12
- useMemo,
13
- useState,
14
- useRef,
15
- memo,
16
- } from '@wordpress/element';
17
- import { withFilters } from '@wordpress/components';
18
- import {
19
- __experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,
20
- getBlockType,
21
- getDefaultBlockName,
22
- isUnmodifiedBlock,
23
- isUnmodifiedDefaultBlock,
24
- switchToBlockType,
25
- } from '@wordpress/blocks';
26
- import {
27
- useDispatch,
28
- useSelect,
29
- withDispatch,
30
- withSelect,
31
- } from '@wordpress/data';
32
- import { compose, ifCondition } from '@wordpress/compose';
33
-
34
- /**
35
- * Internal dependencies
36
- */
37
- import BlockEdit from '../block-edit';
38
- import BlockDraggable from '../block-draggable';
39
- import BlockInvalidWarning from './block-invalid-warning';
40
- import BlockOutline from './block-outline';
41
- import { store as blockEditorStore } from '../../store';
42
- import { useLayout } from './layout';
43
- import useScrollUponInsertion from './use-scroll-upon-insertion';
44
- import { useSettings } from '../use-settings';
45
- import { unlock } from '../../lock-unlock';
46
- import BlockCrashBoundary from './block-crash-boundary';
47
- import BlockCrashWarning from './block-crash-warning';
48
- import {
49
- getMergedGlobalStyles,
50
- GlobalStylesContext,
51
- useGlobalStyles,
52
- useMobileGlobalStylesColors,
53
- } from '../global-styles/use-global-styles-context';
54
-
55
- const EMPTY_ARRAY = [];
56
-
57
- /**
58
- * Merges wrapper props with special handling for classNames and styles.
59
- *
60
- * @param {Object} propsA
61
- * @param {Object} propsB
62
- *
63
- * @return {Object} Merged props.
64
- */
65
- function mergeWrapperProps( propsA, propsB ) {
66
- const newProps = {
67
- ...propsA,
68
- ...propsB,
69
- };
70
-
71
- // May be set to undefined, so check if the property is set!
72
- if (
73
- propsA?.hasOwnProperty( 'className' ) &&
74
- propsB?.hasOwnProperty( 'className' )
75
- ) {
76
- newProps.className = clsx( propsA.className, propsB.className );
77
- }
78
-
79
- if (
80
- propsA?.hasOwnProperty( 'style' ) &&
81
- propsB?.hasOwnProperty( 'style' )
82
- ) {
83
- newProps.style = { ...propsA.style, ...propsB.style };
84
- }
85
-
86
- return newProps;
87
- }
88
-
89
- function BlockWrapper( {
90
- accessibilityLabel,
91
- blockCategory,
92
- children,
93
- clientId,
94
- draggingClientId,
95
- draggingEnabled,
96
- hasInnerBlocks,
97
- isDescendentBlockSelected,
98
- isSelected,
99
- isTouchable,
100
- marginHorizontal,
101
- marginVertical,
102
- name,
103
- onFocus,
104
- } ) {
105
- const blockWrapperStyles = { flex: 1 };
106
- const blockWrapperStyle = [
107
- blockWrapperStyles,
108
- {
109
- marginVertical,
110
- marginHorizontal,
111
- },
112
- ];
113
- const accessible = ! ( isSelected || isDescendentBlockSelected );
114
-
115
- const ref = useRef();
116
- const [ isLayoutCalculated, setIsLayoutCalculated ] = useState();
117
- useScrollUponInsertion( {
118
- clientId,
119
- isSelected,
120
- isLayoutCalculated,
121
- elementRef: ref,
122
- } );
123
- const onLayout = useCallback( () => {
124
- setIsLayoutCalculated( true );
125
- }, [] );
126
-
127
- return (
128
- <Pressable
129
- accessibilityLabel={ accessibilityLabel }
130
- accessibilityRole="button"
131
- accessible={ accessible }
132
- disabled={ ! isTouchable }
133
- onPress={ onFocus }
134
- style={ blockWrapperStyle }
135
- ref={ ref }
136
- onLayout={ onLayout }
137
- >
138
- <BlockOutline
139
- blockCategory={ blockCategory }
140
- hasInnerBlocks={ hasInnerBlocks }
141
- isSelected={ isSelected }
142
- name={ name }
143
- />
144
- <BlockCrashBoundary
145
- blockName={ name }
146
- fallback={ <BlockCrashWarning /> }
147
- >
148
- <BlockDraggable
149
- clientId={ clientId }
150
- draggingClientId={ draggingClientId }
151
- enabled={ draggingEnabled }
152
- testID="draggable-trigger-content"
153
- >
154
- { children }
155
- </BlockDraggable>
156
- </BlockCrashBoundary>
157
- </Pressable>
158
- );
159
- }
160
-
161
- function BlockListBlock( {
162
- attributes,
163
- blockWidth: blockWrapperWidth,
164
- canRemove,
165
- clientId,
166
- contentStyle,
167
- isLocked,
168
- isSelected,
169
- isSelectionEnabled,
170
- isStackedHorizontally,
171
- isValid,
172
- marginHorizontal,
173
- marginVertical,
174
- name,
175
- onDeleteBlock,
176
- onInsertBlocksAfter,
177
- onMerge,
178
- onReplace,
179
- parentBlockAlignment,
180
- parentWidth,
181
- rootClientId,
182
- setAttributes,
183
- toggleSelection,
184
- wrapperProps,
185
- } ) {
186
- const {
187
- baseGlobalStyles,
188
- blockCategory,
189
- blockType,
190
- draggingClientId,
191
- draggingEnabled,
192
- hasInnerBlocks,
193
- isDescendantOfParentSelected,
194
- isDescendentBlockSelected,
195
- isParentSelected,
196
- order,
197
- mayDisplayControls,
198
- mayDisplayPatternEditingControls,
199
- blockEditingMode,
200
- } = useSelect(
201
- ( select ) => {
202
- const {
203
- getBlockCount,
204
- getBlockHierarchyRootClientId,
205
- getBlockIndex,
206
- getBlockParents,
207
- getSelectedBlockClientId,
208
- getSettings,
209
- hasSelectedInnerBlock,
210
- getBlockName,
211
- isFirstMultiSelectedBlock,
212
- getMultiSelectedBlockClientIds,
213
- getBlockEditingMode,
214
- } = select( blockEditorStore );
215
- const currentBlockType = getBlockType( name || 'core/missing' );
216
- const currentBlockCategory = currentBlockType?.category;
217
- const blockOrder = getBlockIndex( clientId );
218
- const descendentBlockSelected = hasSelectedInnerBlock(
219
- clientId,
220
- true
221
- );
222
- const selectedBlockClientId = getSelectedBlockClientId();
223
-
224
- const parents = getBlockParents( clientId, true );
225
- const parentSelected =
226
- // Set false as a default value to prevent re-render when it's changed from null to false.
227
- ( selectedBlockClientId || false ) &&
228
- selectedBlockClientId === rootClientId;
229
-
230
- const selectedParents = clientId ? parents : [];
231
- const descendantOfParentSelected =
232
- selectedParents.includes( rootClientId );
233
- const blockHasInnerBlocks = getBlockCount( clientId ) > 0;
234
-
235
- // For blocks with inner blocks, we only enable the dragging in the nested
236
- // blocks if any of them are selected. This way we prevent the long-press
237
- // gesture from being disabled for elements within the block UI.
238
- const isDraggingEnabled =
239
- ! blockHasInnerBlocks ||
240
- isSelected ||
241
- ! descendentBlockSelected;
242
- // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
243
- // will be the top in the hierarchy.
244
- const currentDraggingClientId =
245
- getBlockHierarchyRootClientId( clientId );
246
-
247
- const globalStylesBaseStyles =
248
- getSettings()?.__experimentalGlobalStylesBaseStyles;
249
-
250
- return {
251
- baseGlobalStyles: globalStylesBaseStyles,
252
- blockCategory: currentBlockCategory,
253
- blockType: currentBlockType,
254
- draggingClientId: currentDraggingClientId,
255
- draggingEnabled: isDraggingEnabled,
256
- hasInnerBlocks: blockHasInnerBlocks,
257
- isDescendantOfParentSelected: descendantOfParentSelected,
258
- isDescendentBlockSelected: descendentBlockSelected,
259
- isParentSelected: parentSelected,
260
- order: blockOrder,
261
- mayDisplayControls:
262
- isSelected ||
263
- ( isFirstMultiSelectedBlock( clientId ) &&
264
- getMultiSelectedBlockClientIds().every(
265
- ( id ) => getBlockName( id ) === name
266
- ) ),
267
- mayDisplayPatternEditingControls: false, // Section/pattern editing not yet supported on native
268
- blockEditingMode: getBlockEditingMode( clientId ),
269
- };
270
- },
271
- [ clientId, isSelected, name, rootClientId ]
272
- );
273
- const { removeBlock, selectBlock } = useDispatch( blockEditorStore );
274
- const initialBlockWidth = blockWrapperWidth - 2 * marginHorizontal;
275
- const [ blockWidth, setBlockWidth ] = useState( initialBlockWidth );
276
- const parentLayout = useLayout() || {};
277
- const defaultColors = useMobileGlobalStylesColors();
278
- const globalStyle = useGlobalStyles();
279
- const [ fontSizes ] = useSettings( 'typography.fontSizes' );
280
-
281
- const onRemove = useCallback(
282
- () => removeBlock( clientId ),
283
- [ clientId, removeBlock ]
284
- );
285
- const onFocus = useCallback( () => {
286
- if ( ! isSelected ) {
287
- selectBlock( clientId );
288
- }
289
- }, [ selectBlock, clientId, isSelected ] );
290
-
291
- const onLayout = useCallback(
292
- ( { nativeEvent } ) => {
293
- const layoutWidth = Math.floor( nativeEvent.layout.width );
294
-
295
- if ( ! blockWidth || ! layoutWidth ) {
296
- return;
297
- }
298
-
299
- if ( blockWidth !== layoutWidth ) {
300
- setBlockWidth( layoutWidth );
301
- }
302
- },
303
- [ blockWidth, setBlockWidth ]
304
- );
305
-
306
- // Determine whether the block has props to apply to the wrapper.
307
- if ( blockType?.getEditWrapperProps ) {
308
- wrapperProps = mergeWrapperProps(
309
- wrapperProps,
310
- blockType.getEditWrapperProps( attributes )
311
- );
312
- }
313
-
314
- // Inherited styles merged with block level styles.
315
- const mergedStyle = useMemo( () => {
316
- return getMergedGlobalStyles(
317
- baseGlobalStyles,
318
- globalStyle,
319
- wrapperProps?.style,
320
- attributes,
321
- defaultColors,
322
- name,
323
- fontSizes || EMPTY_ARRAY
324
- );
325
- }, [
326
- // It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.
327
- // JSON.stringify is used for the following purposes:
328
- // 1. To create a single, comparable value from the globalStyle, wrapperProps.style, and attributes objects. This allows useMemo to
329
- // efficiently determine if a change has occurred in any of these objects.
330
- // 2. To filter the attributes object, ensuring that only the relevant attributes (included in
331
- // GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of
332
- // unnecessary useMemo calls when other, unrelated attributes change.
333
- JSON.stringify( globalStyle ),
334
- JSON.stringify( wrapperProps?.style ),
335
- JSON.stringify(
336
- Object.fromEntries(
337
- Object.entries( attributes ?? {} ).filter( ( [ key ] ) =>
338
- GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes( key )
339
- )
340
- )
341
- ),
342
- ] );
343
-
344
- const isFocused = isSelected || isDescendentBlockSelected;
345
- const isTouchable =
346
- isSelected ||
347
- isDescendantOfParentSelected ||
348
- isParentSelected ||
349
- ! rootClientId;
350
-
351
- const accessibilityLabel = getAccessibleBlockLabel(
352
- blockType,
353
- attributes,
354
- order + 1
355
- );
356
-
357
- return (
358
- <BlockWrapper
359
- accessibilityLabel={ accessibilityLabel }
360
- blockCategory={ blockCategory }
361
- clientId={ clientId }
362
- draggingClientId={ draggingClientId }
363
- draggingEnabled={ draggingEnabled }
364
- hasInnerBlocks={ hasInnerBlocks }
365
- isDescendentBlockSelected={ isDescendentBlockSelected }
366
- isFocused={ isFocused }
367
- isSelected={ isSelected }
368
- isStackedHorizontally={ isStackedHorizontally }
369
- isTouchable={ isTouchable }
370
- marginHorizontal={ marginHorizontal }
371
- marginVertical={ marginVertical }
372
- name={ name }
373
- onFocus={ onFocus }
374
- >
375
- { () =>
376
- ! isValid ? (
377
- <BlockInvalidWarning clientId={ clientId } />
378
- ) : (
379
- <GlobalStylesContext.Provider value={ mergedStyle }>
380
- <BlockEdit
381
- attributes={ attributes }
382
- blockWidth={ blockWidth }
383
- clientId={ clientId }
384
- contentStyle={ contentStyle }
385
- insertBlocksAfter={
386
- isLocked ? undefined : onInsertBlocksAfter
387
- }
388
- isSelected={ isSelected }
389
- isSelectionEnabled={ isSelectionEnabled }
390
- mergeBlocks={ canRemove ? onMerge : undefined }
391
- name={ name }
392
- onDeleteBlock={ onDeleteBlock }
393
- onFocus={ onFocus }
394
- onRemove={ canRemove ? onRemove : undefined }
395
- onReplace={ canRemove ? onReplace : undefined }
396
- parentBlockAlignment={ parentBlockAlignment }
397
- parentWidth={ parentWidth }
398
- setAttributes={ setAttributes }
399
- style={ mergedStyle }
400
- toggleSelection={ toggleSelection }
401
- __unstableParentLayout={
402
- Object.keys( parentLayout ).length
403
- ? parentLayout
404
- : undefined
405
- }
406
- wrapperProps={ wrapperProps }
407
- mayDisplayControls={ mayDisplayControls }
408
- mayDisplayPatternEditingControls={
409
- mayDisplayPatternEditingControls
410
- }
411
- blockEditingMode={ blockEditingMode }
412
- />
413
- <View onLayout={ onLayout } />
414
- </GlobalStylesContext.Provider>
415
- )
416
- }
417
- </BlockWrapper>
418
- );
419
- }
420
-
421
- const applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {
422
- const {
423
- isBlockSelected,
424
- getBlockMode,
425
- isSelectionEnabled,
426
- getTemplateLock,
427
- getBlockWithoutAttributes,
428
- getBlockAttributes,
429
- canRemoveBlock,
430
- canMoveBlock,
431
- } = unlock( select( blockEditorStore ) );
432
- const block = getBlockWithoutAttributes( clientId );
433
- const attributes = getBlockAttributes( clientId );
434
- const isSelected = isBlockSelected( clientId );
435
- const templateLock = getTemplateLock( rootClientId );
436
- const canRemove = canRemoveBlock( clientId );
437
- const canMove = canMoveBlock( clientId );
438
-
439
- // The fallback to `{}` is a temporary fix.
440
- // This function should never be called when a block is not present in
441
- // the state. It happens now because the order in withSelect rendering
442
- // is not correct.
443
- const { name, isValid } = block || {};
444
-
445
- // Do not add new properties here, use `useSelect` instead to avoid
446
- // leaking new props to the public API (editor.BlockListBlock filter).
447
- return {
448
- mode: getBlockMode( clientId ),
449
- isSelectionEnabled: isSelectionEnabled(),
450
- isLocked: !! templateLock,
451
- canRemove,
452
- canMove,
453
- // Users of the editor.BlockListBlock filter used to be able to
454
- // access the block prop.
455
- // Ideally these blocks would rely on the clientId prop only.
456
- // This is kept for backward compatibility reasons.
457
- block,
458
- name,
459
- attributes,
460
- isValid,
461
- isSelected,
462
- };
463
- } );
464
-
465
- const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
466
- const {
467
- updateBlockAttributes,
468
- insertBlocks,
469
- mergeBlocks,
470
- replaceBlocks,
471
- toggleSelection,
472
- __unstableMarkLastChangeAsPersistent,
473
- moveBlocksToPosition,
474
- removeBlock,
475
- } = dispatch( blockEditorStore );
476
-
477
- // Do not add new properties here, use `useDispatch` instead to avoid
478
- // leaking new props to the public API (editor.BlockListBlock filter).
479
- return {
480
- setAttributes( newAttributes ) {
481
- const { getMultiSelectedBlockClientIds } =
482
- registry.select( blockEditorStore );
483
- const multiSelectedBlockClientIds =
484
- getMultiSelectedBlockClientIds();
485
- const { clientId } = ownProps;
486
- const clientIds = multiSelectedBlockClientIds.length
487
- ? multiSelectedBlockClientIds
488
- : [ clientId ];
489
-
490
- updateBlockAttributes( clientIds, newAttributes );
491
- },
492
- onInsertBlocks( blocks, index ) {
493
- const { rootClientId } = ownProps;
494
- insertBlocks( blocks, index, rootClientId );
495
- },
496
- onInsertBlocksAfter( blocks ) {
497
- const { clientId, rootClientId } = ownProps;
498
- const { getBlockIndex } = registry.select( blockEditorStore );
499
- const index = getBlockIndex( clientId );
500
- insertBlocks( blocks, index + 1, rootClientId );
501
- },
502
- onMerge( forward ) {
503
- const { clientId, rootClientId } = ownProps;
504
- const {
505
- getPreviousBlockClientId,
506
- getNextBlockClientId,
507
- getBlock,
508
- getBlockAttributes,
509
- getBlockName,
510
- getBlockOrder,
511
- getBlockIndex,
512
- getBlockRootClientId,
513
- canInsertBlockType,
514
- } = registry.select( blockEditorStore );
515
-
516
- /**
517
- * Moves the block with clientId up one level. If the block type
518
- * cannot be inserted at the new location, it will be attempted to
519
- * convert to the default block type.
520
- *
521
- * @param {string} _clientId The block to move.
522
- * @param {boolean} changeSelection Whether to change the selection
523
- * to the moved block.
524
- */
525
- function moveFirstItemUp( _clientId, changeSelection = true ) {
526
- const targetRootClientId = getBlockRootClientId( _clientId );
527
- const blockOrder = getBlockOrder( _clientId );
528
- const [ firstClientId ] = blockOrder;
529
-
530
- if (
531
- blockOrder.length === 1 &&
532
- isUnmodifiedBlock( getBlock( firstClientId ) )
533
- ) {
534
- removeBlock( _clientId );
535
- } else {
536
- registry.batch( () => {
537
- if (
538
- canInsertBlockType(
539
- getBlockName( firstClientId ),
540
- targetRootClientId
541
- )
542
- ) {
543
- moveBlocksToPosition(
544
- [ firstClientId ],
545
- _clientId,
546
- targetRootClientId,
547
- getBlockIndex( _clientId )
548
- );
549
- } else {
550
- const replacement = switchToBlockType(
551
- getBlock( firstClientId ),
552
- getDefaultBlockName()
553
- );
554
-
555
- if ( replacement && replacement.length ) {
556
- insertBlocks(
557
- replacement,
558
- getBlockIndex( _clientId ),
559
- targetRootClientId,
560
- changeSelection
561
- );
562
- removeBlock( firstClientId, false );
563
- }
564
- }
565
-
566
- if (
567
- ! getBlockOrder( _clientId ).length &&
568
- isUnmodifiedBlock( getBlock( _clientId ) )
569
- ) {
570
- removeBlock( _clientId, false );
571
- }
572
- } );
573
- }
574
- }
575
-
576
- // For `Delete` or forward merge, we should do the exact same thing
577
- // as `Backspace`, but from the other block.
578
- if ( forward ) {
579
- if ( rootClientId ) {
580
- const nextRootClientId =
581
- getNextBlockClientId( rootClientId );
582
-
583
- if ( nextRootClientId ) {
584
- // If there is a block that follows with the same parent
585
- // block name and the same attributes, merge the inner
586
- // blocks.
587
- if (
588
- getBlockName( rootClientId ) ===
589
- getBlockName( nextRootClientId )
590
- ) {
591
- const rootAttributes =
592
- getBlockAttributes( rootClientId );
593
- const previousRootAttributes =
594
- getBlockAttributes( nextRootClientId );
595
-
596
- if (
597
- Object.keys( rootAttributes ).every(
598
- ( key ) =>
599
- rootAttributes[ key ] ===
600
- previousRootAttributes[ key ]
601
- )
602
- ) {
603
- registry.batch( () => {
604
- moveBlocksToPosition(
605
- getBlockOrder( nextRootClientId ),
606
- nextRootClientId,
607
- rootClientId
608
- );
609
- removeBlock( nextRootClientId, false );
610
- } );
611
- return;
612
- }
613
- } else {
614
- mergeBlocks( rootClientId, nextRootClientId );
615
- return;
616
- }
617
- }
618
- }
619
-
620
- const nextBlockClientId = getNextBlockClientId( clientId );
621
-
622
- if ( ! nextBlockClientId ) {
623
- return;
624
- }
625
-
626
- if ( getBlockOrder( nextBlockClientId ).length ) {
627
- moveFirstItemUp( nextBlockClientId, false );
628
- } else {
629
- mergeBlocks( clientId, nextBlockClientId );
630
- }
631
- } else {
632
- const previousBlockClientId =
633
- getPreviousBlockClientId( clientId );
634
-
635
- if ( previousBlockClientId ) {
636
- mergeBlocks( previousBlockClientId, clientId );
637
- } else if ( rootClientId ) {
638
- const previousRootClientId =
639
- getPreviousBlockClientId( rootClientId );
640
-
641
- // If there is a preceding block with the same parent block
642
- // name and the same attributes, merge the inner blocks.
643
- if (
644
- previousRootClientId &&
645
- getBlockName( rootClientId ) ===
646
- getBlockName( previousRootClientId )
647
- ) {
648
- const rootAttributes =
649
- getBlockAttributes( rootClientId );
650
- const previousRootAttributes =
651
- getBlockAttributes( previousRootClientId );
652
-
653
- if (
654
- Object.keys( rootAttributes ).every(
655
- ( key ) =>
656
- rootAttributes[ key ] ===
657
- previousRootAttributes[ key ]
658
- )
659
- ) {
660
- registry.batch( () => {
661
- moveBlocksToPosition(
662
- getBlockOrder( rootClientId ),
663
- rootClientId,
664
- previousRootClientId
665
- );
666
- removeBlock( rootClientId, false );
667
- } );
668
- return;
669
- }
670
- }
671
-
672
- moveFirstItemUp( rootClientId );
673
- } else if (
674
- getBlockName( clientId ) !== getDefaultBlockName()
675
- ) {
676
- const replacement = switchToBlockType(
677
- getBlock( clientId ),
678
- getDefaultBlockName()
679
- );
680
- if ( replacement && replacement.length ) {
681
- replaceBlocks( clientId, replacement );
682
- }
683
- }
684
- }
685
- },
686
- onReplace( blocks, indexToSelect, initialPosition, meta ) {
687
- if (
688
- blocks.length &&
689
- ! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )
690
- ) {
691
- __unstableMarkLastChangeAsPersistent();
692
- }
693
- replaceBlocks(
694
- [ ownProps.clientId ],
695
- blocks,
696
- indexToSelect,
697
- initialPosition,
698
- meta
699
- );
700
- },
701
- toggleSelection( selectionEnabled ) {
702
- toggleSelection( selectionEnabled );
703
- },
704
- };
705
- } );
706
-
707
- export default compose(
708
- memo,
709
- applyWithSelect,
710
- applyWithDispatch,
711
- // Block is sometimes not mounted at the right time, causing it be undefined
712
- // see issue for more info
713
- // https://github.com/WordPress/gutenberg/issues/17013
714
- ifCondition( ( { block } ) => !! block ),
715
- withFilters( 'editor.BlockListBlock' )
716
- )( BlockListBlock );