@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
@@ -19,6 +19,8 @@ var _blockIcon = _interopRequireDefault(require("../block-icon"));
19
19
 
20
20
  var _previewBlockPopover = _interopRequireDefault(require("./preview-block-popover"));
21
21
 
22
+ var _blockVariationTransformations = _interopRequireDefault(require("./block-variation-transformations"));
23
+
22
24
  /**
23
25
  * WordPress dependencies
24
26
  */
@@ -80,7 +82,9 @@ const BlockTransformationsMenu = _ref3 => {
80
82
  let {
81
83
  className,
82
84
  possibleBlockTransformations,
85
+ possibleBlockVariationTransformations,
83
86
  onSelect,
87
+ onSelectVariation,
84
88
  blocks
85
89
  } = _ref3;
86
90
  const [hoveredTransformItemName, setHoveredTransformItemName] = (0, _element.useState)();
@@ -101,6 +105,10 @@ const BlockTransformationsMenu = _ref3 => {
101
105
  className: className
102
106
  }, hoveredTransformItemName && (0, _element.createElement)(_previewBlockPopover.default, {
103
107
  blocks: (0, _blocks.switchToBlockType)(blocks, hoveredTransformItemName)
108
+ }), !!(possibleBlockVariationTransformations !== null && possibleBlockVariationTransformations !== void 0 && possibleBlockVariationTransformations.length) && (0, _element.createElement)(_blockVariationTransformations.default, {
109
+ transformations: possibleBlockVariationTransformations,
110
+ blocks: blocks,
111
+ onSelect: onSelectVariation
104
112
  }), priorityTextTransformations.map(item => (0, _element.createElement)(BlockTranformationItem, {
105
113
  key: item.name,
106
114
  item: item,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"names":["useGroupedTransforms","possibleBlockTransformations","priorityContentTranformationBlocks","transformations","priorityTextTranformsNames","Object","keys","reduce","accumulator","item","name","includes","priorityTextTransformations","push","restTransformations","sort","currentName","nextName","BlockTransformationsMenu","className","onSelect","blocks","hoveredTransformItemName","setHoveredTransformItemName","hasBothContentTransformations","length","restTransformItems","map","RestTransformationItems","BlockTranformationItem","icon","title","isDisabled","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup, MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\n/**\n * Helper hook to group transformations to display them in a specific order in the UI.\n * For now we group only priority content driven transformations(ex. paragraph -> heading).\n *\n * Later on we could also group 'layout' transformations(ex. paragraph -> group) and\n * display them in different sections.\n *\n * @param {Object[]} possibleBlockTransformations The available block transformations.\n * @return {Record<string, Object[]>} The grouped block transformations.\n */\nfunction useGroupedTransforms( possibleBlockTransformations ) {\n\tconst priorityContentTranformationBlocks = {\n\t\t'core/paragraph': 1,\n\t\t'core/heading': 2,\n\t\t'core/list': 3,\n\t\t'core/quote': 4,\n\t};\n\tconst transformations = useMemo( () => {\n\t\tconst priorityTextTranformsNames = Object.keys(\n\t\t\tpriorityContentTranformationBlocks\n\t\t);\n\t\treturn possibleBlockTransformations.reduce(\n\t\t\t( accumulator, item ) => {\n\t\t\t\tconst { name } = item;\n\t\t\t\tif ( priorityTextTranformsNames.includes( name ) ) {\n\t\t\t\t\taccumulator.priorityTextTransformations.push( item );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.restTransformations.push( item );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ priorityTextTransformations: [], restTransformations: [] }\n\t\t);\n\t}, [ possibleBlockTransformations ] );\n\n\t// Order the priority text transformations.\n\ttransformations.priorityTextTransformations.sort(\n\t\t( { name: currentName }, { name: nextName } ) => {\n\t\t\treturn priorityContentTranformationBlocks[ currentName ] <\n\t\t\t\tpriorityContentTranformationBlocks[ nextName ]\n\t\t\t\t? -1\n\t\t\t\t: 1;\n\t\t}\n\t);\n\treturn transformations;\n}\n\nconst BlockTransformationsMenu = ( {\n\tclassName,\n\tpossibleBlockTransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\n\tconst { priorityTextTransformations, restTransformations } =\n\t\tuseGroupedTransforms( possibleBlockTransformations );\n\t// We have to check if both content transformations(priority and rest) are set\n\t// in order to create a separate MenuGroup for them.\n\tconst hasBothContentTransformations =\n\t\tpriorityTextTransformations.length && restTransformations.length;\n\tconst restTransformItems = !! restTransformations.length && (\n\t\t<RestTransformationItems\n\t\t\trestTransformations={ restTransformations }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup label={ __( 'Transform to' ) } className={ className }>\n\t\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\t\tblocks={ switchToBlockType(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\thoveredTransformItemName\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ priorityTextTransformations.map( ( item ) => (\n\t\t\t\t\t<BlockTranformationItem\n\t\t\t\t\t\tkey={ item.name }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsetHoveredTransformItemName={\n\t\t\t\t\t\t\tsetHoveredTransformItemName\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t{ ! hasBothContentTransformations && restTransformItems }\n\t\t\t</MenuGroup>\n\t\t\t{ !! hasBothContentTransformations && (\n\t\t\t\t<MenuGroup className={ className }>\n\t\t\t\t\t{ restTransformItems }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction RestTransformationItems( {\n\trestTransformations,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\treturn restTransformations.map( ( item ) => (\n\t\t<BlockTranformationItem\n\t\t\tkey={ item.name }\n\t\t\titem={ item }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t) );\n}\n\nfunction BlockTranformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title, isDisabled } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockTransformationsMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"names":["useGroupedTransforms","possibleBlockTransformations","priorityContentTranformationBlocks","transformations","priorityTextTranformsNames","Object","keys","reduce","accumulator","item","name","includes","priorityTextTransformations","push","restTransformations","sort","currentName","nextName","BlockTransformationsMenu","className","possibleBlockVariationTransformations","onSelect","onSelectVariation","blocks","hoveredTransformItemName","setHoveredTransformItemName","hasBothContentTransformations","length","restTransformItems","map","RestTransformationItems","BlockTranformationItem","icon","title","isDisabled","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup, MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\nimport BlockVariationTransformations from './block-variation-transformations';\n\n/**\n * Helper hook to group transformations to display them in a specific order in the UI.\n * For now we group only priority content driven transformations(ex. paragraph -> heading).\n *\n * Later on we could also group 'layout' transformations(ex. paragraph -> group) and\n * display them in different sections.\n *\n * @param {Object[]} possibleBlockTransformations The available block transformations.\n * @return {Record<string, Object[]>} The grouped block transformations.\n */\nfunction useGroupedTransforms( possibleBlockTransformations ) {\n\tconst priorityContentTranformationBlocks = {\n\t\t'core/paragraph': 1,\n\t\t'core/heading': 2,\n\t\t'core/list': 3,\n\t\t'core/quote': 4,\n\t};\n\tconst transformations = useMemo( () => {\n\t\tconst priorityTextTranformsNames = Object.keys(\n\t\t\tpriorityContentTranformationBlocks\n\t\t);\n\t\treturn possibleBlockTransformations.reduce(\n\t\t\t( accumulator, item ) => {\n\t\t\t\tconst { name } = item;\n\t\t\t\tif ( priorityTextTranformsNames.includes( name ) ) {\n\t\t\t\t\taccumulator.priorityTextTransformations.push( item );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.restTransformations.push( item );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ priorityTextTransformations: [], restTransformations: [] }\n\t\t);\n\t}, [ possibleBlockTransformations ] );\n\n\t// Order the priority text transformations.\n\ttransformations.priorityTextTransformations.sort(\n\t\t( { name: currentName }, { name: nextName } ) => {\n\t\t\treturn priorityContentTranformationBlocks[ currentName ] <\n\t\t\t\tpriorityContentTranformationBlocks[ nextName ]\n\t\t\t\t? -1\n\t\t\t\t: 1;\n\t\t}\n\t);\n\treturn transformations;\n}\n\nconst BlockTransformationsMenu = ( {\n\tclassName,\n\tpossibleBlockTransformations,\n\tpossibleBlockVariationTransformations,\n\tonSelect,\n\tonSelectVariation,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\n\tconst { priorityTextTransformations, restTransformations } =\n\t\tuseGroupedTransforms( possibleBlockTransformations );\n\t// We have to check if both content transformations(priority and rest) are set\n\t// in order to create a separate MenuGroup for them.\n\tconst hasBothContentTransformations =\n\t\tpriorityTextTransformations.length && restTransformations.length;\n\tconst restTransformItems = !! restTransformations.length && (\n\t\t<RestTransformationItems\n\t\t\trestTransformations={ restTransformations }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup label={ __( 'Transform to' ) } className={ className }>\n\t\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\t\tblocks={ switchToBlockType(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\thoveredTransformItemName\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! possibleBlockVariationTransformations?.length && (\n\t\t\t\t\t<BlockVariationTransformations\n\t\t\t\t\t\ttransformations={\n\t\t\t\t\t\t\tpossibleBlockVariationTransformations\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ priorityTextTransformations.map( ( item ) => (\n\t\t\t\t\t<BlockTranformationItem\n\t\t\t\t\t\tkey={ item.name }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsetHoveredTransformItemName={\n\t\t\t\t\t\t\tsetHoveredTransformItemName\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t{ ! hasBothContentTransformations && restTransformItems }\n\t\t\t</MenuGroup>\n\t\t\t{ !! hasBothContentTransformations && (\n\t\t\t\t<MenuGroup className={ className }>\n\t\t\t\t\t{ restTransformItems }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction RestTransformationItems( {\n\trestTransformations,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\treturn restTransformations.map( ( item ) => (\n\t\t<BlockTranformationItem\n\t\t\tkey={ item.name }\n\t\t\titem={ item }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t) );\n}\n\nfunction BlockTranformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title, isDisabled } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockTransformationsMenu;\n"]}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ exports.useBlockVariationTransforms = useBlockVariationTransforms;
10
+
11
+ var _element = require("@wordpress/element");
12
+
13
+ var _components = require("@wordpress/components");
14
+
15
+ var _blocks = require("@wordpress/blocks");
16
+
17
+ var _data = require("@wordpress/data");
18
+
19
+ var _store = require("../../store");
20
+
21
+ var _blockIcon = _interopRequireDefault(require("../block-icon"));
22
+
23
+ var _previewBlockPopover = _interopRequireDefault(require("./preview-block-popover"));
24
+
25
+ /**
26
+ * WordPress dependencies
27
+ */
28
+
29
+ /**
30
+ * Internal dependencies
31
+ */
32
+ const EMPTY_OBJECT = {};
33
+
34
+ function useBlockVariationTransforms(_ref) {
35
+ let {
36
+ clientIds,
37
+ blocks
38
+ } = _ref;
39
+ const {
40
+ activeBlockVariation,
41
+ blockVariationTransformations
42
+ } = (0, _data.useSelect)(select => {
43
+ const {
44
+ getBlockRootClientId,
45
+ getBlockAttributes,
46
+ canRemoveBlocks
47
+ } = select(_store.store);
48
+ const {
49
+ getActiveBlockVariation,
50
+ getBlockVariations
51
+ } = select(_blocks.store);
52
+ const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
53
+ const canRemove = canRemoveBlocks(clientIds, rootClientId); // Only handle single selected blocks for now.
54
+
55
+ if (blocks.length !== 1 || !canRemove) {
56
+ return EMPTY_OBJECT;
57
+ }
58
+
59
+ const [firstBlock] = blocks;
60
+ return {
61
+ blockVariationTransformations: getBlockVariations(firstBlock.name, 'transform'),
62
+ activeBlockVariation: getActiveBlockVariation(firstBlock.name, getBlockAttributes(firstBlock.clientId))
63
+ };
64
+ }, [clientIds, blocks]);
65
+ const transformations = (0, _element.useMemo)(() => {
66
+ return blockVariationTransformations === null || blockVariationTransformations === void 0 ? void 0 : blockVariationTransformations.filter(_ref2 => {
67
+ let {
68
+ name
69
+ } = _ref2;
70
+ return name !== (activeBlockVariation === null || activeBlockVariation === void 0 ? void 0 : activeBlockVariation.name);
71
+ });
72
+ }, [blockVariationTransformations, activeBlockVariation]);
73
+ return transformations;
74
+ }
75
+
76
+ const BlockVariationTransformations = _ref3 => {
77
+ let {
78
+ transformations,
79
+ onSelect,
80
+ blocks
81
+ } = _ref3;
82
+ const [hoveredTransformItemName, setHoveredTransformItemName] = (0, _element.useState)();
83
+ return (0, _element.createElement)(_element.Fragment, null, hoveredTransformItemName && (0, _element.createElement)(_previewBlockPopover.default, {
84
+ blocks: (0, _blocks.cloneBlock)(blocks[0], transformations.find(_ref4 => {
85
+ let {
86
+ name
87
+ } = _ref4;
88
+ return name === hoveredTransformItemName;
89
+ }).attributes)
90
+ }), transformations === null || transformations === void 0 ? void 0 : transformations.map(item => (0, _element.createElement)(BlockVariationTranformationItem, {
91
+ key: item.name,
92
+ item: item,
93
+ onSelect: onSelect,
94
+ setHoveredTransformItemName: setHoveredTransformItemName
95
+ })));
96
+ };
97
+
98
+ function BlockVariationTranformationItem(_ref5) {
99
+ let {
100
+ item,
101
+ onSelect,
102
+ setHoveredTransformItemName
103
+ } = _ref5;
104
+ const {
105
+ name,
106
+ icon,
107
+ title
108
+ } = item;
109
+ return (0, _element.createElement)(_components.MenuItem, {
110
+ className: (0, _blocks.getBlockMenuDefaultClassName)(name),
111
+ onClick: event => {
112
+ event.preventDefault();
113
+ onSelect(name);
114
+ },
115
+ onMouseLeave: () => setHoveredTransformItemName(null),
116
+ onMouseEnter: () => setHoveredTransformItemName(name)
117
+ }, (0, _element.createElement)(_blockIcon.default, {
118
+ icon: icon,
119
+ showColors: true
120
+ }), title);
121
+ }
122
+
123
+ var _default = BlockVariationTransformations;
124
+ exports.default = _default;
125
+ //# sourceMappingURL=block-variation-transformations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-variation-transformations.js"],"names":["EMPTY_OBJECT","useBlockVariationTransforms","clientIds","blocks","activeBlockVariation","blockVariationTransformations","select","getBlockRootClientId","getBlockAttributes","canRemoveBlocks","blockEditorStore","getActiveBlockVariation","getBlockVariations","blocksStore","rootClientId","Array","isArray","canRemove","length","firstBlock","name","clientId","transformations","filter","BlockVariationTransformations","onSelect","hoveredTransformItemName","setHoveredTransformItemName","find","attributes","map","item","BlockVariationTranformationItem","icon","title","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tcloneBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\nconst EMPTY_OBJECT = {};\n\nexport function useBlockVariationTransforms( { clientIds, blocks } ) {\n\tconst { activeBlockVariation, blockVariationTransformations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\t\t\t// Only handle single selected blocks for now.\n\t\t\tif ( blocks.length !== 1 || ! canRemove ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst [ firstBlock ] = blocks;\n\t\t\treturn {\n\t\t\t\tblockVariationTransformations: getBlockVariations(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\tgetBlockAttributes( firstBlock.clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\tconst transformations = useMemo( () => {\n\t\treturn blockVariationTransformations?.filter(\n\t\t\t( { name } ) => name !== activeBlockVariation?.name\n\t\t);\n\t}, [ blockVariationTransformations, activeBlockVariation ] );\n\treturn transformations;\n}\n\nconst BlockVariationTransformations = ( {\n\ttransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\treturn (\n\t\t<>\n\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={ cloneBlock(\n\t\t\t\t\t\tblocks[ 0 ],\n\t\t\t\t\t\ttransformations.find(\n\t\t\t\t\t\t\t( { name } ) => name === hoveredTransformItemName\n\t\t\t\t\t\t).attributes\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ transformations?.map( ( item ) => (\n\t\t\t\t<BlockVariationTranformationItem\n\t\t\t\t\tkey={ item.name }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</>\n\t);\n};\n\nfunction BlockVariationTranformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockVariationTransformations;\n"]}
@@ -27,6 +27,8 @@ var _blockIcon = _interopRequireDefault(require("../block-icon"));
27
27
 
28
28
  var _blockTransformationsMenu = _interopRequireDefault(require("./block-transformations-menu"));
29
29
 
30
+ var _blockVariationTransformations = require("./block-variation-transformations");
31
+
30
32
  var _blockStylesMenu = _interopRequireDefault(require("./block-styles-menu"));
31
33
 
32
34
  var _patternTransformationsMenu = _interopRequireDefault(require("./pattern-transformations-menu"));
@@ -47,7 +49,8 @@ const BlockSwitcherDropdownMenu = _ref => {
47
49
  } = _ref;
48
50
  const {
49
51
  replaceBlocks,
50
- multiSelect
52
+ multiSelect,
53
+ updateBlockAttributes
51
54
  } = (0, _data.useDispatch)(_store.store);
52
55
  const blockInformation = (0, _useBlockDisplayInformation.default)(blocks[0].clientId);
53
56
  const {
@@ -60,15 +63,13 @@ const BlockSwitcherDropdownMenu = _ref => {
60
63
  const {
61
64
  getBlockRootClientId,
62
65
  getBlockTransformItems,
63
- __experimentalGetPatternTransformItems
66
+ __experimentalGetPatternTransformItems,
67
+ canRemoveBlocks
64
68
  } = select(_store.store);
65
69
  const {
66
70
  getBlockStyles,
67
71
  getBlockType
68
72
  } = select(_blocks.store);
69
- const {
70
- canRemoveBlocks
71
- } = select(_store.store);
72
73
  const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
73
74
  const [{
74
75
  name: firstBlockName
@@ -104,6 +105,10 @@ const BlockSwitcherDropdownMenu = _ref => {
104
105
  patterns: __experimentalGetPatternTransformItems(blocks, rootClientId)
105
106
  };
106
107
  }, [clientIds, blocks, blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.icon]);
108
+ const blockVariationTransformations = (0, _blockVariationTransformations.useBlockVariationTransforms)({
109
+ clientIds,
110
+ blocks
111
+ });
107
112
  const blockTitle = (0, _useBlockDisplayTitle.default)({
108
113
  clientId: Array.isArray(clientIds) ? clientIds[0] : clientIds,
109
114
  maximumLength: 35
@@ -122,6 +127,16 @@ const BlockSwitcherDropdownMenu = _ref => {
122
127
  const newBlocks = (0, _blocks.switchToBlockType)(blocks, name);
123
128
  replaceBlocks(clientIds, newBlocks);
124
129
  selectForMultipleBlocks(newBlocks);
130
+ }
131
+
132
+ function onBlockVariationTransform(name) {
133
+ updateBlockAttributes(blocks[0].clientId, { ...blockVariationTransformations.find(_ref3 => {
134
+ let {
135
+ name: variationName
136
+ } = _ref3;
137
+ return variationName === name;
138
+ }).attributes
139
+ });
125
140
  } // Pattern transformation through the `Patterns` API.
126
141
 
127
142
 
@@ -137,9 +152,10 @@ const BlockSwitcherDropdownMenu = _ref => {
137
152
 
138
153
 
139
154
  const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove && !isTemplate;
155
+ const hasPossibleBlockVariationTransformations = !!(blockVariationTransformations !== null && blockVariationTransformations !== void 0 && blockVariationTransformations.length);
140
156
  const hasPatternTransformation = !!(patterns !== null && patterns !== void 0 && patterns.length) && canRemove;
141
157
 
142
- if (!hasBlockStyles && !hasPossibleBlockTransformations) {
158
+ if (!hasBlockStyles && !hasPossibleBlockTransformations && !hasPossibleBlockVariationTransformations) {
143
159
  return (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarButton, {
144
160
  disabled: true,
145
161
  className: "block-editor-block-switcher__no-switcher-icon",
@@ -159,7 +175,8 @@ const BlockSwitcherDropdownMenu = _ref => {
159
175
  (0, _i18n.__)('%s: Change block type or style'), blockTitle) : (0, _i18n.sprintf)(
160
176
  /* translators: %d: number of blocks. */
161
177
  (0, _i18n._n)('Change type of %d block', 'Change type of %d blocks', blocks.length), blocks.length);
162
- const showDropDown = hasBlockStyles || hasPossibleBlockTransformations || hasPatternTransformation;
178
+ const hasBlockOrBlockVariationTransforms = hasPossibleBlockTransformations || hasPossibleBlockVariationTransformations;
179
+ const showDropDown = hasBlockStyles || hasBlockOrBlockVariationTransforms || hasPatternTransformation;
163
180
  return (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarItem, null, toggleProps => (0, _element.createElement)(_components.DropdownMenu, {
164
181
  className: "block-editor-block-switcher",
165
182
  label: blockSwitcherLabel,
@@ -182,10 +199,10 @@ const BlockSwitcherDropdownMenu = _ref => {
182
199
  menuProps: {
183
200
  orientation: 'both'
184
201
  }
185
- }, _ref3 => {
202
+ }, _ref4 => {
186
203
  let {
187
204
  onClose
188
- } = _ref3;
205
+ } = _ref4;
189
206
  return showDropDown && (0, _element.createElement)("div", {
190
207
  className: "block-editor-block-switcher__container"
191
208
  }, hasPatternTransformation && (0, _element.createElement)(_patternTransformationsMenu.default, {
@@ -195,13 +212,18 @@ const BlockSwitcherDropdownMenu = _ref => {
195
212
  onPatternTransform(transformedBlocks);
196
213
  onClose();
197
214
  }
198
- }), hasPossibleBlockTransformations && (0, _element.createElement)(_blockTransformationsMenu.default, {
215
+ }), hasBlockOrBlockVariationTransforms && (0, _element.createElement)(_blockTransformationsMenu.default, {
199
216
  className: "block-editor-block-switcher__transforms__menugroup",
200
217
  possibleBlockTransformations: possibleBlockTransformations,
218
+ possibleBlockVariationTransformations: blockVariationTransformations,
201
219
  blocks: blocks,
202
220
  onSelect: name => {
203
221
  onBlockTransform(name);
204
222
  onClose();
223
+ },
224
+ onSelectVariation: name => {
225
+ onBlockVariationTransform(name);
226
+ onClose();
205
227
  }
206
228
  }), hasBlockStyles && (0, _element.createElement)(_blockStylesMenu.default, {
207
229
  hoveredBlock: blocks[0],
@@ -212,10 +234,10 @@ const BlockSwitcherDropdownMenu = _ref => {
212
234
 
213
235
  exports.BlockSwitcherDropdownMenu = BlockSwitcherDropdownMenu;
214
236
 
215
- const BlockSwitcher = _ref4 => {
237
+ const BlockSwitcher = _ref5 => {
216
238
  let {
217
239
  clientIds
218
- } = _ref4;
240
+ } = _ref5;
219
241
  const blocks = (0, _data.useSelect)(select => select(_store.store).getBlocksByClientId(clientIds), [clientIds]);
220
242
 
221
243
  if (!blocks.length || blocks.some(block => !block)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","multiSelect","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","blocksStore","canRemoveBlocks","rootClientId","Array","isArray","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","Set","map","size","copy","blockTitle","maximumLength","isReusable","isTemplate","selectForMultipleBlocks","insertedBlocks","onBlockTransform","newBlocks","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","variant","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,\n\t\tmaximumLength: 35,\n\t} );\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tvariant: 'toolbar',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","multiSelect","updateBlockAttributes","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","canRemoveBlocks","getBlockStyles","getBlockType","blocksStore","rootClientId","Array","isArray","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","Set","map","size","copy","blockVariationTransformations","blockTitle","maximumLength","isReusable","isTemplate","selectForMultipleBlocks","insertedBlocks","onBlockTransform","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","hasBlockOrBlockVariationTransforms","showDropDown","toggleProps","position","variant","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,\n\t\tmaximumLength: 35,\n\t} );\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif (\n\t\t! hasBlockStyles &&\n\t\t! hasPossibleBlockTransformations &&\n\t\t! hasPossibleBlockVariationTransformations\n\t) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tvariant: 'toolbar',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockVariationTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
@@ -103,13 +103,13 @@ function BlockPattern(_ref4) {
103
103
  const baseClassName = 'block-editor-block-switcher__preview-patterns-container';
104
104
  const descriptionId = (0, _compose.useInstanceId)(BlockPattern, `${baseClassName}-list__item-description`);
105
105
  return (0, _element.createElement)("div", {
106
- className: `${baseClassName}-list__list-item`,
107
- "aria-label": pattern.title,
108
- "aria-describedby": pattern.description ? descriptionId : undefined
106
+ className: `${baseClassName}-list__list-item`
109
107
  }, (0, _element.createElement)(_components.__unstableCompositeItem, (0, _extends2.default)({
110
108
  role: "option",
111
109
  as: "div"
112
110
  }, composite, {
111
+ "aria-label": pattern.title,
112
+ "aria-describedby": pattern.description ? descriptionId : undefined,
113
113
  className: `${baseClassName}-list__item`,
114
114
  onClick: () => onSelect(pattern.transformedBlocks)
115
115
  }), (0, _element.createElement)(_blockPreview.default, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/pattern-transformations-menu.js"],"names":["PatternTransformationsMenu","blocks","patterns","statePatterns","onSelect","showTransforms","setShowTransforms","length","event","preventDefault","chevronRight","PreviewPatternsPopover","BlockPatternsList","composite","map","pattern","name","BlockPattern","baseClassName","descriptionId","title","description","undefined","transformedBlocks","viewportWidth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { chevronRight } from '@wordpress/icons';\n\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tPopover,\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockPreview from '../block-preview';\nimport useTransformedPatterns from './use-transformed-patterns';\n\nfunction PatternTransformationsMenu( {\n\tblocks,\n\tpatterns: statePatterns,\n\tonSelect,\n} ) {\n\tconst [ showTransforms, setShowTransforms ] = useState( false );\n\tconst patterns = useTransformedPatterns( statePatterns, blocks );\n\tif ( ! patterns.length ) return null;\n\n\treturn (\n\t\t<MenuGroup className=\"block-editor-block-switcher__pattern__transforms__menugroup\">\n\t\t\t{ showTransforms && (\n\t\t\t\t<PreviewPatternsPopover\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<MenuItem\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetShowTransforms( ! showTransforms );\n\t\t\t\t} }\n\t\t\t\ticon={ chevronRight }\n\t\t\t>\n\t\t\t\t{ __( 'Patterns' ) }\n\t\t\t</MenuItem>\n\t\t</MenuGroup>\n\t);\n}\n\nfunction PreviewPatternsPopover( { patterns, onSelect } ) {\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__popover__preview__parent\">\n\t\t\t<div className=\"block-editor-block-switcher__popover__preview__container\">\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-block-switcher__preview__popover\"\n\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"block-editor-block-switcher__preview\">\n\t\t\t\t\t\t<div className=\"block-editor-block-switcher__preview-title\">\n\t\t\t\t\t\t\t{ __( 'Preview' ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsList( { patterns, onSelect } ) {\n\tconst composite = useCompositeState();\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-block-switcher__preview-patterns-container\"\n\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t>\n\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t<BlockPattern\n\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\t// TODO check pattern/preview width...\n\tconst baseClassName =\n\t\t'block-editor-block-switcher__preview-patterns-container';\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }-list__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }-list__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }-list__item` }\n\t\t\t\tonClick={ () => onSelect( pattern.transformedBlocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ pattern.transformedBlocks }\n\t\t\t\t\tviewportWidth={ pattern.viewportWidth || 500 }\n\t\t\t\t/>\n\t\t\t\t<div className={ `${ baseClassName }-list__item-title` }>\n\t\t\t\t\t{ pattern.title }\n\t\t\t\t</div>\n\t\t\t</CompositeItem>\n\t\t\t{ !! pattern.description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ pattern.description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default PatternTransformationsMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/pattern-transformations-menu.js"],"names":["PatternTransformationsMenu","blocks","patterns","statePatterns","onSelect","showTransforms","setShowTransforms","length","event","preventDefault","chevronRight","PreviewPatternsPopover","BlockPatternsList","composite","map","pattern","name","BlockPattern","baseClassName","descriptionId","title","description","undefined","transformedBlocks","viewportWidth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { chevronRight } from '@wordpress/icons';\n\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tPopover,\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockPreview from '../block-preview';\nimport useTransformedPatterns from './use-transformed-patterns';\n\nfunction PatternTransformationsMenu( {\n\tblocks,\n\tpatterns: statePatterns,\n\tonSelect,\n} ) {\n\tconst [ showTransforms, setShowTransforms ] = useState( false );\n\tconst patterns = useTransformedPatterns( statePatterns, blocks );\n\tif ( ! patterns.length ) return null;\n\n\treturn (\n\t\t<MenuGroup className=\"block-editor-block-switcher__pattern__transforms__menugroup\">\n\t\t\t{ showTransforms && (\n\t\t\t\t<PreviewPatternsPopover\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<MenuItem\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetShowTransforms( ! showTransforms );\n\t\t\t\t} }\n\t\t\t\ticon={ chevronRight }\n\t\t\t>\n\t\t\t\t{ __( 'Patterns' ) }\n\t\t\t</MenuItem>\n\t\t</MenuGroup>\n\t);\n}\n\nfunction PreviewPatternsPopover( { patterns, onSelect } ) {\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__popover__preview__parent\">\n\t\t\t<div className=\"block-editor-block-switcher__popover__preview__container\">\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-block-switcher__preview__popover\"\n\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"block-editor-block-switcher__preview\">\n\t\t\t\t\t\t<div className=\"block-editor-block-switcher__preview-title\">\n\t\t\t\t\t\t\t{ __( 'Preview' ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsList( { patterns, onSelect } ) {\n\tconst composite = useCompositeState();\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-block-switcher__preview-patterns-container\"\n\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t>\n\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t<BlockPattern\n\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\t// TODO check pattern/preview width...\n\tconst baseClassName =\n\t\t'block-editor-block-switcher__preview-patterns-container';\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }-list__item-description`\n\t);\n\treturn (\n\t\t<div className={ `${ baseClassName }-list__list-item` }>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\taria-label={ pattern.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tpattern.description ? descriptionId : undefined\n\t\t\t\t}\n\t\t\t\tclassName={ `${ baseClassName }-list__item` }\n\t\t\t\tonClick={ () => onSelect( pattern.transformedBlocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ pattern.transformedBlocks }\n\t\t\t\t\tviewportWidth={ pattern.viewportWidth || 500 }\n\t\t\t\t/>\n\t\t\t\t<div className={ `${ baseClassName }-list__item-title` }>\n\t\t\t\t\t{ pattern.title }\n\t\t\t\t</div>\n\t\t\t</CompositeItem>\n\t\t\t{ !! pattern.description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ pattern.description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default PatternTransformationsMenu;\n"]}
@@ -45,6 +45,8 @@ var _store = require("../../store");
45
45
 
46
46
  var _blockNameContext = _interopRequireDefault(require("./block-name-context"));
47
47
 
48
+ var _lockUnlock = require("../../lock-unlock");
49
+
48
50
  /**
49
51
  * External dependencies
50
52
  */
@@ -68,7 +70,7 @@ const BlockToolbar = _ref => {
68
70
  isDistractionFree,
69
71
  isValid,
70
72
  isVisual,
71
- isContentLocked
73
+ blockEditingMode
72
74
  } = (0, _data.useSelect)(select => {
73
75
  const {
74
76
  getBlockName,
@@ -77,8 +79,8 @@ const BlockToolbar = _ref => {
77
79
  isBlockValid,
78
80
  getBlockRootClientId,
79
81
  getSettings,
80
- __unstableGetContentLockingParent
81
- } = select(_store.store);
82
+ getBlockEditingMode
83
+ } = (0, _lockUnlock.unlock)(select(_store.store));
82
84
  const selectedBlockClientIds = getSelectedBlockClientIds();
83
85
  const selectedBlockClientId = selectedBlockClientIds[0];
84
86
  const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
@@ -92,7 +94,7 @@ const BlockToolbar = _ref => {
92
94
  rootClientId: blockRootClientId,
93
95
  isValid: selectedBlockClientIds.every(id => isBlockValid(id)),
94
96
  isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
95
- isContentLocked: !!__unstableGetContentLockingParent(selectedBlockClientId)
97
+ blockEditingMode: getBlockEditingMode(selectedBlockClientId)
96
98
  };
97
99
  }, []); // Handles highlighting the current block outline on hover or focus of the
98
100
  // block type toolbar area.
@@ -142,9 +144,9 @@ const BlockToolbar = _ref => {
142
144
  });
143
145
  return (0, _element.createElement)("div", {
144
146
  className: classes
145
- }, !isMultiToolbar && isLargeViewport && !isContentLocked && (0, _element.createElement)(_blockParentSelector.default, null), (0, _element.createElement)("div", (0, _extends2.default)({
147
+ }, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && (0, _element.createElement)(_blockParentSelector.default, null), (0, _element.createElement)("div", (0, _extends2.default)({
146
148
  ref: nodeRef
147
- }, showMoversGestures), (shouldShowVisualToolbar || isMultiToolbar) && !isContentLocked && (0, _element.createElement)(_components.ToolbarGroup, {
149
+ }, showMoversGestures), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && (0, _element.createElement)(_components.ToolbarGroup, {
148
150
  className: "block-editor-block-toolbar__block-controls"
149
151
  }, (0, _element.createElement)(_blockSwitcher.default, {
150
152
  clientIds: blockClientIds
@@ -171,7 +173,7 @@ const BlockToolbar = _ref => {
171
173
  value: blockType === null || blockType === void 0 ? void 0 : blockType.name
172
174
  }, (0, _element.createElement)(_blockToolbarLastItem.default.Slot, null))), (0, _element.createElement)(_blockEditVisuallyButton.default, {
173
175
  clientIds: blockClientIds
174
- }), !isContentLocked && (0, _element.createElement)(_blockSettingsMenu.default, {
176
+ }), blockEditingMode === 'default' && (0, _element.createElement)(_blockSettingsMenu.default, {
175
177
  clientIds: blockClientIds
176
178
  }));
177
179
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","isContentLocked","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","__unstableGetContentLockingParent","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tisContentLocked,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\t__unstableGetContentLockingParent,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tisContentLocked: !! __unstableGetContentLockingParent(\n\t\t\t\tselectedBlockClientId\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar && isLargeViewport && ! isContentLocked && (\n\t\t\t\t<BlockParentSelector />\n\t\t\t) }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! isContentLocked && (\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\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<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ ! isContentLocked && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","getBlockEditingMode","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tblockEditingMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\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<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}