@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
@@ -1,356 +1,388 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
1
  import { createElement } from "@wordpress/element";
3
2
 
4
3
  /**
5
4
  * External dependencies
6
5
  */
7
- import { View, Text, TouchableWithoutFeedback, Dimensions } from 'react-native';
6
+ import { Pressable, useWindowDimensions, View } from 'react-native';
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
10
 
12
- import { Component, createRef, useMemo } from '@wordpress/element';
11
+ import { useCallback, useMemo, useRef, useState } from '@wordpress/element';
13
12
  import { GlobalStylesContext, getMergedGlobalStyles, useMobileGlobalStylesColors, alignmentHelpers, useGlobalStyles } from '@wordpress/components';
14
- import { withDispatch, withSelect } from '@wordpress/data';
15
- import { compose, withPreferredColorScheme } from '@wordpress/compose';
16
- import { getBlockType, __experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel, switchToBlockType, getDefaultBlockName, isUnmodifiedBlock } from '@wordpress/blocks';
17
- import { useSetting } from '@wordpress/block-editor';
13
+ import { __experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel, getBlockType, getDefaultBlockName, isUnmodifiedBlock, isUnmodifiedDefaultBlock, switchToBlockType } from '@wordpress/blocks';
14
+ import { useDispatch, useSelect, withDispatch, withSelect } from '@wordpress/data';
15
+ import { compose, ifCondition, pure } from '@wordpress/compose';
18
16
  /**
19
17
  * Internal dependencies
20
18
  */
21
19
 
22
- import styles from './block.scss';
23
20
  import BlockEdit from '../block-edit';
21
+ import BlockDraggable from '../block-draggable';
24
22
  import BlockInvalidWarning from './block-invalid-warning';
25
23
  import BlockMobileToolbar from '../block-mobile-toolbar';
24
+ import BlockOutline from './block-outline';
25
+ import styles from './block.scss';
26
26
  import { store as blockEditorStore } from '../../store';
27
- import BlockDraggable from '../block-draggable';
28
27
  import { useLayout } from './layout';
