@wordpress/block-editor 12.17.0 → 12.18.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 (401) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +32 -0
  3. package/build/components/block-draggable/index.js +11 -3
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-edit/context.js +3 -1
  6. package/build/components/block-edit/context.js.map +1 -1
  7. package/build/components/block-edit/index.js +4 -2
  8. package/build/components/block-edit/index.js.map +1 -1
  9. package/build/components/block-editing-mode/index.js +6 -3
  10. package/build/components/block-editing-mode/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +5 -2
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/block.js +4 -3
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-list/block.native.js +9 -5
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-list/index.js +30 -4
  18. package/build/components/block-list/index.js.map +1 -1
  19. package/build/components/block-list/private-block-context.js +1 -1
  20. package/build/components/block-list/private-block-context.js.map +1 -1
  21. package/build/components/block-list/use-in-between-inserter.js +1 -1
  22. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  23. package/build/components/block-lock/toolbar.js +8 -2
  24. package/build/components/block-lock/toolbar.js.map +1 -1
  25. package/build/components/block-popover/inbetween.js +15 -3
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-preview/auto.js +1 -1
  28. package/build/components/block-preview/auto.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +3 -2
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -4
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-switcher/block-transformations-menu.js +12 -1
  34. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  35. package/build/components/block-switcher/index.js +119 -90
  36. package/build/components/block-switcher/index.js.map +1 -1
  37. package/build/components/block-tools/insertion-point.js +10 -3
  38. package/build/components/block-tools/insertion-point.js.map +1 -1
  39. package/build/components/font-sizes/fluid-utils.js +7 -1
  40. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  41. package/build/components/global-styles/border-panel.js +5 -14
  42. package/build/components/global-styles/border-panel.js.map +1 -1
  43. package/build/components/global-styles/effects-panel.js +7 -1
  44. package/build/components/global-styles/effects-panel.js.map +1 -1
  45. package/build/components/global-styles/hooks.js +3 -2
  46. package/build/components/global-styles/hooks.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +31 -14
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/iframe/get-compatibility-styles.js +99 -0
  50. package/build/components/iframe/get-compatibility-styles.js.map +1 -0
  51. package/build/components/iframe/index.js +2 -3
  52. package/build/components/iframe/index.js.map +1 -1
  53. package/build/components/index.js +16 -2
  54. package/build/components/index.js.map +1 -1
  55. package/build/components/index.native.js +16 -2
  56. package/build/components/index.native.js.map +1 -1
  57. package/build/components/inspector-controls/groups.js +2 -0
  58. package/build/components/inspector-controls/groups.js.map +1 -1
  59. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  60. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  61. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  62. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  63. package/build/components/link-control/link-preview.js +30 -26
  64. package/build/components/link-control/link-preview.js.map +1 -1
  65. package/build/components/link-control/search-input.js +1 -9
  66. package/build/components/link-control/search-input.js.map +1 -1
  67. package/build/components/list-view/block-contents.js +3 -1
  68. package/build/components/list-view/block-contents.js.map +1 -1
  69. package/build/components/list-view/block.js +10 -1
  70. package/build/components/list-view/block.js.map +1 -1
  71. package/build/components/list-view/branch.js +29 -8
  72. package/build/components/list-view/branch.js.map +1 -1
  73. package/build/components/list-view/drop-indicator.js +100 -32
  74. package/build/components/list-view/drop-indicator.js.map +1 -1
  75. package/build/components/list-view/index.js +52 -4
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/list-view/leaf.js +2 -2
  78. package/build/components/list-view/leaf.js.map +1 -1
  79. package/build/components/list-view/use-list-view-block-indexes.js +30 -0
  80. package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
  81. package/build/components/list-view/use-list-view-drop-zone.js +56 -5
  82. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  83. package/build/components/list-view/utils.js +92 -0
  84. package/build/components/list-view/utils.js.map +1 -1
  85. package/build/components/provider/index.js +1 -1
  86. package/build/components/provider/index.js.map +1 -1
  87. package/build/components/recursion-provider/index.js +21 -0
  88. package/build/components/recursion-provider/index.js.map +1 -1
  89. package/build/components/rich-text/index.js +30 -6
  90. package/build/components/rich-text/index.js.map +1 -1
  91. package/build/components/rich-text/native/index.native.js +9 -9
  92. package/build/components/rich-text/native/index.native.js.map +1 -1
  93. package/build/components/use-block-drop-zone/index.js +30 -7
  94. package/build/components/use-block-drop-zone/index.js.map +1 -1
  95. package/build/components/use-on-block-drop/index.js +50 -8
  96. package/build/components/use-on-block-drop/index.js.map +1 -1
  97. package/build/hooks/block-hooks.js +5 -14
  98. package/build/hooks/block-hooks.js.map +1 -1
  99. package/build/hooks/content-lock-ui.js +17 -42
  100. package/build/hooks/content-lock-ui.js.map +1 -1
  101. package/build/hooks/effects.js +66 -0
  102. package/build/hooks/effects.js.map +1 -0
  103. package/build/hooks/index.js +15 -2
  104. package/build/hooks/index.js.map +1 -1
  105. package/build/hooks/index.native.js +13 -0
  106. package/build/hooks/index.native.js.map +1 -1
  107. package/build/hooks/style.js +6 -2
  108. package/build/hooks/style.js.map +1 -1
  109. package/build/hooks/supports.js +2 -1
  110. package/build/hooks/supports.js.map +1 -1
  111. package/build/hooks/typography.native.js +2 -2
  112. package/build/hooks/typography.native.js.map +1 -1
  113. package/build/hooks/use-bindings-attributes.js +115 -0
  114. package/build/hooks/use-bindings-attributes.js.map +1 -0
  115. package/build/hooks/use-shadow-props.js +46 -0
  116. package/build/hooks/use-shadow-props.js.map +1 -0
  117. package/build/hooks/utils.js +11 -7
  118. package/build/hooks/utils.js.map +1 -1
  119. package/build/index.js +14 -0
  120. package/build/index.js.map +1 -1
  121. package/build/store/actions.js +10 -6
  122. package/build/store/actions.js.map +1 -1
  123. package/build/store/index.js +2 -0
  124. package/build/store/index.js.map +1 -1
  125. package/build/store/private-actions.js +37 -0
  126. package/build/store/private-actions.js.map +1 -1
  127. package/build/store/private-selectors.js +60 -9
  128. package/build/store/private-selectors.js.map +1 -1
  129. package/build/store/reducer.js +44 -3
  130. package/build/store/reducer.js.map +1 -1
  131. package/build/store/resolvers.js +27 -0
  132. package/build/store/resolvers.js.map +1 -0
  133. package/build/store/selectors.js +94 -56
  134. package/build/store/selectors.js.map +1 -1
  135. package/build/store/utils.js +5 -26
  136. package/build/store/utils.js.map +1 -1
  137. package/build/utils/index.js +0 -16
  138. package/build/utils/index.js.map +1 -1
  139. package/build/utils/math.js +13 -0
  140. package/build/utils/math.js.map +1 -1
  141. package/build/utils/object.js +17 -0
  142. package/build/utils/object.js.map +1 -1
  143. package/build/utils/transform-styles/index.js +37 -27
  144. package/build/utils/transform-styles/index.js.map +1 -1
  145. package/build-module/components/block-draggable/index.js +11 -3
  146. package/build-module/components/block-draggable/index.js.map +1 -1
  147. package/build-module/components/block-edit/context.js +1 -0
  148. package/build-module/components/block-edit/context.js.map +1 -1
  149. package/build-module/components/block-edit/index.js +5 -3
  150. package/build-module/components/block-edit/index.js.map +1 -1
  151. package/build-module/components/block-editing-mode/index.js +7 -4
  152. package/build-module/components/block-editing-mode/index.js.map +1 -1
  153. package/build-module/components/block-inspector/index.js +5 -2
  154. package/build-module/components/block-inspector/index.js.map +1 -1
  155. package/build-module/components/block-list/block.js +6 -5
  156. package/build-module/components/block-list/block.js.map +1 -1
  157. package/build-module/components/block-list/block.native.js +11 -7
  158. package/build-module/components/block-list/block.native.js.map +1 -1
  159. package/build-module/components/block-list/index.js +31 -5
  160. package/build-module/components/block-list/index.js.map +1 -1
  161. package/build-module/components/block-list/private-block-context.js +1 -1
  162. package/build-module/components/block-list/private-block-context.js.map +1 -1
  163. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  164. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  165. package/build-module/components/block-lock/toolbar.js +8 -2
  166. package/build-module/components/block-lock/toolbar.js.map +1 -1
  167. package/build-module/components/block-popover/inbetween.js +15 -3
  168. package/build-module/components/block-popover/inbetween.js.map +1 -1
  169. package/build-module/components/block-preview/auto.js +3 -3
  170. package/build-module/components/block-preview/auto.js.map +1 -1
  171. package/build-module/components/block-removal-warning-modal/index.js +3 -2
  172. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  173. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
  174. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  175. package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
  176. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  177. package/build-module/components/block-switcher/index.js +116 -86
  178. package/build-module/components/block-switcher/index.js.map +1 -1
  179. package/build-module/components/block-tools/insertion-point.js +10 -3
  180. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  181. package/build-module/components/font-sizes/fluid-utils.js +7 -1
  182. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  183. package/build-module/components/global-styles/border-panel.js +5 -14
  184. package/build-module/components/global-styles/border-panel.js.map +1 -1
  185. package/build-module/components/global-styles/effects-panel.js +7 -1
  186. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  187. package/build-module/components/global-styles/hooks.js +3 -2
  188. package/build-module/components/global-styles/hooks.js.map +1 -1
  189. package/build-module/components/global-styles/typography-panel.js +32 -15
  190. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  191. package/build-module/components/iframe/get-compatibility-styles.js +93 -0
  192. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
  193. package/build-module/components/iframe/index.js +2 -3
  194. package/build-module/components/iframe/index.js.map +1 -1
  195. package/build-module/components/index.js +1 -1
  196. package/build-module/components/index.js.map +1 -1
  197. package/build-module/components/index.native.js +1 -1
  198. package/build-module/components/index.native.js.map +1 -1
  199. package/build-module/components/inspector-controls/groups.js +2 -0
  200. package/build-module/components/inspector-controls/groups.js.map +1 -1
  201. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  202. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  203. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  204. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  205. package/build-module/components/link-control/link-preview.js +32 -28
  206. package/build-module/components/link-control/link-preview.js.map +1 -1
  207. package/build-module/components/link-control/search-input.js +1 -8
  208. package/build-module/components/link-control/search-input.js.map +1 -1
  209. package/build-module/components/list-view/block-contents.js +3 -1
  210. package/build-module/components/list-view/block-contents.js.map +1 -1
  211. package/build-module/components/list-view/block.js +10 -1
  212. package/build-module/components/list-view/block.js.map +1 -1
  213. package/build-module/components/list-view/branch.js +30 -9
  214. package/build-module/components/list-view/branch.js.map +1 -1
  215. package/build-module/components/list-view/drop-indicator.js +99 -32
  216. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  217. package/build-module/components/list-view/index.js +54 -6
  218. package/build-module/components/list-view/index.js.map +1 -1
  219. package/build-module/components/list-view/leaf.js +2 -2
  220. package/build-module/components/list-view/leaf.js.map +1 -1
  221. package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
  222. package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
  223. package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
  224. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  225. package/build-module/components/list-view/utils.js +91 -0
  226. package/build-module/components/list-view/utils.js.map +1 -1
  227. package/build-module/components/provider/index.js +1 -1
  228. package/build-module/components/provider/index.js.map +1 -1
  229. package/build-module/components/recursion-provider/index.js +17 -0
  230. package/build-module/components/recursion-provider/index.js.map +1 -1
  231. package/build-module/components/rich-text/index.js +30 -6
  232. package/build-module/components/rich-text/index.js.map +1 -1
  233. package/build-module/components/rich-text/native/index.native.js +9 -9
  234. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  235. package/build-module/components/use-block-drop-zone/index.js +31 -8
  236. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  237. package/build-module/components/use-on-block-drop/index.js +51 -9
  238. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  239. package/build-module/hooks/block-hooks.js +5 -14
  240. package/build-module/hooks/block-hooks.js.map +1 -1
  241. package/build-module/hooks/content-lock-ui.js +19 -43
  242. package/build-module/hooks/content-lock-ui.js.map +1 -1
  243. package/build-module/hooks/effects.js +51 -0
  244. package/build-module/hooks/effects.js.map +1 -0
  245. package/build-module/hooks/index.js +3 -2
  246. package/build-module/hooks/index.js.map +1 -1
  247. package/build-module/hooks/index.native.js +1 -0
  248. package/build-module/hooks/index.native.js.map +1 -1
  249. package/build-module/hooks/style.js +6 -2
  250. package/build-module/hooks/style.js.map +1 -1
  251. package/build-module/hooks/supports.js +2 -1
  252. package/build-module/hooks/supports.js.map +1 -1
  253. package/build-module/hooks/typography.native.js +2 -2
  254. package/build-module/hooks/typography.native.js.map +1 -1
  255. package/build-module/hooks/use-bindings-attributes.js +112 -0
  256. package/build-module/hooks/use-bindings-attributes.js.map +1 -0
  257. package/build-module/hooks/use-shadow-props.js +39 -0
  258. package/build-module/hooks/use-shadow-props.js.map +1 -0
  259. package/build-module/hooks/utils.js +13 -9
  260. package/build-module/hooks/utils.js.map +1 -1
  261. package/build-module/index.js +1 -1
  262. package/build-module/index.js.map +1 -1
  263. package/build-module/store/actions.js +10 -6
  264. package/build-module/store/actions.js.map +1 -1
  265. package/build-module/store/index.js +2 -0
  266. package/build-module/store/index.js.map +1 -1
  267. package/build-module/store/private-actions.js +35 -0
  268. package/build-module/store/private-actions.js.map +1 -1
  269. package/build-module/store/private-selectors.js +53 -8
  270. package/build-module/store/private-selectors.js.map +1 -1
  271. package/build-module/store/reducer.js +43 -3
  272. package/build-module/store/reducer.js.map +1 -1
  273. package/build-module/store/resolvers.js +20 -0
  274. package/build-module/store/resolvers.js.map +1 -0
  275. package/build-module/store/selectors.js +89 -52
  276. package/build-module/store/selectors.js.map +1 -1
  277. package/build-module/store/utils.js +3 -23
  278. package/build-module/store/utils.js.map +1 -1
  279. package/build-module/utils/index.js +0 -1
  280. package/build-module/utils/index.js.map +1 -1
  281. package/build-module/utils/math.js +12 -0
  282. package/build-module/utils/math.js.map +1 -1
  283. package/build-module/utils/object.js +16 -0
  284. package/build-module/utils/object.js.map +1 -1
  285. package/build-module/utils/transform-styles/index.js +36 -27
  286. package/build-module/utils/transform-styles/index.js.map +1 -1
  287. package/build-style/content-rtl.css +33 -16
  288. package/build-style/content.css +33 -16
  289. package/build-style/default-editor-styles-rtl.css +1 -1
  290. package/build-style/default-editor-styles.css +1 -1
  291. package/build-style/style-rtl.css +169 -114
  292. package/build-style/style.css +169 -114
  293. package/package.json +31 -31
  294. package/src/components/block-canvas/style.scss +8 -1
  295. package/src/components/block-draggable/index.js +16 -5
  296. package/src/components/block-edit/context.js +1 -0
  297. package/src/components/block-edit/index.js +4 -0
  298. package/src/components/block-editing-mode/index.js +12 -7
  299. package/src/components/block-inspector/index.js +5 -2
  300. package/src/components/block-list/block.js +5 -4
  301. package/src/components/block-list/block.native.js +13 -3
  302. package/src/components/block-list/content.scss +34 -5
  303. package/src/components/block-list/index.js +52 -16
  304. package/src/components/block-list/private-block-context.js +1 -1
  305. package/src/components/block-list/use-in-between-inserter.js +1 -2
  306. package/src/components/block-lock/toolbar.js +10 -2
  307. package/src/components/block-popover/inbetween.js +22 -2
  308. package/src/components/block-preview/auto.js +3 -3
  309. package/src/components/block-removal-warning-modal/index.js +3 -2
  310. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
  311. package/src/components/block-switcher/block-transformations-menu.js +18 -1
  312. package/src/components/block-switcher/index.js +133 -111
  313. package/src/components/block-switcher/style.scss +6 -4
  314. package/src/components/block-switcher/test/index.js +113 -230
  315. package/src/components/block-toolbar/style.scss +22 -18
  316. package/src/components/block-tools/insertion-point.js +15 -2
  317. package/src/components/block-tools/style.scss +8 -7
  318. package/src/components/font-sizes/fluid-utils.js +8 -2
  319. package/src/components/font-sizes/test/fluid-utils.js +9 -0
  320. package/src/components/global-styles/border-panel.js +7 -17
  321. package/src/components/global-styles/effects-panel.js +16 -1
  322. package/src/components/global-styles/hooks.js +2 -0
  323. package/src/components/global-styles/typography-panel.js +45 -13
  324. package/src/components/iframe/get-compatibility-styles.js +120 -0
  325. package/src/components/iframe/index.js +2 -3
  326. package/src/components/index.js +4 -2
  327. package/src/components/index.native.js +4 -2
  328. package/src/components/inspector-controls/groups.js +2 -0
  329. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  330. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
  331. package/src/components/link-control/link-preview.js +31 -55
  332. package/src/components/link-control/search-input.js +1 -9
  333. package/src/components/link-control/style.scss +31 -85
  334. package/src/components/link-control/test/index.js +2 -1
  335. package/src/components/list-view/block-contents.js +5 -1
  336. package/src/components/list-view/block.js +9 -0
  337. package/src/components/list-view/branch.js +30 -10
  338. package/src/components/list-view/drop-indicator.js +139 -46
  339. package/src/components/list-view/index.js +74 -3
  340. package/src/components/list-view/leaf.js +2 -2
  341. package/src/components/list-view/style.scss +102 -13
  342. package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
  343. package/src/components/list-view/test/utils.js +218 -1
  344. package/src/components/list-view/use-list-view-block-indexes.js +29 -0
  345. package/src/components/list-view/use-list-view-drop-zone.js +78 -6
  346. package/src/components/list-view/utils.js +116 -0
  347. package/src/components/provider/index.js +3 -1
  348. package/src/components/recursion-provider/README.md +2 -2
  349. package/src/components/recursion-provider/index.js +17 -0
  350. package/src/components/rich-text/index.js +48 -10
  351. package/src/components/rich-text/native/index.native.js +10 -10
  352. package/src/components/use-block-drop-zone/index.js +60 -19
  353. package/src/components/use-block-drop-zone/test/index.js +32 -61
  354. package/src/components/use-on-block-drop/index.js +92 -11
  355. package/src/hooks/block-hooks.js +5 -17
  356. package/src/hooks/content-lock-ui.js +15 -55
  357. package/src/hooks/effects.js +57 -0
  358. package/src/hooks/index.js +2 -2
  359. package/src/hooks/index.native.js +1 -0
  360. package/src/hooks/style.js +8 -0
  361. package/src/hooks/supports.js +2 -0
  362. package/src/hooks/test/effects.js +39 -0
  363. package/src/hooks/typography.native.js +2 -2
  364. package/src/hooks/use-bindings-attributes.js +148 -0
  365. package/src/hooks/use-shadow-props.js +37 -0
  366. package/src/hooks/utils.js +26 -10
  367. package/src/index.js +2 -0
  368. package/src/store/actions.js +9 -4
  369. package/src/store/index.js +2 -0
  370. package/src/store/private-actions.js +32 -0
  371. package/src/store/private-selectors.js +78 -21
  372. package/src/store/reducer.js +49 -2
  373. package/src/store/resolvers.js +17 -0
  374. package/src/store/selectors.js +169 -161
  375. package/src/store/test/registry-selectors.js +431 -0
  376. package/src/store/test/selectors.js +14 -400
  377. package/src/store/utils.js +10 -33
  378. package/src/style.scss +0 -1
  379. package/src/utils/index.js +0 -1
  380. package/src/utils/math.js +12 -0
  381. package/src/utils/object.js +16 -0
  382. package/src/utils/transform-styles/index.js +52 -37
  383. package/tsconfig.tsbuildinfo +1 -1
  384. package/build/components/iframe/use-compatibility-styles.js +0 -100
  385. package/build/components/iframe/use-compatibility-styles.js.map +0 -1
  386. package/build/hooks/custom-fields.js +0 -106
  387. package/build/hooks/custom-fields.js.map +0 -1
  388. package/build/utils/block-variation-transforms.js +0 -42
  389. package/build/utils/block-variation-transforms.js.map +0 -1
  390. package/build-module/components/iframe/use-compatibility-styles.js +0 -94
  391. package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
  392. package/build-module/hooks/custom-fields.js +0 -99
  393. package/build-module/hooks/custom-fields.js.map +0 -1
  394. package/build-module/utils/block-variation-transforms.js +0 -35
  395. package/build-module/utils/block-variation-transforms.js.map +0 -1
  396. package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
  397. package/src/components/contrast-checker/style.scss +0 -3
  398. package/src/components/iframe/use-compatibility-styles.js +0 -122
  399. package/src/hooks/custom-fields.js +0 -115
  400. package/src/utils/block-variation-transforms.js +0 -38
  401. package/src/utils/test/block-variation-transforms.js +0 -94
