@wordpress/block-editor 12.13.0 → 12.15.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 (528) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/build/components/block-heading-level-dropdown/index.js +1 -1
  4. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  5. package/build/components/block-list/block.native.js +2 -0
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/index.js +2 -9
  8. package/build/components/block-list/index.js.map +1 -1
  9. package/build/components/block-list-appender/index.js +16 -3
  10. package/build/components/block-list-appender/index.js.map +1 -1
  11. package/build/components/block-parent-selector/index.js +1 -1
  12. package/build/components/block-parent-selector/index.js.map +1 -1
  13. package/build/components/block-pattern-setup/index.js +25 -16
  14. package/build/components/block-pattern-setup/index.js.map +1 -1
  15. package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
  16. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  17. package/build/components/block-patterns-list/index.js +36 -19
  18. package/build/components/block-patterns-list/index.js.map +1 -1
  19. package/build/components/block-quick-navigation/index.js +6 -4
  20. package/build/components/block-quick-navigation/index.js.map +1 -1
  21. package/build/components/block-rename/index.js +28 -0
  22. package/build/components/block-rename/index.js.map +1 -0
  23. package/build/components/block-rename/is-empty-string.js +10 -0
  24. package/build/components/block-rename/is-empty-string.js.map +1 -0
  25. package/build/components/block-rename/modal.js +87 -0
  26. package/build/components/block-rename/modal.js.map +1 -0
  27. package/build/components/block-rename/rename-control.js +74 -0
  28. package/build/components/block-rename/rename-control.js.map +1 -0
  29. package/build/components/block-rename/use-block-rename.js +17 -0
  30. package/build/components/block-rename/use-block-rename.js.map +1 -0
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu-controls/index.js +7 -0
  34. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  35. package/build/components/block-styles/index.js +0 -8
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
  38. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  39. package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  40. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  41. package/build/components/block-tools/back-compat.js +2 -2
  42. package/build/components/block-tools/back-compat.js.map +1 -1
  43. package/build/components/block-tools/block-contextual-toolbar.js +11 -81
  44. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  45. package/build/components/block-tools/empty-block-inserter.js +56 -0
  46. package/build/components/block-tools/empty-block-inserter.js.map +1 -0
  47. package/build/components/block-tools/index.js +48 -9
  48. package/build/components/block-tools/index.js.map +1 -1
  49. package/build/components/block-tools/selected-block-tools.js +113 -0
  50. package/build/components/block-tools/selected-block-tools.js.map +1 -0
  51. package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
  52. package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  53. package/build/components/block-types-list/index.js +6 -2
  54. package/build/components/block-types-list/index.js.map +1 -1
  55. package/build/components/date-format-picker/index.js +8 -1
  56. package/build/components/date-format-picker/index.js.map +1 -1
  57. package/build/components/editable-text/index.js +1 -2
  58. package/build/components/editable-text/index.js.map +1 -1
  59. package/build/components/global-styles/advanced-panel.js +1 -1
  60. package/build/components/global-styles/advanced-panel.js.map +1 -1
  61. package/build/components/iframe/index.js +4 -3
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/image-size-control/index.js +0 -5
  64. package/build/components/image-size-control/index.js.map +1 -1
  65. package/build/components/inner-blocks/index.js +3 -1
  66. package/build/components/inner-blocks/index.js.map +1 -1
  67. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
  68. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  69. package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
  70. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
  71. package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  72. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  73. package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
  74. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  75. package/build/components/inserter/block-patterns-tab/index.js +75 -0
  76. package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
  77. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  78. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  79. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
  80. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  81. package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
  82. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  83. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
  84. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  85. package/build/components/inserter/block-patterns-tab/utils.js +69 -0
  86. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
  87. package/build/components/inserter/hooks/use-patterns-state.js +2 -1
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/media-tab/media-list.js +9 -5
  90. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  91. package/build/components/inserter/media-tab/media-preview.js +15 -12
  92. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  93. package/build/components/inserter/menu.js +3 -4
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter-listbox/index.js +11 -6
  96. package/build/components/inserter-listbox/index.js.map +1 -1
  97. package/build/components/inserter-listbox/item.js +24 -23
  98. package/build/components/inserter-listbox/item.js.map +1 -1
  99. package/build/components/inserter-listbox/row.js +5 -5
  100. package/build/components/inserter-listbox/row.js.map +1 -1
  101. package/build/components/link-control/index.js +6 -5
  102. package/build/components/link-control/index.js.map +1 -1
  103. package/build/components/list-view/block-select-button.js +39 -0
  104. package/build/components/list-view/block-select-button.js.map +1 -1
  105. package/build/components/list-view/block.js +16 -3
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/index.js +3 -2
  108. package/build/components/list-view/index.js.map +1 -1
  109. package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
  110. package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  111. package/build/components/navigable-toolbar/index.js +69 -18
  112. package/build/components/navigable-toolbar/index.js.map +1 -1
  113. package/build/components/preview-options/index.js +4 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/provider/use-block-sync.js +1 -14
  116. package/build/components/provider/use-block-sync.js.map +1 -1
  117. package/build/components/rich-text/index.js +0 -1
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +4 -2
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/rich-text/native/format-edit.js +45 -0
  122. package/build/components/rich-text/native/format-edit.js.map +1 -0
  123. package/build/components/rich-text/native/get-format-colors.native.js +41 -0
  124. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
  125. package/build/components/rich-text/native/index.js +9 -0
  126. package/build/components/rich-text/native/index.js.map +1 -0
  127. package/build/components/rich-text/native/index.native.js +1189 -0
  128. package/build/components/rich-text/native/index.native.js.map +1 -0
  129. package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
  130. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  131. package/build/components/rich-text/native/use-format-types.js +111 -0
  132. package/build/components/rich-text/native/use-format-types.js.map +1 -0
  133. package/build/components/rich-text/use-input-rules.js +30 -1
  134. package/build/components/rich-text/use-input-rules.js.map +1 -1
  135. package/build/components/rich-text/use-paste-handler.js +2 -5
  136. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  137. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  138. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  139. package/build/components/url-popover/image-url-input-ui.js +2 -1
  140. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  141. package/build/components/use-block-drop-zone/index.js +4 -1
  142. package/build/components/use-block-drop-zone/index.js.map +1 -1
  143. package/build/components/use-moving-animation/index.js +2 -1
  144. package/build/components/use-moving-animation/index.js.map +1 -1
  145. package/build/components/use-settings/index.js +2 -2
  146. package/build/components/use-settings/index.js.map +1 -1
  147. package/build/components/writing-flow/use-tab-nav.js +7 -3
  148. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  149. package/build/hooks/align.js +10 -10
  150. package/build/hooks/align.js.map +1 -1
  151. package/build/hooks/align.native.js +2 -2
  152. package/build/hooks/align.native.js.map +1 -1
  153. package/build/hooks/anchor.js +7 -6
  154. package/build/hooks/anchor.js.map +1 -1
  155. package/build/hooks/background.js +16 -4
  156. package/build/hooks/background.js.map +1 -1
  157. package/build/hooks/block-hooks.js +7 -8
  158. package/build/hooks/block-hooks.js.map +1 -1
  159. package/build/hooks/block-renaming.js +42 -0
  160. package/build/hooks/block-renaming.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +5 -5
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/custom-class-name.js +8 -7
  164. package/build/hooks/custom-class-name.js.map +1 -1
  165. package/build/hooks/custom-fields.js +57 -52
  166. package/build/hooks/custom-fields.js.map +1 -1
  167. package/build/hooks/duotone.js +9 -20
  168. package/build/hooks/duotone.js.map +1 -1
  169. package/build/hooks/index.js +0 -1
  170. package/build/hooks/index.js.map +1 -1
  171. package/build/hooks/layout.js +103 -93
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +10 -9
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +10 -13
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/utils.js +30 -0
  178. package/build/hooks/utils.js.map +1 -1
  179. package/build/layouts/constrained.js +4 -3
  180. package/build/layouts/constrained.js.map +1 -1
  181. package/build/private-apis.js +3 -0
  182. package/build/private-apis.js.map +1 -1
  183. package/build/store/actions.js +30 -37
  184. package/build/store/actions.js.map +1 -1
  185. package/build/store/reducer.js +18 -0
  186. package/build/store/reducer.js.map +1 -1
  187. package/build/store/selectors.js +18 -13
  188. package/build/store/selectors.js.map +1 -1
  189. package/build/utils/transform-styles/index.js +26 -6
  190. package/build/utils/transform-styles/index.js.map +1 -1
  191. package/build-module/components/block-heading-level-dropdown/index.js +1 -1
  192. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  193. package/build-module/components/block-list/block.native.js +2 -0
  194. package/build-module/components/block-list/block.native.js.map +1 -1
  195. package/build-module/components/block-list/index.js +3 -10
  196. package/build-module/components/block-list/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.js +16 -3
  198. package/build-module/components/block-list-appender/index.js.map +1 -1
  199. package/build-module/components/block-parent-selector/index.js +1 -1
  200. package/build-module/components/block-parent-selector/index.js.map +1 -1
  201. package/build-module/components/block-pattern-setup/index.js +24 -15
  202. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  203. package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
  204. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  205. package/build-module/components/block-patterns-list/index.js +36 -19
  206. package/build-module/components/block-patterns-list/index.js.map +1 -1
  207. package/build-module/components/block-quick-navigation/index.js +7 -5
  208. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  209. package/build-module/components/block-rename/index.js +4 -0
  210. package/build-module/components/block-rename/index.js.map +1 -0
  211. package/build-module/components/block-rename/is-empty-string.js +4 -0
  212. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  213. package/build-module/components/block-rename/modal.js +79 -0
  214. package/build-module/components/block-rename/modal.js.map +1 -0
  215. package/build-module/components/block-rename/rename-control.js +66 -0
  216. package/build-module/components/block-rename/rename-control.js.map +1 -0
  217. package/build-module/components/block-rename/use-block-rename.js +10 -0
  218. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  219. package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
  220. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  221. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  222. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  223. package/build-module/components/block-styles/index.js +0 -8
  224. package/build-module/components/block-styles/index.js.map +1 -1
  225. package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
  226. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  227. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  228. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  229. package/build-module/components/block-tools/back-compat.js +1 -1
  230. package/build-module/components/block-tools/back-compat.js.map +1 -1
  231. package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
  232. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  233. package/build-module/components/block-tools/empty-block-inserter.js +48 -0
  234. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
  235. package/build-module/components/block-tools/index.js +48 -9
  236. package/build-module/components/block-tools/index.js.map +1 -1
  237. package/build-module/components/block-tools/selected-block-tools.js +105 -0
  238. package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
  239. package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
  240. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  241. package/build-module/components/block-types-list/index.js +6 -2
  242. package/build-module/components/block-types-list/index.js.map +1 -1
  243. package/build-module/components/date-format-picker/index.js +8 -1
  244. package/build-module/components/date-format-picker/index.js.map +1 -1
  245. package/build-module/components/editable-text/index.js +1 -2
  246. package/build-module/components/editable-text/index.js.map +1 -1
  247. package/build-module/components/global-styles/advanced-panel.js +1 -1
  248. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  249. package/build-module/components/iframe/index.js +4 -3
  250. package/build-module/components/iframe/index.js.map +1 -1
  251. package/build-module/components/image-size-control/index.js +0 -5
  252. package/build-module/components/image-size-control/index.js.map +1 -1
  253. package/build-module/components/inner-blocks/index.js +3 -1
  254. package/build-module/components/inner-blocks/index.js.map +1 -1
  255. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
  256. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  257. package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
  258. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
  259. package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  260. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  261. package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +3 -3
  262. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  263. package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
  264. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
  265. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
  266. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  267. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
  268. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  269. package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
  270. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  271. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
  272. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  273. package/build-module/components/inserter/block-patterns-tab/utils.js +57 -0
  274. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
  275. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
  276. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  277. package/build-module/components/inserter/media-tab/media-list.js +9 -5
  278. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  279. package/build-module/components/inserter/media-tab/media-preview.js +15 -12
  280. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  281. package/build-module/components/inserter/menu.js +4 -3
  282. package/build-module/components/inserter/menu.js.map +1 -1
  283. package/build-module/components/inserter-listbox/index.js +13 -8
  284. package/build-module/components/inserter-listbox/index.js.map +1 -1
  285. package/build-module/components/inserter-listbox/item.js +25 -23
  286. package/build-module/components/inserter-listbox/item.js.map +1 -1
  287. package/build-module/components/inserter-listbox/row.js +6 -5
  288. package/build-module/components/inserter-listbox/row.js.map +1 -1
  289. package/build-module/components/link-control/index.js +7 -6
  290. package/build-module/components/link-control/index.js.map +1 -1
  291. package/build-module/components/list-view/block-select-button.js +39 -0
  292. package/build-module/components/list-view/block-select-button.js.map +1 -1
  293. package/build-module/components/list-view/block.js +16 -3
  294. package/build-module/components/list-view/block.js.map +1 -1
  295. package/build-module/components/list-view/index.js +3 -2
  296. package/build-module/components/list-view/index.js.map +1 -1
  297. package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
  298. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  299. package/build-module/components/navigable-toolbar/index.js +69 -17
  300. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  301. package/build-module/components/preview-options/index.js +4 -2
  302. package/build-module/components/preview-options/index.js.map +1 -1
  303. package/build-module/components/provider/use-block-sync.js +1 -14
  304. package/build-module/components/provider/use-block-sync.js.map +1 -1
  305. package/build-module/components/rich-text/index.js +0 -1
  306. package/build-module/components/rich-text/index.js.map +1 -1
  307. package/build-module/components/rich-text/index.native.js +4 -2
  308. package/build-module/components/rich-text/index.native.js.map +1 -1
  309. package/build-module/components/rich-text/native/format-edit.js +38 -0
  310. package/build-module/components/rich-text/native/format-edit.js.map +1 -0
  311. package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
  312. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
  313. package/build-module/components/rich-text/native/index.js +2 -0
  314. package/build-module/components/rich-text/native/index.js.map +1 -0
  315. package/build-module/components/rich-text/native/index.native.js +1179 -0
  316. package/build-module/components/rich-text/native/index.native.js.map +1 -0
  317. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
  318. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  319. package/build-module/components/rich-text/native/use-format-types.js +104 -0
  320. package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
  321. package/build-module/components/rich-text/use-input-rules.js +31 -2
  322. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  323. package/build-module/components/rich-text/use-paste-handler.js +2 -5
  324. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  325. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  326. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  327. package/build-module/components/url-popover/image-url-input-ui.js +2 -1
  328. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  329. package/build-module/components/use-block-drop-zone/index.js +4 -1
  330. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  331. package/build-module/components/use-moving-animation/index.js +2 -1
  332. package/build-module/components/use-moving-animation/index.js.map +1 -1
  333. package/build-module/components/use-settings/index.js +2 -2
  334. package/build-module/components/use-settings/index.js.map +1 -1
  335. package/build-module/components/writing-flow/use-tab-nav.js +7 -3
  336. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  337. package/build-module/hooks/align.js +8 -8
  338. package/build-module/hooks/align.js.map +1 -1
  339. package/build-module/hooks/align.native.js +2 -2
  340. package/build-module/hooks/align.native.js.map +1 -1
  341. package/build-module/hooks/anchor.js +5 -4
  342. package/build-module/hooks/anchor.js.map +1 -1
  343. package/build-module/hooks/background.js +17 -5
  344. package/build-module/hooks/background.js.map +1 -1
  345. package/build-module/hooks/block-hooks.js +5 -6
  346. package/build-module/hooks/block-hooks.js.map +1 -1
  347. package/build-module/hooks/block-renaming.js +40 -0
  348. package/build-module/hooks/block-renaming.js.map +1 -1
  349. package/build-module/hooks/content-lock-ui.js +3 -3
  350. package/build-module/hooks/content-lock-ui.js.map +1 -1
  351. package/build-module/hooks/custom-class-name.js +6 -5
  352. package/build-module/hooks/custom-class-name.js.map +1 -1
  353. package/build-module/hooks/custom-fields.js +57 -52
  354. package/build-module/hooks/custom-fields.js.map +1 -1
  355. package/build-module/hooks/duotone.js +10 -21
  356. package/build-module/hooks/duotone.js.map +1 -1
  357. package/build-module/hooks/index.js +0 -1
  358. package/build-module/hooks/index.js.map +1 -1
  359. package/build-module/hooks/layout.js +103 -93
  360. package/build-module/hooks/layout.js.map +1 -1
  361. package/build-module/hooks/position.js +11 -10
  362. package/build-module/hooks/position.js.map +1 -1
  363. package/build-module/hooks/style.js +10 -13
  364. package/build-module/hooks/style.js.map +1 -1
  365. package/build-module/hooks/utils.js +30 -1
  366. package/build-module/hooks/utils.js.map +1 -1
  367. package/build-module/layouts/constrained.js +4 -3
  368. package/build-module/layouts/constrained.js.map +1 -1
  369. package/build-module/private-apis.js +4 -1
  370. package/build-module/private-apis.js.map +1 -1
  371. package/build-module/store/actions.js +29 -37
  372. package/build-module/store/actions.js.map +1 -1
  373. package/build-module/store/reducer.js +17 -0
  374. package/build-module/store/reducer.js.map +1 -1
  375. package/build-module/store/selectors.js +17 -13
  376. package/build-module/store/selectors.js.map +1 -1
  377. package/build-module/utils/transform-styles/index.js +24 -7
  378. package/build-module/utils/transform-styles/index.js.map +1 -1
  379. package/build-style/content-rtl.css +6 -6
  380. package/build-style/content.css +6 -6
  381. package/build-style/style-rtl.css +26 -20
  382. package/build-style/style.css +26 -20
  383. package/package.json +31 -31
  384. package/src/components/block-heading-level-dropdown/index.js +1 -1
  385. package/src/components/block-list/block.native.js +2 -0
  386. package/src/components/block-list/index.js +4 -18
  387. package/src/components/block-list-appender/index.js +20 -4
  388. package/src/components/block-parent-selector/index.js +1 -1
  389. package/src/components/block-pattern-setup/index.js +38 -22
  390. package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
  391. package/src/components/block-pattern-setup/style.scss +4 -1
  392. package/src/components/block-patterns-list/README.md +4 -4
  393. package/src/components/block-patterns-list/index.js +60 -34
  394. package/src/components/block-patterns-list/style.scss +7 -0
  395. package/src/components/block-quick-navigation/index.js +11 -5
  396. package/src/components/block-rename/index.js +3 -0
  397. package/src/components/block-rename/is-empty-string.js +3 -0
  398. package/src/components/block-rename/modal.js +115 -0
  399. package/src/components/block-rename/rename-control.js +80 -0
  400. package/src/components/block-rename/use-block-rename.js +10 -0
  401. package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
  402. package/src/components/block-settings-menu-controls/index.js +9 -0
  403. package/src/components/block-styles/index.js +0 -10
  404. package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
  405. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
  406. package/src/components/block-toolbar/style.scss +8 -0
  407. package/src/components/block-tools/back-compat.js +1 -1
  408. package/src/components/block-tools/block-contextual-toolbar.js +11 -134
  409. package/src/components/block-tools/empty-block-inserter.js +56 -0
  410. package/src/components/block-tools/index.js +72 -16
  411. package/src/components/block-tools/selected-block-tools.js +127 -0
  412. package/src/components/block-tools/style.scss +0 -10
  413. package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
  414. package/src/components/block-types-list/index.js +5 -4
  415. package/src/components/button-block-appender/content.scss +2 -2
  416. package/src/components/date-format-picker/index.js +7 -0
  417. package/src/components/editable-text/README.md +0 -36
  418. package/src/components/editable-text/index.js +1 -8
  419. package/src/components/global-styles/advanced-panel.js +1 -1
  420. package/src/components/iframe/index.js +4 -3
  421. package/src/components/image-size-control/index.js +0 -6
  422. package/src/components/inner-blocks/index.js +6 -2
  423. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
  424. package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
  425. package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +9 -2
  426. package/src/components/inserter/block-patterns-tab/index.js +118 -0
  427. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  428. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +179 -0
  429. package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
  430. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +101 -0
  431. package/src/components/inserter/block-patterns-tab/utils.js +78 -0
  432. package/src/components/inserter/hooks/use-patterns-state.js +3 -1
  433. package/src/components/inserter/media-tab/media-list.js +7 -7
  434. package/src/components/inserter/media-tab/media-preview.js +27 -22
  435. package/src/components/inserter/menu.js +4 -5
  436. package/src/components/inserter-listbox/index.js +11 -7
  437. package/src/components/inserter-listbox/item.js +11 -12
  438. package/src/components/inserter-listbox/row.js +6 -12
  439. package/src/components/link-control/README.md +2 -2
  440. package/src/components/link-control/index.js +15 -6
  441. package/src/components/link-control/style.scss +8 -5
  442. package/src/components/list-view/block-select-button.js +44 -1
  443. package/src/components/list-view/block.js +11 -11
  444. package/src/components/list-view/index.js +2 -0
  445. package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
  446. package/src/components/media-replace-flow/style.scss +2 -2
  447. package/src/components/navigable-toolbar/index.js +71 -25
  448. package/src/components/plain-text/README.md +2 -30
  449. package/src/components/preview-options/index.js +2 -0
  450. package/src/components/provider/use-block-sync.js +2 -21
  451. package/src/components/rich-text/README.md +6 -63
  452. package/src/components/rich-text/index.js +0 -1
  453. package/src/components/rich-text/index.native.js +4 -2
  454. package/src/components/rich-text/native/format-edit.js +44 -0
  455. package/src/components/rich-text/native/get-format-colors.native.js +54 -0
  456. package/src/components/rich-text/native/index.js +1 -0
  457. package/src/components/rich-text/native/index.native.js +1406 -0
  458. package/src/components/rich-text/native/style.native.scss +28 -0
  459. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
  460. package/src/components/rich-text/native/test/index.native.js +278 -0
  461. package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
  462. package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
  463. package/src/components/rich-text/native/use-format-types.js +146 -0
  464. package/src/components/rich-text/use-input-rules.js +30 -2
  465. package/src/components/rich-text/use-paste-handler.js +1 -6
  466. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  467. package/src/components/url-input/README.md +1 -74
  468. package/src/components/url-popover/image-url-input-ui.js +1 -0
  469. package/src/components/use-block-drop-zone/index.js +4 -1
  470. package/src/components/use-moving-animation/index.js +1 -1
  471. package/src/components/use-settings/index.js +2 -2
  472. package/src/components/use-settings/test/index.js +1 -1
  473. package/src/components/writing-flow/use-tab-nav.js +8 -3
  474. package/src/hooks/align.js +8 -8
  475. package/src/hooks/align.native.js +2 -2
  476. package/src/hooks/anchor.js +21 -23
  477. package/src/hooks/background.js +28 -6
  478. package/src/hooks/block-hooks.js +20 -16
  479. package/src/hooks/block-renaming.js +47 -0
  480. package/src/hooks/content-lock-ui.js +3 -3
  481. package/src/hooks/custom-class-name.js +7 -6
  482. package/src/hooks/custom-fields.js +73 -70
  483. package/src/hooks/duotone.js +23 -33
  484. package/src/hooks/index.js +0 -1
  485. package/src/hooks/layout.js +126 -113
  486. package/src/hooks/position.js +8 -21
  487. package/src/hooks/style.js +17 -31
  488. package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
  489. package/src/hooks/test/align.js +4 -4
  490. package/src/hooks/utils.js +33 -1
  491. package/src/layouts/constrained.js +57 -50
  492. package/src/private-apis.js +4 -1
  493. package/src/store/actions.js +26 -72
  494. package/src/store/reducer.js +19 -0
  495. package/src/store/selectors.js +15 -19
  496. package/src/style.scss +1 -1
  497. package/src/utils/test/transform-styles.js +49 -0
  498. package/src/utils/transform-styles/index.js +39 -13
  499. package/build/components/block-tools/selected-block-popover.js +0 -221
  500. package/build/components/block-tools/selected-block-popover.js.map +0 -1
  501. package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  502. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  503. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  504. package/build/components/inserter/block-patterns-filter.js.map +0 -1
  505. package/build/components/inserter/block-patterns-tab.js +0 -270
  506. package/build/components/inserter/block-patterns-tab.js.map +0 -1
  507. package/build/hooks/block-rename-ui.js +0 -165
  508. package/build/hooks/block-rename-ui.js.map +0 -1
  509. package/build/store/utils.js +0 -22
  510. package/build/store/utils.js.map +0 -1
  511. package/build-module/components/block-tools/selected-block-popover.js +0 -213
  512. package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
  513. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  514. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  515. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  516. package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
  517. package/build-module/components/inserter/block-patterns-tab.js +0 -254
  518. package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
  519. package/build-module/hooks/block-rename-ui.js +0 -157
  520. package/build-module/hooks/block-rename-ui.js.map +0 -1
  521. package/build-module/store/utils.js +0 -16
  522. package/build-module/store/utils.js.map +0 -1
  523. package/src/components/block-tools/selected-block-popover.js +0 -265
  524. package/src/components/inserter/block-patterns-tab.js +0 -448
  525. package/src/hooks/block-rename-ui.js +0 -226
  526. package/src/store/utils.js +0 -12
  527. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
  528. /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
