@wordpress/block-editor 12.0.0 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +6 -3
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-controls/slot.js +12 -4
  8. package/build/components/block-controls/slot.js.map +1 -1
  9. package/build/components/block-controls/slot.native.js +10 -1
  10. package/build/components/block-controls/slot.native.js.map +1 -1
  11. package/build/components/block-draggable/index.js +11 -7
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-editing-mode/index.js +84 -0
  16. package/build/components/block-editing-mode/index.js.map +1 -0
  17. package/build/components/block-list/block-invalid-warning.native.js +15 -7
  18. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  19. package/build/components/block-list/block-list-block-context.js +15 -0
  20. package/build/components/block-list/block-list-block-context.js.map +1 -0
  21. package/build/components/block-list/block-list-item-cell.native.js +15 -2
  22. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  23. package/build/components/block-list/block-list-item.native.js +158 -195
  24. package/build/components/block-list/block-list-item.native.js.map +1 -1
  25. package/build/components/block-list/block-outline.native.js +57 -0
  26. package/build/components/block-list/block-outline.native.js.map +1 -0
  27. package/build/components/block-list/block.js +29 -37
  28. package/build/components/block-list/block.js.map +1 -1
  29. package/build/components/block-list/block.native.js +347 -311
  30. package/build/components/block-list/block.native.js.map +1 -1
  31. package/build/components/block-list/index.native.js +260 -357
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/insertion-point.native.js +4 -2
  34. package/build/components/block-list/insertion-point.native.js.map +1 -1
  35. package/build/components/block-list/use-block-props/index.js +2 -2
  36. package/build/components/block-list/use-block-props/index.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +7 -5
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-list-appender/index.js +15 -1
  40. package/build/components/block-list-appender/index.js.map +1 -1
  41. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
  42. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  43. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
  44. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  45. package/build/components/block-settings-menu-controls/index.js +15 -4
  46. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  47. package/build/components/block-styles/preview-panel.js +1 -2
  48. package/build/components/block-styles/preview-panel.js.map +1 -1
  49. package/build/components/block-switcher/block-transformations-menu.js +8 -0
  50. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  51. package/build/components/block-switcher/block-variation-transformations.js +125 -0
  52. package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
  53. package/build/components/block-switcher/index.js +34 -12
  54. package/build/components/block-switcher/index.js.map +1 -1
  55. package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
  56. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  57. package/build/components/block-toolbar/index.js +9 -7
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/block-contextual-toolbar.js +22 -65
  60. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +11 -5
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/block-tools/selected-block-popover.js +3 -8
  64. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  65. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  66. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +7 -2
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/index.native.js +87 -3
  70. package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
  71. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
  72. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  73. package/build/components/global-styles/advanced-panel.js +86 -0
  74. package/build/components/global-styles/advanced-panel.js.map +1 -0
  75. package/build/components/global-styles/color-panel.js +4 -1
  76. package/build/components/global-styles/color-panel.js.map +1 -1
  77. package/build/components/global-styles/dimensions-panel.js +9 -8
  78. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  79. package/build/components/global-styles/hooks.js +1 -2
  80. package/build/components/global-styles/hooks.js.map +1 -1
  81. package/build/components/global-styles/index.js +24 -0
  82. package/build/components/global-styles/index.js.map +1 -1
  83. package/build/components/global-styles/typography-panel.js +1 -1
  84. package/build/components/global-styles/typography-panel.js.map +1 -1
  85. package/build/components/global-styles/use-global-styles-output.js +27 -4
  86. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  87. package/build/components/global-styles/utils.js +30 -0
  88. package/build/components/global-styles/utils.js.map +1 -1
  89. package/build/components/iframe/index.js +14 -7
  90. package/build/components/iframe/index.js.map +1 -1
  91. package/build/components/image-editor/use-save-image.js +24 -8
  92. package/build/components/image-editor/use-save-image.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +2 -1
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/index.native.js +7 -7
  96. package/build/components/inner-blocks/index.native.js.map +1 -1
  97. package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
  98. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  99. package/build/components/inserter/index.js +3 -7
  100. package/build/components/inserter/index.js.map +1 -1
  101. package/build/components/inserter/quick-inserter.js +2 -4
  102. package/build/components/inserter/quick-inserter.js.map +1 -1
  103. package/build/components/inserter/search-results.js +19 -6
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter-draggable-blocks/index.js +5 -0
  106. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  107. package/build/components/inspector-controls/fill.js +1 -1
  108. package/build/components/inspector-controls/fill.js.map +1 -1
  109. package/build/components/inspector-controls/fill.native.js +1 -1
  110. package/build/components/inspector-controls/fill.native.js.map +1 -1
  111. package/build/components/inspector-controls/slot.js +3 -6
  112. package/build/components/inspector-controls/slot.js.map +1 -1
  113. package/build/components/inspector-controls/slot.native.js +1 -1
  114. package/build/components/inspector-controls/slot.native.js.map +1 -1
  115. package/build/components/line-height-control/index.js +7 -2
  116. package/build/components/line-height-control/index.js.map +1 -1
  117. package/build/components/link-control/use-internal-input-value.js +9 -8
  118. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  119. package/build/components/list-view/appender.js +6 -1
  120. package/build/components/list-view/appender.js.map +1 -1
  121. package/build/components/list-view/block-contents.js +9 -2
  122. package/build/components/list-view/block-contents.js.map +1 -1
  123. package/build/components/list-view/block-select-button.js +2 -1
  124. package/build/components/list-view/block-select-button.js.map +1 -1
  125. package/build/components/list-view/block.js +25 -29
  126. package/build/components/list-view/block.js.map +1 -1
  127. package/build/components/list-view/branch.js +1 -3
  128. package/build/components/list-view/branch.js.map +1 -1
  129. package/build/components/list-view/index.js +43 -22
  130. package/build/components/list-view/index.js.map +1 -1
  131. package/build/components/list-view/use-list-view-client-ids.js +27 -3
  132. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  133. package/build/components/list-view/use-list-view-drop-zone.js +163 -11
  134. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  135. package/build/components/media-placeholder/index.js +68 -7
  136. package/build/components/media-placeholder/index.js.map +1 -1
  137. package/build/components/multi-selection-inspector/index.js +2 -2
  138. package/build/components/multi-selection-inspector/index.js.map +1 -1
  139. package/build/components/preview-options/index.js +6 -1
  140. package/build/components/preview-options/index.js.map +1 -1
  141. package/build/components/publish-date-time-picker/index.js +0 -2
  142. package/build/components/publish-date-time-picker/index.js.map +1 -1
  143. package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
  144. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  145. package/build/components/url-input/index.js +4 -2
  146. package/build/components/url-input/index.js.map +1 -1
  147. package/build/components/use-block-drop-zone/index.js +25 -15
  148. package/build/components/use-block-drop-zone/index.js.map +1 -1
  149. package/build/components/use-resize-canvas/index.js +8 -1
  150. package/build/components/use-resize-canvas/index.js.map +1 -1
  151. package/build/components/writing-flow/use-arrow-nav.js +13 -7
  152. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  153. package/build/hooks/align.js +4 -8
  154. package/build/hooks/align.js.map +1 -1
  155. package/build/hooks/behaviors.js +115 -0
  156. package/build/hooks/behaviors.js.map +1 -0
  157. package/build/hooks/border.js +1 -1
  158. package/build/hooks/border.js.map +1 -1
  159. package/build/hooks/color.js +1 -1
  160. package/build/hooks/color.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +8 -12
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/dimensions.js +0 -30
  164. package/build/hooks/dimensions.js.map +1 -1
  165. package/build/hooks/duotone.js +5 -9
  166. package/build/hooks/duotone.js.map +1 -1
  167. package/build/hooks/index.js +2 -0
  168. package/build/hooks/index.js.map +1 -1
  169. package/build/hooks/index.native.js +8 -0
  170. package/build/hooks/index.native.js.map +1 -1
  171. package/build/hooks/layout.js +10 -11
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +1 -1
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +1 -1
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
  178. package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  179. package/build/hooks/use-typography-props.js +14 -10
  180. package/build/hooks/use-typography-props.js.map +1 -1
  181. package/build/index.native.js +31 -0
  182. package/build/index.native.js.map +1 -0
  183. package/build/private-apis.js +4 -7
  184. package/build/private-apis.js.map +1 -1
  185. package/build/store/private-actions.js +46 -0
  186. package/build/store/private-actions.js.map +1 -1
  187. package/build/store/private-selectors.js +88 -0
  188. package/build/store/private-selectors.js.map +1 -1
  189. package/build/store/reducer.js +36 -1
  190. package/build/store/reducer.js.map +1 -1
  191. package/build/store/selectors.js +28 -18
  192. package/build/store/selectors.js.map +1 -1
  193. package/build/utils/order-inserter-block-items.js +41 -0
  194. package/build/utils/order-inserter-block-items.js.map +1 -0
  195. package/build/utils/use-should-contextual-toolbar-show.js +16 -12
  196. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -1
  197. package/build-module/autocompleters/block.js +12 -5
  198. package/build-module/autocompleters/block.js.map +1 -1
  199. package/build-module/components/block-breadcrumb/index.js +5 -3
  200. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  201. package/build-module/components/block-controls/slot.js +11 -4
  202. package/build-module/components/block-controls/slot.js.map +1 -1
  203. package/build-module/components/block-controls/slot.native.js +9 -1
  204. package/build-module/components/block-controls/slot.native.js.map +1 -1
  205. package/build-module/components/block-draggable/index.js +10 -6
  206. package/build-module/components/block-draggable/index.js.map +1 -1
  207. package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
  208. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  209. package/build-module/components/block-editing-mode/index.js +72 -0
  210. package/build-module/components/block-editing-mode/index.js.map +1 -0
  211. package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
  212. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  213. package/build-module/components/block-list/block-list-block-context.js +6 -0
  214. package/build-module/components/block-list/block-list-block-context.js.map +1 -0
  215. package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
  216. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  217. package/build-module/components/block-list/block-list-item.native.js +160 -190
  218. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  219. package/build-module/components/block-list/block-outline.native.js +44 -0
  220. package/build-module/components/block-list/block-outline.native.js.map +1 -0
  221. package/build-module/components/block-list/block.js +26 -34
  222. package/build-module/components/block-list/block.js.map +1 -1
  223. package/build-module/components/block-list/block.native.js +345 -310
  224. package/build-module/components/block-list/block.native.js.map +1 -1
  225. package/build-module/components/block-list/index.native.js +263 -355
  226. package/build-module/components/block-list/index.native.js.map +1 -1
  227. package/build-module/components/block-list/insertion-point.native.js +4 -2
  228. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  229. package/build-module/components/block-list/use-block-props/index.js +1 -1
  230. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  231. package/build-module/components/block-list/use-in-between-inserter.js +6 -5
  232. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  233. package/build-module/components/block-list-appender/index.js +15 -1
  234. package/build-module/components/block-list-appender/index.js.map +1 -1
  235. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
  236. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  237. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
  238. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  239. package/build-module/components/block-settings-menu-controls/index.js +13 -5
  240. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  241. package/build-module/components/block-styles/preview-panel.js +1 -2
  242. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  243. package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
  244. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  245. package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
  246. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
  247. package/build-module/components/block-switcher/index.js +33 -12
  248. package/build-module/components/block-switcher/index.js.map +1 -1
  249. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
  250. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  251. package/build-module/components/block-toolbar/index.js +8 -7
  252. package/build-module/components/block-toolbar/index.js.map +1 -1
  253. package/build-module/components/block-tools/block-contextual-toolbar.js +22 -65
  254. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  255. package/build-module/components/block-tools/insertion-point.js +11 -5
  256. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  257. package/build-module/components/block-tools/selected-block-popover.js +3 -7
  258. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  259. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  260. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  261. package/build-module/components/convert-to-group-buttons/index.js +7 -2
  262. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  263. package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
  264. package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
  265. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
  266. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  267. package/build-module/components/global-styles/advanced-panel.js +74 -0
  268. package/build-module/components/global-styles/advanced-panel.js.map +1 -0
  269. package/build-module/components/global-styles/color-panel.js +5 -2
  270. package/build-module/components/global-styles/color-panel.js.map +1 -1
  271. package/build-module/components/global-styles/dimensions-panel.js +9 -8
  272. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  273. package/build-module/components/global-styles/hooks.js +1 -2
  274. package/build-module/components/global-styles/hooks.js.map +1 -1
  275. package/build-module/components/global-styles/index.js +3 -1
  276. package/build-module/components/global-styles/index.js.map +1 -1
  277. package/build-module/components/global-styles/typography-panel.js +1 -1
  278. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  279. package/build-module/components/global-styles/use-global-styles-output.js +25 -4
  280. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  281. package/build-module/components/global-styles/utils.js +25 -0
  282. package/build-module/components/global-styles/utils.js.map +1 -1
  283. package/build-module/components/iframe/index.js +15 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +24 -8
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/inner-blocks/index.js +2 -1
  288. package/build-module/components/inner-blocks/index.js.map +1 -1
  289. package/build-module/components/inner-blocks/index.native.js +7 -6
  290. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  291. package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
  292. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  293. package/build-module/components/inserter/index.js +3 -7
  294. package/build-module/components/inserter/index.js.map +1 -1
  295. package/build-module/components/inserter/quick-inserter.js +2 -4
  296. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  297. package/build-module/components/inserter/search-results.js +16 -6
  298. package/build-module/components/inserter/search-results.js.map +1 -1
  299. package/build-module/components/inserter-draggable-blocks/index.js +4 -0
  300. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  301. package/build-module/components/inspector-controls/fill.js +1 -1
  302. package/build-module/components/inspector-controls/fill.js.map +1 -1
  303. package/build-module/components/inspector-controls/fill.native.js +1 -1
  304. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  305. package/build-module/components/inspector-controls/slot.js +4 -7
  306. package/build-module/components/inspector-controls/slot.js.map +1 -1
  307. package/build-module/components/inspector-controls/slot.native.js +1 -1
  308. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  309. package/build-module/components/line-height-control/index.js +7 -2
  310. package/build-module/components/line-height-control/index.js.map +1 -1
  311. package/build-module/components/link-control/use-internal-input-value.js +9 -8
  312. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  313. package/build-module/components/list-view/appender.js +6 -2
  314. package/build-module/components/list-view/appender.js.map +1 -1
  315. package/build-module/components/list-view/block-contents.js +9 -3
  316. package/build-module/components/list-view/block-contents.js.map +1 -1
  317. package/build-module/components/list-view/block-select-button.js +2 -1
  318. package/build-module/components/list-view/block-select-button.js.map +1 -1
  319. package/build-module/components/list-view/block.js +24 -29
  320. package/build-module/components/list-view/block.js.map +1 -1
  321. package/build-module/components/list-view/branch.js +1 -3
  322. package/build-module/components/list-view/branch.js.map +1 -1
  323. package/build-module/components/list-view/index.js +44 -23
  324. package/build-module/components/list-view/index.js.map +1 -1
  325. package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
  326. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  327. package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
  328. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  329. package/build-module/components/media-placeholder/index.js +66 -7
  330. package/build-module/components/media-placeholder/index.js.map +1 -1
  331. package/build-module/components/multi-selection-inspector/index.js +2 -2
  332. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  333. package/build-module/components/preview-options/index.js +7 -2
  334. package/build-module/components/preview-options/index.js.map +1 -1
  335. package/build-module/components/publish-date-time-picker/index.js +0 -2
  336. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  337. package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
  338. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  339. package/build-module/components/url-input/index.js +4 -2
  340. package/build-module/components/url-input/index.js.map +1 -1
  341. package/build-module/components/use-block-drop-zone/index.js +25 -16
  342. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  343. package/build-module/components/use-resize-canvas/index.js +8 -1
  344. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  345. package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
  346. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  347. package/build-module/hooks/align.js +4 -7
  348. package/build-module/hooks/align.js.map +1 -1
  349. package/build-module/hooks/behaviors.js +97 -0
  350. package/build-module/hooks/behaviors.js.map +1 -0
  351. package/build-module/hooks/border.js +1 -1
  352. package/build-module/hooks/border.js.map +1 -1
  353. package/build-module/hooks/color.js +1 -1
  354. package/build-module/hooks/color.js.map +1 -1
  355. package/build-module/hooks/content-lock-ui.js +8 -11
  356. package/build-module/hooks/content-lock-ui.js.map +1 -1
  357. package/build-module/hooks/dimensions.js +0 -28
  358. package/build-module/hooks/dimensions.js.map +1 -1
  359. package/build-module/hooks/duotone.js +4 -7
  360. package/build-module/hooks/duotone.js.map +1 -1
  361. package/build-module/hooks/index.js +1 -0
  362. package/build-module/hooks/index.js.map +1 -1
  363. package/build-module/hooks/index.native.js +1 -0
  364. package/build-module/hooks/index.native.js.map +1 -1
  365. package/build-module/hooks/layout.js +9 -11
  366. package/build-module/hooks/layout.js.map +1 -1
  367. package/build-module/hooks/position.js +1 -1
  368. package/build-module/hooks/position.js.map +1 -1
  369. package/build-module/hooks/style.js +1 -1
  370. package/build-module/hooks/style.js.map +1 -1
  371. package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
  372. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  373. package/build-module/hooks/use-typography-props.js +14 -10
  374. package/build-module/hooks/use-typography-props.js.map +1 -1
  375. package/build-module/index.native.js +6 -0
  376. package/build-module/index.native.js.map +1 -0
  377. package/build-module/private-apis.js +3 -5
  378. package/build-module/private-apis.js.map +1 -1
  379. package/build-module/store/private-actions.js +42 -0
  380. package/build-module/store/private-actions.js.map +1 -1
  381. package/build-module/store/private-selectors.js +79 -0
  382. package/build-module/store/private-selectors.js.map +1 -1
  383. package/build-module/store/reducer.js +34 -1
  384. package/build-module/store/reducer.js.map +1 -1
  385. package/build-module/store/selectors.js +26 -17
  386. package/build-module/store/selectors.js.map +1 -1
  387. package/build-module/utils/order-inserter-block-items.js +32 -0
  388. package/build-module/utils/order-inserter-block-items.js.map +1 -0
  389. package/build-module/utils/use-should-contextual-toolbar-show.js +16 -12
  390. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -1
  391. package/build-style/content-rtl.css +32 -14
  392. package/build-style/content.css +32 -14
  393. package/build-style/default-editor-styles-rtl.css +1 -1
  394. package/build-style/default-editor-styles.css +1 -1
  395. package/build-style/style-rtl.css +56 -77
  396. package/build-style/style.css +57 -77
  397. package/package.json +32 -31
  398. package/src/autocompleters/block.js +15 -7
  399. package/src/components/block-breadcrumb/index.js +11 -3
  400. package/src/components/block-breadcrumb/style.scss +2 -1
  401. package/src/components/block-controls/slot.js +8 -4
  402. package/src/components/block-controls/slot.native.js +6 -1
  403. package/src/components/block-draggable/index.js +10 -6
  404. package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
  405. package/src/components/block-editing-mode/index.js +71 -0
  406. package/src/components/block-list/block-invalid-warning.native.js +17 -9
  407. package/src/components/block-list/block-list-block-context.js +6 -0
  408. package/src/components/block-list/block-list-item-cell.native.js +10 -1
  409. package/src/components/block-list/block-list-item.native.js +180 -208
  410. package/src/components/block-list/block-outline.native.js +58 -0
  411. package/src/components/block-list/block.js +38 -56
  412. package/src/components/block-list/block.native.js +531 -501
  413. package/src/components/block-list/content.scss +5 -6
  414. package/src/components/block-list/index.native.js +324 -382
  415. package/src/components/block-list/insertion-point.native.js +2 -2
  416. package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
  417. package/src/components/block-list/test/index.native.js +205 -0
  418. package/src/components/block-list/use-block-props/index.js +1 -1
  419. package/src/components/block-list/use-in-between-inserter.js +7 -3
  420. package/src/components/block-list-appender/index.js +22 -4
  421. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +26 -1
  422. package/src/components/block-mover/style.scss +1 -0
  423. package/src/components/block-pattern-setup/style.scss +1 -4
  424. package/src/components/block-patterns-list/style.scss +1 -4
  425. package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
  426. package/src/components/block-settings-menu-controls/index.js +24 -4
  427. package/src/components/block-styles/preview-panel.js +1 -3
  428. package/src/components/block-styles/style.scss +4 -4
  429. package/src/components/block-switcher/block-transformations-menu.js +12 -0
  430. package/src/components/block-switcher/block-variation-transformations.js +115 -0
  431. package/src/components/block-switcher/index.js +38 -5
  432. package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
  433. package/src/components/block-switcher/style.scss +6 -5
  434. package/src/components/block-toolbar/index.js +10 -11
  435. package/src/components/block-tools/block-contextual-toolbar.js +32 -67
  436. package/src/components/block-tools/insertion-point.js +23 -9
  437. package/src/components/block-tools/selected-block-popover.js +3 -5
  438. package/src/components/block-tools/style.scss +8 -0
  439. package/src/components/button-block-appender/content.scss +22 -0
  440. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
  441. package/src/components/convert-to-group-buttons/index.js +9 -2
  442. package/src/components/convert-to-group-buttons/index.native.js +79 -1
  443. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
  444. package/src/components/global-styles/advanced-panel.js +82 -0
  445. package/src/components/global-styles/color-panel.js +6 -1
  446. package/src/components/global-styles/dimensions-panel.js +9 -8
  447. package/src/components/global-styles/hooks.js +1 -5
  448. package/src/components/global-styles/index.js +6 -1
  449. package/src/components/global-styles/style.scss +17 -0
  450. package/src/components/global-styles/test/utils.js +57 -1
  451. package/src/components/global-styles/typography-panel.js +1 -1
  452. package/src/components/global-styles/use-global-styles-output.js +21 -3
  453. package/src/components/global-styles/utils.js +27 -0
  454. package/src/components/iframe/index.js +22 -12
  455. package/src/components/image-editor/use-save-image.js +20 -9
  456. package/src/components/inner-blocks/README.md +5 -0
  457. package/src/components/inner-blocks/index.js +2 -0
  458. package/src/components/inner-blocks/index.native.js +16 -6
  459. package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
  460. package/src/components/inserter/index.js +1 -9
  461. package/src/components/inserter/quick-inserter.js +0 -2
  462. package/src/components/inserter/search-results.js +32 -6
  463. package/src/components/inserter-draggable-blocks/index.js +4 -0
  464. package/src/components/inspector-controls/fill.js +1 -1
  465. package/src/components/inspector-controls/fill.native.js +1 -1
  466. package/src/components/inspector-controls/slot.js +4 -9
  467. package/src/components/inspector-controls/slot.native.js +1 -1
  468. package/src/components/line-height-control/index.js +7 -2
  469. package/src/components/line-height-control/stories/index.js +1 -1
  470. package/src/components/link-control/test/index.js +42 -0
  471. package/src/components/link-control/use-internal-input-value.js +8 -7
  472. package/src/components/list-view/appender.js +3 -2
  473. package/src/components/list-view/block-contents.js +32 -20
  474. package/src/components/list-view/block-select-button.js +5 -1
  475. package/src/components/list-view/block.js +34 -37
  476. package/src/components/list-view/branch.js +1 -7
  477. package/src/components/list-view/index.js +42 -17
  478. package/src/components/list-view/style.scss +7 -7
  479. package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
  480. package/src/components/list-view/use-list-view-client-ids.js +21 -4
  481. package/src/components/list-view/use-list-view-drop-zone.js +194 -11
  482. package/src/components/media-placeholder/index.js +74 -1
  483. package/src/components/multi-selection-inspector/index.js +2 -2
  484. package/src/components/preview-options/index.js +9 -2
  485. package/src/components/publish-date-time-picker/index.js +0 -2
  486. package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
  487. package/src/components/url-input/README.md +6 -0
  488. package/src/components/url-input/index.js +2 -2
  489. package/src/components/use-block-drop-zone/index.js +31 -17
  490. package/src/components/use-resize-canvas/index.js +9 -1
  491. package/src/components/writing-flow/test/index.js +15 -0
  492. package/src/components/writing-flow/use-arrow-nav.js +17 -4
  493. package/src/hooks/align.js +5 -12
  494. package/src/hooks/behaviors.js +104 -0
  495. package/src/hooks/border.js +2 -1
  496. package/src/hooks/color.js +2 -1
  497. package/src/hooks/content-lock-ui.js +3 -15
  498. package/src/hooks/dimensions.js +0 -40
  499. package/src/hooks/duotone.js +4 -11
  500. package/src/hooks/index.js +1 -0
  501. package/src/hooks/index.native.js +1 -0
  502. package/src/hooks/layout.js +14 -20
  503. package/src/hooks/position.js +2 -1
  504. package/src/hooks/style.js +2 -1
  505. package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
  506. package/src/hooks/test/use-typography-props.js +47 -2
  507. package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
  508. package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
  509. package/src/hooks/use-typography-props.js +10 -11
  510. package/src/index.native.js +6 -0
  511. package/src/private-apis.js +2 -4
  512. package/src/store/private-actions.js +39 -0
  513. package/src/store/private-selectors.js +95 -0
  514. package/src/store/reducer.js +27 -0
  515. package/src/store/selectors.js +25 -15
  516. package/src/store/test/private-actions.js +32 -1
  517. package/src/store/test/private-selectors.js +158 -0
  518. package/src/store/test/reducer.js +48 -0
  519. package/src/style.scss +0 -3
  520. package/src/utils/order-inserter-block-items.js +26 -0
  521. package/src/utils/use-should-contextual-toolbar-show.js +19 -9
  522. package/tsconfig.json +1 -0
  523. package/tsconfig.tsbuildinfo +1 -1
  524. package/build/components/block-list/block-list-compact.native.js +0 -75
  525. package/build/components/block-list/block-list-compact.native.js.map +0 -1
  526. package/build/components/off-canvas-editor/appender.js +0 -125
  527. package/build/components/off-canvas-editor/appender.js.map +0 -1
  528. package/build/components/off-canvas-editor/block-contents.js +0 -141
  529. package/build/components/off-canvas-editor/block-contents.js.map +0 -1
  530. package/build/components/off-canvas-editor/block-select-button.js +0 -126
  531. package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
  532. package/build/components/off-canvas-editor/block.js +0 -297
  533. package/build/components/off-canvas-editor/block.js.map +0 -1
  534. package/build/components/off-canvas-editor/branch.js +0 -197
  535. package/build/components/off-canvas-editor/branch.js.map +0 -1
  536. package/build/components/off-canvas-editor/context.js +0 -19
  537. package/build/components/off-canvas-editor/context.js.map +0 -1
  538. package/build/components/off-canvas-editor/drop-indicator.js +0 -118
  539. package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
  540. package/build/components/off-canvas-editor/expander.js +0 -41
  541. package/build/components/off-canvas-editor/expander.js.map +0 -1
  542. package/build/components/off-canvas-editor/index.js +0 -236
  543. package/build/components/off-canvas-editor/index.js.map +0 -1
  544. package/build/components/off-canvas-editor/leaf-more-menu.js +0 -146
  545. package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  546. package/build/components/off-canvas-editor/leaf.js +0 -60
  547. package/build/components/off-canvas-editor/leaf.js.map +0 -1
  548. package/build/components/off-canvas-editor/link-ui.js +0 -186
  549. package/build/components/off-canvas-editor/link-ui.js.map +0 -1
  550. package/build/components/off-canvas-editor/update-attributes.js +0 -108
  551. package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
  552. package/build/components/off-canvas-editor/use-block-selection.js +0 -139
  553. package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
  554. package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
  555. package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  556. package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
  557. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  558. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
  559. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  560. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
  561. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  562. package/build/components/off-canvas-editor/utils.js +0 -60
  563. package/build/components/off-canvas-editor/utils.js.map +0 -1
  564. package/build-module/components/block-list/block-list-compact.native.js +0 -60
  565. package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
  566. package/build-module/components/off-canvas-editor/appender.js +0 -108
  567. package/build-module/components/off-canvas-editor/appender.js.map +0 -1
  568. package/build-module/components/off-canvas-editor/block-contents.js +0 -121
  569. package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
  570. package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
  571. package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
  572. package/build-module/components/off-canvas-editor/block.js +0 -273
  573. package/build-module/components/off-canvas-editor/block.js.map +0 -1
  574. package/build-module/components/off-canvas-editor/branch.js +0 -179
  575. package/build-module/components/off-canvas-editor/branch.js.map +0 -1
  576. package/build-module/components/off-canvas-editor/context.js +0 -7
  577. package/build-module/components/off-canvas-editor/context.js.map +0 -1
  578. package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
  579. package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
  580. package/build-module/components/off-canvas-editor/expander.js +0 -32
  581. package/build-module/components/off-canvas-editor/expander.js.map +0 -1
  582. package/build-module/components/off-canvas-editor/index.js +0 -213
  583. package/build-module/components/off-canvas-editor/index.js.map +0 -1
  584. package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -128
  585. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  586. package/build-module/components/off-canvas-editor/leaf.js +0 -45
  587. package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
  588. package/build-module/components/off-canvas-editor/link-ui.js +0 -166
  589. package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
  590. package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
  591. package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
  592. package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
  593. package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
  594. package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
  595. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  596. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
  597. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  598. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
  599. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  600. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
  601. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  602. package/build-module/components/off-canvas-editor/utils.js +0 -44
  603. package/build-module/components/off-canvas-editor/utils.js.map +0 -1
  604. package/src/components/block-list/block-list-compact.native.js +0 -63
  605. package/src/components/off-canvas-editor/README.md +0 -5
  606. package/src/components/off-canvas-editor/appender.js +0 -124
  607. package/src/components/off-canvas-editor/block-contents.js +0 -156
  608. package/src/components/off-canvas-editor/block-select-button.js +0 -128
  609. package/src/components/off-canvas-editor/block.js +0 -347
  610. package/src/components/off-canvas-editor/branch.js +0 -238
  611. package/src/components/off-canvas-editor/context.js +0 -8
  612. package/src/components/off-canvas-editor/drop-indicator.js +0 -126
  613. package/src/components/off-canvas-editor/expander.js +0 -26
  614. package/src/components/off-canvas-editor/index.js +0 -271
  615. package/src/components/off-canvas-editor/leaf-more-menu.js +0 -157
  616. package/src/components/off-canvas-editor/leaf.js +0 -52
  617. package/src/components/off-canvas-editor/link-ui.js +0 -167
  618. package/src/components/off-canvas-editor/style.scss +0 -34
  619. package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
  620. package/src/components/off-canvas-editor/test/utils.js +0 -50
  621. package/src/components/off-canvas-editor/update-attributes.js +0 -99
  622. package/src/components/off-canvas-editor/use-block-selection.js +0 -169
  623. package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
  624. package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
  625. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
  626. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
  627. package/src/components/off-canvas-editor/utils.js +0 -58
