@wordpress/block-editor 8.4.0 → 8.5.2

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 (421) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +56 -19
  3. package/build/components/alignment-control/index.js +13 -6
  4. package/build/components/alignment-control/index.js.map +1 -1
  5. package/build/components/block-alignment-control/index.js +13 -6
  6. package/build/components/block-alignment-control/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +1 -1
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +13 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/index.js +2 -3
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-icon/index.js +4 -0
  14. package/build/components/block-icon/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +6 -1
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -6
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +14 -17
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-handler.js +7 -1
  22. package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  23. package/build/components/block-list-appender/index.js +6 -1
  24. package/build/components/block-list-appender/index.js.map +1 -1
  25. package/build/components/block-lock/index.js +8 -0
  26. package/build/components/block-lock/index.js.map +1 -1
  27. package/build/components/block-lock/menu-item.js +9 -15
  28. package/build/components/block-lock/menu-item.js.map +1 -1
  29. package/build/components/block-lock/modal.js +35 -23
  30. package/build/components/block-lock/modal.js.map +1 -1
  31. package/build/components/block-lock/toolbar.js +11 -16
  32. package/build/components/block-lock/toolbar.js.map +1 -1
  33. package/build/components/block-lock/use-block-lock.js +50 -0
  34. package/build/components/block-lock/use-block-lock.js.map +1 -0
  35. package/build/components/block-mover/index.js +4 -0
  36. package/build/components/block-mover/index.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +37 -22
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-preview/auto.js +6 -3
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-preview/index.js +4 -2
  44. package/build/components/block-preview/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +50 -5
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-switcher/index.js +8 -3
  48. package/build/components/block-switcher/index.js.map +1 -1
  49. package/build/components/block-title/index.js +2 -2
  50. package/build/components/block-title/index.js.map +1 -1
  51. package/build/components/block-title/use-block-display-title.js +1 -1
  52. package/build/components/block-title/use-block-display-title.js.map +1 -1
  53. package/build/components/block-toolbar/block-name-context.js +17 -0
  54. package/build/components/block-toolbar/block-name-context.js.map +1 -0
  55. package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
  56. package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  57. package/build/components/block-toolbar/index.js +20 -5
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/index.js +0 -16
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-variation-transforms/index.js +92 -47
  62. package/build/components/block-variation-transforms/index.js.map +1 -1
  63. package/build/components/block-vertical-alignment-control/index.js +13 -6
  64. package/build/components/block-vertical-alignment-control/index.js.map +1 -1
  65. package/build/components/contrast-checker/index.js +4 -0
  66. package/build/components/contrast-checker/index.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +8 -0
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/toolbar.js +105 -0
  70. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
  71. package/build/components/copy-handler/index.js +48 -9
  72. package/build/components/copy-handler/index.js.map +1 -1
  73. package/build/components/font-sizes/font-size-picker.js +4 -0
  74. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  75. package/build/components/iframe/index.js +6 -9
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/index.js +18 -0
  78. package/build/components/index.js.map +1 -1
  79. package/build/components/justify-content-control/index.js +13 -6
  80. package/build/components/justify-content-control/index.js.map +1 -1
  81. package/build/components/keyboard-shortcuts/index.js +1 -1
  82. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  83. package/build/components/line-height-control/index.js +10 -3
  84. package/build/components/line-height-control/index.js.map +1 -1
  85. package/build/components/link-control/index.js +6 -7
  86. package/build/components/link-control/index.js.map +1 -1
  87. package/build/components/list-view/block-select-button.js +19 -6
  88. package/build/components/list-view/block-select-button.js.map +1 -1
  89. package/build/components/list-view/block.js +18 -3
  90. package/build/components/list-view/block.js.map +1 -1
  91. package/build/components/list-view/branch.js +1 -1
  92. package/build/components/list-view/branch.js.map +1 -1
  93. package/build/components/media-replace-flow/index.js +4 -0
  94. package/build/components/media-replace-flow/index.js.map +1 -1
  95. package/build/components/multi-selection-inspector/index.js +1 -1
  96. package/build/components/multi-selection-inspector/index.js.map +1 -1
  97. package/build/components/rich-text/index.js +26 -4
  98. package/build/components/rich-text/index.js.map +1 -1
  99. package/build/components/rich-text/split-value.js +12 -2
  100. package/build/components/rich-text/split-value.js.map +1 -1
  101. package/build/components/rich-text/use-firefox-compat.js +49 -0
  102. package/build/components/rich-text/use-firefox-compat.js.map +1 -0
  103. package/build/components/rich-text/use-input-rules.js +34 -2
  104. package/build/components/rich-text/use-input-rules.js.map +1 -1
  105. package/build/components/skip-to-selected-block/index.js +4 -0
  106. package/build/components/skip-to-selected-block/index.js.map +1 -1
  107. package/build/components/writing-flow/index.js +9 -1
  108. package/build/components/writing-flow/index.js.map +1 -1
  109. package/build/components/writing-flow/use-arrow-nav.js +3 -44
  110. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  111. package/build/components/writing-flow/use-click-selection.js +68 -0
  112. package/build/components/writing-flow/use-click-selection.js.map +1 -0
  113. package/build/components/writing-flow/use-drag-selection.js +134 -0
  114. package/build/components/writing-flow/use-drag-selection.js.map +1 -0
  115. package/build/components/writing-flow/use-input.js +116 -0
  116. package/build/components/writing-flow/use-input.js.map +1 -0
  117. package/build/components/writing-flow/use-multi-selection.js +18 -38
  118. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  119. package/build/components/writing-flow/use-selection-observer.js +161 -0
  120. package/build/components/writing-flow/use-selection-observer.js.map +1 -0
  121. package/build/components/writing-flow/use-tab-nav.js +1 -8
  122. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  123. package/build/hooks/border-color.js +3 -3
  124. package/build/hooks/border-color.js.map +1 -1
  125. package/build/hooks/border.js +0 -14
  126. package/build/hooks/border.js.map +1 -1
  127. package/build/hooks/color.js +20 -17
  128. package/build/hooks/color.js.map +1 -1
  129. package/build/hooks/font-family.js +5 -1
  130. package/build/hooks/font-family.js.map +1 -1
  131. package/build/hooks/font-size.js +4 -2
  132. package/build/hooks/font-size.js.map +1 -1
  133. package/build/hooks/gap.js +23 -16
  134. package/build/hooks/gap.js.map +1 -1
  135. package/build/hooks/layout.js +7 -2
  136. package/build/hooks/layout.js.map +1 -1
  137. package/build/hooks/style.js +34 -3
  138. package/build/hooks/style.js.map +1 -1
  139. package/build/hooks/utils.js +29 -0
  140. package/build/hooks/utils.js.map +1 -1
  141. package/build/layouts/flex.js +76 -12
  142. package/build/layouts/flex.js.map +1 -1
  143. package/build/layouts/flow.js +9 -4
  144. package/build/layouts/flow.js.map +1 -1
  145. package/build/store/actions.js +290 -51
  146. package/build/store/actions.js.map +1 -1
  147. package/build/store/defaults.js +5 -2
  148. package/build/store/defaults.js.map +1 -1
  149. package/build/store/reducer.js +25 -13
  150. package/build/store/reducer.js.map +1 -1
  151. package/build/store/selectors.js +264 -21
  152. package/build/store/selectors.js.map +1 -1
  153. package/build/store/utils.js +27 -0
  154. package/build/store/utils.js.map +1 -0
  155. package/build/utils/dom.js +2 -1
  156. package/build/utils/dom.js.map +1 -1
  157. package/build-module/components/alignment-control/index.js +12 -4
  158. package/build-module/components/alignment-control/index.js.map +1 -1
  159. package/build-module/components/block-alignment-control/index.js +12 -4
  160. package/build-module/components/block-alignment-control/index.js.map +1 -1
  161. package/build-module/components/block-alignment-control/ui.js +2 -2
  162. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  163. package/build-module/components/block-content-overlay/index.js +13 -4
  164. package/build-module/components/block-content-overlay/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.js +2 -3
  166. package/build-module/components/block-draggable/index.js.map +1 -1
  167. package/build-module/components/block-icon/index.js +4 -0
  168. package/build-module/components/block-icon/index.js.map +1 -1
  169. package/build-module/components/block-inspector/index.js +6 -1
  170. package/build-module/components/block-inspector/index.js.map +1 -1
  171. package/build-module/components/block-list/use-block-props/index.js +1 -4
  172. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  173. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +15 -17
  174. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  175. package/build-module/components/block-list/use-block-props/use-focus-handler.js +7 -1
  176. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  177. package/build-module/components/block-list-appender/index.js +6 -1
  178. package/build-module/components/block-list-appender/index.js.map +1 -1
  179. package/build-module/components/block-lock/index.js +1 -0
  180. package/build-module/components/block-lock/index.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +8 -13
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +34 -24
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-lock/toolbar.js +10 -14
  186. package/build-module/components/block-lock/toolbar.js.map +1 -1
  187. package/build-module/components/block-lock/use-block-lock.js +41 -0
  188. package/build-module/components/block-lock/use-block-lock.js.map +1 -0
  189. package/build-module/components/block-mover/index.js +4 -0
  190. package/build-module/components/block-mover/index.js.map +1 -1
  191. package/build-module/components/block-pattern-setup/index.js +39 -24
  192. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  193. package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
  194. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  195. package/build-module/components/block-preview/auto.js +6 -3
  196. package/build-module/components/block-preview/auto.js.map +1 -1
  197. package/build-module/components/block-preview/index.js +4 -2
  198. package/build-module/components/block-preview/index.js.map +1 -1
  199. package/build-module/components/block-settings-menu/block-settings-dropdown.js +50 -7
  200. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  201. package/build-module/components/block-switcher/index.js +9 -4
  202. package/build-module/components/block-switcher/index.js.map +1 -1
  203. package/build-module/components/block-title/index.js +2 -2
  204. package/build-module/components/block-title/index.js.map +1 -1
  205. package/build-module/components/block-title/use-block-display-title.js +1 -1
  206. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  207. package/build-module/components/block-toolbar/block-name-context.js +9 -0
  208. package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
  209. package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
  210. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  211. package/build-module/components/block-toolbar/index.js +16 -4
  212. package/build-module/components/block-toolbar/index.js.map +1 -1
  213. package/build-module/components/block-tools/index.js +0 -16
  214. package/build-module/components/block-tools/index.js.map +1 -1
  215. package/build-module/components/block-variation-transforms/index.js +95 -49
  216. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  217. package/build-module/components/block-vertical-alignment-control/index.js +12 -4
  218. package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
  219. package/build-module/components/contrast-checker/index.js +4 -0
  220. package/build-module/components/contrast-checker/index.js.map +1 -1
  221. package/build-module/components/convert-to-group-buttons/index.js +2 -1
  222. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  223. package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
  224. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
  225. package/build-module/components/copy-handler/index.js +48 -9
  226. package/build-module/components/copy-handler/index.js.map +1 -1
  227. package/build-module/components/font-sizes/font-size-picker.js +4 -0
  228. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  229. package/build-module/components/iframe/index.js +6 -9
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/index.js +2 -0
  232. package/build-module/components/index.js.map +1 -1
  233. package/build-module/components/justify-content-control/index.js +12 -4
  234. package/build-module/components/justify-content-control/index.js.map +1 -1
  235. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  236. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  237. package/build-module/components/line-height-control/index.js +9 -2
  238. package/build-module/components/line-height-control/index.js.map +1 -1
  239. package/build-module/components/link-control/index.js +6 -7
  240. package/build-module/components/link-control/index.js.map +1 -1
  241. package/build-module/components/list-view/block-select-button.js +17 -6
  242. package/build-module/components/list-view/block-select-button.js.map +1 -1
  243. package/build-module/components/list-view/block.js +18 -3
  244. package/build-module/components/list-view/block.js.map +1 -1
  245. package/build-module/components/list-view/branch.js +1 -1
  246. package/build-module/components/list-view/branch.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +4 -0
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/multi-selection-inspector/index.js +2 -2
  250. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  251. package/build-module/components/rich-text/index.js +25 -4
  252. package/build-module/components/rich-text/index.js.map +1 -1
  253. package/build-module/components/rich-text/split-value.js +12 -2
  254. package/build-module/components/rich-text/split-value.js.map +1 -1
  255. package/build-module/components/rich-text/use-firefox-compat.js +39 -0
  256. package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
  257. package/build-module/components/rich-text/use-input-rules.js +35 -4
  258. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  259. package/build-module/components/skip-to-selected-block/index.js +4 -0
  260. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  261. package/build-module/components/writing-flow/index.js +5 -1
  262. package/build-module/components/writing-flow/index.js.map +1 -1
  263. package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
  264. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  265. package/build-module/components/writing-flow/use-click-selection.js +57 -0
  266. package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
  267. package/build-module/components/writing-flow/use-drag-selection.js +124 -0
  268. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
  269. package/build-module/components/writing-flow/use-input.js +104 -0
  270. package/build-module/components/writing-flow/use-input.js.map +1 -0
  271. package/build-module/components/writing-flow/use-multi-selection.js +18 -37
  272. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  273. package/build-module/components/writing-flow/use-selection-observer.js +150 -0
  274. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
  275. package/build-module/components/writing-flow/use-tab-nav.js +1 -9
  276. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  277. package/build-module/hooks/border-color.js +5 -5
  278. package/build-module/hooks/border-color.js.map +1 -1
  279. package/build-module/hooks/border.js +0 -12
  280. package/build-module/hooks/border.js.map +1 -1
  281. package/build-module/hooks/color.js +19 -18
  282. package/build-module/hooks/color.js.map +1 -1
  283. package/build-module/hooks/font-family.js +3 -1
  284. package/build-module/hooks/font-family.js.map +1 -1
  285. package/build-module/hooks/font-size.js +4 -3
  286. package/build-module/hooks/font-size.js.map +1 -1
  287. package/build-module/hooks/gap.js +22 -15
  288. package/build-module/hooks/gap.js.map +1 -1
  289. package/build-module/hooks/layout.js +7 -2
  290. package/build-module/hooks/layout.js.map +1 -1
  291. package/build-module/hooks/style.js +33 -3
  292. package/build-module/hooks/style.js.map +1 -1
  293. package/build-module/hooks/utils.js +26 -0
  294. package/build-module/hooks/utils.js.map +1 -1
  295. package/build-module/layouts/flex.js +76 -13
  296. package/build-module/layouts/flex.js.map +1 -1
  297. package/build-module/layouts/flow.js +9 -5
  298. package/build-module/layouts/flow.js.map +1 -1
  299. package/build-module/store/actions.js +277 -49
  300. package/build-module/store/actions.js.map +1 -1
  301. package/build-module/store/defaults.js +5 -2
  302. package/build-module/store/defaults.js.map +1 -1
  303. package/build-module/store/reducer.js +25 -13
  304. package/build-module/store/reducer.js.map +1 -1
  305. package/build-module/store/selectors.js +250 -21
  306. package/build-module/store/selectors.js.map +1 -1
  307. package/build-module/store/utils.js +20 -0
  308. package/build-module/store/utils.js.map +1 -0
  309. package/build-module/utils/dom.js +2 -1
  310. package/build-module/utils/dom.js.map +1 -1
  311. package/build-style/style-rtl.css +142 -101
  312. package/build-style/style.css +142 -101
  313. package/build-types/utils/dom.d.ts.map +1 -1
  314. package/package.json +28 -28
  315. package/src/components/alignment-control/index.js +9 -4
  316. package/src/components/block-alignment-control/index.js +9 -4
  317. package/src/components/block-alignment-control/ui.js +2 -2
  318. package/src/components/block-content-overlay/index.js +19 -2
  319. package/src/components/block-draggable/index.js +2 -5
  320. package/src/components/block-icon/index.js +3 -0
  321. package/src/components/block-inspector/index.js +4 -0
  322. package/src/components/block-list/style.scss +4 -5
  323. package/src/components/block-list/use-block-props/index.js +0 -5
  324. package/src/components/block-list/use-block-props/use-focus-first-element.js +19 -26
  325. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
  326. package/src/components/block-list-appender/index.js +5 -0
  327. package/src/components/block-lock/index.js +1 -0
  328. package/src/components/block-lock/menu-item.js +6 -19
  329. package/src/components/block-lock/modal.js +52 -23
  330. package/src/components/block-lock/style.scss +7 -5
  331. package/src/components/block-lock/toolbar.js +7 -14
  332. package/src/components/block-lock/use-block-lock.js +45 -0
  333. package/src/components/block-mover/index.js +3 -0
  334. package/src/components/block-mover/style.scss +4 -0
  335. package/src/components/block-pattern-setup/index.js +84 -59
  336. package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
  337. package/src/components/block-pattern-setup/style.scss +32 -26
  338. package/src/components/block-preview/auto.js +10 -1
  339. package/src/components/block-preview/index.js +2 -0
  340. package/src/components/block-settings-menu/block-settings-dropdown.js +62 -4
  341. package/src/components/block-switcher/index.js +15 -3
  342. package/src/components/block-switcher/style.scss +15 -4
  343. package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
  344. package/src/components/block-switcher/test/index.js +2 -2
  345. package/src/components/block-title/index.js +2 -2
  346. package/src/components/block-title/use-block-display-title.js +1 -1
  347. package/src/components/block-toolbar/block-name-context.js +8 -0
  348. package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
  349. package/src/components/block-toolbar/index.js +18 -2
  350. package/src/components/block-toolbar/style.scss +6 -0
  351. package/src/components/block-tools/index.js +0 -19
  352. package/src/components/block-tools/style.scss +3 -5
  353. package/src/components/block-variation-transforms/index.js +105 -36
  354. package/src/components/block-variation-transforms/style.scss +1 -1
  355. package/src/components/block-vertical-alignment-control/index.js +9 -4
  356. package/src/components/button-block-appender/style.scss +5 -1
  357. package/src/components/contrast-checker/index.js +3 -0
  358. package/src/components/convert-to-group-buttons/index.js +6 -1
  359. package/src/components/convert-to-group-buttons/toolbar.js +87 -0
  360. package/src/components/copy-handler/index.js +55 -10
  361. package/src/components/font-sizes/font-size-picker.js +3 -0
  362. package/src/components/iframe/index.js +5 -7
  363. package/src/components/index.js +2 -0
  364. package/src/components/justify-content-control/index.js +9 -4
  365. package/src/components/keyboard-shortcuts/index.js +1 -1
  366. package/src/components/line-height-control/index.js +8 -3
  367. package/src/components/link-control/index.js +5 -5
  368. package/src/components/list-view/block-select-button.js +13 -3
  369. package/src/components/list-view/block.js +24 -8
  370. package/src/components/list-view/branch.js +1 -1
  371. package/src/components/list-view/style.scss +56 -14
  372. package/src/components/media-placeholder/README.md +8 -0
  373. package/src/components/media-replace-flow/index.js +3 -0
  374. package/src/components/multi-selection-inspector/index.js +2 -2
  375. package/src/components/rich-text/index.js +24 -1
  376. package/src/components/rich-text/split-value.js +5 -1
  377. package/src/components/rich-text/use-firefox-compat.js +39 -0
  378. package/src/components/rich-text/use-input-rules.js +40 -3
  379. package/src/components/skip-to-selected-block/index.js +3 -0
  380. package/src/components/url-input/style.scss +3 -2
  381. package/src/components/writing-flow/index.js +8 -0
  382. package/src/components/writing-flow/readme.md +28 -0
  383. package/src/components/writing-flow/use-arrow-nav.js +4 -53
  384. package/src/components/writing-flow/use-click-selection.js +65 -0
  385. package/src/components/writing-flow/use-drag-selection.js +126 -0
  386. package/src/components/writing-flow/use-input.js +112 -0
  387. package/src/components/writing-flow/use-multi-selection.js +13 -36
  388. package/src/components/writing-flow/use-selection-observer.js +153 -0
  389. package/src/components/writing-flow/use-tab-nav.js +1 -11
  390. package/src/hooks/border-color.js +5 -5
  391. package/src/hooks/border.js +0 -13
  392. package/src/hooks/color.js +51 -24
  393. package/src/hooks/font-family.js +5 -2
  394. package/src/hooks/font-size.js +10 -7
  395. package/src/hooks/gap.js +25 -17
  396. package/src/hooks/layout.js +11 -1
  397. package/src/hooks/style.js +40 -4
  398. package/src/hooks/test/gap.js +25 -1
  399. package/src/hooks/test/style.js +94 -0
  400. package/src/hooks/test/utils.js +1 -1
  401. package/src/hooks/utils.js +26 -0
  402. package/src/layouts/flex.js +89 -5
  403. package/src/layouts/flow.js +15 -4
  404. package/src/store/actions.js +341 -32
  405. package/src/store/defaults.js +7 -2
  406. package/src/store/reducer.js +25 -10
  407. package/src/store/selectors.js +329 -26
  408. package/src/store/test/selectors.js +242 -5
  409. package/src/store/utils.js +19 -0
  410. package/src/utils/dom.js +2 -1
  411. package/tsconfig.tsbuildinfo +1 -1
  412. package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
  413. package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  414. package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
  415. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  416. package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
  417. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  418. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
  419. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  420. package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
  421. package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