@@ -1 +1 @@
1
- {"version":3,"names":["useResizeObserver","pure","useRefEffect","useSelect","useMemo","Disabled","BlockList","Iframe","EditorStyles","store","MemoizedBlockList","MAX_HEIGHT","ScaledBlockPreview","viewportWidth","containerWidth","minHeight","additionalStyles","contentResizeListener","height","contentHeight","styles","select","settings","getSettings","editorStyles","css","__unstableType","scale","aspectRatio","createElement","className","style","transform","maxHeight","undefined","contentRef","bodyElement","ownerDocument","documentElement","classList","add","position","width","boxSizing","tabIndex","pointerEvents","renderAppender","AutoBlockPreview","props","containerResizeListener","Fragment"],"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { Disabled } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nconst MAX_HEIGHT = 2000;\n\nfunction ScaledBlockPreview( {\n\tviewportWidth,\n\tcontainerWidth,\n\tminHeight,\n\tadditionalStyles = [],\n} ) {\n\tif ( ! viewportWidth ) {\n\t\tviewportWidth = containerWidth;\n\t}\n\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst { styles } = useSelect( ( select ) => {\n\t\tconst settings = select( store ).getSettings();\n\t\treturn {\n\t\t\tstyles: settings.styles,\n\t\t};\n\t}, [] );\n\n\t// Avoid scrollbars for pattern previews.\n\tconst editorStyles = useMemo( () => {\n\t\tif ( styles ) {\n\t\t\treturn [\n\t\t\t\t...styles,\n\t\t\t\t{\n\t\t\t\t\tcss: 'body{height:auto;overflow:hidden;border:none;padding:0;}',\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t\t},\n\t\t\t\t...additionalStyles,\n\t\t\t];\n\t\t}\n\n\t\treturn styles;\n\t}, [ styles, additionalStyles ] );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || pure( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\tconst aspectRatio = contentHeight\n\t\t? containerWidth / ( contentHeight * scale )\n\t\t: 0;\n\treturn (\n\t\t<Disabled\n\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\tstyle={ {\n\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t// Using width + aspect-ratio instead of height here triggers browsers' native\n\t\t\t\t// handling of scrollbar's visibility. It prevents the flickering issue seen\n\t\t\t\t// in https://github.com/WordPress/gutenberg/issues/52027.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/52921 for more info.\n\t\t\t\taspectRatio,\n\t\t\t\tmaxHeight:\n\t\t\t\t\tcontentHeight > MAX_HEIGHT ? MAX_HEIGHT * scale : undefined,\n\t\t\t\tminHeight,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t} = bodyElement;\n\t\t\t\t\tdocumentElement.classList.add(\n\t\t\t\t\t\t'block-editor-block-preview__content-iframe'\n\t\t\t\t\t);\n\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\tdocumentElement.style.width = '100%';\n\n\t\t\t\t\t// Necessary for contentResizeListener to work.\n\t\t\t\t\tbodyElement.style.boxSizing = 'border-box';\n\t\t\t\t\tbodyElement.style.position = 'absolute';\n\t\t\t\t\tbodyElement.style.width = '100%';\n\t\t\t\t}, [] ) }\n\t\t\t\taria-hidden\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tstyle={ {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\theight: contentHeight,\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t// This is a catch-all max-height for patterns.\n\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/38175.\n\t\t\t\t\tmaxHeight: MAX_HEIGHT,\n\t\t\t\t\tminHeight:\n\t\t\t\t\t\tscale !== 0 && scale < 1 && minHeight\n\t\t\t\t\t\t\t? minHeight / scale\n\t\t\t\t\t\t\t: minHeight,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<EditorStyles styles={ editorStyles } />\n\t\t\t\t{ contentResizeListener }\n\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t</Iframe>\n\t\t</Disabled>\n\t);\n}\n\nexport default function AutoBlockPreview( props ) {\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\n\treturn (\n\t\t<>\n\t\t\t<div style={ { position: 'relative', width: '100%', height: 0 } }>\n\t\t\t\t{ containerResizeListener }\n\t\t\t</div>\n\t\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t\t{ !! containerWidth && (\n\t\t\t\t\t<ScaledBlockPreview\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\tcontainerWidth={ containerWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useResizeObserver","useRefEffect","useSelect","memo","useMemo","Disabled","BlockList","Iframe","EditorStyles","store","MemoizedBlockList","MAX_HEIGHT","ScaledBlockPreview","viewportWidth","containerWidth","minHeight","additionalStyles","contentResizeListener","height","contentHeight","styles","select","settings","getSettings","editorStyles","css","__unstableType","scale","aspectRatio","createElement","className","style","transform","maxHeight","undefined","contentRef","bodyElement","ownerDocument","documentElement","classList","add","position","width","boxSizing","tabIndex","pointerEvents","renderAppender","AutoBlockPreview","props","containerResizeListener","Fragment"],"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useResizeObserver, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { memo, useMemo } from '@wordpress/element';\nimport { Disabled } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nconst MAX_HEIGHT = 2000;\n\nfunction ScaledBlockPreview( {\n\tviewportWidth,\n\tcontainerWidth,\n\tminHeight,\n\tadditionalStyles = [],\n} ) {\n\tif ( ! viewportWidth ) {\n\t\tviewportWidth = containerWidth;\n\t}\n\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst { styles } = useSelect( ( select ) => {\n\t\tconst settings = select( store ).getSettings();\n\t\treturn {\n\t\t\tstyles: settings.styles,\n\t\t};\n\t}, [] );\n\n\t// Avoid scrollbars for pattern previews.\n\tconst editorStyles = useMemo( () => {\n\t\tif ( styles ) {\n\t\t\treturn [\n\t\t\t\t...styles,\n\t\t\t\t{\n\t\t\t\t\tcss: 'body{height:auto;overflow:hidden;border:none;padding:0;}',\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t\t},\n\t\t\t\t...additionalStyles,\n\t\t\t];\n\t\t}\n\n\t\treturn styles;\n\t}, [ styles, additionalStyles ] );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || memo( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\tconst aspectRatio = contentHeight\n\t\t? containerWidth / ( contentHeight * scale )\n\t\t: 0;\n\treturn (\n\t\t<Disabled\n\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\tstyle={ {\n\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t// Using width + aspect-ratio instead of height here triggers browsers' native\n\t\t\t\t// handling of scrollbar's visibility. It prevents the flickering issue seen\n\t\t\t\t// in https://github.com/WordPress/gutenberg/issues/52027.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/52921 for more info.\n\t\t\t\taspectRatio,\n\t\t\t\tmaxHeight:\n\t\t\t\t\tcontentHeight > MAX_HEIGHT ? MAX_HEIGHT * scale : undefined,\n\t\t\t\tminHeight,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t} = bodyElement;\n\t\t\t\t\tdocumentElement.classList.add(\n\t\t\t\t\t\t'block-editor-block-preview__content-iframe'\n\t\t\t\t\t);\n\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\tdocumentElement.style.width = '100%';\n\n\t\t\t\t\t// Necessary for contentResizeListener to work.\n\t\t\t\t\tbodyElement.style.boxSizing = 'border-box';\n\t\t\t\t\tbodyElement.style.position = 'absolute';\n\t\t\t\t\tbodyElement.style.width = '100%';\n\t\t\t\t}, [] ) }\n\t\t\t\taria-hidden\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tstyle={ {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\theight: contentHeight,\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t// This is a catch-all max-height for patterns.\n\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/38175.\n\t\t\t\t\tmaxHeight: MAX_HEIGHT,\n\t\t\t\t\tminHeight:\n\t\t\t\t\t\tscale !== 0 && scale < 1 && minHeight\n\t\t\t\t\t\t\t? minHeight / scale\n\t\t\t\t\t\t\t: minHeight,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<EditorStyles styles={ editorStyles } />\n\t\t\t\t{ contentResizeListener }\n\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t</Iframe>\n\t\t</Disabled>\n\t);\n}\n\nexport default function AutoBlockPreview( props ) {\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\n\treturn (\n\t\t<>\n\t\t\t<div style={ { position: 'relative', width: '100%', height: 0 } }>\n\t\t\t\t{ containerResizeListener }\n\t\t\t</div>\n\t\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t\t{ !! containerWidth && (\n\t\t\t\t\t<ScaledBlockPreview\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\tcontainerWidth={ containerWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -43,8 +43,9 @@ export function BlockRemovalWarningModal({
43
43
  };