@@ -9,34 +9,34 @@ exports.default = void 0;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
12
  var _reactNative = require("react-native");
15
13
 
16
14
  var _components = require("@wordpress/components");
17
15
 
18
- var _data = require("@wordpress/data");
19
-
20
- var _compose = require("@wordpress/compose");
21
-
22
16
  var _blocks = require("@wordpress/blocks");
23
17
 
24
- var _blockEditor = require("@wordpress/block-editor");
18
+ var _data = require("@wordpress/data");
25
19
 
26
- var _block = _interopRequireDefault(require("./block.scss"));
20
+ var _compose = require("@wordpress/compose");
27
21
 
28
22
  var _blockEdit = _interopRequireDefault(require("../block-edit"));
29
23
 
24
+ var _blockDraggable = _interopRequireDefault(require("../block-draggable"));
25
+
30
26
  var _blockInvalidWarning = _interopRequireDefault(require("./block-invalid-warning"));
31
27
 
32
28
  var _blockMobileToolbar = _interopRequireDefault(require("../block-mobile-toolbar"));
33
29
 
34
- var _store = require("../../store");
30
+ var _blockOutline = _interopRequireDefault(require("./block-outline"));
35
31
 
36
- var _blockDraggable = _interopRequireDefault(require("../block-draggable"));
32
+ var _block = _interopRequireDefault(require("./block.scss"));
33
+
34
+ var _store = require("../../store");
37
35
 