@@ -3,32 +3,19 @@ import { createElement, Fragment } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { SVG, Path, DropdownMenu, MenuGroup, MenuItemsChoice, ExternalLink } from '@wordpress/components';
6
- import { __ } from '@wordpress/i18n';
6
+ import { __, _x } from '@wordpress/i18n';
7
7
  import { Icon } from '@wordpress/icons';
8
8
  import { useMemo, createInterpolateElement } from '@wordpress/element';
9
9
 
10
10
  /**
11
11
  * Internal dependencies
12
12
  */
13
- import { myPatternsCategory } from './block-patterns-tab';
14
- export const PATTERN_TYPES = {
15
- all: 'all',
16
- synced: 'synced',
17
- unsynced: 'unsynced',
18
- user: 'user',
19
- theme: 'theme',
20
- directory: 'directory'
21
- };
22
- export const SYNC_TYPES = {
23
- all: 'all',
24
- full: 'fully',
25
- unsynced: 'unsynced'
26
- };
13
+ import { myPatternsCategory, SYNC_TYPES, PATTERN_TYPES } from './utils';
27
14
  const getShouldDisableSyncFilter = sourceFilter => sourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;
28
15
  const getShouldDisableNonUserSources = category => {
29
16
  return category.name === myPatternsCategory.name;
30
17
  };