@@ -98,6 +98,10 @@ function BlockMover(_ref) {
98
98
  clientIds: clientIds
99
99
  }, itemProps)))));
100
100
  }
101
+ /**
102
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-mover/README.md
103
+ */
104
+
101
105
 
102
106
  var _default = (0, _data.withSelect)((select, _ref2) => {
103
107
  var _getBlockListSettings;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mover/index.js"],"names":["BlockMover","isFirst","isLast","clientIds","canMove","isHidden","rootClientId","orientation","hideDragHandle","isFocused","setIsFocused","onFocus","onBlur","dragHandleLabel","draggableProps","dragHandle","itemProps","select","getBlock","getBlockIndex","getBlockListSettings","canMoveBlocks","getBlockOrder","getBlockRootClientId","blockEditorStore","normalizedClientIds","firstClientId","block","firstIndex","lastIndex","blockOrder","length","blockType","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { first, last, castArray } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\n\nimport { dragHandle } from '@wordpress/icons';\nimport { ToolbarGroup, ToolbarItem, Button } from '@wordpress/components';\nimport { getBlockType } from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockDraggable from '../block-draggable';\nimport { BlockMoverUpButton, BlockMoverDownButton } from './button';\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockMover( {\n\tisFirst,\n\tisLast,\n\tclientIds,\n\tcanMove,\n\tisHidden,\n\trootClientId,\n\torientation,\n\thideDragHandle,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\tconst onFocus = () => setIsFocused( true );\n\tconst onBlur = () => setIsFocused( false );\n\n\tif ( ! canMove || ( isFirst && isLast && ! rootClientId ) ) {\n\t\treturn null;\n\t}\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\t// We emulate a disabled state because forcefully applying the `disabled`\n\t// attribute on the buttons while it has focus causes the screen to change\n\t// to an unfocused state (body as active element) without firing blur on,\n\t// the rendering parent, leaving it unable to react to focus out.\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'block-editor-block-mover', {\n\t\t\t\t'is-visible': isFocused || ! isHidden,\n\t\t\t\t'is-horizontal': orientation === 'horizontal',\n\t\t\t} ) }\n\t\t>\n\t\t\t{ ! hideDragHandle && (\n\t\t\t\t<BlockDraggable\n\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\tcloneClassname=\"block-editor-block-mover__drag-clone\"\n\t\t\t\t>\n\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\tclassName=\"block-editor-block-mover__drag-handle\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t) }\n\t\t\t<ToolbarGroup className=\"block-editor-block-mover__move-button-container\">\n\t\t\t\t<ToolbarItem onFocus={ onFocus } onBlur={ onBlur }>\n\t\t\t\t\t{ ( itemProps ) => (\n\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t{ ...itemProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarItem>\n\t\t\t\t<ToolbarItem onFocus={ onFocus } onBlur={ onBlur }>\n\t\t\t\t\t{ ( itemProps ) => (\n\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t{ ...itemProps }\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</div>\n\t);\n}\n\nexport default withSelect( ( select, { clientIds } ) => {\n\tconst {\n\t\tgetBlock,\n\t\tgetBlockIndex,\n\t\tgetBlockListSettings,\n\t\tcanMoveBlocks,\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t} = select( blockEditorStore );\n\tconst normalizedClientIds = castArray( clientIds );\n\tconst firstClientId = first( normalizedClientIds );\n\tconst block = getBlock( firstClientId );\n\tconst rootClientId = getBlockRootClientId( first( normalizedClientIds ) );\n\tconst firstIndex = getBlockIndex( firstClientId );\n\tconst lastIndex = getBlockIndex( last( normalizedClientIds ) );\n\tconst blockOrder = getBlockOrder( rootClientId );\n\tconst isFirst = firstIndex === 0;\n\tconst isLast = lastIndex === blockOrder.length - 1;\n\n\treturn {\n\t\tblockType: block ? getBlockType( block.name ) : null,\n\t\tcanMove: canMoveBlocks( clientIds, rootClientId ),\n\t\trootClientId,\n\t\tfirstIndex,\n\t\tisFirst,\n\t\tisLast,\n\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t};\n} )( BlockMover );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-mover/index.js"],"names":["BlockMover","isFirst","isLast","clientIds","canMove","isHidden","rootClientId","orientation","hideDragHandle","isFocused","setIsFocused","onFocus","onBlur","dragHandleLabel","draggableProps","dragHandle","itemProps","select","getBlock","getBlockIndex","getBlockListSettings","canMoveBlocks","getBlockOrder","getBlockRootClientId","blockEditorStore","normalizedClientIds","firstClientId","block","firstIndex","lastIndex","blockOrder","length","blockType","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { first, last, castArray } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\n\nimport { dragHandle } from '@wordpress/icons';\nimport { ToolbarGroup, ToolbarItem, Button } from '@wordpress/components';\nimport { getBlockType } from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockDraggable from '../block-draggable';\nimport { BlockMoverUpButton, BlockMoverDownButton } from './button';\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockMover( {\n\tisFirst,\n\tisLast,\n\tclientIds,\n\tcanMove,\n\tisHidden,\n\trootClientId,\n\torientation,\n\thideDragHandle,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\tconst onFocus = () => setIsFocused( true );\n\tconst onBlur = () => setIsFocused( false );\n\n\tif ( ! canMove || ( isFirst && isLast && ! rootClientId ) ) {\n\t\treturn null;\n\t}\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\t// We emulate a disabled state because forcefully applying the `disabled`\n\t// attribute on the buttons while it has focus causes the screen to change\n\t// to an unfocused state (body as active element) without firing blur on,\n\t// the rendering parent, leaving it unable to react to focus out.\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'block-editor-block-mover', {\n\t\t\t\t'is-visible': isFocused || ! isHidden,\n\t\t\t\t'is-horizontal': orientation === 'horizontal',\n\t\t\t} ) }\n\t\t>\n\t\t\t{ ! hideDragHandle && (\n\t\t\t\t<BlockDraggable\n\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\tcloneClassname=\"block-editor-block-mover__drag-clone\"\n\t\t\t\t>\n\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\tclassName=\"block-editor-block-mover__drag-handle\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t) }\n\t\t\t<ToolbarGroup className=\"block-editor-block-mover__move-button-container\">\n\t\t\t\t<ToolbarItem onFocus={ onFocus } onBlur={ onBlur }>\n\t\t\t\t\t{ ( itemProps ) => (\n\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t{ ...itemProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarItem>\n\t\t\t\t<ToolbarItem onFocus={ onFocus } onBlur={ onBlur }>\n\t\t\t\t\t{ ( itemProps ) => (\n\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t{ ...itemProps }\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</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-mover/README.md\n */\nexport default withSelect( ( select, { clientIds } ) => {\n\tconst {\n\t\tgetBlock,\n\t\tgetBlockIndex,\n\t\tgetBlockListSettings,\n\t\tcanMoveBlocks,\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t} = select( blockEditorStore );\n\tconst normalizedClientIds = castArray( clientIds );\n\tconst firstClientId = first( normalizedClientIds );\n\tconst block = getBlock( firstClientId );\n\tconst rootClientId = getBlockRootClientId( first( normalizedClientIds ) );\n\tconst firstIndex = getBlockIndex( firstClientId );\n\tconst lastIndex = getBlockIndex( last( normalizedClientIds ) );\n\tconst blockOrder = getBlockOrder( rootClientId );\n\tconst isFirst = firstIndex === 0;\n\tconst isLast = lastIndex === blockOrder.length - 1;\n\n\treturn {\n\t\tblockType: block ? getBlockType( block.name ) : null,\n\t\tcanMove: canMoveBlocks( clientIds, rootClientId ),\n\t\trootClientId,\n\t\tfirstIndex,\n\t\tisFirst,\n\t\tisLast,\n\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t};\n} )( BlockMover );\n"]}
@@ -43,7 +43,8 @@ const SetupContent = _ref => {
43
43
  viewMode,
44
44
  activeSlide,
45
45
  patterns,
46
- onBlockPatternSelect
46
+ onBlockPatternSelect,
47
+ height
47
48
  } = _ref;
48
49
  const composite = (0, _components.__unstableUseCompositeState)();
49
50
  const containerClass = 'block-editor-block-pattern-setup__container';
@@ -51,17 +52,28 @@ const SetupContent = _ref => {
51
52
  if (viewMode === _constants.VIEWMODES.carousel) {
52
53
  const slideClass = new Map([[activeSlide, 'active-slide'], [activeSlide - 1, 'previous-slide'], [activeSlide + 1, 'next-slide']]);
53
54
  return (0, _element.createElement)("div", {
55
+ className: "block-editor-block-pattern-setup__carousel",
56
+ style: {
57
+ height
58
+ }
59
+ }, (0, _element.createElement)("div", {
54
60
  className: containerClass
55
61
  }, (0, _element.createElement)("ul", {
56
62
  className: "carousel-container"
57
63
  }, patterns.map((pattern, index) => (0, _element.createElement)(BlockPatternSlide, {
58
64
  className: slideClass.get(index) || '',
59
65
  key: pattern.name,
60
- pattern: pattern
61
- }))));
66
+ pattern: pattern,
67
+ minHeight: height
68
+ })))));
62
69
  }