38
36
  var _layout = require("./layout");
39
37
 
38
+ var _useSetting = _interopRequireDefault(require("../use-setting"));
39
+
40
40
  /**
41
41
  * External dependencies
42
42
  */
@@ -48,331 +48,363 @@ var _layout = require("./layout");
48
48
  /**
49
49
  * Internal dependencies
50
50
  */
51
- const emptyArray = [];
51
+ const emptyArray = []; // Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.
52
+
53
+ const wrapperPropsCache = new WeakMap();
54
+ const emptyObj = {};
55
+
56
+ function getWrapperProps(value, getWrapperPropsFunction) {
57
+ if (!getWrapperPropsFunction) {
58
+ return emptyObj;
59
+ }
60
+
61
+ const cachedValue = wrapperPropsCache.get(value);
52
62
 
53
- function BlockForType(_ref) {
63
+ if (!cachedValue) {
64
+ const wrapperProps = getWrapperPropsFunction(value);
65
+ wrapperPropsCache.set(value, wrapperProps);
66
+ return wrapperProps;
67
+ }
68
+
69
+ return cachedValue;
70
+ }
71
+
72
+ function BlockWrapper(_ref) {
54
73
  let {
55
- attributes,
74
+ accessibilityLabel,
75
+ align,
76
+ blockWidth,
77
+ children,
56
78
  clientId,
57
- contentStyle,
58
- getBlockWidth,
59
- insertBlocksAfter,
79
+ draggingClientId,
80
+ draggingEnabled,
81
+ isDescendentBlockSelected,
82
+ isParentSelected,
60
83
  isSelected,
61
- onMerge,
62
- name,
63
- onBlockFocus,
64
- onChange,
84
+ isStackedHorizontally,
85
+ isTouchable,
86
+ marginHorizontal,
87
+ marginVertical,
65
88
  onDeleteBlock,
66
- onReplace,
67
- parentWidth,
68
- parentBlockAlignment,
69
- wrapperProps,
70
- blockWidth,
71
- baseGlobalStyles
89
+ onFocus
72
90
  } = _ref;
73
- const defaultColors = (0, _components.useMobileGlobalStylesColors)();
74
- const fontSizes = (0, _blockEditor.useSetting)('typography.fontSizes') || emptyArray;
75
- const globalStyle = (0, _components.useGlobalStyles)();
76
- const mergedStyle = (0, _element.useMemo)(() => {
77
- return (0, _components.getMergedGlobalStyles)(baseGlobalStyles, globalStyle, wrapperProps.style, attributes, defaultColors, name, fontSizes);
78
- }, [defaultColors, globalStyle, // I couldn't simply use attributes and wrapperProps.styles as a dependency because they are almost always a new reference.
79
- // Thanks to the JSON.stringify we check if the value is the same instead of reference.
80
- JSON.stringify(wrapperProps.style), JSON.stringify(Object.fromEntries(Object.entries(attributes !== null && attributes !== void 0 ? attributes : {}).filter(_ref2 => {
81
- let [key] = _ref2;
82
- return _components.GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes(key);
83
- })))]);
84
- const parentLayout = (0, _layout.useLayout)();
85
- return (0, _element.createElement)(_components.GlobalStylesContext.Provider, {
86
- value: mergedStyle
87
- }, (0, _element.createElement)(_blockEdit.default, {
88
- name: name,
91
+ const {
92
+ width: screenWidth
93
+ } = (0, _reactNative.useWindowDimensions)();
94
+ const anchorNodeRef = (0, _element.useRef)();
95
+ const {
96
+ isFullWidth
97
+ } = _components.alignmentHelpers;
98
+ const isScreenWidthEqual = blockWidth === screenWidth;
99
+ const isFullWidthToolbar = isFullWidth(align) || isScreenWidthEqual;
100
+ const blockWrapperStyles = {
101
+ flex: 1
102
+ };
103
+ const blockWrapperStyle = [blockWrapperStyles, {
104
+ marginVertical,
105
+ marginHorizontal
106
+ }];
107
+ const accessible = !(isSelected || isDescendentBlockSelected);
108
+ return (0, _element.createElement)(_reactNative.Pressable, {
109
+ accessibilityLabel: accessibilityLabel,
110
+ accessibilityRole: "button",
111
+ accessible: accessible,
112
+ disabled: !isTouchable,
113
+ onPress: onFocus,
114
+ style: blockWrapperStyle
115
+ }, (0, _element.createElement)(_blockOutline.default, {
89
116
  isSelected: isSelected,
90
- attributes: attributes,
91
- setAttributes: onChange,
92
- onFocus: onBlockFocus,
93
- onReplace: onReplace,
94
- insertBlocksAfter: insertBlocksAfter,
95
- mergeBlocks: onMerge // Block level styles.
96
- ,
97
- wrapperProps: wrapperProps // Inherited styles merged with block level styles.
98
- ,
99
- style: mergedStyle,
117
+ isParentSelected: isParentSelected,
118
+ screenWidth: screenWidth
119
+ }), (0, _element.createElement)(_blockDraggable.default, {
100
120
  clientId: clientId,
101
- parentWidth: parentWidth,
102
- contentStyle: contentStyle,
103
- onDeleteBlock: onDeleteBlock,
121
+ draggingClientId: draggingClientId,
122
+ enabled: draggingEnabled,
123
+ testID: "draggable-trigger-content"
124
+ }, children), (0, _element.createElement)(_reactNative.View, {
125
+ style: _block.default.neutralToolbar,
126
+ ref: anchorNodeRef
127
+ }, isSelected && (0, _element.createElement)(_blockMobileToolbar.default, {
128
+ anchorNodeRef: anchorNodeRef.current,
104
129
  blockWidth: blockWidth,
105
- parentBlockAlignment: parentBlockAlignment,
106
- __unstableParentLayout: parentLayout
107
- }), (0, _element.createElement)(_reactNative.View, {
108
- onLayout: getBlockWidth
109
- }));
130
+ clientId: clientId,
131
+ draggingClientId: draggingClientId,
132
+ isFullWidth: isFullWidthToolbar,
133
+ isStackedHorizontally: isStackedHorizontally,
134
+ onDelete: onDeleteBlock
135
+ })));
110
136
  }
111
137
 
112
- class BlockListBlock extends _element.Component {
113
- constructor() {
114
- super(...arguments);
115
- this.insertBlocksAfter = this.insertBlocksAfter.bind(this);
116
- this.onFocus = this.onFocus.bind(this);
117
- this.getBlockWidth = this.getBlockWidth.bind(this);
118
- this.state = {
119
- blockWidth: this.props.blockWidth - 2 * this.props.marginHorizontal
120
- };
121
- this.anchorNodeRef = (0, _element.createRef)();
122
- }
138
+ function BlockListBlock(_ref2) {
139
+ let {
140
+ attributes,
141
+ blockWidth: blockWrapperWidth,
142
+ canRemove,
143
+ clientId,
144
+ contentStyle,
145
+ isLocked,
146
+ isSelected,
147
+ isSelectionEnabled,
148
+ isStackedHorizontally,
149
+ isValid,
150
+ marginHorizontal,
151
+ marginVertical,
152
+ name,
153
+ onDeleteBlock,
154
+ onInsertBlocksAfter,
155
+ onMerge,
156
+ onReplace,
157
+ parentBlockAlignment,
158
+ parentWidth,
159
+ rootClientId,
160
+ setAttributes,
161
+ toggleSelection
162
+ } = _ref2;
163
+ const {
164
+ baseGlobalStyles,
165
+ blockType,
166
+ draggingClientId,
167
+ draggingEnabled,
168
+ isDescendantOfParentSelected,
169
+ isDescendentBlockSelected,
170
+ isParentSelected,
171
+ order
172
+ } = (0, _data.useSelect)(select => {
173
+ var _getSettings;
123
174
 
124
- onFocus() {
125
175
  const {
126
- firstToSelectId,
127
- isSelected,
128
- onSelect
129
- } = this.props;
130
-
176
+ getBlockCount,
177
+ getBlockHierarchyRootClientId,
178
+ getBlockIndex,
179
+ getBlockParents,
180
+ getSelectedBlockClientId,
181
+ getSettings,
182
+ hasSelectedInnerBlock
183
+ } = select(_store.store);
184
+ const currentBlockType = (0, _blocks.getBlockType)(name || 'core/missing');
185
+ const blockOrder = getBlockIndex(clientId);
186
+ const descendentBlockSelected = hasSelectedInnerBlock(clientId, true);
187
+ const selectedBlockClientId = getSelectedBlockClientId();
188
+ const parents = getBlockParents(clientId, true);
189
+ const parentSelected = // Set false as a default value to prevent re-render when it's changed from null to false.
190
+ (selectedBlockClientId || false) && selectedBlockClientId === rootClientId;
191
+ const selectedParents = clientId ? parents : [];
192
+ const descendantOfParentSelected = selectedParents.includes(rootClientId);
193
+ const hasInnerBlocks = getBlockCount(clientId) > 0; // For blocks with inner blocks, we only enable the dragging in the nested
194
+ // blocks if any of them are selected. This way we prevent the long-press
195
+ // gesture from being disabled for elements within the block UI.
196
+
197
+ const isDraggingEnabled = !hasInnerBlocks || isSelected || !descendentBlockSelected; // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
198
+ // will be the top in the hierarchy.
199
+
200
+ const currentDraggingClientId = getBlockHierarchyRootClientId(clientId);
201
+ const globalStylesBaseStyles = (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.__experimentalGlobalStylesBaseStyles;
202
+ return {
203
+ baseGlobalStyles: globalStylesBaseStyles,
204
+ blockType: currentBlockType,
205
+ draggingClientId: currentDraggingClientId,
206
+ draggingEnabled: isDraggingEnabled,
207
+ isDescendantOfParentSelected: descendantOfParentSelected,
208
+ isDescendentBlockSelected: descendentBlockSelected,
209
+ isParentSelected: parentSelected,
210
+ order: blockOrder
211
+ };
212
+ }, [clientId, isSelected, name, rootClientId]);
213
+ const {
214
+ removeBlock,
215
+ selectBlock
216
+ } = (0, _data.useDispatch)(_store.store);
217
+ const initialBlockWidth = blockWrapperWidth - 2 * marginHorizontal;
218
+ const [blockWidth, setBlockWidth] = (0, _element.useState)(initialBlockWidth);
219
+ const parentLayout = (0, _layout.useLayout)() || {};
220
+ const defaultColors = (0, _components.useMobileGlobalStylesColors)();
221
+ const globalStyle = (0, _components.useGlobalStyles)();
222
+ const fontSizes = (0, _useSetting.default)('typography.fontSizes') || emptyArray;
223
+ const onRemove = (0, _element.useCallback)(() => removeBlock(clientId), [clientId, removeBlock]);
224
+ const onFocus = (0, _element.useCallback)(() => {
131
225
  if (!isSelected) {
132
- onSelect(firstToSelectId);
133
- }
134
- }
135
-
136
- insertBlocksAfter(blocks) {
137
- this.props.onInsertBlocks(blocks, this.props.order + 1);
138
-
139
- if (blocks[0]) {
140
- // Focus on the first block inserted.
141
- this.props.onSelect(blocks[0].clientId);
226
+ selectBlock(clientId);
142
227
  }
143
- }
144
-
145
- getBlockWidth(_ref3) {
228
+ }, [selectBlock, clientId, isSelected]);
229
+ const onLayout = (0, _element.useCallback)(_ref3 => {
146
230
  let {
147
231
  nativeEvent
148
232
  } = _ref3;
149
- const {
150
- layout
151
- } = nativeEvent;
152
- const {
153
- blockWidth
154
- } = this.state;
155
- const layoutWidth = Math.floor(layout.width);
233
+ const layoutWidth = Math.floor(nativeEvent.layout.width);
156
234
 
157
235
  if (!blockWidth || !layoutWidth) {
158
236
  return;
159
237
  }
160
238
 
161
239
  if (blockWidth !== layoutWidth) {
162
- this.setState({
163
- blockWidth: layoutWidth
164
- });
240
+ setBlockWidth(layoutWidth);
165
241
  }
166
- }
242
+ }, [blockWidth, setBlockWidth]); // Block level styles.
167
243
 
168
- getBlockForType() {
169
- const {
170
- blockWidth
171
- } = this.state;
172
- return (0, _element.createElement)(BlockForType, (0, _extends2.default)({}, this.props, {
173
- onBlockFocus: this.onFocus,
174
- insertBlocksAfter: this.insertBlocksAfter,
175
- getBlockWidth: this.getBlockWidth,
176
- blockWidth: blockWidth
177
- }));
178
- }
244
+ const wrapperProps = getWrapperProps(attributes, blockType.getEditWrapperProps); // Inherited styles merged with block level styles.
179
245
 
180
- renderBlockTitle() {
181
- return (0, _element.createElement)(_reactNative.View, {
182
- style: _block.default.blockTitle
183
- }, (0, _element.createElement)(_reactNative.Text, null, "BlockType: ", this.props.name));
184
- }
185
-
186
- render() {
187
- const {
188
- attributes,
189
- blockType,
190
- clientId,
191
- icon,
192
- isSelected,
193
- isValid,
194
- order,
195
- title,
196
- isDimmed,
197
- isTouchable,
198
- onDeleteBlock,
199
- isStackedHorizontally,
200
- isParentSelected,
201
- getStylesFromColorScheme,
202
- marginVertical,
203
- marginHorizontal,
204
- isInnerBlockSelected,
205
- name,
206
- draggingEnabled,
207
- draggingClientId
208
- } = this.props;
209
-
210
- if (!attributes || !blockType) {
211
- return null;
212
- }
213
-
214
- const {
215
- blockWidth
216
- } = this.state;
217
- const {
218
- align
219
- } = attributes;
220
- const accessibilityLabel = (0, _blocks.__experimentalGetAccessibleBlockLabel)(blockType, attributes, order + 1);
221
- const {
222
- isFullWidth,
223
- isContainerRelated
224
- } = _components.alignmentHelpers;
225
- const accessible = !(isSelected || isInnerBlockSelected);
226
- const screenWidth = Math.floor(_reactNative.Dimensions.get('window').width);
227
- const isScreenWidthEqual = blockWidth === screenWidth;
228
- const isScreenWidthWider = blockWidth < screenWidth;
229
- const isFullWidthToolbar = isFullWidth(align) || isScreenWidthEqual;
230
- return (0, _element.createElement)(_reactNative.TouchableWithoutFeedback, {
231
- onPress: this.onFocus,
232
- accessible: accessible,
233
- accessibilityRole: 'button'
234
- }, (0, _element.createElement)(_reactNative.View, {
235
- style: {
236
- flex: 1
237
- },
238
- accessibilityLabel: accessibilityLabel
239
- }, (0, _element.createElement)(_reactNative.View, {
240
- pointerEvents: isTouchable ? 'auto' : 'box-only',
241
- accessibilityLabel: accessibilityLabel,
242
- style: [{
243
- marginVertical,
244
- marginHorizontal,
245
- flex: 1
246
- }, isDimmed && _block.default.dimmed]
247
- }, isSelected && (0, _element.createElement)(_reactNative.View, {
248
- pointerEvents: "box-none",
249
- style: [_block.default.solidBorder, isFullWidth(align) && isScreenWidthWider && _block.default.borderFullWidth, isFullWidth(align) && isContainerRelated(name) && isScreenWidthWider && _block.default.containerBorderFullWidth, getStylesFromColorScheme(_block.default.solidBorderColor, _block.default.solidBorderColorDark)]
250
- }), isParentSelected && (0, _element.createElement)(_reactNative.View, {
251
- style: [_block.default.dashedBorder, getStylesFromColorScheme(_block.default.dashedBorderColor, _block.default.dashedBorderColorDark)]
252
- }), (0, _element.createElement)(_blockDraggable.default, {
253
- clientId: clientId,
254
- draggingClientId: draggingClientId,
255
- enabled: draggingEnabled,
256
- testID: "draggable-trigger-content"
257
- }, () => isValid ? this.getBlockForType() : (0, _element.createElement)(_blockInvalidWarning.default, {
258
- blockTitle: title,
259
- icon: icon,
260
- clientId: clientId
261
- })), (0, _element.createElement)(_reactNative.View, {
262
- style: _block.default.neutralToolbar,
263
- ref: this.anchorNodeRef
264
- }, isSelected && (0, _element.createElement)(_blockMobileToolbar.default, {
265
- clientId: clientId,
266
- onDelete: onDeleteBlock,
267
- isStackedHorizontally: isStackedHorizontally,
268
- blockWidth: blockWidth,
269
- anchorNodeRef: this.anchorNodeRef.current,
270
- isFullWidth: isFullWidthToolbar,
271
- draggingClientId: draggingClientId
272
- })))));
273
- }
274
-
275
- } // Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.
276
-
277
-
278
- const wrapperPropsCache = new WeakMap();
279
- const emptyObj = {};
280
-
281
- function getWrapperProps(value, getWrapperPropsFunction) {
282
- if (!getWrapperPropsFunction) {
283
- return emptyObj;
284
- }
285
-
286
- const cachedValue = wrapperPropsCache.get(value);
287
-
288
- if (!cachedValue) {
289
- const wrapperProps = getWrapperPropsFunction(value);
290
- wrapperPropsCache.set(value, wrapperProps);
291
- return wrapperProps;
292
- }
293
-
294
- return cachedValue;
246
+ const mergedStyle = (0, _element.useMemo)(() => {
247
+ return (0, _components.getMergedGlobalStyles)(baseGlobalStyles, globalStyle, wrapperProps.style, attributes, defaultColors, name, fontSizes); // eslint-disable-next-line react-hooks/exhaustive-deps
248
+ }, [// It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.
249
+ // JSON.stringify is used for the following purposes:
250
+ // 1. To create a single, comparable value from the globalStyle, wrapperProps.style, and attributes objects. This allows useMemo to
251
+ // efficiently determine if a change has occurred in any of these objects.
252
+ // 2. To filter the attributes object, ensuring that only the relevant attributes (included in
253
+ // GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of
254
+ // unnecessary useMemo calls when other, unrelated attributes change.
255
+ // eslint-disable-next-line react-hooks/exhaustive-deps
256
+ JSON.stringify(globalStyle), // eslint-disable-next-line react-hooks/exhaustive-deps
257
+ JSON.stringify(wrapperProps.style), // eslint-disable-next-line react-hooks/exhaustive-deps
258
+ JSON.stringify(Object.fromEntries(Object.entries(attributes !== null && attributes !== void 0 ? attributes : {}).filter(_ref4 => {
259
+ let [key] = _ref4;
260
+ return _components.GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes(key);
261
+ })))]);
262
+ const {
263
+ align
264
+ } = attributes;
265
+ const isFocused = isSelected || isDescendentBlockSelected;
266
+ const isTouchable = isSelected || isDescendantOfParentSelected || isParentSelected || !rootClientId;
267
+ const accessibilityLabel = (0, _blocks.__experimentalGetAccessibleBlockLabel)(blockType, attributes, order + 1);
268
+ return (0, _element.createElement)(BlockWrapper, {
269
+ accessibilityLabel: accessibilityLabel,
270
+ align: align,
271
+ blockWidth: blockWidth,
272
+ clientId: clientId,
273
+ draggingClientId: draggingClientId,
274
+ draggingEnabled: draggingEnabled,
275
+ isFocused: isFocused,
276
+ isDescendentBlockSelected: isDescendentBlockSelected,
277
+ isParentSelected: isParentSelected,
278
+ isSelected: isSelected,
279
+ isStackedHorizontally: isStackedHorizontally,
280
+ isTouchable: isTouchable,
281
+ marginHorizontal: marginHorizontal,
282
+ marginVertical: marginVertical,
283
+ onDeleteBlock: onDeleteBlock,
284
+ onFocus: onFocus
285
+ }, () => !isValid ? (0, _element.createElement)(_blockInvalidWarning.default, {
286
+ clientId: clientId
287
+ }) : (0, _element.createElement)(_components.GlobalStylesContext.Provider, {
288
+ value: mergedStyle
289
+ }, (0, _element.createElement)(_blockEdit.default, {
290
+ attributes: attributes,
291
+ blockWidth: blockWidth,
292
+ clientId: clientId,
293
+ contentStyle: contentStyle,
294
+ insertBlocksAfter: isLocked ? undefined : onInsertBlocksAfter,
295
+ isSelected: isSelected,
296
+ isSelectionEnabled: isSelectionEnabled,
297
+ mergeBlocks: canRemove ? onMerge : undefined,
298
+ name: name,
299
+ onFocus: onFocus,
300
+ onRemove: canRemove ? onRemove : undefined,
301
+ onReplace: canRemove ? onReplace : undefined,
302
+ parentBlockAlignment: parentBlockAlignment,
303
+ parentWidth: parentWidth,
304
+ setAttributes: setAttributes,
305
+ style: mergedStyle,
306
+ toggleSelection: toggleSelection,
307
+ __unstableParentLayout: Object.keys(parentLayout).length ? parentLayout : undefined,
308
+ wrapperProps: wrapperProps
309
+ }), (0, _element.createElement)(_reactNative.View, {
310
+ onLayout: onLayout
311
+ })));
295
312
  }
296
313
 
297
- var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
298
- var _getSettings;
299
-
314
+ const applyWithSelect = (0, _data.withSelect)((select, _ref5) => {
300
315
  let {
301
- clientId
302
- } = _ref4;
316
+ clientId,
317
+ rootClientId
318
+ } = _ref5;
303
319
  const {
304
- getBlockIndex,
305
- getBlockCount,
306
- getSettings,
307
320
  isBlockSelected,
308
- getBlock,
309
- getSelectedBlockClientId,
310
- getLowestCommonAncestorWithSelectedBlock,
311
- getBlockParents,
312
- hasSelectedInnerBlock,
313
- getBlockHierarchyRootClientId
321
+ getBlockMode,
322
+ isSelectionEnabled,
323
+ getTemplateLock,
324
+ __unstableGetBlockWithoutInnerBlocks,
325
+ canRemoveBlock,
326
+ canMoveBlock
314
327
  } = select(_store.store);
315
- const order = getBlockIndex(clientId);
328
+
329
+ const block = __unstableGetBlockWithoutInnerBlocks(clientId);
330
+
316
331
  const isSelected = isBlockSelected(clientId);
317
- const isInnerBlockSelected = hasSelectedInnerBlock(clientId);
318
- const block = getBlock(clientId);
332
+ const templateLock = getTemplateLock(rootClientId);
333
+ const canRemove = canRemoveBlock(clientId, rootClientId);
334
+ const canMove = canMoveBlock(clientId, rootClientId); // The fallback to `{}` is a temporary fix.
335
+ // This function should never be called when a block is not present in
336
+ // the state. It happens now because the order in withSelect rendering
337
+ // is not correct.
338
+
319
339
  const {
320
340
  name,
321
341
  attributes,
322
342
  isValid
323
- } = block || {};
324
- const blockType = (0, _blocks.getBlockType)(name || 'core/missing');
325
- const title = blockType === null || blockType === void 0 ? void 0 : blockType.title;
326
- const icon = blockType === null || blockType === void 0 ? void 0 : blockType.icon;
327
- const parents = getBlockParents(clientId, true);
328
- const parentId = parents[0] || '';
329
- const selectedBlockClientId = getSelectedBlockClientId();
330
- const commonAncestor = getLowestCommonAncestorWithSelectedBlock(clientId);
331
- const commonAncestorIndex = parents.indexOf(commonAncestor) - 1;
332
- const firstToSelectId = commonAncestor ? parents[commonAncestorIndex] : parents[parents.length - 1];
333
- const isParentSelected = // Set false as a default value to prevent re-render when it's changed from null to false.
334
- (selectedBlockClientId || false) && selectedBlockClientId === parentId;
335
- const selectedParents = selectedBlockClientId ? getBlockParents(selectedBlockClientId) : [];
336
- const isDescendantOfParentSelected = selectedParents.includes(parentId);
337
- const isTouchable = isSelected || isDescendantOfParentSelected || isParentSelected || parentId === '';
338
- const baseGlobalStyles = (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.__experimentalGlobalStylesBaseStyles;
339
- const hasInnerBlocks = getBlockCount(clientId) > 0; // For blocks with inner blocks, we only enable the dragging in the nested
340
- // blocks if any of them are selected. This way we prevent the long-press
341
- // gesture from being disabled for elements within the block UI.
342
-
343
- const draggingEnabled = !hasInnerBlocks || isSelected || !hasSelectedInnerBlock(clientId, true); // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
344
- // will be the top in the hierarchy.
345
-
346
- const draggingClientId = getBlockHierarchyRootClientId(clientId);
343
+ } = block || {}; // Do not add new properties here, use `useSelect` instead to avoid
344
+ // leaking new props to the public API (editor.BlockListBlock filter).
345
+
347
346
  return {
348
- icon,
349
- name: name || 'core/missing',
350
- order,
351
- title,
347
+ mode: getBlockMode(clientId),
348
+ isSelectionEnabled: isSelectionEnabled(),
349
+ isLocked: !!templateLock,
350
+ canRemove,
351
+ canMove,
352
+ // Users of the editor.BlockListBlock filter used to be able to
353
+ // access the block prop.
354
+ // Ideally these blocks would rely on the clientId prop only.
355
+ // This is kept for backward compatibility reasons.
356
+ block,
357
+ name,
352
358
  attributes,
353
- blockType,
354
- draggingClientId,
355
- draggingEnabled,
356
- isSelected,
357
- isInnerBlockSelected,
358
359
  isValid,
359
- isParentSelected,
360
- firstToSelectId,
361
- isTouchable,
362
- baseGlobalStyles,
363
- wrapperProps: getWrapperProps(attributes, blockType.getEditWrapperProps)
360
+ isSelected
364
361
  };
365
- }), (0, _data.withDispatch)((dispatch, ownProps, registry) => {
362
+ });
363
+ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, registry) => {
366
364
  const {
365
+ updateBlockAttributes,
367
366
  insertBlocks,
368
367
  mergeBlocks,
369
368
  replaceBlocks,
370
- selectBlock,
371
- updateBlockAttributes,
369
+ toggleSelection,
370
+ __unstableMarkLastChangeAsPersistent,
372
371
  moveBlocksToPosition,
373
372
  removeBlock
374
- } = dispatch(_store.store);
373
+ } = dispatch(_store.store); // Do not add new properties here, use `useDispatch` instead to avoid
374
+ // leaking new props to the public API (editor.BlockListBlock filter).
375
+
375
376
  return {
377
+ setAttributes(newAttributes) {
378
+ const {
379
+ getMultiSelectedBlockClientIds
380
+ } = registry.select(_store.store);
381
+ const multiSelectedBlockClientIds = getMultiSelectedBlockClientIds();
382
+ const {
383
+ clientId
384
+ } = ownProps;
385
+ const clientIds = multiSelectedBlockClientIds.length ? multiSelectedBlockClientIds : [clientId];
386
+ updateBlockAttributes(clientIds, newAttributes);
387
+ },
388
+
389
+ onInsertBlocks(blocks, index) {
390
+ const {
391
+ rootClientId
392
+ } = ownProps;
393
+ insertBlocks(blocks, index, rootClientId);
394
+ },
395
+
396
+ onInsertBlocksAfter(blocks) {
397
+ const {
398
+ clientId,
399
+ rootClientId
400
+ } = ownProps;
401
+ const {
402
+ getBlockIndex
403
+ } = registry.select(_store.store);
404
+ const index = getBlockIndex(clientId);
405
+ insertBlocks(blocks, index + 1, rootClientId);
406
+ },
407
+
376
408
  onMerge(forward) {
377
409
  const {
378
410
  clientId,
@@ -408,22 +440,22 @@ var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
408
440
  if (blockOrder.length === 1 && (0, _blocks.isUnmodifiedBlock)(getBlock(firstClientId))) {
409
441
  removeBlock(_clientId);
410
442
  } else {
411
- if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
412
- moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
413
- } else {
414
- const replacement = (0, _blocks.switchToBlockType)(getBlock(firstClientId), (0, _blocks.getDefaultBlockName)());
443
+ registry.batch(() => {
444
+ if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
445
+ moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
446
+ } else {
447
+ const replacement = (0, _blocks.switchToBlockType)(getBlock(firstClientId), (0, _blocks.getDefaultBlockName)());
415
448
 
416
- if (replacement && replacement.length) {
417
- registry.batch(() => {
449
+ if (replacement && replacement.length) {
418
450
  insertBlocks(replacement, getBlockIndex(_clientId), targetRootClientId, changeSelection);
419
451
  removeBlock(firstClientId, false);
420
- });
452
+ }
421
453
  }
422
- }
423
454
 
424
- if (!getBlockOrder(_clientId).length && (0, _blocks.isUnmodifiedBlock)(getBlock(_clientId))) {
425
- removeBlock(_clientId, false);
426
- }
455
+ if (!getBlockOrder(_clientId).length && (0, _blocks.isUnmodifiedBlock)(getBlock(_clientId))) {
456
+ removeBlock(_clientId, false);
457
+ }
458
+ });
427
459
  }
428
460
  } // For `Delete` or forward merge, we should do the exact same thing
429
461
  // as `Backspace`, but from the other block.
@@ -493,26 +525,30 @@ var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
493
525
  }
