@wordpress/block-editor 7.0.2 → 8.0.1

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 (801) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +45 -1
  3. package/build/components/autocomplete/index.js +1 -1
  4. package/build/components/autocomplete/index.js.map +1 -1
  5. package/build/components/block-actions/index.js +8 -4
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +61 -14
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +25 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-controls/fill.js +2 -2
  12. package/build/components/block-controls/fill.js.map +1 -1
  13. package/build/components/block-controls/hook.js +3 -3
  14. package/build/components/block-controls/hook.js.map +1 -1
  15. package/build/components/block-icon/index.js +5 -1
  16. package/build/components/block-icon/index.js.map +1 -1
  17. package/build/components/block-icon/index.native.js +9 -11
  18. package/build/components/block-icon/index.native.js.map +1 -1
  19. package/build/components/block-inspector/index.js +8 -0
  20. package/build/components/block-inspector/index.js.map +1 -1
  21. package/build/components/block-list/block-html.js +5 -0
  22. package/build/components/block-list/block-html.js.map +1 -1
  23. package/build/components/block-list/block.js +12 -5
  24. package/build/components/block-list/block.js.map +1 -1
  25. package/build/components/block-list/block.native.js +4 -3
  26. package/build/components/block-list/block.native.js.map +1 -1
  27. package/build/components/block-list/index.native.js +1 -1
  28. package/build/components/block-list/index.native.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-multi-selection.js +21 -8
  30. package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  31. package/build/components/block-list-appender/index.js +9 -1
  32. package/build/components/block-list-appender/index.js.map +1 -1
  33. package/build/components/block-mover/index.js +4 -4
  34. package/build/components/block-mover/index.js.map +1 -1
  35. package/build/components/block-mover/index.native.js +4 -4
  36. package/build/components/block-mover/index.native.js.map +1 -1
  37. package/build/components/block-navigation/dropdown.js +0 -1
  38. package/build/components/block-navigation/dropdown.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +1 -8
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-preview/auto.js +1 -1
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-settings/container.native.js +5 -2
  44. package/build/components/block-settings/container.native.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-settings-menu-controls/index.js +10 -3
  48. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  49. package/build/components/block-styles/preview.native.js +2 -2
  50. package/build/components/block-styles/preview.native.js.map +1 -1
  51. package/build/components/block-switcher/block-styles-menu.js +1 -1
  52. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  53. package/build/components/block-switcher/index.js +10 -3
  54. package/build/components/block-switcher/index.js.map +1 -1
  55. package/build/components/block-title/index.js +3 -2
  56. package/build/components/block-title/index.js.map +1 -1
  57. package/build/components/block-tools/block-popover.js +2 -4
  58. package/build/components/block-tools/block-popover.js.map +1 -1
  59. package/build/components/block-tools/index.js +4 -1
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +96 -7
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/border-radius-control/index.js.map +1 -1
  64. package/build/components/border-radius-control/utils.js +17 -8
  65. package/build/components/border-radius-control/utils.js.map +1 -1
  66. package/build/components/colors/utils.js +11 -3
  67. package/build/components/colors/utils.js.map +1 -1
  68. package/build/components/colors-gradients/control.js +22 -57
  69. package/build/components/colors-gradients/control.js.map +1 -1
  70. package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
  71. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  72. package/build/components/contrast-checker/index.js +18 -12
  73. package/build/components/contrast-checker/index.js.map +1 -1
  74. package/build/components/copy-handler/index.js +9 -3
  75. package/build/components/copy-handler/index.js.map +1 -1
  76. package/build/components/default-block-appender/index.js +2 -2
  77. package/build/components/default-block-appender/index.js.map +1 -1
  78. package/build/components/duotone-control/index.js +41 -39
  79. package/build/components/duotone-control/index.js.map +1 -1
  80. package/build/components/editor-styles/index.js +9 -3
  81. package/build/components/editor-styles/index.js.map +1 -1
  82. package/build/components/font-appearance-control/index.js +32 -21
  83. package/build/components/font-appearance-control/index.js.map +1 -1
  84. package/build/components/iframe/index.js +6 -4
  85. package/build/components/iframe/index.js.map +1 -1
  86. package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
  87. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  88. package/build/components/image-editor/constants.js +16 -0
  89. package/build/components/image-editor/constants.js.map +1 -0
  90. package/build/components/image-editor/context.js +59 -0
  91. package/build/components/image-editor/context.js.map +1 -0
  92. package/build/components/image-editor/cropper.js +83 -0
  93. package/build/components/image-editor/cropper.js.map +1 -0
  94. package/build/components/image-editor/form-controls.js +36 -0
  95. package/build/components/image-editor/form-controls.js.map +1 -0
  96. package/build/components/image-editor/index.js +60 -0
  97. package/build/components/image-editor/index.js.map +1 -0
  98. package/build/components/image-editor/rotation-button.js +37 -0
  99. package/build/components/image-editor/rotation-button.js.map +1 -0
  100. package/build/components/image-editor/use-save-image.js +84 -0
  101. package/build/components/image-editor/use-save-image.js.map +1 -0
  102. package/build/components/image-editor/use-transform-image.js +135 -0
  103. package/build/components/image-editor/use-transform-image.js.map +1 -0
  104. package/build/components/image-editor/zoom-dropdown.js +55 -0
  105. package/build/components/image-editor/zoom-dropdown.js.map +1 -0
  106. package/build/components/image-size-control/use-dimension-handler.js +14 -3
  107. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  108. package/build/components/index.js +36 -20
  109. package/build/components/index.js.map +1 -1
  110. package/build/components/index.native.js +2 -2
  111. package/build/components/index.native.js.map +1 -1
  112. package/build/components/inner-blocks/button-block-appender.js +11 -1
  113. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  114. package/build/components/inner-blocks/index.js +8 -5
  115. package/build/components/inner-blocks/index.js.map +1 -1
  116. package/build/components/inner-blocks/index.native.js +4 -3
  117. package/build/components/inner-blocks/index.native.js.map +1 -1
  118. package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
  119. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  120. package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
  121. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  122. package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
  123. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  124. package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
  125. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  126. package/build/components/inserter/block-patterns-tab.js +74 -35
  127. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  128. package/build/components/inserter/block-types-tab.native.js +3 -11
  129. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  130. package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  131. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  132. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  133. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  134. package/build/components/inserter/index.js +12 -4
  135. package/build/components/inserter/index.js.map +1 -1
  136. package/build/components/inserter/index.native.js +1 -7
  137. package/build/components/inserter/index.native.js.map +1 -1
  138. package/build/components/inserter/library.js +2 -0
  139. package/build/components/inserter/library.js.map +1 -1
  140. package/build/components/inserter/menu.js +2 -1
  141. package/build/components/inserter/menu.js.map +1 -1
  142. package/build/components/inserter/menu.native.js +11 -15
  143. package/build/components/inserter/menu.native.js.map +1 -1
  144. package/build/components/inserter/pattern-panel.js +19 -10
  145. package/build/components/inserter/pattern-panel.js.map +1 -1
  146. package/build/components/inserter/preview-panel.js +1 -1
  147. package/build/components/inserter/preview-panel.js.map +1 -1
  148. package/build/components/inserter/quick-inserter.js +2 -1
  149. package/build/components/inserter/quick-inserter.js.map +1 -1
  150. package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
  151. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  152. package/build/components/inserter/search-results.native.js +6 -11
  153. package/build/components/inserter/search-results.native.js.map +1 -1
  154. package/build/components/inserter/utils.native.js +44 -0
  155. package/build/components/inserter/utils.native.js.map +1 -0
  156. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  157. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  158. package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
  159. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  160. package/build/components/inspector-controls/fill.js +16 -1
  161. package/build/components/inspector-controls/fill.js.map +1 -1
  162. package/build/components/inspector-controls/groups.js +5 -1
  163. package/build/components/inspector-controls/groups.js.map +1 -1
  164. package/build/components/inspector-controls/slot.js +15 -0
  165. package/build/components/inspector-controls/slot.js.map +1 -1
  166. package/build/components/letter-spacing-control/index.js +9 -6
  167. package/build/components/letter-spacing-control/index.js.map +1 -1
  168. package/build/components/link-control/index.js +93 -34
  169. package/build/components/link-control/index.js.map +1 -1
  170. package/build/components/link-control/link-preview.js +45 -15
  171. package/build/components/link-control/link-preview.js.map +1 -1
  172. package/build/components/link-control/search-input.js +25 -7
  173. package/build/components/link-control/search-input.js.map +1 -1
  174. package/build/components/list-view/block-contents.js +1 -20
  175. package/build/components/list-view/block-contents.js.map +1 -1
  176. package/build/components/list-view/block.js +54 -69
  177. package/build/components/list-view/block.js.map +1 -1
  178. package/build/components/list-view/branch.js +102 -76
  179. package/build/components/list-view/branch.js.map +1 -1
  180. package/build/components/list-view/index.js +45 -20
  181. package/build/components/list-view/index.js.map +1 -1
  182. package/build/components/list-view/leaf.js +2 -2
  183. package/build/components/list-view/leaf.js.map +1 -1
  184. package/build/components/list-view/list-item.js +3 -2
  185. package/build/components/list-view/list-item.js.map +1 -1
  186. package/build/components/list-view/use-list-view-client-ids.js +13 -54
  187. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  188. package/build/components/media-placeholder/index.js +29 -20
  189. package/build/components/media-placeholder/index.js.map +1 -1
  190. package/build/components/media-replace-flow/index.js +5 -3
  191. package/build/components/media-replace-flow/index.js.map +1 -1
  192. package/build/components/navigable-toolbar/index.js +1 -4
  193. package/build/components/navigable-toolbar/index.js.map +1 -1
  194. package/build/components/observe-typing/index.js +1 -1
  195. package/build/components/observe-typing/index.js.map +1 -1
  196. package/build/components/plain-text/index.native.js +30 -1
  197. package/build/components/plain-text/index.native.js.map +1 -1
  198. package/build/components/rich-text/embed-handler-picker.native.js +66 -0
  199. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  200. package/build/components/rich-text/format-edit.js +28 -2
  201. package/build/components/rich-text/format-edit.js.map +1 -1
  202. package/build/components/rich-text/format-toolbar/index.js +32 -11
  203. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  204. package/build/components/rich-text/index.js +5 -1
  205. package/build/components/rich-text/index.js.map +1 -1
  206. package/build/components/rich-text/index.native.js +41 -2
  207. package/build/components/rich-text/index.native.js.map +1 -1
  208. package/build/components/rich-text/use-paste-handler.js +28 -9
  209. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  210. package/build/components/rich-text/utils.js +22 -0
  211. package/build/components/rich-text/utils.js.map +1 -1
  212. package/build/components/typewriter/index.js +1 -1
  213. package/build/components/typewriter/index.js.map +1 -1
  214. package/build/components/url-input/index.js +25 -11
  215. package/build/components/url-input/index.js.map +1 -1
  216. package/build/components/use-moving-animation/index.js +13 -10
  217. package/build/components/use-moving-animation/index.js.map +1 -1
  218. package/build/components/use-on-block-drop/index.js +2 -1
  219. package/build/components/use-on-block-drop/index.js.map +1 -1
  220. package/build/components/use-setting/index.js +48 -9
  221. package/build/components/use-setting/index.js.map +1 -1
  222. package/build/components/writing-flow/use-multi-selection.js +6 -0
  223. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  224. package/build/components/writing-flow/use-tab-nav.js +10 -1
  225. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  226. package/build/hooks/align.js +13 -10
  227. package/build/hooks/align.js.map +1 -1
  228. package/build/hooks/anchor.js +1 -1
  229. package/build/hooks/anchor.js.map +1 -1
  230. package/build/hooks/border.js +5 -5
  231. package/build/hooks/border.js.map +1 -1
  232. package/build/hooks/color-panel.js +5 -2
  233. package/build/hooks/color-panel.js.map +1 -1
  234. package/build/hooks/color.js +1 -1
  235. package/build/hooks/color.js.map +1 -1
  236. package/build/hooks/dimensions.js +23 -27
  237. package/build/hooks/dimensions.js.map +1 -1
  238. package/build/hooks/duotone.js +60 -16
  239. package/build/hooks/duotone.js.map +1 -1
  240. package/build/hooks/font-appearance.js +49 -6
  241. package/build/hooks/font-appearance.js.map +1 -1
  242. package/build/hooks/font-family.js +123 -32
  243. package/build/hooks/font-family.js.map +1 -1
  244. package/build/hooks/font-size.js +51 -9
  245. package/build/hooks/font-size.js.map +1 -1
  246. package/build/hooks/gap.js +2 -1
  247. package/build/hooks/gap.js.map +1 -1
  248. package/build/hooks/index.js +10 -0
  249. package/build/hooks/index.js.map +1 -1
  250. package/build/hooks/index.native.js +8 -0
  251. package/build/hooks/index.native.js.map +1 -1
  252. package/build/hooks/letter-spacing.js +44 -7
  253. package/build/hooks/letter-spacing.js.map +1 -1
  254. package/build/hooks/line-height.js +45 -8
  255. package/build/hooks/line-height.js.map +1 -1
  256. package/build/hooks/lock.js +43 -0
  257. package/build/hooks/lock.js.map +1 -0
  258. package/build/hooks/margin.js +1 -1
  259. package/build/hooks/margin.js.map +1 -1
  260. package/build/hooks/padding.js +1 -1
  261. package/build/hooks/padding.js.map +1 -1
  262. package/build/hooks/style.js +7 -4
  263. package/build/hooks/style.js.map +1 -1
  264. package/build/hooks/text-decoration.js +42 -6
  265. package/build/hooks/text-decoration.js.map +1 -1
  266. package/build/hooks/text-transform.js +42 -6
  267. package/build/hooks/text-transform.js.map +1 -1
  268. package/build/hooks/typography.js +108 -8
  269. package/build/hooks/typography.js.map +1 -1
  270. package/build/hooks/use-cached-truthy.js +29 -0
  271. package/build/hooks/use-cached-truthy.js.map +1 -0
  272. package/build/index.js +7 -0
  273. package/build/index.js.map +1 -1
  274. package/build/layouts/flex.js +160 -34
  275. package/build/layouts/flex.js.map +1 -1
  276. package/build/layouts/flow.js +75 -8
  277. package/build/layouts/flow.js.map +1 -1
  278. package/build/store/actions.js +323 -265
  279. package/build/store/actions.js.map +1 -1
  280. package/build/store/defaults.native.js +13 -1
  281. package/build/store/defaults.native.js.map +1 -1
  282. package/build/store/index.js +1 -3
  283. package/build/store/index.js.map +1 -1
  284. package/build/store/reducer.js +33 -22
  285. package/build/store/reducer.js.map +1 -1
  286. package/build/store/selectors.js +172 -38
  287. package/build/store/selectors.js.map +1 -1
  288. package/build/utils/index.js +10 -1
  289. package/build/utils/index.js.map +1 -1
  290. package/build/utils/parse-css-unit-to-px.js +51 -1
  291. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  292. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  293. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  294. package/build-module/components/autocomplete/index.js +2 -2
  295. package/build-module/components/autocomplete/index.js.map +1 -1
  296. package/build-module/components/block-actions/index.js +8 -4
  297. package/build-module/components/block-actions/index.js.map +1 -1
  298. package/build-module/components/block-alignment-control/ui.js +64 -17
  299. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  300. package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
  301. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  302. package/build-module/components/block-controls/fill.js +2 -2
  303. package/build-module/components/block-controls/fill.js.map +1 -1
  304. package/build-module/components/block-controls/hook.js +3 -3
  305. package/build-module/components/block-controls/hook.js.map +1 -1
  306. package/build-module/components/block-icon/index.js +5 -1
  307. package/build-module/components/block-icon/index.js.map +1 -1
  308. package/build-module/components/block-icon/index.native.js +10 -11
  309. package/build-module/components/block-icon/index.native.js.map +1 -1
  310. package/build-module/components/block-inspector/index.js +8 -0
  311. package/build-module/components/block-inspector/index.js.map +1 -1
  312. package/build-module/components/block-list/block-html.js +5 -0
  313. package/build-module/components/block-list/block-html.js.map +1 -1
  314. package/build-module/components/block-list/block.js +12 -5
  315. package/build-module/components/block-list/block.js.map +1 -1
  316. package/build-module/components/block-list/block.native.js +4 -3
  317. package/build-module/components/block-list/block.native.js.map +1 -1
  318. package/build-module/components/block-list/index.native.js +1 -1
  319. package/build-module/components/block-list/index.native.js.map +1 -1
  320. package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -8
  321. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  322. package/build-module/components/block-list-appender/index.js +9 -1
  323. package/build-module/components/block-list-appender/index.js.map +1 -1
  324. package/build-module/components/block-mover/index.js +4 -4
  325. package/build-module/components/block-mover/index.js.map +1 -1
  326. package/build-module/components/block-mover/index.native.js +4 -4
  327. package/build-module/components/block-mover/index.native.js.map +1 -1
  328. package/build-module/components/block-navigation/dropdown.js +0 -1
  329. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  330. package/build-module/components/block-patterns-list/index.js +1 -6
  331. package/build-module/components/block-patterns-list/index.js.map +1 -1
  332. package/build-module/components/block-preview/auto.js +1 -1
  333. package/build-module/components/block-preview/auto.js.map +1 -1
  334. package/build-module/components/block-settings/container.native.js +6 -3
  335. package/build-module/components/block-settings/container.native.js.map +1 -1
  336. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
  337. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  338. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  339. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  340. package/build-module/components/block-styles/preview.native.js +2 -2
  341. package/build-module/components/block-styles/preview.native.js.map +1 -1
  342. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  343. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  344. package/build-module/components/block-switcher/index.js +10 -3
  345. package/build-module/components/block-switcher/index.js.map +1 -1
  346. package/build-module/components/block-title/index.js +3 -2
  347. package/build-module/components/block-title/index.js.map +1 -1
  348. package/build-module/components/block-tools/block-popover.js +3 -5
  349. package/build-module/components/block-tools/block-popover.js.map +1 -1
  350. package/build-module/components/block-tools/index.js +4 -1
  351. package/build-module/components/block-tools/index.js.map +1 -1
  352. package/build-module/components/block-tools/insertion-point.js +96 -8
  353. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  354. package/build-module/components/border-radius-control/index.js.map +1 -1
  355. package/build-module/components/border-radius-control/utils.js +16 -9
  356. package/build-module/components/border-radius-control/utils.js.map +1 -1
  357. package/build-module/components/colors/utils.js +9 -3
  358. package/build-module/components/colors/utils.js.map +1 -1
  359. package/build-module/components/colors-gradients/control.js +26 -63
  360. package/build-module/components/colors-gradients/control.js.map +1 -1
  361. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
  362. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  363. package/build-module/components/contrast-checker/index.js +13 -10
  364. package/build-module/components/contrast-checker/index.js.map +1 -1
  365. package/build-module/components/copy-handler/index.js +9 -3
  366. package/build-module/components/copy-handler/index.js.map +1 -1
  367. package/build-module/components/default-block-appender/index.js +2 -2
  368. package/build-module/components/default-block-appender/index.js.map +1 -1
  369. package/build-module/components/duotone-control/index.js +43 -39
  370. package/build-module/components/duotone-control/index.js.map +1 -1
  371. package/build-module/components/editor-styles/index.js +7 -3
  372. package/build-module/components/editor-styles/index.js.map +1 -1
  373. package/build-module/components/font-appearance-control/index.js +28 -21
  374. package/build-module/components/font-appearance-control/index.js.map +1 -1
  375. package/build-module/components/iframe/index.js +6 -4
  376. package/build-module/components/iframe/index.js.map +1 -1
  377. package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
  378. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  379. package/build-module/components/image-editor/constants.js +7 -0
  380. package/build-module/components/image-editor/constants.js.map +1 -0
  381. package/build-module/components/image-editor/context.js +44 -0
  382. package/build-module/components/image-editor/context.js.map +1 -0
  383. package/build-module/components/image-editor/cropper.js +69 -0
  384. package/build-module/components/image-editor/cropper.js.map +1 -0
  385. package/build-module/components/image-editor/form-controls.js +26 -0
  386. package/build-module/components/image-editor/form-controls.js.map +1 -0
  387. package/build-module/components/image-editor/index.js +37 -0
  388. package/build-module/components/image-editor/index.js.map +1 -0
  389. package/build-module/components/image-editor/rotation-button.js +26 -0
  390. package/build-module/components/image-editor/rotation-button.js.map +1 -0
  391. package/build-module/components/image-editor/use-save-image.js +70 -0
  392. package/build-module/components/image-editor/use-save-image.js.map +1 -0
  393. package/build-module/components/image-editor/use-transform-image.js +127 -0
  394. package/build-module/components/image-editor/use-transform-image.js.map +1 -0
  395. package/build-module/components/image-editor/zoom-dropdown.js +43 -0
  396. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
  397. package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
  398. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  399. package/build-module/components/index.js +4 -3
  400. package/build-module/components/index.js.map +1 -1
  401. package/build-module/components/index.native.js +1 -1
  402. package/build-module/components/index.native.js.map +1 -1
  403. package/build-module/components/inner-blocks/button-block-appender.js +10 -1
  404. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  405. package/build-module/components/inner-blocks/index.js +9 -6
  406. package/build-module/components/inner-blocks/index.js.map +1 -1
  407. package/build-module/components/inner-blocks/index.native.js +5 -4
  408. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  409. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
  410. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  411. package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
  412. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  413. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
  414. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  415. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
  416. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  417. package/build-module/components/inserter/block-patterns-tab.js +75 -36
  418. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  419. package/build-module/components/inserter/block-types-tab.native.js +2 -10
  420. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  421. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  422. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  423. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  424. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  425. package/build-module/components/inserter/index.js +12 -4
  426. package/build-module/components/inserter/index.js.map +1 -1
  427. package/build-module/components/inserter/index.native.js +1 -7
  428. package/build-module/components/inserter/index.native.js.map +1 -1
  429. package/build-module/components/inserter/library.js +2 -0
  430. package/build-module/components/inserter/library.js.map +1 -1
  431. package/build-module/components/inserter/menu.js +2 -1
  432. package/build-module/components/inserter/menu.js.map +1 -1
  433. package/build-module/components/inserter/menu.native.js +10 -15
  434. package/build-module/components/inserter/menu.native.js.map +1 -1
  435. package/build-module/components/inserter/pattern-panel.js +21 -13
  436. package/build-module/components/inserter/pattern-panel.js.map +1 -1
  437. package/build-module/components/inserter/preview-panel.js +1 -1
  438. package/build-module/components/inserter/preview-panel.js.map +1 -1
  439. package/build-module/components/inserter/quick-inserter.js +2 -1
  440. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
  442. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  443. package/build-module/components/inserter/search-results.native.js +5 -10
  444. package/build-module/components/inserter/search-results.native.js.map +1 -1
  445. package/build-module/components/inserter/utils.native.js +35 -0
  446. package/build-module/components/inserter/utils.native.js.map +1 -0
  447. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  448. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  449. package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
  450. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  451. package/build-module/components/inspector-controls/fill.js +16 -2
  452. package/build-module/components/inspector-controls/fill.js.map +1 -1
  453. package/build-module/components/inspector-controls/groups.js +5 -1
  454. package/build-module/components/inspector-controls/groups.js.map +1 -1
  455. package/build-module/components/inspector-controls/slot.js +13 -0
  456. package/build-module/components/inspector-controls/slot.js.map +1 -1
  457. package/build-module/components/letter-spacing-control/index.js +9 -6
  458. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  459. package/build-module/components/link-control/index.js +93 -35
  460. package/build-module/components/link-control/index.js.map +1 -1
  461. package/build-module/components/link-control/link-preview.js +46 -17
  462. package/build-module/components/link-control/link-preview.js.map +1 -1
  463. package/build-module/components/link-control/search-input.js +24 -7
  464. package/build-module/components/link-control/search-input.js.map +1 -1
  465. package/build-module/components/list-view/block-contents.js +1 -18
  466. package/build-module/components/list-view/block-contents.js.map +1 -1
  467. package/build-module/components/list-view/block.js +56 -71
  468. package/build-module/components/list-view/block.js.map +1 -1
  469. package/build-module/components/list-view/branch.js +102 -78
  470. package/build-module/components/list-view/branch.js.map +1 -1
  471. package/build-module/components/list-view/index.js +48 -23
  472. package/build-module/components/list-view/index.js.map +1 -1
  473. package/build-module/components/list-view/leaf.js +2 -2
  474. package/build-module/components/list-view/leaf.js.map +1 -1
  475. package/build-module/components/list-view/list-item.js +3 -2
  476. package/build-module/components/list-view/list-item.js.map +1 -1
  477. package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
  478. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  479. package/build-module/components/media-placeholder/index.js +29 -20
  480. package/build-module/components/media-placeholder/index.js.map +1 -1
  481. package/build-module/components/media-replace-flow/index.js +5 -3
  482. package/build-module/components/media-replace-flow/index.js.map +1 -1
  483. package/build-module/components/navigable-toolbar/index.js +1 -4
  484. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  485. package/build-module/components/observe-typing/index.js +1 -1
  486. package/build-module/components/observe-typing/index.js.map +1 -1
  487. package/build-module/components/plain-text/index.native.js +29 -2
  488. package/build-module/components/plain-text/index.native.js.map +1 -1
  489. package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
  490. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  491. package/build-module/components/rich-text/format-edit.js +28 -3
  492. package/build-module/components/rich-text/format-edit.js.map +1 -1
  493. package/build-module/components/rich-text/format-toolbar/index.js +29 -11
  494. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  495. package/build-module/components/rich-text/index.js +4 -1
  496. package/build-module/components/rich-text/index.js.map +1 -1
  497. package/build-module/components/rich-text/index.native.js +41 -3
  498. package/build-module/components/rich-text/index.native.js.map +1 -1
  499. package/build-module/components/rich-text/use-paste-handler.js +28 -9
  500. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  501. package/build-module/components/rich-text/utils.js +20 -0
  502. package/build-module/components/rich-text/utils.js.map +1 -1
  503. package/build-module/components/typewriter/index.js +1 -1
  504. package/build-module/components/typewriter/index.js.map +1 -1
  505. package/build-module/components/url-input/index.js +25 -11
  506. package/build-module/components/url-input/index.js.map +1 -1
  507. package/build-module/components/use-moving-animation/index.js +13 -10
  508. package/build-module/components/use-moving-animation/index.js.map +1 -1
  509. package/build-module/components/use-on-block-drop/index.js +3 -2
  510. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  511. package/build-module/components/use-setting/index.js +48 -9
  512. package/build-module/components/use-setting/index.js.map +1 -1
  513. package/build-module/components/writing-flow/use-multi-selection.js +6 -0
  514. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  515. package/build-module/components/writing-flow/use-tab-nav.js +10 -1
  516. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  517. package/build-module/hooks/align.js +13 -10
  518. package/build-module/hooks/align.js.map +1 -1
  519. package/build-module/hooks/anchor.js +1 -1
  520. package/build-module/hooks/anchor.js.map +1 -1
  521. package/build-module/hooks/border.js +5 -5
  522. package/build-module/hooks/border.js.map +1 -1
  523. package/build-module/hooks/color-panel.js +6 -3
  524. package/build-module/hooks/color-panel.js.map +1 -1
  525. package/build-module/hooks/color.js +1 -1
  526. package/build-module/hooks/color.js.map +1 -1
  527. package/build-module/hooks/dimensions.js +24 -27
  528. package/build-module/hooks/dimensions.js.map +1 -1
  529. package/build-module/hooks/duotone.js +59 -16
  530. package/build-module/hooks/duotone.js.map +1 -1
  531. package/build-module/hooks/font-appearance.js +45 -6
  532. package/build-module/hooks/font-appearance.js.map +1 -1
  533. package/build-module/hooks/font-family.js +117 -33
  534. package/build-module/hooks/font-family.js.map +1 -1
  535. package/build-module/hooks/font-size.js +47 -9
  536. package/build-module/hooks/font-size.js.map +1 -1
  537. package/build-module/hooks/gap.js +2 -1
  538. package/build-module/hooks/gap.js.map +1 -1
  539. package/build-module/hooks/index.js +2 -0
  540. package/build-module/hooks/index.js.map +1 -1
  541. package/build-module/hooks/index.native.js +1 -0
  542. package/build-module/hooks/index.native.js.map +1 -1
  543. package/build-module/hooks/letter-spacing.js +40 -7
  544. package/build-module/hooks/letter-spacing.js.map +1 -1
  545. package/build-module/hooks/line-height.js +41 -8
  546. package/build-module/hooks/line-height.js.map +1 -1
  547. package/build-module/hooks/lock.js +33 -0
  548. package/build-module/hooks/lock.js.map +1 -0
  549. package/build-module/hooks/margin.js +1 -1
  550. package/build-module/hooks/margin.js.map +1 -1
  551. package/build-module/hooks/padding.js +1 -1
  552. package/build-module/hooks/padding.js.map +1 -1
  553. package/build-module/hooks/style.js +7 -4
  554. package/build-module/hooks/style.js.map +1 -1
  555. package/build-module/hooks/text-decoration.js +38 -6
  556. package/build-module/hooks/text-decoration.js.map +1 -1
  557. package/build-module/hooks/text-transform.js +38 -6
  558. package/build-module/hooks/text-transform.js.map +1 -1
  559. package/build-module/hooks/typography.js +117 -17
  560. package/build-module/hooks/typography.js.map +1 -1
  561. package/build-module/hooks/use-cached-truthy.js +21 -0
  562. package/build-module/hooks/use-cached-truthy.js.map +1 -0
  563. package/build-module/index.js +1 -1
  564. package/build-module/index.js.map +1 -1
  565. package/build-module/layouts/flex.js +163 -38
  566. package/build-module/layouts/flex.js.map +1 -1
  567. package/build-module/layouts/flow.js +74 -8
  568. package/build-module/layouts/flow.js.map +1 -1
  569. package/build-module/store/actions.js +286 -241
  570. package/build-module/store/actions.js.map +1 -1
  571. package/build-module/store/defaults.native.js +12 -1
  572. package/build-module/store/defaults.native.js.map +1 -1
  573. package/build-module/store/index.js +1 -2
  574. package/build-module/store/index.js.map +1 -1
  575. package/build-module/store/reducer.js +33 -22
  576. package/build-module/store/reducer.js.map +1 -1
  577. package/build-module/store/selectors.js +160 -34
  578. package/build-module/store/selectors.js.map +1 -1
  579. package/build-module/utils/index.js +1 -0
  580. package/build-module/utils/index.js.map +1 -1
  581. package/build-module/utils/parse-css-unit-to-px.js +48 -1
  582. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  583. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  584. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  585. package/build-style/style-rtl.css +267 -144
  586. package/build-style/style.css +267 -144
  587. package/package.json +28 -27
  588. package/src/components/autocomplete/index.js +5 -2
  589. package/src/components/block-actions/index.js +9 -5
  590. package/src/components/block-alignment-control/style.scss +5 -0
  591. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
  592. package/src/components/block-alignment-control/test/index.native.js +37 -0
  593. package/src/components/block-alignment-control/ui.js +98 -27
  594. package/src/components/block-alignment-control/use-available-alignments.js +31 -10
  595. package/src/components/block-controls/fill.js +5 -2
  596. package/src/components/block-controls/hook.js +3 -3
  597. package/src/components/block-draggable/style.scss +19 -4
  598. package/src/components/block-icon/index.js +4 -1
  599. package/src/components/block-icon/index.native.js +10 -16
  600. package/src/components/block-inspector/index.js +10 -0
  601. package/src/components/block-list/block-html.js +5 -0
  602. package/src/components/block-list/block.js +11 -3
  603. package/src/components/block-list/block.native.js +5 -3
  604. package/src/components/block-list/index.native.js +1 -1
  605. package/src/components/block-list/style.scss +15 -0
  606. package/src/components/block-list/use-block-props/use-multi-selection.js +27 -7
  607. package/src/components/block-list-appender/index.js +8 -0
  608. package/src/components/block-mover/index.js +4 -4
  609. package/src/components/block-mover/index.native.js +4 -4
  610. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
  611. package/src/components/block-mover/test/index.native.js +26 -28
  612. package/src/components/block-navigation/dropdown.js +0 -1
  613. package/src/components/block-patterns-list/index.js +1 -8
  614. package/src/components/block-patterns-list/style.scss +22 -12
  615. package/src/components/block-preview/README.md +1 -1
  616. package/src/components/block-preview/auto.js +1 -1
  617. package/src/components/block-preview/style.scss +0 -17
  618. package/src/components/block-settings/container.native.js +7 -0
  619. package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
  620. package/src/components/block-settings-menu-controls/index.js +9 -6
  621. package/src/components/block-styles/preview.native.js +2 -2
  622. package/src/components/block-switcher/block-styles-menu.js +1 -1
  623. package/src/components/block-switcher/index.js +7 -3
  624. package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
  625. package/src/components/block-switcher/test/index.js +3 -0
  626. package/src/components/block-title/index.js +5 -2
  627. package/src/components/block-tools/block-popover.js +3 -5
  628. package/src/components/block-tools/index.js +5 -2
  629. package/src/components/block-tools/insertion-point.js +97 -9
  630. package/src/components/block-tools/style.scss +4 -35
  631. package/src/components/block-types-list/style.scss +0 -3
  632. package/src/components/border-radius-control/index.js +1 -0
  633. package/src/components/border-radius-control/test/utils.js +216 -0
  634. package/src/components/border-radius-control/utils.js +18 -10
  635. package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
  636. package/src/components/colors/test/utils.js +41 -0
  637. package/src/components/colors/utils.js +9 -5
  638. package/src/components/colors-gradients/control.js +70 -110
  639. package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
  640. package/src/components/colors-gradients/style.scss +10 -18
  641. package/src/components/colors-gradients/test/control.js +41 -66
  642. package/src/components/contrast-checker/index.js +14 -10
  643. package/src/components/copy-handler/index.js +6 -1
  644. package/src/components/default-block-appender/index.js +2 -2
  645. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  646. package/src/components/duotone-control/index.js +49 -41
  647. package/src/components/duotone-control/style.scss +27 -12
  648. package/src/components/editor-styles/index.js +7 -4
  649. package/src/components/font-appearance-control/index.js +41 -33
  650. package/src/components/font-appearance-control/style.scss +1 -1
  651. package/src/components/iframe/index.js +4 -4
  652. package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
  653. package/src/components/image-editor/constants.js +6 -0
  654. package/src/components/image-editor/context.js +56 -0
  655. package/src/components/image-editor/cropper.js +74 -0
  656. package/src/components/image-editor/form-controls.js +22 -0
  657. package/src/components/image-editor/index.js +52 -0
  658. package/src/components/image-editor/rotation-button.js +24 -0
  659. package/src/components/image-editor/use-save-image.js +97 -0
  660. package/src/components/image-editor/use-transform-image.js +162 -0
  661. package/src/components/image-editor/zoom-dropdown.js +40 -0
  662. package/src/components/image-size-control/use-dimension-handler.js +18 -1
  663. package/src/components/index.js +7 -6
  664. package/src/components/index.native.js +1 -4
  665. package/src/components/inner-blocks/button-block-appender.js +9 -0
  666. package/src/components/inner-blocks/index.js +8 -4
  667. package/src/components/inner-blocks/index.native.js +7 -4
  668. package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
  669. package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
  670. package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
  671. package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
  672. package/src/components/inserter/block-patterns-tab.js +107 -73
  673. package/src/components/inserter/block-types-tab.native.js +3 -15
  674. package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
  675. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  676. package/src/components/inserter/index.js +15 -3
  677. package/src/components/inserter/index.native.js +2 -19
  678. package/src/components/inserter/library.js +2 -0
  679. package/src/components/inserter/menu.js +4 -1
  680. package/src/components/inserter/menu.native.js +9 -14
  681. package/src/components/inserter/pattern-panel.js +33 -16
  682. package/src/components/inserter/preview-panel.js +1 -1
  683. package/src/components/inserter/quick-inserter.js +1 -1
  684. package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
  685. package/src/components/inserter/search-results.native.js +5 -15
  686. package/src/components/inserter/style.scss +80 -16
  687. package/src/components/inserter/test/block-types-tab.native.js +1 -1
  688. package/src/components/inserter/test/fixtures/index.native.js +12 -0
  689. package/src/components/inserter/utils.native.js +35 -0
  690. package/src/components/inserter-list-item/style.scss +4 -2
  691. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  692. package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
  693. package/src/components/inspector-controls/fill.js +23 -2
  694. package/src/components/inspector-controls/groups.js +8 -0
  695. package/src/components/inspector-controls/slot.js +15 -0
  696. package/src/components/letter-spacing-control/index.js +12 -6
  697. package/src/components/link-control/README.md +47 -14
  698. package/src/components/link-control/index.js +102 -31
  699. package/src/components/link-control/link-preview.js +53 -20
  700. package/src/components/link-control/search-input.js +21 -7
  701. package/src/components/link-control/style.scss +66 -19
  702. package/src/components/link-control/test/index.js +311 -4
  703. package/src/components/list-view/block-contents.js +17 -38
  704. package/src/components/list-view/block.js +73 -84
  705. package/src/components/list-view/branch.js +123 -94
  706. package/src/components/list-view/index.js +82 -30
  707. package/src/components/list-view/leaf.js +2 -2
  708. package/src/components/list-view/list-item.js +5 -4
  709. package/src/components/list-view/style.scss +70 -33
  710. package/src/components/list-view/use-list-view-client-ids.js +9 -68
  711. package/src/components/media-placeholder/index.js +26 -19
  712. package/src/components/media-replace-flow/README.md +7 -0
  713. package/src/components/media-replace-flow/index.js +4 -1
  714. package/src/components/media-upload/README.md +1 -1
  715. package/src/components/navigable-toolbar/index.js +1 -4
  716. package/src/components/observe-typing/index.js +3 -2
  717. package/src/components/plain-text/index.native.js +26 -4
  718. package/src/components/rich-text/embed-handler-picker.native.js +68 -0
  719. package/src/components/rich-text/format-edit.js +36 -2
  720. package/src/components/rich-text/format-toolbar/index.js +25 -6
  721. package/src/components/rich-text/index.js +12 -8
  722. package/src/components/rich-text/index.native.js +35 -1
  723. package/src/components/rich-text/use-paste-handler.js +30 -12
  724. package/src/components/rich-text/utils.js +16 -0
  725. package/src/components/skip-to-selected-block/README.md +39 -0
  726. package/src/components/typewriter/index.js +3 -2
  727. package/src/components/url-input/index.js +26 -10
  728. package/src/components/use-moving-animation/index.js +9 -8
  729. package/src/components/use-on-block-drop/index.js +5 -1
  730. package/src/components/use-setting/index.js +49 -11
  731. package/src/components/writing-flow/use-multi-selection.js +6 -0
  732. package/src/components/writing-flow/use-tab-nav.js +17 -3
  733. package/src/hooks/align.js +19 -10
  734. package/src/hooks/anchor.js +2 -2
  735. package/src/hooks/border.js +8 -11
  736. package/src/hooks/color-panel.js +4 -1
  737. package/src/hooks/color.js +7 -4
  738. package/src/hooks/dimensions.js +48 -59
  739. package/src/hooks/duotone.js +68 -19
  740. package/src/hooks/font-appearance.js +38 -7
  741. package/src/hooks/font-family.js +129 -33
  742. package/src/hooks/font-size.js +42 -6
  743. package/src/hooks/gap.js +2 -1
  744. package/src/hooks/index.js +2 -0
  745. package/src/hooks/index.native.js +1 -0
  746. package/src/hooks/layout.scss +8 -0
  747. package/src/hooks/letter-spacing.js +35 -7
  748. package/src/hooks/line-height.js +37 -9
  749. package/src/hooks/lock.js +34 -0
  750. package/src/hooks/margin.js +1 -1
  751. package/src/hooks/padding.js +1 -1
  752. package/src/hooks/style.js +15 -11
  753. package/src/hooks/text-decoration.js +34 -6
  754. package/src/hooks/text-transform.js +34 -6
  755. package/src/hooks/typography.js +165 -15
  756. package/src/hooks/typography.scss +16 -0
  757. package/src/hooks/use-cached-truthy.js +20 -0
  758. package/src/index.js +1 -0
  759. package/src/layouts/flex.js +179 -50
  760. package/src/layouts/flow.js +54 -8
  761. package/src/store/actions.js +239 -377
  762. package/src/store/defaults.native.js +12 -0
  763. package/src/store/index.js +1 -2
  764. package/src/store/reducer.js +54 -18
  765. package/src/store/selectors.js +173 -47
  766. package/src/store/test/actions.js +407 -705
  767. package/src/store/test/reducer.js +22 -54
  768. package/src/store/test/selectors.js +79 -21
  769. package/src/style.scss +2 -1
  770. package/src/utils/index.js +1 -0
  771. package/src/utils/parse-css-unit-to-px.js +43 -1
  772. package/src/utils/test/parse-css-unit-to-px.js +148 -165
  773. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  774. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  775. package/tsconfig.tsbuildinfo +1 -1
  776. package/build/components/duotone-control/duotone-picker-popover.js +0 -44
  777. package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
  778. package/build/components/list-view/block-slot.js +0 -121
  779. package/build/components/list-view/block-slot.js.map +0 -1
  780. package/build/components/list-view/editor.js +0 -35
  781. package/build/components/list-view/editor.js.map +0 -1
  782. package/build/components/text-decoration-and-transform/index.js +0 -39
  783. package/build/components/text-decoration-and-transform/index.js.map +0 -1
  784. package/build/store/controls.js +0 -44
  785. package/build/store/controls.js.map +0 -1
  786. package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
  787. package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
  788. package/build-module/components/list-view/block-slot.js +0 -96
  789. package/build-module/components/list-view/block-slot.js.map +0 -1
  790. package/build-module/components/list-view/editor.js +0 -25
  791. package/build-module/components/list-view/editor.js.map +0 -1
  792. package/build-module/components/text-decoration-and-transform/index.js +0 -30
  793. package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
  794. package/build-module/store/controls.js +0 -32
  795. package/build-module/store/controls.js.map +0 -1
  796. package/src/components/duotone-control/duotone-picker-popover.js +0 -36
  797. package/src/components/list-view/block-slot.js +0 -120
  798. package/src/components/list-view/editor.js +0 -29
  799. package/src/components/text-decoration-and-transform/index.js +0 -36
  800. package/src/components/text-decoration-and-transform/style.scss +0 -3
  801. package/src/store/controls.js +0 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"names":["Disabled","useResizeObserver","pure","useRefEffect","useSelect","BlockList","Iframe","EditorStyles","store","MemoizedBlockList","AutoBlockPreview","viewportWidth","__experimentalPadding","containerResizeListener","width","containerWidth","contentResizeListener","height","contentHeight","styles","select","getSettings","scale","transform","bodyElement","ownerDocument","documentElement","style","position","padding","pointerEvents"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,uBAAzB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,EAAkCC,YAAlC,QAAsD,oBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,SAASC,KAAT,QAAsB,aAAtB,C,CAEA;;AACA,IAAIC,iBAAJ;;AAEA,SAASC,gBAAT,CAA2B;AAAEC,EAAAA,aAAF;AAAiBC,EAAAA;AAAjB,CAA3B,EAAsE;AACrE,QAAM,CACLC,uBADK,EAEL;AAAEC,IAAAA,KAAK,EAAEC;AAAT,GAFK,IAGFd,iBAAiB,EAHrB;AAIA,QAAM,CACLe,qBADK,EAEL;AAAEC,IAAAA,MAAM,EAAEC;AAAV,GAFK,IAGFjB,iBAAiB,EAHrB;AAIA,QAAMkB,MAAM,GAAGf,SAAS,CAAIgB,MAAF,IAAc;AACvC,WAAOA,MAAM,CAAEZ,KAAF,CAAN,CAAgBa,WAAhB,GAA8BF,MAArC;AACA,GAFuB,CAAxB,CATqE,CAarE;;AACAV,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAIP,IAAI,CAAEG,SAAF,CAA7C;AAEA,QAAMiB,KAAK,GAAGP,cAAc,GAAGJ,aAA/B;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGE,uBADH,EAEC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,KAAK,EAAG;AACPU,MAAAA,SAAS,EAAG,SAASD,KAAO,GADrB;AAEPL,MAAAA,MAAM,EAAEC,aAAa,GAAGI;AAFjB;AAFT,KAOC,cAAC,MAAD;AACC,IAAA,IAAI,EAAG,cAAC,YAAD;AAAc,MAAA,MAAM,EAAGH;AAAvB,MADR;AAEC,IAAA,UAAU,EAAGhB,YAAY,CAAIqB,WAAF,IAAmB;AAC7C,YAAM;AACLC,QAAAA,aAAa,EAAE;AAAEC,UAAAA;AAAF;AADV,UAEFF,WAFJ;AAGAE,MAAAA,eAAe,CAACC,KAAhB,CAAsBC,QAAtB,GAAiC,UAAjC;AACAF,MAAAA,eAAe,CAACC,KAAhB,CAAsBb,KAAtB,GAA8B,MAA9B;AACAU,MAAAA,WAAW,CAACG,KAAZ,CAAkBE,OAAlB,GACCjB,qBAAqB,GAAG,IADzB;AAEA,KARwB,EAQtB,EARsB,CAF1B;AAWC,uBAXD;AAYC,IAAA,QAAQ,EAAG,CAAC,CAZb;AAaC,IAAA,KAAK,EAAG;AACPgB,MAAAA,QAAQ,EAAE,UADH;AAEPd,MAAAA,KAAK,EAAEH,aAFA;AAGPM,MAAAA,MAAM,EAAEC,aAHD;AAIPY,MAAAA,aAAa,EAAE;AAJR;AAbT,KAoBGd,qBApBH,EAqBC,cAAC,iBAAD;AAAmB,IAAA,cAAc,EAAG;AAApC,IArBD,CAPD,CAFD,CADD;AAoCA;;AAED,eAAeN,gBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nfunction AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {\n\tconst [\n\t\tcontainerResizeListener,\n\t\t{ width: containerWidth },\n\t] = useResizeObserver();\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\tconst styles = useSelect( ( select ) => {\n\t\treturn select( store ).getSettings().styles;\n\t} );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || pure( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\n\treturn (\n\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t{ containerResizeListener }\n\t\t\t<Disabled\n\t\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\t\tstyle={ {\n\t\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t\theight: contentHeight * scale,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Iframe\n\t\t\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t\t} = bodyElement;\n\t\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\t\tdocumentElement.style.width = '100%';\n\t\t\t\t\t\tbodyElement.style.padding =\n\t\t\t\t\t\t\t__experimentalPadding + 'px';\n\t\t\t\t\t}, [] ) }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\t\theight: contentHeight,\n\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t\t</Iframe>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n\nexport default AutoBlockPreview;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-preview/auto.js"],"names":["Disabled","useResizeObserver","pure","useRefEffect","useSelect","BlockList","Iframe","EditorStyles","store","MemoizedBlockList","AutoBlockPreview","viewportWidth","__experimentalPadding","containerResizeListener","width","containerWidth","contentResizeListener","height","contentHeight","styles","select","getSettings","scale","transform","bodyElement","ownerDocument","documentElement","style","position","padding","pointerEvents"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,uBAAzB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,EAAkCC,YAAlC,QAAsD,oBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,SAASC,KAAT,QAAsB,aAAtB,C,CAEA;;AACA,IAAIC,iBAAJ;;AAEA,SAASC,gBAAT,CAA2B;AAAEC,EAAAA,aAAF;AAAiBC,EAAAA;AAAjB,CAA3B,EAAsE;AACrE,QAAM,CACLC,uBADK,EAEL;AAAEC,IAAAA,KAAK,EAAEC;AAAT,GAFK,IAGFd,iBAAiB,EAHrB;AAIA,QAAM,CACLe,qBADK,EAEL;AAAEC,IAAAA,MAAM,EAAEC;AAAV,GAFK,IAGFjB,iBAAiB,EAHrB;AAIA,QAAMkB,MAAM,GAAGf,SAAS,CAAIgB,MAAF,IAAc;AACvC,WAAOA,MAAM,CAAEZ,KAAF,CAAN,CAAgBa,WAAhB,GAA8BF,MAArC;AACA,GAFuB,EAErB,EAFqB,CAAxB,CATqE,CAarE;;AACAV,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAIP,IAAI,CAAEG,SAAF,CAA7C;AAEA,QAAMiB,KAAK,GAAGP,cAAc,GAAGJ,aAA/B;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGE,uBADH,EAEC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,KAAK,EAAG;AACPU,MAAAA,SAAS,EAAG,SAASD,KAAO,GADrB;AAEPL,MAAAA,MAAM,EAAEC,aAAa,GAAGI;AAFjB;AAFT,KAOC,cAAC,MAAD;AACC,IAAA,IAAI,EAAG,cAAC,YAAD;AAAc,MAAA,MAAM,EAAGH;AAAvB,MADR;AAEC,IAAA,UAAU,EAAGhB,YAAY,CAAIqB,WAAF,IAAmB;AAC7C,YAAM;AACLC,QAAAA,aAAa,EAAE;AAAEC,UAAAA;AAAF;AADV,UAEFF,WAFJ;AAGAE,MAAAA,eAAe,CAACC,KAAhB,CAAsBC,QAAtB,GAAiC,UAAjC;AACAF,MAAAA,eAAe,CAACC,KAAhB,CAAsBb,KAAtB,GAA8B,MAA9B;AACAU,MAAAA,WAAW,CAACG,KAAZ,CAAkBE,OAAlB,GACCjB,qBAAqB,GAAG,IADzB;AAEA,KARwB,EAQtB,EARsB,CAF1B;AAWC,uBAXD;AAYC,IAAA,QAAQ,EAAG,CAAC,CAZb;AAaC,IAAA,KAAK,EAAG;AACPgB,MAAAA,QAAQ,EAAE,UADH;AAEPd,MAAAA,KAAK,EAAEH,aAFA;AAGPM,MAAAA,MAAM,EAAEC,aAHD;AAIPY,MAAAA,aAAa,EAAE;AAJR;AAbT,KAoBGd,qBApBH,EAqBC,cAAC,iBAAD;AAAmB,IAAA,cAAc,EAAG;AAApC,IArBD,CAPD,CAFD,CADD;AAoCA;;AAED,eAAeN,gBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../block-list';\nimport Iframe from '../iframe';\nimport EditorStyles from '../editor-styles';\nimport { store } from '../../store';\n\n// This is used to avoid rendering the block list if the sizes change.\nlet MemoizedBlockList;\n\nfunction AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {\n\tconst [\n\t\tcontainerResizeListener,\n\t\t{ width: containerWidth },\n\t] = useResizeObserver();\n\tconst [\n\t\tcontentResizeListener,\n\t\t{ height: contentHeight },\n\t] = useResizeObserver();\n\tconst styles = useSelect( ( select ) => {\n\t\treturn select( store ).getSettings().styles;\n\t}, [] );\n\n\t// Initialize on render instead of module top level, to avoid circular dependency issues.\n\tMemoizedBlockList = MemoizedBlockList || pure( BlockList );\n\n\tconst scale = containerWidth / viewportWidth;\n\n\treturn (\n\t\t<div className=\"block-editor-block-preview__container\">\n\t\t\t{ containerResizeListener }\n\t\t\t<Disabled\n\t\t\t\tclassName=\"block-editor-block-preview__content\"\n\t\t\t\tstyle={ {\n\t\t\t\t\ttransform: `scale(${ scale })`,\n\t\t\t\t\theight: contentHeight * scale,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Iframe\n\t\t\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\t\t\tcontentRef={ useRefEffect( ( bodyElement ) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\townerDocument: { documentElement },\n\t\t\t\t\t\t} = bodyElement;\n\t\t\t\t\t\tdocumentElement.style.position = 'absolute';\n\t\t\t\t\t\tdocumentElement.style.width = '100%';\n\t\t\t\t\t\tbodyElement.style.padding =\n\t\t\t\t\t\t\t__experimentalPadding + 'px';\n\t\t\t\t\t}, [] ) }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\twidth: viewportWidth,\n\t\t\t\t\t\theight: contentHeight,\n\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t<MemoizedBlockList renderAppender={ false } />\n\t\t\t\t</Iframe>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n\nexport default AutoBlockPreview;\n"]}
