@wordpress/block-editor 8.2.0 → 8.3.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 (481) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +6 -2
  3. package/build/autocompleters/link.js +78 -0
  4. package/build/autocompleters/link.js.map +1 -0
  5. package/build/components/autocomplete/index.js +3 -1
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-actions/index.js +1 -1
  8. package/build/components/block-actions/index.js.map +1 -1
  9. package/build/components/block-breadcrumb/index.js +4 -2
  10. package/build/components/block-breadcrumb/index.js.map +1 -1
  11. package/build/components/block-compare/index.js +2 -2
  12. package/build/components/block-compare/index.js.map +1 -1
  13. package/build/components/block-controls/index.js +1 -1
  14. package/build/components/block-controls/index.js.map +1 -1
  15. package/build/components/block-draggable/index.js +1 -1
  16. package/build/components/block-draggable/index.js.map +1 -1
  17. package/build/components/block-edit/edit.js +1 -1
  18. package/build/components/block-edit/edit.js.map +1 -1
  19. package/build/components/block-list/block-html.js +1 -1
  20. package/build/components/block-list/block-html.js.map +1 -1
  21. package/build/components/block-list/block-invalid-warning.js +1 -1
  22. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  23. package/build/components/block-list/block-list-item.native.js +4 -4
  24. package/build/components/block-list/block-list-item.native.js.map +1 -1
  25. package/build/components/block-list/block-selection-button.native.js +4 -3
  26. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  27. package/build/components/block-list/block.js +1 -1
  28. package/build/components/block-list/block.js.map +1 -1
  29. package/build/components/block-list/block.native.js +5 -5
  30. package/build/components/block-list/block.native.js.map +1 -1
  31. package/build/components/block-list/index.native.js +5 -5
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -1
  34. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  35. package/build/components/block-media-update-progress/index.native.js +4 -4
  36. package/build/components/block-media-update-progress/index.native.js.map +1 -1
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  38. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  40. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  41. package/build/components/block-mover/mover-description.js +4 -4
  42. package/build/components/block-mover/mover-description.js.map +1 -1
  43. package/build/components/block-mover/mover-description.native.js +5 -5
  44. package/build/components/block-mover/mover-description.native.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +7 -12
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-styles/preview.native.js +1 -1
  48. package/build/components/block-styles/preview.native.js.map +1 -1
  49. package/build/components/block-switcher/index.js +2 -1
  50. package/build/components/block-switcher/index.js.map +1 -1
  51. package/build/components/block-switcher/use-transformed-patterns.js +0 -1
  52. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  53. package/build/components/block-title/index.js +7 -62
  54. package/build/components/block-title/index.js.map +1 -1
  55. package/build/components/block-title/use-block-display-title.js +94 -0
  56. package/build/components/block-title/use-block-display-title.js.map +1 -0
  57. package/build/components/block-toolbar/utils.js +9 -1
  58. package/build/components/block-toolbar/utils.js.map +1 -1
  59. package/build/components/block-tools/block-popover.js +1 -1
  60. package/build/components/block-tools/block-popover.js.map +1 -1
  61. package/build/components/block-tools/block-selection-button.js +2 -1
  62. package/build/components/block-tools/block-selection-button.js.map +1 -1
  63. package/build/components/block-types-list/index.native.js +1 -1
  64. package/build/components/block-types-list/index.native.js.map +1 -1
  65. package/build/components/border-radius-control/index.js +2 -2
  66. package/build/components/border-radius-control/index.js.map +1 -1
  67. package/build/components/border-radius-control/utils.js +10 -6
  68. package/build/components/border-radius-control/utils.js.map +1 -1
  69. package/build/components/contrast-checker/index.js +3 -3
  70. package/build/components/contrast-checker/index.js.map +1 -1
  71. package/build/components/convert-to-group-buttons/index.js +1 -1
  72. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  73. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  74. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  75. package/build/components/copy-handler/index.js +3 -3
  76. package/build/components/copy-handler/index.js.map +1 -1
  77. package/build/components/font-sizes/with-font-sizes.js +3 -3
  78. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  79. package/build/components/index.native.js +29 -1
  80. package/build/components/index.native.js.map +1 -1
  81. package/build/components/inserter/block-patterns-tab.js +1 -1
  82. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  83. package/build/components/inserter/block-types-tab.js +1 -1
  84. package/build/components/inserter/block-types-tab.js.map +1 -1
  85. package/build/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  86. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  87. package/build/components/inserter/index.js +3 -3
  88. package/build/components/inserter/index.js.map +1 -1
  89. package/build/components/inserter/index.native.js +7 -7
  90. package/build/components/inserter/index.native.js.map +1 -1
  91. package/build/components/inserter/menu.js.map +1 -1
  92. package/build/components/inserter/menu.native.js +3 -3
  93. package/build/components/inserter/menu.native.js.map +1 -1
  94. package/build/components/inserter/quick-inserter.js +1 -1
  95. package/build/components/inserter/quick-inserter.js.map +1 -1
  96. package/build/components/inserter/search-items.js +1 -1
  97. package/build/components/inserter/search-items.js.map +1 -1
  98. package/build/components/inserter/search-results.js +1 -1
  99. package/build/components/inserter/search-results.js.map +1 -1
  100. package/build/components/keyboard-shortcuts/index.js +1 -1
  101. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  102. package/build/components/letter-spacing-control/index.js +3 -3
  103. package/build/components/letter-spacing-control/index.js.map +1 -1
  104. package/build/components/line-height-control/index.js +4 -4
  105. package/build/components/line-height-control/index.js.map +1 -1
  106. package/build/components/line-height-control/index.native.js +3 -1
  107. package/build/components/line-height-control/index.native.js.map +1 -1
  108. package/build/components/link-control/index.js +2 -2
  109. package/build/components/link-control/index.js.map +1 -1
  110. package/build/components/link-control/search-input.js +1 -1
  111. package/build/components/link-control/search-input.js.map +1 -1
  112. package/build/components/link-control/search-results.js +2 -2
  113. package/build/components/link-control/search-results.js.map +1 -1
  114. package/build/components/link-control/use-rich-url-data.js +1 -1
  115. package/build/components/link-control/use-rich-url-data.js.map +1 -1
  116. package/build/components/link-control/use-search-handler.js +2 -2
  117. package/build/components/link-control/use-search-handler.js.map +1 -1
  118. package/build/components/list-view/block-select-button.js +2 -1
  119. package/build/components/list-view/block-select-button.js.map +1 -1
  120. package/build/components/list-view/block.js +1 -1
  121. package/build/components/list-view/block.js.map +1 -1
  122. package/build/components/media-placeholder/index.native.js +7 -5
  123. package/build/components/media-placeholder/index.native.js.map +1 -1
  124. package/build/components/media-replace-flow/index.js +20 -24
  125. package/build/components/media-replace-flow/index.js.map +1 -1
  126. package/build/components/media-upload/index.native.js +4 -3
  127. package/build/components/media-upload/index.native.js.map +1 -1
  128. package/build/components/media-upload-progress/index.native.js +2 -2
  129. package/build/components/media-upload-progress/index.native.js.map +1 -1
  130. package/build/components/navigable-toolbar/index.js +3 -3
  131. package/build/components/navigable-toolbar/index.js.map +1 -1
  132. package/build/components/plain-text/index.native.js +3 -3
  133. package/build/components/plain-text/index.native.js.map +1 -1
  134. package/build/components/rich-text/format-toolbar-container.js +2 -2
  135. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  136. package/build/components/rich-text/format-toolbar-container.native.js +1 -1
  137. package/build/components/rich-text/format-toolbar-container.native.js.map +1 -1
  138. package/build/components/rich-text/index.native.js +3 -3
  139. package/build/components/rich-text/index.native.js.map +1 -1
  140. package/build/components/rich-text/use-paste-handler.js +7 -11
  141. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  142. package/build/components/url-input/index.js +11 -11
  143. package/build/components/url-input/index.js.map +1 -1
  144. package/build/components/use-moving-animation/index.js +1 -1
  145. package/build/components/use-moving-animation/index.js.map +1 -1
  146. package/build/components/use-on-block-drop/index.js +2 -2
  147. package/build/components/use-on-block-drop/index.js.map +1 -1
  148. package/build/components/writing-flow/use-tab-nav.js +4 -3
  149. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  150. package/build/hooks/align.js +1 -1
  151. package/build/hooks/align.js.map +1 -1
  152. package/build/hooks/anchor.js +1 -1
  153. package/build/hooks/anchor.js.map +1 -1
  154. package/build/hooks/border.js +2 -14
  155. package/build/hooks/border.js.map +1 -1
  156. package/build/hooks/color.js +2 -2
  157. package/build/hooks/color.js.map +1 -1
  158. package/build/hooks/duotone.js +22 -4
  159. package/build/hooks/duotone.js.map +1 -1
  160. package/build/hooks/generated-class-name.js +3 -3
  161. package/build/hooks/generated-class-name.js.map +1 -1
  162. package/build/hooks/lock.js +1 -1
  163. package/build/hooks/lock.js.map +1 -1
  164. package/build/hooks/style.js +5 -2
  165. package/build/hooks/style.js.map +1 -1
  166. package/build/store/actions.js +4 -4
  167. package/build/store/actions.js.map +1 -1
  168. package/build/store/defaults.js +1 -1
  169. package/build/store/defaults.js.map +1 -1
  170. package/build/store/reducer.js +11 -11
  171. package/build/store/reducer.js.map +1 -1
  172. package/build/store/selectors.js +6 -6
  173. package/build/store/selectors.js.map +1 -1
  174. package/build/utils/parse-css-unit-to-px.js +3 -3
  175. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  176. package/build/utils/pasting.js +91 -0
  177. package/build/utils/pasting.js.map +1 -0
  178. package/build/utils/transform-styles/ast/parse.js +5 -5
  179. package/build/utils/transform-styles/ast/parse.js.map +1 -1
  180. package/build/utils/transform-styles/transforms/url-rewrite.js +2 -2
  181. package/build/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  182. package/build-module/autocompleters/link.js +64 -0
  183. package/build-module/autocompleters/link.js.map +1 -0
  184. package/build-module/components/autocomplete/index.js +2 -1
  185. package/build-module/components/autocomplete/index.js.map +1 -1
  186. package/build-module/components/block-actions/index.js +1 -1
  187. package/build-module/components/block-actions/index.js.map +1 -1
  188. package/build-module/components/block-breadcrumb/index.js +4 -2
  189. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  190. package/build-module/components/block-compare/index.js +2 -2
  191. package/build-module/components/block-compare/index.js.map +1 -1
  192. package/build-module/components/block-controls/index.js +1 -1
  193. package/build-module/components/block-controls/index.js.map +1 -1
  194. package/build-module/components/block-draggable/index.js +1 -1
  195. package/build-module/components/block-draggable/index.js.map +1 -1
  196. package/build-module/components/block-edit/edit.js +1 -1
  197. package/build-module/components/block-edit/edit.js.map +1 -1
  198. package/build-module/components/block-list/block-html.js +1 -1
  199. package/build-module/components/block-list/block-html.js.map +1 -1
  200. package/build-module/components/block-list/block-invalid-warning.js +1 -1
  201. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  202. package/build-module/components/block-list/block-list-item.native.js +4 -4
  203. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  204. package/build-module/components/block-list/block-selection-button.native.js +4 -3
  205. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  206. package/build-module/components/block-list/block.js +1 -1
  207. package/build-module/components/block-list/block.js.map +1 -1
  208. package/build-module/components/block-list/block.native.js +5 -5
  209. package/build-module/components/block-list/block.native.js.map +1 -1
  210. package/build-module/components/block-list/index.native.js +5 -5
  211. package/build-module/components/block-list/index.native.js.map +1 -1
  212. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -1
  213. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  214. package/build-module/components/block-media-update-progress/index.native.js +4 -4
  215. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  216. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  217. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  218. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  219. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  220. package/build-module/components/block-mover/mover-description.js +4 -4
  221. package/build-module/components/block-mover/mover-description.js.map +1 -1
  222. package/build-module/components/block-mover/mover-description.native.js +5 -5
  223. package/build-module/components/block-mover/mover-description.native.js.map +1 -1
  224. package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -13
  225. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  226. package/build-module/components/block-styles/preview.native.js +1 -1
  227. package/build-module/components/block-styles/preview.native.js.map +1 -1
  228. package/build-module/components/block-switcher/index.js +2 -1
  229. package/build-module/components/block-switcher/index.js.map +1 -1
  230. package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
  231. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  232. package/build-module/components/block-title/index.js +7 -58
  233. package/build-module/components/block-title/index.js.map +1 -1
  234. package/build-module/components/block-title/use-block-display-title.js +80 -0
  235. package/build-module/components/block-title/use-block-display-title.js.map +1 -0
  236. package/build-module/components/block-toolbar/utils.js +9 -1
  237. package/build-module/components/block-toolbar/utils.js.map +1 -1
  238. package/build-module/components/block-tools/block-popover.js +1 -1
  239. package/build-module/components/block-tools/block-popover.js.map +1 -1
  240. package/build-module/components/block-tools/block-selection-button.js +2 -1
  241. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  242. package/build-module/components/block-types-list/index.native.js +1 -1
  243. package/build-module/components/block-types-list/index.native.js.map +1 -1
  244. package/build-module/components/border-radius-control/index.js +3 -3
  245. package/build-module/components/border-radius-control/index.js.map +1 -1
  246. package/build-module/components/border-radius-control/utils.js +11 -7
  247. package/build-module/components/border-radius-control/utils.js.map +1 -1
  248. package/build-module/components/contrast-checker/index.js +3 -3
  249. package/build-module/components/contrast-checker/index.js.map +1 -1
  250. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  251. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  252. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  253. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  254. package/build-module/components/copy-handler/index.js +2 -2
  255. package/build-module/components/copy-handler/index.js.map +1 -1
  256. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  257. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  258. package/build-module/components/index.native.js +4 -4
  259. package/build-module/components/index.native.js.map +1 -1
  260. package/build-module/components/inserter/block-patterns-tab.js +1 -1
  261. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  262. package/build-module/components/inserter/block-types-tab.js +1 -1
  263. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  264. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  265. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  266. package/build-module/components/inserter/index.js +3 -3
  267. package/build-module/components/inserter/index.js.map +1 -1
  268. package/build-module/components/inserter/index.native.js +7 -7
  269. package/build-module/components/inserter/index.native.js.map +1 -1
  270. package/build-module/components/inserter/menu.js.map +1 -1
  271. package/build-module/components/inserter/menu.native.js +3 -3
  272. package/build-module/components/inserter/menu.native.js.map +1 -1
  273. package/build-module/components/inserter/quick-inserter.js +1 -1
  274. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  275. package/build-module/components/inserter/search-items.js +1 -1
  276. package/build-module/components/inserter/search-items.js.map +1 -1
  277. package/build-module/components/inserter/search-results.js +1 -1
  278. package/build-module/components/inserter/search-results.js.map +1 -1
  279. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  280. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  281. package/build-module/components/letter-spacing-control/index.js +3 -3
  282. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  283. package/build-module/components/line-height-control/index.js +4 -4
  284. package/build-module/components/line-height-control/index.js.map +1 -1
  285. package/build-module/components/line-height-control/index.native.js +3 -1
  286. package/build-module/components/line-height-control/index.native.js.map +1 -1
  287. package/build-module/components/link-control/index.js +2 -2
  288. package/build-module/components/link-control/index.js.map +1 -1
  289. package/build-module/components/link-control/search-input.js +1 -1
  290. package/build-module/components/link-control/search-input.js.map +1 -1
  291. package/build-module/components/link-control/search-results.js +2 -2
  292. package/build-module/components/link-control/search-results.js.map +1 -1
  293. package/build-module/components/link-control/use-rich-url-data.js +1 -1
  294. package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
  295. package/build-module/components/link-control/use-search-handler.js +2 -2
  296. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  297. package/build-module/components/list-view/block-select-button.js +2 -1
  298. package/build-module/components/list-view/block-select-button.js.map +1 -1
  299. package/build-module/components/list-view/block.js +1 -1
  300. package/build-module/components/list-view/block.js.map +1 -1
  301. package/build-module/components/media-placeholder/index.native.js +7 -5
  302. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  303. package/build-module/components/media-replace-flow/index.js +22 -27
  304. package/build-module/components/media-replace-flow/index.js.map +1 -1
  305. package/build-module/components/media-upload/index.native.js +4 -3
  306. package/build-module/components/media-upload/index.native.js.map +1 -1
  307. package/build-module/components/media-upload-progress/index.native.js +2 -2
  308. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  309. package/build-module/components/navigable-toolbar/index.js +3 -3
  310. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  311. package/build-module/components/plain-text/index.native.js +3 -3
  312. package/build-module/components/plain-text/index.native.js.map +1 -1
  313. package/build-module/components/rich-text/format-toolbar-container.js +2 -2
  314. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  315. package/build-module/components/rich-text/format-toolbar-container.native.js +1 -1
  316. package/build-module/components/rich-text/format-toolbar-container.native.js.map +1 -1
  317. package/build-module/components/rich-text/index.native.js +3 -3
  318. package/build-module/components/rich-text/index.native.js.map +1 -1
  319. package/build-module/components/rich-text/use-paste-handler.js +6 -11
  320. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  321. package/build-module/components/url-input/index.js +11 -11
  322. package/build-module/components/url-input/index.js.map +1 -1
  323. package/build-module/components/use-moving-animation/index.js +1 -1
  324. package/build-module/components/use-moving-animation/index.js.map +1 -1
  325. package/build-module/components/use-on-block-drop/index.js +2 -2
  326. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  327. package/build-module/components/writing-flow/use-tab-nav.js +4 -3
  328. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  329. package/build-module/hooks/align.js +1 -1
  330. package/build-module/hooks/align.js.map +1 -1
  331. package/build-module/hooks/anchor.js +1 -1
  332. package/build-module/hooks/anchor.js.map +1 -1
  333. package/build-module/hooks/border.js +2 -14
  334. package/build-module/hooks/border.js.map +1 -1
  335. package/build-module/hooks/color.js +2 -2
  336. package/build-module/hooks/color.js.map +1 -1
  337. package/build-module/hooks/duotone.js +23 -5
  338. package/build-module/hooks/duotone.js.map +1 -1
  339. package/build-module/hooks/generated-class-name.js +3 -3
  340. package/build-module/hooks/generated-class-name.js.map +1 -1
  341. package/build-module/hooks/lock.js +1 -1
  342. package/build-module/hooks/lock.js.map +1 -1
  343. package/build-module/hooks/style.js +5 -2
  344. package/build-module/hooks/style.js.map +1 -1
  345. package/build-module/store/actions.js +4 -4
  346. package/build-module/store/actions.js.map +1 -1
  347. package/build-module/store/defaults.js +1 -1
  348. package/build-module/store/defaults.js.map +1 -1
  349. package/build-module/store/reducer.js +11 -11
  350. package/build-module/store/reducer.js.map +1 -1
  351. package/build-module/store/selectors.js +6 -6
  352. package/build-module/store/selectors.js.map +1 -1
  353. package/build-module/utils/parse-css-unit-to-px.js +3 -3
  354. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  355. package/build-module/utils/pasting.js +80 -0
  356. package/build-module/utils/pasting.js.map +1 -0
  357. package/build-module/utils/transform-styles/ast/parse.js +5 -5
  358. package/build-module/utils/transform-styles/ast/parse.js.map +1 -1
  359. package/build-module/utils/transform-styles/transforms/url-rewrite.js +2 -2
  360. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  361. package/build-style/style-rtl.css +7 -0
  362. package/build-style/style.css +7 -0
  363. package/package.json +27 -27
  364. package/src/autocompleters/link.js +62 -0
  365. package/src/autocompleters/style.scss +8 -0
  366. package/src/components/alignment-control/test/index.js +2 -2
  367. package/src/components/autocomplete/index.js +2 -0
  368. package/src/components/block-actions/index.js +1 -1
  369. package/src/components/block-alignment-control/test/index.js +1 -1
  370. package/src/components/block-breadcrumb/index.js +5 -2
  371. package/src/components/block-compare/index.js +2 -2
  372. package/src/components/block-controls/index.js +1 -1
  373. package/src/components/block-draggable/index.js +1 -1
  374. package/src/components/block-draggable/stories/index.js +1 -1
  375. package/src/components/block-edit/edit.js +1 -1
  376. package/src/components/block-list/block-html.js +1 -1
  377. package/src/components/block-list/block-invalid-warning.js +1 -1
  378. package/src/components/block-list/block-list-item.native.js +4 -4
  379. package/src/components/block-list/block-selection-button.native.js +3 -3
  380. package/src/components/block-list/block.js +1 -1
  381. package/src/components/block-list/block.native.js +5 -5
  382. package/src/components/block-list/index.native.js +5 -5
  383. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -1
  384. package/src/components/block-media-update-progress/index.native.js +4 -4
  385. package/src/components/block-media-update-progress/test/index.native.js +2 -2
  386. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  387. package/src/components/block-mobile-toolbar/index.native.js +2 -2
  388. package/src/components/block-mover/mover-description.js +4 -4
  389. package/src/components/block-mover/mover-description.native.js +5 -5
  390. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -8
  391. package/src/components/block-styles/preview.native.js +1 -1
  392. package/src/components/block-switcher/index.js +4 -1
  393. package/src/components/block-switcher/use-transformed-patterns.js +0 -1
  394. package/src/components/block-title/README.md +17 -1
  395. package/src/components/block-title/index.js +7 -62
  396. package/src/components/block-title/test/index.js +21 -3
  397. package/src/components/block-title/use-block-display-title.js +83 -0
  398. package/src/components/block-toolbar/utils.js +12 -2
  399. package/src/components/block-tools/block-popover.js +1 -1
  400. package/src/components/block-tools/block-selection-button.js +4 -1
  401. package/src/components/block-types-list/index.native.js +1 -1
  402. package/src/components/border-radius-control/index.js +5 -3
  403. package/src/components/border-radius-control/test/utils.js +10 -10
  404. package/src/components/border-radius-control/utils.js +10 -8
  405. package/src/components/contrast-checker/index.js +3 -3
  406. package/src/components/convert-to-group-buttons/index.js +1 -1
  407. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -6
  408. package/src/components/copy-handler/index.js +2 -2
  409. package/src/components/font-sizes/with-font-sizes.js +3 -3
  410. package/src/components/image-size-control/test/index.js +1 -1
  411. package/src/components/index.native.js +10 -4
  412. package/src/components/inserter/block-patterns-tab.js +1 -1
  413. package/src/components/inserter/block-types-tab.js +1 -1
  414. package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  415. package/src/components/inserter/index.js +3 -3
  416. package/src/components/inserter/index.native.js +7 -7
  417. package/src/components/inserter/menu.js +1 -1
  418. package/src/components/inserter/menu.native.js +3 -3
  419. package/src/components/inserter/quick-inserter.js +1 -1
  420. package/src/components/inserter/search-items.js +1 -1
  421. package/src/components/inserter/search-results.js +1 -1
  422. package/src/components/inserter/test/fixtures/index.native.js +1 -1
  423. package/src/components/inserter/test/reusable-blocks-tab.js +2 -2
  424. package/src/components/justify-content-control/README.md +1 -1
  425. package/src/components/keyboard-shortcuts/index.js +1 -1
  426. package/src/components/letter-spacing-control/index.js +1 -1
  427. package/src/components/line-height-control/index.js +4 -4
  428. package/src/components/line-height-control/index.native.js +2 -0
  429. package/src/components/link-control/index.js +2 -2
  430. package/src/components/link-control/search-input.js +1 -1
  431. package/src/components/link-control/search-results.js +2 -2
  432. package/src/components/link-control/test/index.js +142 -144
  433. package/src/components/link-control/use-rich-url-data.js +1 -1
  434. package/src/components/link-control/use-search-handler.js +2 -2
  435. package/src/components/list-view/block-select-button.js +1 -1
  436. package/src/components/list-view/block.js +1 -1
  437. package/src/components/media-placeholder/index.native.js +11 -9
  438. package/src/components/media-replace-flow/README.md +7 -0
  439. package/src/components/media-replace-flow/index.js +20 -26
  440. package/src/components/media-replace-flow/test/index.js +100 -0
  441. package/src/components/media-upload/index.native.js +3 -2
  442. package/src/components/media-upload-progress/index.native.js +2 -2
  443. package/src/components/navigable-toolbar/index.js +3 -3
  444. package/src/components/plain-text/index.native.js +3 -3
  445. package/src/components/responsive-block-control/test/index.js +6 -6
  446. package/src/components/rich-text/format-toolbar-container.js +2 -2
  447. package/src/components/rich-text/format-toolbar-container.native.js +1 -1
  448. package/src/components/rich-text/index.native.js +3 -3
  449. package/src/components/rich-text/use-paste-handler.js +7 -13
  450. package/src/components/url-input/index.js +11 -11
  451. package/src/components/use-block-drop-zone/test/index.js +1 -1
  452. package/src/components/use-moving-animation/index.js +1 -1
  453. package/src/components/use-on-block-drop/index.js +2 -2
  454. package/src/components/writing-flow/use-tab-nav.js +6 -3
  455. package/src/hooks/align.js +1 -1
  456. package/src/hooks/anchor.js +1 -1
  457. package/src/hooks/border.js +8 -19
  458. package/src/hooks/color.js +2 -2
  459. package/src/hooks/duotone.js +27 -3
  460. package/src/hooks/generated-class-name.js +3 -3
  461. package/src/hooks/lock.js +1 -1
  462. package/src/hooks/style.js +5 -2
  463. package/src/hooks/test/align.js +1 -1
  464. package/src/store/actions.js +4 -4
  465. package/src/store/defaults.js +1 -2
  466. package/src/store/reducer.js +11 -11
  467. package/src/store/selectors.js +6 -6
  468. package/src/store/test/actions.js +1 -1
  469. package/src/store/test/reducer.js +1 -1
  470. package/src/store/test/selectors.js +1 -1
  471. package/src/utils/parse-css-unit-to-px.js +3 -3
  472. package/src/utils/pasting.js +77 -0
  473. package/src/utils/test/parse-css-unit-to-px.js +5 -5
  474. package/src/utils/test/pasting.js +84 -0
  475. package/src/utils/transform-styles/ast/parse.js +5 -5
  476. package/src/utils/transform-styles/transforms/url-rewrite.js +2 -2
  477. package/build/utils/get-paste-event-data.js +0 -56
  478. package/build/utils/get-paste-event-data.js.map +0 -1
  479. package/build-module/utils/get-paste-event-data.js +0 -47
  480. package/build-module/utils/get-paste-event-data.js.map +0 -1
  481. package/src/utils/get-paste-event-data.js +0 -42
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview.native.js"],"names":["MAX_ITEM_WIDTH","HALF_COLUMN","StylePreview","onPress","isActive","style","url","itemWidth","setItemWidth","label","name","opacity","Animated","Value","current","onLayout","columnsNum","Math","floor","BottomSheet","getWidth","dimensionsChangeSubscription","Dimensions","addEventListener","remove","labelStyle","styles","labelDark","animateOutline","setValue","timing","toValue","duration","useNativeDriver","easing","Easing","linear","start","innerOutlineStyle","innerOutline","innerOutlineDark","getOutline","outlineStyles","map","outlineStyle","index","container","width","imageWrapper","outline","image","uri","labelSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tDimensions,\n\tAnimated,\n\tEasing,\n\tImage,\n} from 'react-native';\n/**\n * WordPress dependencies\n */\nimport { BottomSheet } from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nconst MAX_ITEM_WIDTH = 120;\nconst HALF_COLUMN = 0.5;\n\nfunction StylePreview( { onPress, isActive, style, url } ) {\n\tconst [ itemWidth, setItemWidth ] = useState( MAX_ITEM_WIDTH );\n\tconst { label, name } = style;\n\tconst opacity = useRef( new Animated.Value( 1 ) ).current;\n\n\tfunction onLayout() {\n\t\tconst columnsNum =\n\t\t\t// To indicate scroll availabilty, there is a need to display additional half the column\n\t\t\tMath.floor( BottomSheet.getWidth() / MAX_ITEM_WIDTH ) + HALF_COLUMN;\n\t\tsetItemWidth( BottomSheet.getWidth() / columnsNum );\n\t}\n\n\tuseEffect( () => {\n\t\tonLayout();\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonLayout\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t}, [] );\n\n\tconst labelStyle = usePreferredColorSchemeStyle(\n\t\tstyles.label,\n\t\tstyles.labelDark\n\t);\n\n\tconst animateOutline = () => {\n\t\topacity.setValue( 0 );\n\t\tAnimated.timing( opacity, {\n\t\t\ttoValue: 1,\n\t\t\tduration: 100,\n\t\t\tuseNativeDriver: true,\n\t\t\teasing: Easing.linear,\n\t\t} ).start();\n\t};\n\n\tconst innerOutlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles.innerOutline,\n\t\tstyles.innerOutlineDark\n\t);\n\n\tconst getOutline = ( outlineStyles ) =>\n\t\toutlineStyles.map( ( outlineStyle, index ) => {\n\t\t\treturn (\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [ outlineStyle, { opacity }, styles[ name ] ] }\n\t\t\t\t\tkey={ index }\n\t\t\t\t/>\n\t\t\t);\n\t\t} );\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tonPress={ () => {\n\t\t\t\tonPress();\n\t\t\t\tanimateOutline();\n\t\t\t} }\n\t\t>\n\t\t\t<View style={ [ styles.container, { width: itemWidth } ] }>\n\t\t\t\t<View style={ styles.imageWrapper }>\n\t\t\t\t\t{ isActive &&\n\t\t\t\t\t\tgetOutline( [ styles.outline, innerOutlineStyle ] ) }\n\t\t\t\t\t<Image\n\t\t\t\t\t\tstyle={ [ styles.image, styles[ name ] ] }\n\t\t\t\t\t\tsource={ { uri: url } }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ [ labelStyle, isActive && styles.labelSelected ] }\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default StylePreview;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview.native.js"],"names":["MAX_ITEM_WIDTH","HALF_COLUMN","StylePreview","onPress","isActive","style","url","itemWidth","setItemWidth","label","name","opacity","Animated","Value","current","onLayout","columnsNum","Math","floor","BottomSheet","getWidth","dimensionsChangeSubscription","Dimensions","addEventListener","remove","labelStyle","styles","labelDark","animateOutline","setValue","timing","toValue","duration","useNativeDriver","easing","Easing","linear","start","innerOutlineStyle","innerOutline","innerOutlineDark","getOutline","outlineStyles","map","outlineStyle","index","container","width","imageWrapper","outline","image","uri","labelSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tDimensions,\n\tAnimated,\n\tEasing,\n\tImage,\n} from 'react-native';\n/**\n * WordPress dependencies\n */\nimport { BottomSheet } from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nconst MAX_ITEM_WIDTH = 120;\nconst HALF_COLUMN = 0.5;\n\nfunction StylePreview( { onPress, isActive, style, url } ) {\n\tconst [ itemWidth, setItemWidth ] = useState( MAX_ITEM_WIDTH );\n\tconst { label, name } = style;\n\tconst opacity = useRef( new Animated.Value( 1 ) ).current;\n\n\tfunction onLayout() {\n\t\tconst columnsNum =\n\t\t\t// To indicate scroll availabilty, there is a need to display additional half the column.\n\t\t\tMath.floor( BottomSheet.getWidth() / MAX_ITEM_WIDTH ) + HALF_COLUMN;\n\t\tsetItemWidth( BottomSheet.getWidth() / columnsNum );\n\t}\n\n\tuseEffect( () => {\n\t\tonLayout();\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonLayout\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t}, [] );\n\n\tconst labelStyle = usePreferredColorSchemeStyle(\n\t\tstyles.label,\n\t\tstyles.labelDark\n\t);\n\n\tconst animateOutline = () => {\n\t\topacity.setValue( 0 );\n\t\tAnimated.timing( opacity, {\n\t\t\ttoValue: 1,\n\t\t\tduration: 100,\n\t\t\tuseNativeDriver: true,\n\t\t\teasing: Easing.linear,\n\t\t} ).start();\n\t};\n\n\tconst innerOutlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles.innerOutline,\n\t\tstyles.innerOutlineDark\n\t);\n\n\tconst getOutline = ( outlineStyles ) =>\n\t\toutlineStyles.map( ( outlineStyle, index ) => {\n\t\t\treturn (\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [ outlineStyle, { opacity }, styles[ name ] ] }\n\t\t\t\t\tkey={ index }\n\t\t\t\t/>\n\t\t\t);\n\t\t} );\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tonPress={ () => {\n\t\t\t\tonPress();\n\t\t\t\tanimateOutline();\n\t\t\t} }\n\t\t>\n\t\t\t<View style={ [ styles.container, { width: itemWidth } ] }>\n\t\t\t\t<View style={ styles.imageWrapper }>\n\t\t\t\t\t{ isActive &&\n\t\t\t\t\t\tgetOutline( [ styles.outline, innerOutlineStyle ] ) }\n\t\t\t\t\t<Image\n\t\t\t\t\t\tstyle={ [ styles.image, styles[ name ] ] }\n\t\t\t\t\t\tsource={ { uri: url } }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ [ labelStyle, isActive && styles.labelSelected ] }\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default StylePreview;\n"]}
@@ -158,7 +158,8 @@ const BlockSwitcherDropdownMenu = _ref => {
158
158
  }), (isReusable || isTemplate) && (0, _element.createElement)("span", {
159
159
  className: "block-editor-block-switcher__toggle-text"
160
160
  }, (0, _element.createElement)(_blockTitle.default, {
161
- clientId: clientIds
161
+ clientId: clientIds,
162
+ maximumLength: 35
162
163
  }))),