44
44
  return createElement(Modal, {
45
45
  title: __('Be careful!'),
46
- onRequestClose: clearBlockRemovalPrompt
47
- }, createElement("p", null, _n('Post or page content will not be displayed if you delete this block.', 'Post or page content will not be displayed if you delete these blocks.', blockNamesForPrompt.length)), createElement(HStack, {
46
+ onRequestClose: clearBlockRemovalPrompt,
47
+ size: "medium"
48
+ }, createElement("p", null, _n('Deleting this block will stop your post or page content from displaying on this template. It is not recommended.', 'Deleting these blocks will stop your post or page content from displaying on this template. It is not recommended.', blockNamesForPrompt.length)), createElement(HStack, {
48
49
  justify: "right"
49
50
  }, createElement(Button, {
50
51
  variant: "tertiary",
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useDispatch","useSelect","Modal","Button","__experimentalHStack","HStack","__","_n","store","blockEditorStore","unlock","BlockRemovalWarningModal","rules","clientIds","selectPrevious","blockNamesForPrompt","select","getRemovalPromptData","clearBlockRemovalPrompt","setBlockRemovalRules","privateRemoveBlocks","onConfirmRemoval","createElement","title","onRequestClose","length","justify","variant","onClick"],"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __, _n } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function BlockRemovalWarningModal( { rules } ) {\n\tconst { clientIds, selectPrevious, blockNamesForPrompt } = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearBlockRemovalPrompt,\n\t\tsetBlockRemovalRules,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Load block removal rules, simultaneously signalling that the block\n\t// removal prompt is in place.\n\tuseEffect( () => {\n\t\tsetBlockRemovalRules( rules );\n\t\treturn () => {\n\t\t\tsetBlockRemovalRules();\n\t\t};\n\t}, [ rules, setBlockRemovalRules ] );\n\n\tif ( ! blockNamesForPrompt ) {\n\t\treturn;\n\t}\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearBlockRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Be careful!' ) }\n\t\t\tonRequestClose={ clearBlockRemovalPrompt }\n\t\t>\n\t\t\t<p>\n\t\t\t\t{ _n(\n\t\t\t\t\t'Post or page content will not be displayed if you delete this block.',\n\t\t\t\t\t'Post or page content will not be displayed if you delete these blocks.',\n\t\t\t\t\tblockNamesForPrompt.length\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<HStack justify=\"right\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ clearBlockRemovalPrompt }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" onClick={ onConfirmRemoval }>\n\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</Modal>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SACCC,KAAK,EACLC,MAAM,EACNC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,SAASC,wBAAwBA,CAAE;EAAEC;AAAM,CAAC,EAAG;EACrD,MAAM;IAAEC,SAAS;IAAEC,cAAc;IAAEC;EAAoB,CAAC,GAAGd,SAAS,CACjEe,MAAM,IACPN,MAAM,CAAEM,MAAM,CAAEP,gBAAiB,CAAE,CAAC,CAACQ,oBAAoB,CAAC,CAC5D,CAAC;EAED,MAAM;IACLC,uBAAuB;IACvBC,oBAAoB;IACpBC;EACD,CAAC,GAAGV,MAAM,CAAEV,WAAW,CAAES,gBAAiB,CAAE,CAAC;;EAE7C;EACA;EACAV,SAAS,CAAE,MAAM;IAChBoB,oBAAoB,CAAEP,KAAM,CAAC;IAC7B,OAAO,MAAM;MACZO,oBAAoB,CAAC,CAAC;IACvB,CAAC;EACF,CAAC,EAAE,CAAEP,KAAK,EAAEO,oBAAoB,CAAG,CAAC;EAEpC,IAAK,CAAEJ,mBAAmB,EAAG;IAC5B;EACD;EAEA,MAAMM,gBAAgB,GAAGA,CAAA,KAAM;IAC9BD,mBAAmB,CAAEP,SAAS,EAAEC,cAAc,EAAE,WAAY,IAAK,CAAC;IAClEI,uBAAuB,CAAC,CAAC;EAC1B,CAAC;EAED,OACCI,aAAA,CAACpB,KAAK;IACLqB,KAAK,EAAGjB,EAAE,CAAE,aAAc,CAAG;IAC7BkB,cAAc,EAAGN;EAAyB,GAE1CI,aAAA,YACGf,EAAE,CACH,sEAAsE,EACtE,wEAAwE,EACxEQ,mBAAmB,CAACU,MACrB,CACE,CAAC,EACJH,aAAA,CAACjB,MAAM;IAACqB,OAAO,EAAC;EAAO,GACtBJ,aAAA,CAACnB,MAAM;IAACwB,OAAO,EAAC,UAAU;IAACC,OAAO,EAAGV;EAAyB,GAC3DZ,EAAE,CAAE,QAAS,CACR,CAAC,EACTgB,aAAA,CAACnB,MAAM;IAACwB,OAAO,EAAC,SAAS;IAACC,OAAO,EAAGP;EAAkB,GACnDf,EAAE,CAAE,QAAS,CACR,CACD,CACF,CAAC;AAEV"}
1
+ {"version":3,"names":["useEffect","useDispatch","useSelect","Modal","Button","__experimentalHStack","HStack","__","_n","store","blockEditorStore","unlock","BlockRemovalWarningModal","rules","clientIds","selectPrevious","blockNamesForPrompt","select","getRemovalPromptData","clearBlockRemovalPrompt","setBlockRemovalRules","privateRemoveBlocks","onConfirmRemoval","createElement","title","onRequestClose","size","length","justify","variant","onClick"],"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __, _n } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function BlockRemovalWarningModal( { rules } ) {\n\tconst { clientIds, selectPrevious, blockNamesForPrompt } = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearBlockRemovalPrompt,\n\t\tsetBlockRemovalRules,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Load block removal rules, simultaneously signalling that the block\n\t// removal prompt is in place.\n\tuseEffect( () => {\n\t\tsetBlockRemovalRules( rules );\n\t\treturn () => {\n\t\t\tsetBlockRemovalRules();\n\t\t};\n\t}, [ rules, setBlockRemovalRules ] );\n\n\tif ( ! blockNamesForPrompt ) {\n\t\treturn;\n\t}\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearBlockRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Be careful!' ) }\n\t\t\tonRequestClose={ clearBlockRemovalPrompt }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<p>\n\t\t\t\t{ _n(\n\t\t\t\t\t'Deleting this block will stop your post or page content from displaying on this template. It is not recommended.',\n\t\t\t\t\t'Deleting these blocks will stop your post or page content from displaying on this template. It is not recommended.',\n\t\t\t\t\tblockNamesForPrompt.length\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<HStack justify=\"right\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ clearBlockRemovalPrompt }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" onClick={ onConfirmRemoval }>\n\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</Modal>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SACCC,KAAK,EACLC,MAAM,EACNC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,SAASC,wBAAwBA,CAAE;EAAEC;AAAM,CAAC,EAAG;EACrD,MAAM;IAAEC,SAAS;IAAEC,cAAc;IAAEC;EAAoB,CAAC,GAAGd,SAAS,CACjEe,MAAM,IACPN,MAAM,CAAEM,MAAM,CAAEP,gBAAiB,CAAE,CAAC,CAACQ,oBAAoB,CAAC,CAC5D,CAAC;EAED,MAAM;IACLC,uBAAuB;IACvBC,oBAAoB;IACpBC;EACD,CAAC,GAAGV,MAAM,CAAEV,WAAW,CAAES,gBAAiB,CAAE,CAAC;;EAE7C;EACA;EACAV,SAAS,CAAE,MAAM;IAChBoB,oBAAoB,CAAEP,KAAM,CAAC;IAC7B,OAAO,MAAM;MACZO,oBAAoB,CAAC,CAAC;IACvB,CAAC;EACF,CAAC,EAAE,CAAEP,KAAK,EAAEO,oBAAoB,CAAG,CAAC;EAEpC,IAAK,CAAEJ,mBAAmB,EAAG;IAC5B;EACD;EAEA,MAAMM,gBAAgB,GAAGA,CAAA,KAAM;IAC9BD,mBAAmB,CAAEP,SAAS,EAAEC,cAAc,EAAE,WAAY,IAAK,CAAC;IAClEI,uBAAuB,CAAC,CAAC;EAC1B,CAAC;EAED,OACCI,aAAA,CAACpB,KAAK;IACLqB,KAAK,EAAGjB,EAAE,CAAE,aAAc,CAAG;IAC7BkB,cAAc,EAAGN,uBAAyB;IAC1CO,IAAI,EAAC;EAAQ,GAEbH,aAAA,YACGf,EAAE,CACH,kHAAkH,EAClH,oHAAoH,EACpHQ,mBAAmB,CAACW,MACrB,CACE,CAAC,EACJJ,aAAA,CAACjB,MAAM;IAACsB,OAAO,EAAC;EAAO,GACtBL,aAAA,CAACnB,MAAM;IAACyB,OAAO,EAAC,UAAU;IAACC,OAAO,EAAGX;EAAyB,GAC3DZ,EAAE,CAAE,QAAS,CACR,CAAC,EACTgB,aAAA,CAACnB,MAAM;IAACyB,OAAO,EAAC,SAAS;IAACC,OAAO,EAAGR;EAAkB,GACnDf,EAAE,CAAE,QAAS,CACR,CACD,CACF,CAAC;AAEV"}
@@ -32,8 +32,7 @@ function CopyMenuItem({
32
32
  label
33
33
  }) {
34
34
  const ref = useCopyToClipboard(() => serialize(blocks), onCopy);
35
- const copyMenuItemBlocksLabel = blocks.length > 1 ? __('Copy blocks') : __('Copy');
36
- const copyMenuItemLabel = label ? label : copyMenuItemBlocksLabel;
35
+ const copyMenuItemLabel = label ? label : __('Copy');
37
36
  return createElement(MenuItem, {
38
37
  ref: ref
39
38
  }, copyMenuItemLabel);
@@ -151,7 +150,6 @@ export function BlockSettingsDropdown({
151
150
  __experimentalSelectBlock(blockToFocus, shouldUpdateSelection);
152
151
  }
153
152
  }, [__experimentalSelectBlock, previousBlockClientId, firstParentClientId, getBlockOrder, hasSelectedBlocks, getSelectedBlockClientIds]);
154
- const removeBlockLabel = count === 1 ? __('Delete') : __('Delete blocks');
155
153
 
156
154
  // This can occur when the selected block (the parent)
157
155
  // displays child blocks within a List View.
@@ -268,7 +266,7 @@ export function BlockSettingsDropdown({
268
266
  })), canRemove && createElement(MenuGroup, null, createElement(MenuItem, {
269
267
  onClick: pipe(onClose, onRemove, updateSelectionAfterRemove),
270
268
  shortcut: shortcuts.remove
271
- }, removeBlockLabel)))));
269
+ }, __('Delete'))))));
272
270
  }
