@wordpress/block-editor 8.2.0 → 8.2.1-next.a55ed9455a.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/README.md +6 -2
  2. package/build/autocompleters/link.js +78 -0
  3. package/build/autocompleters/link.js.map +1 -0
  4. package/build/components/autocomplete/index.js +3 -1
  5. package/build/components/autocomplete/index.js.map +1 -1
  6. package/build/components/block-actions/index.js +1 -1
  7. package/build/components/block-actions/index.js.map +1 -1
  8. package/build/components/block-breadcrumb/index.js +4 -2
  9. package/build/components/block-breadcrumb/index.js.map +1 -1
  10. package/build/components/block-compare/index.js +2 -2
  11. package/build/components/block-compare/index.js.map +1 -1
  12. package/build/components/block-controls/index.js +1 -1
  13. package/build/components/block-controls/index.js.map +1 -1
  14. package/build/components/block-draggable/index.js +1 -1
  15. package/build/components/block-draggable/index.js.map +1 -1
  16. package/build/components/block-edit/edit.js +1 -1
  17. package/build/components/block-edit/edit.js.map +1 -1
  18. package/build/components/block-list/block-html.js +1 -1
  19. package/build/components/block-list/block-html.js.map +1 -1
  20. package/build/components/block-list/block-invalid-warning.js +1 -1
  21. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  22. package/build/components/block-list/block-list-item.native.js +4 -4
  23. package/build/components/block-list/block-list-item.native.js.map +1 -1
  24. package/build/components/block-list/block-selection-button.native.js +4 -3
  25. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  26. package/build/components/block-list/block.js +1 -1
  27. package/build/components/block-list/block.js.map +1 -1
  28. package/build/components/block-list/block.native.js +5 -5
  29. package/build/components/block-list/block.native.js.map +1 -1
  30. package/build/components/block-list/index.native.js +5 -5
  31. package/build/components/block-list/index.native.js.map +1 -1
  32. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -1
  33. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  34. package/build/components/block-media-update-progress/index.native.js +4 -4
  35. package/build/components/block-media-update-progress/index.native.js.map +1 -1
  36. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  38. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  40. package/build/components/block-mover/mover-description.js +4 -4
  41. package/build/components/block-mover/mover-description.js.map +1 -1
  42. package/build/components/block-mover/mover-description.native.js +5 -5
  43. package/build/components/block-mover/mover-description.native.js.map +1 -1
  44. package/build/components/block-settings-menu/block-settings-dropdown.js +7 -12
  45. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  46. package/build/components/block-styles/preview.native.js +1 -1
  47. package/build/components/block-styles/preview.native.js.map +1 -1
  48. package/build/components/block-switcher/index.js +2 -1
  49. package/build/components/block-switcher/index.js.map +1 -1
  50. package/build/components/block-switcher/use-transformed-patterns.js +0 -1
  51. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  52. package/build/components/block-title/index.js +7 -62
  53. package/build/components/block-title/index.js.map +1 -1
  54. package/build/components/block-title/use-block-display-title.js +94 -0
  55. package/build/components/block-title/use-block-display-title.js.map +1 -0
  56. package/build/components/block-toolbar/utils.js +9 -1
  57. package/build/components/block-toolbar/utils.js.map +1 -1
  58. package/build/components/block-tools/block-popover.js +1 -1
  59. package/build/components/block-tools/block-popover.js.map +1 -1
  60. package/build/components/block-tools/block-selection-button.js +2 -1
  61. package/build/components/block-tools/block-selection-button.js.map +1 -1
  62. package/build/components/block-types-list/index.native.js +1 -1
  63. package/build/components/block-types-list/index.native.js.map +1 -1
  64. package/build/components/border-radius-control/index.js +2 -2
  65. package/build/components/border-radius-control/index.js.map +1 -1
  66. package/build/components/border-radius-control/utils.js +10 -6
  67. package/build/components/border-radius-control/utils.js.map +1 -1
  68. package/build/components/contrast-checker/index.js +3 -3
  69. package/build/components/contrast-checker/index.js.map +1 -1
  70. package/build/components/convert-to-group-buttons/index.js +1 -1
  71. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  72. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  73. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  74. package/build/components/copy-handler/index.js +3 -3
  75. package/build/components/copy-handler/index.js.map +1 -1
  76. package/build/components/font-sizes/with-font-sizes.js +3 -3
  77. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  78. package/build/components/index.native.js +29 -1
  79. package/build/components/index.native.js.map +1 -1
  80. package/build/components/inserter/block-patterns-tab.js +1 -1
  81. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  82. package/build/components/inserter/block-types-tab.js +1 -1
  83. package/build/components/inserter/block-types-tab.js.map +1 -1
  84. package/build/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  85. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  86. package/build/components/inserter/index.js +3 -3
  87. package/build/components/inserter/index.js.map +1 -1
  88. package/build/components/inserter/index.native.js +7 -7
  89. package/build/components/inserter/index.native.js.map +1 -1
  90. package/build/components/inserter/menu.js.map +1 -1
  91. package/build/components/inserter/menu.native.js +3 -3
  92. package/build/components/inserter/menu.native.js.map +1 -1
  93. package/build/components/inserter/quick-inserter.js +1 -1
  94. package/build/components/inserter/quick-inserter.js.map +1 -1
  95. package/build/components/inserter/search-items.js +1 -1
  96. package/build/components/inserter/search-items.js.map +1 -1
  97. package/build/components/inserter/search-results.js +1 -1
  98. package/build/components/inserter/search-results.js.map +1 -1
  99. package/build/components/keyboard-shortcuts/index.js +1 -1
  100. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  101. package/build/components/letter-spacing-control/index.js +3 -3
  102. package/build/components/letter-spacing-control/index.js.map +1 -1
  103. package/build/components/line-height-control/index.js +4 -4
  104. package/build/components/line-height-control/index.js.map +1 -1
  105. package/build/components/line-height-control/index.native.js +3 -1
  106. package/build/components/line-height-control/index.native.js.map +1 -1
  107. package/build/components/link-control/index.js +2 -2
  108. package/build/components/link-control/index.js.map +1 -1
  109. package/build/components/link-control/search-input.js +1 -1
  110. package/build/components/link-control/search-input.js.map +1 -1
  111. package/build/components/link-control/search-results.js +2 -2
  112. package/build/components/link-control/search-results.js.map +1 -1
  113. package/build/components/link-control/use-rich-url-data.js +1 -1
  114. package/build/components/link-control/use-rich-url-data.js.map +1 -1
  115. package/build/components/link-control/use-search-handler.js +2 -2
  116. package/build/components/link-control/use-search-handler.js.map +1 -1
  117. package/build/components/list-view/block-select-button.js +2 -1
  118. package/build/components/list-view/block-select-button.js.map +1 -1
  119. package/build/components/list-view/block.js +1 -1
  120. package/build/components/list-view/block.js.map +1 -1
  121. package/build/components/media-placeholder/index.native.js +7 -5
  122. package/build/components/media-placeholder/index.native.js.map +1 -1
  123. package/build/components/media-replace-flow/index.js +20 -24
  124. package/build/components/media-replace-flow/index.js.map +1 -1
  125. package/build/components/media-upload/index.native.js +4 -3
  126. package/build/components/media-upload/index.native.js.map +1 -1
  127. package/build/components/media-upload-progress/index.native.js +1 -1
  128. package/build/components/media-upload-progress/index.native.js.map +1 -1
  129. package/build/components/navigable-toolbar/index.js +3 -3
  130. package/build/components/navigable-toolbar/index.js.map +1 -1
  131. package/build/components/plain-text/index.native.js +3 -3
  132. package/build/components/plain-text/index.native.js.map +1 -1
  133. package/build/components/rich-text/format-toolbar-container.js +2 -2
  134. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  135. package/build/components/rich-text/format-toolbar-container.native.js +1 -1
  136. package/build/components/rich-text/format-toolbar-container.native.js.map +1 -1
  137. package/build/components/rich-text/index.native.js +3 -3
  138. package/build/components/rich-text/index.native.js.map +1 -1
  139. package/build/components/rich-text/use-paste-handler.js +7 -11
  140. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  141. package/build/components/url-input/index.js +11 -11
  142. package/build/components/url-input/index.js.map +1 -1
  143. package/build/components/use-moving-animation/index.js +1 -1
  144. package/build/components/use-moving-animation/index.js.map +1 -1
  145. package/build/components/use-on-block-drop/index.js +2 -2
  146. package/build/components/use-on-block-drop/index.js.map +1 -1
  147. package/build/components/writing-flow/use-tab-nav.js +4 -3
  148. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  149. package/build/hooks/align.js +1 -1
  150. package/build/hooks/align.js.map +1 -1
  151. package/build/hooks/anchor.js +1 -1
  152. package/build/hooks/anchor.js.map +1 -1
  153. package/build/hooks/border.js +2 -14
  154. package/build/hooks/border.js.map +1 -1
  155. package/build/hooks/color.js +2 -2
  156. package/build/hooks/color.js.map +1 -1
  157. package/build/hooks/generated-class-name.js +3 -3
  158. package/build/hooks/generated-class-name.js.map +1 -1
  159. package/build/hooks/lock.js +1 -1
  160. package/build/hooks/lock.js.map +1 -1
  161. package/build/hooks/style.js +5 -2
  162. package/build/hooks/style.js.map +1 -1
  163. package/build/store/actions.js +4 -4
  164. package/build/store/actions.js.map +1 -1
  165. package/build/store/defaults.js +1 -1
  166. package/build/store/defaults.js.map +1 -1
  167. package/build/store/reducer.js +11 -11
  168. package/build/store/reducer.js.map +1 -1
  169. package/build/store/selectors.js +6 -6
  170. package/build/store/selectors.js.map +1 -1
  171. package/build/utils/parse-css-unit-to-px.js +3 -3
  172. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  173. package/build/utils/pasting.js +91 -0
  174. package/build/utils/pasting.js.map +1 -0
  175. package/build/utils/transform-styles/ast/parse.js +5 -5
  176. package/build/utils/transform-styles/ast/parse.js.map +1 -1
  177. package/build/utils/transform-styles/transforms/url-rewrite.js +2 -2
  178. package/build/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  179. package/build-module/autocompleters/link.js +64 -0
  180. package/build-module/autocompleters/link.js.map +1 -0
  181. package/build-module/components/autocomplete/index.js +2 -1
  182. package/build-module/components/autocomplete/index.js.map +1 -1
  183. package/build-module/components/block-actions/index.js +1 -1
  184. package/build-module/components/block-actions/index.js.map +1 -1
  185. package/build-module/components/block-breadcrumb/index.js +4 -2
  186. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  187. package/build-module/components/block-compare/index.js +2 -2
  188. package/build-module/components/block-compare/index.js.map +1 -1
  189. package/build-module/components/block-controls/index.js +1 -1
  190. package/build-module/components/block-controls/index.js.map +1 -1
  191. package/build-module/components/block-draggable/index.js +1 -1
  192. package/build-module/components/block-draggable/index.js.map +1 -1
  193. package/build-module/components/block-edit/edit.js +1 -1
  194. package/build-module/components/block-edit/edit.js.map +1 -1
  195. package/build-module/components/block-list/block-html.js +1 -1
  196. package/build-module/components/block-list/block-html.js.map +1 -1
  197. package/build-module/components/block-list/block-invalid-warning.js +1 -1
  198. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  199. package/build-module/components/block-list/block-list-item.native.js +4 -4
  200. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  201. package/build-module/components/block-list/block-selection-button.native.js +4 -3
  202. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  203. package/build-module/components/block-list/block.js +1 -1
  204. package/build-module/components/block-list/block.js.map +1 -1
  205. package/build-module/components/block-list/block.native.js +5 -5
  206. package/build-module/components/block-list/block.native.js.map +1 -1
  207. package/build-module/components/block-list/index.native.js +5 -5
  208. package/build-module/components/block-list/index.native.js.map +1 -1
  209. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -1
  210. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  211. package/build-module/components/block-media-update-progress/index.native.js +4 -4
  212. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  213. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  214. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  215. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  216. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  217. package/build-module/components/block-mover/mover-description.js +4 -4
  218. package/build-module/components/block-mover/mover-description.js.map +1 -1
  219. package/build-module/components/block-mover/mover-description.native.js +5 -5
  220. package/build-module/components/block-mover/mover-description.native.js.map +1 -1
  221. package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -13
  222. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  223. package/build-module/components/block-styles/preview.native.js +1 -1
  224. package/build-module/components/block-styles/preview.native.js.map +1 -1
  225. package/build-module/components/block-switcher/index.js +2 -1
  226. package/build-module/components/block-switcher/index.js.map +1 -1
  227. package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
  228. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  229. package/build-module/components/block-title/index.js +7 -58
  230. package/build-module/components/block-title/index.js.map +1 -1
  231. package/build-module/components/block-title/use-block-display-title.js +80 -0
  232. package/build-module/components/block-title/use-block-display-title.js.map +1 -0
  233. package/build-module/components/block-toolbar/utils.js +9 -1
  234. package/build-module/components/block-toolbar/utils.js.map +1 -1
  235. package/build-module/components/block-tools/block-popover.js +1 -1
  236. package/build-module/components/block-tools/block-popover.js.map +1 -1
  237. package/build-module/components/block-tools/block-selection-button.js +2 -1
  238. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  239. package/build-module/components/block-types-list/index.native.js +1 -1
  240. package/build-module/components/block-types-list/index.native.js.map +1 -1
  241. package/build-module/components/border-radius-control/index.js +3 -3
  242. package/build-module/components/border-radius-control/index.js.map +1 -1
  243. package/build-module/components/border-radius-control/utils.js +11 -7
  244. package/build-module/components/border-radius-control/utils.js.map +1 -1
  245. package/build-module/components/contrast-checker/index.js +3 -3
  246. package/build-module/components/contrast-checker/index.js.map +1 -1
  247. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  248. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  249. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  250. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  251. package/build-module/components/copy-handler/index.js +2 -2
  252. package/build-module/components/copy-handler/index.js.map +1 -1
  253. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  254. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  255. package/build-module/components/index.native.js +4 -4
  256. package/build-module/components/index.native.js.map +1 -1
  257. package/build-module/components/inserter/block-patterns-tab.js +1 -1
  258. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  259. package/build-module/components/inserter/block-types-tab.js +1 -1
  260. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  261. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  262. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  263. package/build-module/components/inserter/index.js +3 -3
  264. package/build-module/components/inserter/index.js.map +1 -1
  265. package/build-module/components/inserter/index.native.js +7 -7
  266. package/build-module/components/inserter/index.native.js.map +1 -1
  267. package/build-module/components/inserter/menu.js.map +1 -1
  268. package/build-module/components/inserter/menu.native.js +3 -3
  269. package/build-module/components/inserter/menu.native.js.map +1 -1
  270. package/build-module/components/inserter/quick-inserter.js +1 -1
  271. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  272. package/build-module/components/inserter/search-items.js +1 -1
  273. package/build-module/components/inserter/search-items.js.map +1 -1
  274. package/build-module/components/inserter/search-results.js +1 -1
  275. package/build-module/components/inserter/search-results.js.map +1 -1
  276. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  277. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  278. package/build-module/components/letter-spacing-control/index.js +3 -3
  279. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  280. package/build-module/components/line-height-control/index.js +4 -4
  281. package/build-module/components/line-height-control/index.js.map +1 -1
  282. package/build-module/components/line-height-control/index.native.js +3 -1
  283. package/build-module/components/line-height-control/index.native.js.map +1 -1
  284. package/build-module/components/link-control/index.js +2 -2
  285. package/build-module/components/link-control/index.js.map +1 -1
  286. package/build-module/components/link-control/search-input.js +1 -1
  287. package/build-module/components/link-control/search-input.js.map +1 -1
  288. package/build-module/components/link-control/search-results.js +2 -2
  289. package/build-module/components/link-control/search-results.js.map +1 -1
  290. package/build-module/components/link-control/use-rich-url-data.js +1 -1
  291. package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
  292. package/build-module/components/link-control/use-search-handler.js +2 -2
  293. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  294. package/build-module/components/list-view/block-select-button.js +2 -1
  295. package/build-module/components/list-view/block-select-button.js.map +1 -1
  296. package/build-module/components/list-view/block.js +1 -1
  297. package/build-module/components/list-view/block.js.map +1 -1
  298. package/build-module/components/media-placeholder/index.native.js +7 -5
  299. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  300. package/build-module/components/media-replace-flow/index.js +22 -27
  301. package/build-module/components/media-replace-flow/index.js.map +1 -1
  302. package/build-module/components/media-upload/index.native.js +4 -3
  303. package/build-module/components/media-upload/index.native.js.map +1 -1
  304. package/build-module/components/media-upload-progress/index.native.js +1 -1
  305. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  306. package/build-module/components/navigable-toolbar/index.js +3 -3
  307. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  308. package/build-module/components/plain-text/index.native.js +3 -3
  309. package/build-module/components/plain-text/index.native.js.map +1 -1
  310. package/build-module/components/rich-text/format-toolbar-container.js +2 -2
  311. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  312. package/build-module/components/rich-text/format-toolbar-container.native.js +1 -1
  313. package/build-module/components/rich-text/format-toolbar-container.native.js.map +1 -1
  314. package/build-module/components/rich-text/index.native.js +3 -3
  315. package/build-module/components/rich-text/index.native.js.map +1 -1
  316. package/build-module/components/rich-text/use-paste-handler.js +6 -11
  317. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  318. package/build-module/components/url-input/index.js +11 -11
  319. package/build-module/components/url-input/index.js.map +1 -1
  320. package/build-module/components/use-moving-animation/index.js +1 -1
  321. package/build-module/components/use-moving-animation/index.js.map +1 -1
  322. package/build-module/components/use-on-block-drop/index.js +2 -2
  323. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  324. package/build-module/components/writing-flow/use-tab-nav.js +4 -3
  325. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  326. package/build-module/hooks/align.js +1 -1
  327. package/build-module/hooks/align.js.map +1 -1
  328. package/build-module/hooks/anchor.js +1 -1
  329. package/build-module/hooks/anchor.js.map +1 -1
  330. package/build-module/hooks/border.js +2 -14
  331. package/build-module/hooks/border.js.map +1 -1
  332. package/build-module/hooks/color.js +2 -2
  333. package/build-module/hooks/color.js.map +1 -1
  334. package/build-module/hooks/generated-class-name.js +3 -3
  335. package/build-module/hooks/generated-class-name.js.map +1 -1
  336. package/build-module/hooks/lock.js +1 -1
  337. package/build-module/hooks/lock.js.map +1 -1
  338. package/build-module/hooks/style.js +5 -2
  339. package/build-module/hooks/style.js.map +1 -1
  340. package/build-module/store/actions.js +4 -4
  341. package/build-module/store/actions.js.map +1 -1
  342. package/build-module/store/defaults.js +1 -1
  343. package/build-module/store/defaults.js.map +1 -1
  344. package/build-module/store/reducer.js +11 -11
  345. package/build-module/store/reducer.js.map +1 -1
  346. package/build-module/store/selectors.js +6 -6
  347. package/build-module/store/selectors.js.map +1 -1
  348. package/build-module/utils/parse-css-unit-to-px.js +3 -3
  349. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  350. package/build-module/utils/pasting.js +80 -0
  351. package/build-module/utils/pasting.js.map +1 -0
  352. package/build-module/utils/transform-styles/ast/parse.js +5 -5
  353. package/build-module/utils/transform-styles/ast/parse.js.map +1 -1
  354. package/build-module/utils/transform-styles/transforms/url-rewrite.js +2 -2
  355. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  356. package/build-style/style-rtl.css +7 -0
  357. package/build-style/style.css +7 -0
  358. package/package.json +27 -27
  359. package/src/autocompleters/link.js +62 -0
  360. package/src/autocompleters/style.scss +8 -0
  361. package/src/components/alignment-control/test/index.js +2 -2
  362. package/src/components/autocomplete/index.js +2 -0
  363. package/src/components/block-actions/index.js +1 -1
  364. package/src/components/block-alignment-control/test/index.js +1 -1
  365. package/src/components/block-breadcrumb/index.js +5 -2
  366. package/src/components/block-compare/index.js +2 -2
  367. package/src/components/block-controls/index.js +1 -1
  368. package/src/components/block-draggable/index.js +1 -1
  369. package/src/components/block-draggable/stories/index.js +1 -1
  370. package/src/components/block-edit/edit.js +1 -1
  371. package/src/components/block-list/block-html.js +1 -1
  372. package/src/components/block-list/block-invalid-warning.js +1 -1
  373. package/src/components/block-list/block-list-item.native.js +4 -4
  374. package/src/components/block-list/block-selection-button.native.js +3 -3
  375. package/src/components/block-list/block.js +1 -1
  376. package/src/components/block-list/block.native.js +5 -5
  377. package/src/components/block-list/index.native.js +5 -5
  378. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -1
  379. package/src/components/block-media-update-progress/index.native.js +4 -4
  380. package/src/components/block-media-update-progress/test/index.native.js +2 -2
  381. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  382. package/src/components/block-mobile-toolbar/index.native.js +2 -2
  383. package/src/components/block-mover/mover-description.js +4 -4
  384. package/src/components/block-mover/mover-description.native.js +5 -5
  385. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -8
  386. package/src/components/block-styles/preview.native.js +1 -1
  387. package/src/components/block-switcher/index.js +4 -1
  388. package/src/components/block-switcher/use-transformed-patterns.js +0 -1
  389. package/src/components/block-title/README.md +17 -1
  390. package/src/components/block-title/index.js +7 -62
  391. package/src/components/block-title/test/index.js +21 -3
  392. package/src/components/block-title/use-block-display-title.js +83 -0
  393. package/src/components/block-toolbar/utils.js +12 -2
  394. package/src/components/block-tools/block-popover.js +1 -1
  395. package/src/components/block-tools/block-selection-button.js +4 -1
  396. package/src/components/block-types-list/index.native.js +1 -1
  397. package/src/components/border-radius-control/index.js +5 -3
  398. package/src/components/border-radius-control/test/utils.js +10 -10
  399. package/src/components/border-radius-control/utils.js +10 -8
  400. package/src/components/contrast-checker/index.js +3 -3
  401. package/src/components/convert-to-group-buttons/index.js +1 -1
  402. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -6
  403. package/src/components/copy-handler/index.js +2 -2
  404. package/src/components/font-sizes/with-font-sizes.js +3 -3
  405. package/src/components/image-size-control/test/index.js +1 -1
  406. package/src/components/index.native.js +10 -4
  407. package/src/components/inserter/block-patterns-tab.js +1 -1
  408. package/src/components/inserter/block-types-tab.js +1 -1
  409. package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  410. package/src/components/inserter/index.js +3 -3
  411. package/src/components/inserter/index.native.js +7 -7
  412. package/src/components/inserter/menu.js +1 -1
  413. package/src/components/inserter/menu.native.js +3 -3
  414. package/src/components/inserter/quick-inserter.js +1 -1
  415. package/src/components/inserter/search-items.js +1 -1
  416. package/src/components/inserter/search-results.js +1 -1
  417. package/src/components/inserter/test/fixtures/index.native.js +1 -1
  418. package/src/components/inserter/test/reusable-blocks-tab.js +2 -2
  419. package/src/components/justify-content-control/README.md +1 -1
  420. package/src/components/keyboard-shortcuts/index.js +1 -1
  421. package/src/components/letter-spacing-control/index.js +1 -1
  422. package/src/components/line-height-control/index.js +4 -4
  423. package/src/components/line-height-control/index.native.js +2 -0
  424. package/src/components/link-control/index.js +2 -2
  425. package/src/components/link-control/search-input.js +1 -1
  426. package/src/components/link-control/search-results.js +2 -2
  427. package/src/components/link-control/test/index.js +142 -144
  428. package/src/components/link-control/use-rich-url-data.js +1 -1
  429. package/src/components/link-control/use-search-handler.js +2 -2
  430. package/src/components/list-view/block-select-button.js +1 -1
  431. package/src/components/list-view/block.js +1 -1
  432. package/src/components/media-placeholder/index.native.js +11 -9
  433. package/src/components/media-replace-flow/README.md +7 -0
  434. package/src/components/media-replace-flow/index.js +20 -26
  435. package/src/components/media-replace-flow/test/index.js +100 -0
  436. package/src/components/media-upload/index.native.js +3 -2
  437. package/src/components/media-upload-progress/index.native.js +1 -1
  438. package/src/components/navigable-toolbar/index.js +3 -3
  439. package/src/components/plain-text/index.native.js +3 -3
  440. package/src/components/responsive-block-control/test/index.js +6 -6
  441. package/src/components/rich-text/format-toolbar-container.js +2 -2
  442. package/src/components/rich-text/format-toolbar-container.native.js +1 -1
  443. package/src/components/rich-text/index.native.js +3 -3
  444. package/src/components/rich-text/use-paste-handler.js +7 -13
  445. package/src/components/url-input/index.js +11 -11
  446. package/src/components/use-block-drop-zone/test/index.js +1 -1
  447. package/src/components/use-moving-animation/index.js +1 -1
  448. package/src/components/use-on-block-drop/index.js +2 -2
  449. package/src/components/writing-flow/use-tab-nav.js +6 -3
  450. package/src/hooks/align.js +1 -1
  451. package/src/hooks/anchor.js +1 -1
  452. package/src/hooks/border.js +8 -19
  453. package/src/hooks/color.js +2 -2
  454. package/src/hooks/generated-class-name.js +3 -3
  455. package/src/hooks/lock.js +1 -1
  456. package/src/hooks/style.js +5 -2
  457. package/src/hooks/test/align.js +1 -1
  458. package/src/store/actions.js +4 -4
  459. package/src/store/defaults.js +1 -2
  460. package/src/store/reducer.js +11 -11
  461. package/src/store/selectors.js +6 -6
  462. package/src/store/test/actions.js +1 -1
  463. package/src/store/test/reducer.js +1 -1
  464. package/src/store/test/selectors.js +1 -1
  465. package/src/utils/parse-css-unit-to-px.js +3 -3
  466. package/src/utils/pasting.js +77 -0
  467. package/src/utils/test/parse-css-unit-to-px.js +5 -5
  468. package/src/utils/test/pasting.js +84 -0
  469. package/src/utils/transform-styles/ast/parse.js +5 -5
  470. package/src/utils/transform-styles/transforms/url-rewrite.js +2 -2
  471. package/build/utils/get-paste-event-data.js +0 -56
  472. package/build/utils/get-paste-event-data.js.map +0 -1
  473. package/build-module/utils/get-paste-event-data.js +0 -47
  474. package/build-module/utils/get-paste-event-data.js.map +0 -1
  475. package/src/utils/get-paste-event-data.js +0 -42
