@wordpress/block-editor 12.15.0 → 12.16.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 (500) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +9 -4
  3. package/build/components/block-canvas/index.js +22 -6
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-controls/hook.js +3 -23
  8. package/build/components/block-controls/hook.js.map +1 -1
  9. package/build/components/block-edit/context.js +5 -1
  10. package/build/components/block-edit/context.js.map +1 -1
  11. package/build/components/block-edit/index.js +18 -9
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-info-slot-fill/index.js +3 -4
  14. package/build/components/block-info-slot-fill/index.js.map +1 -1
  15. package/build/components/block-list/block.js +28 -9
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +14 -5
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/use-block-props/index.js +61 -18
  20. package/build/components/block-list/use-block-props/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  22. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
  24. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  26. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +1 -1
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +2 -9
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-rename/modal.js +3 -0
  32. package/build/components/block-rename/modal.js.map +1 -1
  33. package/build/components/block-settings/container.native.js +6 -4
  34. package/build/components/block-settings/container.native.js.map +1 -1
  35. package/build/components/block-styles/index.js +1 -1
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-styles/index.native.js +3 -2
  38. package/build/components/block-styles/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/index.js +89 -27
  40. package/build/components/block-toolbar/index.js.map +1 -1
  41. package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
  42. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  43. package/build/components/block-tools/block-toolbar-popover.js +86 -0
  44. package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
  45. package/build/components/block-tools/index.js +27 -24
  46. package/build/components/block-tools/index.js.map +1 -1
  47. package/build/components/block-types-list/index.native.js +4 -3
  48. package/build/components/block-types-list/index.native.js.map +1 -1
  49. package/build/components/block-variation-picker/index.native.js +2 -1
  50. package/build/components/block-variation-picker/index.native.js.map +1 -1
  51. package/build/components/colors-gradients/control.js +28 -17
  52. package/build/components/colors-gradients/control.js.map +1 -1
  53. package/build/components/duotone-control/index.js +1 -4
  54. package/build/components/duotone-control/index.js.map +1 -1
  55. package/build/components/global-styles/color-panel.js +22 -20
  56. package/build/components/global-styles/color-panel.js.map +1 -1
  57. package/build/components/global-styles/filters-panel.js +9 -3
  58. package/build/components/global-styles/filters-panel.js.map +1 -1
  59. package/build/components/global-styles/typography-panel.js +20 -31
  60. package/build/components/global-styles/typography-panel.js.map +1 -1
  61. package/build/components/image-link-destinations/index.native.js +118 -0
  62. package/build/components/image-link-destinations/index.native.js.map +1 -0
  63. package/build/components/index.native.js +8 -0
  64. package/build/components/index.native.js.map +1 -1
  65. package/build/components/inserter/media-tab/media-panel.js +2 -2
  66. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  67. package/build/components/inserter/menu.js +14 -7
  68. package/build/components/inserter/menu.js.map +1 -1
  69. package/build/components/inserter/preview-panel.js +2 -2
  70. package/build/components/inserter/preview-panel.js.map +1 -1
  71. package/build/components/inserter-button/index.native.js +98 -0
  72. package/build/components/inserter-button/index.native.js.map +1 -0
  73. package/build/components/inserter-button/sparkles.js +23 -0
  74. package/build/components/inserter-button/sparkles.js.map +1 -0
  75. package/build/components/inserter-draggable-blocks/index.js +8 -4
  76. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  77. package/build/components/inspector-controls/fill.js +3 -3
  78. package/build/components/inspector-controls/fill.js.map +1 -1
  79. package/build/components/inspector-controls/fill.native.js +3 -3
  80. package/build/components/inspector-controls/fill.native.js.map +1 -1
  81. package/build/components/navigable-toolbar/index.js +2 -2
  82. package/build/components/navigable-toolbar/index.js.map +1 -1
  83. package/build/components/preview-options/index.js +6 -62
  84. package/build/components/preview-options/index.js.map +1 -1
  85. package/build/components/rich-text/content.js +26 -23
  86. package/build/components/rich-text/content.js.map +1 -1
  87. package/build/components/rich-text/get-rich-text-values.js +2 -1
  88. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  89. package/build/components/rich-text/index.js +2 -30
  90. package/build/components/rich-text/index.js.map +1 -1
  91. package/build/components/rich-text/index.native.js +9 -16
  92. package/build/components/rich-text/index.native.js.map +1 -1
  93. package/build/components/rich-text/native/get-format-colors.native.js +22 -24
  94. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  95. package/build/components/rich-text/native/index.native.js +7 -34
  96. package/build/components/rich-text/native/index.native.js.map +1 -1
  97. package/build/components/rich-text/use-input-rules.js +5 -1
  98. package/build/components/rich-text/use-input-rules.js.map +1 -1
  99. package/build/components/rich-text/with-deprecations.js +50 -0
  100. package/build/components/rich-text/with-deprecations.js.map +1 -0
  101. package/build/components/use-block-drop-zone/index.js +70 -8
  102. package/build/components/use-block-drop-zone/index.js.map +1 -1
  103. package/build/components/use-on-block-drop/index.js +1 -1
  104. package/build/components/use-on-block-drop/index.js.map +1 -1
  105. package/build/components/use-resize-canvas/index.js +4 -1
  106. package/build/components/use-resize-canvas/index.js.map +1 -1
  107. package/build/components/use-settings/index.js +14 -0
  108. package/build/components/use-settings/index.js.map +1 -1
  109. package/build/hooks/align.js +20 -68
  110. package/build/hooks/align.js.map +1 -1
  111. package/build/hooks/align.native.js +11 -1
  112. package/build/hooks/align.native.js.map +1 -1
  113. package/build/hooks/anchor.js +13 -29
  114. package/build/hooks/anchor.js.map +1 -1
  115. package/build/hooks/background.js +28 -31
  116. package/build/hooks/background.js.map +1 -1
  117. package/build/hooks/block-hooks.js +24 -32
  118. package/build/hooks/block-hooks.js.map +1 -1
  119. package/build/hooks/block-renaming.js +18 -22
  120. package/build/hooks/block-renaming.js.map +1 -1
  121. package/build/hooks/border.js +58 -80
  122. package/build/hooks/border.js.map +1 -1
  123. package/build/hooks/color.js +76 -89
  124. package/build/hooks/color.js.map +1 -1
  125. package/build/hooks/content-lock-ui.js +29 -29
  126. package/build/hooks/content-lock-ui.js.map +1 -1
  127. package/build/hooks/custom-class-name.js +12 -29
  128. package/build/hooks/custom-class-name.js.map +1 -1
  129. package/build/hooks/custom-fields.js +24 -38
  130. package/build/hooks/custom-fields.js.map +1 -1
  131. package/build/hooks/dimensions.js +21 -17
  132. package/build/hooks/dimensions.js.map +1 -1
  133. package/build/hooks/duotone.js +31 -61
  134. package/build/hooks/duotone.js.map +1 -1
  135. package/build/hooks/font-family.js +16 -25
  136. package/build/hooks/font-family.js.map +1 -1
  137. package/build/hooks/font-size.js +51 -119
  138. package/build/hooks/font-size.js.map +1 -1
  139. package/build/hooks/index.js +25 -14
  140. package/build/hooks/index.js.map +1 -1
  141. package/build/hooks/index.native.js +10 -3
  142. package/build/hooks/index.native.js.map +1 -1
  143. package/build/hooks/layout-child.js +68 -0
  144. package/build/hooks/layout-child.js.map +1 -0
  145. package/build/hooks/layout.js +16 -101
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/padding.js +2 -2
  148. package/build/hooks/padding.js.map +1 -1
  149. package/build/hooks/position.js +40 -62
  150. package/build/hooks/position.js.map +1 -1
  151. package/build/hooks/style.js +51 -88
  152. package/build/hooks/style.js.map +1 -1
  153. package/build/hooks/typography.js +34 -14
  154. package/build/hooks/typography.js.map +1 -1
  155. package/build/hooks/utils.js +154 -7
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +0 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/private-actions.js +8 -0
  160. package/build/store/private-actions.js.map +1 -1
  161. package/build/store/private-selectors.js +34 -0
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +8 -0
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +10 -60
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/store/utils.js +66 -0
  168. package/build/store/utils.js.map +1 -0
  169. package/build/utils/object.js +21 -61
  170. package/build/utils/object.js.map +1 -1
  171. package/build/utils/selection.js +9 -1
  172. package/build/utils/selection.js.map +1 -1
  173. package/build-module/components/block-canvas/index.js +23 -7
  174. package/build-module/components/block-canvas/index.js.map +1 -1
  175. package/build-module/components/block-card/index.js +1 -1
  176. package/build-module/components/block-card/index.js.map +1 -1
  177. package/build-module/components/block-controls/hook.js +4 -24
  178. package/build-module/components/block-controls/hook.js.map +1 -1
  179. package/build-module/components/block-edit/context.js +2 -0
  180. package/build-module/components/block-edit/context.js.map +1 -1
  181. package/build-module/components/block-edit/index.js +19 -10
  182. package/build-module/components/block-edit/index.js.map +1 -1
  183. package/build-module/components/block-info-slot-fill/index.js +3 -3
  184. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  185. package/build-module/components/block-list/block.js +29 -10
  186. package/build-module/components/block-list/block.js.map +1 -1
  187. package/build-module/components/block-list/block.native.js +14 -5
  188. package/build-module/components/block-list/block.native.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/index.js +62 -19
  190. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  192. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  193. package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
  194. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  195. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  196. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  197. package/build-module/components/block-patterns-list/index.js +1 -1
  198. package/build-module/components/block-patterns-list/index.js.map +1 -1
  199. package/build-module/components/block-removal-warning-modal/index.js +3 -10
  200. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  201. package/build-module/components/block-rename/modal.js +3 -0
  202. package/build-module/components/block-rename/modal.js.map +1 -1
  203. package/build-module/components/block-settings/container.native.js +4 -2
  204. package/build-module/components/block-settings/container.native.js.map +1 -1
  205. package/build-module/components/block-styles/index.js +1 -1
  206. package/build-module/components/block-styles/index.js.map +1 -1
  207. package/build-module/components/block-styles/index.native.js +3 -2
  208. package/build-module/components/block-styles/index.native.js.map +1 -1
  209. package/build-module/components/block-toolbar/index.js +88 -25
  210. package/build-module/components/block-toolbar/index.js.map +1 -1
  211. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
  212. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  213. package/build-module/components/block-tools/block-toolbar-popover.js +76 -0
  214. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
  215. package/build-module/components/block-tools/index.js +27 -24
  216. package/build-module/components/block-tools/index.js.map +1 -1
  217. package/build-module/components/block-types-list/index.native.js +2 -1
  218. package/build-module/components/block-types-list/index.native.js.map +1 -1
  219. package/build-module/components/block-variation-picker/index.native.js +2 -1
  220. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  221. package/build-module/components/colors-gradients/control.js +29 -18
  222. package/build-module/components/colors-gradients/control.js.map +1 -1
  223. package/build-module/components/duotone-control/index.js +1 -4
  224. package/build-module/components/duotone-control/index.js.map +1 -1
  225. package/build-module/components/global-styles/color-panel.js +23 -21
  226. package/build-module/components/global-styles/color-panel.js.map +1 -1
  227. package/build-module/components/global-styles/filters-panel.js +10 -4
  228. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  229. package/build-module/components/global-styles/typography-panel.js +20 -31
  230. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  231. package/build-module/components/image-link-destinations/index.native.js +109 -0
  232. package/build-module/components/image-link-destinations/index.native.js.map +1 -0
  233. package/build-module/components/index.native.js +1 -0
  234. package/build-module/components/index.native.js.map +1 -1
  235. package/build-module/components/inserter/media-tab/media-panel.js +1 -1
  236. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  237. package/build-module/components/inserter/menu.js +14 -7
  238. package/build-module/components/inserter/menu.js.map +1 -1
  239. package/build-module/components/inserter/preview-panel.js +2 -2
  240. package/build-module/components/inserter/preview-panel.js.map +1 -1
  241. package/build-module/components/inserter-button/index.native.js +89 -0
  242. package/build-module/components/inserter-button/index.native.js.map +1 -0
  243. package/build-module/components/inserter-button/sparkles.js +15 -0
  244. package/build-module/components/inserter-button/sparkles.js.map +1 -0
  245. package/build-module/components/inserter-draggable-blocks/index.js +9 -5
  246. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  247. package/build-module/components/inspector-controls/fill.js +3 -3
  248. package/build-module/components/inspector-controls/fill.js.map +1 -1
  249. package/build-module/components/inspector-controls/fill.native.js +3 -3
  250. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  251. package/build-module/components/navigable-toolbar/index.js +2 -2
  252. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  253. package/build-module/components/preview-options/index.js +6 -62
  254. package/build-module/components/preview-options/index.js.map +1 -1
  255. package/build-module/components/rich-text/content.js +25 -21
  256. package/build-module/components/rich-text/content.js.map +1 -1
  257. package/build-module/components/rich-text/get-rich-text-values.js +2 -1
  258. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  259. package/build-module/components/rich-text/index.js +4 -32
  260. package/build-module/components/rich-text/index.js.map +1 -1
  261. package/build-module/components/rich-text/index.native.js +10 -18
  262. package/build-module/components/rich-text/index.native.js.map +1 -1
  263. package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
  264. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  265. package/build-module/components/rich-text/native/index.native.js +7 -34
  266. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  267. package/build-module/components/rich-text/use-input-rules.js +5 -1
  268. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  269. package/build-module/components/rich-text/with-deprecations.js +42 -0
  270. package/build-module/components/rich-text/with-deprecations.js.map +1 -0
  271. package/build-module/components/use-block-drop-zone/index.js +69 -8
  272. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  273. package/build-module/components/use-on-block-drop/index.js +1 -1
  274. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  275. package/build-module/components/use-resize-canvas/index.js +4 -1
  276. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  277. package/build-module/components/use-settings/index.js +13 -1
  278. package/build-module/components/use-settings/index.js.map +1 -1
  279. package/build-module/hooks/align.js +19 -66
  280. package/build-module/hooks/align.js.map +1 -1
  281. package/build-module/hooks/align.native.js +1 -0
  282. package/build-module/hooks/align.native.js.map +1 -1
  283. package/build-module/hooks/anchor.js +11 -26
  284. package/build-module/hooks/anchor.js.map +1 -1
  285. package/build-module/hooks/background.js +26 -28
  286. package/build-module/hooks/background.js.map +1 -1
  287. package/build-module/hooks/block-hooks.js +22 -30
  288. package/build-module/hooks/block-hooks.js.map +1 -1
  289. package/build-module/hooks/block-renaming.js +17 -21
  290. package/build-module/hooks/block-renaming.js.map +1 -1
  291. package/build-module/hooks/border.js +57 -78
  292. package/build-module/hooks/border.js.map +1 -1
  293. package/build-module/hooks/color.js +74 -86
  294. package/build-module/hooks/color.js.map +1 -1
  295. package/build-module/hooks/content-lock-ui.js +27 -27
  296. package/build-module/hooks/content-lock-ui.js.map +1 -1
  297. package/build-module/hooks/custom-class-name.js +11 -27
  298. package/build-module/hooks/custom-class-name.js.map +1 -1
  299. package/build-module/hooks/custom-fields.js +20 -39
  300. package/build-module/hooks/custom-fields.js.map +1 -1
  301. package/build-module/hooks/dimensions.js +21 -16
  302. package/build-module/hooks/dimensions.js.map +1 -1
  303. package/build-module/hooks/duotone.js +30 -61
  304. package/build-module/hooks/duotone.js.map +1 -1
  305. package/build-module/hooks/font-family.js +14 -23
  306. package/build-module/hooks/font-family.js.map +1 -1
  307. package/build-module/hooks/font-size.js +49 -119
  308. package/build-module/hooks/font-size.js.map +1 -1
  309. package/build-module/hooks/index.js +18 -14
  310. package/build-module/hooks/index.js.map +1 -1
  311. package/build-module/hooks/index.native.js +5 -3
  312. package/build-module/hooks/index.native.js.map +1 -1
  313. package/build-module/hooks/layout-child.js +60 -0
  314. package/build-module/hooks/layout-child.js.map +1 -0
  315. package/build-module/hooks/layout.js +13 -98
  316. package/build-module/hooks/layout.js.map +1 -1
  317. package/build-module/hooks/padding.js +2 -2
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/position.js +38 -59
  320. package/build-module/hooks/position.js.map +1 -1
  321. package/build-module/hooks/style.js +51 -84
  322. package/build-module/hooks/style.js.map +1 -1
  323. package/build-module/hooks/typography.js +33 -12
  324. package/build-module/hooks/typography.js.map +1 -1
  325. package/build-module/hooks/utils.js +149 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +0 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/private-actions.js +7 -0
  330. package/build-module/store/private-actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +33 -1
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +8 -0
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +3 -53
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/store/utils.js +56 -0
  338. package/build-module/store/utils.js.map +1 -0
  339. package/build-module/utils/object.js +21 -60
  340. package/build-module/utils/object.js.map +1 -1
  341. package/build-module/utils/selection.js +9 -1
  342. package/build-module/utils/selection.js.map +1 -1
  343. package/build-style/style-rtl.css +113 -293
  344. package/build-style/style.css +113 -293
  345. package/package.json +31 -31
  346. package/src/components/block-canvas/index.js +31 -17
  347. package/src/components/block-caption/README.md +2 -2
  348. package/src/components/block-card/index.js +5 -3
  349. package/src/components/block-card/style.scss +7 -3
  350. package/src/components/block-controls/hook.js +8 -30
  351. package/src/components/block-controls/test/index.js +3 -3
  352. package/src/components/block-edit/context.js +3 -0
  353. package/src/components/block-edit/index.js +36 -10
  354. package/src/components/block-info-slot-fill/index.js +6 -3
  355. package/src/components/block-inspector/style.scss +0 -4
  356. package/src/components/block-list/block.js +39 -5
  357. package/src/components/block-list/block.native.js +18 -4
  358. package/src/components/block-list/use-block-props/index.js +74 -21
  359. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
  360. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
  361. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
  362. package/src/components/block-patterns-list/index.js +1 -1
  363. package/src/components/block-removal-warning-modal/index.js +7 -14
  364. package/src/components/block-rename/modal.js +7 -1
  365. package/src/components/block-settings/container.native.js +3 -5
  366. package/src/components/block-styles/index.js +1 -1
  367. package/src/components/block-styles/index.native.js +4 -2
  368. package/src/components/block-styles/style.scss +0 -11
  369. package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
  370. package/src/components/block-toolbar/index.js +180 -95
  371. package/src/components/block-toolbar/style.scss +50 -66
  372. package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
  373. package/src/components/block-tools/block-toolbar-popover.js +90 -0
  374. package/src/components/block-tools/index.js +42 -29
  375. package/src/components/block-tools/style.scss +60 -172
  376. package/src/components/block-types-list/index.native.js +2 -1
  377. package/src/components/block-variation-picker/index.native.js +1 -1
  378. package/src/components/colors-gradients/control.js +49 -30
  379. package/src/components/colors-gradients/style.scss +0 -7
  380. package/src/components/duotone-control/index.js +2 -5
  381. package/src/components/duotone-control/style.scss +1 -6
  382. package/src/components/global-styles/color-panel.js +34 -25
  383. package/src/components/global-styles/filters-panel.js +8 -4
  384. package/src/components/global-styles/typography-panel.js +23 -43
  385. package/src/components/image-link-destinations/index.native.js +152 -0
  386. package/src/components/image-link-destinations/style.native.scss +16 -0
  387. package/src/components/index.native.js +1 -0
  388. package/src/components/inner-blocks/README.md +13 -2
  389. package/src/components/inserter/media-tab/media-panel.js +1 -1
  390. package/src/components/inserter/menu.js +16 -8
  391. package/src/components/inserter/preview-panel.js +2 -2
  392. package/src/components/inserter/style.scss +15 -17
  393. package/src/components/inserter-button/README.md +62 -0
  394. package/src/components/inserter-button/index.native.js +116 -0
  395. package/src/components/inserter-button/sparkles.js +15 -0
  396. package/src/components/inserter-button/style.native.scss +72 -0
  397. package/src/components/inserter-draggable-blocks/index.js +18 -5
  398. package/src/components/inspector-controls/fill.js +6 -3
  399. package/src/components/inspector-controls/fill.native.js +6 -3
  400. package/src/components/link-control/style.scss +1 -1
  401. package/src/components/link-control/test/index.js +1 -1
  402. package/src/components/navigable-toolbar/README.md +2 -0
  403. package/src/components/navigable-toolbar/index.js +2 -2
  404. package/src/components/preview-options/index.js +6 -86
  405. package/src/components/rich-text/content.js +27 -20
  406. package/src/components/rich-text/get-rich-text-values.js +6 -1
  407. package/src/components/rich-text/index.js +5 -46
  408. package/src/components/rich-text/index.native.js +8 -25
  409. package/src/components/rich-text/native/get-format-colors.native.js +33 -40
  410. package/src/components/rich-text/native/index.native.js +7 -48
  411. package/src/components/rich-text/use-input-rules.js +6 -1
  412. package/src/components/rich-text/with-deprecations.js +51 -0
  413. package/src/components/use-block-drop-zone/index.js +114 -14
  414. package/src/components/use-on-block-drop/index.js +2 -1
  415. package/src/components/use-resize-canvas/README.md +3 -3
  416. package/src/components/use-resize-canvas/index.js +4 -1
  417. package/src/components/use-settings/index.js +15 -1
  418. package/src/hooks/align.js +15 -76
  419. package/src/hooks/align.native.js +1 -0
  420. package/src/hooks/anchor.js +13 -33
  421. package/src/hooks/background.js +28 -23
  422. package/src/hooks/block-hooks.js +22 -51
  423. package/src/hooks/block-renaming.js +23 -37
  424. package/src/hooks/border.js +67 -118
  425. package/src/hooks/color.js +100 -132
  426. package/src/hooks/content-lock-ui.js +110 -122
  427. package/src/hooks/custom-class-name.js +8 -40
  428. package/src/hooks/custom-fields.js +20 -47
  429. package/src/hooks/dimensions.js +20 -16
  430. package/src/hooks/duotone.js +70 -127
  431. package/src/hooks/font-family.js +10 -29
  432. package/src/hooks/font-size.js +66 -162
  433. package/src/hooks/index.js +42 -14
  434. package/src/hooks/index.native.js +6 -3
  435. package/src/hooks/layout-child.js +53 -0
  436. package/src/hooks/layout.js +13 -102
  437. package/src/hooks/padding.js +2 -2
  438. package/src/hooks/position.js +50 -90
  439. package/src/hooks/style.js +117 -187
  440. package/src/hooks/test/align.js +1 -178
  441. package/src/hooks/typography.js +20 -16
  442. package/src/hooks/utils.js +187 -6
  443. package/src/private-apis.js +0 -2
  444. package/src/store/private-actions.js +8 -0
  445. package/src/store/private-selectors.js +45 -0
  446. package/src/store/reducer.js +8 -0
  447. package/src/store/selectors.js +5 -69
  448. package/src/store/utils.js +74 -0
  449. package/src/style.scss +0 -2
  450. package/src/utils/object.js +18 -69
  451. package/src/utils/selection.js +9 -2
  452. package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
  453. package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  454. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
  455. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  456. package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
  457. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  458. package/build/components/block-tools/back-compat.js +0 -45
  459. package/build/components/block-tools/back-compat.js.map +0 -1
  460. package/build/components/block-tools/block-contextual-toolbar.js +0 -91
  461. package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
  462. package/build/components/block-tools/selected-block-tools.js +0 -113
  463. package/build/components/block-tools/selected-block-tools.js.map +0 -1
  464. package/build/components/inserter/hooks/use-debounced-input.js +0 -22
  465. package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
  466. package/build/components/use-display-block-controls/index.js +0 -39
  467. package/build/components/use-display-block-controls/index.js.map +0 -1
  468. package/build/components/use-display-block-controls/index.native.js +0 -39
  469. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  470. package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
  471. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  472. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
  473. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  474. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
  475. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  476. package/build-module/components/block-tools/back-compat.js +0 -35
  477. package/build-module/components/block-tools/back-compat.js.map +0 -1
  478. package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
  479. package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
  480. package/build-module/components/block-tools/selected-block-tools.js +0 -105
  481. package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
  482. package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
  483. package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
  484. package/build-module/components/use-display-block-controls/index.js +0 -32
  485. package/build-module/components/use-display-block-controls/index.js.map +0 -1
  486. package/build-module/components/use-display-block-controls/index.native.js +0 -32
  487. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  488. package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
  489. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
  490. package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
  491. package/src/components/block-parent-selector/style.scss +0 -11
  492. package/src/components/block-tools/back-compat.js +0 -35
  493. package/src/components/block-tools/block-contextual-toolbar.js +0 -100
  494. package/src/components/block-tools/selected-block-tools.js +0 -127
  495. package/src/components/inserter/hooks/use-debounced-input.js +0 -18
  496. package/src/components/preview-options/README.md +0 -94
  497. package/src/components/preview-options/style.scss +0 -64
  498. package/src/components/use-display-block-controls/index.js +0 -36
  499. package/src/components/use-display-block-controls/index.native.js +0 -37
  500. package/src/hooks/test/color.js +0 -112