31
- export function BlockPatternsSyncFilter({
18
+ export function PatternsFilter({
32
19
  setPatternSyncFilter,
33
20
  setPatternSourceFilter,
34
21
  patternSyncFilter,
@@ -51,14 +38,14 @@ export function BlockPatternsSyncFilter({
51
38
  const shouldDisableNonUserSources = getShouldDisableNonUserSources(category);
52
39
  const patternSyncMenuOptions = useMemo(() => [{
53
40
  value: SYNC_TYPES.all,
54
- label: __('All')
41
+ label: _x('All', 'Option that shows all patterns')
55
42
  }, {
56
43
  value: SYNC_TYPES.full,
57
- label: __('Synced'),
44
+ label: _x('Synced', 'Option that shows all synchronized patterns'),
58
45
  disabled: shouldDisableSyncFilter
59
46
  }, {
60
47
  value: SYNC_TYPES.unsynced,
61
- label: __('Not synced'),
48
+ label: _x('Not synced', 'Option that shows all patterns that are not synchronized'),
62
49
  disabled: shouldDisableSyncFilter
63
50
  }], [shouldDisableSyncFilter]);
64
51
  const patternSourceMenuOptions = useMemo(() => [{
@@ -126,4 +113,4 @@ export function BlockPatternsSyncFilter({
126
113
  })
127
114
  })))));
128
115
  }
129
- //# sourceMappingURL=block-patterns-filter.js.map
116
+ //# sourceMappingURL=patterns-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SVG","Path","DropdownMenu","MenuGroup","MenuItemsChoice","ExternalLink","__","_x","Icon","useMemo","createInterpolateElement","myPatternsCategory","SYNC_TYPES","PATTERN_TYPES","getShouldDisableSyncFilter","sourceFilter","all","user","getShouldDisableNonUserSources","category","name","PatternsFilter","setPatternSyncFilter","setPatternSourceFilter","patternSyncFilter","patternSourceFilter","scrollContainerRef","currentPatternSourceFilter","shouldDisableSyncFilter","shouldDisableNonUserSources","patternSyncMenuOptions","value","label","full","disabled","unsynced","patternSourceMenuOptions","directory","theme","handleSetSourceFilterChange","newSourceFilter","createElement","Fragment","popoverProps","placement","icon","width","height","viewBox","fill","xmlns","d","choices","onSelect","current","scrollTo","className","Link","href"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/patterns-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSVG,\n\tPath,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\tExternalLink,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { Icon } from '@wordpress/icons';\nimport { useMemo, createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { myPatternsCategory, SYNC_TYPES, PATTERN_TYPES } from './utils';\n\nconst getShouldDisableSyncFilter = ( sourceFilter ) =>\n\tsourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;\n\nconst getShouldDisableNonUserSources = ( category ) => {\n\treturn category.name === myPatternsCategory.name;\n};\n\nexport function PatternsFilter( {\n\tsetPatternSyncFilter,\n\tsetPatternSourceFilter,\n\tpatternSyncFilter,\n\tpatternSourceFilter,\n\tscrollContainerRef,\n\tcategory,\n} ) {\n\t// If the category is `myPatterns` then we need to set the source filter to `user`, but\n\t// we do this by deriving from props rather than calling setPatternSourceFilter otherwise\n\t// the user may be confused when switching to another category if the haven't explicity set\n\t// this filter themselves.\n\tconst currentPatternSourceFilter =\n\t\tcategory.name === myPatternsCategory.name\n\t\t\t? PATTERN_TYPES.user\n\t\t\t: patternSourceFilter;\n\n\t// We need to disable the sync filter option if the source filter is not 'all' or 'user'\n\t// otherwise applying them will just result in no patterns being shown.\n\tconst shouldDisableSyncFilter = getShouldDisableSyncFilter(\n\t\tcurrentPatternSourceFilter\n\t);\n\n\t// We also need to disable the directory and theme source filter options if the category\n\t// is `myPatterns` otherwise applying them will also just result in no patterns being shown.\n\tconst shouldDisableNonUserSources =\n\t\tgetShouldDisableNonUserSources( category );\n\n\tconst patternSyncMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.all,\n\t\t\t\tlabel: _x( 'All', 'Option that shows all patterns' ),\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.full,\n\t\t\t\tlabel: _x(\n\t\t\t\t\t'Synced',\n\t\t\t\t\t'Option that shows all synchronized patterns'\n\t\t\t\t),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.unsynced,\n\t\t\t\tlabel: _x(\n\t\t\t\t\t'Not synced',\n\t\t\t\t\t'Option that shows all patterns that are not synchronized'\n\t\t\t\t),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableSyncFilter ]\n\t);\n\n\tconst patternSourceMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.all,\n\t\t\t\tlabel: __( 'All' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.directory,\n\t\t\t\tlabel: __( 'Pattern Directory' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.theme,\n\t\t\t\tlabel: __( 'Theme & Plugins' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.user,\n\t\t\t\tlabel: __( 'User' ),\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableNonUserSources ]\n\t);\n\n\tfunction handleSetSourceFilterChange( newSourceFilter ) {\n\t\tsetPatternSourceFilter( newSourceFilter );\n\t\tif ( getShouldDisableSyncFilter( newSourceFilter ) ) {\n\t\t\tsetPatternSyncFilter( SYNC_TYPES.all );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tplacement: 'right-end',\n\t\t\t\t} }\n\t\t\t\tlabel=\"Filter patterns\"\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<SVG\n\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\t\t\td=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#1E1E1E\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</SVG>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Source' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSourceMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\thandleSetSourceFilterChange( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\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\tvalue={ currentPatternSourceFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Type' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSyncMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetPatternSyncFilter( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\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\tvalue={ patternSyncFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<div className=\"block-editor-tool-selector__help\">\n\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Patterns are available from the <Link>WordPress.org Pattern Directory</Link>, bundled in the active theme, or created by users on this site. Only patterns created on this site can be synced.'\n\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\tLink: (\n\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/patterns/'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}\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) }\n\t\t\t</DropdownMenu>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useMemo, useCallback } from '@wordpress/element';
5
+ import { _x, _n, sprintf } from '@wordpress/i18n';
6
+ import { speak } from '@wordpress/a11y';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import usePatternsState from '../hooks/use-patterns-state';
12
+ import { isPatternFiltered, allPatternsCategory, myPatternsCategory, PATTERN_TYPES } from './utils';
13
+ export function usePatternCategories(rootClientId, sourceFilter = 'all') {
14
+ const [patterns, allCategories] = usePatternsState(undefined, rootClientId);
15
+ const filteredPatterns = useMemo(() => sourceFilter === 'all' ? patterns : patterns.filter(pattern => !isPatternFiltered(pattern, sourceFilter)), [sourceFilter, patterns]);
16
+ const hasRegisteredCategory = useCallback(pattern => {
17
+ if (!pattern.categories || !pattern.categories.length) {
18
+ return false;
19
+ }
20
+ return pattern.categories.some(cat => allCategories.some(category => category.name === cat));
21
+ }, [allCategories]);
22
+
23
+ // Remove any empty categories.
24
+ const populatedCategories = useMemo(() => {
25
+ const categories = allCategories.filter(category => filteredPatterns.some(pattern => pattern.categories?.includes(category.name))).sort((a, b) => a.label.localeCompare(b.label));
26
+ if (filteredPatterns.some(pattern => !hasRegisteredCategory(pattern)) && !categories.find(category => category.name === 'uncategorized')) {
27
+ categories.push({
28
+ name: 'uncategorized',
29
+ label: _x('Uncategorized')
30
+ });
31
+ }
32
+ if (filteredPatterns.some(pattern => pattern.type === PATTERN_TYPES.user)) {
33
+ categories.unshift(myPatternsCategory);
34
+ }
35
+ if (filteredPatterns.length > 0) {
36
+ categories.unshift({
37
+ name: allPatternsCategory.name,
38
+ label: allPatternsCategory.label
39
+ });
40
+ }
41
+ speak(sprintf( /* translators: %d: number of categories . */
42
+ _n('%d category button displayed.', '%d category buttons displayed.', categories.length), categories.length));
43
+ return categories;
44
+ }, [allCategories, filteredPatterns, hasRegisteredCategory]);
45
+ return populatedCategories;
46
+ }
47
+ //# sourceMappingURL=use-pattern-categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useCallback","_x","_n","sprintf","speak","usePatternsState","isPatternFiltered","allPatternsCategory","myPatternsCategory","PATTERN_TYPES","usePatternCategories","rootClientId","sourceFilter","patterns","allCategories","undefined","filteredPatterns","filter","pattern","hasRegisteredCategory","categories","length","some","cat","category","name","populatedCategories","includes","sort","a","b","label","localeCompare","find","push","type","user","unshift"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/use-pattern-categories.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { _x, _n, sprintf } from '@wordpress/i18n';\n\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n\tPATTERN_TYPES,\n} from './utils';\n\nexport function usePatternCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => pattern.type === PATTERN_TYPES.user\n\t\t\t)\n\t\t) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n"],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+
5
+ import { __ } from '@wordpress/i18n';
6
+ export const PATTERN_TYPES = {
7
+ all: 'all',
8
+ synced: 'synced',
9
+ unsynced: 'unsynced',
10
+ user: 'user',
11
+ theme: 'theme',
12
+ directory: 'directory'
13
+ };
14
+ export const SYNC_TYPES = {
15
+ all: 'all',
16
+ full: 'fully',
17
+ unsynced: 'unsynced'
18
+ };
19
+ export const allPatternsCategory = {
20
+ name: 'allPatterns',
21
+ label: __('All')
22
+ };
23
+ export const myPatternsCategory = {
24
+ name: 'myPatterns',
25
+ label: __('My patterns')
26
+ };
27
+ export function isPatternFiltered(pattern, sourceFilter, syncFilter) {
28
+ const isUserPattern = pattern.name.startsWith('core/block');
29
+ const isDirectoryPattern = pattern.source === 'core' || pattern.source?.startsWith('pattern-directory');
30
+
31
+ // If theme source selected, filter out user created patterns and those from
32
+ // the core patterns directory.
33
+ if (sourceFilter === PATTERN_TYPES.theme && (isUserPattern || isDirectoryPattern)) {
34
+ return true;
35
+ }
36
+
37
+ // If the directory source is selected, filter out user created patterns
38
+ // and those bundled with the theme.
39
+ if (sourceFilter === PATTERN_TYPES.directory && (isUserPattern || !isDirectoryPattern)) {
40
+ return true;
41
+ }
42
+
43
+ // If user source selected, filter out theme patterns.
44
+ if (sourceFilter === PATTERN_TYPES.user && pattern.type !== PATTERN_TYPES.user) {
45
+ return true;
46
+ }
47
+
48
+ // Filter by sync status.
49
+ if (syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '') {
50
+ return true;
51
+ }
52
+ if (syncFilter === SYNC_TYPES.unsynced && pattern.syncStatus !== 'unsynced' && isUserPattern) {
53
+ return true;
54
+ }
55
+ return false;
56
+ }
57
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","SYNC_TYPES","full","allPatternsCategory","name","label","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","type","syncStatus"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tpattern.type !== PATTERN_TYPES.user\n\t) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,aAAa,GAAG;EAC5BC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,UAAU,GAAG;EACzBN,GAAG,EAAE,KAAK;EACVO,IAAI,EAAE,OAAO;EACbL,QAAQ,EAAE;AACX,CAAC;AAED,OAAO,MAAMM,mBAAmB,GAAG;EAClCC,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAEZ,EAAE,CAAE,KAAM;AAClB,CAAC;AAED,OAAO,MAAMa,kBAAkB,GAAG;EACjCF,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAEZ,EAAE,CAAE,aAAc;AAC1B,CAAC;AAED,OAAO,SAASc,iBAAiBA,CAAEC,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAG;EACtE,MAAMC,aAAa,GAAGH,OAAO,CAACJ,IAAI,CAACQ,UAAU,CAAE,YAAa,CAAC;EAC7D,MAAMC,kBAAkB,GACvBL,OAAO,CAACM,MAAM,KAAK,MAAM,IACzBN,OAAO,CAACM,MAAM,EAAEF,UAAU,CAAE,mBAAoB,CAAC;;EAElD;EACA;EACA,IACCH,YAAY,KAAKf,aAAa,CAACK,KAAK,KAClCY,aAAa,IAAIE,kBAAkB,CAAE,EACtC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IACCJ,YAAY,KAAKf,aAAa,CAACM,SAAS,KACtCW,aAAa,IAAI,CAAEE,kBAAkB,CAAE,EACxC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA,IACCJ,YAAY,KAAKf,aAAa,CAACI,IAAI,IACnCU,OAAO,CAACO,IAAI,KAAKrB,aAAa,CAACI,IAAI,EAClC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA,IAAKY,UAAU,KAAKT,UAAU,CAACC,IAAI,IAAIM,OAAO,CAACQ,UAAU,KAAK,EAAE,EAAG;IAClE,OAAO,IAAI;EACZ;EAEA,IACCN,UAAU,KAAKT,UAAU,CAACJ,QAAQ,IAClCW,OAAO,CAACQ,UAAU,KAAK,UAAU,IACjCL,aAAa,EACZ;IACD,OAAO,IAAI;EACZ;EAEA,OAAO,KAAK;AACb"}
@@ -11,6 +11,7 @@ import { store as noticesStore } from '@wordpress/notices';
11
11
  * Internal dependencies
12
12
  */
13
13
  import { store as blockEditorStore } from '../../../store';
14
+ import { PATTERN_TYPES } from '../block-patterns-tab/utils';
14
15
 
15
16
  /**
16
17
  * Retrieves the block patterns inserter state.
@@ -53,7 +54,7 @@ const usePatternsState = (onInsert, rootClientId) => {
53
54
  createSuccessNotice
54
55
  } = useDispatch(noticesStore);
55
56
  const onClickPattern = useCallback((pattern, blocks) => {
56
- const patternBlocks = pattern.id && pattern.syncStatus !== 'unsynced' ? [createBlock('core/block', {
57
+ const patternBlocks = pattern.type === PATTERN_TYPES.user && pattern.syncStatus !== 'unsynced' ? [createBlock('core/block', {
57
58
  ref: pattern.id
58
59
  })] : blocks;
59
60
  onInsert((patternBlocks !== null && patternBlocks !== void 0 ? patternBlocks : []).map(block => cloneBlock(block)), pattern.name);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","cloneBlock","createBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","usePatternsState","onInsert","rootClientId","patternCategories","patterns","userPatternCategories","select","__experimentalGetAllowedPatterns","getSettings","__experimentalUserPatternCategories","__experimentalBlockPatternCategories","allCategories","categories","forEach","userCategory","find","existingCategory","name","push","createSuccessNotice","onClickPattern","pattern","blocks","patternBlocks","id","syncStatus","ref","map","block","title","type"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst {\n\t\t\t\t__experimentalUserPatternCategories,\n\t\t\t\t__experimentalBlockPatternCategories,\n\t\t\t} = getSettings();\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tuserPatternCategories: __experimentalUserPatternCategories,\n\t\t\t\tpatternCategories: __experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo( () => {\n\t\tconst categories = [ ...patternCategories ];\n\t\tuserPatternCategories?.forEach( ( userCategory ) => {\n\t\t\tif (\n\t\t\t\t! categories.find(\n\t\t\t\t\t( existingCategory ) =>\n\t\t\t\t\t\texistingCategory.name === userCategory.name\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategories.push( userCategory );\n\t\t\t}\n\t\t} );\n\t\treturn categories;\n\t}, [ patternCategories, userPatternCategories ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tconst patternBlocks =\n\t\t\t\tpattern.id && pattern.syncStatus !== 'unsynced'\n\t\t\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t\t\t: blocks;\n\t\t\tonInsert(\n\t\t\t\t( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'block-pattern-inserted-notice',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,UAAU,EAAEC,WAAW,QAAQ,mBAAmB;AAC3D,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASD,KAAK,IAAIE,gBAAgB,QAAQ,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CAAEC,QAAQ,EAAEC,YAAY,KAAM;EACtD,MAAM;IAAEC,iBAAiB;IAAEC,QAAQ;IAAEC;EAAsB,CAAC,GAAGX,SAAS,CACrEY,MAAM,IAAM;IACb,MAAM;MAAEC,gCAAgC;MAAEC;IAAY,CAAC,GACtDF,MAAM,CAAEP,gBAAiB,CAAC;IAC3B,MAAM;MACLU,mCAAmC;MACnCC;IACD,CAAC,GAAGF,WAAW,CAAC,CAAC;IACjB,OAAO;MACNJ,QAAQ,EAAEG,gCAAgC,CAAEL,YAAa,CAAC;MAC1DG,qBAAqB,EAAEI,mCAAmC;MAC1DN,iBAAiB,EAAEO;IACpB,CAAC;EACF,CAAC,EACD,CAAER,YAAY,CACf,CAAC;EAED,MAAMS,aAAa,GAAGrB,OAAO,CAAE,MAAM;IACpC,MAAMsB,UAAU,GAAG,CAAE,GAAGT,iBAAiB,CAAE;IAC3CE,qBAAqB,EAAEQ,OAAO,CAAIC,YAAY,IAAM;MACnD,IACC,CAAEF,UAAU,CAACG,IAAI,CACdC,gBAAgB,IACjBA,gBAAgB,CAACC,IAAI,KAAKH,YAAY,CAACG,IACzC,CAAC,EACA;QACDL,UAAU,CAACM,IAAI,CAAEJ,YAAa,CAAC;MAChC;IACD,CAAE,CAAC;IACH,OAAOF,UAAU;EAClB,CAAC,EAAE,CAAET,iBAAiB,EAAEE,qBAAqB,CAAG,CAAC;EAEjD,MAAM;IAAEc;EAAoB,CAAC,GAAG1B,WAAW,CAAEK,YAAa,CAAC;EAC3D,MAAMsB,cAAc,GAAG/B,WAAW,CACjC,CAAEgC,OAAO,EAAEC,MAAM,KAAM;IACtB,MAAMC,aAAa,GAClBF,OAAO,CAACG,EAAE,IAAIH,OAAO,CAACI,UAAU,KAAK,UAAU,GAC5C,CAAEjC,WAAW,CAAE,YAAY,EAAE;MAAEkC,GAAG,EAAEL,OAAO,CAACG;IAAG,CAAE,CAAC,CAAE,GACpDF,MAAM;IACVrB,QAAQ,CACP,CAAEsB,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGI,GAAG,CAAIC,KAAK,IAAMrC,UAAU,CAAEqC,KAAM,CAAE,CAAC,EAC/DP,OAAO,CAACJ,IACT,CAAC;IACDE,mBAAmB,CAClBvB,OAAO,EACN;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpC0B,OAAO,CAACQ,KACT,CAAC,EACD;MACCC,IAAI,EAAE,UAAU;MAChBN,EAAE,EAAE;IACL,CACD,CAAC;EACF,CAAC,EACD,CAAEL,mBAAmB,EAAElB,QAAQ,CAChC,CAAC;EAED,OAAO,CAAEG,QAAQ,EAAEO,aAAa,EAAES,cAAc,CAAE;AACnD,CAAC;AAED,eAAepB,gBAAgB"}
1
+ {"version":3,"names":["useCallback","useMemo","cloneBlock","createBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","PATTERN_TYPES","usePatternsState","onInsert","rootClientId","patternCategories","patterns","userPatternCategories","select","__experimentalGetAllowedPatterns","getSettings","__experimentalUserPatternCategories","__experimentalBlockPatternCategories","allCategories","categories","forEach","userCategory","find","existingCategory","name","push","createSuccessNotice","onClickPattern","pattern","blocks","patternBlocks","type","user","syncStatus","ref","id","map","block","title"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { PATTERN_TYPES } from '../block-patterns-tab/utils';\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst {\n\t\t\t\t__experimentalUserPatternCategories,\n\t\t\t\t__experimentalBlockPatternCategories,\n\t\t\t} = getSettings();\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tuserPatternCategories: __experimentalUserPatternCategories,\n\t\t\t\tpatternCategories: __experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo( () => {\n\t\tconst categories = [ ...patternCategories ];\n\t\tuserPatternCategories?.forEach( ( userCategory ) => {\n\t\t\tif (\n\t\t\t\t! categories.find(\n\t\t\t\t\t( existingCategory ) =>\n\t\t\t\t\t\texistingCategory.name === userCategory.name\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategories.push( userCategory );\n\t\t\t}\n\t\t} );\n\t\treturn categories;\n\t}, [ patternCategories, userPatternCategories ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tconst patternBlocks =\n\t\t\t\tpattern.type === PATTERN_TYPES.user &&\n\t\t\t\tpattern.syncStatus !== 'unsynced'\n\t\t\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t\t\t: blocks;\n\t\t\tonInsert(\n\t\t\t\t( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'block-pattern-inserted-notice',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,UAAU,EAAEC,WAAW,QAAQ,mBAAmB;AAC3D,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASD,KAAK,IAAIE,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,aAAa,QAAQ,6BAA6B;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CAAEC,QAAQ,EAAEC,YAAY,KAAM;EACtD,MAAM;IAAEC,iBAAiB;IAAEC,QAAQ;IAAEC;EAAsB,CAAC,GAAGZ,SAAS,CACrEa,MAAM,IAAM;IACb,MAAM;MAAEC,gCAAgC;MAAEC;IAAY,CAAC,GACtDF,MAAM,CAAER,gBAAiB,CAAC;IAC3B,MAAM;MACLW,mCAAmC;MACnCC;IACD,CAAC,GAAGF,WAAW,CAAC,CAAC;IACjB,OAAO;MACNJ,QAAQ,EAAEG,gCAAgC,CAAEL,YAAa,CAAC;MAC1DG,qBAAqB,EAAEI,mCAAmC;MAC1DN,iBAAiB,EAAEO;IACpB,CAAC;EACF,CAAC,EACD,CAAER,YAAY,CACf,CAAC;EAED,MAAMS,aAAa,GAAGtB,OAAO,CAAE,MAAM;IACpC,MAAMuB,UAAU,GAAG,CAAE,GAAGT,iBAAiB,CAAE;IAC3CE,qBAAqB,EAAEQ,OAAO,CAAIC,YAAY,IAAM;MACnD,IACC,CAAEF,UAAU,CAACG,IAAI,CACdC,gBAAgB,IACjBA,gBAAgB,CAACC,IAAI,KAAKH,YAAY,CAACG,IACzC,CAAC,EACA;QACDL,UAAU,CAACM,IAAI,CAAEJ,YAAa,CAAC;MAChC;IACD,CAAE,CAAC;IACH,OAAOF,UAAU;EAClB,CAAC,EAAE,CAAET,iBAAiB,EAAEE,qBAAqB,CAAG,CAAC;EAEjD,MAAM;IAAEc;EAAoB,CAAC,GAAG3B,WAAW,CAAEK,YAAa,CAAC;EAC3D,MAAMuB,cAAc,GAAGhC,WAAW,CACjC,CAAEiC,OAAO,EAAEC,MAAM,KAAM;IACtB,MAAMC,aAAa,GAClBF,OAAO,CAACG,IAAI,KAAKzB,aAAa,CAAC0B,IAAI,IACnCJ,OAAO,CAACK,UAAU,KAAK,UAAU,GAC9B,CAAEnC,WAAW,CAAE,YAAY,EAAE;MAAEoC,GAAG,EAAEN,OAAO,CAACO;IAAG,CAAE,CAAC,CAAE,GACpDN,MAAM;IACVrB,QAAQ,CACP,CAAEsB,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGM,GAAG,CAAIC,KAAK,IAAMxC,UAAU,CAAEwC,KAAM,CAAE,CAAC,EAC/DT,OAAO,CAACJ,IACT,CAAC;IACDE,mBAAmB,CAClBxB,OAAO,EACN;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpC2B,OAAO,CAACU,KACT,CAAC,EACD;MACCP,IAAI,EAAE,UAAU;MAChBI,EAAE,EAAE;IACL,CACD,CAAC;EACF,CAAC,EACD,CAAET,mBAAmB,EAAElB,QAAQ,CAChC,CAAC;EAED,OAAO,CAAEG,QAAQ,EAAEO,aAAa,EAAES,cAAc,CAAE;AACnD,CAAC;AAED,eAAepB,gBAAgB"}
@@ -2,22 +2,27 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { __unstableComposite as Composite, __unstableUseCompositeState as useCompositeState } from '@wordpress/components';
5
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
6
6
  import { __ } from '@wordpress/i18n';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
11
  import { MediaPreview } from './media-preview';
12
+ import { unlock } from '../../../lock-unlock';
13
+ const {
14
+ CompositeV2: Composite,
15
+ useCompositeStoreV2: useCompositeStore
16
+ } = unlock(componentsPrivateApis);
12
17
  function MediaList({
13
18
  mediaList,
14
19
  category,
15
20
  onClick,
16
21
  label = __('Media List')
17
22
  }) {
18
- const composite = useCompositeState();
23
+ const compositeStore = useCompositeStore();
19
24
  return createElement(Composite, {
20
- ...composite,
25
+ store: compositeStore,
21
26
  role: "listbox",
22
27
  className: "block-editor-inserter__media-list",
23
28
  "aria-label": label
@@ -25,8 +30,7 @@ function MediaList({
25
30
  key: media.id || media.sourceId || index,
26
31
  media: media,
27
32
  category: category,
28
- onClick: onClick,
29
- composite: composite
33
+ onClick: onClick
30
34
  })));
31
35
  }
32
36
  export default MediaList;
@@ -1 +1 @@
1
- {"version":3,"names":["__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__","MediaPreview","MediaList","mediaList","category","onClick","label","composite","createElement","role","className","map","media","index","key","id","sourceId"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { MediaPreview } from './media-preview';\n\nfunction MediaList( {\n\tmediaList,\n\tcategory,\n\tonClick,\n\tlabel = __( 'Media List' ),\n} ) {\n\tconst composite = useCompositeState();\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-inserter__media-list\"\n\t\t\taria-label={ label }\n\t\t>\n\t\t\t{ mediaList.map( ( media, index ) => (\n\t\t\t\t<MediaPreview\n\t\t\t\t\tkey={ media.id || media.sourceId || index }\n\t\t\t\t\tmedia={ media }\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nexport default MediaList;\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,mBAAmB,IAAIC,SAAS,EAChCC,2BAA2B,IAAIC,iBAAiB,QAC1C,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,SAASC,SAASA,CAAE;EACnBC,SAAS;EACTC,QAAQ;EACRC,OAAO;EACPC,KAAK,GAAGN,EAAE,CAAE,YAAa;AAC1B,CAAC,EAAG;EACH,MAAMO,SAAS,GAAGR,iBAAiB,CAAC,CAAC;EACrC,OACCS,aAAA,CAACX,SAAS;IAAA,GACJU,SAAS;IACdE,IAAI,EAAC,SAAS;IACdC,SAAS,EAAC,mCAAmC;IAC7C,cAAaJ;EAAO,GAElBH,SAAS,CAACQ,GAAG,CAAE,CAAEC,KAAK,EAAEC,KAAK,KAC9BL,aAAA,CAACP,YAAY;IACZa,GAAG,EAAGF,KAAK,CAACG,EAAE,IAAIH,KAAK,CAACI,QAAQ,IAAIH,KAAO;IAC3CD,KAAK,EAAGA,KAAO;IACfR,QAAQ,EAAGA,QAAU;IACrBC,OAAO,EAAGA,OAAS;IACnBE,SAAS,EAAGA;EAAW,CACvB,CACA,CACQ,CAAC;AAEd;AAEA,eAAeL,SAAS"}
1
+ {"version":3,"names":["privateApis","componentsPrivateApis","__","MediaPreview","unlock","CompositeV2","Composite","useCompositeStoreV2","useCompositeStore","MediaList","mediaList","category","onClick","label","compositeStore","createElement","store","role","className","map","media","index","key","id","sourceId"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { MediaPreview } from './media-preview';\nimport { unlock } from '../../../lock-unlock';\n\nconst { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =\n\tunlock( componentsPrivateApis );\n\nfunction MediaList( {\n\tmediaList,\n\tcategory,\n\tonClick,\n\tlabel = __( 'Media List' ),\n} ) {\n\tconst compositeStore = useCompositeStore();\n\treturn (\n\t\t<Composite\n\t\t\tstore={ compositeStore }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-inserter__media-list\"\n\t\t\taria-label={ label }\n\t\t>\n\t\t\t{ mediaList.map( ( media, index ) => (\n\t\t\t\t<MediaPreview\n\t\t\t\t\tkey={ media.id || media.sourceId || index }\n\t\t\t\t\tmedia={ media }\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nexport default MediaList;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,qBAAqB,QAAQ,uBAAuB;AAC5E,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,sBAAsB;AAE7C,MAAM;EAAEC,WAAW,EAAEC,SAAS;EAAEC,mBAAmB,EAAEC;AAAkB,CAAC,GACvEJ,MAAM,CAAEH,qBAAsB,CAAC;AAEhC,SAASQ,SAASA,CAAE;EACnBC,SAAS;EACTC,QAAQ;EACRC,OAAO;EACPC,KAAK,GAAGX,EAAE,CAAE,YAAa;AAC1B,CAAC,EAAG;EACH,MAAMY,cAAc,GAAGN,iBAAiB,CAAC,CAAC;EAC1C,OACCO,aAAA,CAACT,SAAS;IACTU,KAAK,EAAGF,cAAgB;IACxBG,IAAI,EAAC,SAAS;IACdC,SAAS,EAAC,mCAAmC;IAC7C,cAAaL;EAAO,GAElBH,SAAS,CAACS,GAAG,CAAE,CAAEC,KAAK,EAAEC,KAAK,KAC9BN,aAAA,CAACZ,YAAY;IACZmB,GAAG,EAAGF,KAAK,CAACG,EAAE,IAAIH,KAAK,CAACI,QAAQ,IAAIH,KAAO;IAC3CD,KAAK,EAAGA,KAAO;IACfT,QAAQ,EAAGA,QAAU;IACrBC,OAAO,EAAGA;EAAS,CACnB,CACA,CACQ,CAAC;AAEd;AAEA,eAAeH,SAAS"}
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { __unstableCompositeItem as CompositeItem, Tooltip, DropdownMenu, MenuGroup, MenuItem, Spinner, Modal, Flex, FlexItem, Button, __experimentalVStack as VStack } from '@wordpress/components';
10
+ import { Tooltip, DropdownMenu, MenuGroup, MenuItem, Spinner, Modal, Flex, FlexItem, Button, privateApis as componentsPrivateApis, __experimentalVStack as VStack } from '@wordpress/components';
11
11
  import { __, sprintf } from '@wordpress/i18n';
12
12
  import { useMemo, useCallback, useState } from '@wordpress/element';
13
13
  import { cloneBlock } from '@wordpress/blocks';
@@ -22,12 +22,16 @@ import { isBlobURL } from '@wordpress/blob';
22
22
  import InserterDraggableBlocks from '../../inserter-draggable-blocks';
23
23
  import { getBlockAndPreviewFromMedia } from './utils';
24
24
  import { store as blockEditorStore } from '../../../store';
25
+ import { unlock } from '../../../lock-unlock';
25
26
  const ALLOWED_MEDIA_TYPES = ['image'];
26
27
  const MAXIMUM_TITLE_LENGTH = 25;
27
28
  const MEDIA_OPTIONS_POPOVER_PROPS = {
28
29
  position: 'bottom left',
29
30
  className: 'block-editor-inserter__media-list__item-preview-options__popover'
30
31
  };
32
+ const {
33
+ CompositeItemV2: CompositeItem
34
+ } = unlock(componentsPrivateApis);
31
35
  function MediaPreviewOptions({
32
36
  category,
33
37
  media
@@ -72,7 +76,6 @@ function InsertExternalImageModal({
72
76
  export function MediaPreview({
73
77
  media,
74
78
  onClick,
75
- composite,
76
79
  category
77
80
  }) {
78
81
  const [showExternalUploadModal, setShowExternalUploadModal] = useState(false);
@@ -164,26 +167,26 @@ export function MediaPreview({
164
167
  draggable: draggable,
165
168
  onDragStart: onDragStart,
166
169
  onDragEnd: onDragEnd
167
- }, createElement(Tooltip, {
168
- text: truncatedTitle || title
169
170
  }, createElement("div", {
170
171
  onMouseEnter: onMouseEnter,
171
172
  onMouseLeave: onMouseLeave
173
+ }, createElement(Tooltip, {
174
+ text: truncatedTitle || title
172
175
  }, createElement(CompositeItem, {
173
- role: "option",
174
- as: "div",
175
- ...composite,
176
- className: "block-editor-inserter__media-list__item",
177
- onClick: () => onMediaInsert(block),
178
- "aria-label": title
176
+ render: createElement("div", {
177
+ "aria-label": title,
178
+ role: "option",
179
+ className: "block-editor-inserter__media-list__item"
180
+ }),
181
+ onClick: () => onMediaInsert(block)
179
182
  }, createElement("div", {
180
183
  className: "block-editor-inserter__media-list__item-preview"
181
184
  }, preview, isInserting && createElement("div", {
182
185
  className: "block-editor-inserter__media-list__item-preview-spinner"
183
- }, createElement(Spinner, null)))), !isInserting && createElement(MediaPreviewOptions, {
186
+ }, createElement(Spinner, null))))), !isInserting && createElement(MediaPreviewOptions, {
184
187
  category: category,
185
188
  media: media
186
- }))))), showExternalUploadModal && createElement(InsertExternalImageModal, {
189
+ })))), showExternalUploadModal && createElement(InsertExternalImageModal, {
187
190
  onClose: () => setShowExternalUploadModal(false),
188
191
  onSubmit: () => {
189
192
  onClick(cloneBlock(block));
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__unstableCompositeItem","CompositeItem","Tooltip","DropdownMenu","MenuGroup","MenuItem","Spinner","Modal","Flex","FlexItem","Button","__experimentalVStack","VStack","__","sprintf","useMemo","useCallback","useState","cloneBlock","moreVertical","external","useSelect","useDispatch","store","noticesStore","isBlobURL","InserterDraggableBlocks","getBlockAndPreviewFromMedia","blockEditorStore","ALLOWED_MEDIA_TYPES","MAXIMUM_TITLE_LENGTH","MEDIA_OPTIONS_POPOVER_PROPS","position","className","MediaPreviewOptions","category","media","getReportUrl","reportUrl","createElement","label","popoverProps","icon","onClick","window","open","focus","mediaType","InsertExternalImageModal","onClose","onSubmit","title","onRequestClose","spacing","justify","expanded","variant","MediaPreview","composite","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","role","as"],"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\t__unstableCompositeItem as CompositeItem,\n\tTooltip,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tSpinner,\n\tModal,\n\tFlex,\n\tFlexItem,\n\tButton,\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';\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\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, composite, 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\tconst title = media.title?.rendered || media.title;\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={ true } 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<Tooltip text={ truncatedTitle || title }>\n\t\t\t\t\t\t\t{ /* Adding `is-hovered` class to the wrapper element is needed\n\t\t\t\t\t\t\tbecause the options Popover is rendered outside of this node. */ }\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tas=\"div\"\n\t\t\t\t\t\t\t\t\t{ ...composite }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-list__item\"\n\t\t\t\t\t\t\t\t\tonClick={ () => onMediaInsert( block ) }\n\t\t\t\t\t\t\t\t\taria-label={ title }\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\t{ ! isInserting && (\n\t\t\t\t\t\t\t\t\t<MediaPreviewOptions\n\t\t\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\t\t\tmedia={ media }\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</div>\n\t\t\t\t\t\t</Tooltip>\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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"}
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\tconst title = media.title?.rendered || media.title;\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={ true } 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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"}
@@ -18,7 +18,8 @@ import { useSelect } from '@wordpress/data';
18
18
  import Tips from './tips';