163
164
  toggleProps: {
164
165
  describedBy: blockSwitcherDescription,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","blocksStore","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","map","stack","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 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":["BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","blockEditorStore","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","blockTitle","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","blocksStore","canRemoveBlocks","rootClientId","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","map","stack","title","isReusable","isTemplate","onBlockTransform","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","isAlternate","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AAMA;;AAMA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAjCA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;AASO,MAAMA,yBAAyB,GAAG,QAA6B;AAAA,MAA3B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,GAA2B;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAoB,uBAAaC,YAAb,CAA1B;AACA,QAAMC,gBAAgB,GAAG,yCAA4BH,MAAM,CAAE,CAAF,CAAN,CAAYI,QAAxC,CAAzB;AACA,QAAM;AACLC,IAAAA,4BADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,IAJK;AAKLC,IAAAA,UALK;AAMLC,IAAAA;AANK,MAOF,qBACDC,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,oBADK;AAELC,MAAAA,sBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAET,YAAF,CAJV;AAKA,UAAM;AAAEa,MAAAA,cAAF;AAAkBC,MAAAA;AAAlB,QAAmCL,MAAM,CAAEM,aAAF,CAA/C;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAsBP,MAAM,CAAET,YAAF,CAAlC;AACA,UAAMiB,YAAY,GAAGP,oBAAoB,CACxC,uBAAWb,SAAX,EAAwB,CAAxB,CADwC,CAAzC;AAGA,UAAM,CAAE;AAAEqB,MAAAA,IAAI,EAAEC;AAAR,KAAF,IAA+BrB,MAArC;;AACA,UAAMsB,sBAAsB,GAAGtB,MAAM,CAACuB,MAAP,KAAkB,CAAjD;;AACA,UAAMC,MAAM,GACXF,sBAAsB,IAAIP,cAAc,CAAEM,cAAF,CADzC;;AAEA,QAAII,KAAJ;;AACA,QAAKH,sBAAL,EAA8B;AAC7BG,MAAAA,KAAK,GAAGtB,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAEK,IAA1B,CAD6B,CACG;AAChC,KAFD,MAEO;AAAA;;AACN,YAAMkB,qBAAqB,GAC1B,kBAAM1B,MAAM,CAAC2B,GAAP,CAAY;AAAA,YAAE;AAAEP,UAAAA;AAAF,SAAF;AAAA,eAAgBA,IAAhB;AAAA,OAAZ,CAAN,EAA2CG,MAA3C,KAAsD,CADvD,CADM,CAGN;AACA;;AACAE,MAAAA,KAAK,GAAGC,qBAAqB,oBAC1BV,YAAY,CAAEK,cAAF,CADc,kDAC1B,cAAgCb,IADN,GAE1BoB,YAFH;AAGA;;AACD,WAAO;AACNvB,MAAAA,4BAA4B,EAAEQ,sBAAsB,CACnDb,MADmD,EAEnDmB,YAFmD,CAD9C;AAKNb,MAAAA,SAAS,EAAEY,eAAe,CAAEnB,SAAF,EAAaoB,YAAb,CALpB;AAMNZ,MAAAA,cAAc,EAAE,CAAC,EAAEiB,MAAF,aAAEA,MAAF,eAAEA,MAAM,CAAED,MAAV,CANX;AAONf,MAAAA,IAAI,EAAEiB,KAPA;AAQNhB,MAAAA,UAAU,oBAAEO,YAAY,CAAEK,cAAF,CAAd,mDAAE,eAAgCQ,KARtC;AASNnB,MAAAA,QAAQ,EAAEI,sCAAsC,CAC/Cd,MAD+C,EAE/CmB,YAF+C;AAT1C,KAAP;AAcA,GA1CE,EA2CH,CAAEpB,SAAF,EAAaC,MAAb,EAAqBG,gBAArB,aAAqBA,gBAArB,uBAAqBA,gBAAgB,CAAEK,IAAvC,CA3CG,CAPJ;AAqDA,QAAMsB,UAAU,GAAG9B,MAAM,CAACuB,MAAP,KAAkB,CAAlB,IAAuB,6BAAiBvB,MAAM,CAAE,CAAF,CAAvB,CAA1C;AACA,QAAM+B,UAAU,GAAG/B,MAAM,CAACuB,MAAP,KAAkB,CAAlB,IAAuB,4BAAgBvB,MAAM,CAAE,CAAF,CAAtB,CAA1C,CAzDqE,CA2DrE;;AACA,QAAMgC,gBAAgB,GAAKZ,IAAF,IACxBnB,aAAa,CAAEF,SAAF,EAAa,+BAAmBC,MAAnB,EAA2BoB,IAA3B,CAAb,CADd,CA5DqE,CA8DrE;;;AACA,QAAMa,kBAAkB,GAAKC,iBAAF,IAC1BjC,aAAa,CAAEF,SAAF,EAAamC,iBAAb,CADd;;AAEA,QAAMC,+BAA+B,GACpC,CAAC,CAAE9B,4BAA4B,CAACkB,MAAhC,IAA0CjB,SAD3C;AAEA,QAAM8B,wBAAwB,GAAG,CAAC,EAAE1B,QAAF,aAAEA,QAAF,eAAEA,QAAQ,CAAEa,MAAZ,CAAD,IAAuBjB,SAAxD;;AACA,MAAK,CAAEC,cAAF,IAAoB,CAAE4B,+BAA3B,EAA6D;AAC5D,WACC,4BAAC,wBAAD,QACC,4BAAC,yBAAD;AACC,MAAA,QAAQ,MADT;AAEC,MAAA,SAAS,EAAC,+CAFX;AAGC,MAAA,KAAK,EAAG1B,UAHT;AAIC,MAAA,IAAI,EAAG,4BAAC,kBAAD;AAAW,QAAA,IAAI,EAAGD,IAAlB;AAAyB,QAAA,UAAU;AAAnC;AAJR,MADD,CADD;AAUA;;AAED,QAAM6B,kBAAkB,GAAG5B,UAA3B;AAEA,QAAM6B,wBAAwB,GAC7B,MAAMtC,MAAM,CAACuB,MAAb,GACG;AACA;AACA,gBAAI,gCAAJ,CAFA,EAGAd,UAHA,CADH,GAMG;AACA;AACA,gBACC,yBADD,EAEC,0BAFD,EAGCT,MAAM,CAACuB,MAHR,CAFA,EAOAvB,MAAM,CAACuB,MAPP,CAPJ;AAiBA,QAAMgB,YAAY,GACjBhC,cAAc,IACd4B,+BADA,IAEAC,wBAHD;AAIA,SACC,4BAAC,wBAAD,QACC,4BAAC,uBAAD,QACKI,WAAF,IACD,4BAAC,wBAAD;AACC,IAAA,SAAS,EAAC,6BADX;AAEC,IAAA,KAAK,EAAGH,kBAFT;AAGC,IAAA,YAAY,EAAG;AACdI,MAAAA,QAAQ,EAAE,cADI;AAEdC,MAAAA,WAAW,EAAE,IAFC;AAGdC,MAAAA,SAAS,EAAE;AAHG,KAHhB;AAQC,IAAA,IAAI,EACH,qDACC,4BAAC,kBAAD;AACC,MAAA,IAAI,EAAGnC,IADR;AAEC,MAAA,SAAS,EAAC,qCAFX;AAGC,MAAA,UAAU;AAHX,MADD,EAMG,CAAEsB,UAAU,IAAIC,UAAhB,KACD;AAAM,MAAA,SAAS,EAAC;AAAhB,OACC,4BAAC,mBAAD;AACC,MAAA,QAAQ,EAAGhC,SADZ;AAEC,MAAA,aAAa,EAAG;AAFjB,MADD,CAPF,CATF;AAyBC,IAAA,WAAW,EAAG;AACb6C,MAAAA,WAAW,EAAEN,wBADA;AAEb,SAAGE;AAFU,KAzBf;AA6BC,IAAA,SAAS,EAAG;AAAEK,MAAAA,WAAW,EAAE;AAAf;AA7Bb,KA+BG;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACDP,YAAY,IACX;AAAK,MAAA,SAAS,EAAC;AAAf,OACGH,wBAAwB,IACzB,4BAAC,mCAAD;AACC,MAAA,MAAM,EAAGpC,MADV;AAEC,MAAA,QAAQ,EAAGU,QAFZ;AAGC,MAAA,QAAQ,EACPwB,iBADU,IAEN;AACJD,QAAAA,kBAAkB,CACjBC,iBADiB,CAAlB;AAGAY,QAAAA,OAAO;AACP;AAVF,MAFF,EAeGX,+BAA+B,IAChC,4BAAC,iCAAD;AACC,MAAA,SAAS,EAAC,oDADX;AAEC,MAAA,4BAA4B,EAC3B9B,4BAHF;AAKC,MAAA,MAAM,EAAGL,MALV;AAMC,MAAA,QAAQ,EAAKoB,IAAF,IAAY;AACtBY,QAAAA,gBAAgB,CAAEZ,IAAF,CAAhB;AACA0B,QAAAA,OAAO;AACP;AATF,MAhBF,EA4BGvC,cAAc,IACf,4BAAC,wBAAD;AACC,MAAA,YAAY,EAAGP,MAAM,CAAE,CAAF,CADtB;AAEC,MAAA,QAAQ,EAAG8C;AAFZ,MA7BF,CAFA;AAAA,GA/BH,CAFF,CADD,CADD;AA+EA,CAvLM;;;;AAyLA,MAAMC,aAAa,GAAG,SAAqB;AAAA,MAAnB;AAAEhD,IAAAA;AAAF,GAAmB;AACjD,QAAMC,MAAM,GAAG,qBACZW,MAAF,IACCA,MAAM,CAAET,YAAF,CAAN,CAA2B8C,mBAA3B,CAAgDjD,SAAhD,CAFa,EAGd,CAAEA,SAAF,CAHc,CAAf;;AAMA,MAAK,CAAEC,MAAM,CAACuB,MAAT,IAAmBvB,MAAM,CAACiD,IAAP,CAAeC,KAAF,IAAa,CAAEA,KAA5B,CAAxB,EAA8D;AAC7D,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,yBAAD;AAA2B,IAAA,SAAS,EAAGnD,SAAvC;AAAmD,IAAA,MAAM,EAAGC;AAA5D,IADD;AAGA,CAdM;;;eAgBQ+C,a","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"]}
@@ -97,7 +97,6 @@ const getPatternTransformedBlocks = (selectedBlocks, patternBlocks) => {
97
97
  * @param {WPBlock[]} selectedBlocks The currently selected blocks.
98
98
  * @return {TransformedBlockPattern[]} Returns the eligible matched patterns with all the selected blocks.
99
99
  */
100
- // TODO tests
101
100
 
102
101
 
103
102
  exports.getPatternTransformedBlocks = getPatternTransformedBlocks;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/use-transformed-patterns.js"],"names":["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":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,sBAAsB,GAAG,CAAEC,KAAF,EAASC,aAAT,KAA4B;AACjE;AACA,QAAMC,uBAAuB,GAAG,uCAC/BD,aAAa,CAACE,IADiB,EAE/BF,aAAa,CAACG,UAFiB,CAAhC;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;;;;;AACO,MAAMG,2BAA2B,GAAG,CAC1CC,cAD0C,EAE1CC,aAF0C,KAGtC;AACJ;AACA,QAAMC,cAAc,GAAGD,aAAa,CAACE,GAAd,CAAqBC,KAAF,IACzC,wBAAYA,KAAZ,CADsB,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,GAAG,mCACbc,YADa,EAEbb,aAAa,CAACE,IAFD,EAGbQ,cAHa,CAAd;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,SAAO,sBACN,MACCY,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,CAFK,EAeN,CAAEF,QAAF,EAAYZ,cAAZ,CAfM,CAAP;AAiBA,CAlBD;;eAoBeW,sB","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":["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":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,sBAAsB,GAAG,CAAEC,KAAF,EAASC,aAAT,KAA4B;AACjE;AACA,QAAMC,uBAAuB,GAAG,uCAC/BD,aAAa,CAACE,IADiB,EAE/BF,aAAa,CAACG,UAFiB,CAAhC;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;;;;;AACO,MAAMG,2BAA2B,GAAG,CAC1CC,cAD0C,EAE1CC,aAF0C,KAGtC;AACJ;AACA,QAAMC,cAAc,GAAGD,aAAa,CAACE,GAAd,CAAqBC,KAAF,IACzC,wBAAYA,KAAZ,CADsB,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,GAAG,mCACbc,YADa,EAEbb,aAAa,CAACE,IAFD,EAGbQ,cAHa,CAAd;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,SAAO,sBACN,MACCY,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,CAFK,EAeN,CAAEF,QAAF,EAAYZ,cAAZ,CAfM,CAAP;AAiBA,CAlBD;;eAoBeW,sB","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"]}
@@ -7,23 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = BlockTitle;
9
9
 
10
- var _lodash = require("lodash");
11
-
12
- var _data = require("@wordpress/data");
13
-
14
- var _blocks = require("@wordpress/blocks");
15
-
16
- var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
17
-
18
- var _store = require("../../store");
19
-
20
- /**
21
- * External dependencies
22
- */
23
-
24
- /**
25
- * WordPress dependencies
26
- */
10
+ var _useBlockDisplayTitle = _interopRequireDefault(require("./use-block-display-title"));
27
11
 
28
12
  /**
29
13
  * Internal dependencies
@@ -36,59 +20,20 @@ var _store = require("../../store");
36
20
  * @example
37
21
  *
38
22
  * ```jsx
39
- * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" />
23
+ * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" maximumLength={ 17 }/>
40
24
  * ```
41
25
  *
42
26
  * @param {Object} props
43
27
  * @param {string} props.clientId Client ID of block.
28
+ * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
44
29
  *
45
- * @return {?string} Block title.
30
+ * @return {JSX.Element} Block title.
46
31
  */
47
32
  function BlockTitle(_ref) {
48
33
  let {
49
- clientId
34
+ clientId,
35
+ maximumLength
50
36
  } = _ref;
51
- const {
52
- attributes,
53
- name,
54
- reusableBlockTitle
55
- } = (0, _data.useSelect)(select => {
56
- if (!clientId) {
57
- return {};
58
- }
59
-
60
- const {
61
- getBlockName,
62
- getBlockAttributes,
63
- __experimentalGetReusableBlockTitle
64
- } = select(_store.store);
65
- const blockName = getBlockName(clientId);
66
-
67
- if (!blockName) {
68
- return {};
69
- }
70
-
71
- const isReusable = (0, _blocks.isReusableBlock)((0, _blocks.getBlockType)(blockName));
72
- return {
73
- attributes: getBlockAttributes(clientId),
74
- name: blockName,
75
- reusableBlockTitle: isReusable && __experimentalGetReusableBlockTitle(getBlockAttributes(clientId).ref)
76
- };
77
- }, [clientId]);
78
- const blockInformation = (0, _useBlockDisplayInformation.default)(clientId);
79
- if (!name || !blockInformation) return null;
80
- const blockType = (0, _blocks.getBlockType)(name);
81
- const blockLabel = blockType ? (0, _blocks.__experimentalGetBlockLabel)(blockType, attributes) : null;
82
- const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
83
- // label context. If the label is defined we prioritize it over possible
84
- // possible block variation title match.
85
-
86
- if (label && label !== blockType.title) {
87
- return (0, _lodash.truncate)(label, {
88
- length: 35
89
- });
90
- }
91
-
92
- return blockInformation.title;
37
+ return (0, _useBlockDisplayTitle.default)(clientId, maximumLength);
93
38
  }
94
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-title/index.js"],"names":["BlockTitle","clientId","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockEditorStore","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","title","length"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AASA;;AACA;;AAnBA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,UAAT,OAAoC;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AAClD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2C,qBAC9CC,MAAF,IAAc;AACb,QAAK,CAAEJ,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLK,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;AAKA,UAAMC,SAAS,GAAGJ,YAAY,CAAEL,QAAF,CAA9B;;AACA,QAAK,CAAES,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAG,6BAAiB,0BAAcD,SAAd,CAAjB,CAAnB;AACA,WAAO;AACNR,MAAAA,UAAU,EAAEK,kBAAkB,CAAEN,QAAF,CADxB;AAENE,MAAAA,IAAI,EAAEO,SAFA;AAGNN,MAAAA,kBAAkB,EACjBO,UAAU,IACVH,mCAAmC,CAClCD,kBAAkB,CAAEN,QAAF,CAAlB,CAA+BW,GADG;AAL9B,KAAP;AASA,GAxB+C,EAyBhD,CAAEX,QAAF,CAzBgD,CAAjD;AA4BA,QAAMY,gBAAgB,GAAG,yCAA4BZ,QAA5B,CAAzB;AACA,MAAK,CAAEE,IAAF,IAAU,CAAEU,gBAAjB,EAAoC,OAAO,IAAP;AACpC,QAAMC,SAAS,GAAG,0BAAcX,IAAd,CAAlB;AACA,QAAMY,UAAU,GAAGD,SAAS,GACzB,yCAAeA,SAAf,EAA0BZ,UAA1B,CADyB,GAEzB,IAFH;AAGA,QAAMc,KAAK,GAAGZ,kBAAkB,IAAIW,UAApC,CAnCkD,CAoClD;AACA;AACA;;AACA,MAAKC,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACG,KAAlC,EAA0C;AACzC,WAAO,sBAAUD,KAAV,EAAiB;AAAEE,MAAAA,MAAM,EAAE;AAAV,KAAjB,CAAP;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":["BlockTitle","clientId","maximumLength"],"mappings":";;;;;;;;;AAIA;;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,UAAT,OAAmD;AAAA,MAA9B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAA8B;AACjE,SAAO,mCAAsBD,QAAtB,EAAgCC,aAAhC,CAAP;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,94 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useBlockDisplayTitle;
9
+
10
+ var _lodash = require("lodash");
11
+
12
+ var _data = require("@wordpress/data");
13
+
14
+ var _blocks = require("@wordpress/blocks");
15
+
16
+ var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
17
+
18
+ var _store = require("../../store");
19
+
20
+ /**
21
+ * External dependencies
22
+ */
23
+
24
+ /**
25
+ * WordPress dependencies
26
+ */
27
+
28
+ /**
29
+ * Internal dependencies
30
+ */
31
+
32
+ /**
33
+ * Returns the block's configured title as a string, or empty if the title
34
+ * cannot be determined.
35
+ *
36
+ * @example
37
+ *
38
+ * ```js
39
+ * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );
40
+ * ```
41
+ *
42
+ * @param {string} clientId Client ID of block.
43
+ * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.
44
+ * @return {?string} Block title.
45
+ */
46
+ function useBlockDisplayTitle(clientId, maximumLength) {
47
+ const {
48
+ attributes,
49
+ name,
50
+ reusableBlockTitle
51
+ } = (0, _data.useSelect)(select => {
52
+ if (!clientId) {
53
+ return {};
54
+ }
55
+
56
+ const {
57
+ getBlockName,
58
+ getBlockAttributes,
59
+ __experimentalGetReusableBlockTitle
60
+ } = select(_store.store);
61
+ const blockName = getBlockName(clientId);
62
+
63
+ if (!blockName) {
64
+ return {};
65
+ }
66
+
67
+ const isReusable = (0, _blocks.isReusableBlock)((0, _blocks.getBlockType)(blockName));
68
+ return {
69
+ attributes: getBlockAttributes(clientId),
70
+ name: blockName,
71
+ reusableBlockTitle: isReusable && __experimentalGetReusableBlockTitle(getBlockAttributes(clientId).ref)
72
+ };
73
+ }, [clientId]);
74
+ const blockInformation = (0, _useBlockDisplayInformation.default)(clientId);
75
+
76
+ if (!name || !blockInformation) {
77
+ return null;
78
+ }
79
+
80
+ const blockType = (0, _blocks.getBlockType)(name);
81
+ const blockLabel = blockType ? (0, _blocks.__experimentalGetBlockLabel)(blockType, attributes) : null;
82
+ const label = reusableBlockTitle || blockLabel; // Label will fallback to the title if no label is defined for the current
83
+ // label context. If the label is defined we prioritize it over possible
84
+ // possible block variation title match.
85
+
86
+ if (label && label !== blockType.title) {
87
+ return maximumLength && maximumLength > 0 ? (0, _lodash.truncate)(label, {
88
+ length: maximumLength
89
+ }) : label;
90
+ }
91
+
92
+ return blockInformation.title;
93
+ }
94
+ //# 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":["useBlockDisplayTitle","clientId","maximumLength","attributes","name","reusableBlockTitle","select","getBlockName","getBlockAttributes","__experimentalGetReusableBlockTitle","blockEditorStore","blockName","isReusable","ref","blockInformation","blockType","blockLabel","label","title","length"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AASA;;AACA;;AAnBA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,oBAAT,CAA+BC,QAA/B,EAAyCC,aAAzC,EAAyD;AACvE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAd;AAAoBC,IAAAA;AAApB,MAA2C,qBAC9CC,MAAF,IAAc;AACb,QAAK,CAAEL,QAAP,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AACLM,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;AAKA,UAAMC,SAAS,GAAGJ,YAAY,CAAEN,QAAF,CAA9B;;AACA,QAAK,CAAEU,SAAP,EAAmB;AAClB,aAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAG,6BAAiB,0BAAcD,SAAd,CAAjB,CAAnB;AACA,WAAO;AACNR,MAAAA,UAAU,EAAEK,kBAAkB,CAAEP,QAAF,CADxB;AAENG,MAAAA,IAAI,EAAEO,SAFA;AAGNN,MAAAA,kBAAkB,EACjBO,UAAU,IACVH,mCAAmC,CAClCD,kBAAkB,CAAEP,QAAF,CAAlB,CAA+BY,GADG;AAL9B,KAAP;AASA,GAxB+C,EAyBhD,CAAEZ,QAAF,CAzBgD,CAAjD;AA4BA,QAAMa,gBAAgB,GAAG,yCAA4Bb,QAA5B,CAAzB;;AACA,MAAK,CAAEG,IAAF,IAAU,CAAEU,gBAAjB,EAAoC;AACnC,WAAO,IAAP;AACA;;AACD,QAAMC,SAAS,GAAG,0BAAcX,IAAd,CAAlB;AACA,QAAMY,UAAU,GAAGD,SAAS,GACzB,yCAAeA,SAAf,EAA0BZ,UAA1B,CADyB,GAEzB,IAFH;AAGA,QAAMc,KAAK,GAAGZ,kBAAkB,IAAIW,UAApC,CArCuE,CAsCvE;AACA;AACA;;AACA,MAAKC,KAAK,IAAIA,KAAK,KAAKF,SAAS,CAACG,KAAlC,EAA0C;AACzC,WAAOhB,aAAa,IAAIA,aAAa,GAAG,CAAjC,GACJ,sBAAUe,KAAV,EAAiB;AAAEE,MAAAA,MAAM,EAAEjB;AAAV,KAAjB,CADI,GAEJe,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"]}
@@ -92,7 +92,15 @@ function useDebouncedShowMovers(_ref) {
92
92
  }, debounceTimeout);
93
93
  };
94
94
 
95
- (0, _element.useEffect)(() => () => clearTimeoutRef(), []);
95
+ (0, _element.useEffect)(() => () => {
96
+ /**
97
+ * We need to call the change handler with `isFocused`
98
+ * set to false on unmount because we also clear the
99
+ * timeout that would handle that.
100
+ */
101
+ handleOnChange(false);
102
+ clearTimeoutRef();
103
+ }, []);
96
104
  return {
97
105
  showMovers,
98
106
  debouncedShowMovers,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowMovers","ref","isFocused","debounceTimeout","onChange","noop","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":["clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowMovers","ref","isFocused","debounceTimeout","onChange","noop","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":";;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAM;AAAEA,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,IAA+BC,MAArC;AAEA,MAAMC,gBAAgB,GAAG,GAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,sBAAT,OAKH;AAAA,MALoC;AACvCC,IAAAA,GADuC;AAEvCC,IAAAA,SAFuC;AAGvCC,IAAAA,eAAe,GAAGJ,gBAHqB;AAIvCK,IAAAA,QAAQ,GAAGC;AAJ4B,GAKpC;AACH,QAAM,CAAEC,UAAF,EAAcC,aAAd,IAAgC,uBAAU,KAAV,CAAtC;AACA,QAAMC,UAAU,GAAG,sBAAnB;;AAEA,QAAMC,cAAc,GAAKC,aAAF,IAAqB;AAC3C,QAAKT,GAAL,aAAKA,GAAL,eAAKA,GAAG,CAAEU,OAAV,EAAoB;AACnBJ,MAAAA,aAAa,CAAEG,aAAF,CAAb;AACA;;AAEDN,IAAAA,QAAQ,CAAEM,aAAF,CAAR;AACA,GAND;;AAQA,QAAME,YAAY,GAAG,MAAM;AAC1B,WAAO,CAAAX,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEU,OAAL,KAAgBV,GAAG,CAACU,OAAJ,CAAYE,OAAZ,CAAqB,QAArB,CAAvB;AACA,GAFD;;AAIA,QAAMC,gBAAgB,GAAG,MAAM;AAC9B,UAAMC,SAAS,GAAGH,YAAY,EAA9B;AACA,WAAO,CAAEV,SAAF,IAAe,CAAEa,SAAxB;AACA,GAHD;;AAKA,QAAMC,eAAe,GAAG,MAAM;AAC7B,UAAMC,OAAO,GAAGT,UAAU,CAACG,OAA3B;;AAEA,QAAKM,OAAO,IAAIrB,YAAhB,EAA+B;AAC9BA,MAAAA,YAAY,CAAEqB,OAAF,CAAZ;AACA;AACD,GAND;;AAQA,QAAMC,mBAAmB,GAAKC,KAAF,IAAa;AACxC,QAAKA,KAAL,EAAa;AACZA,MAAAA,KAAK,CAACC,eAAN;AACA;;AAEDJ,IAAAA,eAAe;;AAEf,QAAK,CAAEV,UAAP,EAAoB;AACnBG,MAAAA,cAAc,CAAE,IAAF,CAAd;AACA;AACD,GAVD;;AAYA,QAAMY,mBAAmB,GAAKF,KAAF,IAAa;AACxC,QAAKA,KAAL,EAAa;AACZA,MAAAA,KAAK,CAACC,eAAN;AACA;;AAEDJ,IAAAA,eAAe;AAEfR,IAAAA,UAAU,CAACG,OAAX,GAAqBd,UAAU,CAAE,MAAM;AACtC,UAAKiB,gBAAgB,EAArB,EAA0B;AACzBL,QAAAA,cAAc,CAAE,KAAF,CAAd;AACA;AACD,KAJ8B,EAI5BN,eAJ4B,CAA/B;AAKA,GAZD;;AAcA,0BACC,MAAM,MAAM;AACX;AACH;AACA;AACA;AACA;AACGM,IAAAA,cAAc,CAAE,KAAF,CAAd;AACAO,IAAAA,eAAe;AACf,GATF,EAUC,EAVD;AAaA,SAAO;AACNV,IAAAA,UADM;AAENY,IAAAA,mBAFM;AAGNG,IAAAA;AAHM,GAAP;AAKA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,qBAAT,QAIH;AAAA,MAJmC;AACtCrB,IAAAA,GADsC;AAEtCE,IAAAA,eAAe,GAAGJ,gBAFoB;AAGtCK,IAAAA,QAAQ,GAAGC;AAH2B,GAInC;AACH,QAAM,CAAEH,SAAF,EAAaqB,YAAb,IAA8B,uBAAU,KAAV,CAApC;AACA,QAAM;AACLjB,IAAAA,UADK;AAELY,IAAAA,mBAFK;AAGLG,IAAAA;AAHK,MAIFrB,sBAAsB,CAAE;AAAEC,IAAAA,GAAF;AAAOE,IAAAA,eAAP;AAAwBD,IAAAA,SAAxB;AAAmCE,IAAAA;AAAnC,GAAF,CAJ1B;AAMA,QAAMoB,WAAW,GAAG,qBAAQ,KAAR,CAApB;;AAEA,QAAMC,eAAe,GAAG,MAAM;AAC7B,WACC,CAAAxB,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEU,OAAL,KACAV,GAAG,CAACU,OAAJ,CAAYe,QAAZ,CAAsBzB,GAAG,CAACU,OAAJ,CAAYgB,aAAZ,CAA0BC,aAAhD,CAFD;AAIA,GALD;;AAOA,0BAAW,MAAM;AAChB,UAAMC,IAAI,GAAG5B,GAAG,CAACU,OAAjB;;AAEA,UAAMmB,aAAa,GAAG,MAAM;AAC3B,UAAKL,eAAe,EAApB,EAAyB;AACxBF,QAAAA,YAAY,CAAE,IAAF,CAAZ;AACAL,QAAAA,mBAAmB;AACnB;AACD,KALD;;AAOA,UAAMa,YAAY,GAAG,MAAM;AAC1B,UAAK,CAAEN,eAAe,EAAtB,EAA2B;AAC1BF,QAAAA,YAAY,CAAE,KAAF,CAAZ;AACAF,QAAAA,mBAAmB;AACnB;AACD,KALD;AAOA;AACF;AACA;AACA;;;AACE,QAAKQ,IAAI,IAAI,CAAEL,WAAW,CAACb,OAA3B,EAAqC;AACpCkB,MAAAA,IAAI,CAACG,gBAAL,CAAuB,OAAvB,EAAgCF,aAAhC,EAA+C,IAA/C;AACAD,MAAAA,IAAI,CAACG,gBAAL,CAAuB,MAAvB,EAA+BD,YAA/B,EAA6C,IAA7C;AACAP,MAAAA,WAAW,CAACb,OAAZ,GAAsB,IAAtB;AACA;;AAED,WAAO,MAAM;AACZ,UAAKkB,IAAL,EAAY;AACXA,QAAAA,IAAI,CAACI,mBAAL,CAA0B,OAA1B,EAAmCH,aAAnC;AACAD,QAAAA,IAAI,CAACI,mBAAL,CAA0B,MAA1B,EAAkCF,YAAlC;AACA;AACD,KALD;AAMA,GAjCD,EAiCG,CACF9B,GADE,EAEFuB,WAFE,EAGFD,YAHE,EAIFL,mBAJE,EAKFG,mBALE,CAjCH;AAyCA,SAAO;AACNf,IAAAA,UADM;AAEN4B,IAAAA,QAAQ,EAAE;AACTC,MAAAA,WAAW,EAAEjB,mBADJ;AAETkB,MAAAA,YAAY,EAAEf;AAFL;AAFJ,GAAP;AAOA","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"]}
@@ -267,7 +267,7 @@ function wrapperSelector(select) {
267
267
  attributes = {},
268
268
  isValid
269
269
  } = getBlock(clientId) || {};
270
- const blockParentsClientIds = getBlockParents(clientId); // Get Block List Settings for all ancestors of the current Block clientId
270
+ const blockParentsClientIds = getBlockParents(clientId); // Get Block List Settings for all ancestors of the current Block clientId.
271
271
 
272
272
  const parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(blockParentsClientIds); // Get the clientId of the topmost parent with the capture toolbars setting.
273
273
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-popover.js"],"names":["selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","isCaretWithinFormattedText","getSettings","getLastMultiSelectedBlockClientId","blockEditorStore","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":["selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","isCaretWithinFormattedText","getSettings","getLastMultiSelectedBlockClientId","blockEditorStore","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"]}
@@ -261,7 +261,8 @@ function BlockSelectionButton(_ref) {
261
261
  label: label,
262
262
  className: "block-selection-button_select-button"
263
263
  }, (0, _element.createElement)(_blockTitle.default, {
264
- clientId: clientId
264
+ clientId: clientId,
265
+ maximumLength: 35
265
266
  })))));
266
267
  }
267
268