273
271
  export default BlockSettingsDropdown;
274
272
  //# sourceMappingURL=block-settings-dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","sprintf","keyboardShortcutsStore","__unstableUseShortcutEventMatch","pipe","useCopyToClipboard","useViewportMatch","BlockActions","BlockIcon","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","unlock","useShowHoveredOrFocusedGestures","POPOVER_PROPS","className","placement","CopyMenuItem","blocks","onCopy","label","ref","copyMenuItemBlocksLabel","length","copyMenuItemLabel","createElement","ParentSelectorMenuItem","parentClientId","parentBlockType","isSmallViewport","selectBlock","menuItemRef","gesturesProps","highlightParent","icon","onClick","title","BlockSettingsDropdown","block","clientIds","__experimentalSelectBlock","children","__unstableDisplayLocation","props","currentClientId","clientId","blockClientIds","Array","isArray","count","firstBlockClientId","firstParentClientId","onlyBlock","previousBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","openedBlockSettingsMenu","getOpenedBlockSettingsMenu","setOpenedBlockSettingsMenu","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","isMatch","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","removeBlockLabel","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","popoverProps","noIcons","menuProps","onKeyDown","event","defaultPrevented","preventDefault","onClose","Fragment","Slot","fillProps","shortcut","map","child"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tChildren,\n\tcloneElement,\n\tuseCallback,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard, useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockIcon from '../block-icon';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { blocks, onCopy, label } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\tconst copyMenuItemBlocksLabel =\n\t\tblocks.length > 1 ? __( 'Copy blocks' ) : __( 'Copy' );\n\tconst copyMenuItemLabel = label ? label : copyMenuItemBlocksLabel;\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;\n}\n\nfunction ParentSelectorMenuItem( { parentClientId, parentBlockType } ) {\n\tconst isSmallViewport = useViewportMatch( 'medium', '<' );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst menuItemRef = useRef();\n\tconst gesturesProps = useShowHoveredOrFocusedGestures( {\n\t\tref: menuItemRef,\n\t\thighlightParent: true,\n\t} );\n\n\tif ( ! isSmallViewport ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...gesturesProps }\n\t\t\tref={ menuItemRef }\n\t\t\ticon={ <BlockIcon icon={ parentBlockType.icon } /> }\n\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t__( 'Select parent block (%s)' ),\n\t\t\t\tparentBlockType.title\n\t\t\t) }\n\t\t</MenuItem>\n\t);\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t__unstableDisplayLocation,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst blockClientIds = Array.isArray( clientIds )\n\t\t? clientIds\n\t\t: [ clientIds ];\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst openedBlockSettingsMenu = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getOpenedBlockSettingsMenu(),\n\t\t[]\n\t);\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\tasync ( clientIdsPromise ) => {\n\t\t\tif ( __experimentalSelectBlock ) {\n\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst updateSelectionAfterRemove = useCallback( () => {\n\t\tif ( __experimentalSelectBlock ) {\n\t\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t\t// Focus the first block if there's no previous block nor parent block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\t// Only update the selection if the original selection is removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t\t}\n\t}, [\n\t\t__experimentalSelectBlock,\n\t\tpreviousBlockClientId,\n\t\tfirstParentClientId,\n\t\tgetBlockOrder,\n\t\thasSelectedBlocks,\n\t\tgetSelectedBlockClientIds,\n\t] );\n\n\tconst removeBlockLabel =\n\t\tcount === 1 ? __( 'Delete' ) : __( 'Delete blocks' );\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tconst onToggle = useCallback(\n\t\t( localOpen ) => {\n\t\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t\t} else if (\n\t\t\t\t! localOpen &&\n\t\t\t\topenedBlockSettingsMenu &&\n\t\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t\t) {\n\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t}\n\t\t},\n\t\t[ currentClientId, openedBlockSettingsMenu, setOpenedBlockSettingsMenu ]\n\t);\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\topen={ open }\n\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove( onRemove() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertBefore();\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\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<ParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\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{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t__unstableDisplayLocation={\n\t\t\t\t\t\t\t\t\t__unstableDisplayLocation\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{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ removeBlockLabel }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\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</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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"}