19
19
  import InserterPreviewPanel from './preview-panel';
20
20
  import BlockTypesTab from './block-types-tab';
21
- import BlockPatternsTabs, { BlockPatternsCategoryDialog } from './block-patterns-tab';
21
+ import BlockPatternsTab from './block-patterns-tab';
22
+ import { PatternCategoryPreviewPanel } from './block-patterns-tab/pattern-category-preview-panel';
22
23
  import { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';
23
24
  import InserterSearchResults from './search-results';
24
25
  import useDebouncedInput from './hooks/use-debounced-input';
@@ -103,7 +104,7 @@ function InserterMenu({
103
104
  }, createElement(VisuallyHidden, {
104
105
  as: "h2"
105
106
  }, __('A tip for using the block editor')), createElement(Tips, null))), [destinationRootClientId, onInsert, onHover, showMostUsedBlocks, showInserterHelpPanel]);
106
- const patternsTab = useMemo(() => createElement(BlockPatternsTabs, {
107
+ const patternsTab = useMemo(() => createElement(BlockPatternsTab, {
107
108
  rootClientId: destinationRootClientId,
108
109
  onInsert: onInsertPattern,
109
110
  onSelectCategory: onClickPatternCategory,
@@ -184,7 +185,7 @@ function InserterMenu({
184
185
  category: selectedMediaCategory
185
186
  }), showInserterHelpPanel && hoveredItem && createElement(InserterPreviewPanel, {
186
187
  item: hoveredItem
187
- }), showPatternPanel && createElement(BlockPatternsCategoryDialog, {
188
+ }), showPatternPanel && createElement(PatternCategoryPreviewPanel, {
188
189
  rootClientId: destinationRootClientId,
189
190
  onInsert: onInsertPattern,
190
191
  onHover: onHoverPattern,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTabs","BlockPatternsCategoryDialog","MediaTab","MediaCategoryDialog","useMediaCategories","InserterSearchResults","useDebouncedInput","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","ref","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","inserterItems","select","__experimentalGetAllowedPatterns","getInserterItems","length","hasReusableBlocks","some","category","mediaCategories","showMedia","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onHoverPattern","onClickPatternCategory","patternCategory","filter","blocksTab","createElement","Fragment","className","as","patternsTab","onSelectCategory","selectedCategory","mediaTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","showMediaPanel","handleSetSelectedTab","value","__nextHasNoMarginBottom","onChange","label","placeholder","showBlockDirectory","showReusableBlocks","showTitlesAsTooltip"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTabs, {\n\tBlockPatternsCategoryDialog,\n} from './block-patterns-tab';\nimport { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useDebouncedInput from './hooks/use-debounced-input';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst [ selectedTab, setSelectedTab ] = useState( null );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst { showPatterns, inserterItems } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getInserterItems } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\tinserterItems: getInserterItems( destinationRootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\tconst hasReusableBlocks = useMemo( () => {\n\t\treturn inserterItems.some(\n\t\t\t( { category } ) => category === 'reusable'\n\t\t);\n\t}, [ inserterItems ] );\n\n\tconst mediaCategories = useMediaCategories( destinationRootClientId );\n\tconst showMedia = !! mediaCategories.length;\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onHoverPattern = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t},\n\t\t[ onToggleInsertionPoint ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTabs\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst mediaTab = useMemo(\n\t\t() => (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tselectedMediaCategory,\n\t\t\tsetSelectedMediaCategory,\n\t\t]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t} else if ( tab.name === 'media' ) {\n\t\t\t\treturn mediaTab;\n\t\t\t}\n\t\t},\n\t\t[ blocksTab, patternsTab, mediaTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\tselectedPatternCategory;\n\tconst showAsTabs =\n\t\t! delayedFilterValue &&\n\t\t( showPatterns || hasReusableBlocks || showMedia );\n\tconst showMediaPanel =\n\t\tselectedTab === 'media' &&\n\t\t! delayedFilterValue &&\n\t\tselectedMediaCategory;\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) setHoveredItem( null );\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tonHoverPattern={ onHoverPattern }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tshowMedia={ showMedia }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! delayedFilterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showMediaPanel && (\n\t\t\t\t<MediaCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t\t{ showPatternPanel && (\n\t\t\t\t<BlockPatternsCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTab","PatternCategoryPreviewPanel","MediaTab","MediaCategoryDialog","useMediaCategories","InserterSearchResults","useDebouncedInput","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","ref","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","inserterItems","select","__experimentalGetAllowedPatterns","getInserterItems","length","hasReusableBlocks","some","category","mediaCategories","showMedia","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onHoverPattern","onClickPatternCategory","patternCategory","filter","blocksTab","createElement","Fragment","className","as","patternsTab","onSelectCategory","selectedCategory","mediaTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","showMediaPanel","handleSetSelectedTab","value","__nextHasNoMarginBottom","onChange","label","placeholder","showBlockDirectory","showReusableBlocks","showTitlesAsTooltip"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTab from './block-patterns-tab';\nimport { PatternCategoryPreviewPanel } from './block-patterns-tab/pattern-category-preview-panel';\nimport { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useDebouncedInput from './hooks/use-debounced-input';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst [ selectedTab, setSelectedTab ] = useState( null );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst { showPatterns, inserterItems } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getInserterItems } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\tinserterItems: getInserterItems( destinationRootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\tconst hasReusableBlocks = useMemo( () => {\n\t\treturn inserterItems.some(\n\t\t\t( { category } ) => category === 'reusable'\n\t\t);\n\t}, [ inserterItems ] );\n\n\tconst mediaCategories = useMediaCategories( destinationRootClientId );\n\tconst showMedia = !! mediaCategories.length;\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onHoverPattern = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t},\n\t\t[ onToggleInsertionPoint ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst mediaTab = useMemo(\n\t\t() => (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t/>\n\t\t),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tselectedMediaCategory,\n\t\t\tsetSelectedMediaCategory,\n\t\t]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t} else if ( tab.name === 'media' ) {\n\t\t\t\treturn mediaTab;\n\t\t\t}\n\t\t},\n\t\t[ blocksTab, patternsTab, mediaTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\tselectedPatternCategory;\n\tconst showAsTabs =\n\t\t! delayedFilterValue &&\n\t\t( showPatterns || hasReusableBlocks || showMedia );\n\tconst showMediaPanel =\n\t\tselectedTab === 'media' &&\n\t\t! delayedFilterValue &&\n\t\tselectedMediaCategory;\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) setHoveredItem( null );\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\tonHoverPattern={ onHoverPattern }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tshowMedia={ showMedia }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! delayedFilterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showMediaPanel && (\n\t\t\t\t<MediaCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t\t{ showPatternPanel && (\n\t\t\t\t<PatternCategoryPreviewPanel\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"],"mappings":"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"}