@wordpress/block-editor 9.3.0 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -8
  3. package/build/components/block-list/block-invalid-warning.native.js +54 -6
  4. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  5. package/build/components/block-list/block.js +2 -2
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/block.native.js +2 -1
  8. package/build/components/block-list/block.native.js.map +1 -1
  9. package/build/components/block-list/index.native.js +4 -3
  10. package/build/components/block-list/index.native.js.map +1 -1
  11. package/build/components/block-list/layout.js +20 -5
  12. package/build/components/block-list/layout.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
  14. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  15. package/build/components/block-lock/modal.js +37 -7
  16. package/build/components/block-lock/modal.js.map +1 -1
  17. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  18. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +95 -32
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-pattern-setup/index.js +8 -26
  22. package/build/components/block-pattern-setup/index.js.map +1 -1
  23. package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
  24. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  25. package/build/components/block-popover/inbetween.js +1 -1
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-popover/index.js +1 -1
  28. package/build/components/block-popover/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +21 -5
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
  32. package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  33. package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
  34. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  35. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  36. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  37. package/build/components/block-settings-menu/index.js +6 -2
  38. package/build/components/block-settings-menu/index.js.map +1 -1
  39. package/build/components/block-settings-menu-controls/index.js +5 -2
  40. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  41. package/build/components/block-styles/preview.native.js.map +1 -1
  42. package/build/components/block-switcher/index.js +7 -1
  43. package/build/components/block-switcher/index.js.map +1 -1
  44. package/build/components/block-title/index.js +8 -2
  45. package/build/components/block-title/index.js.map +1 -1
  46. package/build/components/block-title/use-block-display-title.js +15 -15
  47. package/build/components/block-title/use-block-display-title.js.map +1 -1
  48. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  49. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  50. package/build/components/block-tools/block-selection-button.js +1 -7
  51. package/build/components/block-tools/block-selection-button.js.map +1 -1
  52. package/build/components/block-tools/index.js +4 -1
  53. package/build/components/block-tools/index.js.map +1 -1
  54. package/build/components/block-types-list/index.native.js +65 -23
  55. package/build/components/block-types-list/index.native.js.map +1 -1
  56. package/build/components/border-radius-control/index.js +2 -0
  57. package/build/components/border-radius-control/index.js.map +1 -1
  58. package/build/components/colors/with-colors.js +1 -1
  59. package/build/components/colors/with-colors.js.map +1 -1
  60. package/build/components/colors-gradients/control.js +46 -39
  61. package/build/components/colors-gradients/control.js.map +1 -1
  62. package/build/components/colors-gradients/dropdown.js +7 -3
  63. package/build/components/colors-gradients/dropdown.js.map +1 -1
  64. package/build/components/date-format-picker/index.js +1 -1
  65. package/build/components/date-format-picker/index.js.map +1 -1
  66. package/build/components/duotone/components.js +145 -0
  67. package/build/components/duotone/components.js.map +1 -0
  68. package/build/components/duotone/index.js +40 -0
  69. package/build/components/duotone/index.js.map +1 -0
  70. package/build/components/duotone/utils.js +38 -0
  71. package/build/components/duotone/utils.js.map +1 -0
  72. package/build/components/duotone-control/index.js +17 -5
  73. package/build/components/duotone-control/index.js.map +1 -1
  74. package/build/components/iframe/index.js +19 -6
  75. package/build/components/iframe/index.js.map +1 -1
  76. package/build/components/image-editor/cropper.js +4 -3
  77. package/build/components/image-editor/cropper.js.map +1 -1
  78. package/build/components/image-editor/index.js +3 -1
  79. package/build/components/image-editor/index.js.map +1 -1
  80. package/build/components/index.js +14 -0
  81. package/build/components/index.js.map +1 -1
  82. package/build/components/inserter/block-types-tab.native.js +30 -16
  83. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  84. package/build/components/inserter/index.js +3 -3
  85. package/build/components/inserter/index.js.map +1 -1
  86. package/build/components/inserter/preview-panel.js +8 -8
  87. package/build/components/inserter/preview-panel.js.map +1 -1
  88. package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
  89. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  90. package/build/components/inserter/search-results.native.js +5 -2
  91. package/build/components/inserter/search-results.native.js.map +1 -1
  92. package/build/components/inserter/utils.native.js +21 -0
  93. package/build/components/inserter/utils.native.js.map +1 -1
  94. package/build/components/inserter-list-item/index.js +5 -1
  95. package/build/components/inserter-list-item/index.js.map +1 -1
  96. package/build/components/link-control/index.js +1 -1
  97. package/build/components/link-control/index.js.map +1 -1
  98. package/build/components/list-view/block-select-button.js +15 -7
  99. package/build/components/list-view/block-select-button.js.map +1 -1
  100. package/build/components/list-view/branch.js +1 -7
  101. package/build/components/list-view/branch.js.map +1 -1
  102. package/build/components/list-view/drop-indicator.js +1 -1
  103. package/build/components/list-view/drop-indicator.js.map +1 -1
  104. package/build/components/media-placeholder/index.js +14 -2
  105. package/build/components/media-placeholder/index.js.map +1 -1
  106. package/build/components/media-placeholder/index.native.js +4 -4
  107. package/build/components/media-placeholder/index.native.js.map +1 -1
  108. package/build/components/media-replace-flow/index.js +6 -13
  109. package/build/components/media-replace-flow/index.js.map +1 -1
  110. package/build/components/observe-typing/index.js +22 -8
  111. package/build/components/observe-typing/index.js.map +1 -1
  112. package/build/components/publish-date-time-picker/index.js +3 -0
  113. package/build/components/publish-date-time-picker/index.js.map +1 -1
  114. package/build/components/rich-text/format-toolbar-container.js +61 -12
  115. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  116. package/build/components/rich-text/index.js +2 -1
  117. package/build/components/rich-text/index.js.map +1 -1
  118. package/build/components/rich-text/use-format-types.js +36 -16
  119. package/build/components/rich-text/use-format-types.js.map +1 -1
  120. package/build/components/rich-text/use-input-rules.js +4 -13
  121. package/build/components/rich-text/use-input-rules.js.map +1 -1
  122. package/build/components/rich-text/use-paste-handler.js +20 -5
  123. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  124. package/build/components/url-popover/index.js +2 -1
  125. package/build/components/url-popover/index.js.map +1 -1
  126. package/build/components/writing-flow/use-arrow-nav.js +34 -2
  127. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  128. package/build/components/writing-flow/use-multi-selection.js +3 -47
  129. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  130. package/build/components/writing-flow/use-selection-observer.js +1 -3
  131. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  132. package/build/components/writing-flow/use-tab-nav.js +1 -1
  133. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  134. package/build/elements/index.js +11 -3
  135. package/build/elements/index.js.map +1 -1
  136. package/build/hooks/aria-label.js +71 -0
  137. package/build/hooks/aria-label.js.map +1 -0
  138. package/build/hooks/color.js +2 -4
  139. package/build/hooks/color.js.map +1 -1
  140. package/build/hooks/duotone.js +33 -160
  141. package/build/hooks/duotone.js.map +1 -1
  142. package/build/hooks/index.js +11 -7
  143. package/build/hooks/index.js.map +1 -1
  144. package/build/hooks/layout.js +59 -18
  145. package/build/hooks/layout.js.map +1 -1
  146. package/build/hooks/style.js +41 -31
  147. package/build/hooks/style.js.map +1 -1
  148. package/build/hooks/utils.js +5 -3
  149. package/build/hooks/utils.js.map +1 -1
  150. package/build/index.js +7 -7
  151. package/build/index.js.map +1 -1
  152. package/build/layouts/flex.js +42 -38
  153. package/build/layouts/flex.js.map +1 -1
  154. package/build/layouts/flow.js +35 -37
  155. package/build/layouts/flow.js.map +1 -1
  156. package/build/layouts/utils.js +35 -3
  157. package/build/layouts/utils.js.map +1 -1
  158. package/build/store/actions.js +24 -31
  159. package/build/store/actions.js.map +1 -1
  160. package/build/store/index.js +0 -4
  161. package/build/store/index.js.map +1 -1
  162. package/build/store/reducer.js +23 -12
  163. package/build/store/reducer.js.map +1 -1
  164. package/build/store/selectors.js +3 -3
  165. package/build/store/selectors.js.map +1 -1
  166. package/build/utils/selection.js +34 -0
  167. package/build/utils/selection.js.map +1 -0
  168. package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
  169. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  170. package/build-module/components/block-list/block.js +2 -2
  171. package/build-module/components/block-list/block.js.map +1 -1
  172. package/build-module/components/block-list/block.native.js +2 -1
  173. package/build-module/components/block-list/block.native.js.map +1 -1
  174. package/build-module/components/block-list/index.native.js +3 -1
  175. package/build-module/components/block-list/index.native.js.map +1 -1
  176. package/build-module/components/block-list/layout.js +19 -4
  177. package/build-module/components/block-list/layout.js.map +1 -1
  178. package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
  179. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  180. package/build-module/components/block-lock/modal.js +39 -8
  181. package/build-module/components/block-lock/modal.js.map +1 -1
  182. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  183. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  184. package/build-module/components/block-mover/mover-description.js +97 -33
  185. package/build-module/components/block-mover/mover-description.js.map +1 -1
  186. package/build-module/components/block-pattern-setup/index.js +9 -27
  187. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  188. package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
  189. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  190. package/build-module/components/block-popover/inbetween.js +1 -1
  191. package/build-module/components/block-popover/inbetween.js.map +1 -1
  192. package/build-module/components/block-popover/index.js +1 -1
  193. package/build-module/components/block-popover/index.js.map +1 -1
  194. package/build-module/components/block-preview/auto.js +20 -5
  195. package/build-module/components/block-preview/auto.js.map +1 -1
  196. package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
  197. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  198. package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
  199. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  200. package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -5
  201. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  202. package/build-module/components/block-settings-menu/index.js +6 -3
  203. package/build-module/components/block-settings-menu/index.js.map +1 -1
  204. package/build-module/components/block-settings-menu-controls/index.js +7 -4
  205. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  206. package/build-module/components/block-styles/preview.native.js.map +1 -1
  207. package/build-module/components/block-switcher/index.js +7 -1
  208. package/build-module/components/block-switcher/index.js.map +1 -1
  209. package/build-module/components/block-title/index.js +8 -2
  210. package/build-module/components/block-title/index.js.map +1 -1
  211. package/build-module/components/block-title/use-block-display-title.js +15 -14
  212. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  213. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  214. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  215. package/build-module/components/block-tools/block-selection-button.js +1 -7
  216. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  217. package/build-module/components/block-tools/index.js +4 -1
  218. package/build-module/components/block-tools/index.js.map +1 -1
  219. package/build-module/components/block-types-list/index.native.js +67 -25
  220. package/build-module/components/block-types-list/index.native.js.map +1 -1
  221. package/build-module/components/border-radius-control/index.js +2 -0
  222. package/build-module/components/border-radius-control/index.js.map +1 -1
  223. package/build-module/components/colors/with-colors.js +2 -2
  224. package/build-module/components/colors/with-colors.js.map +1 -1
  225. package/build-module/components/colors-gradients/control.js +47 -40
  226. package/build-module/components/colors-gradients/control.js.map +1 -1
  227. package/build-module/components/colors-gradients/dropdown.js +8 -4
  228. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  229. package/build-module/components/date-format-picker/index.js +1 -1
  230. package/build-module/components/date-format-picker/index.js.map +1 -1
  231. package/build-module/components/duotone/components.js +130 -0
  232. package/build-module/components/duotone/components.js.map +1 -0
  233. package/build-module/components/duotone/index.js +3 -0
  234. package/build-module/components/duotone/index.js.map +1 -0
  235. package/build-module/components/duotone/utils.js +30 -0
  236. package/build-module/components/duotone/utils.js.map +1 -0
  237. package/build-module/components/duotone-control/index.js +18 -6
  238. package/build-module/components/duotone-control/index.js.map +1 -1
  239. package/build-module/components/iframe/index.js +19 -6
  240. package/build-module/components/iframe/index.js.map +1 -1
  241. package/build-module/components/image-editor/cropper.js +4 -3
  242. package/build-module/components/image-editor/cropper.js.map +1 -1
  243. package/build-module/components/image-editor/index.js +3 -1
  244. package/build-module/components/image-editor/index.js.map +1 -1
  245. package/build-module/components/index.js +1 -0
  246. package/build-module/components/index.js.map +1 -1
  247. package/build-module/components/inserter/block-types-tab.native.js +31 -15
  248. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  249. package/build-module/components/inserter/index.js +3 -2
  250. package/build-module/components/inserter/index.js.map +1 -1
  251. package/build-module/components/inserter/preview-panel.js +9 -9
  252. package/build-module/components/inserter/preview-panel.js.map +1 -1
  253. package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
  254. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  255. package/build-module/components/inserter/search-results.native.js +6 -3
  256. package/build-module/components/inserter/search-results.native.js.map +1 -1
  257. package/build-module/components/inserter/utils.native.js +19 -0
  258. package/build-module/components/inserter/utils.native.js.map +1 -1
  259. package/build-module/components/inserter-list-item/index.js +4 -1
  260. package/build-module/components/inserter-list-item/index.js.map +1 -1
  261. package/build-module/components/link-control/index.js +1 -1
  262. package/build-module/components/link-control/index.js.map +1 -1
  263. package/build-module/components/list-view/block-select-button.js +16 -8
  264. package/build-module/components/list-view/block-select-button.js.map +1 -1
  265. package/build-module/components/list-view/branch.js +1 -6
  266. package/build-module/components/list-view/branch.js.map +1 -1
  267. package/build-module/components/list-view/drop-indicator.js +1 -1
  268. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  269. package/build-module/components/media-placeholder/index.js +14 -2
  270. package/build-module/components/media-placeholder/index.js.map +1 -1
  271. package/build-module/components/media-placeholder/index.native.js +5 -3
  272. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  273. package/build-module/components/media-replace-flow/index.js +7 -13
  274. package/build-module/components/media-replace-flow/index.js.map +1 -1
  275. package/build-module/components/observe-typing/index.js +22 -8
  276. package/build-module/components/observe-typing/index.js.map +1 -1
  277. package/build-module/components/publish-date-time-picker/index.js +2 -0
  278. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  279. package/build-module/components/rich-text/format-toolbar-container.js +58 -12
  280. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  281. package/build-module/components/rich-text/index.js +2 -1
  282. package/build-module/components/rich-text/index.js.map +1 -1
  283. package/build-module/components/rich-text/use-format-types.js +37 -18
  284. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  285. package/build-module/components/rich-text/use-input-rules.js +3 -11
  286. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  287. package/build-module/components/rich-text/use-paste-handler.js +20 -5
  288. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  289. package/build-module/components/url-popover/index.js +2 -1
  290. package/build-module/components/url-popover/index.js.map +1 -1
  291. package/build-module/components/writing-flow/use-arrow-nav.js +35 -3
  292. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  293. package/build-module/components/writing-flow/use-multi-selection.js +3 -45
  294. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  295. package/build-module/components/writing-flow/use-selection-observer.js +1 -3
  296. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  297. package/build-module/components/writing-flow/use-tab-nav.js +1 -1
  298. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  299. package/build-module/elements/index.js +7 -1
  300. package/build-module/elements/index.js.map +1 -1
  301. package/build-module/hooks/aria-label.js +59 -0
  302. package/build-module/hooks/aria-label.js.map +1 -0
  303. package/build-module/hooks/color.js +2 -3
  304. package/build-module/hooks/color.js.map +1 -1
  305. package/build-module/hooks/duotone.js +22 -140
  306. package/build-module/hooks/duotone.js.map +1 -1
  307. package/build-module/hooks/index.js +2 -1
  308. package/build-module/hooks/index.js.map +1 -1
  309. package/build-module/hooks/layout.js +60 -19
  310. package/build-module/hooks/layout.js.map +1 -1
  311. package/build-module/hooks/style.js +44 -35
  312. package/build-module/hooks/style.js.map +1 -1
  313. package/build-module/hooks/utils.js +5 -2
  314. package/build-module/hooks/utils.js.map +1 -1
  315. package/build-module/index.js +1 -1
  316. package/build-module/index.js.map +1 -1
  317. package/build-module/layouts/flex.js +43 -35
  318. package/build-module/layouts/flex.js.map +1 -1
  319. package/build-module/layouts/flow.js +35 -38
  320. package/build-module/layouts/flow.js.map +1 -1
  321. package/build-module/layouts/utils.js +33 -3
  322. package/build-module/layouts/utils.js.map +1 -1
  323. package/build-module/store/actions.js +14 -20
  324. package/build-module/store/actions.js.map +1 -1
  325. package/build-module/store/index.js +0 -4
  326. package/build-module/store/index.js.map +1 -1
  327. package/build-module/store/reducer.js +23 -11
  328. package/build-module/store/reducer.js.map +1 -1
  329. package/build-module/store/selectors.js +4 -4
  330. package/build-module/store/selectors.js.map +1 -1
  331. package/build-module/utils/selection.js +24 -0
  332. package/build-module/utils/selection.js.map +1 -0
  333. package/build-style/style-rtl.css +43 -13
  334. package/build-style/style.css +43 -13
  335. package/package.json +28 -28
  336. package/src/components/block-draggable/test/helpers.native.js +3 -3
  337. package/src/components/block-list/block-invalid-warning.native.js +42 -7
  338. package/src/components/block-list/block.js +2 -2
  339. package/src/components/block-list/block.native.js +1 -0
  340. package/src/components/block-list/index.native.js +1 -1
  341. package/src/components/block-list/layout.js +15 -3
  342. package/src/components/block-list/style.scss +2 -2
  343. package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
  344. package/src/components/block-lock/modal.js +47 -9
  345. package/src/components/block-lock/style.scss +10 -0
  346. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  347. package/src/components/block-mover/mover-description.js +131 -48
  348. package/src/components/block-mover/test/mover-description.js +55 -3
  349. package/src/components/block-pattern-setup/index.js +5 -25
  350. package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
  351. package/src/components/block-pattern-setup/style.scss +4 -2
  352. package/src/components/block-popover/inbetween.js +1 -1
  353. package/src/components/block-popover/index.js +1 -1
  354. package/src/components/block-preview/auto.js +17 -3
  355. package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
  356. package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
  357. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -3
  358. package/src/components/block-settings-menu/index.js +15 -11
  359. package/src/components/block-settings-menu-controls/index.js +5 -4
  360. package/src/components/block-styles/preview.native.js +1 -0
  361. package/src/components/block-switcher/index.js +7 -1
  362. package/src/components/block-title/index.js +3 -2
  363. package/src/components/block-title/use-block-display-title.js +20 -12
  364. package/src/components/block-tools/block-contextual-toolbar.js +3 -1
  365. package/src/components/block-tools/block-selection-button.js +0 -5
  366. package/src/components/block-tools/index.js +4 -1
  367. package/src/components/block-types-list/index.native.js +76 -24
  368. package/src/components/block-types-list/style.native.scss +18 -0
  369. package/src/components/border-radius-control/index.js +2 -0
  370. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -4
  371. package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
  372. package/src/components/colors/test/with-colors.js +1 -1
  373. package/src/components/colors/with-colors.js +2 -2
  374. package/src/components/colors-gradients/control.js +78 -65
  375. package/src/components/colors-gradients/dropdown.js +9 -2
  376. package/src/components/colors-gradients/style.scss +11 -8
  377. package/src/components/colors-gradients/test/control.js +16 -23
  378. package/src/components/date-format-picker/index.js +1 -0
  379. package/src/components/duotone/components.js +133 -0
  380. package/src/components/duotone/index.js +7 -0
  381. package/src/components/duotone/utils.js +25 -0
  382. package/src/components/duotone-control/index.js +12 -7
  383. package/src/components/duotone-control/style.scss +5 -0
  384. package/src/components/iframe/index.js +25 -6
  385. package/src/components/image-editor/cropper.js +9 -3
  386. package/src/components/image-editor/index.js +2 -0
  387. package/src/components/index.js +1 -0
  388. package/src/components/inserter/block-types-tab.native.js +42 -21
  389. package/src/components/inserter/index.js +3 -5
  390. package/src/components/inserter/preview-panel.js +6 -14
  391. package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
  392. package/src/components/inserter/search-results.native.js +4 -2
  393. package/src/components/inserter/style.scss +1 -1
  394. package/src/components/inserter/test/block-types-tab.native.js +2 -0
  395. package/src/components/inserter/test/utils.native.js +37 -0
  396. package/src/components/inserter/utils.native.js +11 -0
  397. package/src/components/inserter-list-item/index.js +4 -1
  398. package/src/components/link-control/index.js +1 -0
  399. package/src/components/link-control/test/fixtures/index.js +3 -4
  400. package/src/components/link-control/test/index.js +64 -73
  401. package/src/components/list-view/block-select-button.js +29 -14
  402. package/src/components/list-view/branch.js +1 -6
  403. package/src/components/list-view/drop-indicator.js +1 -1
  404. package/src/components/list-view/style.scss +18 -4
  405. package/src/components/media-placeholder/index.js +20 -0
  406. package/src/components/media-placeholder/index.native.js +9 -5
  407. package/src/components/media-replace-flow/index.js +5 -14
  408. package/src/components/media-replace-flow/test/index.js +14 -4
  409. package/src/components/media-upload/README.md +8 -0
  410. package/src/components/observe-typing/index.js +17 -14
  411. package/src/components/publish-date-time-picker/index.js +2 -0
  412. package/src/components/responsive-block-control/README.md +3 -1
  413. package/src/components/responsive-block-control/test/index.js +1 -2
  414. package/src/components/rich-text/format-toolbar-container.js +63 -14
  415. package/src/components/rich-text/index.js +1 -0
  416. package/src/components/rich-text/use-format-types.js +38 -17
  417. package/src/components/rich-text/use-input-rules.js +6 -15
  418. package/src/components/rich-text/use-paste-handler.js +17 -5
  419. package/src/components/url-popover/index.js +1 -0
  420. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
  421. package/src/components/writing-flow/use-arrow-nav.js +32 -1
  422. package/src/components/writing-flow/use-multi-selection.js +1 -48
  423. package/src/components/writing-flow/use-selection-observer.js +2 -3
  424. package/src/components/writing-flow/use-tab-nav.js +1 -1
  425. package/src/elements/index.js +8 -1
  426. package/src/elements/test/index.js +18 -0
  427. package/src/hooks/aria-label.js +67 -0
  428. package/src/hooks/color.js +10 -3
  429. package/src/hooks/duotone.js +18 -139
  430. package/src/hooks/index.js +2 -1
  431. package/src/hooks/layout.js +77 -29
  432. package/src/hooks/style.js +46 -39
  433. package/src/hooks/utils.js +7 -3
  434. package/src/index.js +1 -1
  435. package/src/layouts/flex.js +49 -43
  436. package/src/layouts/flow.js +35 -34
  437. package/src/layouts/test/flex.js +21 -0
  438. package/src/layouts/test/flow.js +21 -0
  439. package/src/layouts/test/utils.js +138 -0
  440. package/src/layouts/utils.js +44 -3
  441. package/src/store/actions.js +17 -31
  442. package/src/store/index.js +0 -4
  443. package/src/store/reducer.js +24 -11
  444. package/src/store/selectors.js +3 -4
  445. package/src/store/test/reducer.js +138 -10
  446. package/src/store/test/selectors.js +3 -6
  447. package/src/utils/selection.js +26 -0
  448. package/src/utils/test/selection.js +39 -0
  449. package/tsconfig.json +2 -1