63
70
 
64
- return (0, _element.createElement)(_components.__unstableComposite, (0, _extends2.default)({}, composite, {
71
+ return (0, _element.createElement)("div", {
72
+ style: {
73
+ height
74
+ },
75
+ className: "block-editor-block-pattern-setup__grid"
76
+ }, (0, _element.createElement)(_components.__unstableComposite, (0, _extends2.default)({}, composite, {
65
77
  role: "listbox",
66
78
  className: containerClass,
67
79
  "aria-label": (0, _i18n.__)('Patterns list')
@@ -70,7 +82,7 @@ const SetupContent = _ref => {
70
82
  pattern: pattern,
71
83
  onSelect: onBlockPatternSelect,
72
84
  composite: composite
73
- })));
85
+ }))));
74
86
  };
75
87
 
76
88
  function BlockPattern(_ref2) {
@@ -82,7 +94,6 @@ function BlockPattern(_ref2) {
82
94
  const baseClassName = 'block-editor-block-pattern-setup-list';
83
95
  const {
84
96
  blocks,
85
- title,
86
97
  description,
87
98
  viewportWidth = 700
88
99
  } = pattern;
@@ -100,9 +111,7 @@ function BlockPattern(_ref2) {
100
111
  }), (0, _element.createElement)(_blockPreview.default, {
101
112
  blocks: blocks,
102
113
  viewportWidth: viewportWidth
103
- }), (0, _element.createElement)("div", {
104
- className: `${baseClassName}__item-title`
105
- }, title)), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
114
+ })), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
106
115
  id: descriptionId
107
116
  }, description));
108
117
  }