@@ -8,7 +8,7 @@ import classnames from 'classnames';
8
8
  * WordPress dependencies
9
9
  */
10
10
  import { useMemo, useCallback, RawHTML } from '@wordpress/element';
11
- import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock, switchToBlockType, getDefaultBlockName, isUnmodifiedBlock } from '@wordpress/blocks';
11
+ import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock, switchToBlockType, getDefaultBlockName, isUnmodifiedBlock, store as blocksStore } from '@wordpress/blocks';
12
12
  import { withFilters } from '@wordpress/components';
13
13
  import { withDispatch, withSelect, useDispatch, useSelect } from '@wordpress/data';
14
14
  import { compose, pure, ifCondition } from '@wordpress/compose';
@@ -40,10 +40,12 @@ function mergeWrapperProps(propsA, propsB) {
40
40
  ...propsA,
41
41
  ...propsB
42
42
  };
43
- if (propsA?.className && propsB?.className) {
43
+
44
+ // May be set to undefined, so check if the property is set!
45
+ if (propsA?.hasOwnProperty('className') && propsB?.hasOwnProperty('className')) {
44
46
  newProps.className = classnames(propsA.className, propsB.className);
45
47
  }
46
- if (propsA?.style && propsB?.style) {
48
+ if (propsA?.hasOwnProperty('style') && propsB?.hasOwnProperty('style')) {
47
49
  newProps.style = {
48
50
  ...propsA.style,
49
51
  ...propsB.style
@@ -88,19 +90,30 @@ function BlockListBlock({
88
90
  const {
89
91
  themeSupportsLayout,
90
92
  isTemporarilyEditingAsBlocks,
91
- blockEditingMode
93
+ blockEditingMode,
94
+ mayDisplayControls,
95
+ mayDisplayParentControls
92
96
  } = useSelect(select => {
93
97
  const {
94
98
  getSettings,
95
99
  __unstableGetTemporarilyEditingAsBlocks,
96
- getBlockEditingMode
100
+ getBlockEditingMode,
101
+ getBlockName,
102
+ isFirstMultiSelectedBlock,
103
+ getMultiSelectedBlockClientIds,
104
+ hasSelectedInnerBlock
97
105
  } = select(blockEditorStore);
106
+ const {
107
+ hasBlockSupport
108
+ } = select(blocksStore);
98
109
  return {
99
110
  themeSupportsLayout: getSettings().supportsLayout,
100
111
  isTemporarilyEditingAsBlocks: __unstableGetTemporarilyEditingAsBlocks() === clientId,
101
- blockEditingMode: getBlockEditingMode(clientId)
112
+ blockEditingMode: getBlockEditingMode(clientId),
113
+ mayDisplayControls: isSelected || isFirstMultiSelectedBlock(clientId) && getMultiSelectedBlockClientIds().every(id => getBlockName(id) === name),
114
+ mayDisplayParentControls: hasBlockSupport(getBlockName(clientId), '__experimentalExposeControlsToChildren', false) && hasSelectedInnerBlock(clientId)
102
115
  };
103
- }, [clientId]);
116
+ }, [clientId, isSelected, name]);
104
117
  const {
105
118
  removeBlock
106
119
  } = useDispatch(blockEditorStore);
@@ -124,7 +137,9 @@ function BlockListBlock({
124
137
  isSelectionEnabled: isSelectionEnabled,
125
138
  toggleSelection: toggleSelection,
126
139
  __unstableLayoutClassNames: layoutClassNames,
127
- __unstableParentLayout: Object.keys(parentLayout).length ? parentLayout : undefined
140
+ __unstableParentLayout: Object.keys(parentLayout).length ? parentLayout : undefined,
141
+ mayDisplayControls: mayDisplayControls,
142
+ mayDisplayParentControls: mayDisplayParentControls
128
143
  });
129
144
  const blockType = getBlockType(name);
130
145
  if (blockEditingMode === 'disabled') {
@@ -139,6 +154,10 @@ function BlockListBlock({
139
154
  }
140
155
  const isAligned = wrapperProps && !!wrapperProps['data-align'] && !themeSupportsLayout;
141
156
 
157
+ // Support for sticky position in classic themes with alignment wrappers.
158
+
159
+ const isSticky = className?.includes('is-position-sticky');
160
+
142
161
  // For aligned blocks, provide a wrapper element so the block can be
143
162
  // positioned relative to the block column.
144
163
  // This is only kept for classic themes that don't support layout
@@ -149,7 +168,7 @@ function BlockListBlock({
149
168
  // and backend.
150
169
  if (isAligned) {
151
170
  blockEdit = createElement("div", {
152
- className: "wp-block",
171
+ className: classnames('wp-block', isSticky && className),
153
172
  "data-align": wrapperProps['data-align']
154
173
  }, blockEdit);
155
174
  }
@@ -189,7 +208,7 @@ function BlockListBlock({
189
208
  className: classnames({
190
209
  'is-editing-disabled': blockEditingMode === 'disabled',
191
210
  'is-content-locked-temporarily-editing-as-blocks': isTemporarilyEditingAsBlocks
192
- }, dataAlign && themeSupportsLayout && `align${dataAlign}`, className),
211
+ }, dataAlign && themeSupportsLayout && `align${dataAlign}`, !(dataAlign && isSticky) && className),
193
212
  wrapperProps: restWrapperProps,
194
213
  isAligned
195
214
  };
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","getDefaultBlockName","isUnmodifiedBlock","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","store","blockEditorStore","useLayout","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","createElement","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","themeSupportsLayout","isTemporarilyEditingAsBlocks","blockEditingMode","select","getSettings","__unstableGetTemporarilyEditingAsBlocks","getBlockEditingMode","supportsLayout","removeBlock","onRemove","parentLayout","blockEdit","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","Fragment","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","Provider","fallback","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","every","key","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback, RawHTML } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { BlockListBlockContext } from './block-list-block-context';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( blockEditingMode === 'disabled' ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-editing-disabled': blockEditingMode === 'disabled',\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,OAAO,EAAEC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AAClE,SACCC,YAAY,EACZC,cAAc,EACdC,wBAAwB,EACxBC,iBAAiB,EACjBC,iBAAiB,EACjBC,mBAAmB,EACnBC,iBAAiB,QACX,mBAAmB;AAC1B,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SACCC,YAAY,EACZC,UAAU,EACVC,WAAW,EACXC,SAAS,QACH,iBAAiB;AACxB,SAASC,OAAO,EAAEC,IAAI,EAAEC,WAAW,QAAQ,oBAAoB;AAC/D,SAASC,QAAQ,QAAQ,gBAAgB;;AAEzC;AACA;AACA;AACA,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,SAAS,MAAM,cAAc;AACpC,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,SAAS,QAAQ,UAAU;AACpC,SAASC,qBAAqB,QAAQ,4BAA4B;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAAEC,MAAM,EAAEC,MAAM,EAAG;EAC5C,MAAMC,QAAQ,GAAG;IAChB,GAAGF,MAAM;IACT,GAAGC;EACJ,CAAC;EAED,IAAKD,MAAM,EAAEG,SAAS,IAAIF,MAAM,EAAEE,SAAS,EAAG;IAC7CD,QAAQ,CAACC,SAAS,GAAGlC,UAAU,CAAE+B,MAAM,CAACG,SAAS,EAAEF,MAAM,CAACE,SAAU,CAAC;EACtE;EACA,IAAKH,MAAM,EAAEI,KAAK,IAAIH,MAAM,EAAEG,KAAK,EAAG;IACrCF,QAAQ,CAACE,KAAK,GAAG;MAAE,GAAGJ,MAAM,CAACI,KAAK;MAAE,GAAGH,MAAM,CAACG;IAAM,CAAC;EACtD;EAEA,OAAOF,QAAQ;AAChB;AAEA,SAASG,KAAKA,CAAE;EAAEC,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AAAM,CAAC,EAAG;EAChD,OACCC,aAAA;IAAA,GAAUf,aAAa,CAAEc,KAAK,EAAE;MAAEE,gBAAgB,EAAEH;IAAO,CAAE;EAAC,GAC3DD,QACE,CAAC;AAER;AAEA,SAASK,cAAcA,CAAE;EACxBC,KAAK,EAAE;IAAEC;EAAsB,CAAC;EAChCC,IAAI;EACJC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,UAAU;EACVC,kBAAkB;EAClBhB,SAAS;EACTiB,0BAA0B,EAAEC,gBAAgB;EAC5CC,IAAI;EACJC,OAAO;EACPC,UAAU;EACVC,YAAY;EACZC,aAAa;EACbC,SAAS;EACTC,mBAAmB;EACnBC,OAAO;EACPC;AACD,CAAC,EAAG;EAAA,IAAAC,aAAA;EACH,MAAM;IACLC,mBAAmB;IACnBC,4BAA4B;IAC5BC;EACD,CAAC,GAAGlD,SAAS,CACVmD,MAAM,IAAM;IACb,MAAM;MACLC,WAAW;MACXC,uCAAuC;MACvCC;IACD,CAAC,GAAGH,MAAM,CAAEvC,gBAAiB,CAAC;IAC9B,OAAO;MACNoC,mBAAmB,EAAEI,WAAW,CAAC,CAAC,CAACG,cAAc;MACjDN,4BAA4B,EAC3BI,uCAAuC,CAAC,CAAC,KAAKpB,QAAQ;MACvDiB,gBAAgB,EAAEI,mBAAmB,CAAErB,QAAS;IACjD,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EACD,MAAM;IAAEuB;EAAY,CAAC,GAAGzD,WAAW,CAAEa,gBAAiB,CAAC;EACvD,MAAM6C,QAAQ,GAAGtE,WAAW,CAAE,MAAMqE,WAAW,CAAEvB,QAAS,CAAC,EAAE,CAAEA,QAAQ,CAAG,CAAC;EAE3E,MAAMyB,YAAY,GAAG7C,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;;EAEtC;EACA;EACA;EACA;EACA,IAAI8C,SAAS,GACZlC,aAAA,CAACpB,SAAS;IACTiC,IAAI,EAAGA,IAAM;IACbJ,UAAU,EAAGA,UAAY;IACzBM,UAAU,EAAGA,UAAY;IACzBE,aAAa,EAAGA,aAAe;IAC/BkB,iBAAiB,EAAG7B,QAAQ,GAAG8B,SAAS,GAAGjB,mBAAqB;IAChED,SAAS,EAAGX,SAAS,GAAGW,SAAS,GAAGkB,SAAW;IAC/CJ,QAAQ,EAAGzB,SAAS,GAAGyB,QAAQ,GAAGI,SAAW;IAC7CC,WAAW,EAAG9B,SAAS,GAAGa,OAAO,GAAGgB,SAAW;IAC/C5B,QAAQ,EAAGA,QAAU;IACrBE,kBAAkB,EAAGA,kBAAoB;IACzCW,eAAe,EAAGA,eAAiB;IACnCV,0BAA0B,EAAGC,gBAAkB;IAC/C0B,sBAAsB,EACrBC,MAAM,CAACC,IAAI,CAAEP,YAAa,CAAC,CAACQ,MAAM,GAAGR,YAAY,GAAGG;EACpD,CACD,CACD;EAED,MAAMM,SAAS,GAAG9E,YAAY,CAAEiD,IAAK,CAAC;EAEtC,IAAKY,gBAAgB,KAAK,UAAU,EAAG;IACtCT,YAAY,GAAG;MACd,GAAGA,YAAY;MACf2B,QAAQ,EAAE,CAAC;IACZ,CAAC;EACF;EACA;EACA,IAAKD,SAAS,EAAEE,mBAAmB,EAAG;IACrC5B,YAAY,GAAG1B,iBAAiB,CAC/B0B,YAAY,EACZ0B,SAAS,CAACE,mBAAmB,CAAE7B,UAAW,CAC3C,CAAC;EACF;EAEA,MAAM8B,SAAS,GACd7B,YAAY,IACZ,CAAC,CAAEA,YAAY,CAAE,YAAY,CAAE,IAC/B,CAAEO,mBAAmB;;EAEtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAKsB,SAAS,EAAG;IAChBX,SAAS,GACRlC,aAAA;MACCN,SAAS,EAAC,UAAU;MACpB,cAAasB,YAAY,CAAE,YAAY;IAAI,GAEzCkB,SACE,CACL;EACF;EAEA,IAAI/B,KAAK;EAET,IAAK,CAAEW,OAAO,EAAG;IAChB,MAAMgC,WAAW,GAAG1C,qBAAqB,GACtCrC,iBAAiB,CAAEqC,qBAAsB,CAAC,GAC1CvC,cAAc,CAAE6E,SAAS,EAAE3B,UAAW,CAAC;IAE1CZ,KAAK,GACJH,aAAA,CAACJ,KAAK;MAACF,SAAS,EAAC;IAAa,GAC7BM,aAAA,CAACnB,mBAAmB;MAAC2B,QAAQ,EAAGA;IAAU,CAAE,CAAC,EAC7CR,aAAA,CAACrC,OAAO,QAAGgB,QAAQ,CAAEmE,WAAY,CAAY,CACvC,CACP;EACF,CAAC,MAAM,IAAKzC,IAAI,KAAK,MAAM,EAAG;IAC7B;IACA;IACAF,KAAK,GACJH,aAAA,CAAA+C,QAAA,QACC/C,aAAA;MAAKL,KAAK,EAAG;QAAEqD,OAAO,EAAE;MAAO;IAAG,GAAGd,SAAgB,CAAC,EACtDlC,aAAA,CAACJ,KAAK;MAACE,MAAM;IAAA,GACZE,aAAA,CAAChB,SAAS;MAACwB,QAAQ,EAAGA;IAAU,CAAE,CAC5B,CACN,CACF;EACF,CAAC,MAAM,IAAKkC,SAAS,EAAEO,UAAU,GAAG,CAAC,EAAG;IACvC9C,KAAK,GAAG+B,SAAS;EAClB,CAAC,MAAM;IACN/B,KAAK,GAAGH,aAAA,CAACJ,KAAK;MAAA,GAAMoB;IAAY,GAAKkB,SAAkB,CAAC;EACzD;EAEA,MAAM;IAAE,YAAY,EAAEgB,SAAS;IAAE,GAAGC;EAAiB,CAAC,IAAA7B,aAAA,GAAGN,YAAY,cAAAM,aAAA,cAAAA,aAAA,GAAI,CAAC,CAAC;EAE3E,MAAM8B,KAAK,GAAG;IACb5C,QAAQ;IACRd,SAAS,EAAElC,UAAU,CACpB;MACC,qBAAqB,EAAEiE,gBAAgB,KAAK,UAAU;MACtD,iDAAiD,EAChDD;IACF,CAAC,EACD0B,SAAS,IAAI3B,mBAAmB,IAAK,QAAQ2B,SAAW,EAAC,EACzDxD,SACD,CAAC;IACDsB,YAAY,EAAEmC,gBAAgB;IAC9BN;EACD,CAAC;EAED,MAAMQ,aAAa,GAAG5F,OAAO,CAAE,MAAM2F,KAAK,EAAEb,MAAM,CAACe,MAAM,CAAEF,KAAM,CAAE,CAAC;EAEpE,OACCpD,aAAA,CAACX,qBAAqB,CAACkE,QAAQ;IAACH,KAAK,EAAGC;EAAe,GACtDrD,aAAA,CAACjB,kBAAkB;IAClByE,QAAQ,EACPxD,aAAA,CAACJ,KAAK;MAACF,SAAS,EAAC;IAAa,GAC7BM,aAAA,CAAClB,iBAAiB,MAAE,CACd;EACP,GAECqB,KACiB,CACW,CAAC;AAEnC;AAEA,MAAMsD,eAAe,GAAGpF,UAAU,CAAE,CAAEqD,MAAM,EAAE;EAAElB,QAAQ;EAAEkD;AAAa,CAAC,KAAM;EAC7E,MAAM;IACLC,eAAe;IACfC,YAAY;IACZlD,kBAAkB;IAClBmD,eAAe;IACfC,oCAAoC;IACpCC,cAAc;IACdC;EACD,CAAC,GAAGtC,MAAM,CAAEvC,gBAAiB,CAAC;EAC9B,MAAMgB,KAAK,GAAG2D,oCAAoC,CAAEtD,QAAS,CAAC;EAC9D,MAAMC,UAAU,GAAGkD,eAAe,CAAEnD,QAAS,CAAC;EAC9C,MAAMyD,YAAY,GAAGJ,eAAe,CAAEH,YAAa,CAAC;EACpD,MAAMnD,SAAS,GAAGwD,cAAc,CAAEvD,QAAQ,EAAEkD,YAAa,CAAC;EAC1D,MAAMQ,OAAO,GAAGF,YAAY,CAAExD,QAAQ,EAAEkD,YAAa,CAAC;;EAEtD;EACA;EACA;EACA;EACA,MAAM;IAAE7C,IAAI;IAAEE,UAAU;IAAED;EAAQ,CAAC,GAAGX,KAAK,IAAI,CAAC,CAAC;;EAEjD;EACA;EACA,OAAO;IACNE,IAAI,EAAEuD,YAAY,CAAEpD,QAAS,CAAC;IAC9BE,kBAAkB,EAAEA,kBAAkB,CAAC,CAAC;IACxCJ,QAAQ,EAAE,CAAC,CAAE2D,YAAY;IACzB1D,SAAS;IACT2D,OAAO;IACP;IACA;IACA;IACA;IACA/D,KAAK;IACLU,IAAI;IACJE,UAAU;IACVD,OAAO;IACPL;EACD,CAAC;AACF,CAAE,CAAC;AAEH,MAAM0D,iBAAiB,GAAG/F,YAAY,CAAE,CAAEgG,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,KAAM;EAC3E,MAAM;IACLC,qBAAqB;IACrBC,YAAY;IACZnC,WAAW;IACXoC,aAAa;IACbpD,eAAe;IACfqD,oCAAoC;IACpCC,oBAAoB;IACpB5C;EACD,CAAC,GAAGqC,QAAQ,CAAEjF,gBAAiB,CAAC;;EAEhC;EACA;EACA,OAAO;IACN8B,aAAaA,CAAE2D,aAAa,EAAG;MAC9B,MAAM;QAAEC;MAA+B,CAAC,GACvCP,QAAQ,CAAC5C,MAAM,CAAEvC,gBAAiB,CAAC;MACpC,MAAM2F,2BAA2B,GAChCD,8BAA8B,CAAC,CAAC;MACjC,MAAM;QAAErE;MAAS,CAAC,GAAG6D,QAAQ;MAC7B,MAAMU,SAAS,GAAGD,2BAA2B,CAACrC,MAAM,GACjDqC,2BAA2B,GAC3B,CAAEtE,QAAQ,CAAE;MAEf+D,qBAAqB,CAAEQ,SAAS,EAAEH,aAAc,CAAC;IAClD,CAAC;IACDI,cAAcA,CAAEC,MAAM,EAAEC,KAAK,EAAG;MAC/B,MAAM;QAAExB;MAAa,CAAC,GAAGW,QAAQ;MACjCG,YAAY,CAAES,MAAM,EAAEC,KAAK,EAAExB,YAAa,CAAC;IAC5C,CAAC;IACDvC,mBAAmBA,CAAE8D,MAAM,EAAG;MAC7B,MAAM;QAAEzE,QAAQ;QAAEkD;MAAa,CAAC,GAAGW,QAAQ;MAC3C,MAAM;QAAEc;MAAc,CAAC,GAAGb,QAAQ,CAAC5C,MAAM,CAAEvC,gBAAiB,CAAC;MAC7D,MAAM+F,KAAK,GAAGC,aAAa,CAAE3E,QAAS,CAAC;MACvCgE,YAAY,CAAES,MAAM,EAAEC,KAAK,GAAG,CAAC,EAAExB,YAAa,CAAC;IAChD,CAAC;IACDtC,OAAOA,CAAEgE,OAAO,EAAG;MAClB,MAAM;QAAE5E,QAAQ;QAAEkD;MAAa,CAAC,GAAGW,QAAQ;MAC3C,MAAM;QACLgB,wBAAwB;QACxBC,oBAAoB;QACpBC,QAAQ;QACRC,kBAAkB;QAClBC,YAAY;QACZC,aAAa;QACbP,aAAa;QACbQ,oBAAoB;QACpBC;MACD,CAAC,GAAGtB,QAAQ,CAAC5C,MAAM,CAAEvC,gBAAiB,CAAC;;MAEvC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACG,SAAS0G,eAAeA,CAAEC,SAAS,EAAEC,eAAe,GAAG,IAAI,EAAG;QAC7D,MAAMC,kBAAkB,GAAGL,oBAAoB,CAAEG,SAAU,CAAC;QAC5D,MAAMG,UAAU,GAAGP,aAAa,CAAEI,SAAU,CAAC;QAC7C,MAAM,CAAEI,aAAa,CAAE,GAAGD,UAAU;QAEpC,IACCA,UAAU,CAACxD,MAAM,KAAK,CAAC,IACvBvE,iBAAiB,CAAEqH,QAAQ,CAAEW,aAAc,CAAE,CAAC,EAC7C;UACDnE,WAAW,CAAE+D,SAAU,CAAC;QACzB,CAAC,MAAM;UACNxB,QAAQ,CAAC6B,KAAK,CAAE,MAAM;YACrB,IACCP,kBAAkB,CACjBH,YAAY,CAAES,aAAc,CAAC,EAC7BF,kBACD,CAAC,EACA;cACDrB,oBAAoB,CACnB,CAAEuB,aAAa,CAAE,EACjBJ,SAAS,EACTE,kBAAkB,EAClBb,aAAa,CAAEW,SAAU,CAC1B,CAAC;YACF,CAAC,MAAM;cACN,MAAMM,WAAW,GAAGpI,iBAAiB,CACpCuH,QAAQ,CAAEW,aAAc,CAAC,EACzBjI,mBAAmB,CAAC,CACrB,CAAC;cAED,IAAKmI,WAAW,IAAIA,WAAW,CAAC3D,MAAM,EAAG;gBACxC+B,YAAY,CACX4B,WAAW,EACXjB,aAAa,CAAEW,SAAU,CAAC,EAC1BE,kBAAkB,EAClBD,eACD,CAAC;gBACDhE,WAAW,CAAEmE,aAAa,EAAE,KAAM,CAAC;cACpC;YACD;YAEA,IACC,CAAER,aAAa,CAAEI,SAAU,CAAC,CAACrD,MAAM,IACnCvE,iBAAiB,CAAEqH,QAAQ,CAAEO,SAAU,CAAE,CAAC,EACzC;cACD/D,WAAW,CAAE+D,SAAS,EAAE,KAAM,CAAC;YAChC;UACD,CAAE,CAAC;QACJ;MACD;;MAEA;MACA;MACA,IAAKV,OAAO,EAAG;QACd,IAAK1B,YAAY,EAAG;UACnB,MAAM2C,gBAAgB,GACrBf,oBAAoB,CAAE5B,YAAa,CAAC;UAErC,IAAK2C,gBAAgB,EAAG;YACvB;YACA;YACA;YACA,IACCZ,YAAY,CAAE/B,YAAa,CAAC,KAC5B+B,YAAY,CAAEY,gBAAiB,CAAC,EAC/B;cACD,MAAMC,cAAc,GACnBd,kBAAkB,CAAE9B,YAAa,CAAC;cACnC,MAAM6C,sBAAsB,GAC3Bf,kBAAkB,CAAEa,gBAAiB,CAAC;cAEvC,IACC9D,MAAM,CAACC,IAAI,CAAE8D,cAAe,CAAC,CAACE,KAAK,CAChCC,GAAG,IACJH,cAAc,CAAEG,GAAG,CAAE,KACrBF,sBAAsB,CAAEE,GAAG,CAC7B,CAAC,EACA;gBACDnC,QAAQ,CAAC6B,KAAK,CAAE,MAAM;kBACrBxB,oBAAoB,CACnBe,aAAa,CAAEW,gBAAiB,CAAC,EACjCA,gBAAgB,EAChB3C,YACD,CAAC;kBACD3B,WAAW,CAAEsE,gBAAgB,EAAE,KAAM,CAAC;gBACvC,CAAE,CAAC;gBACH;cACD;YACD,CAAC,MAAM;cACNhE,WAAW,CAAEqB,YAAY,EAAE2C,gBAAiB,CAAC;cAC7C;YACD;UACD;QACD;QAEA,MAAMK,iBAAiB,GAAGpB,oBAAoB,CAAE9E,QAAS,CAAC;QAE1D,IAAK,CAAEkG,iBAAiB,EAAG;UAC1B;QACD;QAEA,IAAKhB,aAAa,CAAEgB,iBAAkB,CAAC,CAACjE,MAAM,EAAG;UAChDoD,eAAe,CAAEa,iBAAiB,EAAE,KAAM,CAAC;QAC5C,CAAC,MAAM;UACNrE,WAAW,CAAE7B,QAAQ,EAAEkG,iBAAkB,CAAC;QAC3C;MACD,CAAC,MAAM;QACN,MAAMC,qBAAqB,GAC1BtB,wBAAwB,CAAE7E,QAAS,CAAC;QAErC,IAAKmG,qBAAqB,EAAG;UAC5BtE,WAAW,CAAEsE,qBAAqB,EAAEnG,QAAS,CAAC;QAC/C,CAAC,MAAM,IAAKkD,YAAY,EAAG;UAC1B,MAAMkD,oBAAoB,GACzBvB,wBAAwB,CAAE3B,YAAa,CAAC;;UAEzC;UACA;UACA,IACCkD,oBAAoB,IACpBnB,YAAY,CAAE/B,YAAa,CAAC,KAC3B+B,YAAY,CAAEmB,oBAAqB,CAAC,EACpC;YACD,MAAMN,cAAc,GACnBd,kBAAkB,CAAE9B,YAAa,CAAC;YACnC,MAAM6C,sBAAsB,GAC3Bf,kBAAkB,CAAEoB,oBAAqB,CAAC;YAE3C,IACCrE,MAAM,CAACC,IAAI,CAAE8D,cAAe,CAAC,CAACE,KAAK,CAChCC,GAAG,IACJH,cAAc,CAAEG,GAAG,CAAE,KACrBF,sBAAsB,CAAEE,GAAG,CAC7B,CAAC,EACA;cACDnC,QAAQ,CAAC6B,KAAK,CAAE,MAAM;gBACrBxB,oBAAoB,CACnBe,aAAa,CAAEhC,YAAa,CAAC,EAC7BA,YAAY,EACZkD,oBACD,CAAC;gBACD7E,WAAW,CAAE2B,YAAY,EAAE,KAAM,CAAC;cACnC,CAAE,CAAC;cACH;YACD;UACD;UAEAmC,eAAe,CAAEnC,YAAa,CAAC;QAChC,CAAC,MAAM;UACN3B,WAAW,CAAEvB,QAAS,CAAC;QACxB;MACD;IACD,CAAC;IACDU,SAASA,CAAE+D,MAAM,EAAE4B,aAAa,EAAEC,eAAe,EAAG;MACnD,IACC7B,MAAM,CAACxC,MAAM,IACb,CAAE3E,wBAAwB,CAAEmH,MAAM,CAAEA,MAAM,CAACxC,MAAM,GAAG,CAAC,CAAG,CAAC,EACxD;QACDiC,oCAAoC,CAAC,CAAC;MACvC;MACA;MACA,MAAMqC,iBAAiB,GACtB9B,MAAM,EAAExC,MAAM,KAAK,CAAC,IAAIuE,KAAK,CAACC,OAAO,CAAEhC,MAAM,CAAE,CAAC,CAAG,CAAC,GACjDA,MAAM,CAAE,CAAC,CAAE,GACXA,MAAM;MACVR,aAAa,CACZ,CAAEJ,QAAQ,CAAC7D,QAAQ,CAAE,EACrBuG,iBAAiB,EACjBF,aAAa,EACbC,eACD,CAAC;IACF,CAAC;IACDzF,eAAeA,CAAE6F,gBAAgB,EAAG;MACnC7F,eAAe,CAAE6F,gBAAiB,CAAC;IACpC;EACD,CAAC;AACF,CAAE,CAAC;AAEH,eAAe1I,OAAO,CACrBC,IAAI,EACJgF,eAAe,EACfU,iBAAiB;AACjB;AACA;AACA;AACAzF,WAAW,CAAE,CAAE;EAAEyB;AAAM,CAAC,KAAM,CAAC,CAAEA,KAAM,CAAC,EACxChC,WAAW,CAAE,uBAAwB,CACtC,CAAC,CAAE+B,cAAe,CAAC"}
1
+ {"version":3,"names":["classnames","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","getDefaultBlockName","isUnmodifiedBlock","store","blocksStore","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","blockEditorStore","useLayout","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","hasOwnProperty","className","style","Block","children","isHtml","props","createElement","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","themeSupportsLayout","isTemporarilyEditingAsBlocks","blockEditingMode","mayDisplayControls","mayDisplayParentControls","select","getSettings","__unstableGetTemporarilyEditingAsBlocks","getBlockEditingMode","getBlockName","isFirstMultiSelectedBlock","getMultiSelectedBlockClientIds","hasSelectedInnerBlock","hasBlockSupport","supportsLayout","every","id","removeBlock","onRemove","parentLayout","blockEdit","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","isSticky","includes","saveContent","Fragment","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","Provider","fallback","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","key","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback, RawHTML } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { BlockListBlockContext } from './block-list-block-context';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\tisSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === name\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSelected, name ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( blockEditingMode === 'disabled' ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-editing-disabled': blockEditingMode === 'disabled',\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"],"mappings":"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"}
@@ -119,7 +119,8 @@ function BlockListBlock({
119
119
  isDescendantOfParentSelected,
120
120
  isDescendentBlockSelected,
121
121
  isParentSelected,
122
- order
122
+ order,
123
+ mayDisplayControls
123
124
  } = useSelect(select => {
124
125
  const {
125
126
  getBlockCount,
@@ -128,7 +129,10 @@ function BlockListBlock({
128
129
  getBlockParents,
129
130
  getSelectedBlockClientId,
130
131
  getSettings,
131
- hasSelectedInnerBlock
132
+ hasSelectedInnerBlock,
133
+ getBlockName,
134
+ isFirstMultiSelectedBlock,
135
+ getMultiSelectedBlockClientIds
132
136
  } = select(blockEditorStore);
133
137
  const currentBlockType = getBlockType(name || 'core/missing');
134
138
  const currentBlockCategory = currentBlockType?.category;
@@ -161,7 +165,8 @@ function BlockListBlock({
161
165
  isDescendantOfParentSelected: descendantOfParentSelected,
162
166
  isDescendentBlockSelected: descendentBlockSelected,
163
167
  isParentSelected: parentSelected,
164
- order: blockOrder
168
+ order: blockOrder,
169
+ mayDisplayControls: isSelected || isFirstMultiSelectedBlock(clientId) && getMultiSelectedBlockClientIds().every(id => getBlockName(id) === name)
165
170
  };
166
171
  }, [clientId, isSelected, name, rootClientId]);
167
172
  const {
@@ -193,7 +198,10 @@ function BlockListBlock({
193
198
  }, [blockWidth, setBlockWidth]);
194
199
 
195
200
  // Block level styles.
196
- const wrapperProps = getWrapperProps(attributes, blockType.getEditWrapperProps);
201
+ let wrapperProps = {};
202
+ if (blockType?.getEditWrapperProps) {
203
+ wrapperProps = getWrapperProps(attributes, blockType.getEditWrapperProps);
204
+ }
197
205
 
198
206
  // Inherited styles merged with block level styles.
199
207
  const mergedStyle = useMemo(() => {
@@ -257,7 +265,8 @@ function BlockListBlock({
257
265
  style: mergedStyle,
258
266
  toggleSelection: toggleSelection,
259
267
  __unstableParentLayout: Object.keys(parentLayout).length ? parentLayout : undefined,
260
- wrapperProps: wrapperProps
268
+ wrapperProps: wrapperProps,
269
+ mayDisplayControls: mayDisplayControls
261
270
  }), createElement(View, {
262
271
  onLayout: onLayout
263
272
  })));
@@ -1 +1 @@
1
- {"version":3,"names":["Pressable","View","useCallback","useMemo","useState","GlobalStylesContext","getMergedGlobalStyles","useMobileGlobalStylesColors","useGlobalStyles","__experimentalGetAccessibleBlockLabel","getAccessibleBlockLabel","getBlockType","getDefaultBlockName","isUnmodifiedBlock","isUnmodifiedDefaultBlock","switchToBlockType","useDispatch","useSelect","withDispatch","withSelect","compose","ifCondition","pure","BlockEdit","BlockDraggable","BlockInvalidWarning","BlockOutline","store","blockEditorStore","useLayout","useSettings","EMPTY_ARRAY","wrapperPropsCache","WeakMap","emptyObj","getWrapperProps","value","getWrapperPropsFunction","cachedValue","get","wrapperProps","set","BlockWrapper","accessibilityLabel","blockCategory","children","clientId","draggingClientId","draggingEnabled","hasInnerBlocks","isDescendentBlockSelected","isRootList","isSelected","isTouchable","marginHorizontal","marginVertical","name","onFocus","blockWrapperStyles","flex","blockWrapperStyle","accessible","createElement","accessibilityRole","disabled","onPress","style","enabled","testID","BlockListBlock","attributes","blockWidth","blockWrapperWidth","canRemove","contentStyle","isLocked","isSelectionEnabled","isStackedHorizontally","isValid","onDeleteBlock","onInsertBlocksAfter","onMerge","onReplace","parentBlockAlignment","parentWidth","rootClientId","setAttributes","toggleSelection","baseGlobalStyles","blockType","isDescendantOfParentSelected","isParentSelected","order","select","getBlockCount","getBlockHierarchyRootClientId","getBlockIndex","getBlockParents","getSelectedBlockClientId","getSettings","hasSelectedInnerBlock","currentBlockType","currentBlockCategory","category","blockOrder","descendentBlockSelected","selectedBlockClientId","parents","parentSelected","selectedParents","descendantOfParentSelected","includes","blockHasInnerBlocks","isDraggingEnabled","currentDraggingClientId","globalStylesBaseStyles","__experimentalGlobalStylesBaseStyles","removeBlock","selectBlock","initialBlockWidth","setBlockWidth","parentLayout","defaultColors","globalStyle","fontSizes","onRemove","onLayout","nativeEvent","layoutWidth","Math","floor","layout","width","getEditWrapperProps","mergedStyle","JSON","stringify","Object","fromEntries","entries","filter","key","BLOCK_STYLE_ATTRIBUTES","isFocused","Provider","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","keys","length","applyWithSelect","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","block","templateLock","canMove","mode","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","every","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Pressable, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport {\n\tGlobalStylesContext,\n\tgetMergedGlobalStyles,\n\tuseMobileGlobalStylesColors,\n\tuseGlobalStyles,\n} from '@wordpress/components';\nimport {\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n\tgetBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisUnmodifiedDefaultBlock,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport {\n\tuseDispatch,\n\tuseSelect,\n\twithDispatch,\n\twithSelect,\n} from '@wordpress/data';\nimport { compose, ifCondition, pure } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockDraggable from '../block-draggable';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockOutline from './block-outline';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { useSettings } from '../use-settings';\n\nconst EMPTY_ARRAY = [];\n\n// Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.\nconst wrapperPropsCache = new WeakMap();\nconst emptyObj = {};\nfunction getWrapperProps( value, getWrapperPropsFunction ) {\n\tif ( ! getWrapperPropsFunction ) {\n\t\treturn emptyObj;\n\t}\n\tconst cachedValue = wrapperPropsCache.get( value );\n\tif ( ! cachedValue ) {\n\t\tconst wrapperProps = getWrapperPropsFunction( value );\n\t\twrapperPropsCache.set( value, wrapperProps );\n\t\treturn wrapperProps;\n\t}\n\treturn cachedValue;\n}\n\nfunction BlockWrapper( {\n\taccessibilityLabel,\n\tblockCategory,\n\tchildren,\n\tclientId,\n\tdraggingClientId,\n\tdraggingEnabled,\n\thasInnerBlocks,\n\tisDescendentBlockSelected,\n\tisRootList,\n\tisSelected,\n\tisTouchable,\n\tmarginHorizontal,\n\tmarginVertical,\n\tname,\n\tonFocus,\n} ) {\n\tconst blockWrapperStyles = { flex: 1 };\n\tconst blockWrapperStyle = [\n\t\tblockWrapperStyles,\n\t\t{\n\t\t\tmarginVertical,\n\t\t\tmarginHorizontal,\n\t\t},\n\t];\n\tconst accessible = ! ( isSelected || isDescendentBlockSelected );\n\n\treturn (\n\t\t<Pressable\n\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\taccessibilityRole=\"button\"\n\t\t\taccessible={ accessible }\n\t\t\tdisabled={ ! isTouchable }\n\t\t\tonPress={ onFocus }\n\t\t\tstyle={ blockWrapperStyle }\n\t\t>\n\t\t\t<BlockOutline\n\t\t\t\tblockCategory={ blockCategory }\n\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\tisRootList={ isRootList }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tname={ name }\n\t\t\t/>\n\t\t\t<BlockDraggable\n\t\t\t\tclientId={ clientId }\n\t\t\t\tdraggingClientId={ draggingClientId }\n\t\t\t\tenabled={ draggingEnabled }\n\t\t\t\ttestID=\"draggable-trigger-content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</BlockDraggable>\n\t\t</Pressable>\n\t);\n}\n\nfunction BlockListBlock( {\n\tattributes,\n\tblockWidth: blockWrapperWidth,\n\tcanRemove,\n\tclientId,\n\tcontentStyle,\n\tisLocked,\n\tisSelected,\n\tisSelectionEnabled,\n\tisStackedHorizontally,\n\tisValid,\n\tmarginHorizontal,\n\tmarginVertical,\n\tname,\n\tonDeleteBlock,\n\tonInsertBlocksAfter,\n\tonMerge,\n\tonReplace,\n\tparentBlockAlignment,\n\tparentWidth,\n\trootClientId,\n\tsetAttributes,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tbaseGlobalStyles,\n\t\tblockCategory,\n\t\tblockType,\n\t\tdraggingClientId,\n\t\tdraggingEnabled,\n\t\thasInnerBlocks,\n\t\tisDescendantOfParentSelected,\n\t\tisDescendentBlockSelected,\n\t\tisParentSelected,\n\t\torder,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockHierarchyRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetSettings,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst currentBlockType = getBlockType( name || 'core/missing' );\n\t\t\tconst currentBlockCategory = currentBlockType?.category;\n\t\t\tconst blockOrder = getBlockIndex( clientId );\n\t\t\tconst descendentBlockSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tconst parents = getBlockParents( clientId, true );\n\t\t\tconst parentSelected =\n\t\t\t\t// Set false as a default value to prevent re-render when it's changed from null to false.\n\t\t\t\t( selectedBlockClientId || false ) &&\n\t\t\t\tselectedBlockClientId === rootClientId;\n\n\t\t\tconst selectedParents = clientId ? parents : [];\n\t\t\tconst descendantOfParentSelected =\n\t\t\t\tselectedParents.includes( rootClientId );\n\t\t\tconst blockHasInnerBlocks = getBlockCount( clientId ) > 0;\n\n\t\t\t// For blocks with inner blocks, we only enable the dragging in the nested\n\t\t\t// blocks if any of them are selected. This way we prevent the long-press\n\t\t\t// gesture from being disabled for elements within the block UI.\n\t\t\tconst isDraggingEnabled =\n\t\t\t\t! blockHasInnerBlocks ||\n\t\t\t\tisSelected ||\n\t\t\t\t! descendentBlockSelected;\n\t\t\t// Dragging nested blocks is not supported yet. For this reason, the block to be dragged\n\t\t\t// will be the top in the hierarchy.\n\t\t\tconst currentDraggingClientId =\n\t\t\t\tgetBlockHierarchyRootClientId( clientId );\n\n\t\t\tconst globalStylesBaseStyles =\n\t\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles;\n\n\t\t\treturn {\n\t\t\t\tbaseGlobalStyles: globalStylesBaseStyles,\n\t\t\t\tblockCategory: currentBlockCategory,\n\t\t\t\tblockType: currentBlockType,\n\t\t\t\tdraggingClientId: currentDraggingClientId,\n\t\t\t\tdraggingEnabled: isDraggingEnabled,\n\t\t\t\thasInnerBlocks: blockHasInnerBlocks,\n\t\t\t\tisDescendantOfParentSelected: descendantOfParentSelected,\n\t\t\t\tisDescendentBlockSelected: descendentBlockSelected,\n\t\t\t\tisParentSelected: parentSelected,\n\t\t\t\torder: blockOrder,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSelected, name, rootClientId ]\n\t);\n\tconst { removeBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst initialBlockWidth = blockWrapperWidth - 2 * marginHorizontal;\n\tconst [ blockWidth, setBlockWidth ] = useState( initialBlockWidth );\n\tconst parentLayout = useLayout() || {};\n\tconst defaultColors = useMobileGlobalStylesColors();\n\tconst globalStyle = useGlobalStyles();\n\tconst [ fontSizes ] = useSettings( 'typography.fontSizes' );\n\n\tconst onRemove = useCallback(\n\t\t() => removeBlock( clientId ),\n\t\t[ clientId, removeBlock ]\n\t);\n\tconst onFocus = useCallback( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tselectBlock( clientId );\n\t\t}\n\t}, [ selectBlock, clientId, isSelected ] );\n\n\tconst onLayout = useCallback(\n\t\t( { nativeEvent } ) => {\n\t\t\tconst layoutWidth = Math.floor( nativeEvent.layout.width );\n\n\t\t\tif ( ! blockWidth || ! layoutWidth ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( blockWidth !== layoutWidth ) {\n\t\t\t\tsetBlockWidth( layoutWidth );\n\t\t\t}\n\t\t},\n\t\t[ blockWidth, setBlockWidth ]\n\t);\n\n\t// Block level styles.\n\tconst wrapperProps = getWrapperProps(\n\t\tattributes,\n\t\tblockType.getEditWrapperProps\n\t);\n\n\t// Inherited styles merged with block level styles.\n\tconst mergedStyle = useMemo( () => {\n\t\treturn getMergedGlobalStyles(\n\t\t\tbaseGlobalStyles,\n\t\t\tglobalStyle,\n\t\t\twrapperProps.style,\n\t\t\tattributes,\n\t\t\tdefaultColors,\n\t\t\tname,\n\t\t\tfontSizes || EMPTY_ARRAY\n\t\t);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\t// It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.\n\t\t// JSON.stringify is used for the following purposes:\n\t\t// 1. To create a single, comparable value from the globalStyle, wrapperProps.style, and attributes objects. This allows useMemo to\n\t\t// efficiently determine if a change has occurred in any of these objects.\n\t\t// 2. To filter the attributes object, ensuring that only the relevant attributes (included in\n\t\t// GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of\n\t\t// unnecessary useMemo calls when other, unrelated attributes change.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify( globalStyle ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify( wrapperProps.style ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify(\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( attributes ?? {} ).filter( ( [ key ] ) =>\n\t\t\t\t\tGlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes( key )\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t] );\n\n\tconst isFocused = isSelected || isDescendentBlockSelected;\n\tconst isTouchable =\n\t\tisSelected ||\n\t\tisDescendantOfParentSelected ||\n\t\tisParentSelected ||\n\t\t! rootClientId;\n\n\tconst accessibilityLabel = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\torder + 1\n\t);\n\n\treturn (\n\t\t<BlockWrapper\n\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\tblockCategory={ blockCategory }\n\t\t\tclientId={ clientId }\n\t\t\tdraggingClientId={ draggingClientId }\n\t\t\tdraggingEnabled={ draggingEnabled }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tisDescendentBlockSelected={ isDescendentBlockSelected }\n\t\t\tisFocused={ isFocused }\n\t\t\tisRootList={ ! rootClientId }\n\t\t\tisSelected={ isSelected }\n\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\tisTouchable={ isTouchable }\n\t\t\tmarginHorizontal={ marginHorizontal }\n\t\t\tmarginVertical={ marginVertical }\n\t\t\tname={ name }\n\t\t\tonFocus={ onFocus }\n\t\t>\n\t\t\t{ () =>\n\t\t\t\t! isValid ? (\n\t\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t) : (\n\t\t\t\t\t<GlobalStylesContext.Provider value={ mergedStyle }>\n\t\t\t\t\t\t<BlockEdit\n\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\tblockWidth={ blockWidth }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tcontentStyle={ contentStyle }\n\t\t\t\t\t\t\tinsertBlocksAfter={\n\t\t\t\t\t\t\t\tisLocked ? undefined : onInsertBlocksAfter\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\t\t\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tonDeleteBlock={ onDeleteBlock }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\t\t\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\t\t\t\t\tparentBlockAlignment={ parentBlockAlignment }\n\t\t\t\t\t\t\tparentWidth={ parentWidth }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tstyle={ mergedStyle }\n\t\t\t\t\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t\t\t\t\t__unstableParentLayout={\n\t\t\t\t\t\t\t\tObject.keys( parentLayout ).length\n\t\t\t\t\t\t\t\t\t? parentLayout\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twrapperProps={ wrapperProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View onLayout={ onLayout } />\n\t\t\t\t\t</GlobalStylesContext.Provider>\n\t\t\t\t)\n\t\t\t}\n\t\t</BlockWrapper>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block )\n)( BlockListBlock );\n"],"mappings":"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"}
1
+ {"version":3,"names":["Pressable","View","useCallback","useMemo","useState","GlobalStylesContext","getMergedGlobalStyles","useMobileGlobalStylesColors","useGlobalStyles","__experimentalGetAccessibleBlockLabel","getAccessibleBlockLabel","getBlockType","getDefaultBlockName","isUnmodifiedBlock","isUnmodifiedDefaultBlock","switchToBlockType","useDispatch","useSelect","withDispatch","withSelect","compose","ifCondition","pure","BlockEdit","BlockDraggable","BlockInvalidWarning","BlockOutline","store","blockEditorStore","useLayout","useSettings","EMPTY_ARRAY","wrapperPropsCache","WeakMap","emptyObj","getWrapperProps","value","getWrapperPropsFunction","cachedValue","get","wrapperProps","set","BlockWrapper","accessibilityLabel","blockCategory","children","clientId","draggingClientId","draggingEnabled","hasInnerBlocks","isDescendentBlockSelected","isRootList","isSelected","isTouchable","marginHorizontal","marginVertical","name","onFocus","blockWrapperStyles","flex","blockWrapperStyle","accessible","createElement","accessibilityRole","disabled","onPress","style","enabled","testID","BlockListBlock","attributes","blockWidth","blockWrapperWidth","canRemove","contentStyle","isLocked","isSelectionEnabled","isStackedHorizontally","isValid","onDeleteBlock","onInsertBlocksAfter","onMerge","onReplace","parentBlockAlignment","parentWidth","rootClientId","setAttributes","toggleSelection","baseGlobalStyles","blockType","isDescendantOfParentSelected","isParentSelected","order","mayDisplayControls","select","getBlockCount","getBlockHierarchyRootClientId","getBlockIndex","getBlockParents","getSelectedBlockClientId","getSettings","hasSelectedInnerBlock","getBlockName","isFirstMultiSelectedBlock","getMultiSelectedBlockClientIds","currentBlockType","currentBlockCategory","category","blockOrder","descendentBlockSelected","selectedBlockClientId","parents","parentSelected","selectedParents","descendantOfParentSelected","includes","blockHasInnerBlocks","isDraggingEnabled","currentDraggingClientId","globalStylesBaseStyles","__experimentalGlobalStylesBaseStyles","every","id","removeBlock","selectBlock","initialBlockWidth","setBlockWidth","parentLayout","defaultColors","globalStyle","fontSizes","onRemove","onLayout","nativeEvent","layoutWidth","Math","floor","layout","width","getEditWrapperProps","mergedStyle","JSON","stringify","Object","fromEntries","entries","filter","key","BLOCK_STYLE_ATTRIBUTES","isFocused","Provider","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","keys","length","applyWithSelect","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","block","templateLock","canMove","mode","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","newAttributes","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockOrder","getBlockRootClientId","canInsertBlockType","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","firstClientId","batch","replacement","nextRootClientId","rootAttributes","previousRootAttributes","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","selectionEnabled"],"sources":["@wordpress/block-editor/src/components/block-list/block.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Pressable, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport {\n\tGlobalStylesContext,\n\tgetMergedGlobalStyles,\n\tuseMobileGlobalStylesColors,\n\tuseGlobalStyles,\n} from '@wordpress/components';\nimport {\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n\tgetBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisUnmodifiedDefaultBlock,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport {\n\tuseDispatch,\n\tuseSelect,\n\twithDispatch,\n\twithSelect,\n} from '@wordpress/data';\nimport { compose, ifCondition, pure } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockDraggable from '../block-draggable';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockOutline from './block-outline';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { useSettings } from '../use-settings';\n\nconst EMPTY_ARRAY = [];\n\n// Helper function to memoize the wrapperProps since getEditWrapperProps always returns a new reference.\nconst wrapperPropsCache = new WeakMap();\nconst emptyObj = {};\nfunction getWrapperProps( value, getWrapperPropsFunction ) {\n\tif ( ! getWrapperPropsFunction ) {\n\t\treturn emptyObj;\n\t}\n\tconst cachedValue = wrapperPropsCache.get( value );\n\tif ( ! cachedValue ) {\n\t\tconst wrapperProps = getWrapperPropsFunction( value );\n\t\twrapperPropsCache.set( value, wrapperProps );\n\t\treturn wrapperProps;\n\t}\n\treturn cachedValue;\n}\n\nfunction BlockWrapper( {\n\taccessibilityLabel,\n\tblockCategory,\n\tchildren,\n\tclientId,\n\tdraggingClientId,\n\tdraggingEnabled,\n\thasInnerBlocks,\n\tisDescendentBlockSelected,\n\tisRootList,\n\tisSelected,\n\tisTouchable,\n\tmarginHorizontal,\n\tmarginVertical,\n\tname,\n\tonFocus,\n} ) {\n\tconst blockWrapperStyles = { flex: 1 };\n\tconst blockWrapperStyle = [\n\t\tblockWrapperStyles,\n\t\t{\n\t\t\tmarginVertical,\n\t\t\tmarginHorizontal,\n\t\t},\n\t];\n\tconst accessible = ! ( isSelected || isDescendentBlockSelected );\n\n\treturn (\n\t\t<Pressable\n\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\taccessibilityRole=\"button\"\n\t\t\taccessible={ accessible }\n\t\t\tdisabled={ ! isTouchable }\n\t\t\tonPress={ onFocus }\n\t\t\tstyle={ blockWrapperStyle }\n\t\t>\n\t\t\t<BlockOutline\n\t\t\t\tblockCategory={ blockCategory }\n\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\tisRootList={ isRootList }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tname={ name }\n\t\t\t/>\n\t\t\t<BlockDraggable\n\t\t\t\tclientId={ clientId }\n\t\t\t\tdraggingClientId={ draggingClientId }\n\t\t\t\tenabled={ draggingEnabled }\n\t\t\t\ttestID=\"draggable-trigger-content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</BlockDraggable>\n\t\t</Pressable>\n\t);\n}\n\nfunction BlockListBlock( {\n\tattributes,\n\tblockWidth: blockWrapperWidth,\n\tcanRemove,\n\tclientId,\n\tcontentStyle,\n\tisLocked,\n\tisSelected,\n\tisSelectionEnabled,\n\tisStackedHorizontally,\n\tisValid,\n\tmarginHorizontal,\n\tmarginVertical,\n\tname,\n\tonDeleteBlock,\n\tonInsertBlocksAfter,\n\tonMerge,\n\tonReplace,\n\tparentBlockAlignment,\n\tparentWidth,\n\trootClientId,\n\tsetAttributes,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tbaseGlobalStyles,\n\t\tblockCategory,\n\t\tblockType,\n\t\tdraggingClientId,\n\t\tdraggingEnabled,\n\t\thasInnerBlocks,\n\t\tisDescendantOfParentSelected,\n\t\tisDescendentBlockSelected,\n\t\tisParentSelected,\n\t\torder,\n\t\tmayDisplayControls,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockHierarchyRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetSettings,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst currentBlockType = getBlockType( name || 'core/missing' );\n\t\t\tconst currentBlockCategory = currentBlockType?.category;\n\t\t\tconst blockOrder = getBlockIndex( clientId );\n\t\t\tconst descendentBlockSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tconst parents = getBlockParents( clientId, true );\n\t\t\tconst parentSelected =\n\t\t\t\t// Set false as a default value to prevent re-render when it's changed from null to false.\n\t\t\t\t( selectedBlockClientId || false ) &&\n\t\t\t\tselectedBlockClientId === rootClientId;\n\n\t\t\tconst selectedParents = clientId ? parents : [];\n\t\t\tconst descendantOfParentSelected =\n\t\t\t\tselectedParents.includes( rootClientId );\n\t\t\tconst blockHasInnerBlocks = getBlockCount( clientId ) > 0;\n\n\t\t\t// For blocks with inner blocks, we only enable the dragging in the nested\n\t\t\t// blocks if any of them are selected. This way we prevent the long-press\n\t\t\t// gesture from being disabled for elements within the block UI.\n\t\t\tconst isDraggingEnabled =\n\t\t\t\t! blockHasInnerBlocks ||\n\t\t\t\tisSelected ||\n\t\t\t\t! descendentBlockSelected;\n\t\t\t// Dragging nested blocks is not supported yet. For this reason, the block to be dragged\n\t\t\t// will be the top in the hierarchy.\n\t\t\tconst currentDraggingClientId =\n\t\t\t\tgetBlockHierarchyRootClientId( clientId );\n\n\t\t\tconst globalStylesBaseStyles =\n\t\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles;\n\n\t\t\treturn {\n\t\t\t\tbaseGlobalStyles: globalStylesBaseStyles,\n\t\t\t\tblockCategory: currentBlockCategory,\n\t\t\t\tblockType: currentBlockType,\n\t\t\t\tdraggingClientId: currentDraggingClientId,\n\t\t\t\tdraggingEnabled: isDraggingEnabled,\n\t\t\t\thasInnerBlocks: blockHasInnerBlocks,\n\t\t\t\tisDescendantOfParentSelected: descendantOfParentSelected,\n\t\t\t\tisDescendentBlockSelected: descendentBlockSelected,\n\t\t\t\tisParentSelected: parentSelected,\n\t\t\t\torder: blockOrder,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\tisSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === name\n\t\t\t\t\t\t) ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSelected, name, rootClientId ]\n\t);\n\tconst { removeBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst initialBlockWidth = blockWrapperWidth - 2 * marginHorizontal;\n\tconst [ blockWidth, setBlockWidth ] = useState( initialBlockWidth );\n\tconst parentLayout = useLayout() || {};\n\tconst defaultColors = useMobileGlobalStylesColors();\n\tconst globalStyle = useGlobalStyles();\n\tconst [ fontSizes ] = useSettings( 'typography.fontSizes' );\n\n\tconst onRemove = useCallback(\n\t\t() => removeBlock( clientId ),\n\t\t[ clientId, removeBlock ]\n\t);\n\tconst onFocus = useCallback( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tselectBlock( clientId );\n\t\t}\n\t}, [ selectBlock, clientId, isSelected ] );\n\n\tconst onLayout = useCallback(\n\t\t( { nativeEvent } ) => {\n\t\t\tconst layoutWidth = Math.floor( nativeEvent.layout.width );\n\n\t\t\tif ( ! blockWidth || ! layoutWidth ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( blockWidth !== layoutWidth ) {\n\t\t\t\tsetBlockWidth( layoutWidth );\n\t\t\t}\n\t\t},\n\t\t[ blockWidth, setBlockWidth ]\n\t);\n\n\t// Block level styles.\n\tlet wrapperProps = {};\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = getWrapperProps(\n\t\t\tattributes,\n\t\t\tblockType.getEditWrapperProps\n\t\t);\n\t}\n\n\t// Inherited styles merged with block level styles.\n\tconst mergedStyle = useMemo( () => {\n\t\treturn getMergedGlobalStyles(\n\t\t\tbaseGlobalStyles,\n\t\t\tglobalStyle,\n\t\t\twrapperProps.style,\n\t\t\tattributes,\n\t\t\tdefaultColors,\n\t\t\tname,\n\t\t\tfontSizes || EMPTY_ARRAY\n\t\t);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\t// It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.\n\t\t// JSON.stringify is used for the following purposes:\n\t\t// 1. To create a single, comparable value from the globalStyle, wrapperProps.style, and attributes objects. This allows useMemo to\n\t\t// efficiently determine if a change has occurred in any of these objects.\n\t\t// 2. To filter the attributes object, ensuring that only the relevant attributes (included in\n\t\t// GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of\n\t\t// unnecessary useMemo calls when other, unrelated attributes change.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify( globalStyle ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify( wrapperProps.style ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tJSON.stringify(\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( attributes ?? {} ).filter( ( [ key ] ) =>\n\t\t\t\t\tGlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes( key )\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t] );\n\n\tconst isFocused = isSelected || isDescendentBlockSelected;\n\tconst isTouchable =\n\t\tisSelected ||\n\t\tisDescendantOfParentSelected ||\n\t\tisParentSelected ||\n\t\t! rootClientId;\n\n\tconst accessibilityLabel = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\torder + 1\n\t);\n\n\treturn (\n\t\t<BlockWrapper\n\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\tblockCategory={ blockCategory }\n\t\t\tclientId={ clientId }\n\t\t\tdraggingClientId={ draggingClientId }\n\t\t\tdraggingEnabled={ draggingEnabled }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tisDescendentBlockSelected={ isDescendentBlockSelected }\n\t\t\tisFocused={ isFocused }\n\t\t\tisRootList={ ! rootClientId }\n\t\t\tisSelected={ isSelected }\n\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\tisTouchable={ isTouchable }\n\t\t\tmarginHorizontal={ marginHorizontal }\n\t\t\tmarginVertical={ marginVertical }\n\t\t\tname={ name }\n\t\t\tonFocus={ onFocus }\n\t\t>\n\t\t\t{ () =>\n\t\t\t\t! isValid ? (\n\t\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t) : (\n\t\t\t\t\t<GlobalStylesContext.Provider value={ mergedStyle }>\n\t\t\t\t\t\t<BlockEdit\n\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\tblockWidth={ blockWidth }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tcontentStyle={ contentStyle }\n\t\t\t\t\t\t\tinsertBlocksAfter={\n\t\t\t\t\t\t\t\tisLocked ? undefined : onInsertBlocksAfter\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\t\t\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tonDeleteBlock={ onDeleteBlock }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\t\t\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\t\t\t\t\tparentBlockAlignment={ parentBlockAlignment }\n\t\t\t\t\t\t\tparentWidth={ parentWidth }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tstyle={ mergedStyle }\n\t\t\t\t\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t\t\t\t\t__unstableParentLayout={\n\t\t\t\t\t\t\t\tObject.keys( parentLayout ).length\n\t\t\t\t\t\t\t\t\t? parentLayout\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twrapperProps={ wrapperProps }\n\t\t\t\t\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View onLayout={ onLayout } />\n\t\t\t\t\t</GlobalStylesContext.Provider>\n\t\t\t\t)\n\t\t\t}\n\t\t</BlockWrapper>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block )\n)( BlockListBlock );\n"],"mappings":"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"}