@@ -14,7 +14,7 @@ import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
14
14
  import { useDispatch, useSelect } from '@wordpress/data';
15
15
  import { moreVertical } from '@wordpress/icons';
16
16
  import { Children, cloneElement, useCallback, useRef } from '@wordpress/element';
17
- import { __, _n, sprintf } from '@wordpress/i18n';
17
+ import { __, sprintf } from '@wordpress/i18n';
18
18
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
19
19
  import { useCopyToClipboard } from '@wordpress/compose';
20
20
  /**
@@ -45,9 +45,7 @@ function CopyMenuItem(_ref) {
45
45
  onCopy
46
46
  } = _ref;
47
47
  const ref = useCopyToClipboard(() => serialize(blocks), onCopy);
48
-
49
- const copyMenuItemLabel = _n('Copy block', 'Copy blocks', blocks.length);
50
-
48
+ const copyMenuItemLabel = blocks.length > 1 ? __('Copy blocks') : __('Copy block');
51
49
  return createElement(MenuItem, {
52
50
  ref: ref
53
51
  }, copyMenuItemLabel);
@@ -116,7 +114,10 @@ export function BlockSettingsDropdown(_ref2) {
116
114
  __experimentalSelectBlock(ids[0]);
117
115
  }
118
116
  } : noop, [__experimentalSelectBlock]);
119
- const blockTitle = useBlockDisplayTitle(firstBlockClientId, 25);
117
+ const blockTitle = useBlockDisplayTitle({
118
+ clientId: firstBlockClientId,
119
+ maximumLength: 25
120
+ });
120
121
  const updateSelectionAfterRemove = useCallback(__experimentalSelectBlock ? () => {
121
122
  const blockToSelect = previousBlockClientId || nextBlockClientId;
122
123
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["castArray","flow","getBlockType","serialize","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","_n","sprintf","store","keyboardShortcutsStore","useCopyToClipboard","BlockActions","BlockIcon","BlockModeToggle","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","useBlockDisplayTitle","useShowMoversGestures","noop","POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","copyMenuItemLabel","length","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","firstBlockClientId","firstParentClientId","hasReducedUI","onlyBlock","parentBlockType","previousBlockClientId","nextBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockParents","getPreviousBlockClientId","getNextBlockClientId","getSelectedBlockClientIds","getSettings","parents","_firstParentClientId","parentBlockName","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","selectBlock","toggleBlockHighlight","updateSelectionAfterDuplicate","clientIdsPromise","ids","blockTitle","updateSelectionAfterRemove","blockToSelect","includes","label","removeBlockLabel","selectParentButtonRef","gestures","showParentOutlineGestures","onChange","isFocused","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","onClose","undefined","icon","title","map","child"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow } 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 { __, _n, 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 noop = () => {};\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\tconst copyMenuItemLabel = _n( 'Copy block', 'Copy blocks', blocks.length );\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</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:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\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 } =\n\t\tuseDispatch( blockEditorStore );\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["castArray","flow","getBlockType","serialize","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","sprintf","store","keyboardShortcutsStore","useCopyToClipboard","BlockActions","BlockIcon","BlockModeToggle","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","useBlockDisplayTitle","useShowMoversGestures","noop","POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","copyMenuItemLabel","length","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","firstBlockClientId","firstParentClientId","hasReducedUI","onlyBlock","parentBlockType","previousBlockClientId","nextBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockParents","getPreviousBlockClientId","getNextBlockClientId","getSelectedBlockClientIds","getSettings","parents","_firstParentClientId","parentBlockName","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","selectBlock","toggleBlockHighlight","updateSelectionAfterDuplicate","clientIdsPromise","ids","blockTitle","clientId","maximumLength","updateSelectionAfterRemove","blockToSelect","includes","label","removeBlockLabel","selectParentButtonRef","gestures","showParentOutlineGestures","onChange","isFocused","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","onClose","undefined","icon","title","map","child"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,IAApB,QAAgC,QAAhC;AAEA;AACA;AACA;;AACA,SAASC,YAAT,EAAuBC,SAAvB,QAAwC,mBAAxC;AACA,SAASC,YAAT,EAAuBC,SAAvB,EAAkCC,QAAlC,QAAkD,uBAAlD;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,YAAT,QAA6B,kBAA7B;AACA,SACCC,QADD,EAECC,YAFD,EAGCC,WAHD,EAICC,MAJD,QAKO,oBALP;AAMA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,KAAK,IAAIC,sBAAlB,QAAgD,+BAAhD;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,sBAAP,MAAmC,6BAAnC;AACA,OAAOC,oCAAP,MAAiD,kCAAjD;AACA,OAAOC,yBAAP,MAAsC,iCAAtC;AACA,SAASR,KAAK,IAAIS,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,oBAAP,MAAiC,wCAAjC;AACA,SAASC,qBAAT,QAAsC,wBAAtC;;AAEA,MAAMC,IAAI,GAAG,MAAM,CAAE,CAArB;;AACA,MAAMC,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,GAAGlB,kBAAkB,CAAE,MAAMf,SAAS,CAAE+B,MAAF,CAAjB,EAA6BC,MAA7B,CAA9B;AACA,QAAME,iBAAiB,GACtBH,MAAM,CAACI,MAAP,GAAgB,CAAhB,GAAoBxB,EAAE,CAAE,aAAF,CAAtB,GAA0CA,EAAE,CAAE,YAAF,CAD7C;AAEA,SAAO,cAAC,QAAD;AAAU,IAAA,GAAG,EAAGsB;AAAhB,KAAwBC,iBAAxB,CAAP;AACA;;AAED,OAAO,SAASE,qBAAT,QAKH;AAAA,MALmC;AACtCC,IAAAA,SADsC;AAEtCC,IAAAA,yBAFsC;AAGtCC,IAAAA,QAHsC;AAItC,OAAGC;AAJmC,GAKnC;AACH,QAAMC,cAAc,GAAG5C,SAAS,CAAEwC,SAAF,CAAhC;AACA,QAAMK,KAAK,GAAGD,cAAc,CAACN,MAA7B;AACA,QAAMQ,kBAAkB,GAAGF,cAAc,CAAE,CAAF,CAAzC;AACA,QAAM;AACLG,IAAAA,mBADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,SAHK;AAILC,IAAAA,eAJK;AAKLC,IAAAA,qBALK;AAMLC,IAAAA,iBANK;AAOLC,IAAAA;AAPK,MAQF7C,SAAS,CACV8C,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,CAAE7B,gBAAF,CARV;AAUA,UAAMqC,OAAO,GAAGL,eAAe,CAAEX,kBAAF,CAA/B;AACA,UAAMiB,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAACxB,MAAR,GAAiB,CAAnB,CAApC;AACA,UAAM0B,eAAe,GAAGR,YAAY,CAAEO,oBAAF,CAApC;AAEA,WAAO;AACNhB,MAAAA,mBAAmB,EAAEgB,oBADf;AAENf,MAAAA,YAAY,EAAEa,WAAW,GAAGb,YAFtB;AAGNC,MAAAA,SAAS,EAAE,MAAMM,aAAa,EAHxB;AAINL,MAAAA,eAAe,EAAEhD,YAAY,CAAE8D,eAAF,CAJvB;AAKNb,MAAAA,qBAAqB,EACpBO,wBAAwB,CAAEZ,kBAAF,CANnB;AAONM,MAAAA,iBAAiB,EAAEO,oBAAoB,CAAEb,kBAAF,CAPjC;AAQNO,MAAAA,sBAAsB,EAAEO,yBAAyB;AAR3C,KAAP;AAUA,GA1BW,EA2BZ,CAAEd,kBAAF,CA3BY,CARb;AAsCA,QAAMmB,SAAS,GAAGzD,SAAS,CAAI8C,MAAF,IAAc;AAC1C,UAAM;AAAEY,MAAAA;AAAF,QAAgCZ,MAAM,CAAErC,sBAAF,CAA5C;AACA,WAAO;AACNkD,MAAAA,SAAS,EAAED,yBAAyB,CACnC,6BADmC,CAD9B;AAINE,MAAAA,MAAM,EAAEF,yBAAyB,CAAE,0BAAF,CAJ3B;AAKNG,MAAAA,WAAW,EAAEH,yBAAyB,CACrC,gCADqC,CALhC;AAQNI,MAAAA,YAAY,EAAEJ,yBAAyB,CACtC,iCADsC;AARjC,KAAP;AAYA,GAd0B,EAcxB,EAdwB,CAA3B;AAgBA,QAAM;AAAEK,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MACLjE,WAAW,CAAEkB,gBAAF,CADZ;AAGA,QAAMgD,6BAA6B,GAAG7D,WAAW,CAChD6B,yBAAyB,GACtB,MAAQiC,gBAAR,IAA8B;AAC9B,UAAMC,GAAG,GAAG,MAAMD,gBAAlB;;AACA,QAAKC,GAAG,IAAIA,GAAG,CAAE,CAAF,CAAf,EAAuB;AACtBlC,MAAAA,yBAAyB,CAAEkC,GAAG,CAAE,CAAF,CAAL,CAAzB;AACA;AACA,GANqB,GAOtB/C,IAR6C,EAShD,CAAEa,yBAAF,CATgD,CAAjD;AAYA,QAAMmC,UAAU,GAAGlD,oBAAoB,CAAE;AACxCmD,IAAAA,QAAQ,EAAE/B,kBAD8B;AAExCgC,IAAAA,aAAa,EAAE;AAFyB,GAAF,CAAvC;AAKA,QAAMC,0BAA0B,GAAGnE,WAAW,CAC7C6B,yBAAyB,GACtB,MAAM;AACN,UAAMuC,aAAa,GAClB7B,qBAAqB,IAAIC,iBAD1B;;AAGA,QACC4B,aAAa,IACb;AACA;AACA3B,IAAAA,sBAAsB,CAAC4B,QAAvB,CAAiCnC,kBAAjC,CAHA,IAIA;AACA;AACA,KAAEO,sBAAsB,CAAC4B,QAAvB,CAAiCD,aAAjC,CAPH,EAQE;AACDvC,MAAAA,yBAAyB,CAAEuC,aAAF,CAAzB;AACA;AACA,GAhBqB,GAiBtBpD,IAlB0C,EAmB7C,CACCa,yBADD,EAECU,qBAFD,EAGCC,iBAHD,EAICC,sBAJD,CAnB6C,CAA9C;AA2BA,QAAM6B,KAAK,GAAGnE,OAAO;AACpB;AACAD,EAAAA,EAAE,CAAE,WAAF,CAFkB,EAGpB8D,UAHoB,CAArB;AAKA,QAAMO,gBAAgB,GAAGtC,KAAK,KAAK,CAAV,GAAcqC,KAAd,GAAsBpE,EAAE,CAAE,eAAF,CAAjD,CA9GG,CAgHH;AACA;;AACA,QAAMsE,qBAAqB,GAAGvE,MAAM,EAApC;AACA,QAAM;AAAEwE,IAAAA,QAAQ,EAAEC;AAAZ,MAA0C3D,qBAAqB,CAAE;AACtES,IAAAA,GAAG,EAAEgD,qBADiE;;AAEtEG,IAAAA,QAAQ,CAAEC,SAAF,EAAc;AACrB,UAAKA,SAAS,IAAIxC,YAAlB,EAAiC;AAChC;AACA;;AACDwB,MAAAA,oBAAoB,CAAEzB,mBAAF,EAAuByC,SAAvB,CAApB;AACA;;AAPqE,GAAF,CAArE;AAUA,SACC,cAAC,YAAD;AACC,IAAA,SAAS,EAAGhD,SADb;AAEC,IAAA,6BAA6B,EAAG,CAAEC;AAFnC,KAIG;AAAA,QAAE;AACHgD,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,cAAC,YAAD;AACC,MAAA,IAAI,EAAGzB,YADR;AAEC,MAAA,KAAK,EAAGK,EAAE,CAAE,SAAF,CAFX;AAGC,MAAA,SAAS,EAAC,kCAHX;AAIC,MAAA,YAAY,EAAGe,aAJhB;AAKC,MAAA,OAAO;AALR,OAMMc,KANN,GAQG;AAAA,UAAE;AAAEuD,QAAAA;AAAF,OAAF;AAAA,aACD,8BACC,cAAC,SAAD,QACC,cAAC,oCAAD,CAAsC,IAAtC;AACC,QAAA,SAAS,EAAG;AAAEA,UAAAA;AAAF;AADb,QADD,EAIGnD,mBAAmB,KAAKoD,SAAxB,IACD,cAAC,QAAD,eACMb,yBADN;AAEC,QAAA,GAAG,EAAGF,qBAFP;AAGC,QAAA,IAAI,EACH,cAAC,SAAD;AACC,UAAA,IAAI,EAAGlC,eAAe,CAACkD;AADxB,UAJF;AAQC,QAAA,OAAO,EAAG,MACT7B,WAAW,CAAExB,mBAAF;AATb,UAYGhC,OAAO;AACR;AACAD,MAAAA,EAAE,CAAE,0BAAF,CAFM,EAGRoC,eAAe,CAACmD,KAHR,CAZV,CALF,EAwBGxD,KAAK,KAAK,CAAV,IACD,cAAC,sBAAD;AACC,QAAA,QAAQ,EAAGC;AADZ,QAzBF,EA6BC,cAAC,YAAD;AACC,QAAA,MAAM,EAAGZ,MADV;AAEC,QAAA,MAAM,EAAGC;AAFV,QA7BD,EAiCGsD,YAAY,IACb,cAAC,QAAD;AACC,QAAA,OAAO,EAAGxF,IAAI,CACbiG,OADa,EAEbL,WAFa,EAGbpB,6BAHa,CADf;AAMC,QAAA,QAAQ,EAAGR,SAAS,CAACE;AANtB,SAQGrD,EAAE,CAAE,WAAF,CARL,CAlCF,EA6CG4E,qBAAqB,IACtB,8BACC,cAAC,QAAD;AACC,QAAA,OAAO,EAAGzF,IAAI,CACbiG,OADa,EAEbH,cAFa,CADf;AAKC,QAAA,QAAQ,EAAG9B,SAAS,CAACK;AALtB,SAOGxD,EAAE,CAAE,eAAF,CAPL,CADD,EAUC,cAAC,QAAD;AACC,QAAA,OAAO,EAAGb,IAAI,CACbiG,OADa,EAEbJ,aAFa,CADf;AAKC,QAAA,QAAQ,EAAG7B,SAAS,CAACI;AALtB,SAOGvD,EAAE,CAAE,cAAF,CAPL,CAVD,CA9CF,EAmEG6E,OAAO,IAAI,CAAE1C,SAAb,IACD,cAAC,QAAD;AACC,QAAA,OAAO,EAAGhD,IAAI,CAAEiG,OAAF,EAAWD,QAAX;AADf,SAGGnF,EAAE,CAAE,SAAF,CAHL,CApEF,EA0EG+B,KAAK,KAAK,CAAV,IACD,cAAC,eAAD;AACC,QAAA,QAAQ,EAAGC,kBADZ;AAEC,QAAA,QAAQ,EAAGoD;AAFZ,QA3EF,CADD,EAkFC,cAAC,yBAAD,CAA2B,IAA3B;AACC,QAAA,SAAS,EAAG;AAAEA,UAAAA;AAAF,SADb;AAEC,QAAA,SAAS,EAAG1D;AAFb,QAlFD,EAsFG,OAAOE,QAAP,KAAoB,UAApB,GACCA,QAAQ,CAAE;AAAEwD,QAAAA;AAAF,OAAF,CADT,GAECxF,QAAQ,CAAC4F,GAAT,CAAgBC,KAAF,IACd5F,YAAY,CAAE4F,KAAF,EAAS;AAAEL,QAAAA;AAAF,OAAT,CADZ,CAxFJ,EA2FGN,SAAS,IACV,cAAC,SAAD,QACC,cAAC,QAAD;AACC,QAAA,OAAO,EAAG3F,IAAI,CACbiG,OADa,EAEbF,QAFa,EAGbjB,0BAHa,CADf;AAMC,QAAA,QAAQ,EAAGd,SAAS,CAACG;AANtB,SAQGe,gBARH,CADD,CA5FF,CADC;AAAA,KARH,CAbC;AAAA,GAJH,CADD;AA0IA;AAED,eAAe5C,qBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow } 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 noop = () => {};\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\tconst copyMenuItemLabel =\n\t\tblocks.length > 1 ? __( 'Copy blocks' ) : __( 'Copy block' );\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</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:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\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 } =\n\t\tuseDispatch( blockEditorStore );\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( {\n\t\tclientId: firstBlockClientId,\n\t\tmaximumLength: 25,\n\t} );\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"]}
@@ -1,5 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { createElement } from "@wordpress/element";
2
+ import { createElement, Fragment } from "@wordpress/element";
3
3
 
4
4
  /**
5
5
  * WordPress dependencies
@@ -10,15 +10,18 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
10
10
  */
