@wordpress/block-editor 9.7.0 → 9.8.1-next.957ca95e4c.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 (396) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-alignment-control/use-available-alignments.js +1 -1
  3. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  4. package/build/components/block-edit-visually-button/index.js +46 -0
  5. package/build/components/block-edit-visually-button/index.js.map +1 -0
  6. package/build/components/block-list/block-list-compact.native.js +73 -0
  7. package/build/components/block-list/block-list-compact.native.js.map +1 -0
  8. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  9. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  10. package/build/components/block-popover/inbetween.js +4 -2
  11. package/build/components/block-popover/inbetween.js.map +1 -1
  12. package/build/components/block-popover/index.js +11 -7
  13. package/build/components/block-popover/index.js.map +1 -1
  14. package/build/components/block-settings-menu/index.js +2 -6
  15. package/build/components/block-settings-menu/index.js.map +1 -1
  16. package/build/components/block-switcher/index.js +10 -16
  17. package/build/components/block-switcher/index.js.map +1 -1
  18. package/build/components/block-toolbar/index.js +5 -1
  19. package/build/components/block-toolbar/index.js.map +1 -1
  20. package/build/components/block-tools/selected-block-popover.js +10 -2
  21. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  22. package/build/components/block-tools/use-block-toolbar-popover-props.js +126 -0
  23. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
  24. package/build/components/border-radius-control/all-input-control.js +31 -3
  25. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  26. package/build/components/border-radius-control/index.js +20 -6
  27. package/build/components/border-radius-control/index.js.map +1 -1
  28. package/build/components/border-radius-control/input-controls.js +21 -6
  29. package/build/components/border-radius-control/input-controls.js.map +1 -1
  30. package/build/components/border-radius-control/utils.js +13 -16
  31. package/build/components/border-radius-control/utils.js.map +1 -1
  32. package/build/components/colors/with-colors.js +17 -4
  33. package/build/components/colors/with-colors.js.map +1 -1
  34. package/build/components/colors-gradients/control.js +1 -0
  35. package/build/components/colors-gradients/control.js.map +1 -1
  36. package/build/components/copy-handler/index.js +6 -0
  37. package/build/components/copy-handler/index.js.map +1 -1
  38. package/build/components/date-format-picker/index.js +2 -7
  39. package/build/components/date-format-picker/index.js.map +1 -1
  40. package/build/components/duotone/components.js +5 -5
  41. package/build/components/duotone/components.js.map +1 -1
  42. package/build/components/font-family/index.js +1 -1
  43. package/build/components/font-family/index.js.map +1 -1
  44. package/build/components/font-sizes/with-font-sizes.js +17 -4
  45. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  46. package/build/components/index.js +9 -0
  47. package/build/components/index.js.map +1 -1
  48. package/build/components/inner-blocks/index.native.js +6 -2
  49. package/build/components/inner-blocks/index.native.js.map +1 -1
  50. package/build/components/inserter/search-items.js +22 -4
  51. package/build/components/inserter/search-items.js.map +1 -1
  52. package/build/components/link-control/link-preview.js +0 -1
  53. package/build/components/link-control/link-preview.js.map +1 -1
  54. package/build/components/list-view/block-select-button.js +5 -2
  55. package/build/components/list-view/block-select-button.js.map +1 -1
  56. package/build/components/list-view/use-block-selection.js +1 -7
  57. package/build/components/list-view/use-block-selection.js.map +1 -1
  58. package/build/components/rich-text/index.js +10 -0
  59. package/build/components/rich-text/index.js.map +1 -1
  60. package/build/components/rich-text/use-enter.js +0 -4
  61. package/build/components/rich-text/use-enter.js.map +1 -1
  62. package/build/components/rich-text/use-format-types.js +8 -11
  63. package/build/components/rich-text/use-format-types.js.map +1 -1
  64. package/build/components/spacing-sizes-control/all-input-control.js +53 -0
  65. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
  66. package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
  67. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  68. package/build/components/spacing-sizes-control/index.js +100 -0
  69. package/build/components/spacing-sizes-control/index.js.map +1 -0
  70. package/build/components/spacing-sizes-control/input-controls.js +52 -0
  71. package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
  72. package/build/components/spacing-sizes-control/linked-button.js +38 -0
  73. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  74. package/build/components/spacing-sizes-control/spacing-input-control.js +213 -0
  75. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  76. package/build/components/spacing-sizes-control/utils.js +233 -0
  77. package/build/components/spacing-sizes-control/utils.js.map +1 -0
  78. package/build/components/text-decoration-control/index.js +28 -17
  79. package/build/components/text-decoration-control/index.js.map +1 -1
  80. package/build/components/text-transform-control/index.js +21 -14
  81. package/build/components/text-transform-control/index.js.map +1 -1
  82. package/build/components/url-input/index.js +1 -1
  83. package/build/components/url-input/index.js.map +1 -1
  84. package/build/components/writing-flow/index.js +2 -0
  85. package/build/components/writing-flow/index.js.map +1 -1
  86. package/build/components/writing-flow/use-multi-selection.js +4 -2
  87. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  88. package/build/components/writing-flow/use-select-all.js +7 -10
  89. package/build/components/writing-flow/use-select-all.js.map +1 -1
  90. package/build/components/writing-flow/use-selection-observer.js +10 -2
  91. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  92. package/build/hooks/align.js +3 -1
  93. package/build/hooks/align.js.map +1 -1
  94. package/build/hooks/anchor.js +3 -7
  95. package/build/hooks/anchor.js.map +1 -1
  96. package/build/hooks/border-radius.js +2 -7
  97. package/build/hooks/border-radius.js.map +1 -1
  98. package/build/hooks/border.js +2 -2
  99. package/build/hooks/border.js.map +1 -1
  100. package/build/hooks/color.js +4 -1
  101. package/build/hooks/color.js.map +1 -1
  102. package/build/hooks/dimensions.js +15 -0
  103. package/build/hooks/dimensions.js.map +1 -1
  104. package/build/hooks/duotone.js +4 -4
  105. package/build/hooks/duotone.js.map +1 -1
  106. package/build/hooks/font-appearance.js +2 -1
  107. package/build/hooks/font-appearance.js.map +1 -1
  108. package/build/hooks/font-family.js +3 -1
  109. package/build/hooks/font-family.js.map +1 -1
  110. package/build/hooks/font-size.js +3 -1
  111. package/build/hooks/font-size.js.map +1 -1
  112. package/build/hooks/gap.js +25 -6
  113. package/build/hooks/gap.js.map +1 -1
  114. package/build/hooks/generated-class-name.js +1 -7
  115. package/build/hooks/generated-class-name.js.map +1 -1
  116. package/build/hooks/layout.js +23 -13
  117. package/build/hooks/layout.js.map +1 -1
  118. package/build/hooks/letter-spacing.js +2 -1
  119. package/build/hooks/letter-spacing.js.map +1 -1
  120. package/build/hooks/line-height.js +2 -1
  121. package/build/hooks/line-height.js.map +1 -1
  122. package/build/hooks/lock.js +3 -7
  123. package/build/hooks/lock.js.map +1 -1
  124. package/build/hooks/margin.js +28 -12
  125. package/build/hooks/margin.js.map +1 -1
  126. package/build/hooks/padding.js +19 -8
  127. package/build/hooks/padding.js.map +1 -1
  128. package/build/hooks/style.js +4 -50
  129. package/build/hooks/style.js.map +1 -1
  130. package/build/hooks/text-decoration.js +2 -1
  131. package/build/hooks/text-decoration.js.map +1 -1
  132. package/build/hooks/text-transform.js +2 -1
  133. package/build/hooks/text-transform.js.map +1 -1
  134. package/build/layouts/constrained.js +225 -0
  135. package/build/layouts/constrained.js.map +1 -0
  136. package/build/layouts/flex.js +1 -1
  137. package/build/layouts/flex.js.map +1 -1
  138. package/build/layouts/flow.js +18 -152
  139. package/build/layouts/flow.js.map +1 -1
  140. package/build/layouts/index.js +3 -1
  141. package/build/layouts/index.js.map +1 -1
  142. package/build/layouts/utils.js +43 -0
  143. package/build/layouts/utils.js.map +1 -1
  144. package/build/store/actions.js +25 -3
  145. package/build/store/actions.js.map +1 -1
  146. package/build/store/selectors.js +4 -6
  147. package/build/store/selectors.js.map +1 -1
  148. package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
  149. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  150. package/build-module/components/block-edit-visually-button/index.js +35 -0
  151. package/build-module/components/block-edit-visually-button/index.js.map +1 -0
  152. package/build-module/components/block-list/block-list-compact.native.js +58 -0
  153. package/build-module/components/block-list/block-list-compact.native.js.map +1 -0
  154. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  155. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  156. package/build-module/components/block-popover/inbetween.js +4 -2
  157. package/build-module/components/block-popover/inbetween.js.map +1 -1
  158. package/build-module/components/block-popover/index.js +9 -7
  159. package/build-module/components/block-popover/index.js.map +1 -1
  160. package/build-module/components/block-settings-menu/index.js +3 -6
  161. package/build-module/components/block-settings-menu/index.js.map +1 -1
  162. package/build-module/components/block-switcher/index.js +10 -16
  163. package/build-module/components/block-switcher/index.js.map +1 -1
  164. package/build-module/components/block-toolbar/index.js +4 -1
  165. package/build-module/components/block-toolbar/index.js.map +1 -1
  166. package/build-module/components/block-tools/selected-block-popover.js +8 -2
  167. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  168. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +114 -0
  169. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
  170. package/build-module/components/border-radius-control/all-input-control.js +32 -4
  171. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  172. package/build-module/components/border-radius-control/index.js +20 -6
  173. package/build-module/components/border-radius-control/index.js.map +1 -1
  174. package/build-module/components/border-radius-control/input-controls.js +22 -7
  175. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  176. package/build-module/components/border-radius-control/utils.js +13 -16
  177. package/build-module/components/border-radius-control/utils.js.map +1 -1
  178. package/build-module/components/colors/with-colors.js +16 -3
  179. package/build-module/components/colors/with-colors.js.map +1 -1
  180. package/build-module/components/colors-gradients/control.js +1 -0
  181. package/build-module/components/colors-gradients/control.js.map +1 -1
  182. package/build-module/components/copy-handler/index.js +7 -1
  183. package/build-module/components/copy-handler/index.js.map +1 -1
  184. package/build-module/components/date-format-picker/index.js +2 -6
  185. package/build-module/components/date-format-picker/index.js.map +1 -1
  186. package/build-module/components/duotone/components.js +5 -5
  187. package/build-module/components/duotone/components.js.map +1 -1
  188. package/build-module/components/font-family/index.js +1 -1
  189. package/build-module/components/font-family/index.js.map +1 -1
  190. package/build-module/components/font-sizes/with-font-sizes.js +16 -3
  191. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  192. package/build-module/components/index.js +1 -0
  193. package/build-module/components/index.js.map +1 -1
  194. package/build-module/components/inner-blocks/index.native.js +5 -2
  195. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  196. package/build-module/components/inserter/search-items.js +19 -5
  197. package/build-module/components/inserter/search-items.js.map +1 -1
  198. package/build-module/components/link-control/link-preview.js +0 -1
  199. package/build-module/components/link-control/link-preview.js.map +1 -1
  200. package/build-module/components/list-view/block-select-button.js +5 -2
  201. package/build-module/components/list-view/block-select-button.js.map +1 -1
  202. package/build-module/components/list-view/use-block-selection.js +1 -6
  203. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  204. package/build-module/components/rich-text/index.js +10 -0
  205. package/build-module/components/rich-text/index.js.map +1 -1
  206. package/build-module/components/rich-text/use-enter.js +0 -4
  207. package/build-module/components/rich-text/use-enter.js.map +1 -1
  208. package/build-module/components/rich-text/use-format-types.js +8 -10
  209. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  210. package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
  211. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
  212. package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
  213. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  214. package/build-module/components/spacing-sizes-control/index.js +83 -0
  215. package/build-module/components/spacing-sizes-control/index.js.map +1 -0
  216. package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
  217. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
  218. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  219. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  220. package/build-module/components/spacing-sizes-control/spacing-input-control.js +197 -0
  221. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  222. package/build-module/components/spacing-sizes-control/utils.js +203 -0
  223. package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
  224. package/build-module/components/text-decoration-control/index.js +25 -18
  225. package/build-module/components/text-decoration-control/index.js.map +1 -1
  226. package/build-module/components/text-transform-control/index.js +19 -15
  227. package/build-module/components/text-transform-control/index.js.map +1 -1
  228. package/build-module/components/url-input/index.js +1 -1
  229. package/build-module/components/url-input/index.js.map +1 -1
  230. package/build-module/components/writing-flow/index.js +2 -0
  231. package/build-module/components/writing-flow/index.js.map +1 -1
  232. package/build-module/components/writing-flow/use-multi-selection.js +4 -2
  233. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  234. package/build-module/components/writing-flow/use-select-all.js +7 -10
  235. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  236. package/build-module/components/writing-flow/use-selection-observer.js +10 -2
  237. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  238. package/build-module/hooks/align.js +4 -2
  239. package/build-module/hooks/align.js.map +1 -1
  240. package/build-module/hooks/anchor.js +3 -6
  241. package/build-module/hooks/anchor.js.map +1 -1
  242. package/build-module/hooks/border-radius.js +2 -7
  243. package/build-module/hooks/border-radius.js.map +1 -1
  244. package/build-module/hooks/border.js +2 -2
  245. package/build-module/hooks/border.js.map +1 -1
  246. package/build-module/hooks/color.js +4 -1
  247. package/build-module/hooks/color.js.map +1 -1
  248. package/build-module/hooks/dimensions.js +13 -0
  249. package/build-module/hooks/dimensions.js.map +1 -1
  250. package/build-module/hooks/duotone.js +4 -4
  251. package/build-module/hooks/duotone.js.map +1 -1
  252. package/build-module/hooks/font-appearance.js +2 -1
  253. package/build-module/hooks/font-appearance.js.map +1 -1
  254. package/build-module/hooks/font-family.js +3 -1
  255. package/build-module/hooks/font-family.js.map +1 -1
  256. package/build-module/hooks/font-size.js +3 -1
  257. package/build-module/hooks/font-size.js.map +1 -1
  258. package/build-module/hooks/gap.js +21 -4
  259. package/build-module/hooks/gap.js.map +1 -1
  260. package/build-module/hooks/generated-class-name.js +1 -6
  261. package/build-module/hooks/generated-class-name.js.map +1 -1
  262. package/build-module/hooks/layout.js +24 -14
  263. package/build-module/hooks/layout.js.map +1 -1
  264. package/build-module/hooks/letter-spacing.js +2 -1
  265. package/build-module/hooks/letter-spacing.js.map +1 -1
  266. package/build-module/hooks/line-height.js +2 -1
  267. package/build-module/hooks/line-height.js.map +1 -1
  268. package/build-module/hooks/lock.js +3 -6
  269. package/build-module/hooks/lock.js.map +1 -1
  270. package/build-module/hooks/margin.js +26 -12
  271. package/build-module/hooks/margin.js.map +1 -1
  272. package/build-module/hooks/padding.js +17 -8
  273. package/build-module/hooks/padding.js.map +1 -1
  274. package/build-module/hooks/style.js +7 -53
  275. package/build-module/hooks/style.js.map +1 -1
  276. package/build-module/hooks/text-decoration.js +2 -1
  277. package/build-module/hooks/text-decoration.js.map +1 -1
  278. package/build-module/hooks/text-transform.js +2 -1
  279. package/build-module/hooks/text-transform.js.map +1 -1
  280. package/build-module/layouts/constrained.js +207 -0
  281. package/build-module/layouts/constrained.js.map +1 -0
  282. package/build-module/layouts/flex.js +1 -1
  283. package/build-module/layouts/flex.js.map +1 -1
  284. package/build-module/layouts/flow.js +20 -147
  285. package/build-module/layouts/flow.js.map +1 -1
  286. package/build-module/layouts/index.js +2 -1
  287. package/build-module/layouts/index.js.map +1 -1
  288. package/build-module/layouts/utils.js +40 -0
  289. package/build-module/layouts/utils.js.map +1 -1
  290. package/build-module/store/actions.js +25 -3
  291. package/build-module/store/actions.js.map +1 -1
  292. package/build-module/store/selectors.js +5 -7
  293. package/build-module/store/selectors.js.map +1 -1
  294. package/build-style/style-rtl.css +157 -61
  295. package/build-style/style.css +157 -61
  296. package/package.json +30 -28
  297. package/src/components/block-alignment-control/use-available-alignments.js +1 -1
  298. package/src/components/block-edit-visually-button/index.js +39 -0
  299. package/src/components/block-list/block-list-compact.native.js +62 -0
  300. package/src/components/block-list/style.scss +29 -6
  301. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  302. package/src/components/block-popover/inbetween.js +4 -1
  303. package/src/components/block-popover/index.js +22 -15
  304. package/src/components/block-settings-menu/index.js +11 -15
  305. package/src/components/block-switcher/index.js +9 -13
  306. package/src/components/block-switcher/test/index.js +2 -2
  307. package/src/components/block-toolbar/index.js +2 -0
  308. package/src/components/block-tools/selected-block-popover.js +7 -0
  309. package/src/components/block-tools/use-block-toolbar-popover-props.js +123 -0
  310. package/src/components/border-radius-control/all-input-control.js +41 -4
  311. package/src/components/border-radius-control/index.js +25 -5
  312. package/src/components/border-radius-control/input-controls.js +40 -13
  313. package/src/components/border-radius-control/test/utils.js +22 -60
  314. package/src/components/border-radius-control/utils.js +12 -16
  315. package/src/components/button-block-appender/style.scss +23 -0
  316. package/src/components/colors/with-colors.js +11 -1
  317. package/src/components/colors-gradients/control.js +1 -0
  318. package/src/components/copy-handler/index.js +18 -0
  319. package/src/components/date-format-picker/index.js +12 -14
  320. package/src/components/date-format-picker/style.scss +0 -4
  321. package/src/components/duotone/components.js +5 -5
  322. package/src/components/duotone-control/style.scss +0 -4
  323. package/src/components/font-appearance-control/style.scss +0 -2
  324. package/src/components/font-family/index.js +1 -1
  325. package/src/components/font-sizes/with-font-sizes.js +11 -1
  326. package/src/components/index.js +1 -0
  327. package/src/components/inner-blocks/index.native.js +5 -1
  328. package/src/components/inserter/search-items.js +17 -5
  329. package/src/components/link-control/link-preview.js +0 -1
  330. package/src/components/link-control/test/index.js +540 -893
  331. package/src/components/list-view/block-select-button.js +7 -2
  332. package/src/components/list-view/style.scss +11 -4
  333. package/src/components/list-view/use-block-selection.js +2 -8
  334. package/src/components/media-replace-flow/style.scss +1 -0
  335. package/src/components/rich-text/index.js +9 -0
  336. package/src/components/rich-text/use-enter.js +0 -3
  337. package/src/components/rich-text/use-format-types.js +6 -6
  338. package/src/components/spacing-sizes-control/all-input-control.js +40 -0
  339. package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
  340. package/src/components/spacing-sizes-control/index.js +91 -0
  341. package/src/components/spacing-sizes-control/input-controls.js +46 -0
  342. package/src/components/spacing-sizes-control/linked-button.js +25 -0
  343. package/src/components/spacing-sizes-control/spacing-input-control.js +285 -0
  344. package/src/components/spacing-sizes-control/style.scss +122 -0
  345. package/src/components/spacing-sizes-control/test/utils.js +182 -0
  346. package/src/components/spacing-sizes-control/utils.js +222 -0
  347. package/src/components/text-decoration-control/index.js +41 -30
  348. package/src/components/text-decoration-control/stories/index.js +37 -0
  349. package/src/components/text-transform-control/index.js +27 -27
  350. package/src/components/text-transform-control/stories/index.js +37 -0
  351. package/src/components/url-input/index.js +1 -1
  352. package/src/components/url-input/style.scss +2 -2
  353. package/src/components/url-popover/style.scss +0 -3
  354. package/src/components/writing-flow/index.js +2 -0
  355. package/src/components/writing-flow/use-multi-selection.js +4 -1
  356. package/src/components/writing-flow/use-select-all.js +10 -13
  357. package/src/components/writing-flow/use-selection-observer.js +10 -2
  358. package/src/hooks/align.js +2 -2
  359. package/src/hooks/anchor.js +1 -6
  360. package/src/hooks/border-radius.js +2 -6
  361. package/src/hooks/border.js +2 -2
  362. package/src/hooks/color.js +13 -3
  363. package/src/hooks/dimensions.js +14 -0
  364. package/src/hooks/duotone.js +4 -4
  365. package/src/hooks/font-appearance.js +1 -0
  366. package/src/hooks/font-family.js +2 -0
  367. package/src/hooks/font-size.js +2 -0
  368. package/src/hooks/gap.js +42 -19
  369. package/src/hooks/generated-class-name.js +6 -9
  370. package/src/hooks/layout.js +47 -16
  371. package/src/hooks/letter-spacing.js +1 -0
  372. package/src/hooks/line-height.js +1 -0
  373. package/src/hooks/lock.js +1 -6
  374. package/src/hooks/margin.js +49 -17
  375. package/src/hooks/padding.js +41 -14
  376. package/src/hooks/style.js +5 -56
  377. package/src/hooks/test/gap.js +16 -0
  378. package/src/hooks/text-decoration.js +1 -0
  379. package/src/hooks/text-transform.js +1 -0
  380. package/src/hooks/typography.scss +0 -7
  381. package/src/layouts/constrained.js +220 -0
  382. package/src/layouts/flex.js +1 -1
  383. package/src/layouts/flow.js +17 -173
  384. package/src/layouts/index.js +2 -1
  385. package/src/layouts/test/constrained.js +21 -0
  386. package/src/layouts/utils.js +34 -0
  387. package/src/store/actions.js +32 -4
  388. package/src/store/selectors.js +5 -4
  389. package/src/style.scss +1 -2
  390. package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
  391. package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  392. package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
  393. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  394. package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
  395. package/src/components/text-decoration-control/style.scss +0 -18
  396. package/src/components/text-transform-control/style.scss +0 -18
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 9.8.0 (2022-08-24)
6
+
5
7
  ## 9.7.0 (2022-08-10)