29
- const emptyArray = [];
28
+ import useSetting from '../use-setting';
29
+ const emptyArray = []; // Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.
30
+
31
+ const wrapperPropsCache = new WeakMap();
32
+ const emptyObj = {};
33
+
34
+ function getWrapperProps(value, getWrapperPropsFunction) {
35
+ if (!getWrapperPropsFunction) {
36
+ return emptyObj;
37
+ }
30
38
 
31
- function BlockForType(_ref) {
39
+ const cachedValue = wrapperPropsCache.get(value);
40
+
41
+ if (!cachedValue) {
42
+ const wrapperProps = getWrapperPropsFunction(value);
43
+ wrapperPropsCache.set(value, wrapperProps);
44
+ return wrapperProps;
45
+ }
46
+
47
+ return cachedValue;
48
+ }
49
+
50
+ function BlockWrapper(_ref) {
32
51
  let {
33
- attributes,
52
+ accessibilityLabel,
53
+ align,
54
+ blockWidth,
55
+ children,
34
56
  clientId,
35
- contentStyle,
36
- getBlockWidth,
37
- insertBlocksAfter,
57
+ draggingClientId,
58
+ draggingEnabled,
59
+ isDescendentBlockSelected,
60
+ isParentSelected,
38
61
  isSelected,
39
- onMerge,
40
- name,
41
- onBlockFocus,
42
- onChange,
62
+ isStackedHorizontally,
63
+ isTouchable,
64
+ marginHorizontal,
65
+ marginVertical,
43
66
  onDeleteBlock,
44
- onReplace,
45
- parentWidth,
46
- parentBlockAlignment,
47
- wrapperProps,
48
- blockWidth,
49
- baseGlobalStyles
67
+ onFocus
50
68
  } = _ref;
51
- const defaultColors = useMobileGlobalStylesColors();
52
- const fontSizes = useSetting('typography.fontSizes') || emptyArray;
53
- const globalStyle = useGlobalStyles();
54
- const mergedStyle = useMemo(() => {
55
- return getMergedGlobalStyles(baseGlobalStyles, globalStyle, wrapperProps.style, attributes, defaultColors, name, fontSizes);
56
- }, [defaultColors, globalStyle, // I couldn't simply use attributes and wrapperProps.styles as a dependency because they are almost always a new reference.
57
- // Thanks to the JSON.stringify we check if the value is the same instead of reference.
58
- JSON.stringify(wrapperProps.style), JSON.stringify(Object.fromEntries(Object.entries(attributes !== null && attributes !== void 0 ? attributes : {}).filter(_ref2 => {
59
- let [key] = _ref2;
60
- return GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes(key);
61
- })))]);
62
- const parentLayout = useLayout();
63
- return createElement(GlobalStylesContext.Provider, {
64
- value: mergedStyle
65
- }, createElement(BlockEdit, {
66
- name: name,
69
+ const {
70
+ width: screenWidth
71
+ } = useWindowDimensions();
72
+ const anchorNodeRef = useRef();
73
+ const {
74
+ isFullWidth
75
+ } = alignmentHelpers;
76
+ const isScreenWidthEqual = blockWidth === screenWidth;
77
+ const isFullWidthToolbar = isFullWidth(align) || isScreenWidthEqual;
78
+ const blockWrapperStyles = {
79
+ flex: 1
80
+ };
81
+ const blockWrapperStyle = [blockWrapperStyles, {
82
+ marginVertical,
83
+ marginHorizontal
84
+ }];
85
+ const accessible = !(isSelected || isDescendentBlockSelected);
86
+ return createElement(Pressable, {
87
+ accessibilityLabel: accessibilityLabel,
88
+ accessibilityRole: "button",
89
+ accessible: accessible,
90
+ disabled: !isTouchable,
91
+ onPress: onFocus,
92
+ style: blockWrapperStyle
93
+ }, createElement(BlockOutline, {
67
94
  isSelected: isSelected,
68
- attributes: attributes,
69
- setAttributes: onChange,
70
- onFocus: onBlockFocus,
71
- onReplace: onReplace,
72
- insertBlocksAfter: insertBlocksAfter,
73
- mergeBlocks: onMerge // Block level styles.
74
- ,
75
- wrapperProps: wrapperProps // Inherited styles merged with block level styles.
76
- ,
77
- style: mergedStyle,
95
+ isParentSelected: isParentSelected,
96
+ screenWidth: screenWidth
97
+ }), createElement(BlockDraggable, {
78
98
  clientId: clientId,
79
- parentWidth: parentWidth,
80
- contentStyle: contentStyle,
81
- onDeleteBlock: onDeleteBlock,
99
+ draggingClientId: draggingClientId,
100
+ enabled: draggingEnabled,
101
+ testID: "draggable-trigger-content"
102
+ }, children), createElement(View, {
103
+ style: styles.neutralToolbar,
104
+ ref: anchorNodeRef
105
+ }, isSelected && createElement(BlockMobileToolbar, {
106
+ anchorNodeRef: anchorNodeRef.current,
82
107
  blockWidth: blockWidth,
83
- parentBlockAlignment: parentBlockAlignment,
84
- __unstableParentLayout: parentLayout
85
- }), createElement(View, {
86
- onLayout: getBlockWidth
87
- }));
108
+ clientId: clientId,
109
+ draggingClientId: draggingClientId,
110
+ isFullWidth: isFullWidthToolbar,
111
+ isStackedHorizontally: isStackedHorizontally,
112
+ onDelete: onDeleteBlock
113
+ })));
88
114
  }
89
115
 
90
- class BlockListBlock extends Component {
91
- constructor() {
92
- super(...arguments);
93
- this.insertBlocksAfter = this.insertBlocksAfter.bind(this);
94
- this.onFocus = this.onFocus.bind(this);
95
- this.getBlockWidth = this.getBlockWidth.bind(this);
96
- this.state = {
97
- blockWidth: this.props.blockWidth - 2 * this.props.marginHorizontal
98
- };
99
- this.anchorNodeRef = createRef();
100
- }
116
+ function BlockListBlock(_ref2) {
117
+ let {
118
+ attributes,
119
+ blockWidth: blockWrapperWidth,
120
+ canRemove,
121
+ clientId,
122
+ contentStyle,
123
+ isLocked,
124
+ isSelected,
125
+ isSelectionEnabled,
126
+ isStackedHorizontally,
127
+ isValid,
128
+ marginHorizontal,
129
+ marginVertical,
130
+ name,
131
+ onDeleteBlock,
132
+ onInsertBlocksAfter,
133
+ onMerge,
134
+ onReplace,
135
+ parentBlockAlignment,
136
+ parentWidth,
137
+ rootClientId,
138
+ setAttributes,
139
+ toggleSelection
140
+ } = _ref2;
141
+ const {
142
+ baseGlobalStyles,
143
+ blockType,
144
+ draggingClientId,
145
+ draggingEnabled,
146
+ isDescendantOfParentSelected,
147
+ isDescendentBlockSelected,
148
+ isParentSelected,
149
+ order
150
+ } = useSelect(select => {
151
+ var _getSettings;
101
152
 
102
- onFocus() {
103
153
  const {
104
- firstToSelectId,
105
- isSelected,
106
- onSelect
107
- } = this.props;
108
-
154
+ getBlockCount,
155
+ getBlockHierarchyRootClientId,
156
+ getBlockIndex,
157
+ getBlockParents,
158
+ getSelectedBlockClientId,
159
+ getSettings,
160
+ hasSelectedInnerBlock
161
+ } = select(blockEditorStore);
162
+ const currentBlockType = getBlockType(name || 'core/missing');
163
+ const blockOrder = getBlockIndex(clientId);
164
+ const descendentBlockSelected = hasSelectedInnerBlock(clientId, true);
165
+ const selectedBlockClientId = getSelectedBlockClientId();
166
+ const parents = getBlockParents(clientId, true);
167
+ const parentSelected = // Set false as a default value to prevent re-render when it's changed from null to false.
168
+ (selectedBlockClientId || false) && selectedBlockClientId === rootClientId;
169
+ const selectedParents = clientId ? parents : [];
170
+ const descendantOfParentSelected = selectedParents.includes(rootClientId);
171
+ const hasInnerBlocks = getBlockCount(clientId) > 0; // For blocks with inner blocks, we only enable the dragging in the nested
172
+ // blocks if any of them are selected. This way we prevent the long-press
173
+ // gesture from being disabled for elements within the block UI.
174
+
175
+ const isDraggingEnabled = !hasInnerBlocks || isSelected || !descendentBlockSelected; // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
176
+ // will be the top in the hierarchy.
177
+
178
+ const currentDraggingClientId = getBlockHierarchyRootClientId(clientId);
179
+ const globalStylesBaseStyles = (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.__experimentalGlobalStylesBaseStyles;
180
+ return {
181
+ baseGlobalStyles: globalStylesBaseStyles,
182
+ blockType: currentBlockType,
183
+ draggingClientId: currentDraggingClientId,
184
+ draggingEnabled: isDraggingEnabled,
185
+ isDescendantOfParentSelected: descendantOfParentSelected,
186
+ isDescendentBlockSelected: descendentBlockSelected,
187
+ isParentSelected: parentSelected,
188
+ order: blockOrder
189
+ };
190
+ }, [clientId, isSelected, name, rootClientId]);
191
+ const {
192
+ removeBlock,
193
+ selectBlock
194
+ } = useDispatch(blockEditorStore);
195
+ const initialBlockWidth = blockWrapperWidth - 2 * marginHorizontal;
196
+ const [blockWidth, setBlockWidth] = useState(initialBlockWidth);
197
+ const parentLayout = useLayout() || {};
198
+ const defaultColors = useMobileGlobalStylesColors();
199
+ const globalStyle = useGlobalStyles();
200
+ const fontSizes = useSetting('typography.fontSizes') || emptyArray;
201
+ const onRemove = useCallback(() => removeBlock(clientId), [clientId, removeBlock]);
202
+ const onFocus = useCallback(() => {
109
203
  if (!isSelected) {
110
- onSelect(firstToSelectId);
111
- }
112
- }
113
-
114
- insertBlocksAfter(blocks) {
115
- this.props.onInsertBlocks(blocks, this.props.order + 1);
116
-
117
- if (blocks[0]) {
118
- // Focus on the first block inserted.
119
- this.props.onSelect(blocks[0].clientId);
204
+ selectBlock(clientId);
120
205
  }
121
- }
122
-
123
- getBlockWidth(_ref3) {
206
+ }, [selectBlock, clientId, isSelected]);
207
+ const onLayout = useCallback(_ref3 => {
124
208
  let {
125
209
  nativeEvent
126
210
  } = _ref3;
127
- const {
128
- layout
129
- } = nativeEvent;
130
- const {
131
- blockWidth
132
- } = this.state;
133
- const layoutWidth = Math.floor(layout.width);
211
+ const layoutWidth = Math.floor(nativeEvent.layout.width);
134
212
 
135
213
  if (!blockWidth || !layoutWidth) {
136
214
  return;
137
215
  }
138
216
 
139
217
  if (blockWidth !== layoutWidth) {
140
- this.setState({
141
- blockWidth: layoutWidth
142
- });
143
- }
144
- }
145
-
146
- getBlockForType() {
147
- const {
148
- blockWidth
149
- } = this.state;
150
- return createElement(BlockForType, _extends({}, this.props, {
151
- onBlockFocus: this.onFocus,
152
- insertBlocksAfter: this.insertBlocksAfter,
153
- getBlockWidth: this.getBlockWidth,
154
- blockWidth: blockWidth
155
- }));
156
- }
157
-
158
- renderBlockTitle() {
159
- return createElement(View, {
160
- style: styles.blockTitle
161
- }, createElement(Text, null, "BlockType: ", this.props.name));
162
- }
163
-
164
- render() {
165
- const {
166
- attributes,
167
- blockType,
168
- clientId,
169
- icon,
170
- isSelected,
171
- isValid,
172
- order,
173
- title,
174
- isDimmed,
175
- isTouchable,
176
- onDeleteBlock,
177
- isStackedHorizontally,
178
- isParentSelected,
179
- getStylesFromColorScheme,
180
- marginVertical,
181
- marginHorizontal,
182
- isInnerBlockSelected,
183
- name,
184
- draggingEnabled,
185
- draggingClientId
186
- } = this.props;
187
-
188
- if (!attributes || !blockType) {
189
- return null;
218
+ setBlockWidth(layoutWidth);
190
219
  }
220
+ }, [blockWidth, setBlockWidth]); // Block level styles.
191
221
 
192
- const {
193
- blockWidth
194
- } = this.state;
195
- const {
196
- align
197
- } = attributes;
198
- const accessibilityLabel = getAccessibleBlockLabel(blockType, attributes, order + 1);
199
- const {
200
- isFullWidth,
201
- isContainerRelated
202
- } = alignmentHelpers;
203
- const accessible = !(isSelected || isInnerBlockSelected);
204
- const screenWidth = Math.floor(Dimensions.get('window').width);
205
- const isScreenWidthEqual = blockWidth === screenWidth;
206
- const isScreenWidthWider = blockWidth < screenWidth;
207
- const isFullWidthToolbar = isFullWidth(align) || isScreenWidthEqual;
208
- return createElement(TouchableWithoutFeedback, {
209
- onPress: this.onFocus,
210
- accessible: accessible,
211
- accessibilityRole: 'button'
212
- }, createElement(View, {
213
- style: {
214
- flex: 1
215
- },
216
- accessibilityLabel: accessibilityLabel
217
- }, createElement(View, {
218
- pointerEvents: isTouchable ? 'auto' : 'box-only',
219
- accessibilityLabel: accessibilityLabel,
220
- style: [{
221
- marginVertical,
222
- marginHorizontal,
223
- flex: 1
224
- }, isDimmed && styles.dimmed]
225
- }, isSelected && createElement(View, {
226
- pointerEvents: "box-none",
227
- style: [styles.solidBorder, isFullWidth(align) && isScreenWidthWider && styles.borderFullWidth, isFullWidth(align) && isContainerRelated(name) && isScreenWidthWider && styles.containerBorderFullWidth, getStylesFromColorScheme(styles.solidBorderColor, styles.solidBorderColorDark)]
228
- }), isParentSelected && createElement(View, {
229
- style: [styles.dashedBorder, getStylesFromColorScheme(styles.dashedBorderColor, styles.dashedBorderColorDark)]
230
- }), createElement(BlockDraggable, {
231
- clientId: clientId,
232
- draggingClientId: draggingClientId,
233
- enabled: draggingEnabled,
234
- testID: "draggable-trigger-content"
235
- }, () => isValid ? this.getBlockForType() : createElement(BlockInvalidWarning, {
236
- blockTitle: title,
237
- icon: icon,
238
- clientId: clientId
239
- })), createElement(View, {
240
- style: styles.neutralToolbar,
241
- ref: this.anchorNodeRef
242
- }, isSelected && createElement(BlockMobileToolbar, {
243
- clientId: clientId,
244
- onDelete: onDeleteBlock,
245
- isStackedHorizontally: isStackedHorizontally,
246
- blockWidth: blockWidth,
247
- anchorNodeRef: this.anchorNodeRef.current,
248
- isFullWidth: isFullWidthToolbar,
249
- draggingClientId: draggingClientId
250
- })))));
251
- }
252
-
253
- } // Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.
254
-
255
-
256
- const wrapperPropsCache = new WeakMap();
257
- const emptyObj = {};
258
-
259
- function getWrapperProps(value, getWrapperPropsFunction) {
260
- if (!getWrapperPropsFunction) {
261
- return emptyObj;
262
- }
263
-
264
- const cachedValue = wrapperPropsCache.get(value);
265
-
266
- if (!cachedValue) {
267
- const wrapperProps = getWrapperPropsFunction(value);
268
- wrapperPropsCache.set(value, wrapperProps);
269
- return wrapperProps;
270
- }
222
+ const wrapperProps = getWrapperProps(attributes, blockType.getEditWrapperProps); // Inherited styles merged with block level styles.
271
223
 
272
- return cachedValue;
224
+ const mergedStyle = useMemo(() => {
225
+ return getMergedGlobalStyles(baseGlobalStyles, globalStyle, wrapperProps.style, attributes, defaultColors, name, fontSizes); // eslint-disable-next-line react-hooks/exhaustive-deps
226
+ }, [// It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.
227
+ // JSON.stringify is used for the following purposes:
228
+ // 1. To create a single, comparable value from the globalStyle, wrapperProps.style, and attributes objects. This allows useMemo to
229
+ // efficiently determine if a change has occurred in any of these objects.
230
+ // 2. To filter the attributes object, ensuring that only the relevant attributes (included in
231
+ // GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of
232
+ // unnecessary useMemo calls when other, unrelated attributes change.
233
+ // eslint-disable-next-line react-hooks/exhaustive-deps
234
+ JSON.stringify(globalStyle), // eslint-disable-next-line react-hooks/exhaustive-deps
235
+ JSON.stringify(wrapperProps.style), // eslint-disable-next-line react-hooks/exhaustive-deps
236
+ JSON.stringify(Object.fromEntries(Object.entries(attributes !== null && attributes !== void 0 ? attributes : {}).filter(_ref4 => {
237
+ let [key] = _ref4;
238
+ return GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes(key);
239
+ })))]);
240
+ const {
241
+ align
242
+ } = attributes;
243
+ const isFocused = isSelected || isDescendentBlockSelected;
244
+ const isTouchable = isSelected || isDescendantOfParentSelected || isParentSelected || !rootClientId;
245
+ const accessibilityLabel = getAccessibleBlockLabel(blockType, attributes, order + 1);
246
+ return createElement(BlockWrapper, {
247
+ accessibilityLabel: accessibilityLabel,
248
+ align: align,
249
+ blockWidth: blockWidth,
250
+ clientId: clientId,
251
+ draggingClientId: draggingClientId,
252
+ draggingEnabled: draggingEnabled,
253
+ isFocused: isFocused,
254
+ isDescendentBlockSelected: isDescendentBlockSelected,
255
+ isParentSelected: isParentSelected,
256
+ isSelected: isSelected,
257
+ isStackedHorizontally: isStackedHorizontally,
258
+ isTouchable: isTouchable,
259
+ marginHorizontal: marginHorizontal,
260
+ marginVertical: marginVertical,
261
+ onDeleteBlock: onDeleteBlock,
262
+ onFocus: onFocus
263
+ }, () => !isValid ? createElement(BlockInvalidWarning, {
264
+ clientId: clientId
265
+ }) : createElement(GlobalStylesContext.Provider, {
266
+ value: mergedStyle
267
+ }, createElement(BlockEdit, {
268
+ attributes: attributes,
269
+ blockWidth: blockWidth,
270
+ clientId: clientId,
271
+ contentStyle: contentStyle,
272
+ insertBlocksAfter: isLocked ? undefined : onInsertBlocksAfter,
273
+ isSelected: isSelected,
274
+ isSelectionEnabled: isSelectionEnabled,
275
+ mergeBlocks: canRemove ? onMerge : undefined,
276
+ name: name,
277
+ onFocus: onFocus,
278
+ onRemove: canRemove ? onRemove : undefined,
279
+ onReplace: canRemove ? onReplace : undefined,
280
+ parentBlockAlignment: parentBlockAlignment,
281
+ parentWidth: parentWidth,
282
+ setAttributes: setAttributes,
283
+ style: mergedStyle,
284
+ toggleSelection: toggleSelection,
285
+ __unstableParentLayout: Object.keys(parentLayout).length ? parentLayout : undefined,
286
+ wrapperProps: wrapperProps
287
+ }), createElement(View, {
288
+ onLayout: onLayout
289
+ })));
273
290
  }
274
291
 
275
- export default compose([withSelect((select, _ref4) => {
276
- var _getSettings;
277
-
292
+ const applyWithSelect = withSelect((select, _ref5) => {
278
293
  let {
279
- clientId
280
- } = _ref4;
294
+ clientId,
295
+ rootClientId
296
+ } = _ref5;
281
297
  const {
282
- getBlockIndex,
283
- getBlockCount,
284
- getSettings,
285
298
  isBlockSelected,
286
- getBlock,
287
- getSelectedBlockClientId,
288
- getLowestCommonAncestorWithSelectedBlock,
289
- getBlockParents,
290
- hasSelectedInnerBlock,
291
- getBlockHierarchyRootClientId
299
+ getBlockMode,
300
+ isSelectionEnabled,
301
+ getTemplateLock,
302
+ __unstableGetBlockWithoutInnerBlocks,
303
+ canRemoveBlock,
304
+ canMoveBlock
292
305
  } = select(blockEditorStore);
293
- const order = getBlockIndex(clientId);
306
+
307
+ const block = __unstableGetBlockWithoutInnerBlocks(clientId);
308
+
294
309
  const isSelected = isBlockSelected(clientId);
295
- const isInnerBlockSelected = hasSelectedInnerBlock(clientId);
296
- const block = getBlock(clientId);
310
+ const templateLock = getTemplateLock(rootClientId);
311
+ const canRemove = canRemoveBlock(clientId, rootClientId);
312
+ const canMove = canMoveBlock(clientId, rootClientId); // The fallback to `{}` is a temporary fix.
313
+ // This function should never be called when a block is not present in
314
+ // the state. It happens now because the order in withSelect rendering
315
+ // is not correct.
316
+
297
317
  const {
298
318
  name,
299
319
  attributes,
300
320
  isValid
301
- } = block || {};
302
- const blockType = getBlockType(name || 'core/missing');
303
- const title = blockType === null || blockType === void 0 ? void 0 : blockType.title;
304
- const icon = blockType === null || blockType === void 0 ? void 0 : blockType.icon;
305
- const parents = getBlockParents(clientId, true);
306
- const parentId = parents[0] || '';
307
- const selectedBlockClientId = getSelectedBlockClientId();
308
- const commonAncestor = getLowestCommonAncestorWithSelectedBlock(clientId);
309
- const commonAncestorIndex = parents.indexOf(commonAncestor) - 1;
310
- const firstToSelectId = commonAncestor ? parents[commonAncestorIndex] : parents[parents.length - 1];
311
- const isParentSelected = // Set false as a default value to prevent re-render when it's changed from null to false.
312
- (selectedBlockClientId || false) && selectedBlockClientId === parentId;
313
- const selectedParents = selectedBlockClientId ? getBlockParents(selectedBlockClientId) : [];
314
- const isDescendantOfParentSelected = selectedParents.includes(parentId);
315
- const isTouchable = isSelected || isDescendantOfParentSelected || isParentSelected || parentId === '';
316
- const baseGlobalStyles = (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.__experimentalGlobalStylesBaseStyles;
317
- const hasInnerBlocks = getBlockCount(clientId) > 0; // For blocks with inner blocks, we only enable the dragging in the nested
318
- // blocks if any of them are selected. This way we prevent the long-press
319
- // gesture from being disabled for elements within the block UI.
320
-
321
- const draggingEnabled = !hasInnerBlocks || isSelected || !hasSelectedInnerBlock(clientId, true); // Dragging nested blocks is not supported yet. For this reason, the block to be dragged
322
- // will be the top in the hierarchy.
323
-
324
- const draggingClientId = getBlockHierarchyRootClientId(clientId);
321
+ } = block || {}; // Do not add new properties here, use `useSelect` instead to avoid
322
+ // leaking new props to the public API (editor.BlockListBlock filter).
323
+
325
324
  return {
326
- icon,
327
- name: name || 'core/missing',
328
- order,
329
- title,
325
+ mode: getBlockMode(clientId),
326
+ isSelectionEnabled: isSelectionEnabled(),
327
+ isLocked: !!templateLock,
328
+ canRemove,
329
+ canMove,
330
+ // Users of the editor.BlockListBlock filter used to be able to
331
+ // access the block prop.
332
+ // Ideally these blocks would rely on the clientId prop only.
333
+ // This is kept for backward compatibility reasons.
334
+ block,
335
+ name,
330
336
  attributes,
331
- blockType,
332
- draggingClientId,
333
- draggingEnabled,
334
- isSelected,
335
- isInnerBlockSelected,
336
337
  isValid,
337
- isParentSelected,
338
- firstToSelectId,
339
- isTouchable,
340
- baseGlobalStyles,
341
- wrapperProps: getWrapperProps(attributes, blockType.getEditWrapperProps)
338
+ isSelected
342
339
  };
343
- }), withDispatch((dispatch, ownProps, registry) => {
340
+ });
341
+ const applyWithDispatch = withDispatch((dispatch, ownProps, registry) => {
344
342
  const {
343
+ updateBlockAttributes,
345
344
  insertBlocks,
346
345
  mergeBlocks,
347
346
  replaceBlocks,
348
- selectBlock,
349
- updateBlockAttributes,
347
+ toggleSelection,
348
+ __unstableMarkLastChangeAsPersistent,
350
349
  moveBlocksToPosition,
351
350
  removeBlock
352
- } = dispatch(blockEditorStore);
351
+ } = dispatch(blockEditorStore); // Do not add new properties here, use `useDispatch` instead to avoid
352
+ // leaking new props to the public API (editor.BlockListBlock filter).
353
+
353
354
  return {
355
+ setAttributes(newAttributes) {
356
+ const {
357
+ getMultiSelectedBlockClientIds
358
+ } = registry.select(blockEditorStore);
359
+ const multiSelectedBlockClientIds = getMultiSelectedBlockClientIds();
360
+ const {
361
+ clientId
362
+ } = ownProps;
363
+ const clientIds = multiSelectedBlockClientIds.length ? multiSelectedBlockClientIds : [clientId];
364
+ updateBlockAttributes(clientIds, newAttributes);
365
+ },
366
+
367
+ onInsertBlocks(blocks, index) {
368
+ const {
369
+ rootClientId
370
+ } = ownProps;
371
+ insertBlocks(blocks, index, rootClientId);
372
+ },
373
+
374
+ onInsertBlocksAfter(blocks) {
375
+ const {
376
+ clientId,
377
+ rootClientId
378
+ } = ownProps;
379
+ const {
380
+ getBlockIndex
381
+ } = registry.select(blockEditorStore);
382
+ const index = getBlockIndex(clientId);
383
+ insertBlocks(blocks, index + 1, rootClientId);
384
+ },
385
+
354
386
  onMerge(forward) {
355
387
  const {
356
388
  clientId,
@@ -386,22 +418,22 @@ export default compose([withSelect((select, _ref4) => {
386
418
  if (blockOrder.length === 1 && isUnmodifiedBlock(getBlock(firstClientId))) {
387
419
  removeBlock(_clientId);
388
420
  } else {
389
- if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
390
- moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
391
- } else {
392
- const replacement = switchToBlockType(getBlock(firstClientId), getDefaultBlockName());
421
+ registry.batch(() => {
422
+ if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
423
+ moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
424
+ } else {
425
+ const replacement = switchToBlockType(getBlock(firstClientId), getDefaultBlockName());
393
426
 
394
- if (replacement && replacement.length) {
395
- registry.batch(() => {
427
+ if (replacement && replacement.length) {
396
428
  insertBlocks(replacement, getBlockIndex(_clientId), targetRootClientId, changeSelection);
397
429
  removeBlock(firstClientId, false);
398
- });
430
+ }
399
431
  }
400
- }
401
432
 
402
- if (!getBlockOrder(_clientId).length && isUnmodifiedBlock(getBlock(_clientId))) {
403
- removeBlock(_clientId, false);
404
- }
433
+ if (!getBlockOrder(_clientId).length && isUnmodifiedBlock(getBlock(_clientId))) {
434
+ removeBlock(_clientId, false);
435
+ }
436
+ });
405
437
  }
406
438
  } // For `Delete` or forward merge, we should do the exact same thing
407
439
  // as `Backspace`, but from the other block.
@@ -471,24 +503,27 @@ export default compose([withSelect((select, _ref4) => {
471
503
  }
472
504
  },
473
505
 
474
- onInsertBlocks(blocks, index) {
475
- insertBlocks(blocks, index, ownProps.rootClientId);
476
- },
477
-
478
- onSelect() {
479
- let clientId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ownProps.clientId;
480
- let initialPosition = arguments.length > 1 ? arguments[1] : undefined;
481
- selectBlock(clientId, initialPosition);
482
- },
506
+ onReplace(blocks, indexToSelect, initialPosition) {
507
+ if (blocks.length && !isUnmodifiedDefaultBlock(blocks[blocks.length - 1])) {
508
+ __unstableMarkLastChangeAsPersistent();
509
+ }
483
510
 
484
- onChange: attributes => {
485
- updateBlockAttributes(ownProps.clientId, attributes);
511
+ replaceBlocks([ownProps.clientId], blocks, indexToSelect, initialPosition);
486
512
  },
487
513
 
488
- onReplace(blocks, indexToSelect) {
489
- replaceBlocks([ownProps.clientId], blocks, indexToSelect);
514
+ toggleSelection(selectionEnabled) {
515
+ toggleSelection(selectionEnabled);
490
516
  }
491
517
 
492
518
  };
493
- }), withPreferredColorScheme])(BlockListBlock);
519
+ });
520
+ export default compose(pure, applyWithSelect, applyWithDispatch, // Block is sometimes not mounted at the right time, causing it be undefined
521
+ // see issue for more info
522
+ // https://github.com/WordPress/gutenberg/issues/17013
523
+ ifCondition(_ref6 => {
524
+ let {
525
+ block
526
+ } = _ref6;
527
+ return !!block;
528
+ }))(BlockListBlock);
494
529
  //# sourceMappingURL=block.native.js.map