11
11
 
12
12
  import BlockSettingsDropdown from './block-settings-dropdown';
13
+ import BlockEditVisuallyButton from './block-edit-visually-button';
13
14
  export function BlockSettingsMenu(_ref) {
14
15
  let {
15
16
  clientIds,
16
17
  ...props
17
18
  } = _ref;
18
- return createElement(ToolbarGroup, null, createElement(ToolbarItem, null, toggleProps => createElement(BlockSettingsDropdown, _extends({
19
+ return createElement(Fragment, null, createElement(BlockEditVisuallyButton, _extends({
20
+ clientIds: clientIds
21
+ }, props)), createElement(ToolbarGroup, null, createElement(ToolbarItem, null, toggleProps => createElement(BlockSettingsDropdown, _extends({
19
22
  clientIds: clientIds,
20
23
  toggleProps: toggleProps
21
- }, props))));
24
+ }, props)))));
22
25
  }
23
26
  export default BlockSettingsMenu;
24
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/index.js"],"names":["ToolbarGroup","ToolbarItem","BlockSettingsDropdown","BlockSettingsMenu","clientIds","props","toggleProps"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,YAAT,EAAuBC,WAAvB,QAA0C,uBAA1C;AAEA;AACA;AACA;;AACA,OAAOC,qBAAP,MAAkC,2BAAlC;AAEA,OAAO,SAASC,iBAAT,OAAsD;AAAA,MAA1B;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,GAA0B;AAC5D,SACC,cAAC,YAAD,QACC,cAAC,WAAD,QACKC,WAAF,IACD,cAAC,qBAAD;AACC,IAAA,SAAS,EAAGF,SADb;AAEC,IAAA,WAAW,EAAGE;AAFf,KAGMD,KAHN,EAFF,CADD,CADD;AAaA;AAED,eAAeF,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockSettingsDropdown from './block-settings-dropdown';\n\nexport function BlockSettingsMenu( { clientIds, ...props } ) {\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockSettingsMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/index.js"],"names":["ToolbarGroup","ToolbarItem","BlockSettingsDropdown","BlockEditVisuallyButton","BlockSettingsMenu","clientIds","props","toggleProps"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,YAAT,EAAuBC,WAAvB,QAA0C,uBAA1C;AAEA;AACA;AACA;;AACA,OAAOC,qBAAP,MAAkC,2BAAlC;AACA,OAAOC,uBAAP,MAAoC,8BAApC;AAEA,OAAO,SAASC,iBAAT,OAAsD;AAAA,MAA1B;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,GAA0B;AAC5D,SACC,8BACC,cAAC,uBAAD;AAAyB,IAAA,SAAS,EAAGD;AAArC,KAAsDC,KAAtD,EADD,EAEC,cAAC,YAAD,QACC,cAAC,WAAD,QACKC,WAAF,IACD,cAAC,qBAAD;AACC,IAAA,SAAS,EAAGF,SADb;AAEC,IAAA,WAAW,EAAGE;AAFf,KAGMD,KAHN,EAFF,CADD,CAFD,CADD;AAgBA;AAED,eAAeF,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockSettingsDropdown from './block-settings-dropdown';\nimport BlockEditVisuallyButton from './block-edit-visually-button';\n\nexport function BlockSettingsMenu( { clientIds, ...props } ) {\n\treturn (\n\t\t<>\n\t\t\t<BlockEditVisuallyButton clientIds={ clientIds } { ...props } />\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarItem>\n\t\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarItem>\n\t\t\t</ToolbarGroup>\n\t\t</>\n\t);\n}\n\nexport default BlockSettingsMenu;\n"]}
@@ -4,7 +4,7 @@ import { createElement } from "@wordpress/element";
4
4
  /**
5
5
  * External dependencies
6
6
  */
7
- import { compact, map } from 'lodash';
7
+ import { map } from 'lodash';
8
8
  /**
9
9
  * WordPress dependencies
10
10
  */
@@ -16,7 +16,7 @@ import { useSelect } from '@wordpress/data';
16
16
  */
17
17
 
18
18
  import { useConvertToGroupButtonProps, ConvertToGroupButton } from '../convert-to-group-buttons';
19
- import { BlockLockMenuItem } from '../block-lock';
19
+ import { BlockLockMenuItem, useBlockLock } from '../block-lock';
20
20
  import { store as blockEditorStore } from '../../store';
21
21
  const {
22
22
  Fill,
@@ -40,12 +40,15 @@ const BlockSettingsMenuControlsSlot = _ref => {
40
40
  } = select(blockEditorStore);
41
41
  const ids = clientIds !== null ? clientIds : getSelectedBlockClientIds();
42
42
  return {
43
- selectedBlocks: map(compact(getBlocksByClientId(ids)), block => block.name),
43
+ selectedBlocks: map(getBlocksByClientId(ids).filter(Boolean), block => block.name),
44
44
  selectedClientIds: ids,
45
45
  canRemove: canRemoveBlocks(ids)
46
46
  };
47
47
  }, [clientIds]);