@@ -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","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,QAA6B;AAAA,MAA3B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,GAA2B;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;AAAA,YAAE;AAAEP,UAAAA;AAAF,SAAF;AAAA,eAAgBA,IAAhB;AAAA,OAAZ,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;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACDP,YAAY,IACX;AAAK,MAAA,SAAS,EAAC;AAAf,OACGH,wBAAwB,IACzB,cAAC,0BAAD;AACC,MAAA,MAAM,EAAGjC,MADV;AAEC,MAAA,QAAQ,EAAGS,QAFZ;AAGC,MAAA,QAAQ,EACPsB,iBADU,IAEN;AACJD,QAAAA,kBAAkB,CACjBC,iBADiB,CAAlB;AAGAY,QAAAA,OAAO;AACP;AAVF,MAFF,EAeGX,+BAA+B,IAChC,cAAC,wBAAD;AACC,MAAA,SAAS,EAAC,oDADX;AAEC,MAAA,4BAA4B,EAC3B5B,4BAHF;AAKC,MAAA,MAAM,EAAGJ,MALV;AAMC,MAAA,QAAQ,EAAKkB,IAAF,IAAY;AACtBW,QAAAA,gBAAgB,CAAEX,IAAF,CAAhB;AACAyB,QAAAA,OAAO;AACP;AATF,MAhBF,EA4BGrC,cAAc,IACf,cAAC,eAAD;AACC,MAAA,YAAY,EAAGN,MAAM,CAAE,CAAF,CADtB;AAEC,MAAA,QAAQ,EAAG2C;AAFZ,MA7BF,CAFA;AAAA,GA5BH,CAFF,CADD,CADD;AA4EA,CApLM;AAsLP,OAAO,MAAMC,aAAa,GAAG,SAAqB;AAAA,MAAnB;AAAE7C,IAAAA;AAAF,GAAmB;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"]}
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":"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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\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\n\t\t\t\t\t\t\t\t\t\t\tclientId={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
@@ -84,7 +84,6 @@ export const getPatternTransformedBlocks = (selectedBlocks, patternBlocks) => {
84
84
  * @param {WPBlock[]} selectedBlocks The currently selected blocks.
85
85
  * @return {TransformedBlockPattern[]} Returns the eligible matched patterns with all the selected blocks.
86
86
  */
87
- // TODO tests
88
87
 
89
88
  const useTransformedPatterns = (patterns, selectedBlocks) => {
90
89
  return useMemo(() => patterns.reduce((accumulator, _pattern) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/use-transformed-patterns.js"],"names":["useMemo","cloneBlock","getMatchingBlockByName","getRetainedBlockAttributes","transformMatchingBlock","match","selectedBlock","retainedBlockAttributes","name","attributes","getPatternTransformedBlocks","selectedBlocks","patternBlocks","_patternBlocks","map","block","consumedBlocks","Set","isMatch","patternBlock","add","clientId","useTransformedPatterns","patterns","reduce","accumulator","_pattern","transformedBlocks","blocks","push"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,EAAiCC,0BAAjC,QAAmE,SAAnE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,sBAAsB,GAAG,CAAEC,KAAF,EAASC,aAAT,KAA4B;AACjE;AACA,QAAMC,uBAAuB,GAAGJ,0BAA0B,CACzDG,aAAa,CAACE,IAD2C,EAEzDF,aAAa,CAACG,UAF2C,CAA1D;AAIAJ,EAAAA,KAAK,CAACI,UAAN,GAAmB,EAClB,GAAGJ,KAAK,CAACI,UADS;AAElB,OAAGF;AAFe,GAAnB;AAIA,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,2BAA2B,GAAG,CAC1CC,cAD0C,EAE1CC,aAF0C,KAGtC;AACJ;AACA,QAAMC,cAAc,GAAGD,aAAa,CAACE,GAAd,CAAqBC,KAAF,IACzCd,UAAU,CAAEc,KAAF,CADY,CAAvB;AAGA;AACD;AACA;AACA;AACA;AACA;;;AACC,QAAMC,cAAc,GAAG,IAAIC,GAAJ,EAAvB;;AACA,OAAM,MAAMX,aAAZ,IAA6BK,cAA7B,EAA8C;AAC7C,QAAIO,OAAO,GAAG,KAAd;;AACA,SAAM,MAAMC,YAAZ,IAA4BN,cAA5B,EAA6C;AAC5C,YAAMR,KAAK,GAAGH,sBAAsB,CACnCiB,YADmC,EAEnCb,aAAa,CAACE,IAFqB,EAGnCQ,cAHmC,CAApC;AAKA,UAAK,CAAEX,KAAP,EAAe;AACfa,MAAAA,OAAO,GAAG,IAAV;AACAF,MAAAA,cAAc,CAACI,GAAf,CAAoBf,KAAK,CAACgB,QAA1B,EAR4C,CAS5C;;AACAjB,MAAAA,sBAAsB,CAAEC,KAAF,EAASC,aAAT,CAAtB,CAV4C,CAW5C;;AACA;AACA,KAf4C,CAgB7C;;;AACA,QAAK,CAAEY,OAAP,EAAiB;AACjB;;AACD,SAAOL,cAAP;AACA,CAnCM;AAqCP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMS,sBAAsB,GAAG,CAAEC,QAAF,EAAYZ,cAAZ,KAAgC;AAC9D,SAAOX,OAAO,CACb,MACCuB,QAAQ,CAACC,MAAT,CAAiB,CAAEC,WAAF,EAAeC,QAAf,KAA6B;AAC7C,UAAMC,iBAAiB,GAAGjB,2BAA2B,CACpDC,cADoD,EAEpDe,QAAQ,CAACE,MAF2C,CAArD;;AAIA,QAAKD,iBAAL,EAAyB;AACxBF,MAAAA,WAAW,CAACI,IAAZ,CAAkB,EACjB,GAAGH,QADc;AAEjBC,QAAAA;AAFiB,OAAlB;AAIA;;AACD,WAAOF,WAAP;AACA,GAZD,EAYG,EAZH,CAFY,EAeb,CAAEF,QAAF,EAAYZ,cAAZ,CAfa,CAAd;AAiBA,CAlBD;;AAoBA,eAAeW,sBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getMatchingBlockByName, getRetainedBlockAttributes } from './utils';\n\n/**\n * Mutate the matched block's attributes by getting\n * which block type's attributes to retain and prioritize\n * them in the merging of the attributes.\n *\n * @param {WPBlock} match The matched block.\n * @param {WPBlock} selectedBlock The selected block.\n * @return {void}\n */\nexport const transformMatchingBlock = ( match, selectedBlock ) => {\n\t// Get the block attributes to retain through the transformation.\n\tconst retainedBlockAttributes = getRetainedBlockAttributes(\n\t\tselectedBlock.name,\n\t\tselectedBlock.attributes\n\t);\n\tmatch.attributes = {\n\t\t...match.attributes,\n\t\t...retainedBlockAttributes,\n\t};\n};\n\n/**\n * By providing the selected blocks and pattern's blocks\n * find the matching blocks, transform them and return them.\n * If not all selected blocks are matched, return nothing.\n *\n * @param {WPBlock[]} selectedBlocks The selected blocks.\n * @param {WPBlock[]} patternBlocks The pattern's blocks.\n * @return {WPBlock[]|void} The transformed pattern's blocks or undefined if not all selected blocks have been matched.\n */\nexport const getPatternTransformedBlocks = (\n\tselectedBlocks,\n\tpatternBlocks\n) => {\n\t// Clone Pattern's blocks to produce new clientIds and be able to mutate the matches.\n\tconst _patternBlocks = patternBlocks.map( ( block ) =>\n\t\tcloneBlock( block )\n\t);\n\t/**\n\t * Keep track of the consumed pattern blocks.\n\t * This is needed because we loop the selected blocks\n\t * and for example we may have selected two paragraphs and\n\t * the pattern's blocks could have more `paragraphs`.\n\t */\n\tconst consumedBlocks = new Set();\n\tfor ( const selectedBlock of selectedBlocks ) {\n\t\tlet isMatch = false;\n\t\tfor ( const patternBlock of _patternBlocks ) {\n\t\t\tconst match = getMatchingBlockByName(\n\t\t\t\tpatternBlock,\n\t\t\t\tselectedBlock.name,\n\t\t\t\tconsumedBlocks\n\t\t\t);\n\t\t\tif ( ! match ) continue;\n\t\t\tisMatch = true;\n\t\t\tconsumedBlocks.add( match.clientId );\n\t\t\t// We update (mutate) the matching pattern block.\n\t\t\ttransformMatchingBlock( match, selectedBlock );\n\t\t\t// No need to loop through other pattern's blocks.\n\t\t\tbreak;\n\t\t}\n\t\t// Bail eary if a selected block has not been matched.\n\t\tif ( ! isMatch ) return;\n\t}\n\treturn _patternBlocks;\n};\n\n/**\n * @typedef {WPBlockPattern & {transformedBlocks: WPBlock[]}} TransformedBlockPattern\n */\n\n/**\n * Custom hook that accepts patterns from state and the selected\n * blocks and tries to match these with the pattern's blocks.\n * If all selected blocks are matched with a Pattern's block,\n * we transform them by retaining block's attributes with `role:content`.\n * The transformed pattern's blocks are set to a new pattern\n * property `transformedBlocks`.\n *\n * @param {WPBlockPattern[]} patterns Patterns from state.\n * @param {WPBlock[]} selectedBlocks The currently selected blocks.\n * @return {TransformedBlockPattern[]} Returns the eligible matched patterns with all the selected blocks.\n */\n// TODO tests\nconst useTransformedPatterns = ( patterns, selectedBlocks ) => {\n\treturn useMemo(\n\t\t() =>\n\t\t\tpatterns.reduce( ( accumulator, _pattern ) => {\n\t\t\t\tconst transformedBlocks = getPatternTransformedBlocks(\n\t\t\t\t\tselectedBlocks,\n\t\t\t\t\t_pattern.blocks\n\t\t\t\t);\n\t\t\t\tif ( transformedBlocks ) {\n\t\t\t\t\taccumulator.push( {\n\t\t\t\t\t\t..._pattern,\n\t\t\t\t\t\ttransformedBlocks,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] ),\n\t\t[ patterns, selectedBlocks ]\n\t);\n};\n\nexport default useTransformedPatterns;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/use-transformed-patterns.js"],"names":["useMemo","cloneBlock","getMatchingBlockByName","getRetainedBlockAttributes","transformMatchingBlock","match","selectedBlock","retainedBlockAttributes","name","attributes","getPatternTransformedBlocks","selectedBlocks","patternBlocks","_patternBlocks","map","block","consumedBlocks","Set","isMatch","patternBlock","add","clientId","useTransformedPatterns","patterns","reduce","accumulator","_pattern","transformedBlocks","blocks","push"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,EAAiCC,0BAAjC,QAAmE,SAAnE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,sBAAsB,GAAG,CAAEC,KAAF,EAASC,aAAT,KAA4B;AACjE;AACA,QAAMC,uBAAuB,GAAGJ,0BAA0B,CACzDG,aAAa,CAACE,IAD2C,EAEzDF,aAAa,CAACG,UAF2C,CAA1D;AAIAJ,EAAAA,KAAK,CAACI,UAAN,GAAmB,EAClB,GAAGJ,KAAK,CAACI,UADS;AAElB,OAAGF;AAFe,GAAnB;AAIA,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,2BAA2B,GAAG,CAC1CC,cAD0C,EAE1CC,aAF0C,KAGtC;AACJ;AACA,QAAMC,cAAc,GAAGD,aAAa,CAACE,GAAd,CAAqBC,KAAF,IACzCd,UAAU,CAAEc,KAAF,CADY,CAAvB;AAGA;AACD;AACA;AACA;AACA;AACA;;;AACC,QAAMC,cAAc,GAAG,IAAIC,GAAJ,EAAvB;;AACA,OAAM,MAAMX,aAAZ,IAA6BK,cAA7B,EAA8C;AAC7C,QAAIO,OAAO,GAAG,KAAd;;AACA,SAAM,MAAMC,YAAZ,IAA4BN,cAA5B,EAA6C;AAC5C,YAAMR,KAAK,GAAGH,sBAAsB,CACnCiB,YADmC,EAEnCb,aAAa,CAACE,IAFqB,EAGnCQ,cAHmC,CAApC;AAKA,UAAK,CAAEX,KAAP,EAAe;AACfa,MAAAA,OAAO,GAAG,IAAV;AACAF,MAAAA,cAAc,CAACI,GAAf,CAAoBf,KAAK,CAACgB,QAA1B,EAR4C,CAS5C;;AACAjB,MAAAA,sBAAsB,CAAEC,KAAF,EAASC,aAAT,CAAtB,CAV4C,CAW5C;;AACA;AACA,KAf4C,CAgB7C;;;AACA,QAAK,CAAEY,OAAP,EAAiB;AACjB;;AACD,SAAOL,cAAP;AACA,CAnCM;AAqCP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMS,sBAAsB,GAAG,CAAEC,QAAF,EAAYZ,cAAZ,KAAgC;AAC9D,SAAOX,OAAO,CACb,MACCuB,QAAQ,CAACC,MAAT,CAAiB,CAAEC,WAAF,EAAeC,QAAf,KAA6B;AAC7C,UAAMC,iBAAiB,GAAGjB,2BAA2B,CACpDC,cADoD,EAEpDe,QAAQ,CAACE,MAF2C,CAArD;;AAIA,QAAKD,iBAAL,EAAyB;AACxBF,MAAAA,WAAW,CAACI,IAAZ,CAAkB,EACjB,GAAGH,QADc;AAEjBC,QAAAA;AAFiB,OAAlB;AAIA;;AACD,WAAOF,WAAP;AACA,GAZD,EAYG,EAZH,CAFY,EAeb,CAAEF,QAAF,EAAYZ,cAAZ,CAfa,CAAd;AAiBA,CAlBD;;AAoBA,eAAeW,sBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getMatchingBlockByName, getRetainedBlockAttributes } from './utils';\n\n/**\n * Mutate the matched block's attributes by getting\n * which block type's attributes to retain and prioritize\n * them in the merging of the attributes.\n *\n * @param {WPBlock} match The matched block.\n * @param {WPBlock} selectedBlock The selected block.\n * @return {void}\n */\nexport const transformMatchingBlock = ( match, selectedBlock ) => {\n\t// Get the block attributes to retain through the transformation.\n\tconst retainedBlockAttributes = getRetainedBlockAttributes(\n\t\tselectedBlock.name,\n\t\tselectedBlock.attributes\n\t);\n\tmatch.attributes = {\n\t\t...match.attributes,\n\t\t...retainedBlockAttributes,\n\t};\n};\n\n/**\n * By providing the selected blocks and pattern's blocks\n * find the matching blocks, transform them and return them.\n * If not all selected blocks are matched, return nothing.\n *\n * @param {WPBlock[]} selectedBlocks The selected blocks.\n * @param {WPBlock[]} patternBlocks The pattern's blocks.\n * @return {WPBlock[]|void} The transformed pattern's blocks or undefined if not all selected blocks have been matched.\n */\nexport const getPatternTransformedBlocks = (\n\tselectedBlocks,\n\tpatternBlocks\n) => {\n\t// Clone Pattern's blocks to produce new clientIds and be able to mutate the matches.\n\tconst _patternBlocks = patternBlocks.map( ( block ) =>\n\t\tcloneBlock( block )\n\t);\n\t/**\n\t * Keep track of the consumed pattern blocks.\n\t * This is needed because we loop the selected blocks\n\t * and for example we may have selected two paragraphs and\n\t * the pattern's blocks could have more `paragraphs`.\n\t */\n\tconst consumedBlocks = new Set();\n\tfor ( const selectedBlock of selectedBlocks ) {\n\t\tlet isMatch = false;\n\t\tfor ( const patternBlock of _patternBlocks ) {\n\t\t\tconst match = getMatchingBlockByName(\n\t\t\t\tpatternBlock,\n\t\t\t\tselectedBlock.name,\n\t\t\t\tconsumedBlocks\n\t\t\t);\n\t\t\tif ( ! match ) continue;\n\t\t\tisMatch = true;\n\t\t\tconsumedBlocks.add( match.clientId );\n\t\t\t// We update (mutate) the matching pattern block.\n\t\t\ttransformMatchingBlock( match, selectedBlock );\n\t\t\t// No need to loop through other pattern's blocks.\n\t\t\tbreak;\n\t\t}\n\t\t// Bail eary if a selected block has not been matched.\n\t\tif ( ! isMatch ) return;\n\t}\n\treturn _patternBlocks;\n};\n\n/**\n * @typedef {WPBlockPattern & {transformedBlocks: WPBlock[]}} TransformedBlockPattern\n */\n\n/**\n * Custom hook that accepts patterns from state and the selected\n * blocks and tries to match these with the pattern's blocks.\n * If all selected blocks are matched with a Pattern's block,\n * we transform them by retaining block's attributes with `role:content`.\n * The transformed pattern's blocks are set to a new pattern\n * property `transformedBlocks`.\n *\n * @param {WPBlockPattern[]} patterns Patterns from state.\n * @param {WPBlock[]} selectedBlocks The currently selected blocks.\n * @return {TransformedBlockPattern[]} Returns the eligible matched patterns with all the selected blocks.\n */\nconst useTransformedPatterns = ( patterns, selectedBlocks ) => {\n\treturn useMemo(\n\t\t() =>\n\t\t\tpatterns.reduce( ( accumulator, _pattern ) => {\n\t\t\t\tconst transformedBlocks = getPatternTransformedBlocks(\n\t\t\t\t\tselectedBlocks,\n\t\t\t\t\t_pattern.blocks\n\t\t\t\t);\n\t\t\t\tif ( transformedBlocks ) {\n\t\t\t\t\taccumulator.push( {\n\t\t\t\t\t\t..._pattern,\n\t\t\t\t\t\ttransformedBlocks,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] ),\n\t\t[ patterns, selectedBlocks ]\n\t);\n};\n\nexport default useTransformedPatterns;\n"]}
@@ -1,19 +1,7 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { truncate } from 'lodash';
5
- /**
6
- * WordPress dependencies
7
- */
8
-
9
- import { useSelect } from '@wordpress/data';
10
- import { getBlockType, __experimentalGetBlockLabel as getBlockLabel, isReusableBlock } from '@wordpress/blocks';
11
1
  /**
12
2
  * Internal dependencies
13
3
  */
14
-
15
- import useBlockDisplayInformation from '../use-block-display-information';
16
- import { store as blockEditorStore } from '../../store';
4
+ import useBlockDisplayTitle from './use-block-display-title';
17
5
  /**
18
6
  * Renders the block's configured title as a string, or empty if the title
19
7
  * cannot be determined.
@@ -21,60 +9,21 @@ import { store as blockEditorStore } from '../../store';
21
9
  * @example
22
10
  *
23
11
  * ```jsx
24
- * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" />
12
+ * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" maximumLength={ 17 }/>
25
13
  * ```
26
14
  *
27
15
  * @param {Object} props
28
16
  * @param {string} props.clientId Client ID of block.
17
+ * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
29
18
  *
30
- * @return {?string} Block title.
19
+ * @return {JSX.Element} Block title.
31
20
  */
32
21
 
33
22
  export default function BlockTitle(_ref) {
34
23
  let {
35
- clientId
24
+ clientId,
25
+ maximumLength
36
26
  } = _ref;
37
- const {
38
- attributes,
39
- name,
40
- reusableBlockTitle
41
- } = useSelect(select => {
42
- if (!clientId) {
43
- return {};
44
- }
45
-
46
- const {
47
- getBlockName,
48
- getBlockAttributes,
49
- __experimentalGetReusableBlockTitle
50
- } = select(blockEditorStore);
51
- const blockName = getBlockName(clientId);
52
-
53
- if (!blockName) {
54
- return {};
55
- }
56
-
57
- const isReusable = isReusableBlock(getBlockType(blockName));
58
- return {
59
- attributes: getBlockAttributes(clientId),
60
- name: blockName,
61
- reusableBlockTitle: isReusable && __experimentalGetReusableBlockTitle(getBlockAttributes(clientId).ref)
62
- };
63
- }, [clientId]);
64
- const blockInformation = useBlockDisplayInformation(clientId);
65
- if (!name || !blockInformation) return null;
66
- const blockType = getBlockType(name);
67
- const blockLabel = blockType ? getBlockLabel(blockType, attributes) : null;
68
- const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
69
- // label context. If the label is defined we prioritize it over possible
70
- // possible block variation title match.
71
-
72
- if (label && label !== blockType.title) {
73
- return truncate(label, {
74
- length: 35
75
- });
76
- }
77
-
78
- return blockInformation.title;
27
+ return useBlockDisplayTitle(clientId, maximumLength);
79
28
  }
80
29
  //# sourceMappingURL=index.js.map
@@ -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","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,OAAoC;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["useBlockDisplayTitle","BlockTitle","clientId","maximumLength"],"mappings":"AAAA;AACA;AACA;AAEA,OAAOA,oBAAP,MAAiC,2BAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,UAAT,OAAmD;AAAA,MAA9B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAA8B;AACjE,SAAOH,oBAAoB,CAAEE,QAAF,EAAYC,aAAZ,CAA3B;AACA","sourcesContent":["/**\n * Internal dependencies\n */\n\nimport useBlockDisplayTitle from './use-block-display-title';\n\n/**\n * Renders the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```jsx\n * <BlockTitle clientId=\"afd1cb17-2c08-4e7a-91be-007ba7ddc3a1\" maximumLength={ 17 }/>\n * ```\n *\n * @param {Object} props\n * @param {string} props.clientId Client ID of block.\n * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.\n *\n * @return {JSX.Element} Block title.\n */\nexport default function BlockTitle( { clientId, maximumLength } ) {\n\treturn useBlockDisplayTitle( clientId, maximumLength );\n}\n"]}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { truncate } from 'lodash';
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+
9
+ import { useSelect } from '@wordpress/data';
10
+ import { getBlockType, __experimentalGetBlockLabel as getBlockLabel, isReusableBlock } from '@wordpress/blocks';
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+
15
+ import useBlockDisplayInformation from '../use-block-display-information';
16
+ import { store as blockEditorStore } from '../../store';
17
+ /**
18
+ * Returns the block's configured title as a string, or empty if the title
19
+ * cannot be determined.
20
+ *
21
+ * @example
22
+ *
23
+ * ```js
24
+ * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );
25
+ * ```
26
+ *
27
+ * @param {string} clientId Client ID of block.
28
+ * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.
29
+ * @return {?string} Block title.
30
+ */
31
+
32
+ export default function useBlockDisplayTitle(clientId, maximumLength) {
33
+ const {
34
+ attributes,
35
+ name,
36
+ reusableBlockTitle
37
+ } = useSelect(select => {
38
+ if (!clientId) {
39
+ return {};
40
+ }
41
+
42
+ const {
43
+ getBlockName,
44
+ getBlockAttributes,
45
+ __experimentalGetReusableBlockTitle
46
+ } = select(blockEditorStore);
47
+ const blockName = getBlockName(clientId);
48
+
49
+ if (!blockName) {
50
+ return {};
51
+ }
52
+
53
+ const isReusable = isReusableBlock(getBlockType(blockName));
54
+ return {
55
+ attributes: getBlockAttributes(clientId),
56
+ name: blockName,
57
+ reusableBlockTitle: isReusable && __experimentalGetReusableBlockTitle(getBlockAttributes(clientId).ref)
58
+ };
59
+ }, [clientId]);
60
+ const blockInformation = useBlockDisplayInformation(clientId);
61
+
62
+ if (!name || !blockInformation) {
63
+ return null;
64
+ }
65
+
66
+ const blockType = getBlockType(name);
67
+ const blockLabel = blockType ? getBlockLabel(blockType, attributes) : null;
68
+ const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
69
+ // label context. If the label is defined we prioritize it over possible
70
+ // possible block variation title match.
71
+
72
+ if (label && label !== blockType.title) {
73
+ return maximumLength && maximumLength > 0 ? truncate(label, {
74
+ length: maximumLength
75
+ }) : label;
76
+ }
77
+
78
+ return blockInformation.title;
79
+ }
80
+ //# sourceMappingURL=use-block-display-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/use-block-display-title.js"],"names":["truncate","useSelect","getBlockType","__experimentalGetBlockLabel","getBlockLabel","isReusableBlock","useBlockDisplayInformation","store","blockEditorStore","useBlockDisplayTitle","clientId","maximumLength","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","title","length"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,QAAzB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,YADD,EAECC,2BAA2B,IAAIC,aAFhC,EAGCC,eAHD,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,oBAAT,CAA+BC,QAA/B,EAAyCC,aAAzC,EAAyD;AACvE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2Cb,SAAS,CACvDc,MAAF,IAAc;AACb,QAAK,CAAEL,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLM,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEP,gBAAF,CAJV;AAKA,UAAMW,SAAS,GAAGH,YAAY,CAAEN,QAAF,CAA9B;;AACA,QAAK,CAAES,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGf,eAAe,CAAEH,YAAY,CAAEiB,SAAF,CAAd,CAAlC;AACA,WAAO;AACNP,MAAAA,UAAU,EAAEK,kBAAkB,CAAEP,QAAF,CADxB;AAENG,MAAAA,IAAI,EAAEM,SAFA;AAGNL,MAAAA,kBAAkB,EACjBM,UAAU,IACVF,mCAAmC,CAClCD,kBAAkB,CAAEP,QAAF,CAAlB,CAA+BW,GADG;AAL9B,KAAP;AASA,GAxBwD,EAyBzD,CAAEX,QAAF,CAzByD,CAA1D;AA4BA,QAAMY,gBAAgB,GAAGhB,0BAA0B,CAAEI,QAAF,CAAnD;;AACA,MAAK,CAAEG,IAAF,IAAU,CAAES,gBAAjB,EAAoC;AACnC,WAAO,IAAP;AACA;;AACD,QAAMC,SAAS,GAAGrB,YAAY,CAAEW,IAAF,CAA9B;AACA,QAAMW,UAAU,GAAGD,SAAS,GACzBnB,aAAa,CAAEmB,SAAF,EAAaX,UAAb,CADY,GAEzB,IAFH;AAGA,QAAMa,KAAK,GAAGX,kBAAkB,IAAIU,UAApC,CArCuE,CAsCvE;AACA;AACA;;AACA,MAAKC,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACG,KAAlC,EAA0C;AACzC,WAAOf,aAAa,IAAIA,aAAa,GAAG,CAAjC,GACJX,QAAQ,CAAEyB,KAAF,EAAS;AAAEE,MAAAA,MAAM,EAAEhB;AAAV,KAAT,CADJ,GAEJc,KAFH;AAGA;;AACD,SAAOH,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 * Returns the block's configured title as a string, or empty if the title\n * cannot be determined.\n *\n * @example\n *\n * ```js\n * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );\n * ```\n *\n * @param {string} clientId Client ID of block.\n * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.\n * @return {?string} Block title.\n */\nexport default function useBlockDisplayTitle( clientId, maximumLength ) {\n\tconst { attributes, name, reusableBlockTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\t__experimentalGetReusableBlockTitle,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tif ( ! blockName ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst isReusable = isReusableBlock( getBlockType( blockName ) );\n\t\t\treturn {\n\t\t\t\tattributes: getBlockAttributes( clientId ),\n\t\t\t\tname: blockName,\n\t\t\t\treusableBlockTitle:\n\t\t\t\t\tisReusable &&\n\t\t\t\t\t__experimentalGetReusableBlockTitle(\n\t\t\t\t\t\tgetBlockAttributes( clientId ).ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tif ( ! name || ! blockInformation ) {\n\t\treturn null;\n\t}\n\tconst blockType = getBlockType( name );\n\tconst blockLabel = blockType\n\t\t? getBlockLabel( blockType, attributes )\n\t\t: null;\n\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 maximumLength && maximumLength > 0\n\t\t\t? truncate( label, { length: maximumLength } )\n\t\t\t: label;\n\t}\n\treturn blockInformation.title;\n}\n"]}
@@ -82,7 +82,15 @@ export function useDebouncedShowMovers(_ref) {
82
82
  }, debounceTimeout);
83
83
  };
84
84
 
85
- useEffect(() => () => clearTimeoutRef(), []);
85
+ useEffect(() => () => {
86
+ /**
87
+ * We need to call the change handler with `isFocused`
88
+ * set to false on unmount because we also clear the
89
+ * timeout that would handle that.
90
+ */
91
+ handleOnChange(false);
92
+ clearTimeoutRef();
93
+ }, []);
86
94
  return {
87
95
  showMovers,
88
96
  debouncedShowMovers,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["noop","useState","useRef","useEffect","clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowMovers","ref","isFocused","debounceTimeout","onChange","showMovers","setShowMovers","timeoutRef","handleOnChange","nextIsFocused","current","getIsHovered","matches","shouldHideMovers","isHovered","clearTimeoutRef","timeout","debouncedShowMovers","event","stopPropagation","debouncedHideMovers","useShowMoversGestures","setIsFocused","registerRef","isFocusedWithin","contains","ownerDocument","activeElement","node","handleOnFocus","handleOnBlur","addEventListener","removeEventListener","gestures","onMouseMove","onMouseLeave"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\nconst { clearTimeout, setTimeout } = window;\n\nconst DEBOUNCE_TIMEOUT = 200;\n\n/**\n * Hook that creates a showMover state, as well as debounced show/hide callbacks.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {boolean} props.isFocused Whether the component has current focus.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n * @param {Function} [props.onChange=noop] Callback function.\n */\nexport function useDebouncedShowMovers( {\n\tref,\n\tisFocused,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n\tonChange = noop,\n} ) {\n\tconst [ showMovers, setShowMovers ] = useState( false );\n\tconst timeoutRef = useRef();\n\n\tconst handleOnChange = ( nextIsFocused ) => {\n\t\tif ( ref?.current ) {\n\t\t\tsetShowMovers( nextIsFocused );\n\t\t}\n\n\t\tonChange( nextIsFocused );\n\t};\n\n\tconst getIsHovered = () => {\n\t\treturn ref?.current && ref.current.matches( ':hover' );\n\t};\n\n\tconst shouldHideMovers = () => {\n\t\tconst isHovered = getIsHovered();\n\n\t\treturn ! isFocused && ! isHovered;\n\t};\n\n\tconst clearTimeoutRef = () => {\n\t\tconst timeout = timeoutRef.current;\n\n\t\tif ( timeout && clearTimeout ) {\n\t\t\tclearTimeout( timeout );\n\t\t}\n\t};\n\n\tconst debouncedShowMovers = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\tif ( ! showMovers ) {\n\t\t\thandleOnChange( true );\n\t\t}\n\t};\n\n\tconst debouncedHideMovers = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\tif ( shouldHideMovers() ) {\n\t\t\t\thandleOnChange( false );\n\t\t\t}\n\t\t}, debounceTimeout );\n\t};\n\n\tuseEffect( () => () => clearTimeoutRef(), [] );\n\n\treturn {\n\t\tshowMovers,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t};\n}\n\n/**\n * Hook that provides a showMovers state and gesture events for DOM elements\n * that interact with the showMovers state.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n * @param {Function} [props.onChange=noop] Callback function.\n */\nexport function useShowMoversGestures( {\n\tref,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n\tonChange = noop,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst {\n\t\tshowMovers,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t} = useDebouncedShowMovers( { ref, debounceTimeout, isFocused, onChange } );\n\n\tconst registerRef = useRef( false );\n\n\tconst isFocusedWithin = () => {\n\t\treturn (\n\t\t\tref?.current &&\n\t\t\tref.current.contains( ref.current.ownerDocument.activeElement )\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tconst node = ref.current;\n\n\t\tconst handleOnFocus = () => {\n\t\t\tif ( isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( true );\n\t\t\t\tdebouncedShowMovers();\n\t\t\t}\n\t\t};\n\n\t\tconst handleOnBlur = () => {\n\t\t\tif ( ! isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( false );\n\t\t\t\tdebouncedHideMovers();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Events are added via DOM events (vs. React synthetic events),\n\t\t * as the child React components swallow mouse events.\n\t\t */\n\t\tif ( node && ! registerRef.current ) {\n\t\t\tnode.addEventListener( 'focus', handleOnFocus, true );\n\t\t\tnode.addEventListener( 'blur', handleOnBlur, true );\n\t\t\tregisterRef.current = true;\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( node ) {\n\t\t\t\tnode.removeEventListener( 'focus', handleOnFocus );\n\t\t\t\tnode.removeEventListener( 'blur', handleOnBlur );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tref,\n\t\tregisterRef,\n\t\tsetIsFocused,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t] );\n\n\treturn {\n\t\tshowMovers,\n\t\tgestures: {\n\t\t\tonMouseMove: debouncedShowMovers,\n\t\t\tonMouseLeave: debouncedHideMovers,\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["noop","useState","useRef","useEffect","clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowMovers","ref","isFocused","debounceTimeout","onChange","showMovers","setShowMovers","timeoutRef","handleOnChange","nextIsFocused","current","getIsHovered","matches","shouldHideMovers","isHovered","clearTimeoutRef","timeout","debouncedShowMovers","event","stopPropagation","debouncedHideMovers","useShowMoversGestures","setIsFocused","registerRef","isFocusedWithin","contains","ownerDocument","activeElement","node","handleOnFocus","handleOnBlur","addEventListener","removeEventListener","gestures","onMouseMove","onMouseLeave"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\nconst { clearTimeout, setTimeout } = window;\n\nconst DEBOUNCE_TIMEOUT = 200;\n\n/**\n * Hook that creates a showMover state, as well as debounced show/hide callbacks.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {boolean} props.isFocused Whether the component has current focus.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n * @param {Function} [props.onChange=noop] Callback function.\n */\nexport function useDebouncedShowMovers( {\n\tref,\n\tisFocused,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n\tonChange = noop,\n} ) {\n\tconst [ showMovers, setShowMovers ] = useState( false );\n\tconst timeoutRef = useRef();\n\n\tconst handleOnChange = ( nextIsFocused ) => {\n\t\tif ( ref?.current ) {\n\t\t\tsetShowMovers( nextIsFocused );\n\t\t}\n\n\t\tonChange( nextIsFocused );\n\t};\n\n\tconst getIsHovered = () => {\n\t\treturn ref?.current && ref.current.matches( ':hover' );\n\t};\n\n\tconst shouldHideMovers = () => {\n\t\tconst isHovered = getIsHovered();\n\t\treturn ! isFocused && ! isHovered;\n\t};\n\n\tconst clearTimeoutRef = () => {\n\t\tconst timeout = timeoutRef.current;\n\n\t\tif ( timeout && clearTimeout ) {\n\t\t\tclearTimeout( timeout );\n\t\t}\n\t};\n\n\tconst debouncedShowMovers = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\tif ( ! showMovers ) {\n\t\t\thandleOnChange( true );\n\t\t}\n\t};\n\n\tconst debouncedHideMovers = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\tif ( shouldHideMovers() ) {\n\t\t\t\thandleOnChange( false );\n\t\t\t}\n\t\t}, debounceTimeout );\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\t/**\n\t\t\t * We need to call the change handler with `isFocused`\n\t\t\t * set to false on unmount because we also clear the\n\t\t\t * timeout that would handle that.\n\t\t\t */\n\t\t\thandleOnChange( false );\n\t\t\tclearTimeoutRef();\n\t\t},\n\t\t[]\n\t);\n\n\treturn {\n\t\tshowMovers,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t};\n}\n\n/**\n * Hook that provides a showMovers state and gesture events for DOM elements\n * that interact with the showMovers state.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n * @param {Function} [props.onChange=noop] Callback function.\n */\nexport function useShowMoversGestures( {\n\tref,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n\tonChange = noop,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst {\n\t\tshowMovers,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t} = useDebouncedShowMovers( { ref, debounceTimeout, isFocused, onChange } );\n\n\tconst registerRef = useRef( false );\n\n\tconst isFocusedWithin = () => {\n\t\treturn (\n\t\t\tref?.current &&\n\t\t\tref.current.contains( ref.current.ownerDocument.activeElement )\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tconst node = ref.current;\n\n\t\tconst handleOnFocus = () => {\n\t\t\tif ( isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( true );\n\t\t\t\tdebouncedShowMovers();\n\t\t\t}\n\t\t};\n\n\t\tconst handleOnBlur = () => {\n\t\t\tif ( ! isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( false );\n\t\t\t\tdebouncedHideMovers();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Events are added via DOM events (vs. React synthetic events),\n\t\t * as the child React components swallow mouse events.\n\t\t */\n\t\tif ( node && ! registerRef.current ) {\n\t\t\tnode.addEventListener( 'focus', handleOnFocus, true );\n\t\t\tnode.addEventListener( 'blur', handleOnBlur, true );\n\t\t\tregisterRef.current = true;\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( node ) {\n\t\t\t\tnode.removeEventListener( 'focus', handleOnFocus );\n\t\t\t\tnode.removeEventListener( 'blur', handleOnBlur );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tref,\n\t\tregisterRef,\n\t\tsetIsFocused,\n\t\tdebouncedShowMovers,\n\t\tdebouncedHideMovers,\n\t] );\n\n\treturn {\n\t\tshowMovers,\n\t\tgestures: {\n\t\t\tonMouseMove: debouncedShowMovers,\n\t\t\tonMouseLeave: debouncedHideMovers,\n\t\t},\n\t};\n}\n"]}
@@ -246,7 +246,7 @@ function wrapperSelector(select) {
246
246
  attributes = {},
247
247
  isValid
248
248
  } = getBlock(clientId) || {};
249
- const blockParentsClientIds = getBlockParents(clientId); // Get Block List Settings for all ancestors of the current Block clientId
249
+ const blockParentsClientIds = getBlockParents(clientId); // Get Block List Settings for all ancestors of the current Block clientId.
250
250
 
251
251
  const parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(blockParentsClientIds); // Get the clientId of the topmost parent with the capture toolbars setting.
252
252
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-popover.js"],"names":["find","classnames","useState","useRef","useEffect","isUnmodifiedDefaultBlock","Popover","useDispatch","useSelect","useShortcut","useViewportMatch","getScrollContainer","BlockSelectionButton","BlockContextualToolbar","Inserter","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","usePopoverScroll","selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","isCaretWithinFormattedText","getSettings","getLastMultiSelectedBlockClientId","hasFixedToolbar","lastClientId","BlockPopover","clientId","rootClientId","isValid","isEmptyDefaultBlock","capturingClientId","__unstablePopoverSlot","__unstableContentRef","isInsertionPointVisible","isBlockInsertionPointVisible","getBlockInsertionPoint","getBlockOrder","insertionPoint","order","index","isLargeViewport","isToolbarForced","setIsToolbarForced","isInserterShown","setIsInserterShown","stopTyping","showEmptyBlockSideInserter","shouldShowBreadcrumb","shouldShowContextualToolbar","canFocusHiddenToolbar","isDisabled","initialToolbarItemIndexRef","selectedElement","lastSelectedElement","capturingElement","popoverScrollRef","node","anchorRef","top","bottom","onFocus","onBlur","popoverPosition","ownerDocument","stickyBoundaryElement","undefined","defaultView","frameElement","body","current","wrapperSelector","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlockRootClientId","getBlock","getBlockParents","__experimentalGetBlockListSettingsForBlocks","name","attributes","blockParentsClientIds","parentBlockListSettings","parentClientId","__experimentalCaptureToolbars","WrappedBlockPopover","selected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { Popover } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockSelectionButton from './block-selection-button';\nimport BlockContextualToolbar from './block-contextual-toolbar';\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { usePopoverScroll } from './use-popover-scroll';\n\nfunction selector( select ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\thasMultiSelection,\n\t\tisTyping,\n\t\tisCaretWithinFormattedText,\n\t\tgetSettings,\n\t\tgetLastMultiSelectedBlockClientId,\n\t} = select( blockEditorStore );\n\treturn {\n\t\tisNavigationMode: isNavigationMode(),\n\t\tisMultiSelecting: isMultiSelecting(),\n\t\tisTyping: isTyping(),\n\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\thasMultiSelection: hasMultiSelection(),\n\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\tlastClientId: getLastMultiSelectedBlockClientId(),\n\t};\n}\n\nfunction BlockPopover( {\n\tclientId,\n\trootClientId,\n\tisValid,\n\tisEmptyDefaultBlock,\n\tcapturingClientId,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\tisTyping,\n\t\tisCaretWithinFormattedText,\n\t\thasMultiSelection,\n\t\thasFixedToolbar,\n\t\tlastClientId,\n\t} = useSelect( selector, [] );\n\tconst isInsertionPointVisible = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockInsertionPointVisible() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\t\t\treturn order[ insertionPoint.index ] === clientId;\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst [ isToolbarForced, setIsToolbarForced ] = useState( false );\n\tconst [ isInserterShown, setIsInserterShown ] = useState( false );\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\t// Controls when the side inserter on empty lines should\n\t// be shown, including writing and selection modes.\n\tconst showEmptyBlockSideInserter =\n\t\t! isTyping && ! isNavigationMode && isEmptyDefaultBlock && isValid;\n\tconst shouldShowBreadcrumb = isNavigationMode;\n\tconst shouldShowContextualToolbar =\n\t\t! isNavigationMode &&\n\t\t! hasFixedToolbar &&\n\t\tisLargeViewport &&\n\t\t! showEmptyBlockSideInserter &&\n\t\t! isMultiSelecting &&\n\t\t( ! isTyping || isCaretWithinFormattedText );\n\tconst canFocusHiddenToolbar =\n\t\t! isNavigationMode &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! hasFixedToolbar &&\n\t\t! isEmptyDefaultBlock;\n\n\tuseShortcut(\n\t\t'core/block-editor/focus-toolbar',\n\t\t() => {\n\t\t\tsetIsToolbarForced( true );\n\t\t\tstopTyping( true );\n\t\t},\n\t\t{\n\t\t\tisDisabled: ! canFocusHiddenToolbar,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! shouldShowContextualToolbar ) {\n\t\t\tsetIsToolbarForced( false );\n\t\t}\n\t}, [ shouldShowContextualToolbar ] );\n\n\t// Stores the active toolbar item index so the block toolbar can return focus\n\t// to it when re-mounting.\n\tconst initialToolbarItemIndexRef = useRef();\n\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( lastClientId );\n\tconst capturingElement = useBlockElement( capturingClientId );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\tif (\n\t\t! shouldShowBreadcrumb &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! isToolbarForced &&\n\t\t! showEmptyBlockSideInserter\n\t) {\n\t\treturn null;\n\t}\n\n\tlet node = selectedElement;\n\n\tif ( ! node ) {\n\t\treturn null;\n\t}\n\n\tif ( capturingClientId ) {\n\t\tnode = capturingElement;\n\t}\n\n\tlet anchorRef = node;\n\n\tif ( hasMultiSelection ) {\n\t\t// Wait to render the popover until the bottom reference is available\n\t\t// as well.\n\t\tif ( ! lastSelectedElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tanchorRef = {\n\t\t\ttop: node,\n\t\t\tbottom: lastSelectedElement,\n\t\t};\n\t}\n\n\tfunction onFocus() {\n\t\tsetIsInserterShown( true );\n\t}\n\n\tfunction onBlur() {\n\t\tsetIsInserterShown( false );\n\t}\n\n\t// Position above the anchor, pop out towards the right, and position in the\n\t// left corner. For the side inserter, pop out towards the left, and\n\t// position in the right corner.\n\t// To do: refactor `Popover` to make this prop clearer.\n\tconst popoverPosition = showEmptyBlockSideInserter\n\t\t? 'top left right'\n\t\t: 'top right left';\n\tconst { ownerDocument } = node;\n\tconst stickyBoundaryElement = showEmptyBlockSideInserter\n\t\t? undefined\n\t\t: // The sticky boundary element should be the boundary at which the\n\t\t // the block toolbar becomes sticky when the block scolls out of view.\n\t\t // In case of an iframe, this should be the iframe boundary, otherwise\n\t\t // the scroll container.\n\t\t ownerDocument.defaultView.frameElement ||\n\t\t getScrollContainer( node ) ||\n\t\t ownerDocument.body;\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tnoArrow\n\t\t\tanimate={ false }\n\t\t\tposition={ popoverPosition }\n\t\t\tfocusOnMount={ false }\n\t\t\tanchorRef={ anchorRef }\n\t\t\tclassName={ classnames( 'block-editor-block-list__block-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\t__unstableStickyBoundaryElement={ stickyBoundaryElement }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t__unstableBoundaryParent\n\t\t\t// Observe movement for block animations (especially horizontal).\n\t\t\t__unstableObserveElement={ node }\n\t\t\tshouldAnchorIncludePadding\n\t\t\t// Used to safeguard sticky position behavior against cases where it would permanently\n\t\t\t// obscure specific sections of a block.\n\t\t\t__unstableEditorCanvasWrapper={ __unstableContentRef?.current }\n\t\t>\n\t\t\t{ ( shouldShowContextualToolbar || isToolbarForced ) && (\n\t\t\t\t<div\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\t// While ideally it would be enough to capture the\n\t\t\t\t\t// bubbling focus event from the Inserter, due to the\n\t\t\t\t\t// characteristics of click focusing of `button`s in\n\t\t\t\t\t// Firefox and Safari, it is not reliable.\n\t\t\t\t\t//\n\t\t\t\t\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-block-list__block-popover-inserter',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-visible': isInserterShown,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<Inserter\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ( shouldShowContextualToolbar || isToolbarForced ) && (\n\t\t\t\t<BlockContextualToolbar\n\t\t\t\t\t// If the toolbar is being shown because of being forced\n\t\t\t\t\t// it should focus the toolbar right after the mount.\n\t\t\t\t\tfocusOnMount={ isToolbarForced }\n\t\t\t\t\t__experimentalInitialIndex={\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalOnIndexChange={ ( index ) => {\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current = index;\n\t\t\t\t\t} }\n\t\t\t\t\t// Resets the index whenever the active block changes so\n\t\t\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ shouldShowBreadcrumb && (\n\t\t\t\t<BlockSelectionButton\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tblockElement={ node }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showEmptyBlockSideInserter && (\n\t\t\t\t<div className=\"block-editor-block-list__empty-block-inserter\">\n\t\t\t\t\t<Inserter\n\t\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Popover>\n\t);\n}\n\nfunction wrapperSelector( select ) {\n\tconst {\n\t\tgetSelectedBlockClientId,\n\t\tgetFirstMultiSelectedBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlock,\n\t\tgetBlockParents,\n\t\t__experimentalGetBlockListSettingsForBlocks,\n\t} = select( blockEditorStore );\n\n\tconst clientId =\n\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tconst { name, attributes = {}, isValid } = getBlock( clientId ) || {};\n\tconst blockParentsClientIds = getBlockParents( clientId );\n\n\t// Get Block List Settings for all ancestors of the current Block clientId\n\tconst parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(\n\t\tblockParentsClientIds\n\t);\n\n\t// Get the clientId of the topmost parent with the capture toolbars setting.\n\tconst capturingClientId = find(\n\t\tblockParentsClientIds,\n\t\t( parentClientId ) =>\n\t\t\tparentBlockListSettings[ parentClientId ]\n\t\t\t\t?.__experimentalCaptureToolbars\n\t);\n\n\treturn {\n\t\tclientId,\n\t\trootClientId: getBlockRootClientId( clientId ),\n\t\tname,\n\t\tisValid,\n\t\tisEmptyDefaultBlock:\n\t\t\tname && isUnmodifiedDefaultBlock( { name, attributes } ),\n\t\tcapturingClientId,\n\t};\n}\n\nexport default function WrappedBlockPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst selected = useSelect( wrapperSelector, [] );\n\n\tif ( ! selected ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tclientId,\n\t\trootClientId,\n\t\tname,\n\t\tisValid,\n\t\tisEmptyDefaultBlock,\n\t\tcapturingClientId,\n\t} = selected;\n\n\tif ( ! name ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\trootClientId={ rootClientId }\n\t\t\tisValid={ isValid }\n\t\t\tisEmptyDefaultBlock={ isEmptyDefaultBlock }\n\t\t\tcapturingClientId={ capturingClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-popover.js"],"names":["find","classnames","useState","useRef","useEffect","isUnmodifiedDefaultBlock","Popover","useDispatch","useSelect","useShortcut","useViewportMatch","getScrollContainer","BlockSelectionButton","BlockContextualToolbar","Inserter","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","usePopoverScroll","selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","isCaretWithinFormattedText","getSettings","getLastMultiSelectedBlockClientId","hasFixedToolbar","lastClientId","BlockPopover","clientId","rootClientId","isValid","isEmptyDefaultBlock","capturingClientId","__unstablePopoverSlot","__unstableContentRef","isInsertionPointVisible","isBlockInsertionPointVisible","getBlockInsertionPoint","getBlockOrder","insertionPoint","order","index","isLargeViewport","isToolbarForced","setIsToolbarForced","isInserterShown","setIsInserterShown","stopTyping","showEmptyBlockSideInserter","shouldShowBreadcrumb","shouldShowContextualToolbar","canFocusHiddenToolbar","isDisabled","initialToolbarItemIndexRef","selectedElement","lastSelectedElement","capturingElement","popoverScrollRef","node","anchorRef","top","bottom","onFocus","onBlur","popoverPosition","ownerDocument","stickyBoundaryElement","undefined","defaultView","frameElement","body","current","wrapperSelector","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlockRootClientId","getBlock","getBlockParents","__experimentalGetBlockListSettingsForBlocks","name","attributes","blockParentsClientIds","parentBlockListSettings","parentClientId","__experimentalCaptureToolbars","WrappedBlockPopover","selected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { Popover } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockSelectionButton from './block-selection-button';\nimport BlockContextualToolbar from './block-contextual-toolbar';\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { usePopoverScroll } from './use-popover-scroll';\n\nfunction selector( select ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\thasMultiSelection,\n\t\tisTyping,\n\t\tisCaretWithinFormattedText,\n\t\tgetSettings,\n\t\tgetLastMultiSelectedBlockClientId,\n\t} = select( blockEditorStore );\n\treturn {\n\t\tisNavigationMode: isNavigationMode(),\n\t\tisMultiSelecting: isMultiSelecting(),\n\t\tisTyping: isTyping(),\n\t\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\n\t\thasMultiSelection: hasMultiSelection(),\n\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\tlastClientId: getLastMultiSelectedBlockClientId(),\n\t};\n}\n\nfunction BlockPopover( {\n\tclientId,\n\trootClientId,\n\tisValid,\n\tisEmptyDefaultBlock,\n\tcapturingClientId,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\tisTyping,\n\t\tisCaretWithinFormattedText,\n\t\thasMultiSelection,\n\t\thasFixedToolbar,\n\t\tlastClientId,\n\t} = useSelect( selector, [] );\n\tconst isInsertionPointVisible = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockInsertionPointVisible() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\t\t\treturn order[ insertionPoint.index ] === clientId;\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst [ isToolbarForced, setIsToolbarForced ] = useState( false );\n\tconst [ isInserterShown, setIsInserterShown ] = useState( false );\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\t// Controls when the side inserter on empty lines should\n\t// be shown, including writing and selection modes.\n\tconst showEmptyBlockSideInserter =\n\t\t! isTyping && ! isNavigationMode && isEmptyDefaultBlock && isValid;\n\tconst shouldShowBreadcrumb = isNavigationMode;\n\tconst shouldShowContextualToolbar =\n\t\t! isNavigationMode &&\n\t\t! hasFixedToolbar &&\n\t\tisLargeViewport &&\n\t\t! showEmptyBlockSideInserter &&\n\t\t! isMultiSelecting &&\n\t\t( ! isTyping || isCaretWithinFormattedText );\n\tconst canFocusHiddenToolbar =\n\t\t! isNavigationMode &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! hasFixedToolbar &&\n\t\t! isEmptyDefaultBlock;\n\n\tuseShortcut(\n\t\t'core/block-editor/focus-toolbar',\n\t\t() => {\n\t\t\tsetIsToolbarForced( true );\n\t\t\tstopTyping( true );\n\t\t},\n\t\t{\n\t\t\tisDisabled: ! canFocusHiddenToolbar,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! shouldShowContextualToolbar ) {\n\t\t\tsetIsToolbarForced( false );\n\t\t}\n\t}, [ shouldShowContextualToolbar ] );\n\n\t// Stores the active toolbar item index so the block toolbar can return focus\n\t// to it when re-mounting.\n\tconst initialToolbarItemIndexRef = useRef();\n\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( lastClientId );\n\tconst capturingElement = useBlockElement( capturingClientId );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\tif (\n\t\t! shouldShowBreadcrumb &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! isToolbarForced &&\n\t\t! showEmptyBlockSideInserter\n\t) {\n\t\treturn null;\n\t}\n\n\tlet node = selectedElement;\n\n\tif ( ! node ) {\n\t\treturn null;\n\t}\n\n\tif ( capturingClientId ) {\n\t\tnode = capturingElement;\n\t}\n\n\tlet anchorRef = node;\n\n\tif ( hasMultiSelection ) {\n\t\t// Wait to render the popover until the bottom reference is available\n\t\t// as well.\n\t\tif ( ! lastSelectedElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tanchorRef = {\n\t\t\ttop: node,\n\t\t\tbottom: lastSelectedElement,\n\t\t};\n\t}\n\n\tfunction onFocus() {\n\t\tsetIsInserterShown( true );\n\t}\n\n\tfunction onBlur() {\n\t\tsetIsInserterShown( false );\n\t}\n\n\t// Position above the anchor, pop out towards the right, and position in the\n\t// left corner. For the side inserter, pop out towards the left, and\n\t// position in the right corner.\n\t// To do: refactor `Popover` to make this prop clearer.\n\tconst popoverPosition = showEmptyBlockSideInserter\n\t\t? 'top left right'\n\t\t: 'top right left';\n\tconst { ownerDocument } = node;\n\tconst stickyBoundaryElement = showEmptyBlockSideInserter\n\t\t? undefined\n\t\t: // The sticky boundary element should be the boundary at which the\n\t\t // the block toolbar becomes sticky when the block scolls out of view.\n\t\t // In case of an iframe, this should be the iframe boundary, otherwise\n\t\t // the scroll container.\n\t\t ownerDocument.defaultView.frameElement ||\n\t\t getScrollContainer( node ) ||\n\t\t ownerDocument.body;\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tnoArrow\n\t\t\tanimate={ false }\n\t\t\tposition={ popoverPosition }\n\t\t\tfocusOnMount={ false }\n\t\t\tanchorRef={ anchorRef }\n\t\t\tclassName={ classnames( 'block-editor-block-list__block-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\t__unstableStickyBoundaryElement={ stickyBoundaryElement }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t__unstableBoundaryParent\n\t\t\t// Observe movement for block animations (especially horizontal).\n\t\t\t__unstableObserveElement={ node }\n\t\t\tshouldAnchorIncludePadding\n\t\t\t// Used to safeguard sticky position behavior against cases where it would permanently\n\t\t\t// obscure specific sections of a block.\n\t\t\t__unstableEditorCanvasWrapper={ __unstableContentRef?.current }\n\t\t>\n\t\t\t{ ( shouldShowContextualToolbar || isToolbarForced ) && (\n\t\t\t\t<div\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\t// While ideally it would be enough to capture the\n\t\t\t\t\t// bubbling focus event from the Inserter, due to the\n\t\t\t\t\t// characteristics of click focusing of `button`s in\n\t\t\t\t\t// Firefox and Safari, it is not reliable.\n\t\t\t\t\t//\n\t\t\t\t\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-block-list__block-popover-inserter',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-visible': isInserterShown,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<Inserter\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ( shouldShowContextualToolbar || isToolbarForced ) && (\n\t\t\t\t<BlockContextualToolbar\n\t\t\t\t\t// If the toolbar is being shown because of being forced\n\t\t\t\t\t// it should focus the toolbar right after the mount.\n\t\t\t\t\tfocusOnMount={ isToolbarForced }\n\t\t\t\t\t__experimentalInitialIndex={\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalOnIndexChange={ ( index ) => {\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current = index;\n\t\t\t\t\t} }\n\t\t\t\t\t// Resets the index whenever the active block changes so\n\t\t\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ shouldShowBreadcrumb && (\n\t\t\t\t<BlockSelectionButton\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tblockElement={ node }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showEmptyBlockSideInserter && (\n\t\t\t\t<div className=\"block-editor-block-list__empty-block-inserter\">\n\t\t\t\t\t<Inserter\n\t\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Popover>\n\t);\n}\n\nfunction wrapperSelector( select ) {\n\tconst {\n\t\tgetSelectedBlockClientId,\n\t\tgetFirstMultiSelectedBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlock,\n\t\tgetBlockParents,\n\t\t__experimentalGetBlockListSettingsForBlocks,\n\t} = select( blockEditorStore );\n\n\tconst clientId =\n\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tconst { name, attributes = {}, isValid } = getBlock( clientId ) || {};\n\tconst blockParentsClientIds = getBlockParents( clientId );\n\n\t// Get Block List Settings for all ancestors of the current Block clientId.\n\tconst parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(\n\t\tblockParentsClientIds\n\t);\n\n\t// Get the clientId of the topmost parent with the capture toolbars setting.\n\tconst capturingClientId = find(\n\t\tblockParentsClientIds,\n\t\t( parentClientId ) =>\n\t\t\tparentBlockListSettings[ parentClientId ]\n\t\t\t\t?.__experimentalCaptureToolbars\n\t);\n\n\treturn {\n\t\tclientId,\n\t\trootClientId: getBlockRootClientId( clientId ),\n\t\tname,\n\t\tisValid,\n\t\tisEmptyDefaultBlock:\n\t\t\tname && isUnmodifiedDefaultBlock( { name, attributes } ),\n\t\tcapturingClientId,\n\t};\n}\n\nexport default function WrappedBlockPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst selected = useSelect( wrapperSelector, [] );\n\n\tif ( ! selected ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tclientId,\n\t\trootClientId,\n\t\tname,\n\t\tisValid,\n\t\tisEmptyDefaultBlock,\n\t\tcapturingClientId,\n\t} = selected;\n\n\tif ( ! name ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\trootClientId={ rootClientId }\n\t\t\tisValid={ isValid }\n\t\t\tisEmptyDefaultBlock={ isEmptyDefaultBlock }\n\t\t\tcapturingClientId={ capturingClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t/>\n\t);\n}\n"]}
@@ -240,7 +240,8 @@ function BlockSelectionButton(_ref) {
240
240
  label: label,
241
241
  className: "block-selection-button_select-button"
242
242
  }, createElement(BlockTitle, {
243
- clientId: clientId
243
+ clientId: clientId,
244
+ maximumLength: 35
244
245
  })))));
245
246
  }
246
247
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-selection-button.js"],"names":["classnames","dragHandle","Button","Flex","FlexItem","useSelect","useDispatch","useEffect","useRef","BACKSPACE","DELETE","UP","DOWN","LEFT","RIGHT","TAB","ESCAPE","ENTER","SPACE","getBlockType","__experimentalGetAccessibleBlockLabel","getAccessibleBlockLabel","speak","focus","__","BlockTitle","BlockIcon","store","blockEditorStore","BlockDraggable","useBlockDisplayInformation","BlockSelectionButton","clientId","rootClientId","blockElement","blockInformation","selected","select","getBlock","getBlockIndex","hasBlockMovingClientId","getBlockListSettings","index","name","attributes","blockMovingMode","orientation","setNavigationMode","removeBlock","ref","blockType","label","current","getBlockRootClientId","getClientIdsOfDescendants","getSelectedBlockClientId","getMultiSelectedBlocksEndClientId","getPreviousBlockClientId","getNextBlockClientId","isNavigationMode","selectBlock","clearSelectedBlock","setBlockMovingClientId","moveBlockToPosition","onKeyDown","event","keyCode","isUp","isDown","isLeft","isRight","isTab","isEscape","isEnter","isSpace","isShift","shiftKey","preventDefault","selectedBlockClientId","selectionEndClientId","selectionBeforeEndClientId","selectionAfterEndClientId","navigateUp","navigateDown","navigateOut","navigateIn","focusedBlockUid","startingBlockClientId","defaultPrevented","sourceRoot","destRoot","sourceBlockIndex","destinationBlockIndex","nextTabbable","tabbable","findNext","contains","ownerDocument","defaultView","frameElement","findPrevious","classNames","dragHandleLabel","icon","draggableProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle } from '@wordpress/icons';\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tBACKSPACE,\n\tDELETE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tTAB,\n\tESCAPE,\n\tENTER,\n\tSPACE,\n} from '@wordpress/keycodes';\nimport {\n\tgetBlockType,\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n} from '@wordpress/blocks';\nimport { speak } from '@wordpress/a11y';\nimport { focus } from '@wordpress/dom';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\n/**\n * Block selection button component, displaying the label of the block. If the block\n * descends from a root block, a button is displayed enabling the user to select\n * the root block.\n *\n * @param {string} props Component props.\n * @param {string} props.clientId Client ID of block.\n *\n * @return {WPComponent} The component to be rendered.\n */\nfunction BlockSelectionButton( { clientId, rootClientId, blockElement } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetBlockListSettings,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst { name, attributes } = getBlock( clientId );\n\t\t\tconst blockMovingMode = hasBlockMovingClientId();\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tname,\n\t\t\t\tattributes,\n\t\t\t\tblockMovingMode,\n\t\t\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\tconst { index, name, attributes, blockMovingMode, orientation } = selected;\n\tconst { setNavigationMode, removeBlock } = useDispatch( blockEditorStore );\n\tconst ref = useRef();\n\n\tconst blockType = getBlockType( name );\n\tconst label = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\tindex + 1,\n\t\torientation\n\t);\n\n\t// Focus the breadcrumb in navigation mode.\n\tuseEffect( () => {\n\t\tref.current.focus();\n\n\t\tspeak( label );\n\t}, [ label ] );\n\n\tconst {\n\t\thasBlockMovingClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockRootClientId,\n\t\tgetClientIdsOfDescendants,\n\t\tgetSelectedBlockClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t\tisNavigationMode,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t\tsetBlockMovingClientId,\n\t\tmoveBlockToPosition,\n\t} = useDispatch( blockEditorStore );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\t\tconst isUp = keyCode === UP;\n\t\tconst isDown = keyCode === DOWN;\n\t\tconst isLeft = keyCode === LEFT;\n\t\tconst isRight = keyCode === RIGHT;\n\t\tconst isTab = keyCode === TAB;\n\t\tconst isEscape = keyCode === ESCAPE;\n\t\tconst isEnter = keyCode === ENTER;\n\t\tconst isSpace = keyCode === SPACE;\n\t\tconst isShift = event.shiftKey;\n\n\t\tif ( keyCode === BACKSPACE || keyCode === DELETE ) {\n\t\t\tremoveBlock( clientId );\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst selectionEndClientId = getMultiSelectedBlocksEndClientId();\n\t\tconst selectionBeforeEndClientId = getPreviousBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\t\tconst selectionAfterEndClientId = getNextBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\n\t\tconst navigateUp = ( isTab && isShift ) || isUp;\n\t\tconst navigateDown = ( isTab && ! isShift ) || isDown;\n\t\t// Move out of current nesting level (no effect if at root level).\n\t\tconst navigateOut = isLeft;\n\t\t// Move into next nesting level (no effect if the current block has no innerBlocks).\n\t\tconst navigateIn = isRight;\n\n\t\tlet focusedBlockUid;\n\t\tif ( navigateUp ) {\n\t\t\tfocusedBlockUid = selectionBeforeEndClientId;\n\t\t} else if ( navigateDown ) {\n\t\t\tfocusedBlockUid = selectionAfterEndClientId;\n\t\t} else if ( navigateOut ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetBlockRootClientId( selectedBlockClientId ) ??\n\t\t\t\tselectedBlockClientId;\n\t\t} else if ( navigateIn ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetClientIdsOfDescendants( [ selectedBlockClientId ] )[ 0 ] ??\n\t\t\t\tselectedBlockClientId;\n\t\t}\n\t\tconst startingBlockClientId = hasBlockMovingClientId();\n\t\tif ( isEscape && isNavigationMode() ) {\n\t\t\tclearSelectedBlock();\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( isEscape && startingBlockClientId && ! event.defaultPrevented ) {\n\t\t\tsetBlockMovingClientId( null );\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( ( isEnter || isSpace ) && startingBlockClientId ) {\n\t\t\tconst sourceRoot = getBlockRootClientId( startingBlockClientId );\n\t\t\tconst destRoot = getBlockRootClientId( selectedBlockClientId );\n\t\t\tconst sourceBlockIndex = getBlockIndex( startingBlockClientId );\n\t\t\tlet destinationBlockIndex = getBlockIndex( selectedBlockClientId );\n\t\t\tif (\n\t\t\t\tsourceBlockIndex < destinationBlockIndex &&\n\t\t\t\tsourceRoot === destRoot\n\t\t\t) {\n\t\t\t\tdestinationBlockIndex -= 1;\n\t\t\t}\n\t\t\tmoveBlockToPosition(\n\t\t\t\tstartingBlockClientId,\n\t\t\t\tsourceRoot,\n\t\t\t\tdestRoot,\n\t\t\t\tdestinationBlockIndex\n\t\t\t);\n\t\t\tselectBlock( startingBlockClientId );\n\t\t\tsetBlockMovingClientId( null );\n\t\t}\n\t\tif ( navigateDown || navigateUp || navigateOut || navigateIn ) {\n\t\t\tif ( focusedBlockUid ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectBlock( focusedBlockUid );\n\t\t\t} else if ( isTab && selectedBlockClientId ) {\n\t\t\t\tlet nextTabbable;\n\n\t\t\t\tif ( navigateDown ) {\n\t\t\t\t\tnextTabbable = blockElement;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t} while (\n\t\t\t\t\t\tnextTabbable &&\n\t\t\t\t\t\tblockElement.contains( nextTabbable )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! nextTabbable ) {\n\t\t\t\t\t\tnextTabbable =\n\t\t\t\t\t\t\tblockElement.ownerDocument.defaultView.frameElement;\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnextTabbable = focus.tabbable.findPrevious( blockElement );\n\t\t\t\t}\n\n\t\t\t\tif ( nextTabbable ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnextTabbable.focus();\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'block-editor-block-list__block-selection-button',\n\t\t{\n\t\t\t'is-block-moving-mode': !! blockMovingMode,\n\t\t}\n\t);\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\treturn (\n\t\t<div className={ classNames }>\n\t\t\t<Flex\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"block-editor-block-list__block-selection-button__content\"\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockDraggable>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tonClick={ () => setNavigationMode( false ) }\n\t\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tclassName=\"block-selection-button_select-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle clientId={ clientId } />\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default BlockSelectionButton;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-selection-button.js"],"names":["classnames","dragHandle","Button","Flex","FlexItem","useSelect","useDispatch","useEffect","useRef","BACKSPACE","DELETE","UP","DOWN","LEFT","RIGHT","TAB","ESCAPE","ENTER","SPACE","getBlockType","__experimentalGetAccessibleBlockLabel","getAccessibleBlockLabel","speak","focus","__","BlockTitle","BlockIcon","store","blockEditorStore","BlockDraggable","useBlockDisplayInformation","BlockSelectionButton","clientId","rootClientId","blockElement","blockInformation","selected","select","getBlock","getBlockIndex","hasBlockMovingClientId","getBlockListSettings","index","name","attributes","blockMovingMode","orientation","setNavigationMode","removeBlock","ref","blockType","label","current","getBlockRootClientId","getClientIdsOfDescendants","getSelectedBlockClientId","getMultiSelectedBlocksEndClientId","getPreviousBlockClientId","getNextBlockClientId","isNavigationMode","selectBlock","clearSelectedBlock","setBlockMovingClientId","moveBlockToPosition","onKeyDown","event","keyCode","isUp","isDown","isLeft","isRight","isTab","isEscape","isEnter","isSpace","isShift","shiftKey","preventDefault","selectedBlockClientId","selectionEndClientId","selectionBeforeEndClientId","selectionAfterEndClientId","navigateUp","navigateDown","navigateOut","navigateIn","focusedBlockUid","startingBlockClientId","defaultPrevented","sourceRoot","destRoot","sourceBlockIndex","destinationBlockIndex","nextTabbable","tabbable","findNext","contains","ownerDocument","defaultView","frameElement","findPrevious","classNames","dragHandleLabel","icon","draggableProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle } from '@wordpress/icons';\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tBACKSPACE,\n\tDELETE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tTAB,\n\tESCAPE,\n\tENTER,\n\tSPACE,\n} from '@wordpress/keycodes';\nimport {\n\tgetBlockType,\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n} from '@wordpress/blocks';\nimport { speak } from '@wordpress/a11y';\nimport { focus } from '@wordpress/dom';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\n/**\n * Block selection button component, displaying the label of the block. If the block\n * descends from a root block, a button is displayed enabling the user to select\n * the root block.\n *\n * @param {string} props Component props.\n * @param {string} props.clientId Client ID of block.\n *\n * @return {WPComponent} The component to be rendered.\n */\nfunction BlockSelectionButton( { clientId, rootClientId, blockElement } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetBlockListSettings,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst { name, attributes } = getBlock( clientId );\n\t\t\tconst blockMovingMode = hasBlockMovingClientId();\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tname,\n\t\t\t\tattributes,\n\t\t\t\tblockMovingMode,\n\t\t\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\tconst { index, name, attributes, blockMovingMode, orientation } = selected;\n\tconst { setNavigationMode, removeBlock } = useDispatch( blockEditorStore );\n\tconst ref = useRef();\n\n\tconst blockType = getBlockType( name );\n\tconst label = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\tindex + 1,\n\t\torientation\n\t);\n\n\t// Focus the breadcrumb in navigation mode.\n\tuseEffect( () => {\n\t\tref.current.focus();\n\n\t\tspeak( label );\n\t}, [ label ] );\n\n\tconst {\n\t\thasBlockMovingClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockRootClientId,\n\t\tgetClientIdsOfDescendants,\n\t\tgetSelectedBlockClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t\tisNavigationMode,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t\tsetBlockMovingClientId,\n\t\tmoveBlockToPosition,\n\t} = useDispatch( blockEditorStore );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\t\tconst isUp = keyCode === UP;\n\t\tconst isDown = keyCode === DOWN;\n\t\tconst isLeft = keyCode === LEFT;\n\t\tconst isRight = keyCode === RIGHT;\n\t\tconst isTab = keyCode === TAB;\n\t\tconst isEscape = keyCode === ESCAPE;\n\t\tconst isEnter = keyCode === ENTER;\n\t\tconst isSpace = keyCode === SPACE;\n\t\tconst isShift = event.shiftKey;\n\n\t\tif ( keyCode === BACKSPACE || keyCode === DELETE ) {\n\t\t\tremoveBlock( clientId );\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst selectionEndClientId = getMultiSelectedBlocksEndClientId();\n\t\tconst selectionBeforeEndClientId = getPreviousBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\t\tconst selectionAfterEndClientId = getNextBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\n\t\tconst navigateUp = ( isTab && isShift ) || isUp;\n\t\tconst navigateDown = ( isTab && ! isShift ) || isDown;\n\t\t// Move out of current nesting level (no effect if at root level).\n\t\tconst navigateOut = isLeft;\n\t\t// Move into next nesting level (no effect if the current block has no innerBlocks).\n\t\tconst navigateIn = isRight;\n\n\t\tlet focusedBlockUid;\n\t\tif ( navigateUp ) {\n\t\t\tfocusedBlockUid = selectionBeforeEndClientId;\n\t\t} else if ( navigateDown ) {\n\t\t\tfocusedBlockUid = selectionAfterEndClientId;\n\t\t} else if ( navigateOut ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetBlockRootClientId( selectedBlockClientId ) ??\n\t\t\t\tselectedBlockClientId;\n\t\t} else if ( navigateIn ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetClientIdsOfDescendants( [ selectedBlockClientId ] )[ 0 ] ??\n\t\t\t\tselectedBlockClientId;\n\t\t}\n\t\tconst startingBlockClientId = hasBlockMovingClientId();\n\t\tif ( isEscape && isNavigationMode() ) {\n\t\t\tclearSelectedBlock();\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( isEscape && startingBlockClientId && ! event.defaultPrevented ) {\n\t\t\tsetBlockMovingClientId( null );\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( ( isEnter || isSpace ) && startingBlockClientId ) {\n\t\t\tconst sourceRoot = getBlockRootClientId( startingBlockClientId );\n\t\t\tconst destRoot = getBlockRootClientId( selectedBlockClientId );\n\t\t\tconst sourceBlockIndex = getBlockIndex( startingBlockClientId );\n\t\t\tlet destinationBlockIndex = getBlockIndex( selectedBlockClientId );\n\t\t\tif (\n\t\t\t\tsourceBlockIndex < destinationBlockIndex &&\n\t\t\t\tsourceRoot === destRoot\n\t\t\t) {\n\t\t\t\tdestinationBlockIndex -= 1;\n\t\t\t}\n\t\t\tmoveBlockToPosition(\n\t\t\t\tstartingBlockClientId,\n\t\t\t\tsourceRoot,\n\t\t\t\tdestRoot,\n\t\t\t\tdestinationBlockIndex\n\t\t\t);\n\t\t\tselectBlock( startingBlockClientId );\n\t\t\tsetBlockMovingClientId( null );\n\t\t}\n\t\tif ( navigateDown || navigateUp || navigateOut || navigateIn ) {\n\t\t\tif ( focusedBlockUid ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectBlock( focusedBlockUid );\n\t\t\t} else if ( isTab && selectedBlockClientId ) {\n\t\t\t\tlet nextTabbable;\n\n\t\t\t\tif ( navigateDown ) {\n\t\t\t\t\tnextTabbable = blockElement;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t} while (\n\t\t\t\t\t\tnextTabbable &&\n\t\t\t\t\t\tblockElement.contains( nextTabbable )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! nextTabbable ) {\n\t\t\t\t\t\tnextTabbable =\n\t\t\t\t\t\t\tblockElement.ownerDocument.defaultView.frameElement;\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnextTabbable = focus.tabbable.findPrevious( blockElement );\n\t\t\t\t}\n\n\t\t\t\tif ( nextTabbable ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnextTabbable.focus();\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'block-editor-block-list__block-selection-button',\n\t\t{\n\t\t\t'is-block-moving-mode': !! blockMovingMode,\n\t\t}\n\t);\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\treturn (\n\t\t<div className={ classNames }>\n\t\t\t<Flex\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"block-editor-block-list__block-selection-button__content\"\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockDraggable>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tonClick={ () => setNavigationMode( false ) }\n\t\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tclassName=\"block-selection-button_select-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default BlockSelectionButton;\n"]}
@@ -67,7 +67,7 @@ export default function BlockTypesList(_ref) {
67
67
  const contentContainerStyle = StyleSheet.flatten(listProps.contentContainerStyle);
68
68
  return createElement(FlatList, _extends({
69
69
  onLayout: onLayout,
70
- key: `InserterUI-${name}-${numberOfColumns}` //re-render when numberOfColumns changes
70
+ key: `InserterUI-${name}-${numberOfColumns}` // Re-render when numberOfColumns changes.
71
71
  ,
72
72
  testID: `InserterUI-${name}`,
73
73
  keyboardShouldPersistTaps: "always",