@wordpress/block-editor 12.1.0 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/autocompleters/block.js +13 -5
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/components/block-breadcrumb/index.js +6 -3
  5. package/build/components/block-breadcrumb/index.js.map +1 -1
  6. package/build/components/block-editing-mode/index.js +84 -0
  7. package/build/components/block-editing-mode/index.js.map +1 -0
  8. package/build/components/block-list/block-list-block-context.js +15 -0
  9. package/build/components/block-list/block-list-block-context.js.map +1 -0
  10. package/build/components/block-list/block.js +29 -37
  11. package/build/components/block-list/block.js.map +1 -1
  12. package/build/components/block-list/block.native.js +14 -22
  13. package/build/components/block-list/block.native.js.map +1 -1
  14. package/build/components/block-list/index.native.js +107 -108
  15. package/build/components/block-list/index.native.js.map +1 -1
  16. package/build/components/block-list/use-block-props/index.js +2 -2
  17. package/build/components/block-list/use-block-props/index.js.map +1 -1
  18. package/build/components/block-list/use-in-between-inserter.js +7 -5
  19. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  20. package/build/components/block-list-appender/index.js +15 -1
  21. package/build/components/block-list-appender/index.js.map +1 -1
  22. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
  23. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  24. package/build/components/block-styles/preview-panel.js +1 -2
  25. package/build/components/block-styles/preview-panel.js.map +1 -1
  26. package/build/components/block-switcher/block-transformations-menu.js +8 -0
  27. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  28. package/build/components/block-switcher/block-variation-transformations.js +125 -0
  29. package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
  30. package/build/components/block-switcher/index.js +34 -12
  31. package/build/components/block-switcher/index.js.map +1 -1
  32. package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
  33. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  34. package/build/components/block-toolbar/index.js +9 -7
  35. package/build/components/block-toolbar/index.js.map +1 -1
  36. package/build/components/block-tools/block-contextual-toolbar.js +5 -3
  37. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  38. package/build/components/block-tools/insertion-point.js +11 -5
  39. package/build/components/block-tools/insertion-point.js.map +1 -1
  40. package/build/components/convert-to-group-buttons/index.js +7 -2
  41. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  42. package/build/components/convert-to-group-buttons/index.native.js +87 -3
  43. package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
  44. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
  45. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  46. package/build/components/global-styles/dimensions-panel.js +3 -2
  47. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  48. package/build/components/iframe/index.js +14 -7
  49. package/build/components/iframe/index.js.map +1 -1
  50. package/build/components/inner-blocks/index.js +2 -1
  51. package/build/components/inner-blocks/index.js.map +1 -1
  52. package/build/components/inner-blocks/index.native.js +7 -7
  53. package/build/components/inner-blocks/index.native.js.map +1 -1
  54. package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
  55. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  56. package/build/components/inserter/index.js +3 -7
  57. package/build/components/inserter/index.js.map +1 -1
  58. package/build/components/inserter/quick-inserter.js +2 -4
  59. package/build/components/inserter/quick-inserter.js.map +1 -1
  60. package/build/components/inserter/search-results.js +19 -6
  61. package/build/components/inserter/search-results.js.map +1 -1
  62. package/build/components/list-view/appender.js +6 -1
  63. package/build/components/list-view/appender.js.map +1 -1
  64. package/build/components/list-view/block-contents.js +4 -2
  65. package/build/components/list-view/block-contents.js.map +1 -1
  66. package/build/components/list-view/block.js +21 -25
  67. package/build/components/list-view/block.js.map +1 -1
  68. package/build/components/list-view/branch.js +1 -3
  69. package/build/components/list-view/branch.js.map +1 -1
  70. package/build/components/list-view/index.js +14 -7
  71. package/build/components/list-view/index.js.map +1 -1
  72. package/build/components/list-view/use-list-view-client-ids.js +27 -3
  73. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  74. package/build/components/publish-date-time-picker/index.js +0 -2
  75. package/build/components/publish-date-time-picker/index.js.map +1 -1
  76. package/build/components/url-input/index.js +3 -0
  77. package/build/components/url-input/index.js.map +1 -1
  78. package/build/components/use-block-drop-zone/index.js +25 -15
  79. package/build/components/use-block-drop-zone/index.js.map +1 -1
  80. package/build/components/use-resize-canvas/index.js +8 -1
  81. package/build/components/use-resize-canvas/index.js.map +1 -1
  82. package/build/components/writing-flow/use-arrow-nav.js +13 -7
  83. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  84. package/build/hooks/align.js +3 -7
  85. package/build/hooks/align.js.map +1 -1
  86. package/build/hooks/behaviors.js +115 -0
  87. package/build/hooks/behaviors.js.map +1 -0
  88. package/build/hooks/dimensions.js +0 -30
  89. package/build/hooks/dimensions.js.map +1 -1
  90. package/build/hooks/duotone.js +4 -8
  91. package/build/hooks/duotone.js.map +1 -1
  92. package/build/hooks/index.js +2 -0
  93. package/build/hooks/index.js.map +1 -1
  94. package/build/hooks/layout.js +8 -9
  95. package/build/hooks/layout.js.map +1 -1
  96. package/build/private-apis.js +4 -7
  97. package/build/private-apis.js.map +1 -1
  98. package/build/store/private-actions.js +46 -0
  99. package/build/store/private-actions.js.map +1 -1
  100. package/build/store/private-selectors.js +88 -0
  101. package/build/store/private-selectors.js.map +1 -1
  102. package/build/store/reducer.js +36 -1
  103. package/build/store/reducer.js.map +1 -1
  104. package/build/store/selectors.js +28 -18
  105. package/build/store/selectors.js.map +1 -1
  106. package/build/utils/order-inserter-block-items.js +41 -0
  107. package/build/utils/order-inserter-block-items.js.map +1 -0
  108. package/build-module/autocompleters/block.js +12 -5
  109. package/build-module/autocompleters/block.js.map +1 -1
  110. package/build-module/components/block-breadcrumb/index.js +5 -3
  111. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  112. package/build-module/components/block-editing-mode/index.js +72 -0
  113. package/build-module/components/block-editing-mode/index.js.map +1 -0
  114. package/build-module/components/block-list/block-list-block-context.js +6 -0
  115. package/build-module/components/block-list/block-list-block-context.js.map +1 -0
  116. package/build-module/components/block-list/block.js +26 -34
  117. package/build-module/components/block-list/block.js.map +1 -1
  118. package/build-module/components/block-list/block.native.js +14 -22
  119. package/build-module/components/block-list/block.native.js.map +1 -1
  120. package/build-module/components/block-list/index.native.js +108 -110
  121. package/build-module/components/block-list/index.native.js.map +1 -1
  122. package/build-module/components/block-list/use-block-props/index.js +1 -1
  123. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  124. package/build-module/components/block-list/use-in-between-inserter.js +6 -5
  125. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  126. package/build-module/components/block-list-appender/index.js +15 -1
  127. package/build-module/components/block-list-appender/index.js.map +1 -1
  128. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
  129. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  130. package/build-module/components/block-styles/preview-panel.js +1 -2
  131. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  132. package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
  133. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  134. package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
  135. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
  136. package/build-module/components/block-switcher/index.js +33 -12
  137. package/build-module/components/block-switcher/index.js.map +1 -1
  138. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
  139. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  140. package/build-module/components/block-toolbar/index.js +8 -7
  141. package/build-module/components/block-toolbar/index.js.map +1 -1
  142. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -3
  143. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  144. package/build-module/components/block-tools/insertion-point.js +11 -5
  145. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  146. package/build-module/components/convert-to-group-buttons/index.js +7 -2
  147. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  148. package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
  149. package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
  150. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
  151. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  152. package/build-module/components/global-styles/dimensions-panel.js +3 -2
  153. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  154. package/build-module/components/iframe/index.js +15 -8
  155. package/build-module/components/iframe/index.js.map +1 -1
  156. package/build-module/components/inner-blocks/index.js +2 -1
  157. package/build-module/components/inner-blocks/index.js.map +1 -1
  158. package/build-module/components/inner-blocks/index.native.js +7 -6
  159. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  160. package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
  161. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  162. package/build-module/components/inserter/index.js +3 -7
  163. package/build-module/components/inserter/index.js.map +1 -1
  164. package/build-module/components/inserter/quick-inserter.js +2 -4
  165. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  166. package/build-module/components/inserter/search-results.js +16 -6
  167. package/build-module/components/inserter/search-results.js.map +1 -1
  168. package/build-module/components/list-view/appender.js +6 -2
  169. package/build-module/components/list-view/appender.js.map +1 -1
  170. package/build-module/components/list-view/block-contents.js +4 -2
  171. package/build-module/components/list-view/block-contents.js.map +1 -1
  172. package/build-module/components/list-view/block.js +20 -25
  173. package/build-module/components/list-view/block.js.map +1 -1
  174. package/build-module/components/list-view/branch.js +1 -3
  175. package/build-module/components/list-view/branch.js.map +1 -1
  176. package/build-module/components/list-view/index.js +15 -8
  177. package/build-module/components/list-view/index.js.map +1 -1
  178. package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
  179. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  180. package/build-module/components/publish-date-time-picker/index.js +0 -2
  181. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  182. package/build-module/components/url-input/index.js +3 -0
  183. package/build-module/components/url-input/index.js.map +1 -1
  184. package/build-module/components/use-block-drop-zone/index.js +25 -16
  185. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  186. package/build-module/components/use-resize-canvas/index.js +8 -1
  187. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  188. package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
  189. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  190. package/build-module/hooks/align.js +3 -6
  191. package/build-module/hooks/align.js.map +1 -1
  192. package/build-module/hooks/behaviors.js +97 -0
  193. package/build-module/hooks/behaviors.js.map +1 -0
  194. package/build-module/hooks/dimensions.js +0 -28
  195. package/build-module/hooks/dimensions.js.map +1 -1
  196. package/build-module/hooks/duotone.js +3 -6
  197. package/build-module/hooks/duotone.js.map +1 -1
  198. package/build-module/hooks/index.js +1 -0
  199. package/build-module/hooks/index.js.map +1 -1
  200. package/build-module/hooks/layout.js +7 -9
  201. package/build-module/hooks/layout.js.map +1 -1
  202. package/build-module/private-apis.js +3 -5
  203. package/build-module/private-apis.js.map +1 -1
  204. package/build-module/store/private-actions.js +42 -0
  205. package/build-module/store/private-actions.js.map +1 -1
  206. package/build-module/store/private-selectors.js +79 -0
  207. package/build-module/store/private-selectors.js.map +1 -1
  208. package/build-module/store/reducer.js +34 -1
  209. package/build-module/store/reducer.js.map +1 -1
  210. package/build-module/store/selectors.js +26 -17
  211. package/build-module/store/selectors.js.map +1 -1
  212. package/build-module/utils/order-inserter-block-items.js +32 -0
  213. package/build-module/utils/order-inserter-block-items.js.map +1 -0
  214. package/build-style/content-rtl.css +32 -13
  215. package/build-style/content.css +32 -13
  216. package/build-style/default-editor-styles-rtl.css +1 -1
  217. package/build-style/default-editor-styles.css +1 -1
  218. package/build-style/style-rtl.css +19 -64
  219. package/build-style/style.css +20 -64
  220. package/package.json +32 -31
  221. package/src/autocompleters/block.js +15 -7
  222. package/src/components/block-breadcrumb/index.js +11 -3
  223. package/src/components/block-editing-mode/index.js +71 -0
  224. package/src/components/block-list/block-list-block-context.js +6 -0
  225. package/src/components/block-list/block.js +38 -56
  226. package/src/components/block-list/block.native.js +30 -41
  227. package/src/components/block-list/content.scss +5 -5
  228. package/src/components/block-list/index.native.js +164 -153
  229. package/src/components/block-list/test/index.native.js +2 -2
  230. package/src/components/block-list/use-block-props/index.js +1 -1
  231. package/src/components/block-list/use-in-between-inserter.js +7 -3
  232. package/src/components/block-list-appender/index.js +22 -4
  233. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +23 -0
  234. package/src/components/block-mover/style.scss +1 -0
  235. package/src/components/block-styles/preview-panel.js +1 -3
  236. package/src/components/block-switcher/block-transformations-menu.js +12 -0
  237. package/src/components/block-switcher/block-variation-transformations.js +115 -0
  238. package/src/components/block-switcher/index.js +38 -5
  239. package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
  240. package/src/components/block-switcher/style.scss +6 -5
  241. package/src/components/block-toolbar/index.js +10 -11
  242. package/src/components/block-tools/block-contextual-toolbar.js +4 -5
  243. package/src/components/block-tools/insertion-point.js +23 -9
  244. package/src/components/button-block-appender/content.scss +22 -0
  245. package/src/components/convert-to-group-buttons/index.js +9 -2
  246. package/src/components/convert-to-group-buttons/index.native.js +79 -1
  247. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
  248. package/src/components/global-styles/dimensions-panel.js +3 -2
  249. package/src/components/global-styles/style.scss +3 -0
  250. package/src/components/iframe/index.js +22 -12
  251. package/src/components/inner-blocks/README.md +5 -0
  252. package/src/components/inner-blocks/index.js +2 -0
  253. package/src/components/inner-blocks/index.native.js +16 -6
  254. package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
  255. package/src/components/inserter/index.js +1 -9
  256. package/src/components/inserter/quick-inserter.js +0 -2
  257. package/src/components/inserter/search-results.js +32 -6
  258. package/src/components/list-view/appender.js +3 -2
  259. package/src/components/list-view/block-contents.js +8 -2
  260. package/src/components/list-view/block.js +29 -35
  261. package/src/components/list-view/branch.js +1 -7
  262. package/src/components/list-view/index.js +17 -4
  263. package/src/components/list-view/style.scss +2 -5
  264. package/src/components/list-view/use-list-view-client-ids.js +21 -4
  265. package/src/components/publish-date-time-picker/index.js +0 -2
  266. package/src/components/url-input/README.md +6 -0
  267. package/src/components/url-input/index.js +1 -0
  268. package/src/components/use-block-drop-zone/index.js +31 -17
  269. package/src/components/use-resize-canvas/index.js +9 -1
  270. package/src/components/writing-flow/test/index.js +15 -0
  271. package/src/components/writing-flow/use-arrow-nav.js +17 -4
  272. package/src/hooks/align.js +3 -11
  273. package/src/hooks/behaviors.js +104 -0
  274. package/src/hooks/dimensions.js +0 -40
  275. package/src/hooks/duotone.js +3 -11
  276. package/src/hooks/index.js +1 -0
  277. package/src/hooks/layout.js +10 -18
  278. package/src/private-apis.js +2 -4
  279. package/src/store/private-actions.js +39 -0
  280. package/src/store/private-selectors.js +95 -0
  281. package/src/store/reducer.js +27 -0
  282. package/src/store/selectors.js +25 -15
  283. package/src/store/test/private-actions.js +32 -1
  284. package/src/store/test/private-selectors.js +158 -0
  285. package/src/store/test/reducer.js +48 -0
  286. package/src/style.scss +0 -3
  287. package/src/utils/order-inserter-block-items.js +26 -0
  288. package/build/components/block-list/block-list-compact.native.js +0 -75
  289. package/build/components/block-list/block-list-compact.native.js.map +0 -1
  290. package/build/components/off-canvas-editor/appender.js +0 -125
  291. package/build/components/off-canvas-editor/appender.js.map +0 -1
  292. package/build/components/off-canvas-editor/block-contents.js +0 -141
  293. package/build/components/off-canvas-editor/block-contents.js.map +0 -1
  294. package/build/components/off-canvas-editor/block-select-button.js +0 -126
  295. package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
  296. package/build/components/off-canvas-editor/block.js +0 -297
  297. package/build/components/off-canvas-editor/block.js.map +0 -1
  298. package/build/components/off-canvas-editor/branch.js +0 -197
  299. package/build/components/off-canvas-editor/branch.js.map +0 -1
  300. package/build/components/off-canvas-editor/context.js +0 -19
  301. package/build/components/off-canvas-editor/context.js.map +0 -1
  302. package/build/components/off-canvas-editor/drop-indicator.js +0 -118
  303. package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
  304. package/build/components/off-canvas-editor/expander.js +0 -41
  305. package/build/components/off-canvas-editor/expander.js.map +0 -1
  306. package/build/components/off-canvas-editor/index.js +0 -236
  307. package/build/components/off-canvas-editor/index.js.map +0 -1
  308. package/build/components/off-canvas-editor/leaf-more-menu.js +0 -148
  309. package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  310. package/build/components/off-canvas-editor/leaf.js +0 -60
  311. package/build/components/off-canvas-editor/leaf.js.map +0 -1
  312. package/build/components/off-canvas-editor/link-ui.js +0 -186
  313. package/build/components/off-canvas-editor/link-ui.js.map +0 -1
  314. package/build/components/off-canvas-editor/update-attributes.js +0 -108
  315. package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
  316. package/build/components/off-canvas-editor/use-block-selection.js +0 -139
  317. package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
  318. package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
  319. package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  320. package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
  321. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  322. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
  323. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  324. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
  325. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  326. package/build/components/off-canvas-editor/utils.js +0 -60
  327. package/build/components/off-canvas-editor/utils.js.map +0 -1
  328. package/build-module/components/block-list/block-list-compact.native.js +0 -60
  329. package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
  330. package/build-module/components/off-canvas-editor/appender.js +0 -108
  331. package/build-module/components/off-canvas-editor/appender.js.map +0 -1
  332. package/build-module/components/off-canvas-editor/block-contents.js +0 -121
  333. package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
  334. package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
  335. package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
  336. package/build-module/components/off-canvas-editor/block.js +0 -273
  337. package/build-module/components/off-canvas-editor/block.js.map +0 -1
  338. package/build-module/components/off-canvas-editor/branch.js +0 -179
  339. package/build-module/components/off-canvas-editor/branch.js.map +0 -1
  340. package/build-module/components/off-canvas-editor/context.js +0 -7
  341. package/build-module/components/off-canvas-editor/context.js.map +0 -1
  342. package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
  343. package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
  344. package/build-module/components/off-canvas-editor/expander.js +0 -32
  345. package/build-module/components/off-canvas-editor/expander.js.map +0 -1
  346. package/build-module/components/off-canvas-editor/index.js +0 -213
  347. package/build-module/components/off-canvas-editor/index.js.map +0 -1
  348. package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -130
  349. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  350. package/build-module/components/off-canvas-editor/leaf.js +0 -45
  351. package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
  352. package/build-module/components/off-canvas-editor/link-ui.js +0 -166
  353. package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
  354. package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
  355. package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
  356. package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
  357. package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
  358. package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
  359. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  360. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
  361. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  362. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
  363. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  364. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
  365. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  366. package/build-module/components/off-canvas-editor/utils.js +0 -44
  367. package/build-module/components/off-canvas-editor/utils.js.map +0 -1
  368. package/src/components/block-list/block-list-compact.native.js +0 -63
  369. package/src/components/off-canvas-editor/README.md +0 -5
  370. package/src/components/off-canvas-editor/appender.js +0 -124
  371. package/src/components/off-canvas-editor/block-contents.js +0 -156
  372. package/src/components/off-canvas-editor/block-select-button.js +0 -128
  373. package/src/components/off-canvas-editor/block.js +0 -347
  374. package/src/components/off-canvas-editor/branch.js +0 -238
  375. package/src/components/off-canvas-editor/context.js +0 -8
  376. package/src/components/off-canvas-editor/drop-indicator.js +0 -126
  377. package/src/components/off-canvas-editor/expander.js +0 -26
  378. package/src/components/off-canvas-editor/index.js +0 -271
  379. package/src/components/off-canvas-editor/leaf-more-menu.js +0 -158
  380. package/src/components/off-canvas-editor/leaf.js +0 -52
  381. package/src/components/off-canvas-editor/link-ui.js +0 -167
  382. package/src/components/off-canvas-editor/style.scss +0 -34
  383. package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
  384. package/src/components/off-canvas-editor/test/utils.js +0 -50
  385. package/src/components/off-canvas-editor/update-attributes.js +0 -99
  386. package/src/components/off-canvas-editor/use-block-selection.js +0 -169
  387. package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
  388. package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
  389. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
  390. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
  391. package/src/components/off-canvas-editor/utils.js +0 -58
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.orderInserterBlockItems = void 0;
7
+
8
+ /** @typedef {import('../store/selectors').WPEditorInserterItem} WPEditorInserterItem */
9
+
10
+ /**
11
+ * Helper function to order inserter block items according to a provided array of prioritized blocks.
12
+ *
13
+ * @param {WPEditorInserterItem[]} items The array of editor inserter block items to be sorted.
14
+ * @param {string[]} priority The array of block names to be prioritized.
15
+ * @return {WPEditorInserterItem[]} The sorted array of editor inserter block items.
16
+ */
17
+ const orderInserterBlockItems = (items, priority) => {
18
+ if (!priority) {
19
+ return items;
20
+ }
21
+
22
+ items.sort((_ref, _ref2) => {
23
+ let {
24
+ id: aName
25
+ } = _ref;
26
+ let {
27
+ id: bName
28
+ } = _ref2;
29
+ // Sort block items according to `priority`.
30
+ let aIndex = priority.indexOf(aName);
31
+ let bIndex = priority.indexOf(bName); // All other block items should come after that.
32
+
33
+ if (aIndex < 0) aIndex = priority.length;
34
+ if (bIndex < 0) bIndex = priority.length;
35
+ return aIndex - bIndex;
36
+ });
37
+ return items;
38
+ };
39
+
40
+ exports.orderInserterBlockItems = orderInserterBlockItems;
41
+ //# sourceMappingURL=order-inserter-block-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/order-inserter-block-items.js"],"names":["orderInserterBlockItems","items","priority","sort","id","aName","bName","aIndex","indexOf","bIndex","length"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,uBAAuB,GAAG,CAAEC,KAAF,EAASC,QAAT,KAAuB;AAC7D,MAAK,CAAEA,QAAP,EAAkB;AACjB,WAAOD,KAAP;AACA;;AAEDA,EAAAA,KAAK,CAACE,IAAN,CAAY,iBAAoC;AAAA,QAAlC;AAAEC,MAAAA,EAAE,EAAEC;AAAN,KAAkC;AAAA,QAAnB;AAAED,MAAAA,EAAE,EAAEE;AAAN,KAAmB;AAC/C;AACA,QAAIC,MAAM,GAAGL,QAAQ,CAACM,OAAT,CAAkBH,KAAlB,CAAb;AACA,QAAII,MAAM,GAAGP,QAAQ,CAACM,OAAT,CAAkBF,KAAlB,CAAb,CAH+C,CAI/C;;AACA,QAAKC,MAAM,GAAG,CAAd,EAAkBA,MAAM,GAAGL,QAAQ,CAACQ,MAAlB;AAClB,QAAKD,MAAM,GAAG,CAAd,EAAkBA,MAAM,GAAGP,QAAQ,CAACQ,MAAlB;AAClB,WAAOH,MAAM,GAAGE,MAAhB;AACA,GARD;AAUA,SAAOR,KAAP;AACA,CAhBM","sourcesContent":["/** @typedef {import('../store/selectors').WPEditorInserterItem} WPEditorInserterItem */\n\n/**\n * Helper function to order inserter block items according to a provided array of prioritized blocks.\n *\n * @param {WPEditorInserterItem[]} items The array of editor inserter block items to be sorted.\n * @param {string[]} priority The array of block names to be prioritized.\n * @return {WPEditorInserterItem[]} The sorted array of editor inserter block items.\n */\nexport const orderInserterBlockItems = ( items, priority ) => {\n\tif ( ! priority ) {\n\t\treturn items;\n\t}\n\n\titems.sort( ( { id: aName }, { id: bName } ) => {\n\t\t// Sort block items according to `priority`.\n\t\tlet aIndex = priority.indexOf( aName );\n\t\tlet bIndex = priority.indexOf( bName );\n\t\t// All other block items should come after that.\n\t\tif ( aIndex < 0 ) aIndex = priority.length;\n\t\tif ( bIndex < 0 ) bIndex = priority.length;\n\t\treturn aIndex - bIndex;\n\t} );\n\n\treturn items;\n};\n"]}
@@ -15,6 +15,7 @@ import useBlockTypesState from '../components/inserter/hooks/use-block-types-sta
15
15
  import BlockIcon from '../components/block-icon';