@@ -110,7 +119,8 @@ function BlockPattern(_ref2) {
110
119
  function BlockPatternSlide(_ref3) {
111
120
  let {
112
121
  className,
113
- pattern
122
+ pattern,
123
+ minHeight
114
124
  } = _ref3;
115
125
  const {
116
126
  blocks,
@@ -124,7 +134,7 @@ function BlockPatternSlide(_ref3) {
124
134
  "aria-describedby": description ? descriptionId : undefined
125
135
  }, (0, _element.createElement)(_blockPreview.default, {
126
136
  blocks: blocks,
127
- __experimentalLive: true
137
+ __experimentalMinHeight: minHeight
128
138
  }), !!description && (0, _element.createElement)(_components.VisuallyHidden, {
129
139
  id: descriptionId
130
140
  }, description));
@@ -145,6 +155,9 @@ const BlockPatternSetup = _ref4 => {
145
155
  replaceBlock
146
156
  } = (0, _data.useDispatch)(_store.store);
147
157
  const patterns = (0, _usePatternsSetup.default)(clientId, blockName, filterPatternsFn);
158
+ const [contentResizeListener, {
159
+ height: contentHeight
160
+ }] = (0, _compose.useResizeObserver)();
148
161
 
149
162
  if (!(patterns !== null && patterns !== void 0 && patterns.length) || showBlank) {
150
163
  return startBlankComponent;
@@ -156,9 +169,18 @@ const BlockPatternSetup = _ref4 => {
156
169
  };
157
170
 
158
171
  const onPatternSelectCallback = onBlockPatternSelect || onBlockPatternSelectDefault;
159
- return (0, _element.createElement)("div", {
172
+ const onStartBlank = startBlankComponent ? () => {
173
+ setShowBlank(true);
174
+ } : undefined;
175
+ return (0, _element.createElement)(_element.Fragment, null, contentResizeListener, (0, _element.createElement)("div", {
160
176
  className: `block-editor-block-pattern-setup view-mode-${viewMode}`
161
- }, (0, _element.createElement)(_setupToolbar.default, {
177
+ }, (0, _element.createElement)(SetupContent, {
178
+ viewMode: viewMode,
179
+ activeSlide: activeSlide,
180
+ patterns: patterns,
181
+ onBlockPatternSelect: onPatternSelectCallback,
182
+ height: contentHeight - 2 * 60
183
+ }), (0, _element.createElement)(_setupToolbar.default, {
162
184
  viewMode: viewMode,
163
185
  setViewMode: setViewMode,
164
186
  activeSlide: activeSlide,
@@ -172,15 +194,8 @@ const BlockPatternSetup = _ref4 => {
172
194
  onBlockPatternSelect: () => {
173
195
  onPatternSelectCallback(patterns[activeSlide].blocks);
174
196
  },
175
- onStartBlank: () => {
176
- setShowBlank(true);
177
- }
178
- }), (0, _element.createElement)(SetupContent, {
179
- viewMode: viewMode,
180
- activeSlide: activeSlide,
181
- patterns: patterns,
182
- onBlockPatternSelect: onPatternSelectCallback
183
- }));
197
+ onStartBlank: onStartBlank
198
+ })));
184
199
  };
185
200
 
186
201
  var _default = BlockPatternSetup;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"names":["SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","composite","containerClass","VIEWMODES","carousel","slideClass","Map","map","pattern","index","get","name","BlockPattern","onSelect","baseClassName","blocks","title","description","viewportWidth","descriptionId","undefined","BlockPatternSlide","className","BlockPatternSetup","clientId","blockName","filterPatternsFn","startBlankComponent","setViewMode","setActiveSlide","showBlank","setShowBlank","replaceBlock","blockEditorStore","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","active"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n} ) => {\n\tconst composite = useCompositeState();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div className={ containerClass }>\n\t\t\t\t<ul className=\"carousel-container\">\n\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName={ containerClass }\n\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t>\n\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t<BlockPattern\n\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, title, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t\t<div className={ `${ baseClassName }__item-title` }>\n\t\t\t\t\t{ title }\n\t\t\t\t</div>\n\t\t\t</CompositeItem>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { className, pattern } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<li\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview blocks={ blocks } __experimentalLive />\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tstartBlankComponent,\n\tonBlockPatternSelect,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst [ showBlank, setShowBlank ] = useState( false );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\n\tif ( ! patterns?.length || showBlank ) {\n\t\treturn startBlankComponent;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\treturn (\n\t\t<div\n\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t>\n\t\t\t<SetupToolbar\n\t\t\t\tviewMode={ viewMode }\n\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\thandleNext={ () => {\n\t\t\t\t\tsetActiveSlide( ( active ) => active + 1 );\n\t\t\t\t} }\n\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\tsetActiveSlide( ( active ) => active - 1 );\n\t\t\t\t} }\n\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\tonPatternSelectCallback( patterns[ activeSlide ].blocks );\n\t\t\t\t} }\n\t\t\t\tonStartBlank={ () => {\n\t\t\t\t\tsetShowBlank( true );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<SetupContent\n\t\t\t\tviewMode={ viewMode }\n\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\tpatterns={ patterns }\n\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default BlockPatternSetup;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"names":["SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","height","composite","containerClass","VIEWMODES","carousel","slideClass","Map","map","pattern","index","get","name","BlockPattern","onSelect","baseClassName","blocks","description","viewportWidth","descriptionId","title","undefined","BlockPatternSlide","className","minHeight","BlockPatternSetup","clientId","blockName","filterPatternsFn","startBlankComponent","setViewMode","setActiveSlide","showBlank","setShowBlank","replaceBlock","blockEditorStore","contentResizeListener","contentHeight","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","onStartBlank","active"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId, useResizeObserver } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n\theight,\n} ) => {\n\tconst composite = useCompositeState();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-block-pattern-setup__carousel\"\n\t\t\t\tstyle={ { height } }\n\t\t\t>\n\t\t\t\t<div className={ containerClass }>\n\t\t\t\t\t<ul className=\"carousel-container\">\n\t\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t\t\tminHeight={ height }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div\n\t\t\tstyle={ { height } }\n\t\t\tclassName=\"block-editor-block-pattern-setup__grid\"\n\t\t>\n\t\t\t<Composite\n\t\t\t\t{ ...composite }\n\t\t\t\trole=\"listbox\"\n\t\t\t\tclassName={ containerClass }\n\t\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t\t>\n\t\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t\t<BlockPattern\n\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\t\tcomposite={ composite }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t</div>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t</CompositeItem>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { className, pattern, minHeight } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<li\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview\n\t\t\t\tblocks={ blocks }\n\t\t\t\t__experimentalMinHeight={ minHeight }\n\t\t\t/>\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tstartBlankComponent,\n\tonBlockPatternSelect,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst [ showBlank, setShowBlank ] = useState( false );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\n\tif ( ! patterns?.length || showBlank ) {\n\t\treturn startBlankComponent;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\tconst onStartBlank = startBlankComponent\n\t\t? () => {\n\t\t\t\tsetShowBlank( true );\n\t\t }\n\t\t: undefined;\n\treturn (\n\t\t<>\n\t\t\t{ contentResizeListener }\n\t\t\t<div\n\t\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t\t>\n\t\t\t\t<SetupContent\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t\t\theight={ contentHeight - 2 * 60 }\n\t\t\t\t/>\n\t\t\t\t<SetupToolbar\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\t\thandleNext={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active + 1 );\n\t\t\t\t\t} }\n\t\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active - 1 );\n\t\t\t\t\t} }\n\t\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\t\tonPatternSelectCallback(\n\t\t\t\t\t\t\tpatterns[ activeSlide ].blocks\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonStartBlank={ onStartBlank }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default BlockPatternSetup;\n"]}
@@ -29,7 +29,7 @@ const Actions = _ref => {
29
29
  } = _ref;
30
30
  return (0, _element.createElement)("div", {
31
31
  className: "block-editor-block-pattern-setup__actions"
32
- }, (0, _element.createElement)(_components.Button, {
32
+ }, onStartBlank && (0, _element.createElement)(_components.Button, {
33
33
  onClick: onStartBlank
34
34
  }, (0, _i18n.__)('Start blank')), (0, _element.createElement)(_components.Button, {
35
35
  variant: "primary",
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/setup-toolbar.js"],"names":["Actions","onStartBlank","onBlockPatternSelect","CarouselNavigation","handlePrevious","handleNext","activeSlide","totalSlides","chevronLeft","chevronRight","SetupToolbar","viewMode","setViewMode","isCarouselView","VIEWMODES","carousel","displayControls","stretchFullWidth","grid"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAUA;;AAfA;AACA;AACA;;AAUA;AACA;AACA;AAGA,MAAMA,OAAO,GAAG;AAAA,MAAE;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,GAAF;AAAA,SACf;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAGD;AAAlB,KAAmC,cAAI,aAAJ,CAAnC,CADD,EAEC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAGC;AAApC,KACG,cAAI,QAAJ,CADH,CAFD,CADe;AAAA,CAAhB;;AASA,MAAMC,kBAAkB,GAAG;AAAA,MAAE;AAC5BC,IAAAA,cAD4B;AAE5BC,IAAAA,UAF4B;AAG5BC,IAAAA,WAH4B;AAI5BC,IAAAA;AAJ4B,GAAF;AAAA,SAM1B;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGC,kBADR;AAEC,IAAA,KAAK,EAAG,cAAI,kBAAJ,CAFT;AAGC,IAAA,OAAO,EAAGJ,cAHX;AAIC,IAAA,QAAQ,EAAGE,WAAW,KAAK;AAJ5B,IADD,EAOC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGG,mBADR;AAEC,IAAA,KAAK,EAAG,cAAI,cAAJ,CAFT;AAGC,IAAA,OAAO,EAAGJ,UAHX;AAIC,IAAA,QAAQ,EAAGC,WAAW,KAAKC,WAAW,GAAG;AAJ1C,IAPD,CAN0B;AAAA,CAA3B;;AAsBA,MAAMG,YAAY,GAAG,SASd;AAAA,MATgB;AACtBC,IAAAA,QADsB;AAEtBC,IAAAA,WAFsB;AAGtBR,IAAAA,cAHsB;AAItBC,IAAAA,UAJsB;AAKtBC,IAAAA,WALsB;AAMtBC,IAAAA,WANsB;AAOtBL,IAAAA,oBAPsB;AAQtBD,IAAAA;AARsB,GAShB;AACN,QAAMY,cAAc,GAAGF,QAAQ,KAAKG,qBAAUC,QAA9C;AACA,QAAMC,eAAe,GACpB;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGC,uBADR;AAEC,IAAA,KAAK,EAAG,cAAI,eAAJ,CAFT;AAGC,IAAA,OAAO,EAAG,MAAML,WAAW,CAAEE,qBAAUC,QAAZ,CAH5B;AAIC,IAAA,SAAS,EAAGF;AAJb,IADD,EAOC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGK,WADR;AAEC,IAAA,KAAK,EAAG,cAAI,WAAJ,CAFT;AAGC,IAAA,OAAO,EAAG,MAAMN,WAAW,CAAEE,qBAAUI,IAAZ,CAH5B;AAIC,IAAA,SAAS,EAAGP,QAAQ,KAAKG,qBAAUI;AAJpC,IAPD,CADD;AAgBA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGL,cAAc,IACf,4BAAC,kBAAD;AACC,IAAA,cAAc,EAAGT,cADlB;AAEC,IAAA,UAAU,EAAGC,UAFd;AAGC,IAAA,WAAW,EAAGC,WAHf;AAIC,IAAA,WAAW,EAAGC;AAJf,IAFF,EASGS,eATH,EAUGH,cAAc,IACf,4BAAC,OAAD;AACC,IAAA,oBAAoB,EAAGX,oBADxB;AAEC,IAAA,YAAY,EAAGD;AAFhB,IAXF,CADD;AAmBA,CA9CD;;eAgDeS,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport {\n\tchevronRight,\n\tchevronLeft,\n\tgrid,\n\tstretchFullWidth,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { VIEWMODES } from './constants';\n\nconst Actions = ( { onStartBlank, onBlockPatternSelect } ) => (\n\t<div className=\"block-editor-block-pattern-setup__actions\">\n\t\t<Button onClick={ onStartBlank }>{ __( 'Start blank' ) }</Button>\n\t\t<Button variant=\"primary\" onClick={ onBlockPatternSelect }>\n\t\t\t{ __( 'Choose' ) }\n\t\t</Button>\n\t</div>\n);\n\nconst CarouselNavigation = ( {\n\thandlePrevious,\n\thandleNext,\n\tactiveSlide,\n\ttotalSlides,\n} ) => (\n\t<div className=\"block-editor-block-pattern-setup__navigation\">\n\t\t<Button\n\t\t\ticon={ chevronLeft }\n\t\t\tlabel={ __( 'Previous pattern' ) }\n\t\t\tonClick={ handlePrevious }\n\t\t\tdisabled={ activeSlide === 0 }\n\t\t/>\n\t\t<Button\n\t\t\ticon={ chevronRight }\n\t\t\tlabel={ __( 'Next pattern' ) }\n\t\t\tonClick={ handleNext }\n\t\t\tdisabled={ activeSlide === totalSlides - 1 }\n\t\t/>\n\t</div>\n);\n\nconst SetupToolbar = ( {\n\tviewMode,\n\tsetViewMode,\n\thandlePrevious,\n\thandleNext,\n\tactiveSlide,\n\ttotalSlides,\n\tonBlockPatternSelect,\n\tonStartBlank,\n} ) => {\n\tconst isCarouselView = viewMode === VIEWMODES.carousel;\n\tconst displayControls = (\n\t\t<div className=\"block-editor-block-pattern-setup__display-controls\">\n\t\t\t<Button\n\t\t\t\ticon={ stretchFullWidth }\n\t\t\t\tlabel={ __( 'Carousel view' ) }\n\t\t\t\tonClick={ () => setViewMode( VIEWMODES.carousel ) }\n\t\t\t\tisPressed={ isCarouselView }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\ticon={ grid }\n\t\t\t\tlabel={ __( 'Grid view' ) }\n\t\t\t\tonClick={ () => setViewMode( VIEWMODES.grid ) }\n\t\t\t\tisPressed={ viewMode === VIEWMODES.grid }\n\t\t\t/>\n\t\t</div>\n\t);\n\treturn (\n\t\t<div className=\"block-editor-block-pattern-setup__toolbar\">\n\t\t\t{ isCarouselView && (\n\t\t\t\t<CarouselNavigation\n\t\t\t\t\thandlePrevious={ handlePrevious }\n\t\t\t\t\thandleNext={ handleNext }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ totalSlides }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ displayControls }\n\t\t\t{ isCarouselView && (\n\t\t\t\t<Actions\n\t\t\t\t\tonBlockPatternSelect={ onBlockPatternSelect }\n\t\t\t\t\tonStartBlank={ onStartBlank }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default SetupToolbar;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-pattern-setup/setup-toolbar.js"],"names":["Actions","onStartBlank","onBlockPatternSelect","CarouselNavigation","handlePrevious","handleNext","activeSlide","totalSlides","chevronLeft","chevronRight","SetupToolbar","viewMode","setViewMode","isCarouselView","VIEWMODES","carousel","displayControls","stretchFullWidth","grid"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAUA;;AAfA;AACA;AACA;;AAUA;AACA;AACA;AAGA,MAAMA,OAAO,GAAG;AAAA,MAAE;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,GAAF;AAAA,SACf;AAAK,IAAA,SAAS,EAAC;AAAf,KACGD,YAAY,IACb,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAGA;AAAlB,KAAmC,cAAI,aAAJ,CAAnC,CAFF,EAIC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAGC;AAApC,KACG,cAAI,QAAJ,CADH,CAJD,CADe;AAAA,CAAhB;;AAWA,MAAMC,kBAAkB,GAAG;AAAA,MAAE;AAC5BC,IAAAA,cAD4B;AAE5BC,IAAAA,UAF4B;AAG5BC,IAAAA,WAH4B;AAI5BC,IAAAA;AAJ4B,GAAF;AAAA,SAM1B;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGC,kBADR;AAEC,IAAA,KAAK,EAAG,cAAI,kBAAJ,CAFT;AAGC,IAAA,OAAO,EAAGJ,cAHX;AAIC,IAAA,QAAQ,EAAGE,WAAW,KAAK;AAJ5B,IADD,EAOC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGG,mBADR;AAEC,IAAA,KAAK,EAAG,cAAI,cAAJ,CAFT;AAGC,IAAA,OAAO,EAAGJ,UAHX;AAIC,IAAA,QAAQ,EAAGC,WAAW,KAAKC,WAAW,GAAG;AAJ1C,IAPD,CAN0B;AAAA,CAA3B;;AAsBA,MAAMG,YAAY,GAAG,SASd;AAAA,MATgB;AACtBC,IAAAA,QADsB;AAEtBC,IAAAA,WAFsB;AAGtBR,IAAAA,cAHsB;AAItBC,IAAAA,UAJsB;AAKtBC,IAAAA,WALsB;AAMtBC,IAAAA,WANsB;AAOtBL,IAAAA,oBAPsB;AAQtBD,IAAAA;AARsB,GAShB;AACN,QAAMY,cAAc,GAAGF,QAAQ,KAAKG,qBAAUC,QAA9C;AACA,QAAMC,eAAe,GACpB;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGC,uBADR;AAEC,IAAA,KAAK,EAAG,cAAI,eAAJ,CAFT;AAGC,IAAA,OAAO,EAAG,MAAML,WAAW,CAAEE,qBAAUC,QAAZ,CAH5B;AAIC,IAAA,SAAS,EAAGF;AAJb,IADD,EAOC,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAGK,WADR;AAEC,IAAA,KAAK,EAAG,cAAI,WAAJ,CAFT;AAGC,IAAA,OAAO,EAAG,MAAMN,WAAW,CAAEE,qBAAUI,IAAZ,CAH5B;AAIC,IAAA,SAAS,EAAGP,QAAQ,KAAKG,qBAAUI;AAJpC,IAPD,CADD;AAgBA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGL,cAAc,IACf,4BAAC,kBAAD;AACC,IAAA,cAAc,EAAGT,cADlB;AAEC,IAAA,UAAU,EAAGC,UAFd;AAGC,IAAA,WAAW,EAAGC,WAHf;AAIC,IAAA,WAAW,EAAGC;AAJf,IAFF,EASGS,eATH,EAUGH,cAAc,IACf,4BAAC,OAAD;AACC,IAAA,oBAAoB,EAAGX,oBADxB;AAEC,IAAA,YAAY,EAAGD;AAFhB,IAXF,CADD;AAmBA,CA9CD;;eAgDeS,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport {\n\tchevronRight,\n\tchevronLeft,\n\tgrid,\n\tstretchFullWidth,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { VIEWMODES } from './constants';\n\nconst Actions = ( { onStartBlank, onBlockPatternSelect } ) => (\n\t<div className=\"block-editor-block-pattern-setup__actions\">\n\t\t{ onStartBlank && (\n\t\t\t<Button onClick={ onStartBlank }>{ __( 'Start blank' ) }</Button>\n\t\t) }\n\t\t<Button variant=\"primary\" onClick={ onBlockPatternSelect }>\n\t\t\t{ __( 'Choose' ) }\n\t\t</Button>\n\t</div>\n);\n\nconst CarouselNavigation = ( {\n\thandlePrevious,\n\thandleNext,\n\tactiveSlide,\n\ttotalSlides,\n} ) => (\n\t<div className=\"block-editor-block-pattern-setup__navigation\">\n\t\t<Button\n\t\t\ticon={ chevronLeft }\n\t\t\tlabel={ __( 'Previous pattern' ) }\n\t\t\tonClick={ handlePrevious }\n\t\t\tdisabled={ activeSlide === 0 }\n\t\t/>\n\t\t<Button\n\t\t\ticon={ chevronRight }\n\t\t\tlabel={ __( 'Next pattern' ) }\n\t\t\tonClick={ handleNext }\n\t\t\tdisabled={ activeSlide === totalSlides - 1 }\n\t\t/>\n\t</div>\n);\n\nconst SetupToolbar = ( {\n\tviewMode,\n\tsetViewMode,\n\thandlePrevious,\n\thandleNext,\n\tactiveSlide,\n\ttotalSlides,\n\tonBlockPatternSelect,\n\tonStartBlank,\n} ) => {\n\tconst isCarouselView = viewMode === VIEWMODES.carousel;\n\tconst displayControls = (\n\t\t<div className=\"block-editor-block-pattern-setup__display-controls\">\n\t\t\t<Button\n\t\t\t\ticon={ stretchFullWidth }\n\t\t\t\tlabel={ __( 'Carousel view' ) }\n\t\t\t\tonClick={ () => setViewMode( VIEWMODES.carousel ) }\n\t\t\t\tisPressed={ isCarouselView }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\ticon={ grid }\n\t\t\t\tlabel={ __( 'Grid view' ) }\n\t\t\t\tonClick={ () => setViewMode( VIEWMODES.grid ) }\n\t\t\t\tisPressed={ viewMode === VIEWMODES.grid }\n\t\t\t/>\n\t\t</div>\n\t);\n\treturn (\n\t\t<div className=\"block-editor-block-pattern-setup__toolbar\">\n\t\t\t{ isCarouselView && (\n\t\t\t\t<CarouselNavigation\n\t\t\t\t\thandlePrevious={ handlePrevious }\n\t\t\t\t\thandleNext={ handleNext }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ totalSlides }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ displayControls }\n\t\t\t{ isCarouselView && (\n\t\t\t\t<Actions\n\t\t\t\t\tonBlockPatternSelect={ onBlockPatternSelect }\n\t\t\t\t\tonStartBlank={ onStartBlank }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default SetupToolbar;\n"]}
@@ -37,7 +37,8 @@ const MAX_HEIGHT = 2000;
37
37
  function AutoBlockPreview(_ref) {
38
38
  let {
39
39
  viewportWidth,
40
- __experimentalPadding
40
+ __experimentalPadding,
41
+ __experimentalMinHeight
41
42
  } = _ref;
42
43
  const [containerResizeListener, {
43
44
  width: containerWidth
@@ -76,7 +77,8 @@ function AutoBlockPreview(_ref) {
76
77
  style: {
77
78
  transform: `scale(${scale})`,
78
79
  height: contentHeight * scale,
79
- maxHeight: contentHeight > MAX_HEIGHT ? MAX_HEIGHT * scale : undefined
80
+ maxHeight: contentHeight > MAX_HEIGHT ? MAX_HEIGHT * scale : undefined,
81
+ minHeight: __experimentalMinHeight
80
82
  }
81
83
  }, (0, _element.createElement)(_iframe.default, {
82
84
  head: (0, _element.createElement)(_editorStyles.default, {
@@ -105,7 +107,8 @@ function AutoBlockPreview(_ref) {
105
107
  pointerEvents: 'none',
106
108
  // This is a catch-all max-height for patterns.
107
109
  // See: https://github.com/WordPress/gutenberg/pull/38175.
108
- maxHeight: MAX_HEIGHT
110
+ maxHeight: MAX_HEIGHT,
111
+ minHeight: scale < 1 && __experimentalMinHeight ? __experimentalMinHeight / scale : __experimentalMinHeight
109
112
  }
110
113
  }, contentResizeListener, (0, _element.createElement)(MemoizedBlockList, {
111
114
  renderAppender: false
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"names":["MemoizedBlockList","MAX_HEIGHT","AutoBlockPreview","viewportWidth","__experimentalPadding","containerResizeListener","width","containerWidth","contentResizeListener","height","contentHeight","styles","assets","select","settings","store","getSettings","__unstableResolvedAssets","editorStyles","css","__unstableType","BlockList","scale","transform","maxHeight","undefined","bodyElement","ownerDocument","documentElement","classList","add","style","position","padding","pointerEvents"],"mappings":";;;;;;;;;AAMA;;AAHA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AAdA;AACA;AACA;;AAMA;AACA;AACA;AAMA;AACA,IAAIA,iBAAJ;AAEA,MAAMC,UAAU,GAAG,IAAnB;;AAEA,SAASC,gBAAT,OAAsE;AAAA,MAA3C;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,GAA2C;AACrE,QAAM,CACLC,uBADK,EAEL;AAAEC,IAAAA,KAAK,EAAEC;AAAT,GAFK,IAGF,iCAHJ;AAIA,QAAM,CACLC,qBADK,EAEL;AAAEC,IAAAA,MAAM,EAAEC;AAAV,GAFK,IAGF,iCAHJ;AAIA,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAqB,qBAAaC,MAAF,IAAc;AACnD,UAAMC,QAAQ,GAAGD,MAAM,CAAEE,YAAF,CAAN,CAAgBC,WAAhB,EAAjB;AACA,WAAO;AACNL,MAAAA,MAAM,EAAEG,QAAQ,CAACH,MADX;AAENC,MAAAA,MAAM,EAAEE,QAAQ,CAACG;AAFX,KAAP;AAIA,GAN0B,EAMxB,EANwB,CAA3B,CATqE,CAiBrE;;AACA,QAAMC,YAAY,GAAG,sBAAS,MAAM;AACnC,QAAKP,MAAL,EAAc;AACb,aAAO,CACN,GAAGA,MADG,EAEN;AACCQ,QAAAA,GAAG,EAAE,oCADN;AAECC,QAAAA,cAAc,EAAE;AAFjB,OAFM,CAAP;AAOA;;AAED,WAAOT,MAAP;AACA,GAZoB,EAYlB,CAAEA,MAAF,CAZkB,CAArB,CAlBqE,CAgCrE;;AACAX,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAI,mBAAMqB,kBAAN,CAAzC;AAEA,QAAMC,KAAK,GAAGf,cAAc,GAAGJ,aAA/B;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGE,uBADH,EAEC,4BAAC,oBAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,KAAK,EAAG;AACPkB,MAAAA,SAAS,EAAG,SAASD,KAAO,GADrB;AAEPb,MAAAA,MAAM,EAAEC,aAAa,GAAGY,KAFjB;AAGPE,MAAAA,SAAS,EACRd,aAAa,GAAGT,UAAhB,GACGA,UAAU,GAAGqB,KADhB,GAEGG;AANG;AAFT,KAWC,4BAAC,eAAD;AACC,IAAA,IAAI,EAAG,4BAAC,qBAAD;AAAc,MAAA,MAAM,EAAGP;AAAvB,MADR;AAEC,IAAA,MAAM,EAAGN,MAFV;AAGC,IAAA,UAAU,EAAG,2BAAgBc,WAAF,IAAmB;AAC7C,YAAM;AACLC,QAAAA,aAAa,EAAE;AAAEC,UAAAA;AAAF;AADV,UAEFF,WAFJ;AAGAE,MAAAA,eAAe,CAACC,SAAhB,CAA0BC,GAA1B,CACC,4CADD;AAGAF,MAAAA,eAAe,CAACG,KAAhB,CAAsBC,QAAtB,GAAiC,UAAjC;AACAJ,MAAAA,eAAe,CAACG,KAAhB,CAAsBzB,KAAtB,GAA8B,MAA9B;AACAoB,MAAAA,WAAW,CAACK,KAAZ,CAAkBE,OAAlB,GACC7B,qBAAqB,GAAG,IADzB,CAT6C,CAY7C;;AACAsB,MAAAA,WAAW,CAACK,KAAZ,CAAkBC,QAAlB,GAA6B,UAA7B;AACA,KAdY,EAcV,EAdU,CAHd;AAkBC,uBAlBD;AAmBC,IAAA,QAAQ,EAAG,CAAC,CAnBb;AAoBC,IAAA,KAAK,EAAG;AACPA,MAAAA,QAAQ,EAAE,UADH;AAEP1B,MAAAA,KAAK,EAAEH,aAFA;AAGPM,MAAAA,MAAM,EAAEC,aAHD;AAIPwB,MAAAA,aAAa,EAAE,MAJR;AAKP;AACA;AACAV,MAAAA,SAAS,EAAEvB;AAPJ;AApBT,KA8BGO,qBA9BH,EA+BC,4BAAC,iBAAD;AAAmB,IAAA,cAAc,EAAG;AAApC,IA/BD,CAXD,CAFD,CADD;AAkDA;;eAEcN,gB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nconst MAX_HEIGHT = 2000;\n\nfunction AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {\n\tconst [\n\t\tcontainerResizeListener,\n\t\t{ width: containerWidth },\n\t] = useResizeObserver();\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\tconst { styles, assets } = useSelect( ( select ) => {\n\t\tconst settings = select( store ).getSettings();\n\t\treturn {\n\t\t\tstyles: settings.styles,\n\t\t\tassets: settings.__unstableResolvedAssets,\n\t\t};\n\t}, [] );\n\n\t// Avoid scrollbars for pattern previews.\n\tconst editorStyles = useMemo( () => {\n\t\tif ( styles ) {\n\t\t\treturn [\n\t\t\t\t...styles,\n\t\t\t\t{\n\t\t\t\t\tcss: 'body{height:auto;overflow:hidden;}',\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\treturn styles;\n\t}, [ styles ] );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || pure( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\n\treturn (\n\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t{ containerResizeListener }\n\t\t\t<Disabled\n\t\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\t\tstyle={ {\n\t\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t\theight: contentHeight * scale,\n\t\t\t\t\tmaxHeight:\n\t\t\t\t\t\tcontentHeight > MAX_HEIGHT\n\t\t\t\t\t\t\t? MAX_HEIGHT * scale\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Iframe\n\t\t\t\t\thead={ <EditorStyles styles={ editorStyles } /> }\n\t\t\t\t\tassets={ assets }\n\t\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t\t} = bodyElement;\n\t\t\t\t\t\tdocumentElement.classList.add(\n\t\t\t\t\t\t\t'block-editor-block-preview__content-iframe'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\t\tdocumentElement.style.width = '100%';\n\t\t\t\t\t\tbodyElement.style.padding =\n\t\t\t\t\t\t\t__experimentalPadding + 'px';\n\n\t\t\t\t\t\t// necessary for contentResizeListener to work.\n\t\t\t\t\t\tbodyElement.style.position = 'relative';\n\t\t\t\t\t}, [] ) }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\t\theight: contentHeight,\n\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t// This is a catch-all max-height for patterns.\n\t\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/38175.\n\t\t\t\t\t\tmaxHeight: MAX_HEIGHT,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t\t</Iframe>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n\nexport default AutoBlockPreview;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"names":["MemoizedBlockList","MAX_HEIGHT","AutoBlockPreview","viewportWidth","__experimentalPadding","__experimentalMinHeight","containerResizeListener","width","containerWidth","contentResizeListener","height","contentHeight","styles","assets","select","settings","store","getSettings","__unstableResolvedAssets","editorStyles","css","__unstableType","BlockList","scale","transform","maxHeight","undefined","minHeight","bodyElement","ownerDocument","documentElement","classList","add","style","position","padding","pointerEvents"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nconst MAX_HEIGHT = 2000;\n\nfunction AutoBlockPreview( {\n\tviewportWidth,\n\t__experimentalPadding,\n\t__experimentalMinHeight,\n} ) {\n\tconst [\n\t\tcontainerResizeListener,\n\t\t{ width: containerWidth },\n\t] = useResizeObserver();\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\tconst { styles, assets } = useSelect( ( select ) => {\n\t\tconst settings = select( store ).getSettings();\n\t\treturn {\n\t\t\tstyles: settings.styles,\n\t\t\tassets: settings.__unstableResolvedAssets,\n\t\t};\n\t}, [] );\n\n\t// Avoid scrollbars for pattern previews.\n\tconst editorStyles = useMemo( () => {\n\t\tif ( styles ) {\n\t\t\treturn [\n\t\t\t\t...styles,\n\t\t\t\t{\n\t\t\t\t\tcss: 'body{height:auto;overflow:hidden;}',\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\treturn styles;\n\t}, [ styles ] );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || pure( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\n\treturn (\n\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t{ containerResizeListener }\n\t\t\t<Disabled\n\t\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\t\tstyle={ {\n\t\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t\theight: contentHeight * scale,\n\t\t\t\t\tmaxHeight:\n\t\t\t\t\t\tcontentHeight > MAX_HEIGHT\n\t\t\t\t\t\t\t? MAX_HEIGHT * scale\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tminHeight: __experimentalMinHeight,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Iframe\n\t\t\t\t\thead={ <EditorStyles styles={ editorStyles } /> }\n\t\t\t\t\tassets={ assets }\n\t\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t\t} = bodyElement;\n\t\t\t\t\t\tdocumentElement.classList.add(\n\t\t\t\t\t\t\t'block-editor-block-preview__content-iframe'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\t\tdocumentElement.style.width = '100%';\n\t\t\t\t\t\tbodyElement.style.padding =\n\t\t\t\t\t\t\t__experimentalPadding + 'px';\n\n\t\t\t\t\t\t// necessary for contentResizeListener to work.\n\t\t\t\t\t\tbodyElement.style.position = 'relative';\n\t\t\t\t\t}, [] ) }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\t\theight: contentHeight,\n\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t// This is a catch-all max-height for patterns.\n\t\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/38175.\n\t\t\t\t\t\tmaxHeight: MAX_HEIGHT,\n\t\t\t\t\t\tminHeight:\n\t\t\t\t\t\t\tscale < 1 && __experimentalMinHeight\n\t\t\t\t\t\t\t\t? __experimentalMinHeight / scale\n\t\t\t\t\t\t\t\t: __experimentalMinHeight,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t\t</Iframe>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n\nexport default AutoBlockPreview;\n"]}
@@ -46,7 +46,8 @@ function BlockPreview(_ref) {
46
46
  __experimentalPadding = 0,
47
47
  viewportWidth = 1200,
48
48
  __experimentalLive = false,
49
- __experimentalOnClick
49
+ __experimentalOnClick,
50
+ __experimentalMinHeight
50
51
  } = _ref;
51
52
  const originalSettings = (0, _data.useSelect)(select => select(_store.store).getSettings(), []);
52
53
  const settings = (0, _element.useMemo)(() => {
@@ -68,7 +69,8 @@ function BlockPreview(_ref) {
68
69
  onClick: __experimentalOnClick
69
70
  }) : (0, _element.createElement)(_auto.default, {
70
71
  viewportWidth: viewportWidth,
71
- __experimentalPadding: __experimentalPadding
72
+ __experimentalPadding: __experimentalPadding,
73
+ __experimentalMinHeight: __experimentalMinHeight
72
74
  }));
73
75
  }
74
76
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/index.js"],"names":["BlockPreview","blocks","__experimentalPadding","viewportWidth","__experimentalLive","__experimentalOnClick","originalSettings","select","blockEditorStore","getSettings","settings","_settings","__experimentalBlockPatterns","renderedBlocks","length","useBlockPreview","props","__experimentalLayout","disabledRef","ref","children","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseDisabled as useDisabled,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { memo, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockEditorProvider from '../provider';\nimport LiveBlockPreview from './live';\nimport AutoHeightBlockPreview from './auto';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockListItems } from '../block-list';\n\nexport function BlockPreview( {\n\tblocks,\n\t__experimentalPadding = 0,\n\tviewportWidth = 1200,\n\t__experimentalLive = false,\n\t__experimentalOnClick,\n} ) {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo( () => {\n\t\tconst _settings = { ...originalSettings };\n\t\t_settings.__experimentalBlockPatterns = [];\n\t\treturn _settings;\n\t}, [ originalSettings ] );\n\tconst renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );\n\tif ( ! blocks || blocks.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<BlockEditorProvider value={ renderedBlocks } settings={ settings }>\n\t\t\t{ __experimentalLive ? (\n\t\t\t\t<LiveBlockPreview onClick={ __experimentalOnClick } />\n\t\t\t) : (\n\t\t\t\t<AutoHeightBlockPreview\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t\t__experimentalPadding={ __experimentalPadding }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BlockEditorProvider>\n\t);\n}\n\n/**\n * BlockPreview renders a preview of a block or array of blocks.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-preview/README.md\n *\n * @param {Object} preview options for how the preview should be shown\n * @param {Array|Object} preview.blocks A block instance (object) or an array of blocks to be previewed.\n * @param {number} preview.viewportWidth Width of the preview container in pixels. Controls at what size the blocks will be rendered inside the preview. Default: 700.\n *\n * @return {WPComponent} The component to be rendered.\n */\nexport default memo( BlockPreview );\n\n/**\n * This hook is used to lightly mark an element as a block preview wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * a block preview wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} options Preview options.\n * @param {WPBlock[]} options.blocks Block objects.\n * @param {Object} options.props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options.__experimentalLayout Layout settings to be used in the preview.\n *\n */\nexport function useBlockPreview( {\n\tblocks,\n\tprops = {},\n\t__experimentalLayout,\n} ) {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst disabledRef = useDisabled();\n\tconst ref = useMergeRefs( [ props.ref, disabledRef ] );\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __experimentalBlockPatterns: [] } ),\n\t\t[ originalSettings ]\n\t);\n\tconst renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );\n\n\tconst children = (\n\t\t<BlockEditorProvider value={ renderedBlocks } settings={ settings }>\n\t\t\t<BlockListItems\n\t\t\t\trenderAppender={ false }\n\t\t\t\t__experimentalLayout={ __experimentalLayout }\n\t\t\t/>\n\t\t</BlockEditorProvider>\n\t);\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: classnames(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-preview__live-content',\n\t\t\t'components-disabled'\n\t\t),\n\t\tchildren: blocks?.length ? children : null,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/index.js"],"names":["BlockPreview","blocks","__experimentalPadding","viewportWidth","__experimentalLive","__experimentalOnClick","__experimentalMinHeight","originalSettings","select","blockEditorStore","getSettings","settings","_settings","__experimentalBlockPatterns","renderedBlocks","length","useBlockPreview","props","__experimentalLayout","disabledRef","ref","children","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseDisabled as useDisabled,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { memo, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockEditorProvider from '../provider';\nimport LiveBlockPreview from './live';\nimport AutoHeightBlockPreview from './auto';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockListItems } from '../block-list';\n\nexport function BlockPreview( {\n\tblocks,\n\t__experimentalPadding = 0,\n\tviewportWidth = 1200,\n\t__experimentalLive = false,\n\t__experimentalOnClick,\n\t__experimentalMinHeight,\n} ) {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo( () => {\n\t\tconst _settings = { ...originalSettings };\n\t\t_settings.__experimentalBlockPatterns = [];\n\t\treturn _settings;\n\t}, [ originalSettings ] );\n\tconst renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );\n\tif ( ! blocks || blocks.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<BlockEditorProvider value={ renderedBlocks } settings={ settings }>\n\t\t\t{ __experimentalLive ? (\n\t\t\t\t<LiveBlockPreview onClick={ __experimentalOnClick } />\n\t\t\t) : (\n\t\t\t\t<AutoHeightBlockPreview\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t\t__experimentalPadding={ __experimentalPadding }\n\t\t\t\t\t__experimentalMinHeight={ __experimentalMinHeight }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BlockEditorProvider>\n\t);\n}\n\n/**\n * BlockPreview renders a preview of a block or array of blocks.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-preview/README.md\n *\n * @param {Object} preview options for how the preview should be shown\n * @param {Array|Object} preview.blocks A block instance (object) or an array of blocks to be previewed.\n * @param {number} preview.viewportWidth Width of the preview container in pixels. Controls at what size the blocks will be rendered inside the preview. Default: 700.\n *\n * @return {WPComponent} The component to be rendered.\n */\nexport default memo( BlockPreview );\n\n/**\n * This hook is used to lightly mark an element as a block preview wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * a block preview wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} options Preview options.\n * @param {WPBlock[]} options.blocks Block objects.\n * @param {Object} options.props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options.__experimentalLayout Layout settings to be used in the preview.\n *\n */\nexport function useBlockPreview( {\n\tblocks,\n\tprops = {},\n\t__experimentalLayout,\n} ) {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst disabledRef = useDisabled();\n\tconst ref = useMergeRefs( [ props.ref, disabledRef ] );\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __experimentalBlockPatterns: [] } ),\n\t\t[ originalSettings ]\n\t);\n\tconst renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );\n\n\tconst children = (\n\t\t<BlockEditorProvider value={ renderedBlocks } settings={ settings }>\n\t\t\t<BlockListItems\n\t\t\t\trenderAppender={ false }\n\t\t\t\t__experimentalLayout={ __experimentalLayout }\n\t\t\t/>\n\t\t</BlockEditorProvider>\n\t);\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: classnames(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-preview__live-content',\n\t\t\t'components-disabled'\n\t\t),\n\t\tchildren: blocks?.length ? children : null,\n\t};\n}\n"]}
@@ -14,7 +14,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
14
14
 
15
15
  var _lodash = require("lodash");
16
16
 
17
- var _i18n = require("@wordpress/i18n");
17
+ var _blocks = require("@wordpress/blocks");
18
18
 
19
19
  var _components = require("@wordpress/components");
20
20
 
@@ -22,7 +22,7 @@ var _data = require("@wordpress/data");
22
22
 
23
23
  var _icons = require("@wordpress/icons");
24
24
 
25
- var _blocks = require("@wordpress/blocks");
25
+ var _i18n = require("@wordpress/i18n");
26
26
 
27
27
  var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts");
28
28
 
@@ -30,6 +30,8 @@ var _compose = require("@wordpress/compose");
30
30
 
31
31
  var _blockActions = _interopRequireDefault(require("../block-actions"));
32
32
 
33
+ var _blockIcon = _interopRequireDefault(require("../block-icon"));
34
+
33
35
  var _blockModeToggle = _interopRequireDefault(require("./block-mode-toggle"));
34
36
 
35
37
  var _blockHtmlConvertButton = _interopRequireDefault(require("./block-html-convert-button"));
@@ -42,6 +44,8 @@ var _store = require("../../store");
42
44
 
43
45
  var _useBlockDisplayTitle = _interopRequireDefault(require("../block-title/use-block-display-title"));
44
46
 
47
+ var _utils = require("../block-toolbar/utils");
48
+
45
49
  /**
46
50
  * External dependencies
47
51
  */
@@ -81,19 +85,31 @@ function BlockSettingsDropdown(_ref2) {
81
85
  const count = blockClientIds.length;
82
86
  const firstBlockClientId = blockClientIds[0];
83
87
  const {
88
+ firstParentClientId,
89
+ hasReducedUI,
84
90
  onlyBlock,
91
+ parentBlockType,
85
92
  previousBlockClientId,
86
93
  nextBlockClientId,
87
94
  selectedBlockClientIds
88
95
  } = (0, _data.useSelect)(select => {
89
96
  const {
90
97
  getBlockCount,
98
+ getBlockName,
99
+ getBlockParents,
91
100
  getPreviousBlockClientId,
92
101
  getNextBlockClientId,
93
- getSelectedBlockClientIds
102
+ getSelectedBlockClientIds,
103
+ getSettings
94
104
  } = select(_store.store);
105
+ const parents = getBlockParents(firstBlockClientId);
106
+ const _firstParentClientId = parents[parents.length - 1];
107
+ const parentBlockName = getBlockName(_firstParentClientId);
95
108
  return {
109
+ firstParentClientId: _firstParentClientId,
110
+ hasReducedUI: getSettings().hasReducedUI,
96
111
  onlyBlock: 1 === getBlockCount(),
112
+ parentBlockType: (0, _blocks.getBlockType)(parentBlockName),
97
113
  previousBlockClientId: getPreviousBlockClientId(firstBlockClientId),
98
114
  nextBlockClientId: getNextBlockClientId(firstBlockClientId),
99
115
  selectedBlockClientIds: getSelectedBlockClientIds()
@@ -110,6 +126,10 @@ function BlockSettingsDropdown(_ref2) {
110
126
  insertBefore: getShortcutRepresentation('core/block-editor/insert-before')
111
127
  };
112
128
  }, []);
129
+ const {
130
+ selectBlock,
131
+ toggleBlockHighlight
132
+ } = (0, _data.useDispatch)(_store.store);
113
133
  const updateSelectionAfterDuplicate = (0, _element.useCallback)(__experimentalSelectBlock ? async clientIdsPromise => {
114
134
  const ids = await clientIdsPromise;
115
135
 
@@ -132,7 +152,24 @@ function BlockSettingsDropdown(_ref2) {
132
152
  const label = (0, _i18n.sprintf)(
133
153
  /* translators: %s: block name */
134
154
  (0, _i18n.__)('Remove %s'), blockTitle);
135
- const removeBlockLabel = count === 1 ? label : (0, _i18n.__)('Remove blocks');
155
+ const removeBlockLabel = count === 1 ? label : (0, _i18n.__)('Remove blocks'); // Allows highlighting the parent block outline when focusing or hovering
156
+ // the parent block selector within the child.
157
+
158
+ const selectParentButtonRef = (0, _element.useRef)();
159
+ const {
160
+ gestures: showParentOutlineGestures
161
+ } = (0, _utils.useShowMoversGestures)({
162
+ ref: selectParentButtonRef,
163
+
164
+ onChange(isFocused) {
165
+ if (isFocused && hasReducedUI) {
166
+ return;
167
+ }
168
+
169
+ toggleBlockHighlight(firstParentClientId, isFocused);
170
+ }
171
+
172
+ });
136
173
  return (0, _element.createElement)(_blockActions.default, {
137
174
  clientIds: clientIds,
138
175
  __experimentalUpdateSelection: !__experimentalSelectBlock
@@ -164,7 +201,15 @@ function BlockSettingsDropdown(_ref2) {
164
201
  fillProps: {
165
202
  onClose
166
203
  }
167
- }), count === 1 && (0, _element.createElement)(_blockHtmlConvertButton.default, {
204
+ }), firstParentClientId !== undefined && (0, _element.createElement)(_components.MenuItem, (0, _extends2.default)({}, showParentOutlineGestures, {
205
+ ref: selectParentButtonRef,
206
+ icon: (0, _element.createElement)(_blockIcon.default, {
207
+ icon: parentBlockType.icon
208
+ }),
209
+ onClick: () => selectBlock(firstParentClientId)
210
+ }), (0, _i18n.sprintf)(
211
+ /* translators: %s: Name of the block's parent. */
212
+ (0, _i18n.__)('Select parent block (%s)'), parentBlockType.title)), count === 1 && (0, _element.createElement)(_blockHtmlConvertButton.default, {
168
213
  clientId: firstBlockClientId
169
214
  }), (0, _element.createElement)(CopyMenuItem, {
170
215
  blocks: blocks,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","length","firstBlockClientId","onlyBlock","previousBlockClientId","nextBlockClientId","selectedBlockClientIds","select","getBlockCount","getPreviousBlockClientId","getNextBlockClientId","getSelectedBlockClientIds","blockEditorStore","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","updateSelectionAfterDuplicate","clientIdsPromise","ids","noop","blockTitle","updateSelectionAfterRemove","blockToSelect","includes","label","removeBlockLabel","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","moreVertical","onClose","Children","map","child"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow, noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport { Children, cloneElement, useCallback } from '@wordpress/element';\nimport { serialize } from '@wordpress/blocks';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockModeToggle from './block-mode-toggle';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nfunction CopyMenuItem( { blocks, onCopy } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\treturn <MenuItem ref={ ref }>{ __( 'Copy' ) }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t...props\n} ) {\n\tconst blockClientIds = castArray( clientIds );\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tonlyBlock,\n\t\tpreviousBlockClientId,\n\t\tnextBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tonlyBlock: 1 === getBlockCount(),\n\t\t\t\tpreviousBlockClientId: getPreviousBlockClientId(\n\t\t\t\t\tfirstBlockClientId\n\t\t\t\t),\n\t\t\t\tnextBlockClientId: getNextBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\t__experimentalSelectBlock\n\t\t\t? async ( clientIdsPromise ) => {\n\t\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ] );\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: noop,\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( firstBlockClientId, 25 );\n\n\tconst updateSelectionAfterRemove = useCallback(\n\t\t__experimentalSelectBlock\n\t\t\t? () => {\n\t\t\t\t\tconst blockToSelect =\n\t\t\t\t\t\tpreviousBlockClientId || nextBlockClientId;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockToSelect &&\n\t\t\t\t\t\t// From the block options dropdown, it's possible to remove a block that is not selected,\n\t\t\t\t\t\t// in this case, it's not necessary to update the selection since the selected block wasn't removed.\n\t\t\t\t\t\tselectedBlockClientIds.includes( firstBlockClientId ) &&\n\t\t\t\t\t\t// Don't update selection when next/prev block also is in the selection ( and gets removed ),\n\t\t\t\t\t\t// In case someone selects all blocks and removes them at once.\n\t\t\t\t\t\t! selectedBlockClientIds.includes( blockToSelect )\n\t\t\t\t\t) {\n\t\t\t\t\t\t__experimentalSelectBlock( blockToSelect );\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: noop,\n\t\t[\n\t\t\t__experimentalSelectBlock,\n\t\t\tpreviousBlockClientId,\n\t\t\tnextBlockClientId,\n\t\t\tselectedBlockClientIds,\n\t\t]\n\t);\n\n\tconst label = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Remove %s' ),\n\t\tblockTitle\n\t);\n\tconst removeBlockLabel = count === 1 ? label : __( 'Remove blocks' );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canMove && ! onlyBlock && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow( onClose, onMoveTo ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move to' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t\tonToggle={ onClose }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ removeBlockLabel }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","length","firstBlockClientId","firstParentClientId","hasReducedUI","onlyBlock","parentBlockType","previousBlockClientId","nextBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockParents","getPreviousBlockClientId","getNextBlockClientId","getSelectedBlockClientIds","getSettings","blockEditorStore","parents","_firstParentClientId","parentBlockName","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","selectBlock","toggleBlockHighlight","updateSelectionAfterDuplicate","clientIdsPromise","ids","noop","blockTitle","updateSelectionAfterRemove","blockToSelect","includes","label","removeBlockLabel","selectParentButtonRef","gestures","showParentOutlineGestures","onChange","isFocused","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","moreVertical","onClose","undefined","icon","title","Children","map","child"],"mappings":";;;;;;;;;;AAYA;;;;AATA;;AAKA;;AACA;;AACA;;AACA;;AAOA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAjCA;AACA;AACA;;AAGA;AACA;AACA;;AAeA;AACA;AACA;AAWA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,SAAS,EAAE,2CADU;AAErBC,EAAAA,QAAQ,EAAE,cAFW;AAGrBC,EAAAA,WAAW,EAAE;AAHQ,CAAtB;;AAMA,SAASC,YAAT,OAA4C;AAAA,MAArB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAqB;AAC3C,QAAMC,GAAG,GAAG,iCAAoB,MAAM,uBAAWF,MAAX,CAA1B,EAA+CC,MAA/C,CAAZ;AACA,SAAO,4BAAC,oBAAD;AAAU,IAAA,GAAG,EAAGC;AAAhB,KAAwB,cAAI,MAAJ,CAAxB,CAAP;AACA;;AAEM,SAASC,qBAAT,QAKH;AAAA,MALmC;AACtCC,IAAAA,SADsC;AAEtCC,IAAAA,yBAFsC;AAGtCC,IAAAA,QAHsC;AAItC,OAAGC;AAJmC,GAKnC;AACH,QAAMC,cAAc,GAAG,uBAAWJ,SAAX,CAAvB;AACA,QAAMK,KAAK,GAAGD,cAAc,CAACE,MAA7B;AACA,QAAMC,kBAAkB,GAAGH,cAAc,CAAE,CAAF,CAAzC;AACA,QAAM;AACLI,IAAAA,mBADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,SAHK;AAILC,IAAAA,eAJK;AAKLC,IAAAA,qBALK;AAMLC,IAAAA,iBANK;AAOLC,IAAAA;AAPK,MAQF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,aADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA,wBAJK;AAKLC,MAAAA,oBALK;AAMLC,MAAAA,yBANK;AAOLC,MAAAA;AAPK,QAQFP,MAAM,CAAEQ,YAAF,CARV;AAUA,UAAMC,OAAO,GAAGN,eAAe,CAAEX,kBAAF,CAA/B;AACA,UAAMkB,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAAClB,MAAR,GAAiB,CAAnB,CAApC;AACA,UAAMoB,eAAe,GAAGT,YAAY,CAAEQ,oBAAF,CAApC;AAEA,WAAO;AACNjB,MAAAA,mBAAmB,EAAEiB,oBADf;AAENhB,MAAAA,YAAY,EAAEa,WAAW,GAAGb,YAFtB;AAGNC,MAAAA,SAAS,EAAE,MAAMM,aAAa,EAHxB;AAINL,MAAAA,eAAe,EAAE,0BAAce,eAAd,CAJX;AAKNd,MAAAA,qBAAqB,EAAEO,wBAAwB,CAC9CZ,kBAD8C,CALzC;AAQNM,MAAAA,iBAAiB,EAAEO,oBAAoB,CAAEb,kBAAF,CARjC;AASNO,MAAAA,sBAAsB,EAAEO,yBAAyB;AAT3C,KAAP;AAWA,GA3BE,EA4BH,CAAEd,kBAAF,CA5BG,CARJ;AAuCA,QAAMoB,SAAS,GAAG,qBAAaZ,MAAF,IAAc;AAC1C,UAAM;AAAEa,MAAAA;AAAF,QAAgCb,MAAM,CAAEc,wBAAF,CAA5C;AACA,WAAO;AACNC,MAAAA,SAAS,EAAEF,yBAAyB,CACnC,6BADmC,CAD9B;AAING,MAAAA,MAAM,EAAEH,yBAAyB,CAAE,0BAAF,CAJ3B;AAKNI,MAAAA,WAAW,EAAEJ,yBAAyB,CACrC,gCADqC,CALhC;AAQNK,MAAAA,YAAY,EAAEL,yBAAyB,CACtC,iCADsC;AARjC,KAAP;AAYA,GAdiB,EAcf,EAde,CAAlB;AAgBA,QAAM;AAAEM,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAwC,uBAC7CZ,YAD6C,CAA9C;AAIA,QAAMa,6BAA6B,GAAG,0BACrCnC,yBAAyB,GACtB,MAAQoC,gBAAR,IAA8B;AAC9B,UAAMC,GAAG,GAAG,MAAMD,gBAAlB;;AACA,QAAKC,GAAG,IAAIA,GAAG,CAAE,CAAF,CAAf,EAAuB;AACtBrC,MAAAA,yBAAyB,CAAEqC,GAAG,CAAE,CAAF,CAAL,CAAzB;AACA;AACA,GANqB,GAOtBC,YARkC,EASrC,CAAEtC,yBAAF,CATqC,CAAtC;AAYA,QAAMuC,UAAU,GAAG,mCAAsBjC,kBAAtB,EAA0C,EAA1C,CAAnB;AAEA,QAAMkC,0BAA0B,GAAG,0BAClCxC,yBAAyB,GACtB,MAAM;AACN,UAAMyC,aAAa,GAClB9B,qBAAqB,IAAIC,iBAD1B;;AAGA,QACC6B,aAAa,IACb;AACA;AACA5B,IAAAA,sBAAsB,CAAC6B,QAAvB,CAAiCpC,kBAAjC,CAHA,IAIA;AACA;AACA,KAAEO,sBAAsB,CAAC6B,QAAvB,CAAiCD,aAAjC,CAPH,EAQE;AACDzC,MAAAA,yBAAyB,CAAEyC,aAAF,CAAzB;AACA;AACA,GAhBqB,GAiBtBH,YAlB+B,EAmBlC,CACCtC,yBADD,EAECW,qBAFD,EAGCC,iBAHD,EAICC,sBAJD,CAnBkC,CAAnC;AA2BA,QAAM8B,KAAK,GAAG;AACb;AACA,gBAAI,WAAJ,CAFa,EAGbJ,UAHa,CAAd;AAKA,QAAMK,gBAAgB,GAAGxC,KAAK,KAAK,CAAV,GAAcuC,KAAd,GAAsB,cAAI,eAAJ,CAA/C,CA7GG,CA+GH;AACA;;AACA,QAAME,qBAAqB,GAAG,sBAA9B;AACA,QAAM;AAAEC,IAAAA,QAAQ,EAAEC;AAAZ,MAA0C,kCAAuB;AACtElD,IAAAA,GAAG,EAAEgD,qBADiE;;AAEtEG,IAAAA,QAAQ,CAAEC,SAAF,EAAc;AACrB,UAAKA,SAAS,IAAIzC,YAAlB,EAAiC;AAChC;AACA;;AACD0B,MAAAA,oBAAoB,CAAE3B,mBAAF,EAAuB0C,SAAvB,CAApB;AACA;;AAPqE,GAAvB,CAAhD;AAUA,SACC,4BAAC,qBAAD;AACC,IAAA,SAAS,EAAGlD,SADb;AAEC,IAAA,6BAA6B,EAAG,CAAEC;AAFnC,KAIG;AAAA,QAAE;AACHkD,MAAAA,YADG;AAEHC,MAAAA,qBAFG;AAGHC,MAAAA,OAHG;AAIHC,MAAAA,SAJG;AAKHC,MAAAA,WALG;AAMHC,MAAAA,aANG;AAOHC,MAAAA,cAPG;AAQHC,MAAAA,QARG;AASH7D,MAAAA,MATG;AAUH8D,MAAAA,QAVG;AAWH/D,MAAAA;AAXG,KAAF;AAAA,WAaD,4BAAC,wBAAD;AACC,MAAA,IAAI,EAAGgE,mBADR;AAEC,MAAA,KAAK,EAAG,cAAI,SAAJ,CAFT;AAGC,MAAA,SAAS,EAAC,kCAHX;AAIC,MAAA,YAAY,EAAGrE,aAJhB;AAKC,MAAA,OAAO;AALR,OAMMY,KANN,GAQG;AAAA,UAAE;AAAE0D,QAAAA;AAAF,OAAF;AAAA,aACD,qDACC,4BAAC,qBAAD,QACC,4BAAC,mCAAD,CAAsC,IAAtC;AACC,QAAA,SAAS,EAAG;AAAEA,UAAAA;AAAF;AADb,QADD,EAIGrD,mBAAmB,KAAKsD,SAAxB,IACD,4BAAC,oBAAD,6BACMd,yBADN;AAEC,QAAA,GAAG,EAAGF,qBAFP;AAGC,QAAA,IAAI,EACH,4BAAC,kBAAD;AACC,UAAA,IAAI,EAAGnC,eAAe,CAACoD;AADxB,UAJF;AAQC,QAAA,OAAO,EAAG,MACT7B,WAAW,CAAE1B,mBAAF;AATb,UAYG;AACD;AACA,oBAAI,0BAAJ,CAFC,EAGDG,eAAe,CAACqD,KAHf,CAZH,CALF,EAwBG3D,KAAK,KAAK,CAAV,IACD,4BAAC,+BAAD;AACC,QAAA,QAAQ,EAAGE;AADZ,QAzBF,EA6BC,4BAAC,YAAD;AACC,QAAA,MAAM,EAAGX,MADV;AAEC,QAAA,MAAM,EAAGC;AAFV,QA7BD,EAiCGsD,YAAY,IACb,4BAAC,oBAAD;AACC,QAAA,OAAO,EAAG,kBACTU,OADS,EAETN,WAFS,EAGTnB,6BAHS,CADX;AAMC,QAAA,QAAQ,EAAGT,SAAS,CAACG;AANtB,SAQG,cAAI,WAAJ,CARH,CAlCF,EA6CGsB,qBAAqB,IACtB,qDACC,4BAAC,oBAAD;AACC,QAAA,OAAO,EAAG,kBACTS,OADS,EAETJ,cAFS,CADX;AAKC,QAAA,QAAQ,EAAG9B,SAAS,CAACM;AALtB,SAOG,cAAI,eAAJ,CAPH,CADD,EAUC,4BAAC,oBAAD;AACC,QAAA,OAAO,EAAG,kBACT4B,OADS,EAETL,aAFS,CADX;AAKC,QAAA,QAAQ,EAAG7B,SAAS,CAACK;AALtB,SAOG,cAAI,cAAJ,CAPH,CAVD,CA9CF,EAmEGqB,OAAO,IAAI,CAAE3C,SAAb,IACD,4BAAC,oBAAD;AACC,QAAA,OAAO,EAAG,kBAAMmD,OAAN,EAAeF,QAAf;AADX,SAGG,cAAI,SAAJ,CAHH,CApEF,EA0EGtD,KAAK,KAAK,CAAV,IACD,4BAAC,wBAAD;AACC,QAAA,QAAQ,EAAGE,kBADZ;AAEC,QAAA,QAAQ,EAAGsD;AAFZ,QA3EF,CADD,EAkFC,4BAAC,kCAAD,CAA2B,IAA3B;AACC,QAAA,SAAS,EAAG;AAAEA,UAAAA;AAAF,SADb;AAEC,QAAA,SAAS,EAAG7D;AAFb,QAlFD,EAsFG,OAAOE,QAAP,KAAoB,UAApB,GACCA,QAAQ,CAAE;AAAE2D,QAAAA;AAAF,OAAF,CADT,GAECI,kBAASC,GAAT,CAAgBC,KAAF,IACd,2BAAcA,KAAd,EAAqB;AAAEN,QAAAA;AAAF,OAArB,CADA,CAxFJ,EA2FGP,SAAS,IACV,4BAAC,qBAAD,QACC,4BAAC,oBAAD;AACC,QAAA,OAAO,EAAG,kBACTO,OADS,EAETH,QAFS,EAGTjB,0BAHS,CADX;AAMC,QAAA,QAAQ,EAAGd,SAAS,CAACI;AANtB,SAQGc,gBARH,CADD,CA5FF,CADC;AAAA,KARH,CAbC;AAAA,GAJH,CADD;AA0IA;;eAEc9C,qB","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow, noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockType, serialize } from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tChildren,\n\tcloneElement,\n\tuseCallback,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockIcon from '../block-icon';\nimport BlockModeToggle from './block-mode-toggle';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { useShowMoversGestures } from '../block-toolbar/utils';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nfunction CopyMenuItem( { blocks, onCopy } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\treturn <MenuItem ref={ ref }>{ __( 'Copy' ) }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t...props\n} ) {\n\tconst blockClientIds = castArray( clientIds );\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\thasReducedUI,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tnextBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst parents = getBlockParents( firstBlockClientId );\n\t\t\tconst _firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\thasReducedUI: getSettings().hasReducedUI,\n\t\t\t\tonlyBlock: 1 === getBlockCount(),\n\t\t\t\tparentBlockType: getBlockType( parentBlockName ),\n\t\t\t\tpreviousBlockClientId: getPreviousBlockClientId(\n\t\t\t\t\tfirstBlockClientId\n\t\t\t\t),\n\t\t\t\tnextBlockClientId: getNextBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tconst { selectBlock, toggleBlockHighlight } = useDispatch(\n\t\tblockEditorStore\n\t);\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\t__experimentalSelectBlock\n\t\t\t? async ( clientIdsPromise ) => {\n\t\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ] );\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: noop,\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( firstBlockClientId, 25 );\n\n\tconst updateSelectionAfterRemove = useCallback(\n\t\t__experimentalSelectBlock\n\t\t\t? () => {\n\t\t\t\t\tconst blockToSelect =\n\t\t\t\t\t\tpreviousBlockClientId || nextBlockClientId;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockToSelect &&\n\t\t\t\t\t\t// From the block options dropdown, it's possible to remove a block that is not selected,\n\t\t\t\t\t\t// in this case, it's not necessary to update the selection since the selected block wasn't removed.\n\t\t\t\t\t\tselectedBlockClientIds.includes( firstBlockClientId ) &&\n\t\t\t\t\t\t// Don't update selection when next/prev block also is in the selection ( and gets removed ),\n\t\t\t\t\t\t// In case someone selects all blocks and removes them at once.\n\t\t\t\t\t\t! selectedBlockClientIds.includes( blockToSelect )\n\t\t\t\t\t) {\n\t\t\t\t\t\t__experimentalSelectBlock( blockToSelect );\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: noop,\n\t\t[\n\t\t\t__experimentalSelectBlock,\n\t\t\tpreviousBlockClientId,\n\t\t\tnextBlockClientId,\n\t\t\tselectedBlockClientIds,\n\t\t]\n\t);\n\n\tconst label = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Remove %s' ),\n\t\tblockTitle\n\t);\n\tconst removeBlockLabel = count === 1 ? label : __( 'Remove blocks' );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst selectParentButtonRef = useRef();\n\tconst { gestures: showParentOutlineGestures } = useShowMoversGestures( {\n\t\tref: selectParentButtonRef,\n\t\tonChange( isFocused ) {\n\t\t\tif ( isFocused && hasReducedUI ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttoggleBlockHighlight( firstParentClientId, isFocused );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ firstParentClientId !== undefined && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t{ ...showParentOutlineGestures }\n\t\t\t\t\t\t\t\t\t\tref={ selectParentButtonRef }\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ parentBlockType.icon }\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\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tselectBlock( firstParentClientId )\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\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t\t\t\t\t\t\t__( 'Select parent block (%s)' ),\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType.title\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canMove && ! onlyBlock && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow( onClose, onMoveTo ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move to' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t\tonToggle={ onClose }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ removeBlockLabel }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"]}