48
- const showLockButton = selectedClientIds.length === 1; // Check if current selection of blocks is Groupable or Ungroupable
48
+ const {
49
+ canLock
50
+ } = useBlockLock(selectedClientIds[0]);
51
+ const showLockButton = selectedClientIds.length === 1 && canLock; // Check if current selection of blocks is Groupable or Ungroupable
49
52
  // and pass this props down to ConvertToGroupButton.
50
53
 
51
54
  const convertToGroupButtonProps = useConvertToGroupButtonProps();
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu-controls/index.js"],"names":["compact","map","createSlotFill","MenuGroup","__experimentalStyleProvider","StyleProvider","useSelect","useConvertToGroupButtonProps","ConvertToGroupButton","BlockLockMenuItem","store","blockEditorStore","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","selectedBlocks","selectedClientIds","canRemove","select","getBlocksByClientId","getSelectedBlockClientIds","canRemoveBlocks","ids","block","name","showLockButton","length","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","fills","onClose","BlockSettingsMenuControls","props","document"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,OAAT,EAAkBC,GAAlB,QAA6B,QAA7B;AAEA;AACA;AACA;;AACA,SACCC,cADD,EAECC,SAFD,EAGCC,2BAA2B,IAAIC,aAHhC,QAIO,uBAJP;AAKA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SACCC,4BADD,EAECC,oBAFD,QAGO,6BAHP;AAIA,SAASC,iBAAT,QAAkC,eAAlC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,MAAM;AAAEC,EAAAA,IAAF;AAAQC,EAAAA;AAAR,IAAiBX,cAAc,CAAE,2BAAF,CAArC;;AAEA,MAAMY,6BAA6B,GAAG,QAAuC;AAAA,MAArC;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,SAAS,GAAG;AAAzB,GAAqC;AAC5E,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,iBAAlB;AAAqCC,IAAAA;AAArC,MAAmDb,SAAS,CAC/Dc,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,mBADK;AAELC,MAAAA,yBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAET,gBAAF,CAJV;AAKA,UAAMa,GAAG,GACRR,SAAS,KAAK,IAAd,GAAqBA,SAArB,GAAiCM,yBAAyB,EAD3D;AAEA,WAAO;AACNL,MAAAA,cAAc,EAAEhB,GAAG,CAClBD,OAAO,CAAEqB,mBAAmB,CAAEG,GAAF,CAArB,CADW,EAEhBC,KAAF,IAAaA,KAAK,CAACC,IAFD,CADb;AAKNR,MAAAA,iBAAiB,EAAEM,GALb;AAMNL,MAAAA,SAAS,EAAEI,eAAe,CAAEC,GAAF;AANpB,KAAP;AAQA,GAjBgE,EAkBjE,CAAER,SAAF,CAlBiE,CAAlE;AAqBA,QAAMW,cAAc,GAAGT,iBAAiB,CAACU,MAAlB,KAA6B,CAApD,CAtB4E,CAwB5E;AACA;;AACA,QAAMC,yBAAyB,GAAGtB,4BAA4B,EAA9D;AACA,QAAM;AAAEuB,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAiCF,yBAAvC;AACA,QAAMG,wBAAwB,GAC7B,CAAEF,WAAW,IAAIC,aAAjB,KAAoCZ,SADrC;AAGA,SACC,cAAC,IAAD;AAAM,IAAA,SAAS,EAAG,EAAE,GAAGJ,SAAL;AAAgBE,MAAAA,cAAhB;AAAgCC,MAAAA;AAAhC;AAAlB,KACKe,KAAF,IAAa;AACd,QACC,EAAEA,KAAF,aAAEA,KAAF,eAAEA,KAAK,CAAEL,MAAT,IAAkB,CAAlB,IACA,CAAEI,wBADF,IAEA,CAAEL,cAHH,EAIE;AACD,aAAO,IAAP;AACA;;AAED,WACC,cAAC,SAAD,QACGA,cAAc,IACf,cAAC,iBAAD;AACC,MAAA,QAAQ,EAAGT,iBAAiB,CAAE,CAAF;AAD7B,MAFF,EAMGe,KANH,EAOGD,wBAAwB,IACzB,cAAC,oBAAD,eACMH,yBADN;AAEC,MAAA,OAAO,EAAGd,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEmB;AAFtB,OARF,CADD;AAgBA,GA1BF,CADD;AA8BA,CA7DD;AA+DA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,yBAAT,QAAmD;AAAA,MAAf,EAAE,GAAGC;AAAL,GAAe;AAClD,SACC,cAAC,aAAD;AAAe,IAAA,QAAQ,EAAGC;AAA1B,KACC,cAAC,IAAD,EAAWD,KAAX,CADD,CADD;AAKA;;AAEDD,yBAAyB,CAACtB,IAA1B,GAAiCC,6BAAjC;AAEA,eAAeqB,yBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { compact, map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst { selectedBlocks, selectedClientIds, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: map(\n\t\t\t\t\tcompact( getBlocksByClientId( ids ) ),\n\t\t\t\t\t( block ) => block.name\n\t\t\t\t),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t\tcanRemove: canRemoveBlocks( ids ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst showLockButton = selectedClientIds.length === 1;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps();\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\n\treturn (\n\t\t<Slot fillProps={ { ...fillProps, selectedBlocks, selectedClientIds } }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {WPElement} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu-controls/index.js"],"names":["map","createSlotFill","MenuGroup","__experimentalStyleProvider","StyleProvider","useSelect","useConvertToGroupButtonProps","ConvertToGroupButton","BlockLockMenuItem","useBlockLock","store","blockEditorStore","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","selectedBlocks","selectedClientIds","canRemove","select","getBlocksByClientId","getSelectedBlockClientIds","canRemoveBlocks","ids","filter","Boolean","block","name","canLock","showLockButton","length","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","fills","onClose","BlockSettingsMenuControls","props","document"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst { selectedBlocks, selectedClientIds, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: map(\n\t\t\t\t\tgetBlocksByClientId( ids ).filter( Boolean ),\n\t\t\t\t\t( block ) => block.name\n\t\t\t\t),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t\tcanRemove: canRemoveBlocks( ids ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst showLockButton = selectedClientIds.length === 1 && canLock;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps();\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\n\treturn (\n\t\t<Slot fillProps={ { ...fillProps, selectedBlocks, selectedClientIds } }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {WPElement} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview.native.js"],"names":["View","TouchableWithoutFeedback","Text","Dimensions","Animated","Easing","Image","BottomSheet","useState","useEffect","useRef","usePreferredColorSchemeStyle","styles","MAX_ITEM_WIDTH","HALF_COLUMN","StylePreview","onPress","isActive","style","url","itemWidth","setItemWidth","label","name","opacity","Value","current","onLayout","columnsNum","Math","floor","getWidth","dimensionsChangeSubscription","addEventListener","remove","labelStyle","labelDark","animateOutline","setValue","timing","toValue","duration","useNativeDriver","easing","linear","start","innerOutlineStyle","innerOutline","innerOutlineDark","getOutline","outlineStyles","map","outlineStyle","index","container","width","imageWrapper","outline","image","uri","labelSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tDimensions,\n\tAnimated,\n\tEasing,\n\tImage,\n} from 'react-native';\n/**\n * WordPress dependencies\n */\nimport { BottomSheet } from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nconst MAX_ITEM_WIDTH = 120;\nconst HALF_COLUMN = 0.5;\n\nfunction StylePreview( { onPress, isActive, style, url } ) {\n\tconst [ itemWidth, setItemWidth ] = useState( MAX_ITEM_WIDTH );\n\tconst { label, name } = style;\n\tconst opacity = useRef( new Animated.Value( 1 ) ).current;\n\n\tfunction onLayout() {\n\t\tconst columnsNum =\n\t\t\t// To indicate scroll availabilty, there is a need to display additional half the column.\n\t\t\tMath.floor( BottomSheet.getWidth() / MAX_ITEM_WIDTH ) + HALF_COLUMN;\n\t\tsetItemWidth( BottomSheet.getWidth() / columnsNum );\n\t}\n\n\tuseEffect( () => {\n\t\tonLayout();\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonLayout\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t}, [] );\n\n\tconst labelStyle = usePreferredColorSchemeStyle(\n\t\tstyles.label,\n\t\tstyles.labelDark\n\t);\n\n\tconst animateOutline = () => {\n\t\topacity.setValue( 0 );\n\t\tAnimated.timing( opacity, {\n\t\t\ttoValue: 1,\n\t\t\tduration: 100,\n\t\t\tuseNativeDriver: true,\n\t\t\teasing: Easing.linear,\n\t\t} ).start();\n\t};\n\n\tconst innerOutlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles.innerOutline,\n\t\tstyles.innerOutlineDark\n\t);\n\n\tconst getOutline = ( outlineStyles ) =>\n\t\toutlineStyles.map( ( outlineStyle, index ) => {\n\t\t\treturn (\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [ outlineStyle, { opacity }, styles[ name ] ] }\n\t\t\t\t\tkey={ index }\n\t\t\t\t/>\n\t\t\t);\n\t\t} );\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tonPress={ () => {\n\t\t\t\tonPress();\n\t\t\t\tanimateOutline();\n\t\t\t} }\n\t\t>\n\t\t\t<View style={ [ styles.container, { width: itemWidth } ] }>\n\t\t\t\t<View style={ styles.imageWrapper }>\n\t\t\t\t\t{ isActive &&\n\t\t\t\t\t\tgetOutline( [ styles.outline, innerOutlineStyle ] ) }\n\t\t\t\t\t<Image\n\t\t\t\t\t\tstyle={ [ styles.image, styles[ name ] ] }\n\t\t\t\t\t\tsource={ { uri: url } }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ [ labelStyle, isActive && styles.labelSelected ] }\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default StylePreview;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview.native.js"],"names":["View","TouchableWithoutFeedback","Text","Dimensions","Animated","Easing","Image","BottomSheet","useState","useEffect","useRef","usePreferredColorSchemeStyle","styles","MAX_ITEM_WIDTH","HALF_COLUMN","StylePreview","onPress","isActive","style","url","itemWidth","setItemWidth","label","name","opacity","Value","current","onLayout","columnsNum","Math","floor","getWidth","dimensionsChangeSubscription","addEventListener","remove","labelStyle","labelDark","animateOutline","setValue","timing","toValue","duration","useNativeDriver","easing","linear","start","innerOutlineStyle","innerOutline","innerOutlineDark","getOutline","outlineStyles","map","outlineStyle","index","container","width","imageWrapper","outline","image","uri","labelSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tDimensions,\n\tAnimated,\n\tEasing,\n\tImage,\n} from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { BottomSheet } from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nconst MAX_ITEM_WIDTH = 120;\nconst HALF_COLUMN = 0.5;\n\nfunction StylePreview( { onPress, isActive, style, url } ) {\n\tconst [ itemWidth, setItemWidth ] = useState( MAX_ITEM_WIDTH );\n\tconst { label, name } = style;\n\tconst opacity = useRef( new Animated.Value( 1 ) ).current;\n\n\tfunction onLayout() {\n\t\tconst columnsNum =\n\t\t\t// To indicate scroll availabilty, there is a need to display additional half the column.\n\t\t\tMath.floor( BottomSheet.getWidth() / MAX_ITEM_WIDTH ) + HALF_COLUMN;\n\t\tsetItemWidth( BottomSheet.getWidth() / columnsNum );\n\t}\n\n\tuseEffect( () => {\n\t\tonLayout();\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonLayout\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t}, [] );\n\n\tconst labelStyle = usePreferredColorSchemeStyle(\n\t\tstyles.label,\n\t\tstyles.labelDark\n\t);\n\n\tconst animateOutline = () => {\n\t\topacity.setValue( 0 );\n\t\tAnimated.timing( opacity, {\n\t\t\ttoValue: 1,\n\t\t\tduration: 100,\n\t\t\tuseNativeDriver: true,\n\t\t\teasing: Easing.linear,\n\t\t} ).start();\n\t};\n\n\tconst innerOutlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles.innerOutline,\n\t\tstyles.innerOutlineDark\n\t);\n\n\tconst getOutline = ( outlineStyles ) =>\n\t\toutlineStyles.map( ( outlineStyle, index ) => {\n\t\t\treturn (\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [ outlineStyle, { opacity }, styles[ name ] ] }\n\t\t\t\t\tkey={ index }\n\t\t\t\t/>\n\t\t\t);\n\t\t} );\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tonPress={ () => {\n\t\t\t\tonPress();\n\t\t\t\tanimateOutline();\n\t\t\t} }\n\t\t>\n\t\t\t<View style={ [ styles.container, { width: itemWidth } ] }>\n\t\t\t\t<View style={ styles.imageWrapper }>\n\t\t\t\t\t{ isActive &&\n\t\t\t\t\t\tgetOutline( [ styles.outline, innerOutlineStyle ] ) }\n\t\t\t\t\t<Image\n\t\t\t\t\t\tstyle={ [ styles.image, styles[ name ] ] }\n\t\t\t\t\t\tsource={ { uri: url } }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ [ labelStyle, isActive && styles.labelSelected ] }\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default StylePreview;\n"]}
@@ -98,8 +98,14 @@ export const BlockSwitcherDropdownMenu = _ref => {
98
98
 
99
99
 
100
100
  const onPatternTransform = transformedBlocks => replaceBlocks(clientIds, transformedBlocks);
101
+ /**
102
+ * The `isTemplate` check is a stopgap solution here.
103
+ * Ideally, the Transforms API should handle this
104
+ * by allowing to exclude blocks from wildcard transformations.
105
+ */
101
106
 
102
- const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove;
107
+
108
+ const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove && !isTemplate;
103
109
  const hasPatternTransformation = !!(patterns !== null && patterns !== void 0 && patterns.length) && canRemove;
104
110
 
105
111
  if (!hasBlockStyles && !hasPossibleBlockTransformations) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["castArray","uniq","__","_n","sprintf","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","useBlockDisplayInformation","BlockIcon","BlockTitle","BlockTransformationsMenu","BlockStylesMenu","PatternTransformationsMenu","BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","map","title","isReusable","isTemplate","onBlockTransform","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","isAlternate","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, uniq } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTitle from '../block-title';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tblockTitle,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tcastArray( clientIds )[ 0 ]\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tuniq( blocks.map( ( { name } ) => name ) ).length === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tblockTitle: getBlockType( firstBlockName )?.title,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tconst onBlockTransform = ( name ) =>\n\t\treplaceBlocks( clientIds, switchToBlockType( blocks, name ) );\n\t// Pattern transformation through the `Patterns` API.\n\tconst onPatternTransform = ( transformedBlocks ) =>\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tisAlternate: true,\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["castArray","uniq","__","_n","sprintf","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","useBlockDisplayInformation","BlockIcon","BlockTitle","BlockTransformationsMenu","BlockStylesMenu","PatternTransformationsMenu","BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","map","title","isReusable","isTemplate","onBlockTransform","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","isAlternate","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, uniq } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTitle from '../block-title';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tblockTitle,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tcastArray( clientIds )[ 0 ]\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tuniq( blocks.map( ( { name } ) => name ) ).length === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tblockTitle: getBlockType( firstBlockName )?.title,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tconst onBlockTransform = ( name ) =>\n\t\treplaceBlocks( clientIds, switchToBlockType( blocks, name ) );\n\t// Pattern transformation through the `Patterns` API.\n\tconst onPatternTransform = ( transformedBlocks ) =>\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tisAlternate: true,\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
@@ -15,6 +15,7 @@ import useBlockDisplayTitle from './use-block-display-title';
15
15
  * @param {Object} props
16
16
  * @param {string} props.clientId Client ID of block.
17
17
  * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
18
+ * @param {string|undefined} props.context The context to pass to `getBlockLabel`.
18
19
  *
19
20
  * @return {JSX.Element} Block title.
20
21
  */
@@ -22,8 +23,13 @@ import useBlockDisplayTitle from './use-block-display-title';
22
23
  export default function BlockTitle(_ref) {
23
24
  let {
24
25
  clientId,
25
- maximumLength
26
+ maximumLength,
27
+ context
26
28
  } = _ref;
27
- return useBlockDisplayTitle(clientId, maximumLength);
29
+ return useBlockDisplayTitle({
30
+ clientId,
31
+ maximumLength,
32
+ context
33
+ });
28
34
  }
29
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["useBlockDisplayTitle","BlockTitle","clientId","maximumLength"],"mappings":"AAAA;AACA;AACA;AAEA,OAAOA,oBAAP,MAAiC,2BAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,UAAT,OAAmD;AAAA,MAA9B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAA8B;AACjE,SAAOH,oBAAoB,CAAEE,QAAF,EAAYC,aAAZ,CAA3B;AACA","sourcesContent":["/**\n * Internal dependencies\n */\n\nimport useBlockDisplayTitle from './use-block-display-title';\n\n/**\n * Renders the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```jsx\n * <BlockTitle clientId=\"afd1cb17-2c08-4e7a-91be-007ba7ddc3a1\" maximumLength={ 17 }/>\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.\n *\n * @return {JSX.Element} Block title.\n */\nexport default function BlockTitle( { clientId, maximumLength } ) {\n\treturn useBlockDisplayTitle( clientId, maximumLength );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["useBlockDisplayTitle","BlockTitle","clientId","maximumLength","context"],"mappings":"AAAA;AACA;AACA;AAEA,OAAOA,oBAAP,MAAiC,2BAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,UAAT,OAA4D;AAAA,MAAvC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,aAAZ;AAA2BC,IAAAA;AAA3B,GAAuC;AAC1E,SAAOJ,oBAAoB,CAAE;AAAEE,IAAAA,QAAF;AAAYC,IAAAA,aAAZ;AAA2BC,IAAAA;AAA3B,GAAF,CAA3B;AACA","sourcesContent":["/**\n * Internal dependencies\n */\n\nimport useBlockDisplayTitle from './use-block-display-title';\n\n/**\n * Renders the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```jsx\n * <BlockTitle clientId=\"afd1cb17-2c08-4e7a-91be-007ba7ddc3a1\" maximumLength={ 17 }/>\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.\n * @param {string|undefined} props.context The context to pass to `getBlockLabel`.\n *\n * @return {JSX.Element} Block title.\n */\nexport default function BlockTitle( { clientId, maximumLength, context } ) {\n\treturn useBlockDisplayTitle( { clientId, maximumLength, context } );\n}\n"]}
@@ -1,11 +1,6 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { truncate } from 'lodash';
5
1
  /**
6
2
  * WordPress dependencies
7
3
  */
8
-
9
4
  import { useSelect } from '@wordpress/data';
10
5
  import { getBlockType, __experimentalGetBlockLabel as getBlockLabel, isReusableBlock } from '@wordpress/blocks';
11
6
  /**
@@ -21,15 +16,22 @@ import { store as blockEditorStore } from '../../store';
21
16
  * @example
22
17
  *
23
18
  * ```js
24
- * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );
19
+ * useBlockDisplayTitle( { clientId: 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', maximumLength: 17 } );
25
20
  * ```
26
21
  *
27
- * @param {string} clientId Client ID of block.
28
- * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.
22
+ * @param {Object} props
23
+ * @param {string} props.clientId Client ID of block.
24
+ * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
25
+ * @param {string|undefined} props.context The context to pass to `getBlockLabel`.
29
26
  * @return {?string} Block title.
30
27
  */
31
28
 
32
- export default function useBlockDisplayTitle(clientId, maximumLength) {
29
+ export default function useBlockDisplayTitle(_ref) {
30
+ let {
31
+ clientId,
32
+ maximumLength,
33
+ context
34
+ } = _ref;
33
35
  const {
34
36
  attributes,
35
37
  name,
@@ -64,17 +66,16 @@ export default function useBlockDisplayTitle(clientId, maximumLength) {
64
66
  }
65
67
 
66
68
  const blockType = getBlockType(name);
67
- const blockLabel = blockType ? getBlockLabel(blockType, attributes) : null;
69
+ const blockLabel = blockType ? getBlockLabel(blockType, attributes, context) : null;
68
70
  const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
69
71
  // label context. If the label is defined we prioritize it over a
70
72
  // possible block variation title match.
71
73
 
72
74
  const blockTitle = label && label !== blockType.title ? label : blockInformation.title;
73
75
 
74
- if (maximumLength && maximumLength > 0) {
75
- return truncate(blockTitle, {
76
- length: maximumLength
77
- });
76
+ if (maximumLength && maximumLength > 0 && blockTitle.length > maximumLength) {
77
+ const omission = '...';
78
+ return blockTitle.slice(0, maximumLength - omission.length) + omission;
78
79
  }
79
80
 
80
81
  return blockTitle;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/use-block-display-title.js"],"names":["truncate","useSelect","getBlockType","__experimentalGetBlockLabel","getBlockLabel","isReusableBlock","useBlockDisplayInformation","store","blockEditorStore","useBlockDisplayTitle","clientId","maximumLength","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","blockTitle","title","length"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,QAAzB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,YADD,EAECC,2BAA2B,IAAIC,aAFhC,EAGCC,eAHD,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,oBAAT,CAA+BC,QAA/B,EAAyCC,aAAzC,EAAyD;AACvE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2Cb,SAAS,CACvDc,MAAF,IAAc;AACb,QAAK,CAAEL,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLM,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEP,gBAAF,CAJV;AAKA,UAAMW,SAAS,GAAGH,YAAY,CAAEN,QAAF,CAA9B;;AACA,QAAK,CAAES,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGf,eAAe,CAAEH,YAAY,CAAEiB,SAAF,CAAd,CAAlC;AACA,WAAO;AACNP,MAAAA,UAAU,EAAEK,kBAAkB,CAAEP,QAAF,CADxB;AAENG,MAAAA,IAAI,EAAEM,SAFA;AAGNL,MAAAA,kBAAkB,EACjBM,UAAU,IACVF,mCAAmC,CAClCD,kBAAkB,CAAEP,QAAF,CAAlB,CAA+BW,GADG;AAL9B,KAAP;AASA,GAxBwD,EAyBzD,CAAEX,QAAF,CAzByD,CAA1D;AA4BA,QAAMY,gBAAgB,GAAGhB,0BAA0B,CAAEI,QAAF,CAAnD;;AACA,MAAK,CAAEG,IAAF,IAAU,CAAES,gBAAjB,EAAoC;AACnC,WAAO,IAAP;AACA;;AACD,QAAMC,SAAS,GAAGrB,YAAY,CAAEW,IAAF,CAA9B;AACA,QAAMW,UAAU,GAAGD,SAAS,GACzBnB,aAAa,CAAEmB,SAAF,EAAaX,UAAb,CADY,GAEzB,IAFH;AAIA,QAAMa,KAAK,GAAGX,kBAAkB,IAAIU,UAApC,CAtCuE,CAuCvE;AACA;AACA;;AACA,QAAME,UAAU,GACfD,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACI,KAA7B,GAAqCF,KAArC,GAA6CH,gBAAgB,CAACK,KAD/D;;AAGA,MAAKhB,aAAa,IAAIA,aAAa,GAAG,CAAtC,EAA0C;AACzC,WAAOX,QAAQ,CAAE0B,UAAF,EAAc;AAAEE,MAAAA,MAAM,EAAEjB;AAAV,KAAd,CAAf;AACA;;AAED,SAAOe,UAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { truncate } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockType,\n\t__experimentalGetBlockLabel as getBlockLabel,\n\tisReusableBlock,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Returns the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```js\n * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );\n * ```\n *\n * @param {string} clientId Client ID of block.\n * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.\n * @return {?string} Block title.\n */\nexport default function useBlockDisplayTitle( clientId, maximumLength ) {\n\tconst { attributes, name, reusableBlockTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\t__experimentalGetReusableBlockTitle,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tif ( ! blockName ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst isReusable = isReusableBlock( getBlockType( blockName ) );\n\t\t\treturn {\n\t\t\t\tattributes: getBlockAttributes( clientId ),\n\t\t\t\tname: blockName,\n\t\t\t\treusableBlockTitle:\n\t\t\t\t\tisReusable &&\n\t\t\t\t\t__experimentalGetReusableBlockTitle(\n\t\t\t\t\t\tgetBlockAttributes( clientId ).ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tif ( ! name || ! blockInformation ) {\n\t\treturn null;\n\t}\n\tconst blockType = getBlockType( name );\n\tconst blockLabel = blockType\n\t\t? getBlockLabel( blockType, attributes )\n\t\t: null;\n\n\tconst label = reusableBlockTitle || blockLabel;\n\t// Label will fallback to the title if no label is defined for the current\n\t// label context. If the label is defined we prioritize it over a\n\t// possible block variation title match.\n\tconst blockTitle =\n\t\tlabel && label !== blockType.title ? label : blockInformation.title;\n\n\tif ( maximumLength && maximumLength > 0 ) {\n\t\treturn truncate( blockTitle, { length: maximumLength } );\n\t}\n\n\treturn blockTitle;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/use-block-display-title.js"],"names":["useSelect","getBlockType","__experimentalGetBlockLabel","getBlockLabel","isReusableBlock","useBlockDisplayInformation","store","blockEditorStore","useBlockDisplayTitle","clientId","maximumLength","context","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","blockTitle","title","length","omission","slice"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AACA,SACCC,YADD,EAECC,2BAA2B,IAAIC,aAFhC,EAGCC,eAHD,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,oBAAT,OAIX;AAAA,MAJ0C;AAC7CC,IAAAA,QAD6C;AAE7CC,IAAAA,aAF6C;AAG7CC,IAAAA;AAH6C,GAI1C;AACH,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2Cd,SAAS,CACvDe,MAAF,IAAc;AACb,QAAK,CAAEN,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLO,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAER,gBAAF,CAJV;AAKA,UAAMY,SAAS,GAAGH,YAAY,CAAEP,QAAF,CAA9B;;AACA,QAAK,CAAEU,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGhB,eAAe,CAAEH,YAAY,CAAEkB,SAAF,CAAd,CAAlC;AACA,WAAO;AACNP,MAAAA,UAAU,EAAEK,kBAAkB,CAAER,QAAF,CADxB;AAENI,MAAAA,IAAI,EAAEM,SAFA;AAGNL,MAAAA,kBAAkB,EACjBM,UAAU,IACVF,mCAAmC,CAClCD,kBAAkB,CAAER,QAAF,CAAlB,CAA+BY,GADG;AAL9B,KAAP;AASA,GAxBwD,EAyBzD,CAAEZ,QAAF,CAzByD,CAA1D;AA4BA,QAAMa,gBAAgB,GAAGjB,0BAA0B,CAAEI,QAAF,CAAnD;;AACA,MAAK,CAAEI,IAAF,IAAU,CAAES,gBAAjB,EAAoC;AACnC,WAAO,IAAP;AACA;;AACD,QAAMC,SAAS,GAAGtB,YAAY,CAAEY,IAAF,CAA9B;AACA,QAAMW,UAAU,GAAGD,SAAS,GACzBpB,aAAa,CAAEoB,SAAF,EAAaX,UAAb,EAAyBD,OAAzB,CADY,GAEzB,IAFH;AAIA,QAAMc,KAAK,GAAGX,kBAAkB,IAAIU,UAApC,CAtCG,CAuCH;AACA;AACA;;AACA,QAAME,UAAU,GACfD,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACI,KAA7B,GAAqCF,KAArC,GAA6CH,gBAAgB,CAACK,KAD/D;;AAGA,MACCjB,aAAa,IACbA,aAAa,GAAG,CADhB,IAEAgB,UAAU,CAACE,MAAX,GAAoBlB,aAHrB,EAIE;AACD,UAAMmB,QAAQ,GAAG,KAAjB;AACA,WACCH,UAAU,CAACI,KAAX,CAAkB,CAAlB,EAAqBpB,aAAa,GAAGmB,QAAQ,CAACD,MAA9C,IAAyDC,QAD1D;AAGA;;AAED,SAAOH,UAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockType,\n\t__experimentalGetBlockLabel as getBlockLabel,\n\tisReusableBlock,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Returns the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```js\n * useBlockDisplayTitle( { clientId: 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', maximumLength: 17 } );\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.\n * @param {string|undefined} props.context The context to pass to `getBlockLabel`.\n * @return {?string} Block title.\n */\nexport default function useBlockDisplayTitle( {\n\tclientId,\n\tmaximumLength,\n\tcontext,\n} ) {\n\tconst { attributes, name, reusableBlockTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\t__experimentalGetReusableBlockTitle,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tif ( ! blockName ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst isReusable = isReusableBlock( getBlockType( blockName ) );\n\t\t\treturn {\n\t\t\t\tattributes: getBlockAttributes( clientId ),\n\t\t\t\tname: blockName,\n\t\t\t\treusableBlockTitle:\n\t\t\t\t\tisReusable &&\n\t\t\t\t\t__experimentalGetReusableBlockTitle(\n\t\t\t\t\t\tgetBlockAttributes( clientId ).ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tif ( ! name || ! blockInformation ) {\n\t\treturn null;\n\t}\n\tconst blockType = getBlockType( name );\n\tconst blockLabel = blockType\n\t\t? getBlockLabel( blockType, attributes, context )\n\t\t: null;\n\n\tconst label = reusableBlockTitle || blockLabel;\n\t// Label will fallback to the title if no label is defined for the current\n\t// label context. If the label is defined we prioritize it over a\n\t// possible block variation title match.\n\tconst blockTitle =\n\t\tlabel && label !== blockType.title ? label : blockInformation.title;\n\n\tif (\n\t\tmaximumLength &&\n\t\tmaximumLength > 0 &&\n\t\tblockTitle.length > maximumLength\n\t) {\n\t\tconst omission = '...';\n\t\treturn (\n\t\t\tblockTitle.slice( 0, maximumLength - omission.length ) + omission\n\t\t);\n\t}\n\n\treturn blockTitle;\n}\n"]}
@@ -48,7 +48,7 @@ function BlockContextualToolbar(_ref) {
48
48
  return {
49
49
  blockType: selectedBlockClientId && getBlockType(getBlockName(selectedBlockClientId)),
50
50
  hasParents: parents.length,
51
- showParentSelector: hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1
51
+ showParentSelector: parentBlockType && hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1
52
52
  };
53
53
  }, []);
54
54
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","hasBlockSupport","store","blocksStore","useSelect","NavigableToolbar","BlockToolbar","blockEditorStore","BlockContextualToolbar","focusOnMount","isFixed","props","blockType","hasParents","showParentSelector","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockType","selectedBlockClientIds","selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,EAA0BC,KAAK,IAAIC,WAAnC,QAAsD,mBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,SAASJ,KAAK,IAAIK,gBAAlB,QAA0C,aAA1C;;AAEA,SAASC,sBAAT,OAAuE;AAAA,MAAtC;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,OAAhB;AAAyB,OAAGC;AAA5B,GAAsC;AACtE,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,UAAb;AAAyBC,IAAAA;AAAzB,MAAgDV,SAAS,CAC5DW,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,YAAF;AAAgBC,MAAAA,eAAhB;AAAiCC,MAAAA;AAAjC,QACLH,MAAM,CAAER,gBAAF,CADP;AAEA,UAAM;AAAEY,MAAAA;AAAF,QAAmBJ,MAAM,CAAEZ,WAAF,CAA/B;AACA,UAAMiB,sBAAsB,GAAGF,yBAAyB,EAAxD;AACA,UAAMG,qBAAqB,GAAGD,sBAAsB,CAAE,CAAF,CAApD;AACA,UAAME,OAAO,GAAGL,eAAe,CAAEI,qBAAF,CAA/B;AACA,UAAME,mBAAmB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAR,GAAiB,CAAnB,CAAnC;AACA,UAAMC,eAAe,GAAGT,YAAY,CAAEO,mBAAF,CAApC;AACA,UAAMG,eAAe,GAAGP,YAAY,CAAEM,eAAF,CAApC;AAEA,WAAO;AACNb,MAAAA,SAAS,EACRS,qBAAqB,IACrBF,YAAY,CAAEH,YAAY,CAAEK,qBAAF,CAAd,CAHP;AAINR,MAAAA,UAAU,EAAES,OAAO,CAACE,MAJd;AAKNV,MAAAA,kBAAkB,EACjBb,eAAe,CACdyB,eADc,EAEd,8BAFc,EAGd,IAHc,CAAf,IAIKN,sBAAsB,CAACI,MAAvB,IAAiC;AAVjC,KAAP;AAYA,GAxB6D,EAyB9D,EAzB8D,CAA/D;;AA4BA,MAAKZ,SAAL,EAAiB;AAChB,QAAK,CAAEX,eAAe,CAAEW,SAAF,EAAa,uBAAb,EAAsC,IAAtC,CAAtB,EAAqE;AACpE,aAAO,IAAP;AACA;AACD,GAjCqE,CAmCtE;;;AACA,QAAMe,OAAO,GAAG5B,UAAU,CAAE,uCAAF,EAA2C;AACpE,kBAAcc,UAAU,IAAIC,kBADwC;AAEpE,gBAAYJ;AAFwD,GAA3C,CAA1B;AAKA,SACC,cAAC,gBAAD;AACC,IAAA,YAAY,EAAGD,YADhB;AAEC,IAAA,SAAS,EAAGkB;AACZ;AAHD;AAIC,kBAAa3B,EAAE,CAAE,aAAF;AAJhB,KAKMW,KALN,GAOC,cAAC,YAAD;AAAc,IAAA,cAAc,EAAGD;AAA/B,IAPD,CADD;AAWA;;AAED,eAAeF,sBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport NavigableToolbar from '../navigable-toolbar';\nimport BlockToolbar from '../block-toolbar';\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {\n\tconst { blockType, hasParents, showParentSelector } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockParents, getSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\t\tconst parentBlockType = getBlockType( parentBlockName );\n\n\t\t\treturn {\n\t\t\t\tblockType:\n\t\t\t\t\tselectedBlockClientId &&\n\t\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\t\thasParents: parents.length,\n\t\t\t\tshowParentSelector:\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tparentBlockType,\n\t\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) && selectedBlockClientIds.length <= 1,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': hasParents && showParentSelector,\n\t\t'is-fixed': isFixed,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<BlockToolbar hideDragHandle={ isFixed } />\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default BlockContextualToolbar;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","hasBlockSupport","store","blocksStore","useSelect","NavigableToolbar","BlockToolbar","blockEditorStore","BlockContextualToolbar","focusOnMount","isFixed","props","blockType","hasParents","showParentSelector","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockType","selectedBlockClientIds","selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,EAA0BC,KAAK,IAAIC,WAAnC,QAAsD,mBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,SAASJ,KAAK,IAAIK,gBAAlB,QAA0C,aAA1C;;AAEA,SAASC,sBAAT,OAAuE;AAAA,MAAtC;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,OAAhB;AAAyB,OAAGC;AAA5B,GAAsC;AACtE,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,UAAb;AAAyBC,IAAAA;AAAzB,MAAgDV,SAAS,CAC5DW,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,YAAF;AAAgBC,MAAAA,eAAhB;AAAiCC,MAAAA;AAAjC,QACLH,MAAM,CAAER,gBAAF,CADP;AAEA,UAAM;AAAEY,MAAAA;AAAF,QAAmBJ,MAAM,CAAEZ,WAAF,CAA/B;AACA,UAAMiB,sBAAsB,GAAGF,yBAAyB,EAAxD;AACA,UAAMG,qBAAqB,GAAGD,sBAAsB,CAAE,CAAF,CAApD;AACA,UAAME,OAAO,GAAGL,eAAe,CAAEI,qBAAF,CAA/B;AACA,UAAME,mBAAmB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAR,GAAiB,CAAnB,CAAnC;AACA,UAAMC,eAAe,GAAGT,YAAY,CAAEO,mBAAF,CAApC;AACA,UAAMG,eAAe,GAAGP,YAAY,CAAEM,eAAF,CAApC;AAEA,WAAO;AACNb,MAAAA,SAAS,EACRS,qBAAqB,IACrBF,YAAY,CAAEH,YAAY,CAAEK,qBAAF,CAAd,CAHP;AAINR,MAAAA,UAAU,EAAES,OAAO,CAACE,MAJd;AAKNV,MAAAA,kBAAkB,EACjBY,eAAe,IACfzB,eAAe,CACdyB,eADc,EAEd,8BAFc,EAGd,IAHc,CADf,IAMAN,sBAAsB,CAACI,MAAvB,IAAiC;AAZ5B,KAAP;AAcA,GA1B6D,EA2B9D,EA3B8D,CAA/D;;AA8BA,MAAKZ,SAAL,EAAiB;AAChB,QAAK,CAAEX,eAAe,CAAEW,SAAF,EAAa,uBAAb,EAAsC,IAAtC,CAAtB,EAAqE;AACpE,aAAO,IAAP;AACA;AACD,GAnCqE,CAqCtE;;;AACA,QAAMe,OAAO,GAAG5B,UAAU,CAAE,uCAAF,EAA2C;AACpE,kBAAcc,UAAU,IAAIC,kBADwC;AAEpE,gBAAYJ;AAFwD,GAA3C,CAA1B;AAKA,SACC,cAAC,gBAAD;AACC,IAAA,YAAY,EAAGD,YADhB;AAEC,IAAA,SAAS,EAAGkB;AACZ;AAHD;AAIC,kBAAa3B,EAAE,CAAE,aAAF;AAJhB,KAKMW,KALN,GAOC,cAAC,YAAD;AAAc,IAAA,cAAc,EAAGD;AAA/B,IAPD,CADD;AAWA;;AAED,eAAeF,sBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport NavigableToolbar from '../navigable-toolbar';\nimport BlockToolbar from '../block-toolbar';\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {\n\tconst { blockType, hasParents, showParentSelector } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockParents, getSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\t\tconst parentBlockType = getBlockType( parentBlockName );\n\n\t\t\treturn {\n\t\t\t\tblockType:\n\t\t\t\t\tselectedBlockClientId &&\n\t\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\t\thasParents: parents.length,\n\t\t\t\tshowParentSelector:\n\t\t\t\t\tparentBlockType &&\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tparentBlockType,\n\t\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) &&\n\t\t\t\t\tselectedBlockClientIds.length <= 1,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': hasParents && showParentSelector,\n\t\t'is-fixed': isFixed,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<BlockToolbar hideDragHandle={ isFixed } />\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default BlockContextualToolbar;\n"]}
@@ -96,8 +96,7 @@ function BlockSelectionButton(_ref) {
96
96
  getSelectedBlockClientId,
97
97
  getMultiSelectedBlocksEndClientId,
98
98
  getPreviousBlockClientId,
99
- getNextBlockClientId,
100
- isNavigationMode
99
+ getNextBlockClientId
101
100
  } = useSelect(blockEditorStore);
102
101
  const {
103
102
  selectBlock,
@@ -154,11 +153,6 @@ function BlockSelectionButton(_ref) {
154
153
 
155
154
  const startingBlockClientId = hasBlockMovingClientId();
156
155
 
157
- if (isEscape && isNavigationMode()) {
158
- clearSelectedBlock();
159
- event.preventDefault();
160
- }
161
-
162
156
  if (isEscape && startingBlockClientId && !event.defaultPrevented) {
163
157
  setBlockMovingClientId(null);
164
158
  event.preventDefault();