494
526
  },
495
527
 
496
- onInsertBlocks(blocks, index) {
497
- insertBlocks(blocks, index, ownProps.rootClientId);
498
- },
499
-
500
- onSelect() {
501
- let clientId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ownProps.clientId;
502
- let initialPosition = arguments.length > 1 ? arguments[1] : undefined;
503
- selectBlock(clientId, initialPosition);
504
- },
528
+ onReplace(blocks, indexToSelect, initialPosition) {
529
+ if (blocks.length && !(0, _blocks.isUnmodifiedDefaultBlock)(blocks[blocks.length - 1])) {
530
+ __unstableMarkLastChangeAsPersistent();
531
+ }
505
532
 
506
- onChange: attributes => {
507
- updateBlockAttributes(ownProps.clientId, attributes);
533
+ replaceBlocks([ownProps.clientId], blocks, indexToSelect, initialPosition);
508
534
  },
509
535
 
510
- onReplace(blocks, indexToSelect) {
511
- replaceBlocks([ownProps.clientId], blocks, indexToSelect);
536
+ toggleSelection(selectionEnabled) {
537
+ toggleSelection(selectionEnabled);
512
538
  }
513
539
 
514
540
  };
515
- }), _compose.withPreferredColorScheme])(BlockListBlock);
541
+ });
542
+
543
+ var _default = (0, _compose.compose)(_compose.pure, applyWithSelect, applyWithDispatch, // Block is sometimes not mounted at the right time, causing it be undefined
544
+ // see issue for more info
545
+ // https://github.com/WordPress/gutenberg/issues/17013
546
+ (0, _compose.ifCondition)(_ref6 => {
547
+ let {
548
+ block
549
+ } = _ref6;
550
+ return !!block;
551
+ }))(BlockListBlock);
516
552
 
517
553
  exports.default = _default;
518
554
  //# sourceMappingURL=block.native.js.map