@@ -5,7 +5,7 @@ import { createElement } from "@wordpress/element";
5
5
  * WordPress dependencies
6
6
  */
7
7
  import { InspectorControls, useSetting } from '@wordpress/block-editor';
8
- import { BottomSheet, ColorSettings, FocalPointSettingsPanel, LinkPickerScreen } from '@wordpress/components';
8
+ import { BottomSheet, ColorSettings, FocalPointSettingsPanel, ImageLinkDestinationsScreen, LinkPickerScreen } from '@wordpress/components';
9
9
  import { compose } from '@wordpress/compose';
10
10
  import { withDispatch, withSelect } from '@wordpress/data';
11
11
  /**
@@ -18,7 +18,8 @@ export const blockSettingsScreens = {
18
18
  settings: 'Settings',
19
19
  color: 'Color',
20
20
  focalPoint: 'FocalPoint',
21
- linkPicker: 'linkPicker'
21
+ linkPicker: 'linkPicker',
22
+ imageLinkDestinations: 'imageLinkDestinations'
22
23
  };
23
24
 
24
25
  function BottomSheetSettings({
@@ -57,7 +58,9 @@ function BottomSheetSettings({
57
58
  isScrollable: true
58
59
  }, createElement(LinkPickerScreen, {
59
60
  returnScreenName: blockSettingsScreens.settings
60
- }))));
61
+ })), createElement(BottomSheet.NavigationScreen, {
62
+ name: blockSettingsScreens.imageLinkDestinations
63
+ }, createElement(ImageLinkDestinationsScreen, props))));
61
64
  }
62
65
 
63
66
  export default compose([withSelect(select => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings/container.native.js"],"names":["InspectorControls","useSetting","BottomSheet","ColorSettings","FocalPointSettingsPanel","LinkPickerScreen","compose","withDispatch","withSelect","styles","store","blockEditorStore","blockSettingsScreens","settings","color","focalPoint","linkPicker","BottomSheetSettings","editorSidebarOpened","closeGeneralSidebar","props","colorSettings","colors","gradients","content","SubSheet","screenName","select","isEditorSidebarOpened","getSettings","dispatch"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InspectorControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tBottomSheet,\n\tColorSettings,\n\tFocalPointSettingsPanel,\n\tLinkPickerScreen,\n} from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withDispatch, withSelect } from '@wordpress/data';\n/**\n * Internal dependencies\n */\nimport styles from './container.native.scss';\nimport { store as blockEditorStore } from '../../store';\n\nexport const blockSettingsScreens = {\n\tsettings: 'Settings',\n\tcolor: 'Color',\n\tfocalPoint: 'FocalPoint',\n\tlinkPicker: 'linkPicker',\n};\n\nfunction BottomSheetSettings( {\n\teditorSidebarOpened,\n\tcloseGeneralSidebar,\n\tsettings,\n\t...props\n} ) {\n\tconst colorSettings = {\n\t\tcolors: useSetting( 'color.palette' ) || settings.colors,\n\t\tgradients: useSetting( 'color.gradients' ) || settings.gradients,\n\t};\n\n\treturn (\n\t\t<BottomSheet\n\t\t\tisVisible={ editorSidebarOpened }\n\t\t\tonClose={ closeGeneralSidebar }\n\t\t\thideHeader\n\t\t\tcontentStyle={ styles.content }\n\t\t\thasNavigation\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.settings }\n\t\t\t\t>\n\t\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ BottomSheet.SubSheet.screenName }\n\t\t\t\t>\n\t\t\t\t\t<BottomSheet.SubSheet.Slot />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.color }\n\t\t\t\t>\n\t\t\t\t\t<ColorSettings defaultSettings={ colorSettings } />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.focalPoint }\n\t\t\t\t\tfullScreen\n\t\t\t\t>\n\t\t\t\t\t<FocalPointSettingsPanel />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.linkPicker }\n\t\t\t\t\tfullScreen\n\t\t\t\t\tisScrollable\n\t\t\t\t>\n\t\t\t\t\t<LinkPickerScreen\n\t\t\t\t\t\treturnScreenName={ blockSettingsScreens.settings }\n\t\t\t\t\t/>\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t</BottomSheet.NavigationContainer>\n\t\t</BottomSheet>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { isEditorSidebarOpened } = select( 'core/edit-post' );\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tsettings: getSettings(),\n\t\t\teditorSidebarOpened: isEditorSidebarOpened(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { closeGeneralSidebar } = dispatch( 'core/edit-post' );\n\n\t\treturn {\n\t\t\tcloseGeneralSidebar,\n\t\t};\n\t} ),\n] )( BottomSheetSettings );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings/container.native.js"],"names":["InspectorControls","useSetting","BottomSheet","ColorSettings","FocalPointSettingsPanel","ImageLinkDestinationsScreen","LinkPickerScreen","compose","withDispatch","withSelect","styles","store","blockEditorStore","blockSettingsScreens","settings","color","focalPoint","linkPicker","imageLinkDestinations","BottomSheetSettings","editorSidebarOpened","closeGeneralSidebar","props","colorSettings","colors","gradients","content","SubSheet","screenName","select","isEditorSidebarOpened","getSettings","dispatch"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InspectorControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tBottomSheet,\n\tColorSettings,\n\tFocalPointSettingsPanel,\n\tImageLinkDestinationsScreen,\n\tLinkPickerScreen,\n} from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withDispatch, withSelect } from '@wordpress/data';\n/**\n * Internal dependencies\n */\nimport styles from './container.native.scss';\nimport { store as blockEditorStore } from '../../store';\n\nexport const blockSettingsScreens = {\n\tsettings: 'Settings',\n\tcolor: 'Color',\n\tfocalPoint: 'FocalPoint',\n\tlinkPicker: 'linkPicker',\n\timageLinkDestinations: 'imageLinkDestinations',\n};\n\nfunction BottomSheetSettings( {\n\teditorSidebarOpened,\n\tcloseGeneralSidebar,\n\tsettings,\n\t...props\n} ) {\n\tconst colorSettings = {\n\t\tcolors: useSetting( 'color.palette' ) || settings.colors,\n\t\tgradients: useSetting( 'color.gradients' ) || settings.gradients,\n\t};\n\n\treturn (\n\t\t<BottomSheet\n\t\t\tisVisible={ editorSidebarOpened }\n\t\t\tonClose={ closeGeneralSidebar }\n\t\t\thideHeader\n\t\t\tcontentStyle={ styles.content }\n\t\t\thasNavigation\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.settings }\n\t\t\t\t>\n\t\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ BottomSheet.SubSheet.screenName }\n\t\t\t\t>\n\t\t\t\t\t<BottomSheet.SubSheet.Slot />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.color }\n\t\t\t\t>\n\t\t\t\t\t<ColorSettings defaultSettings={ colorSettings } />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.focalPoint }\n\t\t\t\t\tfullScreen\n\t\t\t\t>\n\t\t\t\t\t<FocalPointSettingsPanel />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.linkPicker }\n\t\t\t\t\tfullScreen\n\t\t\t\t\tisScrollable\n\t\t\t\t>\n\t\t\t\t\t<LinkPickerScreen\n\t\t\t\t\t\treturnScreenName={ blockSettingsScreens.settings }\n\t\t\t\t\t/>\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tname={ blockSettingsScreens.imageLinkDestinations }\n\t\t\t\t>\n\t\t\t\t\t<ImageLinkDestinationsScreen { ...props } />\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t</BottomSheet.NavigationContainer>\n\t\t</BottomSheet>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { isEditorSidebarOpened } = select( 'core/edit-post' );\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tsettings: getSettings(),\n\t\t\teditorSidebarOpened: isEditorSidebarOpened(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { closeGeneralSidebar } = dispatch( 'core/edit-post' );\n\n\t\treturn {\n\t\t\tcloseGeneralSidebar,\n\t\t};\n\t} ),\n] )( BottomSheetSettings );\n"]}
