@wordpress/block-editor 12.24.0 → 12.25.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 (510) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/components/alignment-control/ui.js +3 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-inspector/index.js +1 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-list/block.js +0 -9
  8. package/build/components/block-list/block.js.map +1 -1
  9. package/build/components/block-list/index.js +4 -3
  10. package/build/components/block-list/index.js.map +1 -1
  11. package/build/components/block-list/index.native.js +1 -9
  12. package/build/components/block-list/index.native.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +6 -6
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
  16. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
  18. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  19. package/build/components/block-mover/index.native.js +3 -1
  20. package/build/components/block-mover/index.native.js.map +1 -1
  21. package/build/components/block-settings-menu/block-settings-dropdown.js +0 -25
  22. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  23. package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
  24. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  25. package/build/components/block-switcher/use-transformed-patterns.js +6 -2
  26. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  27. package/build/components/block-switcher/utils.js +15 -5
  28. package/build/components/block-switcher/utils.js.map +1 -1
  29. package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
  30. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  31. package/build/components/block-tools/index.js +3 -1
  32. package/build/components/block-tools/index.js.map +1 -1
  33. package/build/components/block-tools/use-show-block-tools.js +2 -5
  34. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  35. package/build/components/block-tools/zoom-out-mode-inserters.js +5 -1
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-variation-picker/index.js +3 -2
  38. package/build/components/block-variation-picker/index.js.map +1 -1
  39. package/build/components/block-variation-transforms/index.js +3 -1
  40. package/build/components/block-variation-transforms/index.js.map +1 -1
  41. package/build/components/floating-toolbar/index.native.js +9 -5
  42. package/build/components/floating-toolbar/index.native.js.map +1 -1
  43. package/build/components/global-styles/background-panel.js +1 -1
  44. package/build/components/global-styles/background-panel.js.map +1 -1
  45. package/build/components/global-styles/color-panel.js +3 -1
  46. package/build/components/global-styles/color-panel.js.map +1 -1
  47. package/build/components/global-styles/dimensions-panel.js +16 -0
  48. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +3 -2
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +23 -23
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/use-global-styles-output.js +149 -132
  54. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  55. package/build/components/global-styles/utils.js +45 -0
  56. package/build/components/global-styles/utils.js.map +1 -1
  57. package/build/components/inner-blocks/index.js +16 -2
  58. package/build/components/inner-blocks/index.js.map +1 -1
  59. package/build/components/inserter/block-patterns-tab/index.js +12 -31
  60. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  61. package/build/components/inserter/block-types-tab.js +4 -0
  62. package/build/components/inserter/block-types-tab.js.map +1 -1
  63. package/build/components/inserter/category-tabs/index.js +56 -0
  64. package/build/components/inserter/category-tabs/index.js.map +1 -0
  65. package/build/components/inserter/media-tab/index.js +2 -2
  66. package/build/components/inserter/media-tab/index.js.map +1 -1
  67. package/build/components/inserter/media-tab/media-panel.js +0 -25
  68. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  69. package/build/components/inserter/media-tab/media-preview.js +13 -3
  70. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  71. package/build/components/inserter/media-tab/media-tab.js +15 -29
  72. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  73. package/build/components/inserter/menu.js +59 -69
  74. package/build/components/inserter/menu.js.map +1 -1
  75. package/build/components/inserter/tabs.js +6 -6
  76. package/build/components/inserter/tabs.js.map +1 -1
  77. package/build/components/line-height-control/index.js +6 -2
  78. package/build/components/line-height-control/index.js.map +1 -1
  79. package/build/components/link-control/search-item.js +9 -3
  80. package/build/components/link-control/search-item.js.map +1 -1
  81. package/build/components/list-view/block-select-button.js +5 -170
  82. package/build/components/list-view/block-select-button.js.map +1 -1
  83. package/build/components/list-view/block.js +166 -14
  84. package/build/components/list-view/block.js.map +1 -1
  85. package/build/components/list-view/index.js +1 -1
  86. package/build/components/list-view/index.js.map +1 -1
  87. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  88. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  89. package/build/components/list-view/utils.js +3 -1
  90. package/build/components/list-view/utils.js.map +1 -1
  91. package/build/components/media-placeholder/index.js +3 -3
  92. package/build/components/media-placeholder/index.js.map +1 -1
  93. package/build/components/navigable-toolbar/index.js +3 -1
  94. package/build/components/navigable-toolbar/index.js.map +1 -1
  95. package/build/components/provider/block-refs-provider.js +3 -4
  96. package/build/components/provider/block-refs-provider.js.map +1 -1
  97. package/build/components/provider/use-block-sync.js +3 -12
  98. package/build/components/provider/use-block-sync.js.map +1 -1
  99. package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
  100. package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  101. package/build/components/rich-text/event-listeners/delete.js +58 -0
  102. package/build/components/rich-text/event-listeners/delete.js.map +1 -0
  103. package/build/components/rich-text/event-listeners/enter.js +98 -0
  104. package/build/components/rich-text/event-listeners/enter.js.map +1 -0
  105. package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
  106. package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  107. package/build/components/rich-text/event-listeners/index.js +44 -0
  108. package/build/components/rich-text/event-listeners/index.js.map +1 -0
  109. package/build/components/rich-text/event-listeners/input-events.js +22 -0
  110. package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
  111. package/build/components/rich-text/event-listeners/input-rules.js +135 -0
  112. package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
  113. package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
  114. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  115. package/build/components/rich-text/event-listeners/paste-handler.js +146 -0
  116. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  117. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
  118. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  119. package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
  120. package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  121. package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
  122. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  123. package/build/components/rich-text/index.js +11 -31
  124. package/build/components/rich-text/index.js.map +1 -1
  125. package/build/components/rich-text/index.native.js +13 -3
  126. package/build/components/rich-text/index.native.js.map +1 -1
  127. package/build/components/rich-text/multiline.js +6 -2
  128. package/build/components/rich-text/multiline.js.map +1 -1
  129. package/build/components/rich-text/native/index.native.js +12 -0
  130. package/build/components/rich-text/native/index.native.js.map +1 -1
  131. package/build/components/rich-text/use-format-types.js +8 -4
  132. package/build/components/rich-text/use-format-types.js.map +1 -1
  133. package/build/components/segmented-text-control/index.js +62 -0
  134. package/build/components/segmented-text-control/index.js.map +1 -0
  135. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  136. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  137. package/build/components/text-alignment-control/index.js +76 -0
  138. package/build/components/text-alignment-control/index.js.map +1 -0
  139. package/build/components/text-decoration-control/index.js +21 -25
  140. package/build/components/text-decoration-control/index.js.map +1 -1
  141. package/build/components/text-transform-control/index.js +18 -22
  142. package/build/components/text-transform-control/index.js.map +1 -1
  143. package/build/components/use-block-display-information/index.js +9 -3
  144. package/build/components/use-block-display-information/index.js.map +1 -1
  145. package/build/components/use-on-block-drop/index.js +3 -1
  146. package/build/components/use-on-block-drop/index.js.map +1 -1
  147. package/build/components/writing-flow/use-drag-selection.js +3 -1
  148. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  149. package/build/components/writing-flow/use-tab-nav.js +3 -1
  150. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  151. package/build/components/writing-mode-control/index.js +16 -20
  152. package/build/components/writing-mode-control/index.js.map +1 -1
  153. package/build/hooks/duotone.js +3 -1
  154. package/build/hooks/duotone.js.map +1 -1
  155. package/build/hooks/utils.js +11 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +4 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/actions.js +32 -8
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/private-selectors.js +27 -6
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +11 -8
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +21 -7
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/utils/object.js +17 -0
  168. package/build/utils/object.js.map +1 -1
  169. package/build/utils/order-inserter-block-items.js +6 -2
  170. package/build/utils/order-inserter-block-items.js.map +1 -1
  171. package/build/utils/pasting.js +6 -2
  172. package/build/utils/pasting.js.map +1 -1
  173. package/build-module/components/alignment-control/ui.js +3 -1
  174. package/build-module/components/alignment-control/ui.js.map +1 -1
  175. package/build-module/components/block-inspector/index.js +1 -1
  176. package/build-module/components/block-inspector/index.js.map +1 -1
  177. package/build-module/components/block-list/block.js +0 -9
  178. package/build-module/components/block-list/block.js.map +1 -1
  179. package/build-module/components/block-list/index.js +4 -3
  180. package/build-module/components/block-list/index.js.map +1 -1
  181. package/build-module/components/block-list/index.native.js +1 -9
  182. package/build-module/components/block-list/index.native.js.map +1 -1
  183. package/build-module/components/block-list/use-block-props/index.js +6 -6
  184. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/use-block-refs.js +19 -48
  186. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
  188. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  189. package/build-module/components/block-mover/index.native.js +3 -1
  190. package/build-module/components/block-mover/index.native.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -26
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
  194. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  195. package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
  196. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  197. package/build-module/components/block-switcher/utils.js +15 -5
  198. package/build-module/components/block-switcher/utils.js.map +1 -1
  199. package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
  200. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  201. package/build-module/components/block-tools/index.js +3 -1
  202. package/build-module/components/block-tools/index.js.map +1 -1
  203. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  204. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  205. package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -1
  206. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  207. package/build-module/components/block-variation-picker/index.js +3 -2
  208. package/build-module/components/block-variation-picker/index.js.map +1 -1
  209. package/build-module/components/block-variation-transforms/index.js +3 -1
  210. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  211. package/build-module/components/floating-toolbar/index.native.js +9 -5
  212. package/build-module/components/floating-toolbar/index.native.js.map +1 -1
  213. package/build-module/components/global-styles/background-panel.js +1 -1
  214. package/build-module/components/global-styles/background-panel.js.map +1 -1
  215. package/build-module/components/global-styles/color-panel.js +3 -1
  216. package/build-module/components/global-styles/color-panel.js.map +1 -1
  217. package/build-module/components/global-styles/dimensions-panel.js +17 -1
  218. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  219. package/build-module/components/global-styles/hooks.js +3 -2
  220. package/build-module/components/global-styles/hooks.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +24 -24
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/use-global-styles-output.js +149 -132
  224. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  225. package/build-module/components/global-styles/utils.js +44 -0
  226. package/build-module/components/global-styles/utils.js.map +1 -1
  227. package/build-module/components/inner-blocks/index.js +16 -2
  228. package/build-module/components/inner-blocks/index.js.map +1 -1
  229. package/build-module/components/inserter/block-patterns-tab/index.js +13 -32
  230. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  231. package/build-module/components/inserter/block-types-tab.js +4 -0
  232. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  233. package/build-module/components/inserter/category-tabs/index.js +49 -0
  234. package/build-module/components/inserter/category-tabs/index.js.map +1 -0
  235. package/build-module/components/inserter/media-tab/index.js +1 -1
  236. package/build-module/components/inserter/media-tab/index.js.map +1 -1
  237. package/build-module/components/inserter/media-tab/media-panel.js +0 -24
  238. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  239. package/build-module/components/inserter/media-tab/media-preview.js +13 -3
  240. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  241. package/build-module/components/inserter/media-tab/media-tab.js +17 -31
  242. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  243. package/build-module/components/inserter/menu.js +61 -71
  244. package/build-module/components/inserter/menu.js.map +1 -1
  245. package/build-module/components/inserter/tabs.js +6 -6
  246. package/build-module/components/inserter/tabs.js.map +1 -1
  247. package/build-module/components/line-height-control/index.js +6 -2
  248. package/build-module/components/line-height-control/index.js.map +1 -1
  249. package/build-module/components/link-control/search-item.js +9 -3
  250. package/build-module/components/link-control/search-item.js.map +1 -1
  251. package/build-module/components/list-view/block-select-button.js +7 -172
  252. package/build-module/components/list-view/block-select-button.js.map +1 -1
  253. package/build-module/components/list-view/block.js +167 -15
  254. package/build-module/components/list-view/block.js.map +1 -1
  255. package/build-module/components/list-view/index.js +1 -1
  256. package/build-module/components/list-view/index.js.map +1 -1
  257. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  258. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  259. package/build-module/components/list-view/utils.js +3 -1
  260. package/build-module/components/list-view/utils.js.map +1 -1
  261. package/build-module/components/media-placeholder/index.js +3 -3
  262. package/build-module/components/media-placeholder/index.js.map +1 -1
  263. package/build-module/components/navigable-toolbar/index.js +3 -1
  264. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  265. package/build-module/components/provider/block-refs-provider.js +3 -4
  266. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  267. package/build-module/components/provider/use-block-sync.js +4 -13
  268. package/build-module/components/provider/use-block-sync.js.map +1 -1
  269. package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
  270. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  271. package/build-module/components/rich-text/event-listeners/delete.js +51 -0
  272. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
  273. package/build-module/components/rich-text/event-listeners/enter.js +92 -0
  274. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
  275. package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
  276. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  277. package/build-module/components/rich-text/event-listeners/index.js +36 -0
  278. package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
  279. package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
  280. package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
  281. package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
  282. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
  283. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
  284. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  285. package/build-module/components/rich-text/event-listeners/paste-handler.js +142 -0
  286. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  287. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
  288. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  289. package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
  290. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  291. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  292. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  293. package/build-module/components/rich-text/index.js +12 -32
  294. package/build-module/components/rich-text/index.js.map +1 -1
  295. package/build-module/components/rich-text/index.native.js +13 -3
  296. package/build-module/components/rich-text/index.native.js.map +1 -1
  297. package/build-module/components/rich-text/multiline.js +6 -2
  298. package/build-module/components/rich-text/multiline.js.map +1 -1
  299. package/build-module/components/rich-text/native/index.native.js +12 -0
  300. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  301. package/build-module/components/rich-text/use-format-types.js +8 -4
  302. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  303. package/build-module/components/segmented-text-control/index.js +55 -0
  304. package/build-module/components/segmented-text-control/index.js.map +1 -0
  305. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  306. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  307. package/build-module/components/text-alignment-control/index.js +68 -0
  308. package/build-module/components/text-alignment-control/index.js.map +1 -0
  309. package/build-module/components/text-decoration-control/index.js +21 -25
  310. package/build-module/components/text-decoration-control/index.js.map +1 -1
  311. package/build-module/components/text-transform-control/index.js +18 -22
  312. package/build-module/components/text-transform-control/index.js.map +1 -1
  313. package/build-module/components/use-block-display-information/index.js +9 -3
  314. package/build-module/components/use-block-display-information/index.js.map +1 -1
  315. package/build-module/components/use-on-block-drop/index.js +3 -1
  316. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  317. package/build-module/components/writing-flow/use-drag-selection.js +3 -1
  318. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  319. package/build-module/components/writing-flow/use-tab-nav.js +3 -1
  320. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  321. package/build-module/components/writing-mode-control/index.js +16 -20
  322. package/build-module/components/writing-mode-control/index.js.map +1 -1
  323. package/build-module/hooks/duotone.js +3 -1
  324. package/build-module/hooks/duotone.js.map +1 -1
  325. package/build-module/hooks/utils.js +11 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +4 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/actions.js +32 -8
  330. package/build-module/store/actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +27 -5
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +11 -8
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +21 -7
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/utils/object.js +16 -0
  338. package/build-module/utils/object.js.map +1 -1
  339. package/build-module/utils/order-inserter-block-items.js +6 -2
  340. package/build-module/utils/order-inserter-block-items.js.map +1 -1
  341. package/build-module/utils/pasting.js +6 -2
  342. package/build-module/utils/pasting.js.map +1 -1
  343. package/build-style/content-rtl.css +41 -68
  344. package/build-style/content.css +41 -68
  345. package/build-style/style-rtl.css +100 -199
  346. package/build-style/style.css +100 -199
  347. package/package.json +31 -31
  348. package/src/components/alignment-control/ui.js +3 -1
  349. package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
  350. package/src/components/block-canvas/style.scss +1 -3
  351. package/src/components/block-draggable/test/helpers.native.js +8 -8
  352. package/src/components/block-inspector/index.js +1 -2
  353. package/src/components/block-list/block.js +2 -13
  354. package/src/components/block-list/content.scss +9 -1
  355. package/src/components/block-list/index.js +4 -4
  356. package/src/components/block-list/index.native.js +1 -6
  357. package/src/components/block-list/use-block-props/index.js +12 -4
  358. package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
  360. package/src/components/block-mover/index.native.js +3 -1
  361. package/src/components/block-patterns-list/style.scss +1 -3
  362. package/src/components/block-preview/style.scss +13 -15
  363. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -51
  364. package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
  365. package/src/components/block-switcher/use-transformed-patterns.js +6 -2
  366. package/src/components/block-switcher/utils.js +14 -5
  367. package/src/components/block-toolbar/style.scss +8 -11
  368. package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
  369. package/src/components/block-tools/index.js +3 -1
  370. package/src/components/block-tools/use-show-block-tools.js +36 -48
  371. package/src/components/block-tools/zoom-out-mode-inserters.js +5 -1
  372. package/src/components/block-variation-picker/content.scss +22 -72
  373. package/src/components/block-variation-picker/index.js +3 -2
  374. package/src/components/block-variation-transforms/index.js +3 -1
  375. package/src/components/floating-toolbar/index.native.js +5 -2
  376. package/src/components/global-styles/background-panel.js +1 -3
  377. package/src/components/global-styles/color-panel.js +3 -1
  378. package/src/components/global-styles/dimensions-panel.js +18 -1
  379. package/src/components/global-styles/hooks.js +2 -0
  380. package/src/components/global-styles/test/utils.js +21 -0
  381. package/src/components/global-styles/typography-panel.js +27 -23
  382. package/src/components/global-styles/use-global-styles-output.js +211 -187
  383. package/src/components/global-styles/utils.js +55 -0
  384. package/src/components/inner-blocks/index.js +14 -1
  385. package/src/components/inserter/block-patterns-tab/index.js +15 -65
  386. package/src/components/inserter/block-types-tab.js +5 -0
  387. package/src/components/inserter/category-tabs/index.js +74 -0
  388. package/src/components/inserter/media-tab/index.js +1 -1
  389. package/src/components/inserter/media-tab/media-panel.js +0 -22
  390. package/src/components/inserter/media-tab/media-preview.js +15 -7
  391. package/src/components/inserter/media-tab/media-tab.js +44 -83
  392. package/src/components/inserter/menu.js +139 -117
  393. package/src/components/inserter/style.scss +90 -170
  394. package/src/components/inserter/tabs.js +5 -13
  395. package/src/components/line-height-control/index.js +6 -2
  396. package/src/components/link-control/search-item.js +9 -3
  397. package/src/components/list-view/block-select-button.js +73 -266
  398. package/src/components/list-view/block.js +218 -28
  399. package/src/components/list-view/index.js +1 -1
  400. package/src/components/list-view/style.scss +20 -28
  401. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  402. package/src/components/list-view/utils.js +3 -1
  403. package/src/components/media-placeholder/content.scss +0 -11
  404. package/src/components/media-placeholder/index.js +3 -3
  405. package/src/components/navigable-toolbar/index.js +3 -1
  406. package/src/components/provider/block-refs-provider.js +3 -8
  407. package/src/components/provider/test/use-block-sync.js +7 -0
  408. package/src/components/provider/use-block-sync.js +3 -20
  409. package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
  410. package/src/components/rich-text/event-listeners/delete.js +53 -0
  411. package/src/components/rich-text/event-listeners/enter.js +104 -0
  412. package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
  413. package/src/components/rich-text/event-listeners/index.js +56 -0
  414. package/src/components/rich-text/event-listeners/input-events.js +13 -0
  415. package/src/components/rich-text/event-listeners/input-rules.js +146 -0
  416. package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
  417. package/src/components/rich-text/event-listeners/paste-handler.js +169 -0
  418. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
  419. package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
  420. package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  421. package/src/components/rich-text/index.js +7 -34
  422. package/src/components/rich-text/index.native.js +11 -0
  423. package/src/components/rich-text/multiline.js +6 -2
  424. package/src/components/rich-text/native/index.native.js +11 -0
  425. package/src/components/rich-text/use-format-types.js +6 -2
  426. package/src/components/segmented-text-control/index.js +63 -0
  427. package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
  428. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
  429. package/src/components/text-alignment-control/index.js +91 -0
  430. package/src/components/text-alignment-control/stories/index.story.js +39 -0
  431. package/src/components/text-decoration-control/index.js +20 -33
  432. package/src/components/text-transform-control/index.js +17 -30
  433. package/src/components/use-block-display-information/index.js +9 -3
  434. package/src/components/use-on-block-drop/index.js +3 -1
  435. package/src/components/writing-flow/use-drag-selection.js +3 -1
  436. package/src/components/writing-flow/use-tab-nav.js +3 -1
  437. package/src/components/writing-mode-control/index.js +15 -28
  438. package/src/hooks/duotone.js +3 -1
  439. package/src/hooks/utils.js +16 -2
  440. package/src/private-apis.js +4 -2
  441. package/src/store/actions.js +36 -12
  442. package/src/store/private-selectors.js +28 -4
  443. package/src/store/reducer.js +13 -23
  444. package/src/store/selectors.js +20 -7
  445. package/src/style.scss +1 -2
  446. package/src/utils/object.js +16 -0
  447. package/src/utils/order-inserter-block-items.js +6 -2
  448. package/src/utils/pasting.js +6 -2
  449. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
  450. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  451. package/build/components/rich-text/use-before-input-rules.js +0 -98
  452. package/build/components/rich-text/use-before-input-rules.js.map +0 -1
  453. package/build/components/rich-text/use-delete.js +0 -64
  454. package/build/components/rich-text/use-delete.js.map +0 -1
  455. package/build/components/rich-text/use-enter.js +0 -109
  456. package/build/components/rich-text/use-enter.js.map +0 -1
  457. package/build/components/rich-text/use-firefox-compat.js +0 -44
  458. package/build/components/rich-text/use-firefox-compat.js.map +0 -1
  459. package/build/components/rich-text/use-input-events.js +0 -25
  460. package/build/components/rich-text/use-input-events.js.map +0 -1
  461. package/build/components/rich-text/use-input-rules.js +0 -139
  462. package/build/components/rich-text/use-input-rules.js.map +0 -1
  463. package/build/components/rich-text/use-insert-replacement-text.js +0 -38
  464. package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
  465. package/build/components/rich-text/use-paste-handler.js +0 -158
  466. package/build/components/rich-text/use-paste-handler.js.map +0 -1
  467. package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
  468. package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  469. package/build/components/rich-text/use-shortcuts.js +0 -25
  470. package/build/components/rich-text/use-shortcuts.js.map +0 -1
  471. package/build/components/rich-text/use-undo-automatic-change.js +0 -53
  472. package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
  473. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
  474. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  475. package/build-module/components/rich-text/use-before-input-rules.js +0 -92
  476. package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
  477. package/build-module/components/rich-text/use-delete.js +0 -57
  478. package/build-module/components/rich-text/use-delete.js.map +0 -1
  479. package/build-module/components/rich-text/use-enter.js +0 -102
  480. package/build-module/components/rich-text/use-enter.js.map +0 -1
  481. package/build-module/components/rich-text/use-firefox-compat.js +0 -37
  482. package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
  483. package/build-module/components/rich-text/use-input-events.js +0 -18
  484. package/build-module/components/rich-text/use-input-events.js.map +0 -1
  485. package/build-module/components/rich-text/use-input-rules.js +0 -132
  486. package/build-module/components/rich-text/use-input-rules.js.map +0 -1
  487. package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
  488. package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
  489. package/build-module/components/rich-text/use-paste-handler.js +0 -152
  490. package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
  491. package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
  492. package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  493. package/build-module/components/rich-text/use-shortcuts.js +0 -18
  494. package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
  495. package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
  496. package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
  497. package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
  498. package/src/components/rich-text/use-before-input-rules.js +0 -99
  499. package/src/components/rich-text/use-delete.js +0 -59
  500. package/src/components/rich-text/use-enter.js +0 -110
  501. package/src/components/rich-text/use-firefox-compat.js +0 -39
  502. package/src/components/rich-text/use-input-events.js +0 -19
  503. package/src/components/rich-text/use-input-rules.js +0 -150
  504. package/src/components/rich-text/use-insert-replacement-text.js +0 -31
  505. package/src/components/rich-text/use-paste-handler.js +0 -180
  506. package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
  507. package/src/components/rich-text/use-shortcuts.js +0 -19
  508. package/src/components/rich-text/use-undo-automatic-change.js +0 -46
  509. package/src/components/text-decoration-control/style.scss +0 -18
  510. package/src/components/text-transform-control/style.scss +0 -18
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useMergeRefs","forwardRef","useMemo","memo","useSelect","getBlockSupport","store","blocksStore","__unstableGetInnerBlocksProps","getInnerBlocksProps","ButtonBlockAppender","DefaultBlockAppender","useNestedSettingsUpdate","useInnerBlockTemplateSync","useBlockContext","BlockListItems","BlockContextProvider","useBlockEditContext","useBlockSync","blockEditorStore","useBlockDropZone","unlock","EMPTY_OBJECT","BlockContext","children","clientId","context","createElement","value","BlockListItemsMemo","UncontrolledInnerBlocks","props","allowedBlocks","prioritizedInserterBlocks","defaultBlock","directInsert","__experimentalDefaultBlock","__experimentalDirectInsert","template","templateLock","wrapperRef","templateInsertUpdatesSelection","__experimentalCaptureToolbars","captureToolbars","__experimentalAppenderTagName","renderAppender","orientation","placeholder","layout","name","blockType","parentLock","defaultLayout","defaultLayoutBlockSupport","allowSizingOnChildren","usedLayout","memoedLayout","items","rootClientId","Object","keys","providesContext","length","ControlledInnerBlocks","ForwardedInnerBlocks","ref","innerBlocksProps","useInnerBlocksProps","className","options","__unstableDisableLayoutClassNames","__unstableDisableDropZone","dropZoneElement","__unstableLayoutClassNames","layoutClassNames","selected","select","getBlockName","isBlockSelected","hasSelectedInnerBlock","__unstableGetEditorMode","getTemplateLock","getBlockRootClientId","getBlockEditingMode","getBlockSettings","isDragging","hasBlockSupport","getBlockType","blockName","enableClickThrough","blockEditingMode","parentClientId","hasOverlay","isDropZoneDisabled","blockDropZoneRef","isDisabled","InnerBlocks","onChange","save","Content"],"sources":["@wordpress/block-editor/src/components/inner-blocks/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { forwardRef, useMemo, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockSupport,\n\tstore as blocksStore,\n\t__unstableGetInnerBlocksProps as getInnerBlocksProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport ButtonBlockAppender from './button-block-appender';\nimport DefaultBlockAppender from './default-block-appender';\nimport useNestedSettingsUpdate from './use-nested-settings-update';\nimport useInnerBlockTemplateSync from './use-inner-block-template-sync';\nimport useBlockContext from './use-block-context';\nimport { BlockListItems } from '../block-list';\nimport { BlockContextProvider } from '../block-context';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useBlockSync from '../provider/use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDropZone from '../use-block-drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_OBJECT = {};\n\nfunction BlockContext( { children, clientId } ) {\n\tconst context = useBlockContext( clientId );\n\treturn (\n\t\t<BlockContextProvider value={ context }>\n\t\t\t{ children }\n\t\t</BlockContextProvider>\n\t);\n}\n\nconst BlockListItemsMemo = memo( BlockListItems );\n\n/**\n * InnerBlocks is a component which allows a single block to have multiple blocks\n * as children. The UncontrolledInnerBlocks component is used whenever the inner\n * blocks are not controlled by another entity. In other words, it is normally\n * used for inner blocks in the post editor\n *\n * @param {Object} props The component props.\n */\nfunction UncontrolledInnerBlocks( props ) {\n\tconst {\n\t\tclientId,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\twrapperRef,\n\t\ttemplateInsertUpdatesSelection,\n\t\t__experimentalCaptureToolbars: captureToolbars,\n\t\t__experimentalAppenderTagName,\n\t\trenderAppender,\n\t\torientation,\n\t\tplaceholder,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t} = props;\n\n\tuseNestedSettingsUpdate(\n\t\tclientId,\n\t\tparentLock,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplateLock,\n\t\tcaptureToolbars,\n\t\torientation,\n\t\tlayout\n\t);\n\n\tuseInnerBlockTemplateSync(\n\t\tclientId,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\ttemplateInsertUpdatesSelection\n\t);\n\n\tconst defaultLayoutBlockSupport =\n\t\tgetBlockSupport( name, 'layout' ) ||\n\t\tgetBlockSupport( name, '__experimentalLayout' ) ||\n\t\tEMPTY_OBJECT;\n\n\tconst { allowSizingOnChildren = false } = defaultLayoutBlockSupport;\n\tconst usedLayout = layout || defaultLayoutBlockSupport;\n\n\tconst memoedLayout = useMemo(\n\t\t() => ( {\n\t\t\t// Default layout will know about any content/wide size defined by the theme.\n\t\t\t...defaultLayout,\n\t\t\t...usedLayout,\n\t\t\t...( allowSizingOnChildren && {\n\t\t\t\tallowSizingOnChildren: true,\n\t\t\t} ),\n\t\t} ),\n\t\t[ defaultLayout, usedLayout, allowSizingOnChildren ]\n\t);\n\n\t// For controlled inner blocks, we don't want a change in blocks to\n\t// re-render the blocks list.\n\tconst items = (\n\t\t<BlockListItemsMemo\n\t\t\trootClientId={ clientId }\n\t\t\trenderAppender={ renderAppender }\n\t\t\t__experimentalAppenderTagName={ __experimentalAppenderTagName }\n\t\t\tlayout={ memoedLayout }\n\t\t\twrapperRef={ wrapperRef }\n\t\t\tplaceholder={ placeholder }\n\t\t/>\n\t);\n\n\tif ( Object.keys( blockType.providesContext ).length === 0 ) {\n\t\treturn items;\n\t}\n\n\treturn <BlockContext clientId={ clientId }>{ items }</BlockContext>;\n}\n\n/**\n * The controlled inner blocks component wraps the uncontrolled inner blocks\n * component with the blockSync hook. This keeps the innerBlocks of the block in\n * the block-editor store in sync with the blocks of the controlling entity. An\n * example of an inner block controller is a template part block, which provides\n * its own blocks from the template part entity data source.\n *\n * @param {Object} props The component props.\n */\nfunction ControlledInnerBlocks( props ) {\n\tuseBlockSync( props );\n\treturn <UncontrolledInnerBlocks { ...props } />;\n}\n\nconst ForwardedInnerBlocks = forwardRef( ( props, ref ) => {\n\tconst innerBlocksProps = useInnerBlocksProps( { ref }, props );\n\treturn (\n\t\t<div className=\"block-editor-inner-blocks\">\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</div>\n\t);\n} );\n\n/**\n * This hook is used to lightly mark an element as an inner blocks wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * an inner blocks wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Optional. Inner blocks options.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport function useInnerBlocksProps( props = {}, options = {} ) {\n\tconst {\n\t\t__unstableDisableLayoutClassNames,\n\t\t__unstableDisableDropZone,\n\t\tdropZoneElement,\n\t} = options;\n\tconst {\n\t\tclientId,\n\t\tlayout = null,\n\t\t__unstableLayoutClassNames: layoutClassNames = '',\n\t} = useBlockEditContext();\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockSettings,\n\t\t\t\tisDragging,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { hasBlockSupport, getBlockType } = select( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst enableClickThrough =\n\t\t\t\t__unstableGetEditorMode() === 'navigation';\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst parentClientId = getBlockRootClientId( clientId );\n\t\t\tconst [ defaultLayout ] = getBlockSettings( clientId, 'layout' );\n\t\t\treturn {\n\t\t\t\t__experimentalCaptureToolbars: hasBlockSupport(\n\t\t\t\t\tblockName,\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasOverlay:\n\t\t\t\t\tblockName !== 'core/template' &&\n\t\t\t\t\t! isBlockSelected( clientId ) &&\n\t\t\t\t\t! hasSelectedInnerBlock( clientId, true ) &&\n\t\t\t\t\tenableClickThrough &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tname: blockName,\n\t\t\t\tblockType: getBlockType( blockName ),\n\t\t\t\tparentLock: getTemplateLock( parentClientId ),\n\t\t\t\tparentClientId,\n\t\t\t\tisDropZoneDisabled: blockEditingMode === 'disabled',\n\t\t\t\tdefaultLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\t__experimentalCaptureToolbars,\n\t\thasOverlay,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tparentClientId,\n\t\tisDropZoneDisabled,\n\t\tdefaultLayout,\n\t} = selected;\n\n\tconst blockDropZoneRef = useBlockDropZone( {\n\t\tdropZoneElement,\n\t\trootClientId: clientId,\n\t\tparentClientId,\n\t\tisDisabled: isDropZoneDisabled,\n\t} );\n\n\tconst ref = useMergeRefs( [\n\t\tprops.ref,\n\t\t__unstableDisableDropZone ? null : blockDropZoneRef,\n\t] );\n\n\tconst innerBlocksProps = {\n\t\t__experimentalCaptureToolbars,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t\t...options,\n\t};\n\tconst InnerBlocks =\n\t\tinnerBlocksProps.value && innerBlocksProps.onChange\n\t\t\t? ControlledInnerBlocks\n\t\t\t: UncontrolledInnerBlocks;\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: classnames(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-list__layout',\n\t\t\t__unstableDisableLayoutClassNames ? '' : layoutClassNames,\n\t\t\t{\n\t\t\t\t'has-overlay': hasOverlay,\n\t\t\t}\n\t\t),\n\t\tchildren: clientId ? (\n\t\t\t<InnerBlocks { ...innerBlocksProps } clientId={ clientId } />\n\t\t) : (\n\t\t\t<BlockListItems { ...options } />\n\t\t),\n\t};\n}\n\nuseInnerBlocksProps.save = getInnerBlocksProps;\n\n// Expose default appender placeholders as components.\nForwardedInnerBlocks.DefaultBlockAppender = DefaultBlockAppender;\nForwardedInnerBlocks.ButtonBlockAppender = ButtonBlockAppender;\n\nForwardedInnerBlocks.Content = () => useInnerBlocksProps.save().children;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport default ForwardedInnerBlocks;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["classnames","useMergeRefs","forwardRef","useMemo","memo","useSelect","getBlockSupport","store","blocksStore","__unstableGetInnerBlocksProps","getInnerBlocksProps","ButtonBlockAppender","DefaultBlockAppender","useNestedSettingsUpdate","useInnerBlockTemplateSync","useBlockContext","BlockListItems","BlockContextProvider","useBlockEditContext","useBlockSync","blockEditorStore","useBlockDropZone","unlock","EMPTY_OBJECT","BlockContext","children","clientId","context","createElement","value","BlockListItemsMemo","UncontrolledInnerBlocks","props","allowedBlocks","prioritizedInserterBlocks","defaultBlock","directInsert","__experimentalDefaultBlock","__experimentalDirectInsert","template","templateLock","wrapperRef","templateInsertUpdatesSelection","__experimentalCaptureToolbars","captureToolbars","__experimentalAppenderTagName","renderAppender","orientation","placeholder","layout","name","blockType","parentLock","defaultLayout","defaultLayoutBlockSupport","allowSizingOnChildren","usedLayout","memoedLayout","items","rootClientId","Object","keys","providesContext","length","ControlledInnerBlocks","ForwardedInnerBlocks","ref","innerBlocksProps","useInnerBlocksProps","className","options","__unstableDisableLayoutClassNames","__unstableDisableDropZone","dropZoneElement","__unstableLayoutClassNames","layoutClassNames","selected","select","getBlockName","isBlockSelected","hasSelectedInnerBlock","__unstableGetEditorMode","getTemplateLock","getBlockRootClientId","getBlockEditingMode","getBlockSettings","isDragging","getSettings","getBlockOrder","hasBlockSupport","getBlockType","blockName","enableClickThrough","blockEditingMode","parentClientId","_isDropZoneDisabled","sectionRootClientId","sectionsClientIds","includes","hasOverlay","isDropZoneDisabled","blockDropZoneRef","isDisabled","InnerBlocks","onChange","save","Content"],"sources":["@wordpress/block-editor/src/components/inner-blocks/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { forwardRef, useMemo, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tgetBlockSupport,\n\tstore as blocksStore,\n\t__unstableGetInnerBlocksProps as getInnerBlocksProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport ButtonBlockAppender from './button-block-appender';\nimport DefaultBlockAppender from './default-block-appender';\nimport useNestedSettingsUpdate from './use-nested-settings-update';\nimport useInnerBlockTemplateSync from './use-inner-block-template-sync';\nimport useBlockContext from './use-block-context';\nimport { BlockListItems } from '../block-list';\nimport { BlockContextProvider } from '../block-context';\nimport { useBlockEditContext } from '../block-edit/context';\nimport useBlockSync from '../provider/use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDropZone from '../use-block-drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_OBJECT = {};\n\nfunction BlockContext( { children, clientId } ) {\n\tconst context = useBlockContext( clientId );\n\treturn (\n\t\t<BlockContextProvider value={ context }>\n\t\t\t{ children }\n\t\t</BlockContextProvider>\n\t);\n}\n\nconst BlockListItemsMemo = memo( BlockListItems );\n\n/**\n * InnerBlocks is a component which allows a single block to have multiple blocks\n * as children. The UncontrolledInnerBlocks component is used whenever the inner\n * blocks are not controlled by another entity. In other words, it is normally\n * used for inner blocks in the post editor\n *\n * @param {Object} props The component props.\n */\nfunction UncontrolledInnerBlocks( props ) {\n\tconst {\n\t\tclientId,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\twrapperRef,\n\t\ttemplateInsertUpdatesSelection,\n\t\t__experimentalCaptureToolbars: captureToolbars,\n\t\t__experimentalAppenderTagName,\n\t\trenderAppender,\n\t\torientation,\n\t\tplaceholder,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t} = props;\n\n\tuseNestedSettingsUpdate(\n\t\tclientId,\n\t\tparentLock,\n\t\tallowedBlocks,\n\t\tprioritizedInserterBlocks,\n\t\tdefaultBlock,\n\t\tdirectInsert,\n\t\t__experimentalDefaultBlock,\n\t\t__experimentalDirectInsert,\n\t\ttemplateLock,\n\t\tcaptureToolbars,\n\t\torientation,\n\t\tlayout\n\t);\n\n\tuseInnerBlockTemplateSync(\n\t\tclientId,\n\t\ttemplate,\n\t\ttemplateLock,\n\t\ttemplateInsertUpdatesSelection\n\t);\n\n\tconst defaultLayoutBlockSupport =\n\t\tgetBlockSupport( name, 'layout' ) ||\n\t\tgetBlockSupport( name, '__experimentalLayout' ) ||\n\t\tEMPTY_OBJECT;\n\n\tconst { allowSizingOnChildren = false } = defaultLayoutBlockSupport;\n\tconst usedLayout = layout || defaultLayoutBlockSupport;\n\n\tconst memoedLayout = useMemo(\n\t\t() => ( {\n\t\t\t// Default layout will know about any content/wide size defined by the theme.\n\t\t\t...defaultLayout,\n\t\t\t...usedLayout,\n\t\t\t...( allowSizingOnChildren && {\n\t\t\t\tallowSizingOnChildren: true,\n\t\t\t} ),\n\t\t} ),\n\t\t[ defaultLayout, usedLayout, allowSizingOnChildren ]\n\t);\n\n\t// For controlled inner blocks, we don't want a change in blocks to\n\t// re-render the blocks list.\n\tconst items = (\n\t\t<BlockListItemsMemo\n\t\t\trootClientId={ clientId }\n\t\t\trenderAppender={ renderAppender }\n\t\t\t__experimentalAppenderTagName={ __experimentalAppenderTagName }\n\t\t\tlayout={ memoedLayout }\n\t\t\twrapperRef={ wrapperRef }\n\t\t\tplaceholder={ placeholder }\n\t\t/>\n\t);\n\n\tif ( Object.keys( blockType.providesContext ).length === 0 ) {\n\t\treturn items;\n\t}\n\n\treturn <BlockContext clientId={ clientId }>{ items }</BlockContext>;\n}\n\n/**\n * The controlled inner blocks component wraps the uncontrolled inner blocks\n * component with the blockSync hook. This keeps the innerBlocks of the block in\n * the block-editor store in sync with the blocks of the controlling entity. An\n * example of an inner block controller is a template part block, which provides\n * its own blocks from the template part entity data source.\n *\n * @param {Object} props The component props.\n */\nfunction ControlledInnerBlocks( props ) {\n\tuseBlockSync( props );\n\treturn <UncontrolledInnerBlocks { ...props } />;\n}\n\nconst ForwardedInnerBlocks = forwardRef( ( props, ref ) => {\n\tconst innerBlocksProps = useInnerBlocksProps( { ref }, props );\n\treturn (\n\t\t<div className=\"block-editor-inner-blocks\">\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</div>\n\t);\n} );\n\n/**\n * This hook is used to lightly mark an element as an inner blocks wrapper\n * element. Call this hook and pass the returned props to the element to mark as\n * an inner blocks wrapper, automatically rendering inner blocks as children. If\n * you define a ref for the element, it is important to pass the ref to this\n * hook, which the hook in turn will pass to the component through the props it\n * returns. Optionally, you can also pass any other props through this hook, and\n * they will be merged and returned.\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Optional. Inner blocks options.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport function useInnerBlocksProps( props = {}, options = {} ) {\n\tconst {\n\t\t__unstableDisableLayoutClassNames,\n\t\t__unstableDisableDropZone,\n\t\tdropZoneElement,\n\t} = options;\n\tconst {\n\t\tclientId,\n\t\tlayout = null,\n\t\t__unstableLayoutClassNames: layoutClassNames = '',\n\t} = useBlockEditContext();\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockSettings,\n\t\t\t\tisDragging,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { hasBlockSupport, getBlockType } = select( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst enableClickThrough =\n\t\t\t\t__unstableGetEditorMode() === 'navigation';\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst parentClientId = getBlockRootClientId( clientId );\n\t\t\tconst [ defaultLayout ] = getBlockSettings( clientId, 'layout' );\n\n\t\t\t// In zoom out mode, we want to disable the drop zone for the sections.\n\t\t\t// The inner blocks belonging to the section drop zone is\n\t\t\t// already disabled by the blocks themselves being disabled.\n\t\t\tlet _isDropZoneDisabled = blockEditingMode === 'disabled';\n\t\t\tif ( __unstableGetEditorMode() === 'zoom-out' ) {\n\t\t\t\tconst { sectionRootClientId } = unlock( getSettings() );\n\t\t\t\tconst sectionsClientIds = getBlockOrder( sectionRootClientId );\n\t\t\t\t_isDropZoneDisabled = sectionsClientIds?.includes( clientId );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__experimentalCaptureToolbars: hasBlockSupport(\n\t\t\t\t\tblockName,\n\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasOverlay:\n\t\t\t\t\tblockName !== 'core/template' &&\n\t\t\t\t\t! isBlockSelected( clientId ) &&\n\t\t\t\t\t! hasSelectedInnerBlock( clientId, true ) &&\n\t\t\t\t\tenableClickThrough &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tname: blockName,\n\t\t\t\tblockType: getBlockType( blockName ),\n\t\t\t\tparentLock: getTemplateLock( parentClientId ),\n\t\t\t\tparentClientId,\n\t\t\t\tisDropZoneDisabled: _isDropZoneDisabled,\n\t\t\t\tdefaultLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\t__experimentalCaptureToolbars,\n\t\thasOverlay,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tparentClientId,\n\t\tisDropZoneDisabled,\n\t\tdefaultLayout,\n\t} = selected;\n\n\tconst blockDropZoneRef = useBlockDropZone( {\n\t\tdropZoneElement,\n\t\trootClientId: clientId,\n\t\tparentClientId,\n\t\tisDisabled: isDropZoneDisabled,\n\t} );\n\n\tconst ref = useMergeRefs( [\n\t\tprops.ref,\n\t\t__unstableDisableDropZone ? null : blockDropZoneRef,\n\t] );\n\n\tconst innerBlocksProps = {\n\t\t__experimentalCaptureToolbars,\n\t\tlayout,\n\t\tname,\n\t\tblockType,\n\t\tparentLock,\n\t\tdefaultLayout,\n\t\t...options,\n\t};\n\tconst InnerBlocks =\n\t\tinnerBlocksProps.value && innerBlocksProps.onChange\n\t\t\t? ControlledInnerBlocks\n\t\t\t: UncontrolledInnerBlocks;\n\n\treturn {\n\t\t...props,\n\t\tref,\n\t\tclassName: classnames(\n\t\t\tprops.className,\n\t\t\t'block-editor-block-list__layout',\n\t\t\t__unstableDisableLayoutClassNames ? '' : layoutClassNames,\n\t\t\t{\n\t\t\t\t'has-overlay': hasOverlay,\n\t\t\t}\n\t\t),\n\t\tchildren: clientId ? (\n\t\t\t<InnerBlocks { ...innerBlocksProps } clientId={ clientId } />\n\t\t) : (\n\t\t\t<BlockListItems { ...options } />\n\t\t),\n\t};\n}\n\nuseInnerBlocksProps.save = getInnerBlocksProps;\n\n// Expose default appender placeholders as components.\nForwardedInnerBlocks.DefaultBlockAppender = DefaultBlockAppender;\nForwardedInnerBlocks.ButtonBlockAppender = ButtonBlockAppender;\n\nForwardedInnerBlocks.Content = () => useInnerBlocksProps.save().children;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md\n */\nexport default ForwardedInnerBlocks;\n"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,9 @@ import { createElement, Fragment } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { useState } from '@wordpress/element';
6
- import { __, isRTL } from '@wordpress/i18n';
7
6
  import { useViewportMatch } from '@wordpress/compose';
8
- import { __experimentalHStack as HStack, FlexBlock, Button, privateApis as componentsPrivateApis } from '@wordpress/components';
9
- import { Icon, chevronRight, chevronLeft } from '@wordpress/icons';
7
+ import { Button } from '@wordpress/components';
8
+ import { __ } from '@wordpress/i18n';
10
9
 
11
10
  /**
12
11
  * Internal dependencies
@@ -15,10 +14,8 @@ import PatternsExplorerModal from '../block-patterns-explorer';
15
14
  import MobileTabNavigation from '../mobile-tab-navigation';
16
15
  import { PatternCategoryPreviews } from './pattern-category-previews';
17
16
  import { usePatternCategories } from './use-pattern-categories';
18
- import { unlock } from '../../../lock-unlock';
19
- const {
20
- Tabs
21
- } = unlock(componentsPrivateApis);
17
+ import CategoryTabs from '../category-tabs';
18
+ import InserterNoResults from '../no-results';
22
19
  function BlockPatternsTab({
23
20
  onSelectCategory,
24
21
  selectedCategory,
@@ -29,39 +26,23 @@ function BlockPatternsTab({
29
26
  const [showPatternsExplorer, setShowPatternsExplorer] = useState(false);
30
27
  const categories = usePatternCategories(rootClientId);
31
28
  const isMobile = useViewportMatch('medium', '<');
29
+ if (!categories.length) {
30
+ return createElement(InserterNoResults, null);
31
+ }
32
32
  return createElement(Fragment, null, !isMobile && createElement("div", {
33
33
  className: "block-editor-inserter__block-patterns-tabs-container"
34
- }, createElement(Tabs, {
35
- selectOnMove: false,
36
- selectedTabId: selectedCategory ? selectedCategory.name : null,
37
- orientation: 'vertical',
38
- onSelect: categoryId => {
39
- // Pass the full category object
40
- onSelectCategory(categories.find(category => category.name === categoryId));
41
- }
42
- }, createElement(Tabs.TabList, {
43
- className: "block-editor-inserter__block-patterns-tablist"
44
- }, categories.map(category => createElement(Tabs.Tab, {
45
- key: category.name,
46
- tabId: category.name,
47
- className: "block-editor-inserter__patterns-tab",
48
- "aria-label": category.label,
49
- "aria-current": category === selectedCategory ? 'true' : undefined
50
- }, createElement(HStack, null, createElement(FlexBlock, null, category.label), createElement(Icon, {
51
- icon: isRTL() ? chevronLeft : chevronRight
52
- }))))), categories.map(category => createElement(Tabs.TabPanel, {
53
- key: category.name,
54
- tabId: category.name,
55
- focusable: false,
56
- className: "block-editor-inserter__patterns-category-panel"
57
- }, children))), createElement(Button, {
34
+ }, createElement(CategoryTabs, {
35
+ categories: categories,
36
+ selectedCategory: selectedCategory,
37
+ onSelectCategory: onSelectCategory
38
+ }, children), createElement(Button, {
58
39
  className: "block-editor-inserter__patterns-explore-button",
59
40
  onClick: () => setShowPatternsExplorer(true),
60
41
  variant: "secondary"
61
42
  }, __('Explore all patterns'))), isMobile && createElement(MobileTabNavigation, {
62
43
  categories: categories
63
44
  }, category => createElement("div", {
64
- className: "block-editor-inserter__patterns-category-panel"
45
+ className: "block-editor-inserter__category-panel"
65
46
  }, createElement(PatternCategoryPreviews, {
66
47
  key: category.name,
67
48
  onInsert: onInsert,
@@ -1 +1 @@
1
- {"version":3,"names":["useState","__","isRTL","useViewportMatch","__experimentalHStack","HStack","FlexBlock","Button","privateApis","componentsPrivateApis","Icon","chevronRight","chevronLeft","PatternsExplorerModal","MobileTabNavigation","PatternCategoryPreviews","usePatternCategories","unlock","Tabs","BlockPatternsTab","onSelectCategory","selectedCategory","onInsert","rootClientId","children","showPatternsExplorer","setShowPatternsExplorer","categories","isMobile","createElement","Fragment","className","selectOnMove","selectedTabId","name","orientation","onSelect","categoryId","find","category","TabList","map","Tab","key","tabId","label","undefined","icon","TabPanel","focusable","onClick","variant","showTitlesAsTooltip","initialCategory","patternCategories","onModalClose"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport PatternsExplorerModal from '../block-patterns-explorer';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport { PatternCategoryPreviews } from './pattern-category-previews';\nimport { usePatternCategories } from './use-pattern-categories';\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction BlockPatternsTab( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n\tchildren,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternCategories( rootClientId );\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tselectOnMove={ false }\n\t\t\t\t\t\tselectedTabId={\n\t\t\t\t\t\t\tselectedCategory ? selectedCategory.name : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\torientation={ 'vertical' }\n\t\t\t\t\t\tonSelect={ ( categoryId ) => {\n\t\t\t\t\t\t\t// Pass the full category object\n\t\t\t\t\t\t\tonSelectCategory(\n\t\t\t\t\t\t\t\tcategories.find(\n\t\t\t\t\t\t\t\t\t( category ) => category.name === categoryId\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>\n\t\t\t\t\t\t<Tabs.TabList className=\"block-editor-inserter__block-patterns-tablist\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\ttabId={ category.name }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-tab\"\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\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</HStack>\n\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\ttabId={ category.name }\n\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\tonClick={ () => setShowPatternsExplorer( true ) }\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory || categories[ 0 ] }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTab;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","useViewportMatch","Button","__","PatternsExplorerModal","MobileTabNavigation","PatternCategoryPreviews","usePatternCategories","CategoryTabs","InserterNoResults","BlockPatternsTab","onSelectCategory","selectedCategory","onInsert","rootClientId","children","showPatternsExplorer","setShowPatternsExplorer","categories","isMobile","length","createElement","Fragment","className","onClick","variant","category","key","name","showTitlesAsTooltip","initialCategory","patternCategories","onModalClose"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PatternsExplorerModal from '../block-patterns-explorer';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport { PatternCategoryPreviews } from './pattern-category-previews';\nimport { usePatternCategories } from './use-pattern-categories';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\n\nfunction BlockPatternsTab( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n\tchildren,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternCategories( rootClientId );\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\tonClick={ () => setShowPatternsExplorer( true ) }\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<div className=\"block-editor-inserter__category-panel\">\n\t\t\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory || categories[ 0 ] }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTab;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,qBAAqB,MAAM,4BAA4B;AAC9D,OAAOC,mBAAmB,MAAM,0BAA0B;AAC1D,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,oBAAoB,QAAQ,0BAA0B;AAC/D,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,OAAOC,iBAAiB,MAAM,eAAe;AAE7C,SAASC,gBAAgBA,CAAE;EAC1BC,gBAAgB;EAChBC,gBAAgB;EAChBC,QAAQ;EACRC,YAAY;EACZC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,oBAAoB,EAAEC,uBAAuB,CAAE,GAAGjB,QAAQ,CAAE,KAAM,CAAC;EAE3E,MAAMkB,UAAU,GAAGX,oBAAoB,CAAEO,YAAa,CAAC;EAEvD,MAAMK,QAAQ,GAAGlB,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EAElD,IAAK,CAAEiB,UAAU,CAACE,MAAM,EAAG;IAC1B,OAAOC,aAAA,CAACZ,iBAAiB,MAAE,CAAC;EAC7B;EAEA,OACCY,aAAA,CAAAC,QAAA,QACG,CAAEH,QAAQ,IACXE,aAAA;IAAKE,SAAS,EAAC;EAAsD,GACpEF,aAAA,CAACb,YAAY;IACZU,UAAU,EAAGA,UAAY;IACzBN,gBAAgB,EAAGA,gBAAkB;IACrCD,gBAAgB,EAAGA;EAAkB,GAEnCI,QACW,CAAC,EACfM,aAAA,CAACnB,MAAM;IACNqB,SAAS,EAAC,gDAAgD;IAC1DC,OAAO,EAAGA,CAAA,KAAMP,uBAAuB,CAAE,IAAK,CAAG;IACjDQ,OAAO,EAAC;EAAW,GAEjBtB,EAAE,CAAE,sBAAuB,CACtB,CACJ,CACL,EACCgB,QAAQ,IACTE,aAAA,CAAChB,mBAAmB;IAACa,UAAU,EAAGA;EAAY,GACzCQ,QAAQ,IACXL,aAAA;IAAKE,SAAS,EAAC;EAAuC,GACrDF,aAAA,CAACf,uBAAuB;IACvBqB,GAAG,EAAGD,QAAQ,CAACE,IAAM;IACrBf,QAAQ,EAAGA,QAAU;IACrBC,YAAY,EAAGA,YAAc;IAC7BY,QAAQ,EAAGA,QAAU;IACrBG,mBAAmB,EAAG;EAAO,CAC7B,CACG,CAEc,CACrB,EACCb,oBAAoB,IACrBK,aAAA,CAACjB,qBAAqB;IACrB0B,eAAe,EAAGlB,gBAAgB,IAAIM,UAAU,CAAE,CAAC,CAAI;IACvDa,iBAAiB,EAAGb,UAAY;IAChCc,YAAY,EAAGA,CAAA,KAAMf,uBAAuB,CAAE,KAAM,CAAG;IACvDH,YAAY,EAAGA;EAAc,CAC7B,CAED,CAAC;AAEL;AAEA,eAAeJ,gBAAgB","ignoreList":[]}
@@ -14,6 +14,7 @@ import InserterPanel from './panel';
14
14
  import useBlockTypesState from './hooks/use-block-types-state';
15
15
  import InserterListbox from '../inserter-listbox';
16
16
  import { orderBy } from '../../utils/sorting';
17
+ import InserterNoResults from './no-results';
17
18
  const getBlockNamespace = item => item.name.split('/')[0];
18
19
  const MAX_SUGGESTED_ITEMS = 6;
19
20
 
@@ -80,6 +81,9 @@ export function BlockTypesTab({
80
81
  return Object.entries(collections);
81
82
  }, [collections]);
82
83
  const currentlyRenderedCollections = useAsyncList(didRenderAllCategories ? collectionEntries : EMPTY_ARRAY);
84
+ if (!items.length) {
85
+ return createElement(InserterNoResults, null);
86
+ }
83
87
  return createElement(InserterListbox, null, createElement("div", null, showMostUsedBlocks && !!suggestedItems.length && createElement(InserterPanel, {
84
88
  title: _x('Most used', 'blocks')
85
89
  }, createElement(BlockTypesList, {
@@ -1 +1 @@
1
- {"version":3,"names":["__","_x","useMemo","useEffect","pipe","useAsyncList","BlockTypesList","InserterPanel","useBlockTypesState","InserterListbox","orderBy","getBlockNamespace","item","name","split","MAX_SUGGESTED_ITEMS","EMPTY_ARRAY","BlockTypesTab","rootClientId","onInsert","onHover","showMostUsedBlocks","items","categories","collections","onSelectItem","suggestedItems","slice","uncategorizedItems","filter","category","itemsPerCategory","itemList","reduce","acc","push","itemsPerCollection","result","Object","keys","forEach","namespace","length","currentlyRenderedCategories","didRenderAllCategories","collectionEntries","entries","currentlyRenderedCollections","createElement","title","onSelect","label","map","categoryItems","slug","key","icon","className","collection","collectionItems"],"sources":["@wordpress/block-editor/src/components/inserter/block-types-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { pipe, useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\n\nconst getBlockNamespace = ( item ) => item.name.split( '/' )[ 0 ];\n\nconst MAX_SUGGESTED_ITEMS = 6;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function BlockTypesTab( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tshowMostUsedBlocks,\n} ) {\n\tconst [ items, categories, collections, onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tconst suggestedItems = useMemo( () => {\n\t\treturn orderBy( items, 'frecency', 'desc' ).slice(\n\t\t\t0,\n\t\t\tMAX_SUGGESTED_ITEMS\n\t\t);\n\t}, [ items ] );\n\n\tconst uncategorizedItems = useMemo( () => {\n\t\treturn items.filter( ( item ) => ! item.category );\n\t}, [ items ] );\n\n\tconst itemsPerCategory = useMemo( () => {\n\t\treturn pipe(\n\t\t\t( itemList ) =>\n\t\t\t\titemList.filter(\n\t\t\t\t\t( item ) => item.category && item.category !== 'reusable'\n\t\t\t\t),\n\t\t\t( itemList ) =>\n\t\t\t\titemList.reduce( ( acc, item ) => {\n\t\t\t\t\tconst { category } = item;\n\t\t\t\t\tif ( ! acc[ category ] ) {\n\t\t\t\t\t\tacc[ category ] = [];\n\t\t\t\t\t}\n\t\t\t\t\tacc[ category ].push( item );\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} )\n\t\t)( items );\n\t}, [ items ] );\n\n\tconst itemsPerCollection = useMemo( () => {\n\t\t// Create a new Object to avoid mutating collection.\n\t\tconst result = { ...collections };\n\t\tObject.keys( collections ).forEach( ( namespace ) => {\n\t\t\tresult[ namespace ] = items.filter(\n\t\t\t\t( item ) => getBlockNamespace( item ) === namespace\n\t\t\t);\n\t\t\tif ( result[ namespace ].length === 0 ) {\n\t\t\t\tdelete result[ namespace ];\n\t\t\t}\n\t\t} );\n\n\t\treturn result;\n\t}, [ items, collections ] );\n\n\t// Hide block preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\t/**\n\t * The inserter contains a big number of blocks and opening it is a costful operation.\n\t * The rendering is the most costful part of it, in order to improve the responsiveness\n\t * of the \"opening\" action, these lazy lists allow us to render the inserter category per category,\n\t * once all the categories are rendered, we start rendering the collections and the uncategorized block types.\n\t */\n\tconst currentlyRenderedCategories = useAsyncList( categories );\n\tconst didRenderAllCategories =\n\t\tcategories.length === currentlyRenderedCategories.length;\n\n\t// Async List requires an array.\n\tconst collectionEntries = useMemo( () => {\n\t\treturn Object.entries( collections );\n\t}, [ collections ] );\n\tconst currentlyRenderedCollections = useAsyncList(\n\t\tdidRenderAllCategories ? collectionEntries : EMPTY_ARRAY\n\t);\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t<div>\n\t\t\t\t{ showMostUsedBlocks && !! suggestedItems.length && (\n\t\t\t\t\t<InserterPanel title={ _x( 'Most used', 'blocks' ) }>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ suggestedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ _x( 'Most used', 'blocks' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t\t{ currentlyRenderedCategories.map( ( category ) => {\n\t\t\t\t\tconst categoryItems = itemsPerCategory[ category.slug ];\n\t\t\t\t\tif ( ! categoryItems || ! categoryItems.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\t\ticon={ category.icon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\titems={ categoryItems }\n\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\tlabel={ category.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ didRenderAllCategories && uncategorizedItems.length > 0 && (\n\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\tclassName=\"block-editor-inserter__uncategorized-blocks-panel\"\n\t\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ uncategorizedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ __( 'Uncategorized' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t\t{ currentlyRenderedCollections.map(\n\t\t\t\t\t( [ namespace, collection ] ) => {\n\t\t\t\t\t\tconst collectionItems = itemsPerCollection[ namespace ];\n\t\t\t\t\t\tif ( ! collectionItems || ! collectionItems.length ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\t\tkey={ namespace }\n\t\t\t\t\t\t\t\ttitle={ collection.title }\n\t\t\t\t\t\t\t\ticon={ collection.icon }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\t\titems={ collectionItems }\n\t\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\t\tlabel={ collection.title }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</InserterListbox>\n\t);\n}\n\nexport default BlockTypesTab;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AACxC,SAASC,OAAO,EAAEC,SAAS,QAAQ,oBAAoB;AACvD,SAASC,IAAI,EAAEC,YAAY,QAAQ,oBAAoB;;AAEvD;AACA;AACA;AACA,OAAOC,cAAc,MAAM,qBAAqB;AAChD,OAAOC,aAAa,MAAM,SAAS;AACnC,OAAOC,kBAAkB,MAAM,+BAA+B;AAC9D,OAAOC,eAAe,MAAM,qBAAqB;AACjD,SAASC,OAAO,QAAQ,qBAAqB;AAE7C,MAAMC,iBAAiB,GAAKC,IAAI,IAAMA,IAAI,CAACC,IAAI,CAACC,KAAK,CAAE,GAAI,CAAC,CAAE,CAAC,CAAE;AAEjE,MAAMC,mBAAmB,GAAG,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG,EAAE;AAEtB,OAAO,SAASC,aAAaA,CAAE;EAC9BC,YAAY;EACZC,QAAQ;EACRC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,KAAK,EAAEC,UAAU,EAAEC,WAAW,EAAEC,YAAY,CAAE,GAAGjB,kBAAkB,CAC1EU,YAAY,EACZC,QACD,CAAC;EAED,MAAMO,cAAc,GAAGxB,OAAO,CAAE,MAAM;IACrC,OAAOQ,OAAO,CAAEY,KAAK,EAAE,UAAU,EAAE,MAAO,CAAC,CAACK,KAAK,CAChD,CAAC,EACDZ,mBACD,CAAC;EACF,CAAC,EAAE,CAAEO,KAAK,CAAG,CAAC;EAEd,MAAMM,kBAAkB,GAAG1B,OAAO,CAAE,MAAM;IACzC,OAAOoB,KAAK,CAACO,MAAM,CAAIjB,IAAI,IAAM,CAAEA,IAAI,CAACkB,QAAS,CAAC;EACnD,CAAC,EAAE,CAAER,KAAK,CAAG,CAAC;EAEd,MAAMS,gBAAgB,GAAG7B,OAAO,CAAE,MAAM;IACvC,OAAOE,IAAI,CACR4B,QAAQ,IACTA,QAAQ,CAACH,MAAM,CACZjB,IAAI,IAAMA,IAAI,CAACkB,QAAQ,IAAIlB,IAAI,CAACkB,QAAQ,KAAK,UAChD,CAAC,EACAE,QAAQ,IACTA,QAAQ,CAACC,MAAM,CAAE,CAAEC,GAAG,EAAEtB,IAAI,KAAM;MACjC,MAAM;QAAEkB;MAAS,CAAC,GAAGlB,IAAI;MACzB,IAAK,CAAEsB,GAAG,CAAEJ,QAAQ,CAAE,EAAG;QACxBI,GAAG,CAAEJ,QAAQ,CAAE,GAAG,EAAE;MACrB;MACAI,GAAG,CAAEJ,QAAQ,CAAE,CAACK,IAAI,CAAEvB,IAAK,CAAC;MAC5B,OAAOsB,GAAG;IACX,CAAC,EAAE,CAAC,CAAE,CACR,CAAC,CAAEZ,KAAM,CAAC;EACX,CAAC,EAAE,CAAEA,KAAK,CAAG,CAAC;EAEd,MAAMc,kBAAkB,GAAGlC,OAAO,CAAE,MAAM;IACzC;IACA,MAAMmC,MAAM,GAAG;MAAE,GAAGb;IAAY,CAAC;IACjCc,MAAM,CAACC,IAAI,CAAEf,WAAY,CAAC,CAACgB,OAAO,CAAIC,SAAS,IAAM;MACpDJ,MAAM,CAAEI,SAAS,CAAE,GAAGnB,KAAK,CAACO,MAAM,CAC/BjB,IAAI,IAAMD,iBAAiB,CAAEC,IAAK,CAAC,KAAK6B,SAC3C,CAAC;MACD,IAAKJ,MAAM,CAAEI,SAAS,CAAE,CAACC,MAAM,KAAK,CAAC,EAAG;QACvC,OAAOL,MAAM,CAAEI,SAAS,CAAE;MAC3B;IACD,CAAE,CAAC;IAEH,OAAOJ,MAAM;EACd,CAAC,EAAE,CAAEf,KAAK,EAAEE,WAAW,CAAG,CAAC;;EAE3B;EACArB,SAAS,CAAE,MAAM,MAAMiB,OAAO,CAAE,IAAK,CAAC,EAAE,EAAG,CAAC;;EAE5C;AACD;AACA;AACA;AACA;AACA;EACC,MAAMuB,2BAA2B,GAAGtC,YAAY,CAAEkB,UAAW,CAAC;EAC9D,MAAMqB,sBAAsB,GAC3BrB,UAAU,CAACmB,MAAM,KAAKC,2BAA2B,CAACD,MAAM;;EAEzD;EACA,MAAMG,iBAAiB,GAAG3C,OAAO,CAAE,MAAM;IACxC,OAAOoC,MAAM,CAACQ,OAAO,CAAEtB,WAAY,CAAC;EACrC,CAAC,EAAE,CAAEA,WAAW,CAAG,CAAC;EACpB,MAAMuB,4BAA4B,GAAG1C,YAAY,CAChDuC,sBAAsB,GAAGC,iBAAiB,GAAG7B,WAC9C,CAAC;EAED,OACCgC,aAAA,CAACvC,eAAe,QACfuC,aAAA,cACG3B,kBAAkB,IAAI,CAAC,CAAEK,cAAc,CAACgB,MAAM,IAC/CM,aAAA,CAACzC,aAAa;IAAC0C,KAAK,EAAGhD,EAAE,CAAE,WAAW,EAAE,QAAS;EAAG,GACnD+C,aAAA,CAAC1C,cAAc;IACdgB,KAAK,EAAGI,cAAgB;IACxBwB,QAAQ,EAAGzB,YAAc;IACzBL,OAAO,EAAGA,OAAS;IACnB+B,KAAK,EAAGlD,EAAE,CAAE,WAAW,EAAE,QAAS;EAAG,CACrC,CACa,CACf,EAEC0C,2BAA2B,CAACS,GAAG,CAAItB,QAAQ,IAAM;IAClD,MAAMuB,aAAa,GAAGtB,gBAAgB,CAAED,QAAQ,CAACwB,IAAI,CAAE;IACvD,IAAK,CAAED,aAAa,IAAI,CAAEA,aAAa,CAACX,MAAM,EAAG;MAChD,OAAO,IAAI;IACZ;IACA,OACCM,aAAA,CAACzC,aAAa;MACbgD,GAAG,EAAGzB,QAAQ,CAACwB,IAAM;MACrBL,KAAK,EAAGnB,QAAQ,CAACmB,KAAO;MACxBO,IAAI,EAAG1B,QAAQ,CAAC0B;IAAM,GAEtBR,aAAA,CAAC1C,cAAc;MACdgB,KAAK,EAAG+B,aAAe;MACvBH,QAAQ,EAAGzB,YAAc;MACzBL,OAAO,EAAGA,OAAS;MACnB+B,KAAK,EAAGrB,QAAQ,CAACmB;IAAO,CACxB,CACa,CAAC;EAElB,CAAE,CAAC,EAEDL,sBAAsB,IAAIhB,kBAAkB,CAACc,MAAM,GAAG,CAAC,IACxDM,aAAA,CAACzC,aAAa;IACbkD,SAAS,EAAC,mDAAmD;IAC7DR,KAAK,EAAGjD,EAAE,CAAE,eAAgB;EAAG,GAE/BgD,aAAA,CAAC1C,cAAc;IACdgB,KAAK,EAAGM,kBAAoB;IAC5BsB,QAAQ,EAAGzB,YAAc;IACzBL,OAAO,EAAGA,OAAS;IACnB+B,KAAK,EAAGnD,EAAE,CAAE,eAAgB;EAAG,CAC/B,CACa,CACf,EAEC+C,4BAA4B,CAACK,GAAG,CACjC,CAAE,CAAEX,SAAS,EAAEiB,UAAU,CAAE,KAAM;IAChC,MAAMC,eAAe,GAAGvB,kBAAkB,CAAEK,SAAS,CAAE;IACvD,IAAK,CAAEkB,eAAe,IAAI,CAAEA,eAAe,CAACjB,MAAM,EAAG;MACpD,OAAO,IAAI;IACZ;IAEA,OACCM,aAAA,CAACzC,aAAa;MACbgD,GAAG,EAAGd,SAAW;MACjBQ,KAAK,EAAGS,UAAU,CAACT,KAAO;MAC1BO,IAAI,EAAGE,UAAU,CAACF;IAAM,GAExBR,aAAA,CAAC1C,cAAc;MACdgB,KAAK,EAAGqC,eAAiB;MACzBT,QAAQ,EAAGzB,YAAc;MACzBL,OAAO,EAAGA,OAAS;MACnB+B,KAAK,EAAGO,UAAU,CAACT;IAAO,CAC1B,CACa,CAAC;EAElB,CACD,CACI,CACW,CAAC;AAEpB;AAEA,eAAehC,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["__","_x","useMemo","useEffect","pipe","useAsyncList","BlockTypesList","InserterPanel","useBlockTypesState","InserterListbox","orderBy","InserterNoResults","getBlockNamespace","item","name","split","MAX_SUGGESTED_ITEMS","EMPTY_ARRAY","BlockTypesTab","rootClientId","onInsert","onHover","showMostUsedBlocks","items","categories","collections","onSelectItem","suggestedItems","slice","uncategorizedItems","filter","category","itemsPerCategory","itemList","reduce","acc","push","itemsPerCollection","result","Object","keys","forEach","namespace","length","currentlyRenderedCategories","didRenderAllCategories","collectionEntries","entries","currentlyRenderedCollections","createElement","title","onSelect","label","map","categoryItems","slug","key","icon","className","collection","collectionItems"],"sources":["@wordpress/block-editor/src/components/inserter/block-types-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { pipe, useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport InserterNoResults from './no-results';\n\nconst getBlockNamespace = ( item ) => item.name.split( '/' )[ 0 ];\n\nconst MAX_SUGGESTED_ITEMS = 6;\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nexport function BlockTypesTab( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tshowMostUsedBlocks,\n} ) {\n\tconst [ items, categories, collections, onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tconst suggestedItems = useMemo( () => {\n\t\treturn orderBy( items, 'frecency', 'desc' ).slice(\n\t\t\t0,\n\t\t\tMAX_SUGGESTED_ITEMS\n\t\t);\n\t}, [ items ] );\n\n\tconst uncategorizedItems = useMemo( () => {\n\t\treturn items.filter( ( item ) => ! item.category );\n\t}, [ items ] );\n\n\tconst itemsPerCategory = useMemo( () => {\n\t\treturn pipe(\n\t\t\t( itemList ) =>\n\t\t\t\titemList.filter(\n\t\t\t\t\t( item ) => item.category && item.category !== 'reusable'\n\t\t\t\t),\n\t\t\t( itemList ) =>\n\t\t\t\titemList.reduce( ( acc, item ) => {\n\t\t\t\t\tconst { category } = item;\n\t\t\t\t\tif ( ! acc[ category ] ) {\n\t\t\t\t\t\tacc[ category ] = [];\n\t\t\t\t\t}\n\t\t\t\t\tacc[ category ].push( item );\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {} )\n\t\t)( items );\n\t}, [ items ] );\n\n\tconst itemsPerCollection = useMemo( () => {\n\t\t// Create a new Object to avoid mutating collection.\n\t\tconst result = { ...collections };\n\t\tObject.keys( collections ).forEach( ( namespace ) => {\n\t\t\tresult[ namespace ] = items.filter(\n\t\t\t\t( item ) => getBlockNamespace( item ) === namespace\n\t\t\t);\n\t\t\tif ( result[ namespace ].length === 0 ) {\n\t\t\t\tdelete result[ namespace ];\n\t\t\t}\n\t\t} );\n\n\t\treturn result;\n\t}, [ items, collections ] );\n\n\t// Hide block preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\t/**\n\t * The inserter contains a big number of blocks and opening it is a costful operation.\n\t * The rendering is the most costful part of it, in order to improve the responsiveness\n\t * of the \"opening\" action, these lazy lists allow us to render the inserter category per category,\n\t * once all the categories are rendered, we start rendering the collections and the uncategorized block types.\n\t */\n\tconst currentlyRenderedCategories = useAsyncList( categories );\n\tconst didRenderAllCategories =\n\t\tcategories.length === currentlyRenderedCategories.length;\n\n\t// Async List requires an array.\n\tconst collectionEntries = useMemo( () => {\n\t\treturn Object.entries( collections );\n\t}, [ collections ] );\n\tconst currentlyRenderedCollections = useAsyncList(\n\t\tdidRenderAllCategories ? collectionEntries : EMPTY_ARRAY\n\t);\n\n\tif ( ! items.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t<div>\n\t\t\t\t{ showMostUsedBlocks && !! suggestedItems.length && (\n\t\t\t\t\t<InserterPanel title={ _x( 'Most used', 'blocks' ) }>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ suggestedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ _x( 'Most used', 'blocks' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t\t{ currentlyRenderedCategories.map( ( category ) => {\n\t\t\t\t\tconst categoryItems = itemsPerCategory[ category.slug ];\n\t\t\t\t\tif ( ! categoryItems || ! categoryItems.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\t\ticon={ category.icon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\titems={ categoryItems }\n\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\tlabel={ category.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ didRenderAllCategories && uncategorizedItems.length > 0 && (\n\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\tclassName=\"block-editor-inserter__uncategorized-blocks-panel\"\n\t\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\titems={ uncategorizedItems }\n\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tlabel={ __( 'Uncategorized' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InserterPanel>\n\t\t\t\t) }\n\n\t\t\t\t{ currentlyRenderedCollections.map(\n\t\t\t\t\t( [ namespace, collection ] ) => {\n\t\t\t\t\t\tconst collectionItems = itemsPerCollection[ namespace ];\n\t\t\t\t\t\tif ( ! collectionItems || ! collectionItems.length ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<InserterPanel\n\t\t\t\t\t\t\t\tkey={ namespace }\n\t\t\t\t\t\t\t\ttitle={ collection.title }\n\t\t\t\t\t\t\t\ticon={ collection.icon }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BlockTypesList\n\t\t\t\t\t\t\t\t\titems={ collectionItems }\n\t\t\t\t\t\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\t\t\tlabel={ collection.title }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</InserterPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</InserterListbox>\n\t);\n}\n\nexport default BlockTypesTab;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AACxC,SAASC,OAAO,EAAEC,SAAS,QAAQ,oBAAoB;AACvD,SAASC,IAAI,EAAEC,YAAY,QAAQ,oBAAoB;;AAEvD;AACA;AACA;AACA,OAAOC,cAAc,MAAM,qBAAqB;AAChD,OAAOC,aAAa,MAAM,SAAS;AACnC,OAAOC,kBAAkB,MAAM,+BAA+B;AAC9D,OAAOC,eAAe,MAAM,qBAAqB;AACjD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,OAAOC,iBAAiB,MAAM,cAAc;AAE5C,MAAMC,iBAAiB,GAAKC,IAAI,IAAMA,IAAI,CAACC,IAAI,CAACC,KAAK,CAAE,GAAI,CAAC,CAAE,CAAC,CAAE;AAEjE,MAAMC,mBAAmB,GAAG,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG,EAAE;AAEtB,OAAO,SAASC,aAAaA,CAAE;EAC9BC,YAAY;EACZC,QAAQ;EACRC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,KAAK,EAAEC,UAAU,EAAEC,WAAW,EAAEC,YAAY,CAAE,GAAGlB,kBAAkB,CAC1EW,YAAY,EACZC,QACD,CAAC;EAED,MAAMO,cAAc,GAAGzB,OAAO,CAAE,MAAM;IACrC,OAAOQ,OAAO,CAAEa,KAAK,EAAE,UAAU,EAAE,MAAO,CAAC,CAACK,KAAK,CAChD,CAAC,EACDZ,mBACD,CAAC;EACF,CAAC,EAAE,CAAEO,KAAK,CAAG,CAAC;EAEd,MAAMM,kBAAkB,GAAG3B,OAAO,CAAE,MAAM;IACzC,OAAOqB,KAAK,CAACO,MAAM,CAAIjB,IAAI,IAAM,CAAEA,IAAI,CAACkB,QAAS,CAAC;EACnD,CAAC,EAAE,CAAER,KAAK,CAAG,CAAC;EAEd,MAAMS,gBAAgB,GAAG9B,OAAO,CAAE,MAAM;IACvC,OAAOE,IAAI,CACR6B,QAAQ,IACTA,QAAQ,CAACH,MAAM,CACZjB,IAAI,IAAMA,IAAI,CAACkB,QAAQ,IAAIlB,IAAI,CAACkB,QAAQ,KAAK,UAChD,CAAC,EACAE,QAAQ,IACTA,QAAQ,CAACC,MAAM,CAAE,CAAEC,GAAG,EAAEtB,IAAI,KAAM;MACjC,MAAM;QAAEkB;MAAS,CAAC,GAAGlB,IAAI;MACzB,IAAK,CAAEsB,GAAG,CAAEJ,QAAQ,CAAE,EAAG;QACxBI,GAAG,CAAEJ,QAAQ,CAAE,GAAG,EAAE;MACrB;MACAI,GAAG,CAAEJ,QAAQ,CAAE,CAACK,IAAI,CAAEvB,IAAK,CAAC;MAC5B,OAAOsB,GAAG;IACX,CAAC,EAAE,CAAC,CAAE,CACR,CAAC,CAAEZ,KAAM,CAAC;EACX,CAAC,EAAE,CAAEA,KAAK,CAAG,CAAC;EAEd,MAAMc,kBAAkB,GAAGnC,OAAO,CAAE,MAAM;IACzC;IACA,MAAMoC,MAAM,GAAG;MAAE,GAAGb;IAAY,CAAC;IACjCc,MAAM,CAACC,IAAI,CAAEf,WAAY,CAAC,CAACgB,OAAO,CAAIC,SAAS,IAAM;MACpDJ,MAAM,CAAEI,SAAS,CAAE,GAAGnB,KAAK,CAACO,MAAM,CAC/BjB,IAAI,IAAMD,iBAAiB,CAAEC,IAAK,CAAC,KAAK6B,SAC3C,CAAC;MACD,IAAKJ,MAAM,CAAEI,SAAS,CAAE,CAACC,MAAM,KAAK,CAAC,EAAG;QACvC,OAAOL,MAAM,CAAEI,SAAS,CAAE;MAC3B;IACD,CAAE,CAAC;IAEH,OAAOJ,MAAM;EACd,CAAC,EAAE,CAAEf,KAAK,EAAEE,WAAW,CAAG,CAAC;;EAE3B;EACAtB,SAAS,CAAE,MAAM,MAAMkB,OAAO,CAAE,IAAK,CAAC,EAAE,EAAG,CAAC;;EAE5C;AACD;AACA;AACA;AACA;AACA;EACC,MAAMuB,2BAA2B,GAAGvC,YAAY,CAAEmB,UAAW,CAAC;EAC9D,MAAMqB,sBAAsB,GAC3BrB,UAAU,CAACmB,MAAM,KAAKC,2BAA2B,CAACD,MAAM;;EAEzD;EACA,MAAMG,iBAAiB,GAAG5C,OAAO,CAAE,MAAM;IACxC,OAAOqC,MAAM,CAACQ,OAAO,CAAEtB,WAAY,CAAC;EACrC,CAAC,EAAE,CAAEA,WAAW,CAAG,CAAC;EACpB,MAAMuB,4BAA4B,GAAG3C,YAAY,CAChDwC,sBAAsB,GAAGC,iBAAiB,GAAG7B,WAC9C,CAAC;EAED,IAAK,CAAEM,KAAK,CAACoB,MAAM,EAAG;IACrB,OAAOM,aAAA,CAACtC,iBAAiB,MAAE,CAAC;EAC7B;EAEA,OACCsC,aAAA,CAACxC,eAAe,QACfwC,aAAA,cACG3B,kBAAkB,IAAI,CAAC,CAAEK,cAAc,CAACgB,MAAM,IAC/CM,aAAA,CAAC1C,aAAa;IAAC2C,KAAK,EAAGjD,EAAE,CAAE,WAAW,EAAE,QAAS;EAAG,GACnDgD,aAAA,CAAC3C,cAAc;IACdiB,KAAK,EAAGI,cAAgB;IACxBwB,QAAQ,EAAGzB,YAAc;IACzBL,OAAO,EAAGA,OAAS;IACnB+B,KAAK,EAAGnD,EAAE,CAAE,WAAW,EAAE,QAAS;EAAG,CACrC,CACa,CACf,EAEC2C,2BAA2B,CAACS,GAAG,CAAItB,QAAQ,IAAM;IAClD,MAAMuB,aAAa,GAAGtB,gBAAgB,CAAED,QAAQ,CAACwB,IAAI,CAAE;IACvD,IAAK,CAAED,aAAa,IAAI,CAAEA,aAAa,CAACX,MAAM,EAAG;MAChD,OAAO,IAAI;IACZ;IACA,OACCM,aAAA,CAAC1C,aAAa;MACbiD,GAAG,EAAGzB,QAAQ,CAACwB,IAAM;MACrBL,KAAK,EAAGnB,QAAQ,CAACmB,KAAO;MACxBO,IAAI,EAAG1B,QAAQ,CAAC0B;IAAM,GAEtBR,aAAA,CAAC3C,cAAc;MACdiB,KAAK,EAAG+B,aAAe;MACvBH,QAAQ,EAAGzB,YAAc;MACzBL,OAAO,EAAGA,OAAS;MACnB+B,KAAK,EAAGrB,QAAQ,CAACmB;IAAO,CACxB,CACa,CAAC;EAElB,CAAE,CAAC,EAEDL,sBAAsB,IAAIhB,kBAAkB,CAACc,MAAM,GAAG,CAAC,IACxDM,aAAA,CAAC1C,aAAa;IACbmD,SAAS,EAAC,mDAAmD;IAC7DR,KAAK,EAAGlD,EAAE,CAAE,eAAgB;EAAG,GAE/BiD,aAAA,CAAC3C,cAAc;IACdiB,KAAK,EAAGM,kBAAoB;IAC5BsB,QAAQ,EAAGzB,YAAc;IACzBL,OAAO,EAAGA,OAAS;IACnB+B,KAAK,EAAGpD,EAAE,CAAE,eAAgB;EAAG,CAC/B,CACa,CACf,EAECgD,4BAA4B,CAACK,GAAG,CACjC,CAAE,CAAEX,SAAS,EAAEiB,UAAU,CAAE,KAAM;IAChC,MAAMC,eAAe,GAAGvB,kBAAkB,CAAEK,SAAS,CAAE;IACvD,IAAK,CAAEkB,eAAe,IAAI,CAAEA,eAAe,CAACjB,MAAM,EAAG;MACpD,OAAO,IAAI;IACZ;IAEA,OACCM,aAAA,CAAC1C,aAAa;MACbiD,GAAG,EAAGd,SAAW;MACjBQ,KAAK,EAAGS,UAAU,CAACT,KAAO;MAC1BO,IAAI,EAAGE,UAAU,CAACF;IAAM,GAExBR,aAAA,CAAC3C,cAAc;MACdiB,KAAK,EAAGqC,eAAiB;MACzBT,QAAQ,EAAGzB,YAAc;MACzBL,OAAO,EAAGA,OAAS;MACnB+B,KAAK,EAAGO,UAAU,CAACT;IAAO,CAC1B,CACa,CAAC;EAElB,CACD,CACI,CACW,CAAC;AAEpB;AAEA,eAAehC,aAAa","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { isRTL } from '@wordpress/i18n';
6
+ import { __experimentalHStack as HStack, FlexBlock, privateApis as componentsPrivateApis } from '@wordpress/components';
7
+ import { Icon, chevronRight, chevronLeft } from '@wordpress/icons';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { unlock } from '../../../lock-unlock';
13
+ const {
14
+ Tabs
15
+ } = unlock(componentsPrivateApis);
16
+ function CategoryTabs({
17
+ categories,
18
+ selectedCategory,
19
+ onSelectCategory,
20
+ children
21
+ }) {
22
+ return createElement(Tabs, {
23
+ className: "block-editor-inserter__category-tabs",
24
+ selectOnMove: false,
25
+ selectedTabId: selectedCategory ? selectedCategory.name : null,
26
+ orientation: 'vertical',
27
+ onSelect: categoryId => {
28
+ // Pass the full category object
29
+ onSelectCategory(categories.find(category => category.name === categoryId));
30
+ }
31
+ }, createElement(Tabs.TabList, {
32
+ className: "block-editor-inserter__category-tablist"
33
+ }, categories.map(category => createElement(Tabs.Tab, {
34
+ key: category.name,
35
+ tabId: category.name,
36
+ className: "block-editor-inserter__category-tab",
37
+ "aria-label": category.label,
38
+ "aria-current": category === selectedCategory ? 'true' : undefined
39
+ }, createElement(HStack, null, createElement(FlexBlock, null, category.label), createElement(Icon, {
40
+ icon: isRTL() ? chevronLeft : chevronRight
41
+ }))))), categories.map(category => createElement(Tabs.TabPanel, {
42
+ key: category.name,
43
+ tabId: category.name,
44
+ focusable: false,
45
+ className: "block-editor-inserter__category-panel"
46
+ }, children)));
47
+ }
48
+ export default CategoryTabs;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isRTL","__experimentalHStack","HStack","FlexBlock","privateApis","componentsPrivateApis","Icon","chevronRight","chevronLeft","unlock","Tabs","CategoryTabs","categories","selectedCategory","onSelectCategory","children","createElement","className","selectOnMove","selectedTabId","name","orientation","onSelect","categoryId","find","category","TabList","map","Tab","key","tabId","label","undefined","icon","TabPanel","focusable"],"sources":["@wordpress/block-editor/src/components/inserter/category-tabs/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isRTL } from '@wordpress/i18n';\nimport {\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction CategoryTabs( {\n\tcategories,\n\tselectedCategory,\n\tonSelectCategory,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Tabs\n\t\t\tclassName=\"block-editor-inserter__category-tabs\"\n\t\t\tselectOnMove={ false }\n\t\t\tselectedTabId={ selectedCategory ? selectedCategory.name : null }\n\t\t\torientation={ 'vertical' }\n\t\t\tonSelect={ ( categoryId ) => {\n\t\t\t\t// Pass the full category object\n\t\t\t\tonSelectCategory(\n\t\t\t\t\tcategories.find(\n\t\t\t\t\t\t( category ) => category.name === categoryId\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} }\n\t\t>\n\t\t\t<Tabs.TabList className=\"block-editor-inserter__category-tablist\">\n\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\ttabId={ category.name }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__category-tab\"\n\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\tcategory === selectedCategory ? 'true' : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t<FlexBlock>{ category.label }</FlexBlock>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ isRTL() ? chevronLeft : chevronRight }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t) ) }\n\t\t\t</Tabs.TabList>\n\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\tkey={ category.name }\n\t\t\t\t\ttabId={ category.name }\n\t\t\t\t\tfocusable={ false }\n\t\t\t\t\tclassName=\"block-editor-inserter__category-panel\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t) ) }\n\t\t</Tabs>\n\t);\n}\n\nexport default CategoryTabs;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,SAAS,EACTC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,IAAI,EAAEC,YAAY,EAAEC,WAAW,QAAQ,kBAAkB;;AAElE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,sBAAsB;AAE7C,MAAM;EAAEC;AAAK,CAAC,GAAGD,MAAM,CAAEJ,qBAAsB,CAAC;AAEhD,SAASM,YAAYA,CAAE;EACtBC,UAAU;EACVC,gBAAgB;EAChBC,gBAAgB;EAChBC;AACD,CAAC,EAAG;EACH,OACCC,aAAA,CAACN,IAAI;IACJO,SAAS,EAAC,sCAAsC;IAChDC,YAAY,EAAG,KAAO;IACtBC,aAAa,EAAGN,gBAAgB,GAAGA,gBAAgB,CAACO,IAAI,GAAG,IAAM;IACjEC,WAAW,EAAG,UAAY;IAC1BC,QAAQ,EAAKC,UAAU,IAAM;MAC5B;MACAT,gBAAgB,CACfF,UAAU,CAACY,IAAI,CACZC,QAAQ,IAAMA,QAAQ,CAACL,IAAI,KAAKG,UACnC,CACD,CAAC;IACF;EAAG,GAEHP,aAAA,CAACN,IAAI,CAACgB,OAAO;IAACT,SAAS,EAAC;EAAyC,GAC9DL,UAAU,CAACe,GAAG,CAAIF,QAAQ,IAC3BT,aAAA,CAACN,IAAI,CAACkB,GAAG;IACRC,GAAG,EAAGJ,QAAQ,CAACL,IAAM;IACrBU,KAAK,EAAGL,QAAQ,CAACL,IAAM;IACvBH,SAAS,EAAC,qCAAqC;IAC/C,cAAaQ,QAAQ,CAACM,KAAO;IAC7B,gBACCN,QAAQ,KAAKZ,gBAAgB,GAAG,MAAM,GAAGmB;EACzC,GAEDhB,aAAA,CAACd,MAAM,QACNc,aAAA,CAACb,SAAS,QAAGsB,QAAQ,CAACM,KAAkB,CAAC,EACzCf,aAAA,CAACV,IAAI;IACJ2B,IAAI,EAAGjC,KAAK,CAAC,CAAC,GAAGQ,WAAW,GAAGD;EAAc,CAC7C,CACM,CACC,CACT,CACW,CAAC,EACbK,UAAU,CAACe,GAAG,CAAIF,QAAQ,IAC3BT,aAAA,CAACN,IAAI,CAACwB,QAAQ;IACbL,GAAG,EAAGJ,QAAQ,CAACL,IAAM;IACrBU,KAAK,EAAGL,QAAQ,CAACL,IAAM;IACvBe,SAAS,EAAG,KAAO;IACnBlB,SAAS,EAAC;EAAuC,GAE/CF,QACY,CACd,CACG,CAAC;AAET;AAEA,eAAeJ,YAAY","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  export { default as MediaTab } from './media-tab';
2
- export { MediaCategoryDialog } from './media-panel';
2
+ export { MediaCategoryPanel } from './media-panel';
3
3
  export { useMediaCategories } from './hooks';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","MediaTab","MediaCategoryDialog","useMediaCategories"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/index.js"],"sourcesContent":["export { default as MediaTab } from './media-tab';\nexport { MediaCategoryDialog } from './media-panel';\nexport { useMediaCategories } from './hooks';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,aAAa;AACjD,SAASC,mBAAmB,QAAQ,eAAe;AACnD,SAASC,kBAAkB,QAAQ,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["default","MediaTab","MediaCategoryPanel","useMediaCategories"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/index.js"],"sourcesContent":["export { default as MediaTab } from './media-tab';\nexport { MediaCategoryPanel } from './media-panel';\nexport { useMediaCategories } from './hooks';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,aAAa;AACjD,SAASC,kBAAkB,QAAQ,eAAe;AAClD,SAASC,kBAAkB,QAAQ,SAAS","ignoreList":[]}
@@ -2,9 +2,7 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { useRef, useEffect } from '@wordpress/element';
6
5
  import { Spinner, SearchControl } from '@wordpress/components';
7
- import { focus } from '@wordpress/dom';
8
6
  import { __ } from '@wordpress/i18n';
9
7
  import { useDebouncedInput } from '@wordpress/compose';
10
8
 
@@ -15,28 +13,6 @@ import MediaList from './media-list';
15
13
  import { useMediaResults } from './hooks';
16
14
  import InserterNoResults from '../no-results';
17
15
  const INITIAL_MEDIA_ITEMS_PER_PAGE = 10;
18
- export function MediaCategoryDialog({
19
- rootClientId,
20
- onInsert,
21
- category
22
- }) {
23
- const container = useRef();
24
- useEffect(() => {
25
- const timeout = setTimeout(() => {
26
- const [firstTabbable] = focus.tabbable.find(container.current);
27
- firstTabbable?.focus();
28
- });
29
- return () => clearTimeout(timeout);
30
- }, [category]);
31
- return createElement("div", {
32
- ref: container,
33
- className: "block-editor-inserter__media-dialog"
34
- }, createElement(MediaCategoryPanel, {
35
- rootClientId: rootClientId,
36
- onInsert: onInsert,
37
- category: category
38
- }));
39
- }
40
16
  export function MediaCategoryPanel({
41
17
  rootClientId,
42
18
  onInsert,
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","useEffect","Spinner","SearchControl","focus","__","useDebouncedInput","MediaList","useMediaResults","InserterNoResults","INITIAL_MEDIA_ITEMS_PER_PAGE","MediaCategoryDialog","rootClientId","onInsert","category","container","timeout","setTimeout","firstTabbable","tabbable","find","current","clearTimeout","createElement","ref","className","MediaCategoryPanel","search","setSearch","debouncedSearch","mediaList","isLoading","per_page","baseCssClass","searchLabel","labels","search_items","onChange","value","label","placeholder","length","onClick"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { Spinner, SearchControl } from '@wordpress/components';\nimport { focus } from '@wordpress/dom';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport MediaList from './media-list';\nimport { useMediaResults } from './hooks';\nimport InserterNoResults from '../no-results';\n\nconst INITIAL_MEDIA_ITEMS_PER_PAGE = 10;\n\nexport function MediaCategoryDialog( { rootClientId, onInsert, category } ) {\n\tconst container = useRef();\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\treturn (\n\t\t<div ref={ container } className=\"block-editor-inserter__media-dialog\">\n\t\t\t<MediaCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function MediaCategoryPanel( { rootClientId, onInsert, category } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst { mediaList, isLoading } = useMediaResults( category, {\n\t\tper_page: !! debouncedSearch ? 20 : INITIAL_MEDIA_ITEMS_PER_PAGE,\n\t\tsearch: debouncedSearch,\n\t} );\n\tconst baseCssClass = 'block-editor-inserter__media-panel';\n\tconst searchLabel = category.labels.search_items || __( 'Search' );\n\treturn (\n\t\t<div className={ baseCssClass }>\n\t\t\t<SearchControl\n\t\t\t\tclassName={ `${ baseCssClass }-search` }\n\t\t\t\tonChange={ setSearch }\n\t\t\t\tvalue={ search }\n\t\t\t\tlabel={ searchLabel }\n\t\t\t\tplaceholder={ searchLabel }\n\t\t\t/>\n\t\t\t{ isLoading && (\n\t\t\t\t<div className={ `${ baseCssClass }-spinner` }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! isLoading && ! mediaList?.length && <InserterNoResults /> }\n\t\t\t{ ! isLoading && !! mediaList?.length && (\n\t\t\t\t<MediaList\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tonClick={ onInsert }\n\t\t\t\t\tmediaList={ mediaList }\n\t\t\t\t\tcategory={ category }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,MAAM,EAAEC,SAAS,QAAQ,oBAAoB;AACtD,SAASC,OAAO,EAAEC,aAAa,QAAQ,uBAAuB;AAC9D,SAASC,KAAK,QAAQ,gBAAgB;AACtC,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,SAASC,eAAe,QAAQ,SAAS;AACzC,OAAOC,iBAAiB,MAAM,eAAe;AAE7C,MAAMC,4BAA4B,GAAG,EAAE;AAEvC,OAAO,SAASC,mBAAmBA,CAAE;EAAEC,YAAY;EAAEC,QAAQ;EAAEC;AAAS,CAAC,EAAG;EAC3E,MAAMC,SAAS,GAAGf,MAAM,CAAC,CAAC;EAC1BC,SAAS,CAAE,MAAM;IAChB,MAAMe,OAAO,GAAGC,UAAU,CAAE,MAAM;MACjC,MAAM,CAAEC,aAAa,CAAE,GAAGd,KAAK,CAACe,QAAQ,CAACC,IAAI,CAAEL,SAAS,CAACM,OAAQ,CAAC;MAClEH,aAAa,EAAEd,KAAK,CAAC,CAAC;IACvB,CAAE,CAAC;IACH,OAAO,MAAMkB,YAAY,CAAEN,OAAQ,CAAC;EACrC,CAAC,EAAE,CAAEF,QAAQ,CAAG,CAAC;EACjB,OACCS,aAAA;IAAKC,GAAG,EAAGT,SAAW;IAACU,SAAS,EAAC;EAAqC,GACrEF,aAAA,CAACG,kBAAkB;IAClBd,YAAY,EAAGA,YAAc;IAC7BC,QAAQ,EAAGA,QAAU;IACrBC,QAAQ,EAAGA;EAAU,CACrB,CACG,CAAC;AAER;AAEA,OAAO,SAASY,kBAAkBA,CAAE;EAAEd,YAAY;EAAEC,QAAQ;EAAEC;AAAS,CAAC,EAAG;EAC1E,MAAM,CAAEa,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAGvB,iBAAiB,CAAC,CAAC;EAClE,MAAM;IAAEwB,SAAS;IAAEC;EAAU,CAAC,GAAGvB,eAAe,CAAEM,QAAQ,EAAE;IAC3DkB,QAAQ,EAAE,CAAC,CAAEH,eAAe,GAAG,EAAE,GAAGnB,4BAA4B;IAChEiB,MAAM,EAAEE;EACT,CAAE,CAAC;EACH,MAAMI,YAAY,GAAG,oCAAoC;EACzD,MAAMC,WAAW,GAAGpB,QAAQ,CAACqB,MAAM,CAACC,YAAY,IAAI/B,EAAE,CAAE,QAAS,CAAC;EAClE,OACCkB,aAAA;IAAKE,SAAS,EAAGQ;EAAc,GAC9BV,aAAA,CAACpB,aAAa;IACbsB,SAAS,EAAI,GAAGQ,YAAc,SAAU;IACxCI,QAAQ,EAAGT,SAAW;IACtBU,KAAK,EAAGX,MAAQ;IAChBY,KAAK,EAAGL,WAAa;IACrBM,WAAW,EAAGN;EAAa,CAC3B,CAAC,EACAH,SAAS,IACVR,aAAA;IAAKE,SAAS,EAAI,GAAGQ,YAAc;EAAW,GAC7CV,aAAA,CAACrB,OAAO,MAAE,CACN,CACL,EACC,CAAE6B,SAAS,IAAI,CAAED,SAAS,EAAEW,MAAM,IAAIlB,aAAA,CAACd,iBAAiB,MAAE,CAAC,EAC3D,CAAEsB,SAAS,IAAI,CAAC,CAAED,SAAS,EAAEW,MAAM,IACpClB,aAAA,CAAChB,SAAS;IACTK,YAAY,EAAGA,YAAc;IAC7B8B,OAAO,EAAG7B,QAAU;IACpBiB,SAAS,EAAGA,SAAW;IACvBhB,QAAQ,EAAGA;EAAU,CACrB,CAEE,CAAC;AAER","ignoreList":[]}
1
+ {"version":3,"names":["Spinner","SearchControl","__","useDebouncedInput","MediaList","useMediaResults","InserterNoResults","INITIAL_MEDIA_ITEMS_PER_PAGE","MediaCategoryPanel","rootClientId","onInsert","category","search","setSearch","debouncedSearch","mediaList","isLoading","per_page","baseCssClass","searchLabel","labels","search_items","createElement","className","onChange","value","label","placeholder","length","onClick"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Spinner, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport MediaList from './media-list';\nimport { useMediaResults } from './hooks';\nimport InserterNoResults from '../no-results';\n\nconst INITIAL_MEDIA_ITEMS_PER_PAGE = 10;\n\nexport function MediaCategoryPanel( { rootClientId, onInsert, category } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst { mediaList, isLoading } = useMediaResults( category, {\n\t\tper_page: !! debouncedSearch ? 20 : INITIAL_MEDIA_ITEMS_PER_PAGE,\n\t\tsearch: debouncedSearch,\n\t} );\n\tconst baseCssClass = 'block-editor-inserter__media-panel';\n\tconst searchLabel = category.labels.search_items || __( 'Search' );\n\treturn (\n\t\t<div className={ baseCssClass }>\n\t\t\t<SearchControl\n\t\t\t\tclassName={ `${ baseCssClass }-search` }\n\t\t\t\tonChange={ setSearch }\n\t\t\t\tvalue={ search }\n\t\t\t\tlabel={ searchLabel }\n\t\t\t\tplaceholder={ searchLabel }\n\t\t\t/>\n\t\t\t{ isLoading && (\n\t\t\t\t<div className={ `${ baseCssClass }-spinner` }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! isLoading && ! mediaList?.length && <InserterNoResults /> }\n\t\t\t{ ! isLoading && !! mediaList?.length && (\n\t\t\t\t<MediaList\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tonClick={ onInsert }\n\t\t\t\t\tmediaList={ mediaList }\n\t\t\t\t\tcategory={ category }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,OAAO,EAAEC,aAAa,QAAQ,uBAAuB;AAC9D,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,SAASC,eAAe,QAAQ,SAAS;AACzC,OAAOC,iBAAiB,MAAM,eAAe;AAE7C,MAAMC,4BAA4B,GAAG,EAAE;AAEvC,OAAO,SAASC,kBAAkBA,CAAE;EAAEC,YAAY;EAAEC,QAAQ;EAAEC;AAAS,CAAC,EAAG;EAC1E,MAAM,CAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,CAAE,GAAGX,iBAAiB,CAAC,CAAC;EAClE,MAAM;IAAEY,SAAS;IAAEC;EAAU,CAAC,GAAGX,eAAe,CAAEM,QAAQ,EAAE;IAC3DM,QAAQ,EAAE,CAAC,CAAEH,eAAe,GAAG,EAAE,GAAGP,4BAA4B;IAChEK,MAAM,EAAEE;EACT,CAAE,CAAC;EACH,MAAMI,YAAY,GAAG,oCAAoC;EACzD,MAAMC,WAAW,GAAGR,QAAQ,CAACS,MAAM,CAACC,YAAY,IAAInB,EAAE,CAAE,QAAS,CAAC;EAClE,OACCoB,aAAA;IAAKC,SAAS,EAAGL;EAAc,GAC9BI,aAAA,CAACrB,aAAa;IACbsB,SAAS,EAAI,GAAGL,YAAc,SAAU;IACxCM,QAAQ,EAAGX,SAAW;IACtBY,KAAK,EAAGb,MAAQ;IAChBc,KAAK,EAAGP,WAAa;IACrBQ,WAAW,EAAGR;EAAa,CAC3B,CAAC,EACAH,SAAS,IACVM,aAAA;IAAKC,SAAS,EAAI,GAAGL,YAAc;EAAW,GAC7CI,aAAA,CAACtB,OAAO,MAAE,CACN,CACL,EACC,CAAEgB,SAAS,IAAI,CAAED,SAAS,EAAEa,MAAM,IAAIN,aAAA,CAAChB,iBAAiB,MAAE,CAAC,EAC3D,CAAEU,SAAS,IAAI,CAAC,CAAED,SAAS,EAAEa,MAAM,IACpCN,aAAA,CAAClB,SAAS;IACTK,YAAY,EAAGA,YAAc;IAC7BoB,OAAO,EAAGnB,QAAU;IACpBK,SAAS,EAAGA,SAAW;IACvBJ,QAAQ,EAAGA;EAAU,CACrB,CAEE,CAAC;AAER","ignoreList":[]}
@@ -86,18 +86,28 @@ export function MediaPreview({
86
86
  createErrorNotice,
87
87
  createSuccessNotice
88
88
  } = useDispatch(noticesStore);
89
- const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
89
+ const {
90
+ getSettings
91
+ } = useSelect(blockEditorStore);
90
92
  const onMediaInsert = useCallback(previewBlock => {
91
93
  // Prevent multiple uploads when we're in the process of inserting.
92
94
  if (isInserting) {
93
95
  return;
94
96
  }
97
+ const settings = getSettings();
95
98
  const clonedBlock = cloneBlock(previewBlock);
96
99
  const {
97
100
  id,
98
101
  url,
99
102
  caption
100
103
  } = clonedBlock.attributes;
104
+
105
+ // User has no permission to upload media.
106
+ if (!id && !settings.mediaUpload) {
107
+ setShowExternalUploadModal(true);
108
+ return;
109
+ }
110
+
101
111
  // Media item already exists in library, so just insert it.
102
112
  if (!!id) {
103
113
  onClick(clonedBlock);
@@ -110,7 +120,7 @@ export function MediaPreview({
110
120
  // If this happens, we insert the image block using the external
111
121
  // URL and let the user know about the possible implications.
112
122
  window.fetch(url).then(response => response.blob()).then(blob => {
113
- mediaUpload({
123
+ settings.mediaUpload({
114
124
  filesList: [blob],
115
125
  additionalData: {
116
126
  caption
@@ -144,7 +154,7 @@ export function MediaPreview({
144
154
  setShowExternalUploadModal(true);
145
155
  setIsInserting(false);
146
156
  });
147
- }, [isInserting, onClick, mediaUpload, createErrorNotice, createSuccessNotice]);
157
+ }, [isInserting, getSettings, onClick, createSuccessNotice, createErrorNotice]);
148
158
  const title = typeof media.title === 'string' ? media.title : media.title?.rendered || __('no title');
149
159
  let truncatedTitle;
150
160
  if (title.length > MAXIMUM_TITLE_LENGTH) {
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Tooltip","DropdownMenu","MenuGroup","MenuItem","Spinner","Modal","Flex","FlexItem","Button","privateApis","componentsPrivateApis","__experimentalVStack","VStack","__","sprintf","useMemo","useCallback","useState","cloneBlock","moreVertical","external","useSelect","useDispatch","store","noticesStore","isBlobURL","InserterDraggableBlocks","getBlockAndPreviewFromMedia","blockEditorStore","unlock","ALLOWED_MEDIA_TYPES","MAXIMUM_TITLE_LENGTH","MEDIA_OPTIONS_POPOVER_PROPS","position","className","CompositeItemV2","CompositeItem","MediaPreviewOptions","category","media","getReportUrl","reportUrl","createElement","label","popoverProps","icon","onClick","window","open","focus","mediaType","InsertExternalImageModal","onClose","onSubmit","title","onRequestClose","spacing","justify","expanded","variant","MediaPreview","showExternalUploadModal","setShowExternalUploadModal","isHovered","setIsHovered","isInserting","setIsInserting","block","preview","createErrorNotice","createSuccessNotice","mediaUpload","select","getSettings","onMediaInsert","previewBlock","clonedBlock","id","url","caption","attributes","fetch","then","response","blob","filesList","additionalData","onFileChange","img","type","allowedTypes","onError","message","catch","rendered","truncatedTitle","length","omission","slice","onMouseEnter","onMouseLeave","Fragment","isEnabled","blocks","draggable","onDragStart","onDragEnd","text","render","role"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-preview.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tTooltip,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tSpinner,\n\tModal,\n\tFlex,\n\tFlexItem,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useCallback, useState } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\nimport { moreVertical, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport InserterDraggableBlocks from '../../inserter-draggable-blocks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst MAXIMUM_TITLE_LENGTH = 25;\nconst MEDIA_OPTIONS_POPOVER_PROPS = {\n\tposition: 'bottom left',\n\tclassName:\n\t\t'block-editor-inserter__media-list__item-preview-options__popover',\n};\n\nconst { CompositeItemV2: CompositeItem } = unlock( componentsPrivateApis );\n\nfunction MediaPreviewOptions( { category, media } ) {\n\tif ( ! category.getReportUrl ) {\n\t\treturn null;\n\t}\n\tconst reportUrl = category.getReportUrl( media );\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-inserter__media-list__item-preview-options\"\n\t\t\tlabel={ __( 'Options' ) }\n\t\t\tpopoverProps={ MEDIA_OPTIONS_POPOVER_PROPS }\n\t\t\ticon={ moreVertical }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\twindow.open( reportUrl, '_blank' ).focus()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The media type to report e.g: \"image\", \"video\", \"audio\" */\n\t\t\t\t\t\t\t__( 'Report %s' ),\n\t\t\t\t\t\t\tcategory.mediaType\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction InsertExternalImageModal( { onClose, onSubmit } ) {\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Insert external image' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\tclassName=\"block-editor-inserter-media-tab-media-preview-inserter-external-image-modal\"\n\t\t>\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</VStack>\n\t\t\t<Flex\n\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\texpanded={ false }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ onSubmit }>\n\t\t\t\t\t\t{ __( 'Insert' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</Modal>\n\t);\n}\n\nexport function MediaPreview( { media, onClick, category } ) {\n\tconst [ showExternalUploadModal, setShowExternalUploadModal ] =\n\t\tuseState( false );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ isInserting, setIsInserting ] = useState( false );\n\tconst [ block, preview ] = useMemo(\n\t\t() => getBlockAndPreviewFromMedia( media, category.mediaType ),\n\t\t[ media, category.mediaType ]\n\t);\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\tconst onMediaInsert = useCallback(\n\t\t( previewBlock ) => {\n\t\t\t// Prevent multiple uploads when we're in the process of inserting.\n\t\t\tif ( isInserting ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clonedBlock = cloneBlock( previewBlock );\n\t\t\tconst { id, url, caption } = clonedBlock.attributes;\n\t\t\t// Media item already exists in library, so just insert it.\n\t\t\tif ( !! id ) {\n\t\t\t\tonClick( clonedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsInserting( true );\n\t\t\t// Media item does not exist in library, so try to upload it.\n\t\t\t// Fist fetch the image data. This may fail if the image host\n\t\t\t// doesn't allow CORS with the domain.\n\t\t\t// If this happens, we insert the image block using the external\n\t\t\t// URL and let the user know about the possible implications.\n\t\t\twindow\n\t\t\t\t.fetch( url )\n\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\tadditionalData: { caption },\n\t\t\t\t\t\tonFileChange( [ img ] ) {\n\t\t\t\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick( {\n\t\t\t\t\t\t\t\t...clonedBlock,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t...clonedBlock.attributes,\n\t\t\t\t\t\t\t\t\tid: img.id,\n\t\t\t\t\t\t\t\t\turl: img.url,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\t\t__( 'Image uploaded and inserted.' ),\n\t\t\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tsetShowExternalUploadModal( true );\n\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tisInserting,\n\t\t\tonClick,\n\t\t\tmediaUpload,\n\t\t\tcreateErrorNotice,\n\t\t\tcreateSuccessNotice,\n\t\t]\n\t);\n\n\tconst title =\n\t\ttypeof media.title === 'string'\n\t\t\t? media.title\n\t\t\t: media.title?.rendered || __( 'no title' );\n\n\tlet truncatedTitle;\n\tif ( title.length > MAXIMUM_TITLE_LENGTH ) {\n\t\tconst omission = '...';\n\t\ttruncatedTitle =\n\t\t\ttitle.slice( 0, MAXIMUM_TITLE_LENGTH - omission.length ) + omission;\n\t}\n\tconst onMouseEnter = useCallback( () => setIsHovered( true ), [] );\n\tconst onMouseLeave = useCallback( () => setIsHovered( false ), [] );\n\treturn (\n\t\t<>\n\t\t\t<InserterDraggableBlocks isEnabled blocks={ [ block ] }>\n\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-inserter__media-list__list-item',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Adding `is-hovered` class to the wrapper element is needed\n\t\t\t\t\t\tbecause the options Popover is rendered outside of this node. */ }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip text={ truncatedTitle || title }>\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\taria-label={ title }\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-list__item\"\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\tonClick={ () => onMediaInsert( block ) }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview\">\n\t\t\t\t\t\t\t\t\t\t{ preview }\n\t\t\t\t\t\t\t\t\t\t{ isInserting && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview-spinner\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</CompositeItem>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t{ ! isInserting && (\n\t\t\t\t\t\t\t\t<MediaPreviewOptions\n\t\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\t\tmedia={ media }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</InserterDraggableBlocks>\n\t\t\t{ showExternalUploadModal && (\n\t\t\t\t<InsertExternalImageModal\n\t\t\t\t\tonClose={ () => setShowExternalUploadModal( false ) }\n\t\t\t\t\tonSubmit={ () => {\n\t\t\t\t\t\tonClick( cloneBlock( block ) );\n\t\t\t\t\t\tcreateSuccessNotice( __( 'Image inserted.' ), {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tsetShowExternalUploadModal( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["classnames","Tooltip","DropdownMenu","MenuGroup","MenuItem","Spinner","Modal","Flex","FlexItem","Button","privateApis","componentsPrivateApis","__experimentalVStack","VStack","__","sprintf","useMemo","useCallback","useState","cloneBlock","moreVertical","external","useSelect","useDispatch","store","noticesStore","isBlobURL","InserterDraggableBlocks","getBlockAndPreviewFromMedia","blockEditorStore","unlock","ALLOWED_MEDIA_TYPES","MAXIMUM_TITLE_LENGTH","MEDIA_OPTIONS_POPOVER_PROPS","position","className","CompositeItemV2","CompositeItem","MediaPreviewOptions","category","media","getReportUrl","reportUrl","createElement","label","popoverProps","icon","onClick","window","open","focus","mediaType","InsertExternalImageModal","onClose","onSubmit","title","onRequestClose","spacing","justify","expanded","variant","MediaPreview","showExternalUploadModal","setShowExternalUploadModal","isHovered","setIsHovered","isInserting","setIsInserting","block","preview","createErrorNotice","createSuccessNotice","getSettings","onMediaInsert","previewBlock","settings","clonedBlock","id","url","caption","attributes","mediaUpload","fetch","then","response","blob","filesList","additionalData","onFileChange","img","type","allowedTypes","onError","message","catch","rendered","truncatedTitle","length","omission","slice","onMouseEnter","onMouseLeave","Fragment","isEnabled","blocks","draggable","onDragStart","onDragEnd","text","render","role"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-preview.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tTooltip,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tSpinner,\n\tModal,\n\tFlex,\n\tFlexItem,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useCallback, useState } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\nimport { moreVertical, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport InserterDraggableBlocks from '../../inserter-draggable-blocks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst MAXIMUM_TITLE_LENGTH = 25;\nconst MEDIA_OPTIONS_POPOVER_PROPS = {\n\tposition: 'bottom left',\n\tclassName:\n\t\t'block-editor-inserter__media-list__item-preview-options__popover',\n};\n\nconst { CompositeItemV2: CompositeItem } = unlock( componentsPrivateApis );\n\nfunction MediaPreviewOptions( { category, media } ) {\n\tif ( ! category.getReportUrl ) {\n\t\treturn null;\n\t}\n\tconst reportUrl = category.getReportUrl( media );\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-inserter__media-list__item-preview-options\"\n\t\t\tlabel={ __( 'Options' ) }\n\t\t\tpopoverProps={ MEDIA_OPTIONS_POPOVER_PROPS }\n\t\t\ticon={ moreVertical }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\twindow.open( reportUrl, '_blank' ).focus()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The media type to report e.g: \"image\", \"video\", \"audio\" */\n\t\t\t\t\t\t\t__( 'Report %s' ),\n\t\t\t\t\t\t\tcategory.mediaType\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction InsertExternalImageModal( { onClose, onSubmit } ) {\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Insert external image' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\tclassName=\"block-editor-inserter-media-tab-media-preview-inserter-external-image-modal\"\n\t\t>\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</VStack>\n\t\t\t<Flex\n\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\texpanded={ false }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ onSubmit }>\n\t\t\t\t\t\t{ __( 'Insert' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</Modal>\n\t);\n}\n\nexport function MediaPreview( { media, onClick, category } ) {\n\tconst [ showExternalUploadModal, setShowExternalUploadModal ] =\n\t\tuseState( false );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ isInserting, setIsInserting ] = useState( false );\n\tconst [ block, preview ] = useMemo(\n\t\t() => getBlockAndPreviewFromMedia( media, category.mediaType ),\n\t\t[ media, category.mediaType ]\n\t);\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst onMediaInsert = useCallback(\n\t\t( previewBlock ) => {\n\t\t\t// Prevent multiple uploads when we're in the process of inserting.\n\t\t\tif ( isInserting ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst settings = getSettings();\n\t\t\tconst clonedBlock = cloneBlock( previewBlock );\n\t\t\tconst { id, url, caption } = clonedBlock.attributes;\n\n\t\t\t// User has no permission to upload media.\n\t\t\tif ( ! id && ! settings.mediaUpload ) {\n\t\t\t\tsetShowExternalUploadModal( true );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Media item already exists in library, so just insert it.\n\t\t\tif ( !! id ) {\n\t\t\t\tonClick( clonedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetIsInserting( true );\n\t\t\t// Media item does not exist in library, so try to upload it.\n\t\t\t// Fist fetch the image data. This may fail if the image host\n\t\t\t// doesn't allow CORS with the domain.\n\t\t\t// If this happens, we insert the image block using the external\n\t\t\t// URL and let the user know about the possible implications.\n\t\t\twindow\n\t\t\t\t.fetch( url )\n\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\tsettings.mediaUpload( {\n\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\tadditionalData: { caption },\n\t\t\t\t\t\tonFileChange( [ img ] ) {\n\t\t\t\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick( {\n\t\t\t\t\t\t\t\t...clonedBlock,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t...clonedBlock.attributes,\n\t\t\t\t\t\t\t\t\tid: img.id,\n\t\t\t\t\t\t\t\t\turl: img.url,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\t\t__( 'Image uploaded and inserted.' ),\n\t\t\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tsetShowExternalUploadModal( true );\n\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tisInserting,\n\t\t\tgetSettings,\n\t\t\tonClick,\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateErrorNotice,\n\t\t]\n\t);\n\n\tconst title =\n\t\ttypeof media.title === 'string'\n\t\t\t? media.title\n\t\t\t: media.title?.rendered || __( 'no title' );\n\n\tlet truncatedTitle;\n\tif ( title.length > MAXIMUM_TITLE_LENGTH ) {\n\t\tconst omission = '...';\n\t\ttruncatedTitle =\n\t\t\ttitle.slice( 0, MAXIMUM_TITLE_LENGTH - omission.length ) + omission;\n\t}\n\tconst onMouseEnter = useCallback( () => setIsHovered( true ), [] );\n\tconst onMouseLeave = useCallback( () => setIsHovered( false ), [] );\n\treturn (\n\t\t<>\n\t\t\t<InserterDraggableBlocks isEnabled blocks={ [ block ] }>\n\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-inserter__media-list__list-item',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Adding `is-hovered` class to the wrapper element is needed\n\t\t\t\t\t\tbecause the options Popover is rendered outside of this node. */ }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip text={ truncatedTitle || title }>\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\taria-label={ title }\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-list__item\"\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\tonClick={ () => onMediaInsert( block ) }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview\">\n\t\t\t\t\t\t\t\t\t\t{ preview }\n\t\t\t\t\t\t\t\t\t\t{ isInserting && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview-spinner\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</CompositeItem>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t{ ! isInserting && (\n\t\t\t\t\t\t\t\t<MediaPreviewOptions\n\t\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\t\tmedia={ media }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</InserterDraggableBlocks>\n\t\t\t{ showExternalUploadModal && (\n\t\t\t\t<InsertExternalImageModal\n\t\t\t\t\tonClose={ () => setShowExternalUploadModal( false ) }\n\t\t\t\t\tonSubmit={ () => {\n\t\t\t\t\t\tonClick( cloneBlock( block ) );\n\t\t\t\t\t\tcreateSuccessNotice( __( 'Image inserted.' ), {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tsetShowExternalUploadModal( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,OAAO,EACPC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACNC,WAAW,IAAIC,qBAAqB,EACpCC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,OAAO,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,oBAAoB;AACnE,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,YAAY,EAAEC,QAAQ,QAAQ,kBAAkB;AACzD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,uBAAuB,MAAM,iCAAiC;AACrE,SAASC,2BAA2B,QAAQ,SAAS;AACrD,SAASJ,KAAK,IAAIK,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,MAAM,QAAQ,sBAAsB;AAE7C,MAAMC,mBAAmB,GAAG,CAAE,OAAO,CAAE;AACvC,MAAMC,oBAAoB,GAAG,EAAE;AAC/B,MAAMC,2BAA2B,GAAG;EACnCC,QAAQ,EAAE,aAAa;EACvBC,SAAS,EACR;AACF,CAAC;AAED,MAAM;EAAEC,eAAe,EAAEC;AAAc,CAAC,GAAGP,MAAM,CAAEnB,qBAAsB,CAAC;AAE1E,SAAS2B,mBAAmBA,CAAE;EAAEC,QAAQ;EAAEC;AAAM,CAAC,EAAG;EACnD,IAAK,CAAED,QAAQ,CAACE,YAAY,EAAG;IAC9B,OAAO,IAAI;EACZ;EACA,MAAMC,SAAS,GAAGH,QAAQ,CAACE,YAAY,CAAED,KAAM,CAAC;EAChD,OACCG,aAAA,CAACzC,YAAY;IACZiC,SAAS,EAAC,yDAAyD;IACnES,KAAK,EAAG9B,EAAE,CAAE,SAAU,CAAG;IACzB+B,YAAY,EAAGZ,2BAA6B;IAC5Ca,IAAI,EAAG1B;EAAc,GAEnB,MACDuB,aAAA,CAACxC,SAAS,QACTwC,aAAA,CAACvC,QAAQ;IACR2C,OAAO,EAAGA,CAAA,KACTC,MAAM,CAACC,IAAI,CAAEP,SAAS,EAAE,QAAS,CAAC,CAACQ,KAAK,CAAC,CACzC;IACDJ,IAAI,EAAGzB;EAAU,GAEfN,OAAO,EACR;EACAD,EAAE,CAAE,WAAY,CAAC,EACjByB,QAAQ,CAACY,SACV,CACS,CACA,CAEC,CAAC;AAEjB;AAEA,SAASC,wBAAwBA,CAAE;EAAEC,OAAO;EAAEC;AAAS,CAAC,EAAG;EAC1D,OACCX,aAAA,CAACrC,KAAK;IACLiD,KAAK,EAAGzC,EAAE,CAAE,uBAAwB,CAAG;IACvC0C,cAAc,EAAGH,OAAS;IAC1BlB,SAAS,EAAC;EAA6E,GAEvFQ,aAAA,CAAC9B,MAAM;IAAC4C,OAAO,EAAG;EAAG,GACpBd,aAAA,YACG7B,EAAE,CACH,yGACD,CACE,CAAC,EACJ6B,aAAA,YACG7B,EAAE,CACH,qJACD,CACE,CACI,CAAC,EACT6B,aAAA,CAACpC,IAAI;IACJ4B,SAAS,EAAC,wCAAwC;IAClDuB,OAAO,EAAC,UAAU;IAClBC,QAAQ,EAAG;EAAO,GAElBhB,aAAA,CAACnC,QAAQ,QACRmC,aAAA,CAAClC,MAAM;IAACmD,OAAO,EAAC,UAAU;IAACb,OAAO,EAAGM;EAAS,GAC3CvC,EAAE,CAAE,QAAS,CACR,CACC,CAAC,EACX6B,aAAA,CAACnC,QAAQ,QACRmC,aAAA,CAAClC,MAAM;IAACmD,OAAO,EAAC,SAAS;IAACb,OAAO,EAAGO;EAAU,GAC3CxC,EAAE,CAAE,QAAS,CACR,CACC,CACL,CACA,CAAC;AAEV;AAEA,OAAO,SAAS+C,YAAYA,CAAE;EAAErB,KAAK;EAAEO,OAAO;EAAER;AAAS,CAAC,EAAG;EAC5D,MAAM,CAAEuB,uBAAuB,EAAEC,0BAA0B,CAAE,GAC5D7C,QAAQ,CAAE,KAAM,CAAC;EAClB,MAAM,CAAE8C,SAAS,EAAEC,YAAY,CAAE,GAAG/C,QAAQ,CAAE,KAAM,CAAC;EACrD,MAAM,CAAEgD,WAAW,EAAEC,cAAc,CAAE,GAAGjD,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAM,CAAEkD,KAAK,EAAEC,OAAO,CAAE,GAAGrD,OAAO,CACjC,MAAMY,2BAA2B,CAAEY,KAAK,EAAED,QAAQ,CAACY,SAAU,CAAC,EAC9D,CAAEX,KAAK,EAAED,QAAQ,CAACY,SAAS,CAC5B,CAAC;EACD,MAAM;IAAEmB,iBAAiB;IAAEC;EAAoB,CAAC,GAC/ChD,WAAW,CAAEE,YAAa,CAAC;EAC5B,MAAM;IAAE+C;EAAY,CAAC,GAAGlD,SAAS,CAAEO,gBAAiB,CAAC;EAErD,MAAM4C,aAAa,GAAGxD,WAAW,CAC9ByD,YAAY,IAAM;IACnB;IACA,IAAKR,WAAW,EAAG;MAClB;IACD;IAEA,MAAMS,QAAQ,GAAGH,WAAW,CAAC,CAAC;IAC9B,MAAMI,WAAW,GAAGzD,UAAU,CAAEuD,YAAa,CAAC;IAC9C,MAAM;MAAEG,EAAE;MAAEC,GAAG;MAAEC;IAAQ,CAAC,GAAGH,WAAW,CAACI,UAAU;;IAEnD;IACA,IAAK,CAAEH,EAAE,IAAI,CAAEF,QAAQ,CAACM,WAAW,EAAG;MACrClB,0BAA0B,CAAE,IAAK,CAAC;MAClC;IACD;;IAEA;IACA,IAAK,CAAC,CAAEc,EAAE,EAAG;MACZ9B,OAAO,CAAE6B,WAAY,CAAC;MACtB;IACD;IAEAT,cAAc,CAAE,IAAK,CAAC;IACtB;IACA;IACA;IACA;IACA;IACAnB,MAAM,CACJkC,KAAK,CAAEJ,GAAI,CAAC,CACZK,IAAI,CAAIC,QAAQ,IAAMA,QAAQ,CAACC,IAAI,CAAC,CAAE,CAAC,CACvCF,IAAI,CAAIE,IAAI,IAAM;MAClBV,QAAQ,CAACM,WAAW,CAAE;QACrBK,SAAS,EAAE,CAAED,IAAI,CAAE;QACnBE,cAAc,EAAE;UAAER;QAAQ,CAAC;QAC3BS,YAAYA,CAAE,CAAEC,GAAG,CAAE,EAAG;UACvB,IAAK/D,SAAS,CAAE+D,GAAG,CAACX,GAAI,CAAC,EAAG;YAC3B;UACD;UACA/B,OAAO,CAAE;YACR,GAAG6B,WAAW;YACdI,UAAU,EAAE;cACX,GAAGJ,WAAW,CAACI,UAAU;cACzBH,EAAE,EAAEY,GAAG,CAACZ,EAAE;cACVC,GAAG,EAAEW,GAAG,CAACX;YACV;UACD,CAAE,CAAC;UACHP,mBAAmB,CAClBzD,EAAE,CAAE,8BAA+B,CAAC,EACpC;YAAE4E,IAAI,EAAE;UAAW,CACpB,CAAC;UACDvB,cAAc,CAAE,KAAM,CAAC;QACxB,CAAC;QACDwB,YAAY,EAAE5D,mBAAmB;QACjC6D,OAAOA,CAAEC,OAAO,EAAG;UAClBvB,iBAAiB,CAAEuB,OAAO,EAAE;YAAEH,IAAI,EAAE;UAAW,CAAE,CAAC;UAClDvB,cAAc,CAAE,KAAM,CAAC;QACxB;MACD,CAAE,CAAC;IACJ,CAAE,CAAC,CACF2B,KAAK,CAAE,MAAM;MACb/B,0BAA0B,CAAE,IAAK,CAAC;MAClCI,cAAc,CAAE,KAAM,CAAC;IACxB,CAAE,CAAC;EACL,CAAC,EACD,CACCD,WAAW,EACXM,WAAW,EACXzB,OAAO,EACPwB,mBAAmB,EACnBD,iBAAiB,CAEnB,CAAC;EAED,MAAMf,KAAK,GACV,OAAOf,KAAK,CAACe,KAAK,KAAK,QAAQ,GAC5Bf,KAAK,CAACe,KAAK,GACXf,KAAK,CAACe,KAAK,EAAEwC,QAAQ,IAAIjF,EAAE,CAAE,UAAW,CAAC;EAE7C,IAAIkF,cAAc;EAClB,IAAKzC,KAAK,CAAC0C,MAAM,GAAGjE,oBAAoB,EAAG;IAC1C,MAAMkE,QAAQ,GAAG,KAAK;IACtBF,cAAc,GACbzC,KAAK,CAAC4C,KAAK,CAAE,CAAC,EAAEnE,oBAAoB,GAAGkE,QAAQ,CAACD,MAAO,CAAC,GAAGC,QAAQ;EACrE;EACA,MAAME,YAAY,GAAGnF,WAAW,CAAE,MAAMgD,YAAY,CAAE,IAAK,CAAC,EAAE,EAAG,CAAC;EAClE,MAAMoC,YAAY,GAAGpF,WAAW,CAAE,MAAMgD,YAAY,CAAE,KAAM,CAAC,EAAE,EAAG,CAAC;EACnE,OACCtB,aAAA,CAAA2D,QAAA,QACC3D,aAAA,CAAChB,uBAAuB;IAAC4E,SAAS;IAACC,MAAM,EAAG,CAAEpC,KAAK;EAAI,GACpD,CAAE;IAAEqC,SAAS;IAAEC,WAAW;IAAEC;EAAU,CAAC,KACxChE,aAAA;IACCR,SAAS,EAAGnC,UAAU,CACrB,8CAA8C,EAC9C;MACC,YAAY,EAAEgE;IACf,CACD,CAAG;IACHyC,SAAS,EAAGA,SAAW;IACvBC,WAAW,EAAGA,WAAa;IAC3BC,SAAS,EAAGA;EAAW,GAIvBhE,aAAA;IACCyD,YAAY,EAAGA,YAAc;IAC7BC,YAAY,EAAGA;EAAc,GAE7B1D,aAAA,CAAC1C,OAAO;IAAC2G,IAAI,EAAGZ,cAAc,IAAIzC;EAAO,GACxCZ,aAAA,CAACN,aAAa;IACbwE,MAAM,EACLlE,aAAA;MACC,cAAaY,KAAO;MACpBuD,IAAI,EAAC,QAAQ;MACb3E,SAAS,EAAC;IAAyC,CACnD,CACD;IACDY,OAAO,EAAGA,CAAA,KAAM0B,aAAa,CAAEL,KAAM;EAAG,GAExCzB,aAAA;IAAKR,SAAS,EAAC;EAAiD,GAC7DkC,OAAO,EACPH,WAAW,IACZvB,aAAA;IAAKR,SAAS,EAAC;EAAyD,GACvEQ,aAAA,CAACtC,OAAO,MAAE,CACN,CAEF,CACS,CACP,CAAC,EACR,CAAE6D,WAAW,IACdvB,aAAA,CAACL,mBAAmB;IACnBC,QAAQ,EAAGA,QAAU;IACrBC,KAAK,EAAGA;EAAO,CACf,CAEE,CACD,CAEkB,CAAC,EACxBsB,uBAAuB,IACxBnB,aAAA,CAACS,wBAAwB;IACxBC,OAAO,EAAGA,CAAA,KAAMU,0BAA0B,CAAE,KAAM,CAAG;IACrDT,QAAQ,EAAGA,CAAA,KAAM;MAChBP,OAAO,CAAE5B,UAAU,CAAEiD,KAAM,CAAE,CAAC;MAC9BG,mBAAmB,CAAEzD,EAAE,CAAE,iBAAkB,CAAC,EAAE;QAC7C4E,IAAI,EAAE;MACP,CAAE,CAAC;MACH3B,0BAA0B,CAAE,KAAM,CAAC;IACpC;EAAG,CACH,CAED,CAAC;AAEL","ignoreList":[]}