1
+ {"version":3,"names":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","sprintf","keyboardShortcutsStore","__unstableUseShortcutEventMatch","pipe","useCopyToClipboard","useViewportMatch","BlockActions","BlockIcon","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","unlock","useShowHoveredOrFocusedGestures","POPOVER_PROPS","className","placement","CopyMenuItem","blocks","onCopy","label","ref","copyMenuItemLabel","createElement","ParentSelectorMenuItem","parentClientId","parentBlockType","isSmallViewport","selectBlock","menuItemRef","gesturesProps","highlightParent","icon","onClick","title","BlockSettingsDropdown","block","clientIds","__experimentalSelectBlock","children","__unstableDisplayLocation","props","currentClientId","clientId","blockClientIds","Array","isArray","count","length","firstBlockClientId","firstParentClientId","onlyBlock","previousBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","openedBlockSettingsMenu","getOpenedBlockSettingsMenu","setOpenedBlockSettingsMenu","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","isMatch","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","popoverProps","noIcons","menuProps","onKeyDown","event","defaultPrevented","preventDefault","onClose","Fragment","Slot","fillProps","shortcut","map","child"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tChildren,\n\tcloneElement,\n\tuseCallback,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard, useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockIcon from '../block-icon';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { blocks, onCopy, label } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\tconst copyMenuItemLabel = label ? label : __( 'Copy' );\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;\n}\n\nfunction ParentSelectorMenuItem( { parentClientId, parentBlockType } ) {\n\tconst isSmallViewport = useViewportMatch( 'medium', '<' );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst menuItemRef = useRef();\n\tconst gesturesProps = useShowHoveredOrFocusedGestures( {\n\t\tref: menuItemRef,\n\t\thighlightParent: true,\n\t} );\n\n\tif ( ! isSmallViewport ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...gesturesProps }\n\t\t\tref={ menuItemRef }\n\t\t\ticon={ <BlockIcon icon={ parentBlockType.icon } /> }\n\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t__( 'Select parent block (%s)' ),\n\t\t\t\tparentBlockType.title\n\t\t\t) }\n\t\t</MenuItem>\n\t);\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t__unstableDisplayLocation,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst blockClientIds = Array.isArray( clientIds )\n\t\t? clientIds\n\t\t: [ clientIds ];\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst openedBlockSettingsMenu = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getOpenedBlockSettingsMenu(),\n\t\t[]\n\t);\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\tasync ( clientIdsPromise ) => {\n\t\t\tif ( __experimentalSelectBlock ) {\n\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst updateSelectionAfterRemove = useCallback( () => {\n\t\tif ( __experimentalSelectBlock ) {\n\t\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t\t// Focus the first block if there's no previous block nor parent block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\t// Only update the selection if the original selection is removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t\t}\n\t}, [\n\t\t__experimentalSelectBlock,\n\t\tpreviousBlockClientId,\n\t\tfirstParentClientId,\n\t\tgetBlockOrder,\n\t\thasSelectedBlocks,\n\t\tgetSelectedBlockClientIds,\n\t] );\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tconst onToggle = useCallback(\n\t\t( localOpen ) => {\n\t\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t\t} else if (\n\t\t\t\t! localOpen &&\n\t\t\t\topenedBlockSettingsMenu &&\n\t\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t\t) {\n\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t}\n\t\t},\n\t\t[ currentClientId, openedBlockSettingsMenu, setOpenedBlockSettingsMenu ]\n\t);\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\topen={ open }\n\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove( onRemove() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertBefore();\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\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<ParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\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{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t__unstableDisplayLocation={\n\t\t\t\t\t\t\t\t\t__unstableDisplayLocation\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{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\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</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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"}
@@ -33,7 +33,7 @@ function useGroupedTransforms(possibleBlockTransformations) {
33
33
  };