@@ -9,12 +9,12 @@ import { castArray, flow, noop } from 'lodash';
9
9
  * WordPress dependencies
10
10
  */
11
11
 
12
- import { __ } from '@wordpress/i18n';
12
+ import { __, sprintf } from '@wordpress/i18n';
13
13
  import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
14
14
  import { useSelect } from '@wordpress/data';
15
15
  import { moreVertical } from '@wordpress/icons';
16
16
  import { Children, cloneElement, useCallback } from '@wordpress/element';
17
- import { serialize } from '@wordpress/blocks';
17
+ import { serialize, store as blocksStore } from '@wordpress/blocks';
18
18
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
19
19
  import { useCopyToClipboard } from '@wordpress/compose';
20
20
  /**
@@ -52,7 +52,24 @@ export function BlockSettingsDropdown({
52
52
  const blockClientIds = castArray(clientIds);
53
53
  const count = blockClientIds.length;
54
54
  const firstBlockClientId = blockClientIds[0];
55
- const onlyBlock = useSelect(select => 1 === select(blockEditorStore).getBlockCount(), []);
55
+ const {
56
+ onlyBlock,
57
+ title
58
+ } = useSelect(select => {
59
+ var _getBlockType;
60
+
61
+ const {
62
+ getBlockCount,
63
+ getBlockName
64
+ } = select(blockEditorStore);
65
+ const {
66
+ getBlockType
67
+ } = select(blocksStore);
68
+ return {
69
+ onlyBlock: 1 === getBlockCount(),
70
+ title: (_getBlockType = getBlockType(getBlockName(firstBlockClientId))) === null || _getBlockType === void 0 ? void 0 : _getBlockType.title
71
+ };
72
+ }, [firstBlockClientId]);
56
73
  const shortcuts = useSelect(select => {
57
74
  const {
58
75
  getShortcutRepresentation
@@ -71,14 +88,18 @@ export function BlockSettingsDropdown({
71
88
  __experimentalSelectBlock(ids[0]);
72
89
  }
73
90
  } : noop, [__experimentalSelectBlock]);
74
- const removeBlockLabel = count === 1 ? __('Remove block') : __('Remove blocks');
91
+ const label = sprintf(
92
+ /* translators: %s: block name */
93
+ __('Remove %s'), title);
94
+ const removeBlockLabel = count === 1 ? label : __('Remove blocks');
75
95
  return createElement(BlockActions, {
76
96
  clientIds: clientIds,
77
97
  __experimentalUpdateSelection: !__experimentalSelectBlock
78
98
  }, ({
79
99
  canDuplicate,
80
100
  canInsertDefaultBlock,
81
- isLocked,
101
+ canMove,
102
+ canRemove,
82
103
  onDuplicate,
83
104
  onInsertAfter,
84
105
  onInsertBefore,
@@ -112,7 +133,7 @@ export function BlockSettingsDropdown({
112
133
  }, __('Insert before')), createElement(MenuItem, {
113
134
  onClick: flow(onClose, onInsertAfter),
114
135
  shortcut: shortcuts.insertAfter
115
- }, __('Insert after'))), !isLocked && !onlyBlock && createElement(MenuItem, {
136
+ }, __('Insert after'))), canMove && !onlyBlock && createElement(MenuItem, {
116
137
  onClick: flow(onClose, onMoveTo)
117
138
  }, __('Move to')), count === 1 && createElement(BlockModeToggle, {
118
139
  clientId: firstBlockClientId,
@@ -126,7 +147,7 @@ export function BlockSettingsDropdown({
126
147
  onClose
127
148
  }) : Children.map(child => cloneElement(child, {
128
149
  onClose
129
- })), createElement(MenuGroup, null, !isLocked && createElement(MenuItem, {
150
+ })), canRemove && createElement(MenuGroup, null, createElement(MenuItem, {
130
151
  onClick: flow(onClose, onRemove, updateSelection),
131
152
  shortcut: shortcuts.remove
132
153
  }, removeBlockLabel)))));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["castArray","flow","noop","__","DropdownMenu","MenuGroup","MenuItem","useSelect","moreVertical","Children","cloneElement","useCallback","serialize","store","keyboardShortcutsStore","useCopyToClipboard","BlockActions","BlockModeToggle","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","length","firstBlockClientId","onlyBlock","select","getBlockCount","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","updateSelection","clientIdsPromise","ids","removeBlockLabel","canDuplicate","canInsertDefaultBlock","isLocked","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","onClose","map","child"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow, noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\n\nimport { Children, cloneElement, useCallback } from '@wordpress/element';\nimport { serialize } from '@wordpress/blocks';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockModeToggle from './block-mode-toggle';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nfunction CopyMenuItem( { blocks, onCopy } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\treturn <MenuItem ref={ ref }>{ __( 'Copy' ) }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t...props\n} ) {\n\tconst blockClientIds = castArray( clientIds );\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst onlyBlock = useSelect(\n\t\t( select ) => 1 === select( blockEditorStore ).getBlockCount(),\n\t\t[]\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 updateSelection = 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 removeBlockLabel =\n\t\tcount === 1 ? __( 'Remove block' ) : __( 'Remove blocks' );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tisLocked,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelection\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{ ! isLocked && ! 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<MenuGroup>\n\t\t\t\t\t\t\t\t{ ! isLocked && (\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\tupdateSelection\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) }\n\t\t\t\t\t\t\t</MenuGroup>\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","noop","__","sprintf","DropdownMenu","MenuGroup","MenuItem","useSelect","moreVertical","Children","cloneElement","useCallback","serialize","store","blocksStore","keyboardShortcutsStore","useCopyToClipboard","BlockActions","BlockModeToggle","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","POPOVER_PROPS","className","position","isAlternate","CopyMenuItem","blocks","onCopy","ref","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","props","blockClientIds","count","length","firstBlockClientId","onlyBlock","title","select","getBlockCount","getBlockName","getBlockType","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","updateSelection","clientIdsPromise","ids","label","removeBlockLabel","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onMoveTo","onClose","map","child"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, flow, noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\n\nimport { Children, cloneElement, useCallback } from '@wordpress/element';\nimport { serialize, store as blocksStore } from '@wordpress/blocks';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockModeToggle from './block-mode-toggle';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nfunction CopyMenuItem( { blocks, onCopy } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\treturn <MenuItem ref={ ref }>{ __( 'Copy' ) }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t...props\n} ) {\n\tconst blockClientIds = castArray( clientIds );\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst { onlyBlock, title } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockCount, getBlockName } = select( blockEditorStore );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\treturn {\n\t\t\t\tonlyBlock: 1 === getBlockCount(),\n\t\t\t\ttitle: getBlockType( getBlockName( firstBlockClientId ) )\n\t\t\t\t\t?.title,\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 updateSelection = 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 label = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Remove %s' ),\n\t\ttitle\n\t);\n\tconst removeBlockLabel = count === 1 ? label : __( 'Remove blocks' );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ flow(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelection\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\tupdateSelection\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"]}
@@ -26,13 +26,19 @@ const BlockSettingsMenuControlsSlot = ({
26
26
  fillProps,
27
27
  clientIds = null
28
28
  }) => {
29
- const selectedBlocks = useSelect(select => {
29
+ const {
30
+ selectedBlocks,
31
+ selectedClientIds
32
+ } = useSelect(select => {
30
33
  const {
31
34
  getBlocksByClientId,
32
35
  getSelectedBlockClientIds
33
36
  } = select(blockEditorStore);
34
37
  const ids = clientIds !== null ? clientIds : getSelectedBlockClientIds();
35
- return map(compact(getBlocksByClientId(ids)), block => block.name);
38
+ return {
39
+ selectedBlocks: map(compact(getBlocksByClientId(ids)), block => block.name),
40
+ selectedClientIds: ids
41
+ };
36
42
  }, [clientIds]); // Check if current selection of blocks is Groupable or Ungroupable
37
43
  // and pass this props down to ConvertToGroupButton.
38
44
 
@@ -44,7 +50,8 @@ const BlockSettingsMenuControlsSlot = ({
44
50
  const showConvertToGroupButton = isGroupable || isUngroupable;
45
51
  return createElement(Slot, {
46
52
  fillProps: { ...fillProps,
47
- selectedBlocks
53
+ selectedBlocks,
54
+ selectedClientIds
48
55
  }
49
56
  }, fills => {
50
57
  if ((fills === null || fills === void 0 ? void 0 : fills.length) > 0 || showConvertToGroupButton) {
@@ -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","store","blockEditorStore","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","selectedBlocks","select","getBlocksByClientId","getSelectedBlockClientIds","ids","block","name","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","fills","length","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,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,MAAM;AAAEC,EAAAA,IAAF;AAAQC,EAAAA;AAAR,IAAiBV,cAAc,CAAE,2BAAF,CAArC;;AAEA,MAAMW,6BAA6B,GAAG,CAAE;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,SAAS,GAAG;AAAzB,CAAF,KAAuC;AAC5E,QAAMC,cAAc,GAAGV,SAAS,CAC7BW,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,mBAAF;AAAuBC,MAAAA;AAAvB,QAAqDF,MAAM,CAChEP,gBADgE,CAAjE;AAGA,UAAMU,GAAG,GACRL,SAAS,KAAK,IAAd,GAAqBA,SAArB,GAAiCI,yBAAyB,EAD3D;AAEA,WAAOlB,GAAG,CACTD,OAAO,CAAEkB,mBAAmB,CAAEE,GAAF,CAArB,CADE,EAEPC,KAAF,IAAaA,KAAK,CAACC,IAFV,CAAV;AAIA,GAX8B,EAY/B,CAAEP,SAAF,CAZ+B,CAAhC,CAD4E,CAgB5E;AACA;;AACA,QAAMQ,yBAAyB,GAAGhB,4BAA4B,EAA9D;AACA,QAAM;AAAEiB,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAiCF,yBAAvC;AACA,QAAMG,wBAAwB,GAAGF,WAAW,IAAIC,aAAhD;AACA,SACC,cAAC,IAAD;AAAM,IAAA,SAAS,EAAG,EAAE,GAAGX,SAAL;AAAgBE,MAAAA;AAAhB;AAAlB,KACKW,KAAF,IAAa;AACd,QAAK,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,MAAP,IAAgB,CAAhB,IAAqBF,wBAA1B,EAAqD;AACpD,aACC,cAAC,SAAD,QACGC,KADH,EAEC,cAAC,oBAAD,eACMJ,yBADN;AAEC,QAAA,OAAO,EAAGT,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEe;AAFtB,SAFD,CADD;AASA;AACD,GAbF,CADD;AAiBA,CAtCD;AAwCA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,yBAAT,CAAoC,EAAE,GAAGC;AAAL,CAApC,EAAmD;AAClD,SACC,cAAC,aAAD;AAAe,IAAA,QAAQ,EAAGC;AAA1B,KACC,cAAC,IAAD,EAAWD,KAAX,CADD,CADD;AAKA;;AAEDD,yBAAyB,CAAClB,IAA1B,GAAiCC,6BAAjC;AAEA,eAAeiB,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 { store as blockEditorStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst selectedBlocks = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocksByClientId, getSelectedBlockClientIds } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn map(\n\t\t\t\tcompact( getBlocksByClientId( ids ) ),\n\t\t\t\t( block ) => block.name\n\t\t\t);\n\t\t},\n\t\t[ clientIds ]\n\t);\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 = isGroupable || isUngroupable;\n\treturn (\n\t\t<Slot fillProps={ { ...fillProps, selectedBlocks } }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( fills?.length > 0 || showConvertToGroupButton ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ fills }\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</MenuGroup>\n\t\t\t\t\t);\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":["compact","map","createSlotFill","MenuGroup","__experimentalStyleProvider","StyleProvider","useSelect","useConvertToGroupButtonProps","ConvertToGroupButton","store","blockEditorStore","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","selectedBlocks","selectedClientIds","select","getBlocksByClientId","getSelectedBlockClientIds","ids","block","name","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","fills","length","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,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,MAAM;AAAEC,EAAAA,IAAF;AAAQC,EAAAA;AAAR,IAAiBV,cAAc,CAAE,2BAAF,CAArC;;AAEA,MAAMW,6BAA6B,GAAG,CAAE;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,SAAS,GAAG;AAAzB,CAAF,KAAuC;AAC5E,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,MAAwCX,SAAS,CACpDY,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,mBAAF;AAAuBC,MAAAA;AAAvB,QAAqDF,MAAM,CAChER,gBADgE,CAAjE;AAGA,UAAMW,GAAG,GACRN,SAAS,KAAK,IAAd,GAAqBA,SAArB,GAAiCK,yBAAyB,EAD3D;AAEA,WAAO;AACNJ,MAAAA,cAAc,EAAEf,GAAG,CAClBD,OAAO,CAAEmB,mBAAmB,CAAEE,GAAF,CAArB,CADW,EAEhBC,KAAF,IAAaA,KAAK,CAACC,IAFD,CADb;AAKNN,MAAAA,iBAAiB,EAAEI;AALb,KAAP;AAOA,GAdqD,EAetD,CAAEN,SAAF,CAfsD,CAAvD,CAD4E,CAmB5E;AACA;;AACA,QAAMS,yBAAyB,GAAGjB,4BAA4B,EAA9D;AACA,QAAM;AAAEkB,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAiCF,yBAAvC;AACA,QAAMG,wBAAwB,GAAGF,WAAW,IAAIC,aAAhD;AACA,SACC,cAAC,IAAD;AAAM,IAAA,SAAS,EAAG,EAAE,GAAGZ,SAAL;AAAgBE,MAAAA,cAAhB;AAAgCC,MAAAA;AAAhC;AAAlB,KACKW,KAAF,IAAa;AACd,QAAK,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,MAAP,IAAgB,CAAhB,IAAqBF,wBAA1B,EAAqD;AACpD,aACC,cAAC,SAAD,QACGC,KADH,EAEC,cAAC,oBAAD,eACMJ,yBADN;AAEC,QAAA,OAAO,EAAGV,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEgB;AAFtB,SAFD,CADD;AASA;AACD,GAbF,CADD;AAiBA,CAzCD;AA2CA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,yBAAT,CAAoC,EAAE,GAAGC;AAAL,CAApC,EAAmD;AAClD,SACC,cAAC,aAAD;AAAe,IAAA,QAAQ,EAAGC;AAA1B,KACC,cAAC,IAAD,EAAWD,KAAX,CADD,CADD;AAKA;;AAEDD,yBAAyB,CAACnB,IAA1B,GAAiCC,6BAAjC;AAEA,eAAekB,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 { store as blockEditorStore } from '../../store';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst { selectedBlocks, selectedClientIds } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocksByClientId, getSelectedBlockClientIds } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\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};\n\t\t},\n\t\t[ clientIds ]\n\t);\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 = isGroupable || isUngroupable;\n\treturn (\n\t\t<Slot fillProps={ { ...fillProps, selectedBlocks, selectedClientIds } }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( fills?.length > 0 || showConvertToGroupButton ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ fills }\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</MenuGroup>\n\t\t\t\t\t);\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"]}
@@ -59,12 +59,12 @@ function StylePreview({
59
59
 
60
60
  const innerOutlineStyle = usePreferredColorSchemeStyle(styles.innerOutline, styles.innerOutlineDark);
61
61
 
62
- const getOutline = outlineStyles => outlineStyles.map(outlineStyle => {
62
+ const getOutline = outlineStyles => outlineStyles.map((outlineStyle, index) => {
63
63
  return createElement(Animated.View, {
64
64
  style: [outlineStyle, {
65
65
  opacity
66
66
  }, styles[name]],
67
- key: JSON.stringify(outlineStyle)
67
+ key: index
68
68
  });
69
69
  });
70
70
 
@@ -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","addEventListener","removeEventListener","labelStyle","labelDark","animateOutline","setValue","timing","toValue","duration","useNativeDriver","easing","linear","start","innerOutlineStyle","innerOutline","innerOutlineDark","getOutline","outlineStyles","map","outlineStyle","JSON","stringify","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\tDimensions.addEventListener( 'change', onLayout );\n\n\t\treturn () => {\n\t\t\tDimensions.removeEventListener( 'change', onLayout );\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 ) => {\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={ JSON.stringify( outlineStyle ) }\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","addEventListener","removeEventListener","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\tDimensions.addEventListener( 'change', onLayout );\n\n\t\treturn () => {\n\t\t\tDimensions.removeEventListener( 'change', onLayout );\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"]}
@@ -28,7 +28,7 @@ export default function BlockStylesMenu({
28
28
  label: __('Styles'),
29
29
  className: "block-editor-block-switcher__styles__menugroup"
30
30
  }, hoveredClassName && createElement(PreviewBlockPopover, {
31
- blocks: blockType.example ? getBlockFromExample(blockType.name, {
31
+ blocks: blockType && blockType.example ? getBlockFromExample(blockType.name, {
32
32
  attributes: { ...blockType.example.attributes,
33
33
  className: hoveredClassName
34
34
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-styles-menu.js"],"names":["__","MenuGroup","useState","useSelect","cloneBlock","getBlockFromExample","store","blocksStore","BlockStyles","PreviewBlockPopover","BlockStylesMenu","hoveredBlock","onSwitch","name","clientId","hoveredClassName","setHoveredClassName","blockType","select","getBlockType","example","attributes","className","innerBlocks"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,QAA0B,uBAA1B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,UADD,EAECC,mBAFD,EAGCC,KAAK,IAAIC,WAHV,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AAEA,eAAe,SAASC,eAAT,CAA0B;AAAEC,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,CAA1B,EAAuD;AACrE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBH,YAA3B;AACA,QAAM,CAAEI,gBAAF,EAAoBC,mBAApB,IAA4Cd,QAAQ,EAA1D;AACA,QAAMe,SAAS,GAAGd,SAAS,CACxBe,MAAF,IAAcA,MAAM,CAAEX,WAAF,CAAN,CAAsBY,YAAtB,CAAoCN,IAApC,CADY,EAE1B,CAAEA,IAAF,CAF0B,CAA3B;AAKA,SACC,cAAC,SAAD;AACC,IAAA,KAAK,EAAGb,EAAE,CAAE,QAAF,CADX;AAEC,IAAA,SAAS,EAAC;AAFX,KAIGe,gBAAgB,IACjB,cAAC,mBAAD;AACC,IAAA,MAAM,EACLE,SAAS,CAACG,OAAV,GACGf,mBAAmB,CAAEY,SAAS,CAACJ,IAAZ,EAAkB;AACrCQ,MAAAA,UAAU,EAAE,EACX,GAAGJ,SAAS,CAACG,OAAV,CAAkBC,UADV;AAEXC,QAAAA,SAAS,EAAEP;AAFA,OADyB;AAKrCQ,MAAAA,WAAW,EAAEN,SAAS,CAACG,OAAV,CAAkBG;AALM,KAAlB,CADtB,GAQGnB,UAAU,CAAEO,YAAF,EAAgB;AAC1BW,MAAAA,SAAS,EAAEP;AADe,KAAhB;AAVf,IALF,EAqBC,cAAC,WAAD;AACC,IAAA,QAAQ,EAAGD,QADZ;AAEC,IAAA,QAAQ,EAAGF,QAFZ;AAGC,IAAA,gBAAgB,EAAGI,mBAHpB;AAIC,IAAA,QAAQ,EAAC;AAJV,IArBD,CADD;AA8BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcloneBlock,\n\tgetBlockFromExample,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockStyles from '../block-styles';\nimport PreviewBlockPopover from './preview-block-popover';\n\nexport default function BlockStylesMenu( { hoveredBlock, onSwitch } ) {\n\tconst { name, clientId } = hoveredBlock;\n\tconst [ hoveredClassName, setHoveredClassName ] = useState();\n\tconst blockType = useSelect(\n\t\t( select ) => select( blocksStore ).getBlockType( name ),\n\t\t[ name ]\n\t);\n\n\treturn (\n\t\t<MenuGroup\n\t\t\tlabel={ __( 'Styles' ) }\n\t\t\tclassName=\"block-editor-block-switcher__styles__menugroup\"\n\t\t>\n\t\t\t{ hoveredClassName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={\n\t\t\t\t\t\tblockType.example\n\t\t\t\t\t\t\t? getBlockFromExample( blockType.name, {\n\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t...blockType.example.attributes,\n\t\t\t\t\t\t\t\t\t\tclassName: hoveredClassName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tinnerBlocks: blockType.example.innerBlocks,\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t: cloneBlock( hoveredBlock, {\n\t\t\t\t\t\t\t\t\tclassName: hoveredClassName,\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockStyles\n\t\t\t\tclientId={ clientId }\n\t\t\t\tonSwitch={ onSwitch }\n\t\t\t\tonHoverClassName={ setHoveredClassName }\n\t\t\t\titemRole=\"menuitem\"\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-styles-menu.js"],"names":["__","MenuGroup","useState","useSelect","cloneBlock","getBlockFromExample","store","blocksStore","BlockStyles","PreviewBlockPopover","BlockStylesMenu","hoveredBlock","onSwitch","name","clientId","hoveredClassName","setHoveredClassName","blockType","select","getBlockType","example","attributes","className","innerBlocks"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,QAA0B,uBAA1B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,UADD,EAECC,mBAFD,EAGCC,KAAK,IAAIC,WAHV,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AAEA,eAAe,SAASC,eAAT,CAA0B;AAAEC,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,CAA1B,EAAuD;AACrE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBH,YAA3B;AACA,QAAM,CAAEI,gBAAF,EAAoBC,mBAApB,IAA4Cd,QAAQ,EAA1D;AACA,QAAMe,SAAS,GAAGd,SAAS,CACxBe,MAAF,IAAcA,MAAM,CAAEX,WAAF,CAAN,CAAsBY,YAAtB,CAAoCN,IAApC,CADY,EAE1B,CAAEA,IAAF,CAF0B,CAA3B;AAKA,SACC,cAAC,SAAD;AACC,IAAA,KAAK,EAAGb,EAAE,CAAE,QAAF,CADX;AAEC,IAAA,SAAS,EAAC;AAFX,KAIGe,gBAAgB,IACjB,cAAC,mBAAD;AACC,IAAA,MAAM,EACLE,SAAS,IAAIA,SAAS,CAACG,OAAvB,GACGf,mBAAmB,CAAEY,SAAS,CAACJ,IAAZ,EAAkB;AACrCQ,MAAAA,UAAU,EAAE,EACX,GAAGJ,SAAS,CAACG,OAAV,CAAkBC,UADV;AAEXC,QAAAA,SAAS,EAAEP;AAFA,OADyB;AAKrCQ,MAAAA,WAAW,EAAEN,SAAS,CAACG,OAAV,CAAkBG;AALM,KAAlB,CADtB,GAQGnB,UAAU,CAAEO,YAAF,EAAgB;AAC1BW,MAAAA,SAAS,EAAEP;AADe,KAAhB;AAVf,IALF,EAqBC,cAAC,WAAD;AACC,IAAA,QAAQ,EAAGD,QADZ;AAEC,IAAA,QAAQ,EAAGF,QAFZ;AAGC,IAAA,gBAAgB,EAAGI,mBAHpB;AAIC,IAAA,QAAQ,EAAC;AAJV,IArBD,CADD;AA8BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcloneBlock,\n\tgetBlockFromExample,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockStyles from '../block-styles';\nimport PreviewBlockPopover from './preview-block-popover';\n\nexport default function BlockStylesMenu( { hoveredBlock, onSwitch } ) {\n\tconst { name, clientId } = hoveredBlock;\n\tconst [ hoveredClassName, setHoveredClassName ] = useState();\n\tconst blockType = useSelect(\n\t\t( select ) => select( blocksStore ).getBlockType( name ),\n\t\t[ name ]\n\t);\n\n\treturn (\n\t\t<MenuGroup\n\t\t\tlabel={ __( 'Styles' ) }\n\t\t\tclassName=\"block-editor-block-switcher__styles__menugroup\"\n\t\t>\n\t\t\t{ hoveredClassName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={\n\t\t\t\t\t\tblockType && blockType.example\n\t\t\t\t\t\t\t? getBlockFromExample( blockType.name, {\n\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t...blockType.example.attributes,\n\t\t\t\t\t\t\t\t\t\tclassName: hoveredClassName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tinnerBlocks: blockType.example.innerBlocks,\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t: cloneBlock( hoveredBlock, {\n\t\t\t\t\t\t\t\t\tclassName: hoveredClassName,\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockStyles\n\t\t\t\tclientId={ clientId }\n\t\t\t\tonSwitch={ onSwitch }\n\t\t\t\tonHoverClassName={ setHoveredClassName }\n\t\t\t\titemRole=\"menuitem\"\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n"]}
@@ -34,11 +34,14 @@ export const BlockSwitcherDropdownMenu = ({
34
34
  const blockInformation = useBlockDisplayInformation(blocks[0].clientId);
35
35
  const {
36
36
  possibleBlockTransformations,
37
+ canRemove,
37
38
  hasBlockStyles,
38
39
  icon,
39
40
  blockTitle,
40
41
  patterns
41
42
  } = useSelect(select => {
43
+ var _getBlockType2;
44
+
42
45
  const {
43
46
  getBlockRootClientId,
44
47
  getBlockTransformItems,
@@ -48,6 +51,9 @@ export const BlockSwitcherDropdownMenu = ({
48
51
  getBlockStyles,
49
52
  getBlockType
50
53
  } = select(blocksStore);
54
+ const {
55
+ canRemoveBlocks
56
+ } = select(blockEditorStore);
51
57
  const rootClientId = getBlockRootClientId(castArray(clientIds)[0]);
52
58
  const [{
53
59
  name: firstBlockName
@@ -74,9 +80,10 @@ export const BlockSwitcherDropdownMenu = ({
74
80
 
75
81
  return {
76
82
  possibleBlockTransformations: getBlockTransformItems(blocks, rootClientId),
83
+ canRemove: canRemoveBlocks(clientIds, rootClientId),
77
84
  hasBlockStyles: !!(styles !== null && styles !== void 0 && styles.length),
78
85
  icon: _icon,
79
- blockTitle: getBlockType(firstBlockName).title,
86
+ blockTitle: (_getBlockType2 = getBlockType(firstBlockName)) === null || _getBlockType2 === void 0 ? void 0 : _getBlockType2.title,
80
87
  patterns: __experimentalGetPatternTransformItems(blocks, rootClientId)
81
88
  };
82
89
  }, [clientIds, blocks, blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.icon]);
@@ -88,8 +95,8 @@ export const BlockSwitcherDropdownMenu = ({
88
95
 
89
96
  const onPatternTransform = transformedBlocks => replaceBlocks(clientIds, transformedBlocks);
90
97
 
91
- const hasPossibleBlockTransformations = !!possibleBlockTransformations.length;
92
- const hasPatternTransformation = !!(patterns !== null && patterns !== void 0 && patterns.length);
98
+ const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove;
99
+ const hasPatternTransformation = !!(patterns !== null && patterns !== void 0 && patterns.length) && canRemove;
93
100
 
94
101
  if (!hasBlockStyles && !hasPossibleBlockTransformations) {
95
102
  return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
@@ -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","stack","blockEditorStore","useBlockDisplayInformation","BlockIcon","BlockTitle","BlockTransformationsMenu","BlockStylesMenu","PatternTransformationsMenu","BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockInformation","clientId","possibleBlockTransformations","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","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 { stack } 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\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 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: stack;\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\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 = !! possibleBlockTransformations.length;\n\tconst hasPatternTransformation = !! patterns?.length;\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={ <BlockIcon icon={ icon } showColors /> }\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 clientId={ clientIds } />\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","stack","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":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,IAApB,QAAgC,QAAhC;AAEA;AACA;AACA;;AACA,SAASC,EAAT,EAAaC,EAAb,EAAiBC,OAAjB,QAAgC,iBAAhC;AACA,SACCC,YADD,EAECC,aAFD,EAGCC,YAHD,EAICC,WAJD,QAKO,uBALP;AAMA,SACCC,iBADD,EAECC,KAAK,IAAIC,WAFV,EAGCC,eAHD,EAICC,cAJD,QAKO,mBALP;AAMA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,KAAT,QAAsB,kBAAtB;AAEA;AACA;AACA;;AACA,SAASN,KAAK,IAAIO,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,OAAOC,wBAAP,MAAqC,8BAArC;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,0BAAP,MAAuC,gCAAvC;AAEA,OAAO,MAAMC,yBAAyB,GAAG,CAAE;AAAEC,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAF,KAA6B;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAoBZ,WAAW,CAAEE,gBAAF,CAArC;AACA,QAAMW,gBAAgB,GAAGV,0BAA0B,CAAEQ,MAAM,CAAE,CAAF,CAAN,CAAYG,QAAd,CAAnD;AACA,QAAM;AACLC,IAAAA,4BADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,IAJK;AAKLC,IAAAA,UALK;AAMLC,IAAAA;AANK,MAOFrB,SAAS,CACVsB,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,oBADK;AAELC,MAAAA,sBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEnB,gBAAF,CAJV;AAKA,UAAM;AAAEuB,MAAAA,cAAF;AAAkBC,MAAAA;AAAlB,QAAmCL,MAAM,CAAEzB,WAAF,CAA/C;AACA,UAAM;AAAE+B,MAAAA;AAAF,QAAsBN,MAAM,CAAEnB,gBAAF,CAAlC;AACA,UAAM0B,YAAY,GAAGN,oBAAoB,CACxCrC,SAAS,CAAEyB,SAAF,CAAT,CAAwB,CAAxB,CADwC,CAAzC;AAGA,UAAM,CAAE;AAAEmB,MAAAA,IAAI,EAAEC;AAAR,KAAF,IAA+BnB,MAArC;;AACA,UAAMoB,sBAAsB,GAAGpB,MAAM,CAACqB,MAAP,KAAkB,CAAjD;;AACA,UAAMC,MAAM,GACXF,sBAAsB,IAAIN,cAAc,CAAEK,cAAF,CADzC;;AAEA,QAAII,KAAJ;;AACA,QAAKH,sBAAL,EAA8B;AAC7BG,MAAAA,KAAK,GAAGrB,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAEK,IAA1B,CAD6B,CACG;AAChC,KAFD,MAEO;AAAA;;AACN,YAAMiB,qBAAqB,GAC1BjD,IAAI,CAAEyB,MAAM,CAACyB,GAAP,CAAY,CAAE;AAAEP,QAAAA;AAAF,OAAF,KAAgBA,IAA5B,CAAF,CAAJ,CAA2CG,MAA3C,KAAsD,CADvD,CADM,CAGN;AACA;;AACAE,MAAAA,KAAK,GAAGC,qBAAqB,oBAC1BT,YAAY,CAAEI,cAAF,CADc,kDAC1B,cAAgCZ,IADN,GAE1BjB,KAFH;AAGA;;AACD,WAAO;AACNc,MAAAA,4BAA4B,EAAEQ,sBAAsB,CACnDZ,MADmD,EAEnDiB,YAFmD,CAD9C;AAKNZ,MAAAA,SAAS,EAAEW,eAAe,CAAEjB,SAAF,EAAakB,YAAb,CALpB;AAMNX,MAAAA,cAAc,EAAE,CAAC,EAAEgB,MAAF,aAAEA,MAAF,eAAEA,MAAM,CAAED,MAAV,CANX;AAONd,MAAAA,IAAI,EAAEgB,KAPA;AAQNf,MAAAA,UAAU,oBAAEO,YAAY,CAAEI,cAAF,CAAd,mDAAE,eAAgCO,KARtC;AASNjB,MAAAA,QAAQ,EAAEI,sCAAsC,CAC/Cb,MAD+C,EAE/CiB,YAF+C;AAT1C,KAAP;AAcA,GA1CW,EA2CZ,CAAElB,SAAF,EAAaC,MAAb,EAAqBE,gBAArB,aAAqBA,gBAArB,uBAAqBA,gBAAgB,CAAEK,IAAvC,CA3CY,CAPb;AAqDA,QAAMoB,UAAU,GAAG3B,MAAM,CAACqB,MAAP,KAAkB,CAAlB,IAAuBnC,eAAe,CAAEc,MAAM,CAAE,CAAF,CAAR,CAAzD;AACA,QAAM4B,UAAU,GAAG5B,MAAM,CAACqB,MAAP,KAAkB,CAAlB,IAAuBlC,cAAc,CAAEa,MAAM,CAAE,CAAF,CAAR,CAAxD,CAzDqE,CA2DrE;;AACA,QAAM6B,gBAAgB,GAAKX,IAAF,IACxBjB,aAAa,CAAEF,SAAF,EAAahB,iBAAiB,CAAEiB,MAAF,EAAUkB,IAAV,CAA9B,CADd,CA5DqE,CA8DrE;;;AACA,QAAMY,kBAAkB,GAAKC,iBAAF,IAC1B9B,aAAa,CAAEF,SAAF,EAAagC,iBAAb,CADd;;AAEA,QAAMC,+BAA+B,GACpC,CAAC,CAAE5B,4BAA4B,CAACiB,MAAhC,IAA0ChB,SAD3C;AAEA,QAAM4B,wBAAwB,GAAG,CAAC,EAAExB,QAAF,aAAEA,QAAF,eAAEA,QAAQ,CAAEY,MAAZ,CAAD,IAAuBhB,SAAxD;;AACA,MAAK,CAAEC,cAAF,IAAoB,CAAE0B,+BAA3B,EAA6D;AAC5D,WACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,MAAA,QAAQ,MADT;AAEC,MAAA,SAAS,EAAC,+CAFX;AAGC,MAAA,KAAK,EAAGxB,UAHT;AAIC,MAAA,IAAI,EAAG,cAAC,SAAD;AAAW,QAAA,IAAI,EAAGD,IAAlB;AAAyB,QAAA,UAAU;AAAnC;AAJR,MADD,CADD;AAUA;;AAED,QAAM2B,kBAAkB,GAAG1B,UAA3B;AAEA,QAAM2B,wBAAwB,GAC7B,MAAMnC,MAAM,CAACqB,MAAb,GACG3C,OAAO;AACP;AACAF,EAAAA,EAAE,CAAE,gCAAF,CAFK,EAGPgC,UAHO,CADV,GAMG9B,OAAO;AACP;AACAD,EAAAA,EAAE,CACD,yBADC,EAED,0BAFC,EAGDuB,MAAM,CAACqB,MAHN,CAFK,EAOPrB,MAAM,CAACqB,MAPA,CAPX;AAiBA,QAAMe,YAAY,GACjB9B,cAAc,IACd0B,+BADA,IAEAC,wBAHD;AAIA,SACC,cAAC,YAAD,QACC,cAAC,WAAD,QACKI,WAAF,IACD,cAAC,YAAD;AACC,IAAA,SAAS,EAAC,6BADX;AAEC,IAAA,KAAK,EAAGH,kBAFT;AAGC,IAAA,YAAY,EAAG;AACdI,MAAAA,QAAQ,EAAE,cADI;AAEdC,MAAAA,WAAW,EAAE,IAFC;AAGdC,MAAAA,SAAS,EAAE;AAHG,KAHhB;AAQC,IAAA,IAAI,EACH,8BACC,cAAC,SAAD;AACC,MAAA,IAAI,EAAGjC,IADR;AAEC,MAAA,SAAS,EAAC,qCAFX;AAGC,MAAA,UAAU;AAHX,MADD,EAMG,CAAEoB,UAAU,IAAIC,UAAhB,KACD;AAAM,MAAA,SAAS,EAAC;AAAhB,OACC,cAAC,UAAD;AAAY,MAAA,QAAQ,EAAG7B;AAAvB,MADD,CAPF,CATF;AAsBC,IAAA,WAAW,EAAG;AACb0C,MAAAA,WAAW,EAAEN,wBADA;AAEb,SAAGE;AAFU,KAtBf;AA0BC,IAAA,SAAS,EAAG;AAAEK,MAAAA,WAAW,EAAE;AAAf;AA1Bb,KA4BG,CAAE;AAAEC,IAAAA;AAAF,GAAF,KACDP,YAAY,IACX;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,wBAAwB,IACzB,cAAC,0BAAD;AACC,IAAA,MAAM,EAAGjC,MADV;AAEC,IAAA,QAAQ,EAAGS,QAFZ;AAGC,IAAA,QAAQ,EACPsB,iBADU,IAEN;AACJD,MAAAA,kBAAkB,CACjBC,iBADiB,CAAlB;AAGAY,MAAAA,OAAO;AACP;AAVF,IAFF,EAeGX,+BAA+B,IAChC,cAAC,wBAAD;AACC,IAAA,SAAS,EAAC,oDADX;AAEC,IAAA,4BAA4B,EAC3B5B,4BAHF;AAKC,IAAA,MAAM,EAAGJ,MALV;AAMC,IAAA,QAAQ,EAAKkB,IAAF,IAAY;AACtBW,MAAAA,gBAAgB,CAAEX,IAAF,CAAhB;AACAyB,MAAAA,OAAO;AACP;AATF,IAhBF,EA4BGrC,cAAc,IACf,cAAC,eAAD;AACC,IAAA,YAAY,EAAGN,MAAM,CAAE,CAAF,CADtB;AAEC,IAAA,QAAQ,EAAG2C;AAFZ,IA7BF,CA9BH,CAFF,CADD,CADD;AA4EA,CApLM;AAsLP,OAAO,MAAMC,aAAa,GAAG,CAAE;AAAE7C,EAAAA;AAAF,CAAF,KAAqB;AACjD,QAAMC,MAAM,GAAGZ,SAAS,CACrBsB,MAAF,IACCA,MAAM,CAAEnB,gBAAF,CAAN,CAA2BsD,mBAA3B,CAAgD9C,SAAhD,CAFsB,EAGvB,CAAEA,SAAF,CAHuB,CAAxB;;AAMA,MAAK,CAAEC,MAAM,CAACqB,MAAT,IAAmBrB,MAAM,CAAC8C,IAAP,CAAeC,KAAF,IAAa,CAAEA,KAA5B,CAAxB,EAA8D;AAC7D,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD;AAA2B,IAAA,SAAS,EAAGhD,SAAvC;AAAmD,IAAA,MAAM,EAAGC;AAA5D,IADD;AAGA,CAdM;AAgBP,eAAe4C,aAAf","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 { stack } 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: stack;\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={ <BlockIcon icon={ icon } showColors /> }\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 clientId={ clientIds } />\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"]}
@@ -63,11 +63,12 @@ export default function BlockTitle({
63
63
  const blockInformation = useBlockDisplayInformation(clientId);
64
64
  if (!name || !blockInformation) return null;
65
65
  const blockType = getBlockType(name);
66
- const label = reusableBlockTitle || getBlockLabel(blockType, attributes); // Label will fallback to the title if no label is defined for the current
66
+ const blockLabel = blockType ? getBlockLabel(blockType, attributes) : null;
67
+ const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
67
68
  // label context. If the label is defined we prioritize it over possible
68
69
  // possible block variation title match.
69
70
 
70
- if (label !== blockType.title) {
71
+ if (label && label !== blockType.title) {
71
72
  return truncate(label, {
72
73
  length: 35
73
74
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["truncate","useSelect","getBlockType","__experimentalGetBlockLabel","getBlockLabel","isReusableBlock","useBlockDisplayInformation","store","blockEditorStore","BlockTitle","clientId","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockName","isReusable","ref","blockInformation","blockType","label","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;;AACA,eAAe,SAASC,UAAT,CAAqB;AAAEC,EAAAA;AAAF,CAArB,EAAoC;AAClD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2CZ,SAAS,CACvDa,MAAF,IAAc;AACb,QAAK,CAAEJ,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLK,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEN,gBAAF,CAJV;AAKA,UAAMU,SAAS,GAAGH,YAAY,CAAEL,QAAF,CAA9B;;AACA,QAAK,CAAEQ,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGd,eAAe,CAAEH,YAAY,CAAEgB,SAAF,CAAd,CAAlC;AACA,WAAO;AACNP,MAAAA,UAAU,EAAEK,kBAAkB,CAAEN,QAAF,CADxB;AAENE,MAAAA,IAAI,EAAEM,SAFA;AAGNL,MAAAA,kBAAkB,EACjBM,UAAU,IACVF,mCAAmC,CAClCD,kBAAkB,CAAEN,QAAF,CAAlB,CAA+BU,GADG;AAL9B,KAAP;AASA,GAxBwD,EAyBzD,CAAEV,QAAF,CAzByD,CAA1D;AA4BA,QAAMW,gBAAgB,GAAGf,0BAA0B,CAAEI,QAAF,CAAnD;AACA,MAAK,CAAEE,IAAF,IAAU,CAAES,gBAAjB,EAAoC,OAAO,IAAP;AACpC,QAAMC,SAAS,GAAGpB,YAAY,CAAEU,IAAF,CAA9B;AACA,QAAMW,KAAK,GAAGV,kBAAkB,IAAIT,aAAa,CAAEkB,SAAF,EAAaX,UAAb,CAAjD,CAhCkD,CAiClD;AACA;AACA;;AACA,MAAKY,KAAK,KAAKD,SAAS,CAACE,KAAzB,EAAiC;AAChC,WAAOxB,QAAQ,CAAEuB,KAAF,EAAS;AAAEE,MAAAA,MAAM,EAAE;AAAV,KAAT,CAAf;AACA;;AACD,SAAOJ,gBAAgB,CAACG,KAAxB;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 * 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\" />\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n *\n * @return {?string} Block title.\n */\nexport default function BlockTitle( { clientId } ) {\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 ) return null;\n\tconst blockType = getBlockType( name );\n\tconst label = reusableBlockTitle || getBlockLabel( blockType, attributes );\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 possible\n\t// possible block variation title match.\n\tif ( label !== blockType.title ) {\n\t\treturn truncate( label, { length: 35 } );\n\t}\n\treturn blockInformation.title;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["truncate","useSelect","getBlockType","__experimentalGetBlockLabel","getBlockLabel","isReusableBlock","useBlockDisplayInformation","store","blockEditorStore","BlockTitle","clientId","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","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;;AACA,eAAe,SAASC,UAAT,CAAqB;AAAEC,EAAAA;AAAF,CAArB,EAAoC;AAClD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2CZ,SAAS,CACvDa,MAAF,IAAc;AACb,QAAK,CAAEJ,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLK,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEN,gBAAF,CAJV;AAKA,UAAMU,SAAS,GAAGH,YAAY,CAAEL,QAAF,CAA9B;;AACA,QAAK,CAAEQ,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGd,eAAe,CAAEH,YAAY,CAAEgB,SAAF,CAAd,CAAlC;AACA,WAAO;AACNP,MAAAA,UAAU,EAAEK,kBAAkB,CAAEN,QAAF,CADxB;AAENE,MAAAA,IAAI,EAAEM,SAFA;AAGNL,MAAAA,kBAAkB,EACjBM,UAAU,IACVF,mCAAmC,CAClCD,kBAAkB,CAAEN,QAAF,CAAlB,CAA+BU,GADG;AAL9B,KAAP;AASA,GAxBwD,EAyBzD,CAAEV,QAAF,CAzByD,CAA1D;AA4BA,QAAMW,gBAAgB,GAAGf,0BAA0B,CAAEI,QAAF,CAAnD;AACA,MAAK,CAAEE,IAAF,IAAU,CAAES,gBAAjB,EAAoC,OAAO,IAAP;AACpC,QAAMC,SAAS,GAAGpB,YAAY,CAAEU,IAAF,CAA9B;AACA,QAAMW,UAAU,GAAGD,SAAS,GACzBlB,aAAa,CAAEkB,SAAF,EAAaX,UAAb,CADY,GAEzB,IAFH;AAGA,QAAMa,KAAK,GAAGX,kBAAkB,IAAIU,UAApC,CAnCkD,CAoClD;AACA;AACA;;AACA,MAAKC,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACG,KAAlC,EAA0C;AACzC,WAAOzB,QAAQ,CAAEwB,KAAF,EAAS;AAAEE,MAAAA,MAAM,EAAE;AAAV,KAAT,CAAf;AACA;;AACD,SAAOL,gBAAgB,CAACI,KAAxB;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 * 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\" />\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n *\n * @return {?string} Block title.\n */\nexport default function BlockTitle( { clientId } ) {\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 ) return null;\n\tconst blockType = getBlockType( name );\n\tconst blockLabel = blockType\n\t\t? getBlockLabel( blockType, attributes )\n\t\t: null;\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 possible\n\t// possible block variation title match.\n\tif ( label && label !== blockType.title ) {\n\t\treturn truncate( label, { length: 35 } );\n\t}\n\treturn blockInformation.title;\n}\n"]}
@@ -9,7 +9,7 @@ import classnames from 'classnames';
9
9
  * WordPress dependencies
10
10
  */
11
11
 
12
- import { useState, useCallback, useRef, useEffect } from '@wordpress/element';
12
+ import { useState, useRef, useEffect } from '@wordpress/element';
13
13
  import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';
14
14
  import { Popover } from '@wordpress/components';
15
15
  import { useDispatch, useSelect } from '@wordpress/data';
@@ -93,12 +93,10 @@ function BlockPopover({
93
93
  const shouldShowBreadcrumb = isNavigationMode;
94
94
  const shouldShowContextualToolbar = !isNavigationMode && !hasFixedToolbar && isLargeViewport && !showEmptyBlockSideInserter && !isMultiSelecting && (!isTyping || isCaretWithinFormattedText);
95
95
  const canFocusHiddenToolbar = !isNavigationMode && !shouldShowContextualToolbar && !hasFixedToolbar && !isEmptyDefaultBlock;
96
- useShortcut('core/block-editor/focus-toolbar', useCallback(() => {
96
+ useShortcut('core/block-editor/focus-toolbar', () => {
97
97
  setIsToolbarForced(true);
98
98
  stopTyping(true);
99
- }, []), {
100
- bindGlobal: true,
101
- eventName: 'keydown',
99
+ }, {
102
100
  isDisabled: !canFocusHiddenToolbar
103
101
  });
104
102
  useEffect(() => {