16
16
  import { store as blockEditorStore } from '../store';
17
17
  import { orderBy } from '../utils/sorting';
18
+ import { orderInserterBlockItems } from '../utils/order-inserter-block-items';
18
19
 
19
20
  const noop = () => {};
20
21
 
@@ -36,24 +37,30 @@ function createBlockCompleter() {
36
37
  useItems(filterValue) {
37
38
  const {
38
39
  rootClientId,
39
- selectedBlockName
40
+ selectedBlockName,
41
+ prioritizedBlocks
40
42
  } = useSelect(select => {
43
+ var _getBlockListSettings;
44
+
41
45
  const {
42
46
  getSelectedBlockClientId,
43
47
  getBlockName,
44
- getBlockInsertionPoint
48
+ getBlockInsertionPoint,
49
+ getBlockListSettings
45
50
  } = select(blockEditorStore);
46
51
  const selectedBlockClientId = getSelectedBlockClientId();
52
+ const _rootClientId = getBlockInsertionPoint().rootClientId;
47
53
  return {
48
54
  selectedBlockName: selectedBlockClientId ? getBlockName(selectedBlockClientId) : null,
49
- rootClientId: getBlockInsertionPoint().rootClientId
55
+ rootClientId: _rootClientId,
56
+ prioritizedBlocks: (_getBlockListSettings = getBlockListSettings(_rootClientId)) === null || _getBlockListSettings === void 0 ? void 0 : _getBlockListSettings.prioritizedInserterBlocks
50
57
  };
51
58
  }, []);
52
59
  const [items, categories, collections] = useBlockTypesState(rootClientId, noop);
53
60
  const filteredItems = useMemo(() => {
54
- const initialFilteredItems = !!filterValue.trim() ? searchBlockItems(items, categories, collections, filterValue) : orderBy(items, 'frecency', 'desc');
61
+ const initialFilteredItems = !!filterValue.trim() ? searchBlockItems(items, categories, collections, filterValue) : orderInserterBlockItems(orderBy(items, 'frecency', 'desc'), prioritizedBlocks);
55
62
  return initialFilteredItems.filter(item => item.name !== selectedBlockName).slice(0, SHOWN_BLOCK_TYPES);
56
- }, [filterValue, selectedBlockName, items, categories, collections]);
63
+ }, [filterValue, selectedBlockName, items, categories, collections, prioritizedBlocks]);
57
64
  const options = useMemo(() => filteredItems.map(blockItem => {
58
65
  const {
59
66
  title,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/autocompleters/block.js"],"names":["useSelect","createBlock","createBlocksFromInnerBlocksTemplate","useMemo","searchBlockItems","useBlockTypesState","BlockIcon","store","blockEditorStore","orderBy","noop","SHOWN_BLOCK_TYPES","createBlockCompleter","name","className","triggerPrefix","useItems","filterValue","rootClientId","selectedBlockName","select","getSelectedBlockClientId","getBlockName","getBlockInsertionPoint","selectedBlockClientId","items","categories","collections","filteredItems","initialFilteredItems","trim","filter","item","slice","options","map","blockItem","title","icon","isDisabled","key","id","value","label","allowContext","before","after","test","getOptionCompletion","inserterItem","initialAttributes","innerBlocks","action"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { searchBlockItems } from '../components/inserter/search-items';\nimport useBlockTypesState from '../components/inserter/hooks/use-block-types-state';\nimport BlockIcon from '../components/block-icon';\nimport { store as blockEditorStore } from '../store';\nimport { orderBy } from '../utils/sorting';\n\nconst noop = () => {};\nconst SHOWN_BLOCK_TYPES = 9;\n\n/** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nfunction createBlockCompleter() {\n\treturn {\n\t\tname: 'blocks',\n\t\tclassName: 'block-editor-autocompleters__block',\n\t\ttriggerPrefix: '/',\n\n\t\tuseItems( filterValue ) {\n\t\t\tconst { rootClientId, selectedBlockName } = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\t\tgetBlockName,\n\t\t\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\t\t} = select( blockEditorStore );\n\t\t\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\t\t\treturn {\n\t\t\t\t\t\tselectedBlockName: selectedBlockClientId\n\t\t\t\t\t\t\t? getBlockName( selectedBlockClientId )\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\trootClientId: getBlockInsertionPoint().rootClientId,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t[]\n\t\t\t);\n\t\t\tconst [ items, categories, collections ] = useBlockTypesState(\n\t\t\t\trootClientId,\n\t\t\t\tnoop\n\t\t\t);\n\n\t\t\tconst filteredItems = useMemo( () => {\n\t\t\t\tconst initialFilteredItems = !! filterValue.trim()\n\t\t\t\t\t? searchBlockItems(\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tcategories,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tfilterValue\n\t\t\t\t\t )\n\t\t\t\t\t: orderBy( items, 'frecency', 'desc' );\n\n\t\t\t\treturn initialFilteredItems\n\t\t\t\t\t.filter( ( item ) => item.name !== selectedBlockName )\n\t\t\t\t\t.slice( 0, SHOWN_BLOCK_TYPES );\n\t\t\t}, [\n\t\t\t\tfilterValue,\n\t\t\t\tselectedBlockName,\n\t\t\t\titems,\n\t\t\t\tcategories,\n\t\t\t\tcollections,\n\t\t\t] );\n\n\t\t\tconst options = useMemo(\n\t\t\t\t() =>\n\t\t\t\t\tfilteredItems.map( ( blockItem ) => {\n\t\t\t\t\t\tconst { title, icon, isDisabled } = blockItem;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tkey: `block-${ blockItem.id }`,\n\t\t\t\t\t\t\tvalue: blockItem,\n\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\tkey=\"icon\"\n\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\t};\n\t\t\t\t\t} ),\n\t\t\t\t[ filteredItems ]\n\t\t\t);\n\n\t\t\treturn [ options ];\n\t\t},\n\t\tallowContext( before, after ) {\n\t\t\treturn ! ( /\\S/.test( before ) || /\\S/.test( after ) );\n\t\t},\n\t\tgetOptionCompletion( inserterItem ) {\n\t\t\tconst { name, initialAttributes, innerBlocks } = inserterItem;\n\t\t\treturn {\n\t\t\t\taction: 'replace',\n\t\t\t\tvalue: createBlock(\n\t\t\t\t\tname,\n\t\t\t\t\tinitialAttributes,\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nexport default createBlockCompleter();\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/autocompleters/block.js"],"names":["useSelect","createBlock","createBlocksFromInnerBlocksTemplate","useMemo","searchBlockItems","useBlockTypesState","BlockIcon","store","blockEditorStore","orderBy","orderInserterBlockItems","noop","SHOWN_BLOCK_TYPES","createBlockCompleter","name","className","triggerPrefix","useItems","filterValue","rootClientId","selectedBlockName","prioritizedBlocks","select","getSelectedBlockClientId","getBlockName","getBlockInsertionPoint","getBlockListSettings","selectedBlockClientId","_rootClientId","prioritizedInserterBlocks","items","categories","collections","filteredItems","initialFilteredItems","trim","filter","item","slice","options","map","blockItem","title","icon","isDisabled","key","id","value","label","allowContext","before","after","test","getOptionCompletion","inserterItem","initialAttributes","innerBlocks","action"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { searchBlockItems } from '../components/inserter/search-items';\nimport useBlockTypesState from '../components/inserter/hooks/use-block-types-state';\nimport BlockIcon from '../components/block-icon';\nimport { store as blockEditorStore } from '../store';\nimport { orderBy } from '../utils/sorting';\nimport { orderInserterBlockItems } from '../utils/order-inserter-block-items';\n\nconst noop = () => {};\nconst SHOWN_BLOCK_TYPES = 9;\n\n/** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nfunction createBlockCompleter() {\n\treturn {\n\t\tname: 'blocks',\n\t\tclassName: 'block-editor-autocompleters__block',\n\t\ttriggerPrefix: '/',\n\n\t\tuseItems( filterValue ) {\n\t\t\tconst { rootClientId, selectedBlockName, prioritizedBlocks } =\n\t\t\t\tuseSelect( ( select ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\t\tgetBlockName,\n\t\t\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\t\t\tgetBlockListSettings,\n\t\t\t\t\t} = select( blockEditorStore );\n\t\t\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\t\t\tconst _rootClientId = getBlockInsertionPoint().rootClientId;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tselectedBlockName: selectedBlockClientId\n\t\t\t\t\t\t\t? getBlockName( selectedBlockClientId )\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\tprioritizedBlocks:\n\t\t\t\t\t\t\tgetBlockListSettings( _rootClientId )\n\t\t\t\t\t\t\t\t?.prioritizedInserterBlocks,\n\t\t\t\t\t};\n\t\t\t\t}, [] );\n\t\t\tconst [ items, categories, collections ] = useBlockTypesState(\n\t\t\t\trootClientId,\n\t\t\t\tnoop\n\t\t\t);\n\n\t\t\tconst filteredItems = useMemo( () => {\n\t\t\t\tconst initialFilteredItems = !! filterValue.trim()\n\t\t\t\t\t? searchBlockItems(\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tcategories,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tfilterValue\n\t\t\t\t\t )\n\t\t\t\t\t: orderInserterBlockItems(\n\t\t\t\t\t\t\torderBy( items, 'frecency', 'desc' ),\n\t\t\t\t\t\t\tprioritizedBlocks\n\t\t\t\t\t );\n\n\t\t\t\treturn initialFilteredItems\n\t\t\t\t\t.filter( ( item ) => item.name !== selectedBlockName )\n\t\t\t\t\t.slice( 0, SHOWN_BLOCK_TYPES );\n\t\t\t}, [\n\t\t\t\tfilterValue,\n\t\t\t\tselectedBlockName,\n\t\t\t\titems,\n\t\t\t\tcategories,\n\t\t\t\tcollections,\n\t\t\t\tprioritizedBlocks,\n\t\t\t] );\n\n\t\t\tconst options = useMemo(\n\t\t\t\t() =>\n\t\t\t\t\tfilteredItems.map( ( blockItem ) => {\n\t\t\t\t\t\tconst { title, icon, isDisabled } = blockItem;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tkey: `block-${ blockItem.id }`,\n\t\t\t\t\t\t\tvalue: blockItem,\n\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\tkey=\"icon\"\n\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\t};\n\t\t\t\t\t} ),\n\t\t\t\t[ filteredItems ]\n\t\t\t);\n\n\t\t\treturn [ options ];\n\t\t},\n\t\tallowContext( before, after ) {\n\t\t\treturn ! ( /\\S/.test( before ) || /\\S/.test( after ) );\n\t\t},\n\t\tgetOptionCompletion( inserterItem ) {\n\t\t\tconst { name, initialAttributes, innerBlocks } = inserterItem;\n\t\t\treturn {\n\t\t\t\taction: 'replace',\n\t\t\t\tvalue: createBlock(\n\t\t\t\t\tname,\n\t\t\t\t\tinitialAttributes,\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nexport default createBlockCompleter();\n"]}
@@ -13,6 +13,7 @@ import { chevronRightSmall, Icon } from '@wordpress/icons';
13
13
 
14
14
  import BlockTitle from '../block-title';
15
15
  import { store as blockEditorStore } from '../../store';
16
+ import { unlock } from '../../lock-unlock';
16
17
  /**
17
18
  * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.
18
19
  *
@@ -37,11 +38,12 @@ function BlockBreadcrumb(_ref) {
37
38
  const {
38
39
  getSelectionStart,
39
40
  getSelectedBlockClientId,
40
- getBlockParents
41
- } = select(blockEditorStore);
41
+ getBlockParents,
42
+ getBlockEditingMode
43
+ } = unlock(select(blockEditorStore));
42
44
  const selectedBlockClientId = getSelectedBlockClientId();
43
45
  return {
44
- parents: getBlockParents(selectedBlockClientId),
46
+ parents: getBlockParents(selectedBlockClientId).filter(parentClientId => getBlockEditingMode(parentClientId) !== 'disabled'),
45
47
  clientId: selectedBlockClientId,
46
48
  hasSelection: !!getSelectionStart().clientId
47
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-breadcrumb/index.js"],"names":["Button","useSelect","useDispatch","__","chevronRightSmall","Icon","BlockTitle","store","blockEditorStore","BlockBreadcrumb","rootLabelText","selectBlock","clearSelectedBlock","clientId","parents","hasSelection","select","getSelectionStart","getSelectedBlockClientId","getBlockParents","selectedBlockClientId","rootLabel","undefined","map","parentClientId"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,uBAAvB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,QAAwC,kBAAxC;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,OAA8C;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAsCV,WAAW,CAAEM,gBAAF,CAAvD;AACA,QAAM;AAAEK,IAAAA,QAAF;AAAYC,IAAAA,OAAZ;AAAqBC,IAAAA;AAArB,MAAsCd,SAAS,CAAIe,MAAF,IAAc;AACpE,UAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA,wBAArB;AAA+CC,MAAAA;AAA/C,QACLH,MAAM,CAAER,gBAAF,CADP;AAEA,UAAMY,qBAAqB,GAAGF,wBAAwB,EAAtD;AACA,WAAO;AACNJ,MAAAA,OAAO,EAAEK,eAAe,CAAEC,qBAAF,CADlB;AAENP,MAAAA,QAAQ,EAAEO,qBAFJ;AAGNL,MAAAA,YAAY,EAAE,CAAC,CAAEE,iBAAiB,GAAGJ;AAH/B,KAAP;AAKA,GAToD,EASlD,EATkD,CAArD;;AAUA,QAAMQ,SAAS,GAAGX,aAAa,IAAIP,EAAE,CAAE,UAAF,CAArC;AAEA;AACD;AACA;AACA;;AACC;;;AACA,SACC;AACC,IAAA,SAAS,EAAC,+BADX;AAEC,IAAA,IAAI,EAAC,MAFN;AAGC,kBAAaA,EAAE,CAAE,kBAAF;AAHhB,KAKC;AACC,IAAA,SAAS,EACR,CAAEY,YAAF,GACG,wCADH,GAEGO,SAJL;AAMC,oBAAe,CAAEP,YAAF,GAAiB,MAAjB,GAA0BO;AAN1C,KAQGP,YAAY,IACb,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAGH;AAHX,KAKGS,SALH,CATF,EAiBG,CAAEN,YAAF,IAAkBM,SAjBrB,EAkBG,CAAC,CAAER,QAAH,IACD,cAAC,IAAD;AACC,IAAA,IAAI,EAAGT,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAnBF,CALD,EA+BGU,OAAO,CAACS,GAAR,CAAeC,cAAF,IACd;AAAI,IAAA,GAAG,EAAGA;AAAV,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAG,MAAMb,WAAW,CAAEa,cAAF;AAH5B,KAKC,cAAC,UAAD;AACC,IAAA,QAAQ,EAAGA,cADZ;AAEC,IAAA,aAAa,EAAG;AAFjB,IALD,CADD,EAWC,cAAC,IAAD;AACC,IAAA,IAAI,EAAGpB,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAXD,CADC,CA/BH,EAiDG,CAAC,CAAES,QAAH,IACD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,oBAAa;AAFd,KAIC,cAAC,UAAD;AAAY,IAAA,QAAQ,EAAGA,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IAJD,CAlDF;AA0DA;AA3DD;AA6DA;;AAED,eAAeJ,eAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { chevronRightSmall, Icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.\n *\n * @param {Object} props Component props.\n * @param {string} props.rootLabelText Translated label for the root element of the breadcrumb trail.\n * @return {WPElement} Block Breadcrumb.\n */\nfunction BlockBreadcrumb( { rootLabelText } ) {\n\tconst { selectBlock, clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { clientId, parents, hasSelection } = useSelect( ( select ) => {\n\t\tconst { getSelectionStart, getSelectedBlockClientId, getBlockParents } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tparents: getBlockParents( selectedBlockClientId ),\n\t\t\tclientId: selectedBlockClientId,\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t};\n\t}, [] );\n\tconst rootLabel = rootLabelText || __( 'Document' );\n\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"block-editor-block-breadcrumb\"\n\t\t\trole=\"list\"\n\t\t\taria-label={ __( 'Block breadcrumb' ) }\n\t\t>\n\t\t\t<li\n\t\t\t\tclassName={\n\t\t\t\t\t! hasSelection\n\t\t\t\t\t\t? 'block-editor-block-breadcrumb__current'\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-current={ ! hasSelection ? 'true' : undefined }\n\t\t\t>\n\t\t\t\t{ hasSelection && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ clearSelectedBlock }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rootLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! hasSelection && rootLabel }\n\t\t\t\t{ !! clientId && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\n\t\t\t{ parents.map( ( parentClientId ) => (\n\t\t\t\t<li key={ parentClientId }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ parentClientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ !! clientId && (\n\t\t\t\t<li\n\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__current\"\n\t\t\t\t\taria-current=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t\t/* eslint-enable jsx-a11y/no-redundant-roles */\n\t);\n}\n\nexport default BlockBreadcrumb;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-breadcrumb/index.js"],"names":["Button","useSelect","useDispatch","__","chevronRightSmall","Icon","BlockTitle","store","blockEditorStore","unlock","BlockBreadcrumb","rootLabelText","selectBlock","clearSelectedBlock","clientId","parents","hasSelection","select","getSelectionStart","getSelectedBlockClientId","getBlockParents","getBlockEditingMode","selectedBlockClientId","filter","parentClientId","rootLabel","undefined","map"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,uBAAvB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,QAAwC,kBAAxC;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,OAA8C;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAsCX,WAAW,CAAEM,gBAAF,CAAvD;AACA,QAAM;AAAEM,IAAAA,QAAF;AAAYC,IAAAA,OAAZ;AAAqBC,IAAAA;AAArB,MAAsCf,SAAS,CAAIgB,MAAF,IAAc;AACpE,UAAM;AACLC,MAAAA,iBADK;AAELC,MAAAA,wBAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA;AAJK,QAKFZ,MAAM,CAAEQ,MAAM,CAAET,gBAAF,CAAR,CALV;AAMA,UAAMc,qBAAqB,GAAGH,wBAAwB,EAAtD;AACA,WAAO;AACNJ,MAAAA,OAAO,EAAEK,eAAe,CAAEE,qBAAF,CAAf,CAAyCC,MAAzC,CACNC,cAAF,IACCH,mBAAmB,CAAEG,cAAF,CAAnB,KAA0C,UAFnC,CADH;AAKNV,MAAAA,QAAQ,EAAEQ,qBALJ;AAMNN,MAAAA,YAAY,EAAE,CAAC,CAAEE,iBAAiB,GAAGJ;AAN/B,KAAP;AAQA,GAhBoD,EAgBlD,EAhBkD,CAArD;;AAiBA,QAAMW,SAAS,GAAGd,aAAa,IAAIR,EAAE,CAAE,UAAF,CAArC;AAEA;AACD;AACA;AACA;;AACC;;;AACA,SACC;AACC,IAAA,SAAS,EAAC,+BADX;AAEC,IAAA,IAAI,EAAC,MAFN;AAGC,kBAAaA,EAAE,CAAE,kBAAF;AAHhB,KAKC;AACC,IAAA,SAAS,EACR,CAAEa,YAAF,GACG,wCADH,GAEGU,SAJL;AAMC,oBAAe,CAAEV,YAAF,GAAiB,MAAjB,GAA0BU;AAN1C,KAQGV,YAAY,IACb,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAGH;AAHX,KAKGY,SALH,CATF,EAiBG,CAAET,YAAF,IAAkBS,SAjBrB,EAkBG,CAAC,CAAEX,QAAH,IACD,cAAC,IAAD;AACC,IAAA,IAAI,EAAGV,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAnBF,CALD,EA+BGW,OAAO,CAACY,GAAR,CAAeH,cAAF,IACd;AAAI,IAAA,GAAG,EAAGA;AAAV,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAG,MAAMZ,WAAW,CAAEY,cAAF;AAH5B,KAKC,cAAC,UAAD;AACC,IAAA,QAAQ,EAAGA,cADZ;AAEC,IAAA,aAAa,EAAG;AAFjB,IALD,CADD,EAWC,cAAC,IAAD;AACC,IAAA,IAAI,EAAGpB,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAXD,CADC,CA/BH,EAiDG,CAAC,CAAEU,QAAH,IACD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,oBAAa;AAFd,KAIC,cAAC,UAAD;AAAY,IAAA,QAAQ,EAAGA,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IAJD,CAlDF;AA0DA;AA3DD;AA6DA;;AAED,eAAeJ,eAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { chevronRightSmall, Icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.\n *\n * @param {Object} props Component props.\n * @param {string} props.rootLabelText Translated label for the root element of the breadcrumb trail.\n * @return {WPElement} Block Breadcrumb.\n */\nfunction BlockBreadcrumb( { rootLabelText } ) {\n\tconst { selectBlock, clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { clientId, parents, hasSelection } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockParents,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tparents: getBlockParents( selectedBlockClientId ).filter(\n\t\t\t\t( parentClientId ) =>\n\t\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled'\n\t\t\t),\n\t\t\tclientId: selectedBlockClientId,\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t};\n\t}, [] );\n\tconst rootLabel = rootLabelText || __( 'Document' );\n\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"block-editor-block-breadcrumb\"\n\t\t\trole=\"list\"\n\t\t\taria-label={ __( 'Block breadcrumb' ) }\n\t\t>\n\t\t\t<li\n\t\t\t\tclassName={\n\t\t\t\t\t! hasSelection\n\t\t\t\t\t\t? 'block-editor-block-breadcrumb__current'\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-current={ ! hasSelection ? 'true' : undefined }\n\t\t\t>\n\t\t\t\t{ hasSelection && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ clearSelectedBlock }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rootLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! hasSelection && rootLabel }\n\t\t\t\t{ !! clientId && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\n\t\t\t{ parents.map( ( parentClientId ) => (\n\t\t\t\t<li key={ parentClientId }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ parentClientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ !! clientId && (\n\t\t\t\t<li\n\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__current\"\n\t\t\t\t\taria-current=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t\t/* eslint-enable jsx-a11y/no-redundant-roles */\n\t);\n}\n\nexport default BlockBreadcrumb;\n"]}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { useContext, useEffect } from '@wordpress/element';
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+
10
+ import { store as blockEditorStore } from '../../store';
11
+ import { unlock } from '../../lock-unlock';
12
+ import { BlockListBlockContext } from '../block-list/block-list-block-context';
13
+ /**
14
+ * @typedef {'disabled'|'contentOnly'|'default'} BlockEditingMode
15
+ */
16
+
17
+ /**
18
+ * Allows a block to restrict the user interface that is displayed for editing
19
+ * that block and its inner blocks.
20
+ *
21
+ * @example
22
+ * ```js
23
+ * function MyBlock( { attributes, setAttributes } ) {
24
+ * useBlockEditingMode( 'disabled' );
25
+ * return <div { ...useBlockProps() }></div>;
26
+ * }
27
+ * ```
28
+ *
29
+ * `mode` can be one of three options:
30
+ *
31
+ * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be
32
+ * selected.
33
+ * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the
34
+ * toolbar, the block movers, block settings.
35
+ * - `'default'`: Allows editing the block as normal.
36
+ *
37
+ * The mode is inherited by all of the block's inner blocks, unless they have
38
+ * their own mode.
39
+ *
40
+ * If called outside of a block context, the mode is applied to all blocks.
41
+ *
42
+ * @param {?BlockEditingMode} mode The editing mode to apply. If undefined, the
43
+ * current editing mode is not changed.
44
+ *
45
+ * @return {BlockEditingMode} The current editing mode.
46
+ */
47
+
48
+ export function useBlockEditingMode(mode) {
49
+ var _useContext;
50
+
51
+ const {
52
+ clientId = ''
53
+ } = (_useContext = useContext(BlockListBlockContext)) !== null && _useContext !== void 0 ? _useContext : {};
54
+ const blockEditingMode = useSelect(select => unlock(select(blockEditorStore)).getBlockEditingMode(clientId), [clientId]);
55
+ const {
56
+ setBlockEditingMode,
57
+ unsetBlockEditingMode
58
+ } = unlock(useDispatch(blockEditorStore));
59
+ useEffect(() => {
60
+ if (mode) {
61
+ setBlockEditingMode(clientId, mode);
62
+ }
63
+
64
+ return () => {
65
+ if (mode) {
66
+ unsetBlockEditingMode(clientId);
67
+ }
68
+ };
69
+ }, [clientId, mode]);
70
+ return blockEditingMode;
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-editing-mode/index.js"],"names":["useSelect","useDispatch","useContext","useEffect","store","blockEditorStore","unlock","BlockListBlockContext","useBlockEditingMode","mode","clientId","blockEditingMode","select","getBlockEditingMode","setBlockEditingMode","unsetBlockEditingMode"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,UAAT,EAAqBC,SAArB,QAAsC,oBAAtC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,qBAAT,QAAsC,wCAAtC;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,mBAAT,CAA8BC,IAA9B,EAAqC;AAAA;;AAC3C,QAAM;AAAEC,IAAAA,QAAQ,GAAG;AAAb,qBAAoBR,UAAU,CAAEK,qBAAF,CAA9B,qDAA2D,EAAjE;AACA,QAAMI,gBAAgB,GAAGX,SAAS,CAC/BY,MAAF,IACCN,MAAM,CAAEM,MAAM,CAAEP,gBAAF,CAAR,CAAN,CAAqCQ,mBAArC,CACCH,QADD,CAFgC,EAKjC,CAAEA,QAAF,CALiC,CAAlC;AAOA,QAAM;AAAEI,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MAAiDT,MAAM,CAC5DL,WAAW,CAAEI,gBAAF,CADiD,CAA7D;AAGAF,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKM,IAAL,EAAY;AACXK,MAAAA,mBAAmB,CAAEJ,QAAF,EAAYD,IAAZ,CAAnB;AACA;;AACD,WAAO,MAAM;AACZ,UAAKA,IAAL,EAAY;AACXM,QAAAA,qBAAqB,CAAEL,QAAF,CAArB;AACA;AACD,KAJD;AAKA,GATQ,EASN,CAAEA,QAAF,EAAYD,IAAZ,CATM,CAAT;AAUA,SAAOE,gBAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useContext, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { BlockListBlockContext } from '../block-list/block-list-block-context';\n\n/**\n * @typedef {'disabled'|'contentOnly'|'default'} BlockEditingMode\n */\n\n/**\n * Allows a block to restrict the user interface that is displayed for editing\n * that block and its inner blocks.\n *\n * @example\n * ```js\n * function MyBlock( { attributes, setAttributes } ) {\n * useBlockEditingMode( 'disabled' );\n * return <div { ...useBlockProps() }></div>;\n * }\n * ```\n *\n * `mode` can be one of three options:\n *\n * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be\n * selected.\n * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the\n * toolbar, the block movers, block settings.\n * - `'default'`: Allows editing the block as normal.\n *\n * The mode is inherited by all of the block's inner blocks, unless they have\n * their own mode.\n *\n * If called outside of a block context, the mode is applied to all blocks.\n *\n * @param {?BlockEditingMode} mode The editing mode to apply. If undefined, the\n * current editing mode is not changed.\n *\n * @return {BlockEditingMode} The current editing mode.\n */\nexport function useBlockEditingMode( mode ) {\n\tconst { clientId = '' } = useContext( BlockListBlockContext ) ?? {};\n\tconst blockEditingMode = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getBlockEditingMode(\n\t\t\t\tclientId\n\t\t\t),\n\t\t[ clientId ]\n\t);\n\tconst { setBlockEditingMode, unsetBlockEditingMode } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tuseEffect( () => {\n\t\tif ( mode ) {\n\t\t\tsetBlockEditingMode( clientId, mode );\n\t\t}\n\t\treturn () => {\n\t\t\tif ( mode ) {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t}\n\t\t};\n\t}, [ clientId, mode ] );\n\treturn blockEditingMode;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createContext } from '@wordpress/element';
5
+ export const BlockListBlockContext = createContext(null);
6
+ //# sourceMappingURL=block-list-block-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block-list-block-context.js"],"names":["createContext","BlockListBlockContext"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAT,QAA8B,oBAA9B;AAEA,OAAO,MAAMC,qBAAqB,GAAGD,aAAa,CAAE,IAAF,CAA3C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\nexport const BlockListBlockContext = createContext( null );\n"]}
@@ -8,8 +8,8 @@ import classnames from 'classnames';
8
8
  * WordPress dependencies
9
9
  */
10
10
 
11
- import { createContext, useMemo, useCallback, RawHTML } from '@wordpress/element';
12
- import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock, switchToBlockType, store as blocksStore, getDefaultBlockName, isUnmodifiedBlock } from '@wordpress/blocks';
11
+ import { useMemo, useCallback, RawHTML } from '@wordpress/element';
12
+ import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock, switchToBlockType, getDefaultBlockName, isUnmodifiedBlock } from '@wordpress/blocks';
13
13
  import { withFilters } from '@wordpress/components';
14
14
  import { withDispatch, withSelect, useDispatch, useSelect } from '@wordpress/data';
15
15
  import { compose, pure, ifCondition } from '@wordpress/compose';
@@ -26,7 +26,8 @@ import BlockHtml from './block-html';
26
26
  import { useBlockProps } from './use-block-props';
27
27
  import { store as blockEditorStore } from '../../store';
28
28
  import { useLayout } from './layout';
29
- export const BlockListBlockContext = createContext();
29
+ import { unlock } from '../../lock-unlock';
30
+ import { BlockListBlockContext } from './block-list-block-context';
30
31
  /**
31
32
  * Merges wrapper props with special handling for classNames and styles.
32
33
  *
@@ -92,28 +93,20 @@ function BlockListBlock(_ref2) {
92
93
  } = _ref2;
93
94
  const {
94
95
  themeSupportsLayout,
95
- hasContentLockedParent,
96
- isContentBlock,
97
- isContentLocking,
98
- isTemporarilyEditingAsBlocks
96
+ isTemporarilyEditingAsBlocks,
97
+ blockEditingMode
99
98
  } = useSelect(select => {
100
99
  const {
101
100
  getSettings,
102
- __unstableGetContentLockingParent,
103
- getTemplateLock,
104
- __unstableGetTemporarilyEditingAsBlocks
105
- } = select(blockEditorStore);
106
-
107
- const _hasContentLockedParent = !!__unstableGetContentLockingParent(clientId);
108
-
101
+ __unstableGetTemporarilyEditingAsBlocks,
102
+ getBlockEditingMode
103
+ } = unlock(select(blockEditorStore));
109
104
  return {
110
105
  themeSupportsLayout: getSettings().supportsLayout,
111
- isContentBlock: select(blocksStore).__experimentalHasContentRoleAttribute(name),
112
- hasContentLockedParent: _hasContentLockedParent,
113
- isContentLocking: getTemplateLock(clientId) === 'contentOnly' && !_hasContentLockedParent,
114
- isTemporarilyEditingAsBlocks: __unstableGetTemporarilyEditingAsBlocks() === clientId
106
+ isTemporarilyEditingAsBlocks: __unstableGetTemporarilyEditingAsBlocks() === clientId,
107
+ blockEditingMode: getBlockEditingMode(clientId)
115
108
  };
116
- }, [name, clientId]);
109
+ }, [clientId]);
117
110
  const {
118
111
  removeBlock
119
112
  } = useDispatch(blockEditorStore);
@@ -140,7 +133,7 @@ function BlockListBlock(_ref2) {
140
133
  });
141
134
  const blockType = getBlockType(name);
142
135
 
143
- if (hasContentLockedParent && !isContentBlock) {
136
+ if (blockEditingMode === 'disabled') {
144
137
  wrapperProps = { ...wrapperProps,
145
138
  tabIndex: -1
146
139
  };
@@ -201,9 +194,8 @@ function BlockListBlock(_ref2) {
201
194
  const value = {
202
195
  clientId,
203
196
  className: classnames({
204
- 'is-content-locked': isContentLocking,
205
- 'is-content-locked-temporarily-editing-as-blocks': isTemporarilyEditingAsBlocks,
206
- 'is-content-block': hasContentLockedParent && isContentBlock
197
+ 'is-editing-disabled': blockEditingMode === 'disabled',
198
+ 'is-content-locked-temporarily-editing-as-blocks': isTemporarilyEditingAsBlocks
207
199
  }, dataAlign && themeSupportsLayout && `align${dataAlign}`, className),
208
200
  wrapperProps: restWrapperProps,
209
201
  isAligned
@@ -347,22 +339,22 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, registry) => {
347
339
  if (blockOrder.length === 1 && isUnmodifiedBlock(getBlock(firstClientId))) {
348
340
  removeBlock(_clientId);
349
341
  } else {
350
- if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
351
- moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
352
- } else {
353
- const replacement = switchToBlockType(getBlock(firstClientId), getDefaultBlockName());
342
+ registry.batch(() => {
343
+ if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
344
+ moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
345
+ } else {
346
+ const replacement = switchToBlockType(getBlock(firstClientId), getDefaultBlockName());
354
347
 
355
- if (replacement && replacement.length) {
356
- registry.batch(() => {
348
+ if (replacement && replacement.length) {
357
349
  insertBlocks(replacement, getBlockIndex(_clientId), targetRootClientId, changeSelection);
358
350
  removeBlock(firstClientId, false);
359
- });
351
+ }
360
352
  }
361
- }
362
353
 
363
- if (!getBlockOrder(_clientId).length && isUnmodifiedBlock(getBlock(_clientId))) {
364
- removeBlock(_clientId, false);
365
- }
354
+ if (!getBlockOrder(_clientId).length && isUnmodifiedBlock(getBlock(_clientId))) {
355
+ removeBlock(_clientId, false);
356
+ }
357
+ });
366
358
  }
367
359
  } // For `Delete` or forward merge, we should do the exact same thing
368
360
  // as `Backspace`, but from the other block.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["classnames","createContext","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","store","blocksStore","getDefaultBlockName","isUnmodifiedBlock","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","blockEditorStore","useLayout","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","hasContentLockedParent","isContentBlock","isContentLocking","isTemporarilyEditingAsBlocks","select","getSettings","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","_hasContentLockedParent","supportsLayout","__experimentalHasContentRoleAttribute","removeBlock","onRemove","parentLayout","blockEdit","undefined","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","mergeBlocks","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","replacement","batch","nextRootClientId","rootAttributes","previousRootAttributes","every","key","nextBlockClientId","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","selectionEnabled"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SACCC,aADD,EAECC,OAFD,EAGCC,WAHD,EAICC,OAJD,QAKO,oBALP;AAMA,SACCC,YADD,EAECC,cAFD,EAGCC,wBAHD,EAICC,iBAJD,EAKCC,iBALD,EAMCC,KAAK,IAAIC,WANV,EAOCC,mBAPD,EAQCC,iBARD,QASO,mBATP;AAUA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SACCC,YADD,EAECC,UAFD,EAGCC,WAHD,EAICC,SAJD,QAKO,iBALP;AAMA,SAASC,OAAT,EAAkBC,IAAlB,EAAwBC,WAAxB,QAA2C,oBAA3C;AACA,SAASC,QAAT,QAAyB,gBAAzB;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AACA,OAAOC,iBAAP,MAA8B,uBAA9B;AACA,OAAOC,kBAAP,MAA+B,wBAA/B;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,SAASC,aAAT,QAA8B,mBAA9B;AACA,SAASlB,KAAK,IAAImB,gBAAlB,QAA0C,aAA1C;AACA,SAASC,SAAT,QAA0B,UAA1B;AACA,OAAO,MAAMC,qBAAqB,GAAG9B,aAAa,EAA3C;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS+B,iBAAT,CAA4BC,MAA5B,EAAoCC,MAApC,EAA6C;AAC5C,QAAMC,QAAQ,GAAG,EAChB,GAAGF,MADa;AAEhB,OAAGC;AAFa,GAAjB;;AAKA,MAAKD,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEG,SAAR,IAAqBF,MAArB,aAAqBA,MAArB,eAAqBA,MAAM,CAAEE,SAAlC,EAA8C;AAC7CD,IAAAA,QAAQ,CAACC,SAAT,GAAqBpC,UAAU,CAAEiC,MAAM,CAACG,SAAT,EAAoBF,MAAM,CAACE,SAA3B,CAA/B;AACA;;AACD,MAAKH,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEI,KAAR,IAAiBH,MAAjB,aAAiBA,MAAjB,eAAiBA,MAAM,CAAEG,KAA9B,EAAsC;AACrCF,IAAAA,QAAQ,CAACE,KAAT,GAAiB,EAAE,GAAGJ,MAAM,CAACI,KAAZ;AAAmB,SAAGH,MAAM,CAACG;AAA7B,KAAjB;AACA;;AAED,SAAOF,QAAP;AACA;;AAED,SAASG,KAAT,OAAiD;AAAA,MAAjC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoB,OAAGC;AAAvB,GAAiC;AAChD,SACC,qBAAUb,aAAa,CAAEa,KAAF,EAAS;AAAEC,IAAAA,gBAAgB,EAAEF;AAApB,GAAT,CAAvB,EACGD,QADH,CADD;AAKA;;AAED,SAASI,cAAT,QAmBI;AAAA;;AAAA,MAnBqB;AACxBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF,KADiB;AAExBC,IAAAA,IAFwB;AAGxBC,IAAAA,QAHwB;AAIxBC,IAAAA,SAJwB;AAKxBC,IAAAA,QALwB;AAMxBC,IAAAA,UANwB;AAOxBC,IAAAA,kBAPwB;AAQxBf,IAAAA,SARwB;AASxBgB,IAAAA,0BAA0B,EAAEC,gBATJ;AAUxBC,IAAAA,IAVwB;AAWxBC,IAAAA,OAXwB;AAYxBC,IAAAA,UAZwB;AAaxBC,IAAAA,YAbwB;AAcxBC,IAAAA,aAdwB;AAexBC,IAAAA,SAfwB;AAgBxBC,IAAAA,mBAhBwB;AAiBxBC,IAAAA,OAjBwB;AAkBxBC,IAAAA;AAlBwB,GAmBrB;AACH,QAAM;AACLC,IAAAA,mBADK;AAELC,IAAAA,sBAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,gBAJK;AAKLC,IAAAA;AALK,MAMFjD,SAAS,CACVkD,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,WADK;AAELC,MAAAA,iCAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEvC,gBAAF,CALV;;AAMA,UAAM4C,uBAAuB,GAC5B,CAAC,CAAEH,iCAAiC,CAAErB,QAAF,CADrC;;AAEA,WAAO;AACNc,MAAAA,mBAAmB,EAAEM,WAAW,GAAGK,cAD7B;AAENT,MAAAA,cAAc,EACbG,MAAM,CAAEzD,WAAF,CAAN,CAAsBgE,qCAAtB,CACCrB,IADD,CAHK;AAMNU,MAAAA,sBAAsB,EAAES,uBANlB;AAONP,MAAAA,gBAAgB,EACfK,eAAe,CAAEtB,QAAF,CAAf,KAAgC,aAAhC,IACA,CAAEwB,uBATG;AAUNN,MAAAA,4BAA4B,EAC3BK,uCAAuC,OAAOvB;AAXzC,KAAP;AAaA,GAvBW,EAwBZ,CAAEK,IAAF,EAAQL,QAAR,CAxBY,CANb;AAgCA,QAAM;AAAE2B,IAAAA;AAAF,MAAkB3D,WAAW,CAAEY,gBAAF,CAAnC;AACA,QAAMgD,QAAQ,GAAG1E,WAAW,CAAE,MAAMyE,WAAW,CAAE3B,QAAF,CAAnB,EAAiC,CAAEA,QAAF,CAAjC,CAA5B;AAEA,QAAM6B,YAAY,GAAGhD,SAAS,MAAM,EAApC,CApCG,CAsCH;AACA;AACA;AACA;;AACA,MAAIiD,SAAS,GACZ,cAAC,SAAD;AACC,IAAA,IAAI,EAAGzB,IADR;AAEC,IAAA,UAAU,EAAGJ,UAFd;AAGC,IAAA,UAAU,EAAGM,UAHd;AAIC,IAAA,aAAa,EAAGE,aAJjB;AAKC,IAAA,iBAAiB,EAAGX,QAAQ,GAAGiC,SAAH,GAAepB,mBAL5C;AAMC,IAAA,SAAS,EAAGZ,SAAS,GAAGW,SAAH,GAAeqB,SANrC;AAOC,IAAA,QAAQ,EAAGhC,SAAS,GAAG6B,QAAH,GAAcG,SAPnC;AAQC,IAAA,WAAW,EAAGhC,SAAS,GAAGa,OAAH,GAAamB,SARrC;AASC,IAAA,QAAQ,EAAG/B,QATZ;AAUC,IAAA,kBAAkB,EAAGE,kBAVtB;AAWC,IAAA,eAAe,EAAGW,eAXnB;AAYC,IAAA,0BAA0B,EAAGT,gBAZ9B;AAaC,IAAA,sBAAsB,EACrB4B,MAAM,CAACC,IAAP,CAAaJ,YAAb,EAA4BK,MAA5B,GAAqCL,YAArC,GAAoDE;AAdtD,IADD;AAoBA,QAAMI,SAAS,GAAG/E,YAAY,CAAEiD,IAAF,CAA9B;;AAEA,MAAKU,sBAAsB,IAAI,CAAEC,cAAjC,EAAkD;AACjDR,IAAAA,YAAY,GAAG,EACd,GAAGA,YADW;AAEd4B,MAAAA,QAAQ,EAAE,CAAC;AAFG,KAAf;AAIA,GArEE,CAsEH;;;AACA,MAAKD,SAAL,aAAKA,SAAL,eAAKA,SAAS,CAAEE,mBAAhB,EAAsC;AACrC7B,IAAAA,YAAY,GAAGzB,iBAAiB,CAC/ByB,YAD+B,EAE/B2B,SAAS,CAACE,mBAAV,CAA+B9B,UAA/B,CAF+B,CAAhC;AAIA;;AAED,QAAM+B,SAAS,GACd9B,YAAY,IACZ,CAAC,CAAEA,YAAY,CAAE,YAAF,CADf,IAEA,CAAEM,mBAHH,CA9EG,CAmFH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAKwB,SAAL,EAAiB;AAChBR,IAAAA,SAAS,GACR;AACC,MAAA,SAAS,EAAC,UADX;AAEC,oBAAatB,YAAY,CAAE,YAAF;AAF1B,OAIGsB,SAJH,CADD;AAQA;;AAED,MAAInC,KAAJ;;AAEA,MAAK,CAAEW,OAAP,EAAiB;AAChB,UAAMiC,WAAW,GAAG3C,qBAAqB,GACtCrC,iBAAiB,CAAEqC,qBAAF,CADqB,GAEtCvC,cAAc,CAAE8E,SAAF,EAAa5B,UAAb,CAFjB;AAIAZ,IAAAA,KAAK,GACJ,cAAC,KAAD;AAAO,MAAA,SAAS,EAAC;AAAjB,OACC,cAAC,mBAAD;AAAqB,MAAA,QAAQ,EAAGK;AAAhC,MADD,EAEC,cAAC,OAAD,QAAW3B,QAAQ,CAAEkE,WAAF,CAAnB,CAFD,CADD;AAMA,GAXD,MAWO,IAAK1C,IAAI,KAAK,MAAd,EAAuB;AAC7B;AACA;AACAF,IAAAA,KAAK,GACJ,8BACC;AAAK,MAAA,KAAK,EAAG;AAAE6C,QAAAA,OAAO,EAAE;AAAX;AAAb,OAAqCV,SAArC,CADD,EAEC,cAAC,KAAD;AAAO,MAAA,MAAM;AAAb,OACC,cAAC,SAAD;AAAW,MAAA,QAAQ,EAAG9B;AAAtB,MADD,CAFD,CADD;AAQA,GAXM,MAWA,IAAK,CAAAmC,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEM,UAAX,IAAwB,CAA7B,EAAiC;AACvC9C,IAAAA,KAAK,GAAGmC,SAAR;AACA,GAFM,MAEA;AACNnC,IAAAA,KAAK,GAAG,cAAC,KAAD,EAAYa,YAAZ,EAA6BsB,SAA7B,CAAR;AACA;;AAED,QAAM;AAAE,kBAAcY,SAAhB;AAA2B,OAAGC;AAA9B,uBAAmDnC,YAAnD,yDAAmE,EAAzE;AAEA,QAAMoC,KAAK,GAAG;AACb5C,IAAAA,QADa;AAEbb,IAAAA,SAAS,EAAEpC,UAAU,CACpB;AACC,2BAAqBkE,gBADtB;AAEC,yDACCC,4BAHF;AAIC,0BAAoBH,sBAAsB,IAAIC;AAJ/C,KADoB,EAOpB0B,SAAS,IAAI5B,mBAAb,IAAqC,QAAQ4B,SAAW,EAPpC,EAQpBvD,SARoB,CAFR;AAYbqB,IAAAA,YAAY,EAAEmC,gBAZD;AAabL,IAAAA;AAba,GAAd;AAgBA,QAAMO,aAAa,GAAG5F,OAAO,CAAE,MAAM2F,KAAR,EAAeZ,MAAM,CAACc,MAAP,CAAeF,KAAf,CAAf,CAA7B;AAEA,SACC,cAAC,qBAAD,CAAuB,QAAvB;AAAgC,IAAA,KAAK,EAAGC;AAAxC,KACC,cAAC,kBAAD;AACC,IAAA,QAAQ,EACP,cAAC,KAAD;AAAO,MAAA,SAAS,EAAC;AAAjB,OACC,cAAC,iBAAD,OADD;AAFF,KAOGlD,KAPH,CADD,CADD;AAaA;;AAED,MAAMoD,eAAe,GAAGhF,UAAU,CAAE,CAAEoD,MAAF,YAA0C;AAAA,MAAhC;AAAEnB,IAAAA,QAAF;AAAYgD,IAAAA;AAAZ,GAAgC;AAC7E,QAAM;AACLC,IAAAA,eADK;AAELC,IAAAA,YAFK;AAGLhD,IAAAA,kBAHK;AAILoB,IAAAA,eAJK;AAKL6B,IAAAA,oCALK;AAMLC,IAAAA,cANK;AAOLC,IAAAA;AAPK,MAQFlC,MAAM,CAAEvC,gBAAF,CARV;;AASA,QAAMe,KAAK,GAAGwD,oCAAoC,CAAEnD,QAAF,CAAlD;;AACA,QAAMC,UAAU,GAAGgD,eAAe,CAAEjD,QAAF,CAAlC;AACA,QAAMsD,YAAY,GAAGhC,eAAe,CAAE0B,YAAF,CAApC;AACA,QAAMjD,SAAS,GAAGqD,cAAc,CAAEpD,QAAF,EAAYgD,YAAZ,CAAhC;AACA,QAAMO,OAAO,GAAGF,YAAY,CAAErD,QAAF,EAAYgD,YAAZ,CAA5B,CAd6E,CAgB7E;AACA;AACA;AACA;;AACA,QAAM;AAAE3C,IAAAA,IAAF;AAAQE,IAAAA,UAAR;AAAoBD,IAAAA;AAApB,MAAgCX,KAAK,IAAI,EAA/C,CApB6E,CAsB7E;AACA;;AACA,SAAO;AACNE,IAAAA,IAAI,EAAEqD,YAAY,CAAElD,QAAF,CADZ;AAENE,IAAAA,kBAAkB,EAAEA,kBAAkB,EAFhC;AAGNJ,IAAAA,QAAQ,EAAE,CAAC,CAAEwD,YAHP;AAINvD,IAAAA,SAJM;AAKNwD,IAAAA,OALM;AAMN;AACA;AACA;AACA;AACA5D,IAAAA,KAVM;AAWNU,IAAAA,IAXM;AAYNE,IAAAA,UAZM;AAaND,IAAAA,OAbM;AAcNL,IAAAA;AAdM,GAAP;AAgBA,CAxCiC,CAAlC;AA0CA,MAAMuD,iBAAiB,GAAG1F,YAAY,CAAE,CAAE2F,QAAF,EAAYC,QAAZ,EAAsBC,QAAtB,KAAoC;AAC3E,QAAM;AACLC,IAAAA,qBADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,WAHK;AAILC,IAAAA,aAJK;AAKLlD,IAAAA,eALK;AAMLmD,IAAAA,oCANK;AAOLC,IAAAA,oBAPK;AAQLtC,IAAAA;AARK,MASF8B,QAAQ,CAAE7E,gBAAF,CATZ,CAD2E,CAY3E;AACA;;AACA,SAAO;AACN6B,IAAAA,aAAa,CAAEyD,aAAF,EAAkB;AAC9B,YAAM;AAAEC,QAAAA;AAAF,UACLR,QAAQ,CAACxC,MAAT,CAAiBvC,gBAAjB,CADD;AAEA,YAAMwF,2BAA2B,GAChCD,8BAA8B,EAD/B;AAEA,YAAM;AAAEnE,QAAAA;AAAF,UAAe0D,QAArB;AACA,YAAMW,SAAS,GAAGD,2BAA2B,CAAClC,MAA5B,GACfkC,2BADe,GAEf,CAAEpE,QAAF,CAFH;AAIA4D,MAAAA,qBAAqB,CAAES,SAAF,EAAaH,aAAb,CAArB;AACA,KAZK;;AAaNI,IAAAA,cAAc,CAAEC,MAAF,EAAUC,KAAV,EAAkB;AAC/B,YAAM;AAAExB,QAAAA;AAAF,UAAmBU,QAAzB;AACAG,MAAAA,YAAY,CAAEU,MAAF,EAAUC,KAAV,EAAiBxB,YAAjB,CAAZ;AACA,KAhBK;;AAiBNrC,IAAAA,mBAAmB,CAAE4D,MAAF,EAAW;AAC7B,YAAM;AAAEvE,QAAAA,QAAF;AAAYgD,QAAAA;AAAZ,UAA6BU,QAAnC;AACA,YAAM;AAAEe,QAAAA;AAAF,UAAoBd,QAAQ,CAACxC,MAAT,CAAiBvC,gBAAjB,CAA1B;AACA,YAAM4F,KAAK,GAAGC,aAAa,CAAEzE,QAAF,CAA3B;AACA6D,MAAAA,YAAY,CAAEU,MAAF,EAAUC,KAAK,GAAG,CAAlB,EAAqBxB,YAArB,CAAZ;AACA,KAtBK;;AAuBNpC,IAAAA,OAAO,CAAE8D,OAAF,EAAY;AAClB,YAAM;AAAE1E,QAAAA,QAAF;AAAYgD,QAAAA;AAAZ,UAA6BU,QAAnC;AACA,YAAM;AACLiB,QAAAA,wBADK;AAELC,QAAAA,oBAFK;AAGLC,QAAAA,QAHK;AAILC,QAAAA,kBAJK;AAKLC,QAAAA,YALK;AAMLC,QAAAA,aANK;AAOLP,QAAAA,aAPK;AAQLQ,QAAAA,oBARK;AASLC,QAAAA;AATK,UAUFvB,QAAQ,CAACxC,MAAT,CAAiBvC,gBAAjB,CAVJ;AAYA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACG,eAASuG,eAAT,CAA0BC,SAA1B,EAA8D;AAAA,YAAzBC,eAAyB,uEAAP,IAAO;AAC7D,cAAMC,kBAAkB,GAAGL,oBAAoB,CAAEG,SAAF,CAA/C;AACA,cAAMG,UAAU,GAAGP,aAAa,CAAEI,SAAF,CAAhC;AACA,cAAM,CAAEI,aAAF,IAAoBD,UAA1B;;AAEA,YACCA,UAAU,CAACrD,MAAX,KAAsB,CAAtB,IACAtE,iBAAiB,CAAEiH,QAAQ,CAAEW,aAAF,CAAV,CAFlB,EAGE;AACD7D,UAAAA,WAAW,CAAEyD,SAAF,CAAX;AACA,SALD,MAKO;AACN,cACCF,kBAAkB,CACjBH,YAAY,CAAES,aAAF,CADK,EAEjBF,kBAFiB,CADnB,EAKE;AACDrB,YAAAA,oBAAoB,CACnB,CAAEuB,aAAF,CADmB,EAEnBJ,SAFmB,EAGnBE,kBAHmB,EAInBb,aAAa,CAAEW,SAAF,CAJM,CAApB;AAMA,WAZD,MAYO;AACN,kBAAMK,WAAW,GAAGjI,iBAAiB,CACpCqH,QAAQ,CAAEW,aAAF,CAD4B,EAEpC7H,mBAAmB,EAFiB,CAArC;;AAKA,gBAAK8H,WAAW,IAAIA,WAAW,CAACvD,MAAhC,EAAyC;AACxCyB,cAAAA,QAAQ,CAAC+B,KAAT,CAAgB,MAAM;AACrB7B,gBAAAA,YAAY,CACX4B,WADW,EAEXhB,aAAa,CAAEW,SAAF,CAFF,EAGXE,kBAHW,EAIXD,eAJW,CAAZ;AAMA1D,gBAAAA,WAAW,CAAE6D,aAAF,EAAiB,KAAjB,CAAX;AACA,eARD;AASA;AACD;;AAED,cACC,CAAER,aAAa,CAAEI,SAAF,CAAb,CAA2BlD,MAA7B,IACAtE,iBAAiB,CAAEiH,QAAQ,CAAEO,SAAF,CAAV,CAFlB,EAGE;AACDzD,YAAAA,WAAW,CAAEyD,SAAF,EAAa,KAAb,CAAX;AACA;AACD;AACD,OAxEiB,CA0ElB;AACA;;;AACA,UAAKV,OAAL,EAAe;AACd,YAAK1B,YAAL,EAAoB;AACnB,gBAAM2C,gBAAgB,GACrBf,oBAAoB,CAAE5B,YAAF,CADrB;;AAGA,cAAK2C,gBAAL,EAAwB;AACvB;AACA;AACA;AACA,gBACCZ,YAAY,CAAE/B,YAAF,CAAZ,KACA+B,YAAY,CAAEY,gBAAF,CAFb,EAGE;AACD,oBAAMC,cAAc,GACnBd,kBAAkB,CAAE9B,YAAF,CADnB;AAEA,oBAAM6C,sBAAsB,GAC3Bf,kBAAkB,CAAEa,gBAAF,CADnB;;AAGA,kBACC3D,MAAM,CAACC,IAAP,CAAa2D,cAAb,EAA8BE,KAA9B,CACGC,GAAF,IACCH,cAAc,CAAEG,GAAF,CAAd,KACAF,sBAAsB,CAAEE,GAAF,CAHxB,CADD,EAME;AACDpC,gBAAAA,QAAQ,CAAC+B,KAAT,CAAgB,MAAM;AACrBzB,kBAAAA,oBAAoB,CACnBe,aAAa,CAAEW,gBAAF,CADM,EAEnBA,gBAFmB,EAGnB3C,YAHmB,CAApB;AAKArB,kBAAAA,WAAW,CAAEgE,gBAAF,EAAoB,KAApB,CAAX;AACA,iBAPD;AAQA;AACA;AACD,aA1BD,MA0BO;AACN7B,cAAAA,WAAW,CAAEd,YAAF,EAAgB2C,gBAAhB,CAAX;AACA;AACA;AACD;AACD;;AAED,cAAMK,iBAAiB,GAAGpB,oBAAoB,CAAE5E,QAAF,CAA9C;;AAEA,YAAK,CAAEgG,iBAAP,EAA2B;AAC1B;AACA;;AAED,YAAKhB,aAAa,CAAEgB,iBAAF,CAAb,CAAmC9D,MAAxC,EAAiD;AAChDiD,UAAAA,eAAe,CAAEa,iBAAF,EAAqB,KAArB,CAAf;AACA,SAFD,MAEO;AACNlC,UAAAA,WAAW,CAAE9D,QAAF,EAAYgG,iBAAZ,CAAX;AACA;AACD,OArDD,MAqDO;AACN,cAAMC,qBAAqB,GAC1BtB,wBAAwB,CAAE3E,QAAF,CADzB;;AAGA,YAAKiG,qBAAL,EAA6B;AAC5BnC,UAAAA,WAAW,CAAEmC,qBAAF,EAAyBjG,QAAzB,CAAX;AACA,SAFD,MAEO,IAAKgD,YAAL,EAAoB;AAC1B,gBAAMkD,oBAAoB,GACzBvB,wBAAwB,CAAE3B,YAAF,CADzB,CAD0B,CAI1B;AACA;;AACA,cACCkD,oBAAoB,IACpBnB,YAAY,CAAE/B,YAAF,CAAZ,KACC+B,YAAY,CAAEmB,oBAAF,CAHd,EAIE;AACD,kBAAMN,cAAc,GACnBd,kBAAkB,CAAE9B,YAAF,CADnB;AAEA,kBAAM6C,sBAAsB,GAC3Bf,kBAAkB,CAAEoB,oBAAF,CADnB;;AAGA,gBACClE,MAAM,CAACC,IAAP,CAAa2D,cAAb,EAA8BE,KAA9B,CACGC,GAAF,IACCH,cAAc,CAAEG,GAAF,CAAd,KACAF,sBAAsB,CAAEE,GAAF,CAHxB,CADD,EAME;AACDpC,cAAAA,QAAQ,CAAC+B,KAAT,CAAgB,MAAM;AACrBzB,gBAAAA,oBAAoB,CACnBe,aAAa,CAAEhC,YAAF,CADM,EAEnBA,YAFmB,EAGnBkD,oBAHmB,CAApB;AAKAvE,gBAAAA,WAAW,CAAEqB,YAAF,EAAgB,KAAhB,CAAX;AACA,eAPD;AAQA;AACA;AACD;;AAEDmC,UAAAA,eAAe,CAAEnC,YAAF,CAAf;AACA;AACD;AACD,KApMK;;AAqMNtC,IAAAA,SAAS,CAAE6D,MAAF,EAAU4B,aAAV,EAAyBC,eAAzB,EAA2C;AACnD,UACC7B,MAAM,CAACrC,MAAP,IACA,CAAE5E,wBAAwB,CAAEiH,MAAM,CAAEA,MAAM,CAACrC,MAAP,GAAgB,CAAlB,CAAR,CAF3B,EAGE;AACD8B,QAAAA,oCAAoC;AACpC;;AACDD,MAAAA,aAAa,CACZ,CAAEL,QAAQ,CAAC1D,QAAX,CADY,EAEZuE,MAFY,EAGZ4B,aAHY,EAIZC,eAJY,CAAb;AAMA,KAlNK;;AAmNNvF,IAAAA,eAAe,CAAEwF,gBAAF,EAAqB;AACnCxF,MAAAA,eAAe,CAAEwF,gBAAF,CAAf;AACA;;AArNK,GAAP;AAuNA,CArOqC,CAAtC;AAuOA,eAAenI,OAAO,CACrBC,IADqB,EAErB4E,eAFqB,EAGrBS,iBAHqB,EAIrB;AACA;AACA;AACApF,WAAW,CAAE;AAAA,MAAE;AAAEuB,IAAAA;AAAF,GAAF;AAAA,SAAiB,CAAC,CAAEA,KAApB;AAAA,CAAF,CAPU,EAQrB9B,WAAW,CAAE,uBAAF,CARU,CAAP,CASZ6B,cATY,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tstore as blocksStore,\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';\nexport const BlockListBlockContext = createContext();\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\thasContentLockedParent,\n\t\tisContentBlock,\n\t\tisContentLocking,\n\t\tisTemporarilyEditingAsBlocks,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst _hasContentLockedParent =\n\t\t\t\t!! __unstableGetContentLockingParent( clientId );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisContentBlock:\n\t\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\thasContentLockedParent: _hasContentLockedParent,\n\t\t\t\tisContentLocking:\n\t\t\t\t\tgetTemplateLock( clientId ) === 'contentOnly' &&\n\t\t\t\t\t! _hasContentLockedParent,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t};\n\t\t},\n\t\t[ name, 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 ( hasContentLockedParent && ! isContentBlock ) {\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-content-locked': isContentLocking,\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t\t'is-content-block': hasContentLockedParent && isContentBlock,\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\tif (\n\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\t\tregistry.batch( () => {\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\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tremoveBlock( _clientId, false );\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}\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\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"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","unlock","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","isTemporarilyEditingAsBlocks","blockEditingMode","select","getSettings","__unstableGetTemporarilyEditingAsBlocks","getBlockEditingMode","supportsLayout","removeBlock","onRemove","parentLayout","blockEdit","undefined","Object","keys","length","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","mergeBlocks","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","selectionEnabled"],"mappings":"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","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 { unlock } from '../../lock-unlock';\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} = unlock( 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}\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\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}