34
34
  const transformations = useMemo(() => {
35
35
  const priorityTextTranformsNames = Object.keys(priorityContentTranformationBlocks);
36
- return possibleBlockTransformations.reduce((accumulator, item) => {
36
+ const groupedPossibleTransforms = possibleBlockTransformations.reduce((accumulator, item) => {
37
37
  const {
38
38
  name
39
39
  } = item;
@@ -47,6 +47,17 @@ function useGroupedTransforms(possibleBlockTransformations) {
47
47
  priorityTextTransformations: [],
48
48
  restTransformations: []
49
49
  });
50
+ /**
51
+ * If there is only one priority text transformation and it's a Quote,
52
+ * is should move to the rest transformations. This is because Quote can
53
+ * be a container for any block type, so in multi-block selection it will
54
+ * always be suggested, even for non-text blocks.
55
+ */
56
+ if (groupedPossibleTransforms.priorityTextTransformations.length === 1 && groupedPossibleTransforms.priorityTextTransformations[0].name === 'core/quote') {
57
+ const singleQuote = groupedPossibleTransforms.priorityTextTransformations.pop();
58
+ groupedPossibleTransforms.restTransformations.push(singleQuote);
59
+ }
60
+ return groupedPossibleTransforms;
50
61
  }, [possibleBlockTransformations]);
51
62
 
52
63
  // Order the priority text transformations.
@@ -1 +1 @@
1
- {"version":3,"names":["__","MenuGroup","MenuItem","getBlockMenuDefaultClassName","switchToBlockType","useState","useMemo","BlockIcon","PreviewBlockPopover","BlockVariationTransformations","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","createElement","RestTransformationItems","Fragment","label","map","BlockTranformationItem","key","icon","title","isDisabled","onClick","event","preventDefault","disabled","onMouseLeave","onMouseEnter","showColors"],"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"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"],"mappings":"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"}
1
+ {"version":3,"names":["__","MenuGroup","MenuItem","getBlockMenuDefaultClassName","switchToBlockType","useState","useMemo","BlockIcon","PreviewBlockPopover","BlockVariationTransformations","useGroupedTransforms","possibleBlockTransformations","priorityContentTranformationBlocks","transformations","priorityTextTranformsNames","Object","keys","groupedPossibleTransforms","reduce","accumulator","item","name","includes","priorityTextTransformations","push","restTransformations","length","singleQuote","pop","sort","currentName","nextName","BlockTransformationsMenu","className","possibleBlockVariationTransformations","onSelect","onSelectVariation","blocks","hoveredTransformItemName","setHoveredTransformItemName","hasBothContentTransformations","restTransformItems","createElement","RestTransformationItems","Fragment","label","map","BlockTranformationItem","key","icon","title","isDisabled","onClick","event","preventDefault","disabled","onMouseLeave","onMouseEnter","showColors"],"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"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\tconst groupedPossibleTransforms = 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\t/**\n\t\t * If there is only one priority text transformation and it's a Quote,\n\t\t * is should move to the rest transformations. This is because Quote can\n\t\t * be a container for any block type, so in multi-block selection it will\n\t\t * always be suggested, even for non-text blocks.\n\t\t */\n\t\tif (\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations.length ===\n\t\t\t\t1 &&\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations[ 0 ].name ===\n\t\t\t\t'core/quote'\n\t\t) {\n\t\t\tconst singleQuote =\n\t\t\t\tgroupedPossibleTransforms.priorityTextTransformations.pop();\n\t\t\tgroupedPossibleTransforms.restTransformations.push( singleQuote );\n\t\t}\n\t\treturn groupedPossibleTransforms;\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"],"mappings":"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"}
@@ -19,75 +19,45 @@ import { useBlockVariationTransforms } from './block-variation-transformations';
19
19
  import BlockStylesMenu from './block-styles-menu';
20
20
  import PatternTransformationsMenu from './pattern-transformations-menu';
21
21
  import useBlockDisplayTitle from '../block-title/use-block-display-title';
22
- export const BlockSwitcherDropdownMenu = ({
22
+ function BlockSwitcherDropdownMenuContents({
23
+ onClose,
23
24
  clientIds,
24
- blocks
25
- }) => {
25
+ hasBlockStyles,
26
+ canRemove
27
+ }) {
26
28
  const {
27
29
  replaceBlocks,
28
30
  multiSelect,
29
31
  updateBlockAttributes
30
32
  } = useDispatch(blockEditorStore);
31
- const blockInformation = useBlockDisplayInformation(blocks[0].clientId);
32
33
  const {
33
34
  possibleBlockTransformations,
34
- canRemove,
35
- hasBlockStyles,
36
- icon,
37
- patterns
35
+ patterns,
36
+ blocks
38
37
  } = useSelect(select => {
39
38
  const {
39
+ getBlocksByClientId,
40
40
  getBlockRootClientId,
41
41
  getBlockTransformItems,
42
- __experimentalGetPatternTransformItems,
43
- canRemoveBlocks
42
+ __experimentalGetPatternTransformItems
44
43
  } = select(blockEditorStore);
45
- const {
46
- getBlockStyles,
47
- getBlockType
48
- } = select(blocksStore);
49
44
  const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
50
- const [{
51
- name: firstBlockName
52
- }] = blocks;
53
- const _isSingleBlockSelected = blocks.length === 1;
54
- const styles = _isSingleBlockSelected && getBlockStyles(firstBlockName);
55
- let _icon;
56
- if (_isSingleBlockSelected) {
57
- _icon = blockInformation?.icon; // Take into account active block variations.
58
- } else {
59
- const isSelectionOfSameType = new Set(blocks.map(({
60
- name
61
- }) => name)).size === 1;
62
- // When selection consists of blocks of multiple types, display an
63
- // appropriate icon to communicate the non-uniformity.
64
- _icon = isSelectionOfSameType ? getBlockType(firstBlockName)?.icon : copy;
65
- }
45
+ const _blocks = getBlocksByClientId(clientIds);
66
46
  return {
67
- possibleBlockTransformations: getBlockTransformItems(blocks, rootClientId),
68
- canRemove: canRemoveBlocks(clientIds, rootClientId),
69
- hasBlockStyles: !!styles?.length,
70
- icon: _icon,
71
- patterns: __experimentalGetPatternTransformItems(blocks, rootClientId)
47
+ blocks: _blocks,
48
+ possibleBlockTransformations: getBlockTransformItems(_blocks, rootClientId),
49
+ patterns: __experimentalGetPatternTransformItems(_blocks, rootClientId)
72
50
  };
73
- }, [clientIds, blocks, blockInformation?.icon]);
51
+ }, [clientIds]);
74
52
  const blockVariationTransformations = useBlockVariationTransforms({
75
53
  clientIds,
76
54
  blocks
77
55
  });
78
- const blockTitle = useBlockDisplayTitle({
79
- clientId: Array.isArray(clientIds) ? clientIds[0] : clientIds,
80
- maximumLength: 35
81
- });
82
- const isSingleBlock = blocks.length === 1;
83
- const isReusable = isSingleBlock && isReusableBlock(blocks[0]);
84
- const isTemplate = isSingleBlock && isTemplatePart(blocks[0]);
85
56
  function selectForMultipleBlocks(insertedBlocks) {
86
57
  if (insertedBlocks.length > 1) {
87
58
  multiSelect(insertedBlocks[0].clientId, insertedBlocks[insertedBlocks.length - 1].clientId);
88
59
  }
89
60
  }
90
-
91
61
  // Simple block tranformation based on the `Block Transforms` API.
92
62
  function onBlockTransform(name) {
93
63
  const newBlocks = switchToBlockType(blocks, name);
@@ -101,24 +71,115 @@ export const BlockSwitcherDropdownMenu = ({
101
71
  }) => variationName === name).attributes
102
72
  });
103
73
  }
104
-
105
74
  // Pattern transformation through the `Patterns` API.
106
75
  function onPatternTransform(transformedBlocks) {
107
76
  replaceBlocks(clientIds, transformedBlocks);
108
77
  selectForMultipleBlocks(transformedBlocks);
109
78
  }
110
-
111
79
  /**
112
80
  * The `isTemplate` check is a stopgap solution here.
113
81
  * Ideally, the Transforms API should handle this
114
82
  * by allowing to exclude blocks from wildcard transformations.
115
83
  */
84
+ const isSingleBlock = blocks.length === 1;
85
+ const isTemplate = isSingleBlock && isTemplatePart(blocks[0]);
116
86
  const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove && !isTemplate;
117
87
  const hasPossibleBlockVariationTransformations = !!blockVariationTransformations?.length;
118
88
  const hasPatternTransformation = !!patterns?.length && canRemove;
119
89
  const hasBlockOrBlockVariationTransforms = hasPossibleBlockTransformations || hasPossibleBlockVariationTransformations;
120
- const showDropdown = hasBlockStyles || hasBlockOrBlockVariationTransforms || hasPatternTransformation;
121
- if (!showDropdown) {
90
+ const hasContents = hasBlockStyles || hasBlockOrBlockVariationTransforms || hasPatternTransformation;
91
+ if (!hasContents) {
92
+ return createElement("p", {
93
+ className: "block-editor-block-switcher__no-transforms"
94
+ }, __('No transforms.'));
95
+ }
96
+ return createElement("div", {
97
+ className: "block-editor-block-switcher__container"
98
+ }, hasPatternTransformation && createElement(PatternTransformationsMenu, {
99
+ blocks: blocks,
100
+ patterns: patterns,
101
+ onSelect: transformedBlocks => {
102
+ onPatternTransform(transformedBlocks);
103
+ onClose();
104
+ }
105
+ }), hasBlockOrBlockVariationTransforms && createElement(BlockTransformationsMenu, {
106
+ className: "block-editor-block-switcher__transforms__menugroup",
107
+ possibleBlockTransformations: possibleBlockTransformations,
108
+ possibleBlockVariationTransformations: blockVariationTransformations,
109
+ blocks: blocks,
110
+ onSelect: name => {
111
+ onBlockTransform(name);
112
+ onClose();
113
+ },
114
+ onSelectVariation: name => {
115
+ onBlockVariationTransform(name);
116
+ onClose();
117
+ }
118
+ }), hasBlockStyles && createElement(BlockStylesMenu, {
119
+ hoveredBlock: blocks[0],
120
+ onSwitch: onClose
121
+ }));
122
+ }
123
+ export const BlockSwitcher = ({
124
+ clientIds
125
+ }) => {
126
+ const blockInformation = useBlockDisplayInformation(clientIds?.[0]);
127
+ const {
128
+ canRemove,
129
+ hasBlockStyles,
130
+ icon,
131
+ invalidBlocks,
132
+ isReusable,
133
+ isTemplate
134
+ } = useSelect(select => {
135
+ const {
136
+ getBlockRootClientId,
137
+ getBlocksByClientId,
138
+ canRemoveBlocks
139
+ } = select(blockEditorStore);
140
+ const {
141
+ getBlockStyles,
142
+ getBlockType
143
+ } = select(blocksStore);
144
+ const _blocks = getBlocksByClientId(clientIds);
145
+ if (!_blocks.length || _blocks.some(block => !block)) {
146
+ return {
147
+ invalidBlocks: true
148
+ };
149
+ }
150
+ const rootClientId = getBlockRootClientId(clientIds);
151
+ const [{
152
+ name: firstBlockName
153
+ }] = _blocks;
154
+ const _isSingleBlockSelected = _blocks.length === 1;
155
+ let _icon;
156
+ if (_isSingleBlockSelected) {
157
+ _icon = blockInformation?.icon; // Take into account active block variations.
158
+ } else {
159
+ const isSelectionOfSameType = new Set(_blocks.map(({
160
+ name
161
+ }) => name)).size === 1;
162
+ // When selection consists of blocks of multiple types, display an
163
+ // appropriate icon to communicate the non-uniformity.
164
+ _icon = isSelectionOfSameType ? getBlockType(firstBlockName)?.icon : copy;
165
+ }
166
+ return {
167
+ canRemove: canRemoveBlocks(clientIds, rootClientId),
168
+ hasBlockStyles: _isSingleBlockSelected && !!getBlockStyles(firstBlockName)?.length,
169
+ icon: _icon,
170
+ isReusable: _isSingleBlockSelected && isReusableBlock(_blocks[0]),
171
+ isTemplate: _isSingleBlockSelected && isTemplatePart(_blocks[0])
172
+ };
173
+ }, [clientIds, blockInformation?.icon]);
174
+ const blockTitle = useBlockDisplayTitle({
175
+ clientId: clientIds?.[0],
176
+ maximumLength: 35
177
+ });
178
+ if (invalidBlocks) {
179
+ return null;
180
+ }
181
+ const hideDropdown = !hasBlockStyles && !canRemove;
182
+ if (hideDropdown) {
122
183
  return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
123
184
  disabled: true,
124
185
  className: "block-editor-block-switcher__no-switcher-icon",
@@ -131,9 +192,10 @@ export const BlockSwitcherDropdownMenu = ({
131
192
  }, blockTitle))
132
193
  }));