6
8
 
7
9
  ## 9.6.0 (2022-07-27)
@@ -65,7 +65,7 @@ function useAvailableAlignments() {
65
65
  } // Starting here, it's the fallback for themes not supporting the layout config.
66
66
 
67
67
 
68
- if (layoutType.name !== 'default') {
68
+ if (layoutType.name !== 'default' && layoutType.name !== 'constrained') {
69
69
  return [];
70
70
  }
71
71
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"names":["DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","wideControlsEnabled","themeSupportsLayout","select","getSettings","blockEditorStore","settings","alignWide","supportsLayout","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","name","alignmentName","length","availableAlignments","enabledControls","control","map","enabledControl"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAVA;AACA;AACA;;AAGA;AACA;AACA;AAKA,MAAMA,gBAAgB,GAAG,CAAE,MAAF,EAAU,MAAV,EAAkB,QAAlB,EAA4B,OAA5B,EAAqC,MAArC,EAA6C,MAA7C,CAAzB;AACA,MAAMC,aAAa,GAAG,CAAE,MAAF,EAAU,MAAV,CAAtB;;AAEe,SAASC,sBAAT,GAA+D;AAAA,MAA9BC,QAA8B,uEAAnBH,gBAAmB;;AAC7E;AACA,MAAK,CAAEG,QAAQ,CAACC,QAAT,CAAmB,MAAnB,CAAP,EAAqC;AACpCD,IAAAA,QAAQ,GAAG,CAAE,MAAF,EAAU,GAAGA,QAAb,CAAX;AACA;;AACD,QAAM;AAAEE,IAAAA,mBAAmB,GAAG,KAAxB;AAA+BC,IAAAA;AAA/B,MAAuD,qBAC1DC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAEE,YAAF,CAA9B;AACA,UAAMC,QAAQ,GAAGF,WAAW,EAA5B;AACA,WAAO;AACNH,MAAAA,mBAAmB,EAAEK,QAAQ,CAACC,SADxB;AAENL,MAAAA,mBAAmB,EAAEI,QAAQ,CAACE;AAFxB,KAAP;AAIA,GAR2D,EAS5D,EAT4D,CAA7D;AAWA,QAAMC,MAAM,GAAG,wBAAf;AACA,QAAMC,UAAU,GAAG,4BAAeD,MAAf,aAAeA,MAAf,uBAAeA,MAAM,CAAEE,IAAvB,CAAnB;AACA,QAAMC,gBAAgB,GAAGF,UAAU,CAACG,aAAX,CAA0BJ,MAA1B,CAAzB;;AAEA,MAAKP,mBAAL,EAA2B;AAC1B,UAAMY,UAAU,GAAGF,gBAAgB,CAACG,MAAjB,CAClB;AAAA,UAAE;AAAEC,QAAAA,IAAI,EAAEC;AAAR,OAAF;AAAA,aAA+BlB,QAAQ,CAACC,QAAT,CAAmBiB,aAAnB,CAA/B;AAAA,KADkB,CAAnB,CAD0B,CAI1B;AACA;;AACA,QAAKH,UAAU,CAACI,MAAX,KAAsB,CAAtB,IAA2BJ,UAAU,CAAE,CAAF,CAAV,CAAgBE,IAAhB,KAAyB,MAAzD,EAAkE;AACjE,aAAO,EAAP;AACA;;AACD,WAAOF,UAAP;AACA,GA9B4E,CAgC7E;;;AACA,MAAKJ,UAAU,CAACM,IAAX,KAAoB,SAAzB,EAAqC;AACpC,WAAO,EAAP;AACA;;AACD,QAAM;AAAEF,IAAAA,UAAU,EAAEK,mBAAmB,GAAGvB;AAApC,MAAyDa,MAA/D;AACA,QAAMW,eAAe,GAAGrB,QAAQ,CAC9BgB,MADsB,CAEpBM,OAAF,IACC,CAAEZ,MAAM,CAACK,UAAP,IAAqB;AACtBb,EAAAA,mBADC,IAED,CAAEJ,aAAa,CAACG,QAAd,CAAwBqB,OAAxB,CAFH,KAGAF,mBAAmB,CAACnB,QAApB,CAA8BqB,OAA9B,CANqB,EAQtBC,GARsB,CAQfC,cAAF,KAAwB;AAAEP,IAAAA,IAAI,EAAEO;AAAR,GAAxB,CARiB,CAAxB,CArC6E,CA+C7E;AACA;;AACA,MACCH,eAAe,CAACF,MAAhB,KAA2B,CAA3B,IACAE,eAAe,CAAE,CAAF,CAAf,CAAqBJ,IAArB,KAA8B,MAF/B,EAGE;AACD,WAAO,EAAP;AACA;;AAED,SAAOI,eAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst { wideControlsEnabled = false, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\twideControlsEnabled: settings.alignWide,\n\t\t\t\tthemeSupportsLayout: settings.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst layout = useLayout();\n\tconst layoutType = getLayoutType( layout?.type );\n\tconst layoutAlignments = layoutType.getAlignments( layout );\n\n\tif ( themeSupportsLayout ) {\n\t\tconst alignments = layoutAlignments.filter(\n\t\t\t( { name: alignmentName } ) => controls.includes( alignmentName )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' ) {\n\t\treturn [];\n\t}\n\tconst { alignments: availableAlignments = DEFAULT_CONTROLS } = layout;\n\tconst enabledControls = controls\n\t\t.filter(\n\t\t\t( control ) =>\n\t\t\t\t( layout.alignments || // Ignore the global wideAlignment check if the layout explicitely defines alignments.\n\t\t\t\t\twideControlsEnabled ||\n\t\t\t\t\t! WIDE_CONTROLS.includes( control ) ) &&\n\t\t\t\tavailableAlignments.includes( control )\n\t\t)\n\t\t.map( ( enabledControl ) => ( { name: enabledControl } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif (\n\t\tenabledControls.length === 1 &&\n\t\tenabledControls[ 0 ].name === 'none'\n\t) {\n\t\treturn [];\n\t}\n\n\treturn enabledControls;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"names":["DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","wideControlsEnabled","themeSupportsLayout","select","getSettings","blockEditorStore","settings","alignWide","supportsLayout","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","name","alignmentName","length","availableAlignments","enabledControls","control","map","enabledControl"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAVA;AACA;AACA;;AAGA;AACA;AACA;AAKA,MAAMA,gBAAgB,GAAG,CAAE,MAAF,EAAU,MAAV,EAAkB,QAAlB,EAA4B,OAA5B,EAAqC,MAArC,EAA6C,MAA7C,CAAzB;AACA,MAAMC,aAAa,GAAG,CAAE,MAAF,EAAU,MAAV,CAAtB;;AAEe,SAASC,sBAAT,GAA+D;AAAA,MAA9BC,QAA8B,uEAAnBH,gBAAmB;;AAC7E;AACA,MAAK,CAAEG,QAAQ,CAACC,QAAT,CAAmB,MAAnB,CAAP,EAAqC;AACpCD,IAAAA,QAAQ,GAAG,CAAE,MAAF,EAAU,GAAGA,QAAb,CAAX;AACA;;AACD,QAAM;AAAEE,IAAAA,mBAAmB,GAAG,KAAxB;AAA+BC,IAAAA;AAA/B,MAAuD,qBAC1DC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAEE,YAAF,CAA9B;AACA,UAAMC,QAAQ,GAAGF,WAAW,EAA5B;AACA,WAAO;AACNH,MAAAA,mBAAmB,EAAEK,QAAQ,CAACC,SADxB;AAENL,MAAAA,mBAAmB,EAAEI,QAAQ,CAACE;AAFxB,KAAP;AAIA,GAR2D,EAS5D,EAT4D,CAA7D;AAWA,QAAMC,MAAM,GAAG,wBAAf;AACA,QAAMC,UAAU,GAAG,4BAAeD,MAAf,aAAeA,MAAf,uBAAeA,MAAM,CAAEE,IAAvB,CAAnB;AACA,QAAMC,gBAAgB,GAAGF,UAAU,CAACG,aAAX,CAA0BJ,MAA1B,CAAzB;;AAEA,MAAKP,mBAAL,EAA2B;AAC1B,UAAMY,UAAU,GAAGF,gBAAgB,CAACG,MAAjB,CAClB;AAAA,UAAE;AAAEC,QAAAA,IAAI,EAAEC;AAAR,OAAF;AAAA,aAA+BlB,QAAQ,CAACC,QAAT,CAAmBiB,aAAnB,CAA/B;AAAA,KADkB,CAAnB,CAD0B,CAI1B;AACA;;AACA,QAAKH,UAAU,CAACI,MAAX,KAAsB,CAAtB,IAA2BJ,UAAU,CAAE,CAAF,CAAV,CAAgBE,IAAhB,KAAyB,MAAzD,EAAkE;AACjE,aAAO,EAAP;AACA;;AACD,WAAOF,UAAP;AACA,GA9B4E,CAgC7E;;;AACA,MAAKJ,UAAU,CAACM,IAAX,KAAoB,SAApB,IAAiCN,UAAU,CAACM,IAAX,KAAoB,aAA1D,EAA0E;AACzE,WAAO,EAAP;AACA;;AACD,QAAM;AAAEF,IAAAA,UAAU,EAAEK,mBAAmB,GAAGvB;AAApC,MAAyDa,MAA/D;AACA,QAAMW,eAAe,GAAGrB,QAAQ,CAC9BgB,MADsB,CAEpBM,OAAF,IACC,CAAEZ,MAAM,CAACK,UAAP,IAAqB;AACtBb,EAAAA,mBADC,IAED,CAAEJ,aAAa,CAACG,QAAd,CAAwBqB,OAAxB,CAFH,KAGAF,mBAAmB,CAACnB,QAApB,CAA8BqB,OAA9B,CANqB,EAQtBC,GARsB,CAQfC,cAAF,KAAwB;AAAEP,IAAAA,IAAI,EAAEO;AAAR,GAAxB,CARiB,CAAxB,CArC6E,CA+C7E;AACA;;AACA,MACCH,eAAe,CAACF,MAAhB,KAA2B,CAA3B,IACAE,eAAe,CAAE,CAAF,CAAf,CAAqBJ,IAArB,KAA8B,MAF/B,EAGE;AACD,WAAO,EAAP;AACA;;AAED,SAAOI,eAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst { wideControlsEnabled = false, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\twideControlsEnabled: settings.alignWide,\n\t\t\t\tthemeSupportsLayout: settings.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst layout = useLayout();\n\tconst layoutType = getLayoutType( layout?.type );\n\tconst layoutAlignments = layoutType.getAlignments( layout );\n\n\tif ( themeSupportsLayout ) {\n\t\tconst alignments = layoutAlignments.filter(\n\t\t\t( { name: alignmentName } ) => controls.includes( alignmentName )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' && layoutType.name !== 'constrained' ) {\n\t\treturn [];\n\t}\n\tconst { alignments: availableAlignments = DEFAULT_CONTROLS } = layout;\n\tconst enabledControls = controls\n\t\t.filter(\n\t\t\t( control ) =>\n\t\t\t\t( layout.alignments || // Ignore the global wideAlignment check if the layout explicitely defines alignments.\n\t\t\t\t\twideControlsEnabled ||\n\t\t\t\t\t! WIDE_CONTROLS.includes( control ) ) &&\n\t\t\t\tavailableAlignments.includes( control )\n\t\t)\n\t\t.map( ( enabledControl ) => ( { name: enabledControl } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif (\n\t\tenabledControls.length === 1 &&\n\t\tenabledControls[ 0 ].name === 'none'\n\t) {\n\t\treturn [];\n\t}\n\n\treturn enabledControls;\n}\n"]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockEditVisuallyButton;
7
+
8
+ var _element = require("@wordpress/element");
9
+
10
+ var _components = require("@wordpress/components");
11
+
12
+ var _i18n = require("@wordpress/i18n");
13
+
14
+ var _data = require("@wordpress/data");
15
+
16
+ var _store = require("../../store");
17
+
18
+ /**
19
+ * WordPress dependencies
20
+ */
21
+
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+ function BlockEditVisuallyButton(_ref) {
26
+ let {
27
+ clientIds
28
+ } = _ref;
29
+ // Edit visually only works for single block selection.
30
+ const clientId = clientIds.length === 1 ? clientIds[0] : undefined;
31
+ const canEditVisually = (0, _data.useSelect)(select => !!clientId && select(_store.store).getBlockMode(clientId) === 'html', [clientId]);
32
+ const {
33
+ toggleBlockMode
34
+ } = (0, _data.useDispatch)(_store.store);
35
+
36
+ if (!canEditVisually) {
37
+ return null;
38
+ }
39
+
40
+ return (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarButton, {
41
+ onClick: () => {
42
+ toggleBlockMode(clientId);
43
+ }
44
+ }, (0, _i18n.__)('Edit visually')));
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-edit-visually-button/index.js"],"names":["BlockEditVisuallyButton","clientIds","clientId","length","undefined","canEditVisually","select","blockEditorStore","getBlockMode","toggleBlockMode"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAGe,SAASA,uBAAT,OAAkD;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AAChE;AACA,QAAMC,QAAQ,GAAGD,SAAS,CAACE,MAAV,KAAqB,CAArB,GAAyBF,SAAS,CAAE,CAAF,CAAlC,GAA0CG,SAA3D;AACA,QAAMC,eAAe,GAAG,qBACrBC,MAAF,IACC,CAAC,CAAEJ,QAAH,IACAI,MAAM,CAAEC,YAAF,CAAN,CAA2BC,YAA3B,CAAyCN,QAAzC,MAAwD,MAHlC,EAIvB,CAAEA,QAAF,CAJuB,CAAxB;AAMA,QAAM;AAAEO,IAAAA;AAAF,MAAsB,uBAAaF,YAAb,CAA5B;;AAEA,MAAK,CAAEF,eAAP,EAAyB;AACxB,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,wBAAD,QACC,4BAAC,yBAAD;AACC,IAAA,OAAO,EAAG,MAAM;AACfI,MAAAA,eAAe,CAAEP,QAAF,CAAf;AACA;AAHF,KAKG,cAAI,eAAJ,CALH,CADD,CADD;AAWA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockEditVisuallyButton( { clientIds } ) {\n\t// Edit visually only works for single block selection.\n\tconst clientId = clientIds.length === 1 ? clientIds[ 0 ] : undefined;\n\tconst canEditVisually = useSelect(\n\t\t( select ) =>\n\t\t\t!! clientId &&\n\t\t\tselect( blockEditorStore ).getBlockMode( clientId ) === 'html',\n\t\t[ clientId ]\n\t);\n\tconst { toggleBlockMode } = useDispatch( blockEditorStore );\n\n\tif ( ! canEditVisually ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tonClick={ () => {\n\t\t\t\t\ttoggleBlockMode( clientId );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Edit visually' ) }\n\t\t\t</ToolbarButton>\n\t\t</ToolbarGroup>\n\t);\n}\n"]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _element = require("@wordpress/element");
11
+
12
+ var _reactNative = require("react-native");
13
+
14
+ var _blockEditor = require("@wordpress/block-editor");
15
+
16
+ var _data = require("@wordpress/data");
17
+
18
+ var _style = _interopRequireDefault(require("./style.scss"));
19
+
20
+ var _block = _interopRequireDefault(require("./block"));
21
+
22
+ /**
23
+ * External dependencies
24
+ */
25
+
26
+ /**
27
+ * WordPress dependencies
28
+ */
29
+
30
+ /**
31
+ * Internal dependencies
32
+ */
33
+
34
+ /**
35
+ * NOTE: This is a component currently used by the List block (V2)
36
+ * It only passes the needed props for this block, if other blocks will use it
37
+ * make sure you pass other props that might be required coming from:
38
+ * components/inner-blocks/index.native.js
39
+ */
40
+ function BlockListCompact(props) {
41
+ const {
42
+ marginHorizontal = _style.default.defaultBlock.marginLeft,
43
+ marginVertical = _style.default.defaultBlock.marginTop,
44
+ rootClientId
45
+ } = props;
46
+ const {
47
+ blockClientIds
48
+ } = (0, _data.useSelect)(select => {
49
+ const {
50
+ getBlockOrder
51
+ } = select(_blockEditor.store);
52
+ const blockOrder = getBlockOrder(rootClientId);
53
+ return {
54
+ blockClientIds: blockOrder
55
+ };
56
+ }, [rootClientId]);
57
+ const containerStyle = {
58
+ marginVertical: -marginVertical,
59
+ marginHorizontal: -marginHorizontal
60
+ };
61
+ return (0, _element.createElement)(_reactNative.View, {
62
+ style: containerStyle
63
+ }, blockClientIds.map(currentClientId => (0, _element.createElement)(_block.default, {
64
+ clientId: currentClientId,
65
+ key: currentClientId,
66
+ marginHorizontal: marginHorizontal,
67
+ marginVertical: marginVertical
68
+ })));
69
+ }
70
+
71
+ var _default = BlockListCompact;
72
+ exports.default = _default;
73
+ //# sourceMappingURL=block-list-compact.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block-list-compact.native.js"],"names":["BlockListCompact","props","marginHorizontal","styles","defaultBlock","marginLeft","marginVertical","marginTop","rootClientId","blockClientIds","select","getBlockOrder","blockEditorStore","blockOrder","containerStyle","map","currentClientId"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AACA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,gBAAT,CAA2BC,KAA3B,EAAmC;AAClC,QAAM;AACLC,IAAAA,gBAAgB,GAAGC,eAAOC,YAAP,CAAoBC,UADlC;AAELC,IAAAA,cAAc,GAAGH,eAAOC,YAAP,CAAoBG,SAFhC;AAGLC,IAAAA;AAHK,MAIFP,KAJJ;AAKA,QAAM;AAAEQ,IAAAA;AAAF,MAAqB,qBACxBC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAoBD,MAAM,CAAEE,kBAAF,CAAhC;AACA,UAAMC,UAAU,GAAGF,aAAa,CAAEH,YAAF,CAAhC;AAEA,WAAO;AACNC,MAAAA,cAAc,EAAEI;AADV,KAAP;AAGA,GARyB,EAS1B,CAAEL,YAAF,CAT0B,CAA3B;AAYA,QAAMM,cAAc,GAAG;AACtBR,IAAAA,cAAc,EAAE,CAACA,cADK;AAEtBJ,IAAAA,gBAAgB,EAAE,CAACA;AAFG,GAAvB;AAKA,SACC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGY;AAAd,KACGL,cAAc,CAACM,GAAf,CAAsBC,eAAF,IACrB,4BAAC,cAAD;AACC,IAAA,QAAQ,EAAGA,eADZ;AAEC,IAAA,GAAG,EAAGA,eAFP;AAGC,IAAA,gBAAgB,EAAGd,gBAHpB;AAIC,IAAA,cAAc,EAAGI;AAJlB,IADC,CADH,CADD;AAYA;;eAEcN,gB","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockListBlock from './block';\n\n/**\n * NOTE: This is a component currently used by the List block (V2)\n * It only passes the needed props for this block, if other blocks will use it\n * make sure you pass other props that might be required coming from:\n * components/inner-blocks/index.native.js\n */\n\nfunction BlockListCompact( props ) {\n\tconst {\n\t\tmarginHorizontal = styles.defaultBlock.marginLeft,\n\t\tmarginVertical = styles.defaultBlock.marginTop,\n\t\trootClientId,\n\t} = props;\n\tconst { blockClientIds } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder } = select( blockEditorStore );\n\t\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tblockClientIds: blockOrder,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst containerStyle = {\n\t\tmarginVertical: -marginVertical,\n\t\tmarginHorizontal: -marginHorizontal,\n\t};\n\n\treturn (\n\t\t<View style={ containerStyle }>\n\t\t\t{ blockClientIds.map( ( currentClientId ) => (\n\t\t\t\t<BlockListBlock\n\t\t\t\t\tclientId={ currentClientId }\n\t\t\t\t\tkey={ currentClientId }\n\t\t\t\t\tmarginHorizontal={ marginHorizontal }\n\t\t\t\t\tmarginVertical={ marginVertical }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</View>\n\t);\n}\n\nexport default BlockListCompact;\n"]}
@@ -94,7 +94,7 @@ function useFocusFirstElement(clientId) {
94
94
  ownerDocument
95
95
  } = ref.current; // Do not focus the block if it already contains the active element.
96
96
 
97
- if (ref.current.contains(ownerDocument.activeElement)) {
97
+ if ((0, _dom2.isInsideRootBlock)(ref.current, ownerDocument.activeElement)) {
98
98
  return;
99
99
  } // Find all tabbables within node.
100
100
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"names":["useInitialPosition","clientId","select","getSelectedBlocksInitialCaretPosition","isNavigationMode","isBlockSelected","blockEditorStore","useFocusFirstElement","ref","initialPosition","isMultiSelecting","undefined","current","ownerDocument","contains","activeElement","textInputs","focus","tabbable","find","filter","node","isReverse","target","last","first","getAttribute","focusElement","findNext"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AAMA;;AAKA;;AACA;;AArBA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,kBAAT,CAA6BC,QAA7B,EAAwC;AACvC,SAAO,qBACJC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,qCADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;;AAMA,QAAK,CAAED,eAAe,CAAEJ,QAAF,CAAtB,EAAqC;AACpC;AACA;;AAED,QAAKG,gBAAgB,EAArB,EAA0B;AACzB;AACA,KAbY,CAeb;;;AACA,WAAOD,qCAAqC,EAA5C;AACA,GAlBK,EAmBN,CAAEF,QAAF,CAnBM,CAAP;AAqBA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASM,oBAAT,CAA+BN,QAA/B,EAA0C;AAChD,QAAMO,GAAG,GAAG,sBAAZ;AACA,QAAMC,eAAe,GAAGT,kBAAkB,CAAEC,QAAF,CAA1C;AACA,QAAM;AAAEI,IAAAA,eAAF;AAAmBK,IAAAA;AAAnB,MAAwC,qBAAWJ,YAAX,CAA9C;AAEA,0BAAW,MAAM;AAChB;AACA,QAAK,CAAED,eAAe,CAAEJ,QAAF,CAAjB,IAAiCS,gBAAgB,EAAtD,EAA2D;AAC1D;AACA;;AAED,QAAKD,eAAe,KAAKE,SAApB,IAAiCF,eAAe,KAAK,IAA1D,EAAiE;AAChE;AACA;;AAED,QAAK,CAAED,GAAG,CAACI,OAAX,EAAqB;AACpB;AACA;;AAED,UAAM;AAAEC,MAAAA;AAAF,QAAoBL,GAAG,CAACI,OAA9B,CAdgB,CAgBhB;;AACA,QAAKJ,GAAG,CAACI,OAAJ,CAAYE,QAAZ,CAAsBD,aAAa,CAACE,aAApC,CAAL,EAA2D;AAC1D;AACA,KAnBe,CAqBhB;;;AACA,UAAMC,UAAU,GAAGC,WAAMC,QAAN,CACjBC,IADiB,CACXX,GAAG,CAACI,OADO,EAEjBQ,MAFiB,CAEPC,IAAF,IAAY,sBAAaA,IAAb,CAFH,CAAnB,CAtBgB,CA0BhB;AACA;;;AACA,UAAMC,SAAS,GAAG,CAAC,CAAD,KAAOb,eAAzB;AACA,UAAMc,MAAM,GACX,CAAED,SAAS,GAAGE,YAAH,GAAUC,aAArB,EAA8BT,UAA9B,KAA8CR,GAAG,CAACI,OADnD;;AAGA,QAAK,CAAE,6BAAmBJ,GAAG,CAACI,OAAvB,EAAgCW,MAAhC,CAAP,EAAkD;AACjDf,MAAAA,GAAG,CAACI,OAAJ,CAAYK,KAAZ;AACA;AACA,KAnCe,CAqChB;;;AACA,QAAK,CAAET,GAAG,CAACI,OAAJ,CAAYc,YAAZ,CAA0B,iBAA1B,CAAP,EAAuD;AACtD,YAAMC,YAAY,GAAGV,WAAMC,QAAN,CAAeU,QAAf,CAAyBpB,GAAG,CAACI,OAA7B,CAArB,CADsD,CAEtD;;;AACA,UACCe,YAAY,IACZ,6BAAmBnB,GAAG,CAACI,OAAvB,EAAgCe,YAAhC,CADA,IAEA,wBAAeA,YAAf,CAHD,EAIE;AACDA,QAAAA,YAAY,CAACV,KAAb;AACA;AACA;AACD;;AAED,yCAA4BM,MAA5B,EAAoCD,SAApC;AACA,GApDD,EAoDG,CAAEb,eAAF,EAAmBR,QAAnB,CApDH;AAsDA,SAAOO,GAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { first, last } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Returns the initial position if the block needs to be focussed, `undefined`\n * otherwise. The initial position is either 0 (start) or -1 (end).\n *\n * @param {string} clientId Block client ID.\n *\n * @return {number} The initial position, either 0 (start) or -1 (end).\n */\nfunction useInitialPosition( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t\tisNavigationMode,\n\t\t\t\tisBlockSelected,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockSelected( clientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isNavigationMode() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there's no initial position, return 0 to focus the start.\n\t\t\treturn getSelectedBlocksInitialCaretPosition();\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( clientId ) {\n\tconst ref = useRef();\n\tconst initialPosition = useInitialPosition( clientId );\n\tconst { isBlockSelected, isMultiSelecting } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif ( ! isBlockSelected( clientId ) || isMultiSelecting() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( ref.current.contains( ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\t( isReverse ? last : first )( textInputs ) || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"names":["useInitialPosition","clientId","select","getSelectedBlocksInitialCaretPosition","isNavigationMode","isBlockSelected","blockEditorStore","useFocusFirstElement","ref","initialPosition","isMultiSelecting","undefined","current","ownerDocument","activeElement","textInputs","focus","tabbable","find","filter","node","isReverse","target","last","first","getAttribute","focusElement","findNext"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AAMA;;AAKA;;AACA;;AArBA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,kBAAT,CAA6BC,QAA7B,EAAwC;AACvC,SAAO,qBACJC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,qCADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;;AAMA,QAAK,CAAED,eAAe,CAAEJ,QAAF,CAAtB,EAAqC;AACpC;AACA;;AAED,QAAKG,gBAAgB,EAArB,EAA0B;AACzB;AACA,KAbY,CAeb;;;AACA,WAAOD,qCAAqC,EAA5C;AACA,GAlBK,EAmBN,CAAEF,QAAF,CAnBM,CAAP;AAqBA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASM,oBAAT,CAA+BN,QAA/B,EAA0C;AAChD,QAAMO,GAAG,GAAG,sBAAZ;AACA,QAAMC,eAAe,GAAGT,kBAAkB,CAAEC,QAAF,CAA1C;AACA,QAAM;AAAEI,IAAAA,eAAF;AAAmBK,IAAAA;AAAnB,MAAwC,qBAAWJ,YAAX,CAA9C;AAEA,0BAAW,MAAM;AAChB;AACA,QAAK,CAAED,eAAe,CAAEJ,QAAF,CAAjB,IAAiCS,gBAAgB,EAAtD,EAA2D;AAC1D;AACA;;AAED,QAAKD,eAAe,KAAKE,SAApB,IAAiCF,eAAe,KAAK,IAA1D,EAAiE;AAChE;AACA;;AAED,QAAK,CAAED,GAAG,CAACI,OAAX,EAAqB;AACpB;AACA;;AAED,UAAM;AAAEC,MAAAA;AAAF,QAAoBL,GAAG,CAACI,OAA9B,CAdgB,CAgBhB;;AACA,QAAK,6BAAmBJ,GAAG,CAACI,OAAvB,EAAgCC,aAAa,CAACC,aAA9C,CAAL,EAAqE;AACpE;AACA,KAnBe,CAqBhB;;;AACA,UAAMC,UAAU,GAAGC,WAAMC,QAAN,CACjBC,IADiB,CACXV,GAAG,CAACI,OADO,EAEjBO,MAFiB,CAEPC,IAAF,IAAY,sBAAaA,IAAb,CAFH,CAAnB,CAtBgB,CA0BhB;AACA;;;AACA,UAAMC,SAAS,GAAG,CAAC,CAAD,KAAOZ,eAAzB;AACA,UAAMa,MAAM,GACX,CAAED,SAAS,GAAGE,YAAH,GAAUC,aAArB,EAA8BT,UAA9B,KAA8CP,GAAG,CAACI,OADnD;;AAGA,QAAK,CAAE,6BAAmBJ,GAAG,CAACI,OAAvB,EAAgCU,MAAhC,CAAP,EAAkD;AACjDd,MAAAA,GAAG,CAACI,OAAJ,CAAYI,KAAZ;AACA;AACA,KAnCe,CAqChB;;;AACA,QAAK,CAAER,GAAG,CAACI,OAAJ,CAAYa,YAAZ,CAA0B,iBAA1B,CAAP,EAAuD;AACtD,YAAMC,YAAY,GAAGV,WAAMC,QAAN,CAAeU,QAAf,CAAyBnB,GAAG,CAACI,OAA7B,CAArB,CADsD,CAEtD;;;AACA,UACCc,YAAY,IACZ,6BAAmBlB,GAAG,CAACI,OAAvB,EAAgCc,YAAhC,CADA,IAEA,wBAAeA,YAAf,CAHD,EAIE;AACDA,QAAAA,YAAY,CAACV,KAAb;AACA;AACA;AACD;;AAED,yCAA4BM,MAA5B,EAAoCD,SAApC;AACA,GApDD,EAoDG,CAAEZ,eAAF,EAAmBR,QAAnB,CApDH;AAsDA,SAAOO,GAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { first, last } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Returns the initial position if the block needs to be focussed, `undefined`\n * otherwise. The initial position is either 0 (start) or -1 (end).\n *\n * @param {string} clientId Block client ID.\n *\n * @return {number} The initial position, either 0 (start) or -1 (end).\n */\nfunction useInitialPosition( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t\tisNavigationMode,\n\t\t\t\tisBlockSelected,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockSelected( clientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isNavigationMode() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there's no initial position, return 0 to focus the start.\n\t\t\treturn getSelectedBlocksInitialCaretPosition();\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( clientId ) {\n\tconst ref = useRef();\n\tconst initialPosition = useInitialPosition( clientId );\n\tconst { isBlockSelected, isMultiSelecting } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif ( ! isBlockSelected( clientId ) || isMultiSelecting() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( isInsideRootBlock( ref.current, ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\t( isReverse ? last : first )( textInputs ) || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"]}
@@ -155,9 +155,11 @@ function BlockPopoverInbetween(_ref) {
155
155
  ownerDocument
156
156
  };
157
157
  }, [previousElement, nextElement]);
158
- const popoverScrollRef = (0, _usePopoverScroll.default)(__unstableContentRef);
158
+ const popoverScrollRef = (0, _usePopoverScroll.default)(__unstableContentRef); // If there's either a previous or a next element, show the inbetween popover.
159
+ // Note that drag and drop uses the inbetween popover to show the drop indicator
160
+ // before the first block and after the last block.
159
161
 
160
- if (!previousElement || !nextElement || !isVisible) {
162
+ if (!previousElement && !nextElement || !isVisible) {
161
163
  return null;
162
164
  }
163
165
  /* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/inbetween.js"],"names":["InsertionPointOpenRef","BlockPopoverInbetween","previousClientId","nextClientId","children","__unstablePopoverSlot","__unstableContentRef","props","orientation","rootClientId","isVisible","select","getBlockListSettings","getBlockRootClientId","isBlockVisible","blockEditorStore","_rootClientId","previousElement","nextElement","isVertical","style","previousRect","getBoundingClientRect","nextRect","width","offsetWidth","height","top","bottom","left","right","offsetHeight","getAnchorRect","ownerDocument","popoverScrollRef","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useMemo, createContext } from '@wordpress/element';\nimport { Popover } from '@wordpress/components';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nexport const InsertionPointOpenRef = createContext();\n\nfunction BlockPopoverInbetween( {\n\tpreviousClientId,\n\tnextClientId,\n\tchildren,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\t...props\n} ) {\n\tconst { orientation, rootClientId, isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockVisible,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId( previousClientId );\n\t\t\treturn {\n\t\t\t\torientation:\n\t\t\t\t\tgetBlockListSettings( _rootClientId )?.orientation ||\n\t\t\t\t\t'vertical',\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible:\n\t\t\t\t\tisBlockVisible( previousClientId ) &&\n\t\t\t\t\tisBlockVisible( nextClientId ),\n\t\t\t};\n\t\t},\n\t\t[ previousClientId ]\n\t);\n\tconst previousElement = useBlockElement( previousClientId );\n\tconst nextElement = useBlockElement( nextClientId );\n\tconst isVertical = orientation === 'vertical';\n\tconst style = useMemo( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\treturn {\n\t\t\t\twidth: previousElement\n\t\t\t\t\t? previousElement.offsetWidth\n\t\t\t\t\t: nextElement.offsetWidth,\n\t\t\t\theight:\n\t\t\t\t\tnextRect && previousRect\n\t\t\t\t\t\t? nextRect.top - previousRect.bottom\n\t\t\t\t\t\t: 0,\n\t\t\t};\n\t\t}\n\n\t\tlet width = 0;\n\t\tif ( previousRect && nextRect ) {\n\t\t\twidth = isRTL()\n\t\t\t\t? previousRect.left - nextRect.right\n\t\t\t\t: nextRect.left - previousRect.right;\n\t\t}\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight: previousElement\n\t\t\t\t? previousElement.offsetHeight\n\t\t\t\t: nextElement.offsetHeight,\n\t\t};\n\t}, [ previousElement, nextElement, isVertical ] );\n\n\tconst getAnchorRect = useCallback( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst { ownerDocument } = previousElement || nextElement;\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\tif ( isRTL() ) {\n\t\t\t\treturn {\n\t\t\t\t\ttop: previousRect ? previousRect.bottom : nextRect.top,\n\t\t\t\t\tleft: previousRect ? previousRect.right : nextRect.right,\n\t\t\t\t\tright: previousRect ? previousRect.left : nextRect.left,\n\t\t\t\t\tbottom: nextRect ? nextRect.top : previousRect.bottom,\n\t\t\t\t\theight: 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\townerDocument,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttop: previousRect ? previousRect.bottom : nextRect.top,\n\t\t\t\tleft: previousRect ? previousRect.left : nextRect.left,\n\t\t\t\tright: previousRect ? previousRect.right : nextRect.right,\n\t\t\t\tbottom: nextRect ? nextRect.top : previousRect.bottom,\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\townerDocument,\n\t\t\t};\n\t\t}\n\n\t\tif ( isRTL() ) {\n\t\t\treturn {\n\t\t\t\ttop: previousRect ? previousRect.top : nextRect.top,\n\t\t\t\tleft: previousRect ? previousRect.left : nextRect.right,\n\t\t\t\tright: nextRect ? nextRect.right : previousRect.left,\n\t\t\t\tbottom: previousRect ? previousRect.bottom : nextRect.bottom,\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\townerDocument,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttop: previousRect ? previousRect.top : nextRect.top,\n\t\t\tleft: previousRect ? previousRect.right : nextRect.left,\n\t\t\tright: nextRect ? nextRect.left : previousRect.right,\n\t\t\tbottom: previousRect ? previousRect.bottom : nextRect.bottom,\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\townerDocument,\n\t\t};\n\t}, [ previousElement, nextElement ] );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\tif ( ! previousElement || ! nextElement || ! isVisible ) {\n\t\treturn null;\n\t}\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\t// While ideally it would be enough to capture the\n\t// bubbling focus event from the Inserter, due to the\n\t// characteristics of click focusing of `button`s in\n\t// Firefox and Safari, it is not reliable.\n\t//\n\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tanimate={ false }\n\t\t\tgetAnchorRect={ getAnchorRect }\n\t\t\tfocusOnMount={ false }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t// Forces a remount of the popover when its position changes\n\t\t\t// This makes sure the popover doesn't animate from its previous position.\n\t\t\tkey={ nextClientId + '--' + rootClientId }\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\t'block-editor-block-popover__inbetween',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t\t__unstableForcePosition\n\t\t>\n\t\t\t<div style={ style }>{ children }</div>\n\t\t</Popover>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n}\n\nexport default BlockPopoverInbetween;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/inbetween.js"],"names":["InsertionPointOpenRef","BlockPopoverInbetween","previousClientId","nextClientId","children","__unstablePopoverSlot","__unstableContentRef","props","orientation","rootClientId","isVisible","select","getBlockListSettings","getBlockRootClientId","isBlockVisible","blockEditorStore","_rootClientId","previousElement","nextElement","isVertical","style","previousRect","getBoundingClientRect","nextRect","width","offsetWidth","height","top","bottom","left","right","offsetHeight","getAnchorRect","ownerDocument","popoverScrollRef","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useMemo, createContext } from '@wordpress/element';\nimport { Popover } from '@wordpress/components';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nexport const InsertionPointOpenRef = createContext();\n\nfunction BlockPopoverInbetween( {\n\tpreviousClientId,\n\tnextClientId,\n\tchildren,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\t...props\n} ) {\n\tconst { orientation, rootClientId, isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockVisible,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId( previousClientId );\n\t\t\treturn {\n\t\t\t\torientation:\n\t\t\t\t\tgetBlockListSettings( _rootClientId )?.orientation ||\n\t\t\t\t\t'vertical',\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible:\n\t\t\t\t\tisBlockVisible( previousClientId ) &&\n\t\t\t\t\tisBlockVisible( nextClientId ),\n\t\t\t};\n\t\t},\n\t\t[ previousClientId ]\n\t);\n\tconst previousElement = useBlockElement( previousClientId );\n\tconst nextElement = useBlockElement( nextClientId );\n\tconst isVertical = orientation === 'vertical';\n\tconst style = useMemo( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\treturn {\n\t\t\t\twidth: previousElement\n\t\t\t\t\t? previousElement.offsetWidth\n\t\t\t\t\t: nextElement.offsetWidth,\n\t\t\t\theight:\n\t\t\t\t\tnextRect && previousRect\n\t\t\t\t\t\t? nextRect.top - previousRect.bottom\n\t\t\t\t\t\t: 0,\n\t\t\t};\n\t\t}\n\n\t\tlet width = 0;\n\t\tif ( previousRect && nextRect ) {\n\t\t\twidth = isRTL()\n\t\t\t\t? previousRect.left - nextRect.right\n\t\t\t\t: nextRect.left - previousRect.right;\n\t\t}\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight: previousElement\n\t\t\t\t? previousElement.offsetHeight\n\t\t\t\t: nextElement.offsetHeight,\n\t\t};\n\t}, [ previousElement, nextElement, isVertical ] );\n\n\tconst getAnchorRect = useCallback( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst { ownerDocument } = previousElement || nextElement;\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\tif ( isRTL() ) {\n\t\t\t\treturn {\n\t\t\t\t\ttop: previousRect ? previousRect.bottom : nextRect.top,\n\t\t\t\t\tleft: previousRect ? previousRect.right : nextRect.right,\n\t\t\t\t\tright: previousRect ? previousRect.left : nextRect.left,\n\t\t\t\t\tbottom: nextRect ? nextRect.top : previousRect.bottom,\n\t\t\t\t\theight: 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\townerDocument,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttop: previousRect ? previousRect.bottom : nextRect.top,\n\t\t\t\tleft: previousRect ? previousRect.left : nextRect.left,\n\t\t\t\tright: previousRect ? previousRect.right : nextRect.right,\n\t\t\t\tbottom: nextRect ? nextRect.top : previousRect.bottom,\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\townerDocument,\n\t\t\t};\n\t\t}\n\n\t\tif ( isRTL() ) {\n\t\t\treturn {\n\t\t\t\ttop: previousRect ? previousRect.top : nextRect.top,\n\t\t\t\tleft: previousRect ? previousRect.left : nextRect.right,\n\t\t\t\tright: nextRect ? nextRect.right : previousRect.left,\n\t\t\t\tbottom: previousRect ? previousRect.bottom : nextRect.bottom,\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\townerDocument,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttop: previousRect ? previousRect.top : nextRect.top,\n\t\t\tleft: previousRect ? previousRect.right : nextRect.left,\n\t\t\tright: nextRect ? nextRect.left : previousRect.right,\n\t\t\tbottom: previousRect ? previousRect.bottom : nextRect.bottom,\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\townerDocument,\n\t\t};\n\t}, [ previousElement, nextElement ] );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\t// If there's either a previous or a next element, show the inbetween popover.\n\t// Note that drag and drop uses the inbetween popover to show the drop indicator\n\t// before the first block and after the last block.\n\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\treturn null;\n\t}\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\t// While ideally it would be enough to capture the\n\t// bubbling focus event from the Inserter, due to the\n\t// characteristics of click focusing of `button`s in\n\t// Firefox and Safari, it is not reliable.\n\t//\n\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tanimate={ false }\n\t\t\tgetAnchorRect={ getAnchorRect }\n\t\t\tfocusOnMount={ false }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t// Forces a remount of the popover when its position changes\n\t\t\t// This makes sure the popover doesn't animate from its previous position.\n\t\t\tkey={ nextClientId + '--' + rootClientId }\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\t'block-editor-block-popover__inbetween',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t\t__unstableForcePosition\n\t\t>\n\t\t\t<div style={ style }>{ children }</div>\n\t\t</Popover>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n}\n\nexport default BlockPopoverInbetween;\n"]}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = BlockPopover;
8
+ exports.default = void 0;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
 
16
+ var _compose = require("@wordpress/compose");
17
+
16
18
  var _components = require("@wordpress/components");
17
19
 
18
20
  var _useBlockRefs = require("../block-list/use-block-props/use-block-refs");
@@ -30,7 +32,7 @@ var _usePopoverScroll = _interopRequireDefault(require("./use-popover-scroll"));
30
32
  /**
31
33
  * Internal dependencies
32
34
  */
33
- function BlockPopover(_ref) {
35
+ function BlockPopover(_ref, ref) {
34
36
  let {
35
37
  clientId,
36
38
  bottomClientId,
@@ -43,7 +45,7 @@ function BlockPopover(_ref) {
43
45
  } = _ref;
44
46
  const selectedElement = (0, _useBlockRefs.__unstableUseBlockElement)(clientId);
45
47
  const lastSelectedElement = (0, _useBlockRefs.__unstableUseBlockElement)(bottomClientId !== null && bottomClientId !== void 0 ? bottomClientId : clientId);
46
- const popoverScrollRef = (0, _usePopoverScroll.default)(__unstableContentRef);
48
+ const mergedRefs = (0, _compose.useMergeRefs)([ref, (0, _usePopoverScroll.default)(__unstableContentRef)]);
47
49
  const style = (0, _element.useMemo)(() => {
48
50
  if (!selectedElement || lastSelectedElement !== selectedElement) {
49
51
  return {};
@@ -65,16 +67,14 @@ function BlockPopover(_ref) {
65
67
  bottom: lastSelectedElement
66
68
  };
67
69
  return (0, _element.createElement)(_components.Popover, (0, _extends2.default)({
68
- ref: popoverScrollRef,
70
+ ref: mergedRefs,
69
71
  animate: false,
70
72
  position: "top right left",
71
73
  focusOnMount: false,
72
74
  anchorRef: anchorRef // Render in the old slot if needed for backward compatibility,
73
75
  // otherwise render in place (not in the default popover slot).
74
76
  ,
75
- __unstableSlotName: __unstablePopoverSlot || null // Observe movement for block animations (especially horizontal).
76
- ,
77
- __unstableObserveElement: selectedElement,
77
+ __unstableSlotName: __unstablePopoverSlot || null,
78
78
  __unstableForcePosition: true,
79
79
  __unstableShift: true
80
80
  }, props, {
@@ -83,4 +83,8 @@ function BlockPopover(_ref) {
83
83
  style: style
84
84
  }, children), !__unstableCoverTarget && children);
85
85
  }
86
+
87
+ var _default = (0, _element.forwardRef)(BlockPopover);
88
+
89
+ exports.default = _default;
86
90
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/index.js"],"names":["BlockPopover","clientId","bottomClientId","children","__unstableRefreshSize","__unstableCoverTarget","__unstablePopoverSlot","__unstableContentRef","props","selectedElement","lastSelectedElement","popoverScrollRef","style","position","width","offsetWidth","height","offsetHeight","anchorRef","top","bottom","className"],"mappings":";;;;;;;;;AASA;;;;AANA;;AAKA;;AAMA;;AACA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;AAIe,SAASA,YAAT,OASX;AAAA,MATkC;AACrCC,IAAAA,QADqC;AAErCC,IAAAA,cAFqC;AAGrCC,IAAAA,QAHqC;AAIrCC,IAAAA,qBAJqC;AAKrCC,IAAAA,qBAAqB,GAAG,KALa;AAMrCC,IAAAA,qBANqC;AAOrCC,IAAAA,oBAPqC;AAQrC,OAAGC;AARkC,GASlC;AACH,QAAMC,eAAe,GAAG,6CAAiBR,QAAjB,CAAxB;AACA,QAAMS,mBAAmB,GAAG,6CAAiBR,cAAjB,aAAiBA,cAAjB,cAAiBA,cAAjB,GAAmCD,QAAnC,CAA5B;AACA,QAAMU,gBAAgB,GAAG,+BAAkBJ,oBAAlB,CAAzB;AACA,QAAMK,KAAK,GAAG,sBAAS,MAAM;AAC5B,QAAK,CAAEH,eAAF,IAAqBC,mBAAmB,KAAKD,eAAlD,EAAoE;AACnE,aAAO,EAAP;AACA;;AAED,WAAO;AACNI,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAEL,eAAe,CAACM,WAFjB;AAGNC,MAAAA,MAAM,EAAEP,eAAe,CAACQ;AAHlB,KAAP;AAKA,GAVa,EAUX,CAAER,eAAF,EAAmBC,mBAAnB,EAAwCN,qBAAxC,CAVW,CAAd;;AAYA,MAAK,CAAEK,eAAF,IAAuBP,cAAc,IAAI,CAAEQ,mBAAhD,EAAwE;AACvE,WAAO,IAAP;AACA;;AAED,QAAMQ,SAAS,GAAG;AACjBC,IAAAA,GAAG,EAAEV,eADY;AAEjBW,IAAAA,MAAM,EAAEV;AAFS,GAAlB;AAKA,SACC,4BAAC,mBAAD;AACC,IAAA,GAAG,EAAGC,gBADP;AAEC,IAAA,OAAO,EAAG,KAFX;AAGC,IAAA,QAAQ,EAAC,gBAHV;AAIC,IAAA,YAAY,EAAG,KAJhB;AAKC,IAAA,SAAS,EAAGO,SALb,CAMC;AACA;AAPD;AAQC,IAAA,kBAAkB,EAAGZ,qBAAqB,IAAI,IAR/C,CASC;AATD;AAUC,IAAA,wBAAwB,EAAGG,eAV5B;AAWC,IAAA,uBAAuB,MAXxB;AAYC,IAAA,eAAe;AAZhB,KAaMD,KAbN;AAcC,IAAA,SAAS,EAAG,yBACX,4BADW,EAEXA,KAAK,CAACa,SAFK;AAdb,MAmBGhB,qBAAqB,IAAI;AAAK,IAAA,KAAK,EAAGO;AAAb,KAAuBT,QAAvB,CAnB5B,EAoBG,CAAEE,qBAAF,IAA2BF,QApB9B,CADD;AAwBA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Popover } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nexport default function BlockPopover( {\n\tclientId,\n\tbottomClientId,\n\tchildren,\n\t__unstableRefreshSize,\n\t__unstableCoverTarget = false,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\t...props\n} ) {\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( bottomClientId ?? clientId );\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\tconst style = useMemo( () => {\n\t\tif ( ! selectedElement || lastSelectedElement !== selectedElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\twidth: selectedElement.offsetWidth,\n\t\t\theight: selectedElement.offsetHeight,\n\t\t};\n\t}, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );\n\n\tif ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {\n\t\treturn null;\n\t}\n\n\tconst anchorRef = {\n\t\ttop: selectedElement,\n\t\tbottom: lastSelectedElement,\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tanimate={ false }\n\t\t\tposition=\"top right left\"\n\t\t\tfocusOnMount={ false }\n\t\t\tanchorRef={ anchorRef }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t// Observe movement for block animations (especially horizontal).\n\t\t\t__unstableObserveElement={ selectedElement }\n\t\t\t__unstableForcePosition\n\t\t\t__unstableShift\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t>\n\t\t\t{ __unstableCoverTarget && <div style={ style }>{ children }</div> }\n\t\t\t{ ! __unstableCoverTarget && children }\n\t\t</Popover>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/index.js"],"names":["BlockPopover","ref","clientId","bottomClientId","children","__unstableRefreshSize","__unstableCoverTarget","__unstablePopoverSlot","__unstableContentRef","props","selectedElement","lastSelectedElement","mergedRefs","style","position","width","offsetWidth","height","offsetHeight","anchorRef","top","bottom","className"],"mappings":";;;;;;;;;AAUA;;;;AAPA;;AAKA;;AACA;;AAMA;;AACA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AAIA,SAASA,YAAT,OAWCC,GAXD,EAYE;AAAA,MAXD;AACCC,IAAAA,QADD;AAECC,IAAAA,cAFD;AAGCC,IAAAA,QAHD;AAICC,IAAAA,qBAJD;AAKCC,IAAAA,qBAAqB,GAAG,KALzB;AAMCC,IAAAA,qBAND;AAOCC,IAAAA,oBAPD;AAQC,OAAGC;AARJ,GAWC;AACD,QAAMC,eAAe,GAAG,6CAAiBR,QAAjB,CAAxB;AACA,QAAMS,mBAAmB,GAAG,6CAAiBR,cAAjB,aAAiBA,cAAjB,cAAiBA,cAAjB,GAAmCD,QAAnC,CAA5B;AACA,QAAMU,UAAU,GAAG,2BAAc,CAChCX,GADgC,EAEhC,+BAAkBO,oBAAlB,CAFgC,CAAd,CAAnB;AAIA,QAAMK,KAAK,GAAG,sBAAS,MAAM;AAC5B,QAAK,CAAEH,eAAF,IAAqBC,mBAAmB,KAAKD,eAAlD,EAAoE;AACnE,aAAO,EAAP;AACA;;AAED,WAAO;AACNI,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAEL,eAAe,CAACM,WAFjB;AAGNC,MAAAA,MAAM,EAAEP,eAAe,CAACQ;AAHlB,KAAP;AAKA,GAVa,EAUX,CAAER,eAAF,EAAmBC,mBAAnB,EAAwCN,qBAAxC,CAVW,CAAd;;AAYA,MAAK,CAAEK,eAAF,IAAuBP,cAAc,IAAI,CAAEQ,mBAAhD,EAAwE;AACvE,WAAO,IAAP;AACA;;AAED,QAAMQ,SAAS,GAAG;AACjBC,IAAAA,GAAG,EAAEV,eADY;AAEjBW,IAAAA,MAAM,EAAEV;AAFS,GAAlB;AAKA,SACC,4BAAC,mBAAD;AACC,IAAA,GAAG,EAAGC,UADP;AAEC,IAAA,OAAO,EAAG,KAFX;AAGC,IAAA,QAAQ,EAAC,gBAHV;AAIC,IAAA,YAAY,EAAG,KAJhB;AAKC,IAAA,SAAS,EAAGO,SALb,CAMC;AACA;AAPD;AAQC,IAAA,kBAAkB,EAAGZ,qBAAqB,IAAI,IAR/C;AASC,IAAA,uBAAuB,MATxB;AAUC,IAAA,eAAe;AAVhB,KAWME,KAXN;AAYC,IAAA,SAAS,EAAG,yBACX,4BADW,EAEXA,KAAK,CAACa,SAFK;AAZb,MAiBGhB,qBAAqB,IAAI;AAAK,IAAA,KAAK,EAAGO;AAAb,KAAuBT,QAAvB,CAjB5B,EAkBG,CAAEE,qBAAF,IAA2BF,QAlB9B,CADD;AAsBA;;eAEc,yBAAYJ,YAAZ,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { Popover } from '@wordpress/components';\nimport { forwardRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nfunction BlockPopover(\n\t{\n\t\tclientId,\n\t\tbottomClientId,\n\t\tchildren,\n\t\t__unstableRefreshSize,\n\t\t__unstableCoverTarget = false,\n\t\t__unstablePopoverSlot,\n\t\t__unstableContentRef,\n\t\t...props\n\t},\n\tref\n) {\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( bottomClientId ?? clientId );\n\tconst mergedRefs = useMergeRefs( [\n\t\tref,\n\t\tusePopoverScroll( __unstableContentRef ),\n\t] );\n\tconst style = useMemo( () => {\n\t\tif ( ! selectedElement || lastSelectedElement !== selectedElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\twidth: selectedElement.offsetWidth,\n\t\t\theight: selectedElement.offsetHeight,\n\t\t};\n\t}, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );\n\n\tif ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {\n\t\treturn null;\n\t}\n\n\tconst anchorRef = {\n\t\ttop: selectedElement,\n\t\tbottom: lastSelectedElement,\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ mergedRefs }\n\t\t\tanimate={ false }\n\t\t\tposition=\"top right left\"\n\t\t\tfocusOnMount={ false }\n\t\t\tanchorRef={ anchorRef }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t__unstableForcePosition\n\t\t\t__unstableShift\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t>\n\t\t\t{ __unstableCoverTarget && <div style={ style }>{ children }</div> }\n\t\t\t{ ! __unstableCoverTarget && children }\n\t\t</Popover>\n\t);\n}\n\nexport default forwardRef( BlockPopover );\n"]}
@@ -16,8 +16,6 @@ var _components = require("@wordpress/components");
16
16
 
17
17
  var _blockSettingsDropdown = _interopRequireDefault(require("./block-settings-dropdown"));
18
18
 
19
- var _blockEditVisuallyButton = _interopRequireDefault(require("./block-edit-visually-button"));
20
-
21
19
  /**
22
20
  * WordPress dependencies
23
21
  */
@@ -30,12 +28,10 @@ function BlockSettingsMenu(_ref) {
30
28
  clientIds,
31
29
  ...props
32
30
  } = _ref;
33
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditVisuallyButton.default, (0, _extends2.default)({
34
- clientIds: clientIds
35
- }, props)), (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarItem, null, toggleProps => (0, _element.createElement)(_blockSettingsDropdown.default, (0, _extends2.default)({
31
+ return (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarItem, null, toggleProps => (0, _element.createElement)(_blockSettingsDropdown.default, (0, _extends2.default)({
36
32
  clientIds: clientIds,
37
33
  toggleProps: toggleProps
38
- }, props)))));
34
+ }, props))));
39
35
  }
40
36
 
41
37
  var _default = BlockSettingsMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/index.js"],"names":["BlockSettingsMenu","clientIds","props","toggleProps"],"mappings":";;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;AATA;AACA;AACA;;AAGA;AACA;AACA;AAIO,SAASA,iBAAT,OAAsD;AAAA,MAA1B;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,GAA0B;AAC5D,SACC,qDACC,4BAAC,gCAAD;AAAyB,IAAA,SAAS,EAAGD;AAArC,KAAsDC,KAAtD,EADD,EAEC,4BAAC,wBAAD,QACC,4BAAC,uBAAD,QACKC,WAAF,IACD,4BAAC,8BAAD;AACC,IAAA,SAAS,EAAGF,SADb;AAEC,IAAA,WAAW,EAAGE;AAFf,KAGMD,KAHN,EAFF,CADD,CAFD,CADD;AAgBA;;eAEcF,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockSettingsDropdown from './block-settings-dropdown';\nimport BlockEditVisuallyButton from './block-edit-visually-button';\n\nexport function BlockSettingsMenu( { clientIds, ...props } ) {\n\treturn (\n\t\t<>\n\t\t\t<BlockEditVisuallyButton clientIds={ clientIds } { ...props } />\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarItem>\n\t\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarItem>\n\t\t\t</ToolbarGroup>\n\t\t</>\n\t);\n}\n\nexport default BlockSettingsMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/index.js"],"names":["BlockSettingsMenu","clientIds","props","toggleProps"],"mappings":";;;;;;;;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;AAGO,SAASA,iBAAT,OAAsD;AAAA,MAA1B;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,GAA0B;AAC5D,SACC,4BAAC,wBAAD,QACC,4BAAC,uBAAD,QACKC,WAAF,IACD,4BAAC,8BAAD;AACC,IAAA,SAAS,EAAGF,SADb;AAEC,IAAA,WAAW,EAAGE;AAFf,KAGMD,KAHN,EAFF,CADD,CADD;AAaA;;eAEcF,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockSettingsDropdown from './block-settings-dropdown';\n\nexport function BlockSettingsMenu( { clientIds, ...props } ) {\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockSettingsMenu;\n"]}
@@ -27,14 +27,14 @@ var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-d
27
27
 
28
28
  var _blockIcon = _interopRequireDefault(require("../block-icon"));
29
29
 
30
- var _blockTitle = _interopRequireDefault(require("../block-title"));
31
-
32
30
  var _blockTransformationsMenu = _interopRequireDefault(require("./block-transformations-menu"));
33
31
 
34
32
  var _blockStylesMenu = _interopRequireDefault(require("./block-styles-menu"));
35
33
 
36
34
  var _patternTransformationsMenu = _interopRequireDefault(require("./pattern-transformations-menu"));
37
35
 
36
+ var _useBlockDisplayTitle = _interopRequireDefault(require("../block-title/use-block-display-title"));
37
+
38
38
  /**
39
39
  * External dependencies
40
40
  */
@@ -60,11 +60,8 @@ const BlockSwitcherDropdownMenu = _ref => {
60
60
  canRemove,
61
61
  hasBlockStyles,
62
62
  icon,
63
- blockTitle,
64
63
  patterns
65
64
  } = (0, _data.useSelect)(select => {
66
- var _getBlockType2;
67
-
68
65
  const {
69
66
  getBlockRootClientId,
70
67
  getBlockTransformItems,
@@ -93,12 +90,12 @@ const BlockSwitcherDropdownMenu = _ref => {
93
90
  } else {
94
91
  var _getBlockType;
95
92
 
96
- const isSelectionOfSameType = (0, _lodash.uniq)(blocks.map(_ref2 => {
93
+ const isSelectionOfSameType = new Set(blocks.map(_ref2 => {
97
94
  let {
98
95
  name
99
96
  } = _ref2;
100
97
  return name;
101
- })).length === 1; // When selection consists of blocks of multiple types, display an
98
+ })).size === 1; // When selection consists of blocks of multiple types, display an
102
99
  // appropriate icon to communicate the non-uniformity.
103
100
 
104
101
  _icon = isSelectionOfSameType ? (_getBlockType = getBlockType(firstBlockName)) === null || _getBlockType === void 0 ? void 0 : _getBlockType.icon : _icons.copy;
@@ -109,10 +106,13 @@ const BlockSwitcherDropdownMenu = _ref => {
109
106
  canRemove: canRemoveBlocks(clientIds, rootClientId),
110
107
  hasBlockStyles: !!(styles !== null && styles !== void 0 && styles.length),
111
108
  icon: _icon,
112
- blockTitle: (_getBlockType2 = getBlockType(firstBlockName)) === null || _getBlockType2 === void 0 ? void 0 : _getBlockType2.title,
113
109
  patterns: __experimentalGetPatternTransformItems(blocks, rootClientId)
114
110
  };
115
111
  }, [clientIds, blocks, blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.icon]);
112
+ const blockTitle = (0, _useBlockDisplayTitle.default)({
113
+ clientId: Array.isArray(clientIds) ? clientIds[0] : clientIds,
114
+ maximumLength: 35
115
+ });
116
116
  const isReusable = blocks.length === 1 && (0, _blocks.isReusableBlock)(blocks[0]);
117
117
  const isTemplate = blocks.length === 1 && (0, _blocks.isTemplatePart)(blocks[0]); // Simple block tranformation based on the `Block Transforms` API.
118
118
 
@@ -140,10 +140,7 @@ const BlockSwitcherDropdownMenu = _ref => {
140
140
  showColors: true
141
141
  }), (isReusable || isTemplate) && (0, _element.createElement)("span", {
142
142
  className: "block-editor-block-switcher__toggle-text"
143
- }, (0, _element.createElement)(_blockTitle.default, {
144
- clientId: clientIds,
145
- maximumLength: 35
146
- })))
143
+ }, blockTitle))
147
144
  }));
148
145
  }
149
146
 
@@ -168,10 +165,7 @@ const BlockSwitcherDropdownMenu = _ref => {
168
165
  showColors: true
169
166
  }), (isReusable || isTemplate) && (0, _element.createElement)("span", {
170
167
  className: "block-editor-block-switcher__toggle-text"
171
- }, (0, _element.createElement)(_blockTitle.default, {
172
- clientId: clientIds,
173
- maximumLength: 35
174
- }))),
168
+ }, blockTitle)),
175
169
  toggleProps: {
176
170
  describedBy: blockSwitcherDescription,
177
171
  ...toggleProps
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","blocksStore","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","map","copy","title","isReusable","isTemplate","onBlockTransform","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","isAlternate","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, uniq } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTitle from '../block-title';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tblockTitle,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tcastArray( clientIds )[ 0 ]\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tuniq( blocks.map( ( { name } ) => name ) ).length === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tblockTitle: getBlockType( firstBlockName )?.title,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tconst onBlockTransform = ( name ) =>\n\t\treplaceBlocks( clientIds, switchToBlockType( blocks, name ) );\n\t// Pattern transformation through the `Patterns` API.\n\tconst onPatternTransform = ( transformedBlocks ) =>\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tisAlternate: true,\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","blocksStore","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","Set","map","size","copy","blockTitle","Array","isArray","maximumLength","isReusable","isTemplate","onBlockTransform","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","isAlternate","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AAMA;;AAMA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAjCA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;AASO,MAAMA,yBAAyB,GAAG,QAA6B;AAAA,MAA3B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,GAA2B;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAoB,uBAAaC,YAAb,CAA1B;AACA,QAAMC,gBAAgB,GAAG,yCAA4BH,MAAM,CAAE,CAAF,CAAN,CAAYI,QAAxC,CAAzB;AACA,QAAM;AACLC,IAAAA,4BADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,IAJK;AAKLC,IAAAA;AALK,MAMF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,oBADK;AAELC,MAAAA,sBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAER,YAAF,CAJV;AAKA,UAAM;AAAEY,MAAAA,cAAF;AAAkBC,MAAAA;AAAlB,QAAmCL,MAAM,CAAEM,aAAF,CAA/C;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAsBP,MAAM,CAAER,YAAF,CAAlC;AACA,UAAMgB,YAAY,GAAGP,oBAAoB,CACxC,uBAAWZ,SAAX,EAAwB,CAAxB,CADwC,CAAzC;AAGA,UAAM,CAAE;AAAEoB,MAAAA,IAAI,EAAEC;AAAR,KAAF,IAA+BpB,MAArC;;AACA,UAAMqB,sBAAsB,GAAGrB,MAAM,CAACsB,MAAP,KAAkB,CAAjD;;AACA,UAAMC,MAAM,GACXF,sBAAsB,IAAIP,cAAc,CAAEM,cAAF,CADzC;;AAEA,QAAII,KAAJ;;AACA,QAAKH,sBAAL,EAA8B;AAC7BG,MAAAA,KAAK,GAAGrB,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAEK,IAA1B,CAD6B,CACG;AAChC,KAFD,MAEO;AAAA;;AACN,YAAMiB,qBAAqB,GAC1B,IAAIC,GAAJ,CAAS1B,MAAM,CAAC2B,GAAP,CAAY;AAAA,YAAE;AAAER,UAAAA;AAAF,SAAF;AAAA,eAAgBA,IAAhB;AAAA,OAAZ,CAAT,EAA8CS,IAA9C,KAAuD,CADxD,CADM,CAGN;AACA;;AACAJ,MAAAA,KAAK,GAAGC,qBAAqB,oBAC1BV,YAAY,CAAEK,cAAF,CADc,kDAC1B,cAAgCZ,IADN,GAE1BqB,WAFH;AAGA;;AACD,WAAO;AACNxB,MAAAA,4BAA4B,EAAEO,sBAAsB,CACnDZ,MADmD,EAEnDkB,YAFmD,CAD9C;AAKNZ,MAAAA,SAAS,EAAEW,eAAe,CAAElB,SAAF,EAAamB,YAAb,CALpB;AAMNX,MAAAA,cAAc,EAAE,CAAC,EAAEgB,MAAF,aAAEA,MAAF,eAAEA,MAAM,CAAED,MAAV,CANX;AAONd,MAAAA,IAAI,EAAEgB,KAPA;AAQNf,MAAAA,QAAQ,EAAEI,sCAAsC,CAC/Cb,MAD+C,EAE/CkB,YAF+C;AAR1C,KAAP;AAaA,GAzCE,EA0CH,CAAEnB,SAAF,EAAaC,MAAb,EAAqBG,gBAArB,aAAqBA,gBAArB,uBAAqBA,gBAAgB,CAAEK,IAAvC,CA1CG,CANJ;AAmDA,QAAMsB,UAAU,GAAG,mCAAsB;AACxC1B,IAAAA,QAAQ,EAAE2B,KAAK,CAACC,OAAN,CAAejC,SAAf,IAA6BA,SAAS,CAAE,CAAF,CAAtC,GAA8CA,SADhB;AAExCkC,IAAAA,aAAa,EAAE;AAFyB,GAAtB,CAAnB;AAIA,QAAMC,UAAU,GAAGlC,MAAM,CAACsB,MAAP,KAAkB,CAAlB,IAAuB,6BAAiBtB,MAAM,CAAE,CAAF,CAAvB,CAA1C;AACA,QAAMmC,UAAU,GAAGnC,MAAM,CAACsB,MAAP,KAAkB,CAAlB,IAAuB,4BAAgBtB,MAAM,CAAE,CAAF,CAAtB,CAA1C,CA3DqE,CA6DrE;;AACA,QAAMoC,gBAAgB,GAAKjB,IAAF,IACxBlB,aAAa,CAAEF,SAAF,EAAa,+BAAmBC,MAAnB,EAA2BmB,IAA3B,CAAb,CADd,CA9DqE,CAgErE;;;AACA,QAAMkB,kBAAkB,GAAKC,iBAAF,IAC1BrC,aAAa,CAAEF,SAAF,EAAauC,iBAAb,CADd;AAGA;AACD;AACA;AACA;AACA;;;AACC,QAAMC,+BAA+B,GACpC,CAAC,CAAElC,4BAA4B,CAACiB,MAAhC,IAA0ChB,SAA1C,IAAuD,CAAE6B,UAD1D;AAEA,QAAMK,wBAAwB,GAAG,CAAC,EAAE/B,QAAF,aAAEA,QAAF,eAAEA,QAAQ,CAAEa,MAAZ,CAAD,IAAuBhB,SAAxD;;AACA,MAAK,CAAEC,cAAF,IAAoB,CAAEgC,+BAA3B,EAA6D;AAC5D,WACC,4BAAC,wBAAD,QACC,4BAAC,yBAAD;AACC,MAAA,QAAQ,MADT;AAEC,MAAA,SAAS,EAAC,+CAFX;AAGC,MAAA,KAAK,EAAGT,UAHT;AAIC,MAAA,IAAI,EACH,qDACC,4BAAC,kBAAD;AAAW,QAAA,IAAI,EAAGtB,IAAlB;AAAyB,QAAA,UAAU;AAAnC,QADD,EAEG,CAAE0B,UAAU,IAAIC,UAAhB,KACD;AAAM,QAAA,SAAS,EAAC;AAAhB,SACGL,UADH,CAHF;AALF,MADD,CADD;AAmBA;;AAED,QAAMW,kBAAkB,GAAGX,UAA3B;AAEA,QAAMY,wBAAwB,GAC7B,MAAM1C,MAAM,CAACsB,MAAb,GACG;AACA;AACA,gBAAI,gCAAJ,CAFA,EAGAQ,UAHA,CADH,GAMG;AACA;AACA,gBACC,yBADD,EAEC,0BAFD,EAGC9B,MAAM,CAACsB,MAHR,CAFA,EAOAtB,MAAM,CAACsB,MAPP,CAPJ;AAiBA,QAAMqB,YAAY,GACjBpC,cAAc,IACdgC,+BADA,IAEAC,wBAHD;AAIA,SACC,4BAAC,wBAAD,QACC,4BAAC,uBAAD,QACKI,WAAF,IACD,4BAAC,wBAAD;AACC,IAAA,SAAS,EAAC,6BADX;AAEC,IAAA,KAAK,EAAGH,kBAFT;AAGC,IAAA,YAAY,EAAG;AACdI,MAAAA,QAAQ,EAAE,cADI;AAEdC,MAAAA,WAAW,EAAE,IAFC;AAGdC,MAAAA,SAAS,EAAE;AAHG,KAHhB;AAQC,IAAA,IAAI,EACH,qDACC,4BAAC,kBAAD;AACC,MAAA,IAAI,EAAGvC,IADR;AAEC,MAAA,SAAS,EAAC,qCAFX;AAGC,MAAA,UAAU;AAHX,MADD,EAMG,CAAE0B,UAAU,IAAIC,UAAhB,KACD;AAAM,MAAA,SAAS,EAAC;AAAhB,OACGL,UADH,CAPF,CATF;AAsBC,IAAA,WAAW,EAAG;AACbkB,MAAAA,WAAW,EAAEN,wBADA;AAEb,SAAGE;AAFU,KAtBf;AA0BC,IAAA,SAAS,EAAG;AAAEK,MAAAA,WAAW,EAAE;AAAf;AA1Bb,KA4BG;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACDP,YAAY,IACX;AAAK,MAAA,SAAS,EAAC;AAAf,OACGH,wBAAwB,IACzB,4BAAC,mCAAD;AACC,MAAA,MAAM,EAAGxC,MADV;AAEC,MAAA,QAAQ,EAAGS,QAFZ;AAGC,MAAA,QAAQ,EACP6B,iBADU,IAEN;AACJD,QAAAA,kBAAkB,CACjBC,iBADiB,CAAlB;AAGAY,QAAAA,OAAO;AACP;AAVF,MAFF,EAeGX,+BAA+B,IAChC,4BAAC,iCAAD;AACC,MAAA,SAAS,EAAC,oDADX;AAEC,MAAA,4BAA4B,EAC3BlC,4BAHF;AAKC,MAAA,MAAM,EAAGL,MALV;AAMC,MAAA,QAAQ,EAAKmB,IAAF,IAAY;AACtBiB,QAAAA,gBAAgB,CAAEjB,IAAF,CAAhB;AACA+B,QAAAA,OAAO;AACP;AATF,MAhBF,EA4BG3C,cAAc,IACf,4BAAC,wBAAD;AACC,MAAA,YAAY,EAAGP,MAAM,CAAE,CAAF,CADtB;AAEC,MAAA,QAAQ,EAAGkD;AAFZ,MA7BF,CAFA;AAAA,GA5BH,CAFF,CADD,CADD;AA4EA,CArMM;;;;AAuMA,MAAMC,aAAa,GAAG,SAAqB;AAAA,MAAnB;AAAEpD,IAAAA;AAAF,GAAmB;AACjD,QAAMC,MAAM,GAAG,qBACZU,MAAF,IACCA,MAAM,CAAER,YAAF,CAAN,CAA2BkD,mBAA3B,CAAgDrD,SAAhD,CAFa,EAGd,CAAEA,SAAF,CAHc,CAAf;;AAMA,MAAK,CAAEC,MAAM,CAACsB,MAAT,IAAmBtB,MAAM,CAACqD,IAAP,CAAeC,KAAF,IAAa,CAAEA,KAA5B,CAAxB,EAA8D;AAC7D,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,yBAAD;AAA2B,IAAA,SAAS,EAAGvD,SAAvC;AAAmD,IAAA,MAAM,EAAGC;AAA5D,IADD;AAGA,CAdM;;;eAgBQmD,a","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tcastArray( clientIds )[ 0 ]\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,\n\t\tmaximumLength: 35,\n\t} );\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tconst onBlockTransform = ( name ) =>\n\t\treplaceBlocks( clientIds, switchToBlockType( blocks, name ) );\n\t// Pattern transformation through the `Patterns` API.\n\tconst onPatternTransform = ( transformedBlocks ) =>\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tisAlternate: true,\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
@@ -37,6 +37,8 @@ var _blockLock = require("../block-lock");
37
37
 
38
38
  var _convertToGroupButtons = require("../convert-to-group-buttons");
39
39
 
40
+ var _blockEditVisuallyButton = _interopRequireDefault(require("../block-edit-visually-button"));
41
+
40
42
  var _utils = require("./utils");
41
43
 
42
44
  var _store = require("../../store");
@@ -161,7 +163,9 @@ const BlockToolbar = _ref => {
161
163
  className: "block-editor-block-toolbar__slot"
162
164
  }), (0, _element.createElement)(_blockNameContext.default.Provider, {
163
165
  value: blockType === null || blockType === void 0 ? void 0 : blockType.name
164
- }, (0, _element.createElement)(_blockToolbarLastItem.default.Slot, null))), (0, _element.createElement)(_blockSettingsMenu.default, {
166
+ }, (0, _element.createElement)(_blockToolbarLastItem.default.Slot, null))), (0, _element.createElement)(_blockEditVisuallyButton.default, {
167
+ clientIds: blockClientIds
168
+ }), (0, _element.createElement)(_blockSettingsMenu.default, {
165
169
  clientIds: blockClientIds
166
170
  }));
167
171
  };