133
194
  }
195
+ const isSingleBlock = clientIds.length === 1;
134
196
  const blockSwitcherLabel = isSingleBlock ? blockTitle : __('Multiple blocks selected');
135
197
  const blockSwitcherDescription = isSingleBlock ? __('Change block type or style') : sprintf( /* translators: %d: number of blocks. */
136
- _n('Change type of %d block', 'Change type of %d blocks', blocks.length), blocks.length);
198
+ _n('Change type of %d block', 'Change type of %d blocks', clientIds.length), clientIds.length);
137
199
  return createElement(ToolbarGroup, null, createElement(ToolbarItem, null, toggleProps => createElement(DropdownMenu, {
138
200
  className: "block-editor-block-switcher",
139
201
  label: blockSwitcherLabel,
@@ -157,44 +219,12 @@ export const BlockSwitcherDropdownMenu = ({
157
219
  }
158
220
  }, ({
159
221
  onClose
160
- }) => createElement("div", {
161
- className: "block-editor-block-switcher__container"
162
- }, hasPatternTransformation && createElement(PatternTransformationsMenu, {
163
- blocks: blocks,
164
- patterns: patterns,
165
- onSelect: transformedBlocks => {
166
- onPatternTransform(transformedBlocks);
167
- onClose();
168
- }
169
- }), hasBlockOrBlockVariationTransforms && createElement(BlockTransformationsMenu, {
170
- className: "block-editor-block-switcher__transforms__menugroup",
171
- possibleBlockTransformations: possibleBlockTransformations,
172
- possibleBlockVariationTransformations: blockVariationTransformations,
173
- blocks: blocks,
174
- onSelect: name => {
175
- onBlockTransform(name);
176
- onClose();
177
- },
178
- onSelectVariation: name => {
179
- onBlockVariationTransform(name);
180
- onClose();
181
- }
182
- }), hasBlockStyles && createElement(BlockStylesMenu, {
183
- hoveredBlock: blocks[0],
184
- onSwitch: onClose
185
- })))));
186
- };
187
- export const BlockSwitcher = ({
188
- clientIds
189
- }) => {
190
- const blocks = useSelect(select => select(blockEditorStore).getBlocksByClientId(clientIds), [clientIds]);
191
- if (!blocks.length || blocks.some(block => !block)) {
192
- return null;
193
- }
194
- return createElement(BlockSwitcherDropdownMenu, {
222
+ }) => createElement(BlockSwitcherDropdownMenuContents, {
223
+ onClose: onClose,
195
224
  clientIds: clientIds,
196
- blocks: blocks
197
- });
225
+ hasBlockStyles: hasBlockStyles,
226
+ canRemove: canRemove
227
+ }))));
198
228
  };
199
229
  export default BlockSwitcher;
200
230
  //# sourceMappingURL=index.js.map