@wordpress/block-editor 10.5.0 → 11.1.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 (716) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +2 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/alignment-control/ui.js +1 -7
  8. package/build/components/alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +4 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-card/index.js +51 -3
  12. package/build/components/block-card/index.js.map +1 -1
  13. package/build/components/block-draggable/index.native.js +46 -39
  14. package/build/components/block-draggable/index.native.js.map +1 -1
  15. package/build/components/block-edit/edit.js +4 -3
  16. package/build/components/block-edit/edit.js.map +1 -1
  17. package/build/components/block-edit/edit.native.js +4 -7
  18. package/build/components/block-edit/edit.native.js.map +1 -1
  19. package/build/components/block-icon/index.js +4 -2
  20. package/build/components/block-icon/index.js.map +1 -1
  21. package/build/components/block-inspector/index.js +90 -37
  22. package/build/components/block-inspector/index.js.map +1 -1
  23. package/build/components/block-list/block-list-context.native.js +5 -8
  24. package/build/components/block-list/block-list-context.native.js.map +1 -1
  25. package/build/components/block-list/block.js +55 -24
  26. package/build/components/block-list/block.js.map +1 -1
  27. package/build/components/block-list/block.native.js +61 -28
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list-appender/index.js +46 -34
  30. package/build/components/block-list-appender/index.js.map +1 -1
  31. package/build/components/block-list-appender/index.native.js +39 -34
  32. package/build/components/block-list-appender/index.native.js.map +1 -1
  33. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +30 -22
  34. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  35. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  36. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +16 -8
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +33 -11
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-preview/auto.js +9 -3
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-preview/index.js +5 -9
  44. package/build/components/block-preview/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-styles/index.native.js +1 -3
  48. package/build/components/block-styles/index.native.js.map +1 -1
  49. package/build/components/block-styles/utils.js +7 -10
  50. package/build/components/block-styles/utils.js.map +1 -1
  51. package/build/components/block-toolbar/index.js +5 -1
  52. package/build/components/block-toolbar/index.js.map +1 -1
  53. package/build/components/block-toolbar/index.native.js +6 -8
  54. package/build/components/block-toolbar/index.native.js.map +1 -1
  55. package/build/components/block-tools/insertion-point.js +8 -49
  56. package/build/components/block-tools/insertion-point.js.map +1 -1
  57. package/build/components/block-tools/selected-block-popover.js +1 -3
  58. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  59. package/build/components/block-variation-picker/index.js +2 -3
  60. package/build/components/block-variation-picker/index.js.map +1 -1
  61. package/build/components/colors/utils.js +2 -6
  62. package/build/components/colors/utils.js.map +1 -1
  63. package/build/components/colors-gradients/control.js +0 -3
  64. package/build/components/colors-gradients/control.js.map +1 -1
  65. package/build/components/colors-gradients/dropdown.js +0 -2
  66. package/build/components/colors-gradients/dropdown.js.map +1 -1
  67. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -19
  68. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  69. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -3
  70. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  71. package/build/components/copy-handler/index.js +37 -9
  72. package/build/components/copy-handler/index.js.map +1 -1
  73. package/build/components/font-sizes/fluid-utils.js +5 -2
  74. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  75. package/build/components/font-sizes/utils.js +10 -4
  76. package/build/components/font-sizes/utils.js.map +1 -1
  77. package/build/components/font-sizes/with-font-sizes.js +11 -6
  78. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  79. package/build/components/gradients/use-gradient.js +2 -8
  80. package/build/components/gradients/use-gradient.js.map +1 -1
  81. package/build/components/height-control/index.js +115 -0
  82. package/build/components/height-control/index.js.map +1 -0
  83. package/build/components/iframe/index.js +22 -101
  84. package/build/components/iframe/index.js.map +1 -1
  85. package/build/components/iframe/use-compatibility-styles.js +93 -0
  86. package/build/components/iframe/use-compatibility-styles.js.map +1 -0
  87. package/build/components/image-editor/use-save-image.js +2 -0
  88. package/build/components/image-editor/use-save-image.js.map +1 -1
  89. package/build/components/image-editor/zoom-dropdown.js +1 -0
  90. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  91. package/build/components/index.js +9 -0
  92. package/build/components/index.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +25 -7
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  96. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  97. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  98. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab.js +25 -46
  100. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  101. package/build/components/inserter/block-types-tab.js +3 -1
  102. package/build/components/inserter/block-types-tab.js.map +1 -1
  103. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  104. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  105. package/build/components/inserter/hooks/use-insertion-point.js +4 -3
  106. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  107. package/build/components/inserter/index.js +20 -6
  108. package/build/components/inserter/index.js.map +1 -1
  109. package/build/components/inserter/index.native.js +3 -4
  110. package/build/components/inserter/index.native.js.map +1 -1
  111. package/build/components/inserter/media-tab/hooks.js +106 -0
  112. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  113. package/build/components/inserter/media-tab/index.js +32 -0
  114. package/build/components/inserter/media-tab/index.js.map +1 -0
  115. package/build/components/inserter/media-tab/media-list.js +100 -0
  116. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  117. package/build/components/inserter/media-tab/media-panel.js +96 -0
  118. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  119. package/build/components/inserter/media-tab/media-tab.js +120 -0
  120. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  121. package/build/components/inserter/media-tab/utils.js +54 -0
  122. package/build/components/inserter/media-tab/utils.js.map +1 -0
  123. package/build/components/inserter/menu.js +35 -12
  124. package/build/components/inserter/menu.js.map +1 -1
  125. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  126. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  127. package/build/components/inserter/quick-inserter.js +7 -3
  128. package/build/components/inserter/quick-inserter.js.map +1 -1
  129. package/build/components/inserter/search-items.js +15 -14
  130. package/build/components/inserter/search-items.js.map +1 -1
  131. package/build/components/inserter/search-results.js +7 -3
  132. package/build/components/inserter/search-results.js.map +1 -1
  133. package/build/components/inserter/tabs.js +16 -2
  134. package/build/components/inserter/tabs.js.map +1 -1
  135. package/build/components/inserter-list-item/index.js +4 -1
  136. package/build/components/inserter-list-item/index.js.map +1 -1
  137. package/build/components/inspector-controls/groups.js +2 -0
  138. package/build/components/inspector-controls/groups.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  140. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  141. package/build/components/inspector-controls-tabs/index.js +71 -0
  142. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  143. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  144. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  145. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  146. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  147. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  148. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  149. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  150. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  151. package/build/components/inspector-controls-tabs/utils.js +37 -0
  152. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  153. package/build/components/link-control/index.js +1 -0
  154. package/build/components/link-control/index.js.map +1 -1
  155. package/build/components/link-control/search-input.js +0 -1
  156. package/build/components/link-control/search-input.js.map +1 -1
  157. package/build/components/link-control/use-internal-input-value.js +3 -3
  158. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  159. package/build/components/list-view/block-select-button.js +1 -1
  160. package/build/components/list-view/block-select-button.js.map +1 -1
  161. package/build/components/list-view/block.js +5 -2
  162. package/build/components/list-view/block.js.map +1 -1
  163. package/build/components/list-view/branch.js +13 -12
  164. package/build/components/list-view/branch.js.map +1 -1
  165. package/build/components/media-upload/index.native.js +2 -3
  166. package/build/components/media-upload/index.native.js.map +1 -1
  167. package/build/components/off-canvas-editor/appender.js +99 -0
  168. package/build/components/off-canvas-editor/appender.js.map +1 -0
  169. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  170. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  171. package/build/components/off-canvas-editor/block-select-button.js +3 -2
  172. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  173. package/build/components/off-canvas-editor/block.js +82 -38
  174. package/build/components/off-canvas-editor/block.js.map +1 -1
  175. package/build/components/off-canvas-editor/branch.js +3 -5
  176. package/build/components/off-canvas-editor/branch.js.map +1 -1
  177. package/build/components/off-canvas-editor/index.js +24 -11
  178. package/build/components/off-canvas-editor/index.js.map +1 -1
  179. package/build/components/off-canvas-editor/leaf.js +1 -1
  180. package/build/components/off-canvas-editor/leaf.js.map +1 -1
  181. package/build/components/off-canvas-editor/link-ui.js +185 -0
  182. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  183. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  184. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  185. package/build/components/off-canvas-editor/use-inserted-block.js +58 -0
  186. package/build/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  187. package/build/components/responsive-block-control/label.js.map +1 -1
  188. package/build/components/rich-text/format-edit.js +12 -10
  189. package/build/components/rich-text/format-edit.js.map +1 -1
  190. package/build/components/rich-text/format-toolbar/index.js +8 -4
  191. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  192. package/build/components/rich-text/index.js +3 -3
  193. package/build/components/rich-text/index.js.map +1 -1
  194. package/build/components/rich-text/index.native.js +0 -2
  195. package/build/components/rich-text/index.native.js.map +1 -1
  196. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  197. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  198. package/build/components/rich-text/use-paste-handler.js +21 -12
  199. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  200. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  201. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  202. package/build/components/rich-text/utils.js +1 -19
  203. package/build/components/rich-text/utils.js.map +1 -1
  204. package/build/components/spacing-sizes-control/index.js +0 -1
  205. package/build/components/spacing-sizes-control/index.js.map +1 -1
  206. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  207. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  208. package/build/components/spacing-sizes-control/utils.js +1 -1
  209. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  210. package/build/components/typewriter/index.js +1 -1
  211. package/build/components/typewriter/index.js.map +1 -1
  212. package/build/components/ungroup-button/index.native.js +4 -2
  213. package/build/components/ungroup-button/index.native.js.map +1 -1
  214. package/build/components/url-input/index.js +46 -43
  215. package/build/components/url-input/index.js.map +1 -1
  216. package/build/components/url-popover/image-url-input-ui.js +2 -2
  217. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  218. package/build/components/use-block-display-information/index.js +8 -4
  219. package/build/components/use-block-display-information/index.js.map +1 -1
  220. package/build/components/use-setting/index.js +9 -1
  221. package/build/components/use-setting/index.js.map +1 -1
  222. package/build/components/writing-flow/index.js +1 -1
  223. package/build/components/writing-flow/index.js.map +1 -1
  224. package/build/hooks/border.js +0 -1
  225. package/build/hooks/border.js.map +1 -1
  226. package/build/hooks/child-layout.js +209 -0
  227. package/build/hooks/child-layout.js.map +1 -0
  228. package/build/hooks/color-panel.js +0 -1
  229. package/build/hooks/color-panel.js.map +1 -1
  230. package/build/hooks/color.js +1 -2
  231. package/build/hooks/color.js.map +1 -1
  232. package/build/hooks/content-lock-ui.js +1 -1
  233. package/build/hooks/content-lock-ui.js.map +1 -1
  234. package/build/hooks/dimensions.js +25 -7
  235. package/build/hooks/dimensions.js.map +1 -1
  236. package/build/hooks/font-family.js +4 -4
  237. package/build/hooks/font-family.js.map +1 -1
  238. package/build/hooks/font-size.js +5 -3
  239. package/build/hooks/font-size.js.map +1 -1
  240. package/build/hooks/layout.js +57 -1
  241. package/build/hooks/layout.js.map +1 -1
  242. package/build/hooks/min-height.js +4 -10
  243. package/build/hooks/min-height.js.map +1 -1
  244. package/build/hooks/use-typography-props.js +11 -8
  245. package/build/hooks/use-typography-props.js.map +1 -1
  246. package/build/store/reducer.js +411 -274
  247. package/build/store/reducer.js.map +1 -1
  248. package/build/store/selectors.js +58 -48
  249. package/build/store/selectors.js.map +1 -1
  250. package/build/utils/pasting.js +6 -11
  251. package/build/utils/pasting.js.map +1 -1
  252. package/build/utils/sorting.js +63 -0
  253. package/build/utils/sorting.js.map +1 -0
  254. package/build-module/autocompleters/block.js +2 -6
  255. package/build-module/autocompleters/block.js.map +1 -1
  256. package/build-module/autocompleters/link.js +2 -0
  257. package/build-module/autocompleters/link.js.map +1 -1
  258. package/build-module/components/alignment-control/ui.js +1 -6
  259. package/build-module/components/alignment-control/ui.js.map +1 -1
  260. package/build-module/components/block-alignment-control/use-available-alignments.js +4 -3
  261. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  262. package/build-module/components/block-card/index.js +45 -3
  263. package/build-module/components/block-card/index.js.map +1 -1
  264. package/build-module/components/block-draggable/index.native.js +40 -31
  265. package/build-module/components/block-draggable/index.native.js.map +1 -1
  266. package/build-module/components/block-edit/edit.js +4 -2
  267. package/build-module/components/block-edit/edit.js.map +1 -1
  268. package/build-module/components/block-edit/edit.native.js +4 -6
  269. package/build-module/components/block-edit/edit.native.js.map +1 -1
  270. package/build-module/components/block-icon/index.js +4 -2
  271. package/build-module/components/block-icon/index.js.map +1 -1
  272. package/build-module/components/block-inspector/index.js +87 -34
  273. package/build-module/components/block-inspector/index.js.map +1 -1
  274. package/build-module/components/block-list/block-list-context.native.js +5 -8
  275. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  276. package/build-module/components/block-list/block.js +55 -25
  277. package/build-module/components/block-list/block.js.map +1 -1
  278. package/build-module/components/block-list/block.native.js +61 -28
  279. package/build-module/components/block-list/block.native.js.map +1 -1
  280. package/build-module/components/block-list-appender/index.js +46 -34
  281. package/build-module/components/block-list-appender/index.js.map +1 -1
  282. package/build-module/components/block-list-appender/index.native.js +39 -32
  283. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  284. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +31 -24
  285. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  286. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  287. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  288. package/build-module/components/block-pattern-setup/index.js +16 -8
  289. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  290. package/build-module/components/block-patterns-list/index.js +35 -13
  291. package/build-module/components/block-patterns-list/index.js.map +1 -1
  292. package/build-module/components/block-preview/auto.js +9 -3
  293. package/build-module/components/block-preview/auto.js.map +1 -1
  294. package/build-module/components/block-preview/index.js +5 -8
  295. package/build-module/components/block-preview/index.js.map +1 -1
  296. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  297. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  298. package/build-module/components/block-styles/index.native.js +1 -2
  299. package/build-module/components/block-styles/index.native.js.map +1 -1
  300. package/build-module/components/block-styles/utils.js +7 -9
  301. package/build-module/components/block-styles/utils.js.map +1 -1
  302. package/build-module/components/block-toolbar/index.js +6 -2
  303. package/build-module/components/block-toolbar/index.js.map +1 -1
  304. package/build-module/components/block-toolbar/index.native.js +6 -8
  305. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  306. package/build-module/components/block-tools/insertion-point.js +8 -49
  307. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  308. package/build-module/components/block-tools/selected-block-popover.js +1 -2
  309. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  310. package/build-module/components/block-variation-picker/index.js +2 -3
  311. package/build-module/components/block-variation-picker/index.js.map +1 -1
  312. package/build-module/components/colors/utils.js +3 -7
  313. package/build-module/components/colors/utils.js.map +1 -1
  314. package/build-module/components/colors-gradients/control.js +0 -3
  315. package/build-module/components/colors-gradients/control.js.map +1 -1
  316. package/build-module/components/colors-gradients/dropdown.js +0 -2
  317. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  318. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +4 -19
  319. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  320. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  321. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  322. package/build-module/components/copy-handler/index.js +38 -10
  323. package/build-module/components/copy-handler/index.js.map +1 -1
  324. package/build-module/components/font-sizes/fluid-utils.js +5 -2
  325. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  326. package/build-module/components/font-sizes/utils.js +11 -5
  327. package/build-module/components/font-sizes/utils.js.map +1 -1
  328. package/build-module/components/font-sizes/with-font-sizes.js +12 -7
  329. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  330. package/build-module/components/gradients/use-gradient.js +2 -7
  331. package/build-module/components/gradients/use-gradient.js.map +1 -1
  332. package/build-module/components/height-control/index.js +103 -0
  333. package/build-module/components/height-control/index.js.map +1 -0
  334. package/build-module/components/iframe/index.js +21 -101
  335. package/build-module/components/iframe/index.js.map +1 -1
  336. package/build-module/components/iframe/use-compatibility-styles.js +85 -0
  337. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -0
  338. package/build-module/components/image-editor/use-save-image.js +2 -0
  339. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  340. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  341. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  342. package/build-module/components/index.js +1 -0
  343. package/build-module/components/index.js.map +1 -1
  344. package/build-module/components/inner-blocks/index.js +27 -9
  345. package/build-module/components/inner-blocks/index.js.map +1 -1
  346. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  347. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  348. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  349. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  350. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  351. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  352. package/build-module/components/inserter/block-types-tab.js +3 -2
  353. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  354. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  355. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  356. package/build-module/components/inserter/hooks/use-insertion-point.js +4 -3
  357. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  358. package/build-module/components/inserter/index.js +20 -6
  359. package/build-module/components/inserter/index.js.map +1 -1
  360. package/build-module/components/inserter/index.native.js +3 -5
  361. package/build-module/components/inserter/index.native.js.map +1 -1
  362. package/build-module/components/inserter/media-tab/hooks.js +92 -0
  363. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  364. package/build-module/components/inserter/media-tab/index.js +4 -0
  365. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  366. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  367. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  368. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  369. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  370. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  371. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  372. package/build-module/components/inserter/media-tab/utils.js +45 -0
  373. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  374. package/build-module/components/inserter/menu.js +33 -12
  375. package/build-module/components/inserter/menu.js.map +1 -1
  376. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  377. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  378. package/build-module/components/inserter/quick-inserter.js +7 -3
  379. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  380. package/build-module/components/inserter/search-items.js +15 -13
  381. package/build-module/components/inserter/search-items.js.map +1 -1
  382. package/build-module/components/inserter/search-results.js +7 -4
  383. package/build-module/components/inserter/search-results.js.map +1 -1
  384. package/build-module/components/inserter/tabs.js +15 -2
  385. package/build-module/components/inserter/tabs.js.map +1 -1
  386. package/build-module/components/inserter-list-item/index.js +5 -2
  387. package/build-module/components/inserter-list-item/index.js.map +1 -1
  388. package/build-module/components/inspector-controls/groups.js +2 -0
  389. package/build-module/components/inspector-controls/groups.js.map +1 -1
  390. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  391. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  392. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  393. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  394. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  395. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  396. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  397. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  398. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  399. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  400. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  401. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  402. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  403. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  404. package/build-module/components/link-control/index.js +1 -0
  405. package/build-module/components/link-control/index.js.map +1 -1
  406. package/build-module/components/link-control/search-input.js +0 -1
  407. package/build-module/components/link-control/search-input.js.map +1 -1
  408. package/build-module/components/link-control/use-internal-input-value.js +3 -3
  409. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  410. package/build-module/components/list-view/block-select-button.js +1 -1
  411. package/build-module/components/list-view/block-select-button.js.map +1 -1
  412. package/build-module/components/list-view/block.js +5 -2
  413. package/build-module/components/list-view/block.js.map +1 -1
  414. package/build-module/components/list-view/branch.js +12 -11
  415. package/build-module/components/list-view/branch.js.map +1 -1
  416. package/build-module/components/media-upload/index.native.js +2 -4
  417. package/build-module/components/media-upload/index.native.js.map +1 -1
  418. package/build-module/components/off-canvas-editor/appender.js +83 -0
  419. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  420. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  421. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  422. package/build-module/components/off-canvas-editor/block-select-button.js +3 -2
  423. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  424. package/build-module/components/off-canvas-editor/block.js +83 -41
  425. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  426. package/build-module/components/off-canvas-editor/branch.js +3 -4
  427. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  428. package/build-module/components/off-canvas-editor/index.js +24 -12
  429. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  430. package/build-module/components/off-canvas-editor/leaf.js +1 -1
  431. package/build-module/components/off-canvas-editor/leaf.js.map +1 -1
  432. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  433. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  434. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  435. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  436. package/build-module/components/off-canvas-editor/use-inserted-block.js +47 -0
  437. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  438. package/build-module/components/responsive-block-control/label.js +1 -2
  439. package/build-module/components/responsive-block-control/label.js.map +1 -1
  440. package/build-module/components/rich-text/format-edit.js +12 -9
  441. package/build-module/components/rich-text/format-edit.js.map +1 -1
  442. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  443. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  444. package/build-module/components/rich-text/index.js +2 -3
  445. package/build-module/components/rich-text/index.js.map +1 -1
  446. package/build-module/components/rich-text/index.native.js +0 -2
  447. package/build-module/components/rich-text/index.native.js.map +1 -1
  448. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  449. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  450. package/build-module/components/rich-text/use-paste-handler.js +22 -12
  451. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  452. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  453. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  454. package/build-module/components/rich-text/utils.js +1 -16
  455. package/build-module/components/rich-text/utils.js.map +1 -1
  456. package/build-module/components/spacing-sizes-control/index.js +0 -1
  457. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  458. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  459. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  460. package/build-module/components/spacing-sizes-control/utils.js +1 -1
  461. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  462. package/build-module/components/typewriter/index.js +1 -1
  463. package/build-module/components/typewriter/index.js.map +1 -1
  464. package/build-module/components/ungroup-button/index.native.js +3 -2
  465. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  466. package/build-module/components/url-input/index.js +46 -43
  467. package/build-module/components/url-input/index.js.map +1 -1
  468. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  469. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  470. package/build-module/components/use-block-display-information/index.js +9 -5
  471. package/build-module/components/use-block-display-information/index.js.map +1 -1
  472. package/build-module/components/use-setting/index.js +8 -1
  473. package/build-module/components/use-setting/index.js.map +1 -1
  474. package/build-module/components/writing-flow/index.js +1 -1
  475. package/build-module/components/writing-flow/index.js.map +1 -1
  476. package/build-module/hooks/border.js +0 -1
  477. package/build-module/hooks/border.js.map +1 -1
  478. package/build-module/hooks/child-layout.js +189 -0
  479. package/build-module/hooks/child-layout.js.map +1 -0
  480. package/build-module/hooks/color-panel.js +0 -1
  481. package/build-module/hooks/color-panel.js.map +1 -1
  482. package/build-module/hooks/color.js +1 -2
  483. package/build-module/hooks/color.js.map +1 -1
  484. package/build-module/hooks/content-lock-ui.js +1 -1
  485. package/build-module/hooks/content-lock-ui.js.map +1 -1
  486. package/build-module/hooks/dimensions.js +25 -8
  487. package/build-module/hooks/dimensions.js.map +1 -1
  488. package/build-module/hooks/font-family.js +5 -5
  489. package/build-module/hooks/font-family.js.map +1 -1
  490. package/build-module/hooks/font-size.js +5 -3
  491. package/build-module/hooks/font-size.js.map +1 -1
  492. package/build-module/hooks/layout.js +55 -0
  493. package/build-module/hooks/layout.js.map +1 -1
  494. package/build-module/hooks/min-height.js +3 -9
  495. package/build-module/hooks/min-height.js.map +1 -1
  496. package/build-module/hooks/use-typography-props.js +11 -8
  497. package/build-module/hooks/use-typography-props.js.map +1 -1
  498. package/build-module/store/reducer.js +409 -274
  499. package/build-module/store/reducer.js.map +1 -1
  500. package/build-module/store/selectors.js +55 -48
  501. package/build-module/store/selectors.js.map +1 -1
  502. package/build-module/utils/pasting.js +6 -10
  503. package/build-module/utils/pasting.js.map +1 -1
  504. package/build-module/utils/sorting.js +56 -0
  505. package/build-module/utils/sorting.js.map +1 -0
  506. package/build-style/content-rtl.css +701 -0
  507. package/build-style/content.css +701 -0
  508. package/build-style/default-editor-styles-rtl.css +17 -3
  509. package/build-style/default-editor-styles.css +17 -3
  510. package/build-style/style-rtl.css +313 -665
  511. package/build-style/style.css +313 -665
  512. package/package.json +32 -30
  513. package/src/autocompleters/block.js +2 -6
  514. package/src/autocompleters/link.js +2 -0
  515. package/src/components/alignment-control/test/index.js +6 -1
  516. package/src/components/alignment-control/ui.js +1 -7
  517. package/src/components/block-alignment-control/test/index.js +6 -1
  518. package/src/components/block-alignment-control/use-available-alignments.js +4 -3
  519. package/src/components/block-card/index.js +46 -2
  520. package/src/components/block-card/style.scss +4 -0
  521. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  522. package/src/components/block-draggable/content.scss +20 -0
  523. package/src/components/block-draggable/index.native.js +54 -40
  524. package/src/components/block-draggable/style.scss +0 -21
  525. package/src/components/block-draggable/test/helpers.native.js +7 -9
  526. package/src/components/block-draggable/test/index.native.js +35 -45
  527. package/src/components/block-edit/edit.js +5 -2
  528. package/src/components/block-edit/edit.native.js +5 -6
  529. package/src/components/block-icon/index.js +4 -2
  530. package/src/components/block-icon/test/index.js +9 -5
  531. package/src/components/block-inspector/index.js +173 -85
  532. package/src/components/block-inspector/style.scss +16 -1
  533. package/src/components/block-list/block-list-context.native.js +5 -8
  534. package/src/components/block-list/block.js +74 -23
  535. package/src/components/block-list/block.native.js +78 -23
  536. package/src/components/block-list/{style.scss → content.scss} +1 -15
  537. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  538. package/src/components/block-list-appender/index.js +65 -54
  539. package/src/components/block-list-appender/index.native.js +45 -34
  540. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +42 -28
  541. package/src/components/block-mobile-toolbar/index.native.js +1 -1
  542. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +125 -0
  543. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +439 -0
  544. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +42 -2
  545. package/src/components/block-mover/test/index.native.js +157 -1
  546. package/src/components/block-pattern-setup/index.js +17 -7
  547. package/src/components/block-pattern-setup/style.scss +29 -1
  548. package/src/components/block-patterns-list/index.js +47 -24
  549. package/src/components/block-preview/README.md +15 -10
  550. package/src/components/block-preview/auto.js +7 -1
  551. package/src/components/block-preview/content.scss +4 -0
  552. package/src/components/block-preview/index.js +7 -12
  553. package/src/components/block-preview/style.scss +0 -7
  554. package/src/components/block-preview/test/index.js +18 -35
  555. package/src/components/block-selection-clearer/test/index.js +12 -12
  556. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  557. package/src/components/block-styles/index.native.js +1 -2
  558. package/src/components/block-styles/utils.js +5 -7
  559. package/src/components/block-switcher/test/index.js +6 -1
  560. package/src/components/block-toolbar/index.js +12 -5
  561. package/src/components/block-toolbar/index.native.js +8 -11
  562. package/src/components/block-toolbar/style.scss +10 -0
  563. package/src/components/block-tools/insertion-point.js +3 -47
  564. package/src/components/block-tools/selected-block-popover.js +1 -3
  565. package/src/components/block-tools/style.scss +12 -5
  566. package/src/components/block-variation-picker/index.js +6 -5
  567. package/src/components/block-vertical-alignment-control/test/index.js +6 -1
  568. package/src/components/colors/test/with-colors.js +2 -0
  569. package/src/components/colors/utils.js +5 -3
  570. package/src/components/colors-gradients/control.js +0 -7
  571. package/src/components/colors-gradients/dropdown.js +0 -2
  572. package/src/components/colors-gradients/panel-color-gradient-settings.js +4 -22
  573. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  574. package/src/components/copy-handler/index.js +53 -7
  575. package/src/components/default-block-appender/{style.scss → content.scss} +0 -0
  576. package/src/components/default-block-appender/test/index.js +2 -0
  577. package/src/components/font-sizes/fluid-utils.js +7 -1
  578. package/src/components/font-sizes/utils.js +5 -3
  579. package/src/components/font-sizes/with-font-sizes.js +4 -4
  580. package/src/components/gradients/use-gradient.js +2 -7
  581. package/src/components/height-control/index.js +123 -0
  582. package/src/components/height-control/stories/index.js +21 -0
  583. package/src/components/height-control/style.scss +5 -0
  584. package/src/components/iframe/index.js +33 -121
  585. package/src/components/iframe/use-compatibility-styles.js +95 -0
  586. package/src/components/image-editor/use-save-image.js +2 -0
  587. package/src/components/image-editor/zoom-dropdown.js +1 -0
  588. package/src/components/image-size-control/test/index.js +147 -79
  589. package/src/components/index.js +1 -0
  590. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  591. package/src/components/inner-blocks/index.js +26 -7
  592. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  593. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  594. package/src/components/inserter/block-patterns-tab.js +28 -71
  595. package/src/components/inserter/block-types-tab.js +3 -2
  596. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  597. package/src/components/inserter/hooks/use-insertion-point.js +3 -2
  598. package/src/components/inserter/index.js +24 -3
  599. package/src/components/inserter/index.native.js +1 -1
  600. package/src/components/inserter/media-tab/hooks.js +89 -0
  601. package/src/components/inserter/media-tab/index.js +3 -0
  602. package/src/components/inserter/media-tab/media-list.js +93 -0
  603. package/src/components/inserter/media-tab/media-panel.js +83 -0
  604. package/src/components/inserter/media-tab/media-tab.js +135 -0
  605. package/src/components/inserter/media-tab/utils.js +37 -0
  606. package/src/components/inserter/menu.js +55 -13
  607. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  608. package/src/components/inserter/quick-inserter.js +4 -0
  609. package/src/components/inserter/search-items.js +1 -2
  610. package/src/components/inserter/search-results.js +5 -2
  611. package/src/components/inserter/stories/index.js +1 -1
  612. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  613. package/src/components/inserter/style.scss +176 -11
  614. package/src/components/inserter/tabs.js +12 -1
  615. package/src/components/inserter-list-item/index.js +11 -1
  616. package/src/components/inserter-list-item/style.scss +26 -0
  617. package/src/components/inspector-controls/groups.js +2 -0
  618. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  619. package/src/components/inspector-controls-tabs/index.js +62 -0
  620. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  621. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  622. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  623. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  624. package/src/components/inspector-controls-tabs/utils.js +28 -0
  625. package/src/components/line-height-control/test/index.js +5 -5
  626. package/src/components/link-control/README.md +1 -1
  627. package/src/components/link-control/index.js +1 -0
  628. package/src/components/link-control/search-input.js +0 -1
  629. package/src/components/link-control/test/index.js +204 -403
  630. package/src/components/link-control/use-internal-input-value.js +3 -3
  631. package/src/components/list-view/block-select-button.js +1 -1
  632. package/src/components/list-view/block.js +3 -0
  633. package/src/components/list-view/branch.js +10 -8
  634. package/src/components/list-view/style.scss +21 -16
  635. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  636. package/src/components/media-replace-flow/test/index.js +39 -9
  637. package/src/components/media-upload/test/index.native.js +2 -0
  638. package/src/components/off-canvas-editor/appender.js +98 -0
  639. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  640. package/src/components/off-canvas-editor/block-select-button.js +6 -2
  641. package/src/components/off-canvas-editor/block.js +160 -77
  642. package/src/components/off-canvas-editor/branch.js +3 -5
  643. package/src/components/off-canvas-editor/index.js +68 -33
  644. package/src/components/off-canvas-editor/leaf.js +5 -1
  645. package/src/components/off-canvas-editor/link-ui.js +166 -0
  646. package/src/components/off-canvas-editor/style.scss +19 -386
  647. package/src/components/off-canvas-editor/test/use-inserted-block.js +108 -0
  648. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  649. package/src/components/off-canvas-editor/use-inserted-block.js +47 -0
  650. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  651. package/src/components/recursion-provider/test/index.js +27 -29
  652. package/src/components/responsive-block-control/label.js +2 -3
  653. package/src/components/responsive-block-control/test/index.js +4 -2
  654. package/src/components/rich-text/content.scss +42 -0
  655. package/src/components/rich-text/format-edit.js +6 -10
  656. package/src/components/rich-text/format-toolbar/index.js +6 -4
  657. package/src/components/rich-text/index.js +3 -2
  658. package/src/components/rich-text/index.native.js +0 -2
  659. package/src/components/rich-text/style.scss +0 -43
  660. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  661. package/src/components/rich-text/use-paste-handler.js +33 -14
  662. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  663. package/src/components/rich-text/utils.js +2 -21
  664. package/src/components/spacing-sizes-control/index.js +0 -1
  665. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  666. package/src/components/spacing-sizes-control/utils.js +1 -1
  667. package/src/components/typewriter/index.js +3 -1
  668. package/src/components/ungroup-button/index.native.js +6 -2
  669. package/src/components/url-input/index.js +57 -73
  670. package/src/components/url-input/test/button.js +2 -0
  671. package/src/components/url-popover/image-url-input-ui.js +5 -4
  672. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  673. package/src/components/url-popover/test/index.js +37 -9
  674. package/src/components/use-block-display-information/index.js +14 -5
  675. package/src/components/use-setting/index.js +13 -1
  676. package/src/components/use-setting/test/index.js +99 -0
  677. package/src/components/warning/test/index.js +2 -0
  678. package/src/components/writing-flow/index.js +1 -1
  679. package/src/content.scss +10 -0
  680. package/src/hooks/border.js +0 -1
  681. package/src/hooks/child-layout.js +190 -0
  682. package/src/hooks/color-panel.js +0 -1
  683. package/src/hooks/color.js +0 -2
  684. package/src/hooks/content-lock-ui.js +1 -1
  685. package/src/hooks/dimensions.js +45 -7
  686. package/src/hooks/font-family.js +3 -5
  687. package/src/hooks/font-size.js +13 -4
  688. package/src/hooks/layout.js +60 -0
  689. package/src/hooks/min-height.js +2 -19
  690. package/src/hooks/test/use-typography-props.js +26 -0
  691. package/src/hooks/use-typography-props.js +15 -7
  692. package/src/store/reducer.js +471 -428
  693. package/src/store/selectors.js +57 -59
  694. package/src/store/test/performance.js +71 -0
  695. package/src/store/test/reducer.js +623 -491
  696. package/src/store/test/selectors.js +1820 -1306
  697. package/src/style.scss +4 -7
  698. package/src/utils/pasting.js +3 -9
  699. package/src/utils/sorting.js +54 -0
  700. package/src/utils/test/sorting.js +49 -0
  701. package/tsconfig.tsbuildinfo +1 -1
  702. package/build/components/block-preview/live.js +0 -30
  703. package/build/components/block-preview/live.js.map +0 -1
  704. package/build/components/colors-gradients/use-common-single-multiple-selects.js +0 -21
  705. package/build/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  706. package/build/components/rich-text/file-paste-handler.js +0 -21
  707. package/build/components/rich-text/file-paste-handler.js.map +0 -1
  708. package/build-module/components/block-preview/live.js +0 -20
  709. package/build-module/components/block-preview/live.js.map +0 -1
  710. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  711. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  712. package/build-module/components/rich-text/file-paste-handler.js +0 -13
  713. package/build-module/components/rich-text/file-paste-handler.js.map +0 -1
  714. package/src/components/block-preview/live.js +0 -19
  715. package/src/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  716. package/src/components/rich-text/file-paste-handler.js +0 -13
@@ -0,0 +1,77 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { useRef, useEffect } from '@wordpress/element';
7
+ import { Spinner, SearchControl } from '@wordpress/components';
8
+ import { focus } from '@wordpress/dom';
9
+ import { __, sprintf } from '@wordpress/i18n';
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+
14
+ import MediaList from './media-list';
15
+ import useDebouncedInput from '../hooks/use-debounced-input';
16
+ import { useMediaResults } from './hooks';
17
+ import InserterNoResults from '../no-results';
18
+ const INITIAL_MEDIA_ITEMS_PER_PAGE = 10;
19
+ export function MediaCategoryDialog(_ref) {
20
+ let {
21
+ rootClientId,
22
+ onInsert,
23
+ category
24
+ } = _ref;
25
+ const container = useRef();
26
+ useEffect(() => {
27
+ const timeout = setTimeout(() => {
28
+ const [firstTabbable] = focus.tabbable.find(container.current);
29
+ firstTabbable === null || firstTabbable === void 0 ? void 0 : firstTabbable.focus();
30
+ });
31
+ return () => clearTimeout(timeout);
32
+ }, [category]);
33
+ return createElement("div", {
34
+ ref: container,
35
+ className: "block-editor-inserter__media-dialog"
36
+ }, createElement(MediaCategoryPanel, {
37
+ rootClientId: rootClientId,
38
+ onInsert: onInsert,
39
+ category: category
40
+ }));
41
+ }
42
+ export function MediaCategoryPanel(_ref2) {
43
+ let {
44
+ rootClientId,
45
+ onInsert,
46
+ category
47
+ } = _ref2;
48
+ const [search, setSearch, debouncedSearch] = useDebouncedInput();
49
+ const mediaList = useMediaResults({
50
+ per_page: !!debouncedSearch ? 20 : INITIAL_MEDIA_ITEMS_PER_PAGE,
51
+ media_type: category.mediaType,
52
+ search: debouncedSearch,
53
+ orderBy: !!debouncedSearch ? 'relevance' : 'date'
54
+ });
55
+ const baseCssClass = 'block-editor-inserter__media-panel';
56
+ return createElement("div", {
57
+ className: baseCssClass
58
+ }, createElement(SearchControl, {
59
+ className: `${baseCssClass}-search`,
60
+ onChange: setSearch,
61
+ value: search,
62
+ label: sprintf(
63
+ /* translators: %s: Name of the media category(ex. 'images, videos'). */
64
+ __('Search %s'), category.label.toLocaleLowerCase()),
65
+ placeholder: sprintf(
66
+ /* translators: %s: Name of the media category(ex. 'images, videos'). */
67
+ __('Search %s'), category.label.toLocaleLowerCase())
68
+ }), !mediaList && createElement("div", {
69
+ className: `${baseCssClass}-spinner`
70
+ }, createElement(Spinner, null)), Array.isArray(mediaList) && !mediaList.length && createElement(InserterNoResults, null), !!(mediaList !== null && mediaList !== void 0 && mediaList.length) && createElement(MediaList, {
71
+ rootClientId: rootClientId,
72
+ onClick: onInsert,
73
+ mediaList: mediaList,
74
+ mediaType: category.mediaType
75
+ }));
76
+ }
77
+ //# sourceMappingURL=media-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-panel.js"],"names":["useRef","useEffect","Spinner","SearchControl","focus","__","sprintf","MediaList","useDebouncedInput","useMediaResults","InserterNoResults","INITIAL_MEDIA_ITEMS_PER_PAGE","MediaCategoryDialog","rootClientId","onInsert","category","container","timeout","setTimeout","firstTabbable","tabbable","find","current","clearTimeout","MediaCategoryPanel","search","setSearch","debouncedSearch","mediaList","per_page","media_type","mediaType","orderBy","baseCssClass","label","toLocaleLowerCase","Array","isArray","length"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { Spinner, SearchControl } from '@wordpress/components';\nimport { focus } from '@wordpress/dom';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport MediaList from './media-list';\nimport useDebouncedInput from '../hooks/use-debounced-input';\nimport { useMediaResults } from './hooks';\nimport InserterNoResults from '../no-results';\n\nconst INITIAL_MEDIA_ITEMS_PER_PAGE = 10;\n\nexport function MediaCategoryDialog( { rootClientId, onInsert, category } ) {\n\tconst container = useRef();\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\treturn (\n\t\t<div ref={ container } className=\"block-editor-inserter__media-dialog\">\n\t\t\t<MediaCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function MediaCategoryPanel( { rootClientId, onInsert, category } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst mediaList = useMediaResults( {\n\t\tper_page: !! debouncedSearch ? 20 : INITIAL_MEDIA_ITEMS_PER_PAGE,\n\t\tmedia_type: category.mediaType,\n\t\tsearch: debouncedSearch,\n\t\torderBy: !! debouncedSearch ? 'relevance' : 'date',\n\t} );\n\tconst baseCssClass = 'block-editor-inserter__media-panel';\n\treturn (\n\t\t<div className={ baseCssClass }>\n\t\t\t<SearchControl\n\t\t\t\tclassName={ `${ baseCssClass }-search` }\n\t\t\t\tonChange={ setSearch }\n\t\t\t\tvalue={ search }\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the media category(ex. 'images, videos'). */\n\t\t\t\t\t__( 'Search %s' ),\n\t\t\t\t\tcategory.label.toLocaleLowerCase()\n\t\t\t\t) }\n\t\t\t\tplaceholder={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the media category(ex. 'images, videos'). */\n\t\t\t\t\t__( 'Search %s' ),\n\t\t\t\t\tcategory.label.toLocaleLowerCase()\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t{ ! mediaList && (\n\t\t\t\t<div className={ `${ baseCssClass }-spinner` }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ Array.isArray( mediaList ) && ! mediaList.length && (\n\t\t\t\t<InserterNoResults />\n\t\t\t) }\n\t\t\t{ !! mediaList?.length && (\n\t\t\t\t<MediaList\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tonClick={ onInsert }\n\t\t\t\t\tmediaList={ mediaList }\n\t\t\t\t\tmediaType={ category.mediaType }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,100 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import classNames from 'classnames';
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+
11
+ import { __ } from '@wordpress/i18n';
12
+ import { useViewportMatch } from '@wordpress/compose';
13
+ import { __experimentalItemGroup as ItemGroup, __experimentalItem as Item, __experimentalHStack as HStack, FlexBlock, Button } from '@wordpress/components';
14
+ import { useCallback } from '@wordpress/element';
15
+ import { Icon, chevronRight } from '@wordpress/icons';
16
+ /**
17
+ * Internal dependencies
18
+ */
19
+
20
+ import { MediaCategoryPanel } from './media-panel';
21
+ import MediaUploadCheck from '../../media-upload/check';
22
+ import MediaUpload from '../../media-upload';
23
+ import { useMediaCategories } from './hooks';
24
+ import { getBlockAndPreviewFromMedia } from './utils';
25
+ import MobileTabNavigation from '../mobile-tab-navigation';
26
+ const ALLOWED_MEDIA_TYPES = ['image', 'video', 'audio'];
27
+
28
+ function MediaTab(_ref) {
29
+ let {
30
+ rootClientId,
31
+ selectedCategory,
32
+ onSelectCategory,
33
+ onInsert
34
+ } = _ref;
35
+ const mediaCategories = useMediaCategories(rootClientId);
36
+ const isMobile = useViewportMatch('medium', '<');
37
+ const baseCssClass = 'block-editor-inserter__media-tabs';
38
+ const onSelectMedia = useCallback(media => {
39
+ if (!(media !== null && media !== void 0 && media.url)) {
40
+ return;
41
+ }
42
+
43
+ const [block] = getBlockAndPreviewFromMedia(media, media.type);
44
+ onInsert(block);
45
+ }, [onInsert]);
46
+ return createElement(Fragment, null, !isMobile && createElement("div", {
47
+ className: `${baseCssClass}-container`
48
+ }, createElement("nav", {
49
+ "aria-label": __('Media categories')
50
+ }, createElement(ItemGroup, {
51
+ role: "list",
52
+ className: baseCssClass
53
+ }, mediaCategories.map(mediaCategory => createElement(Item, {
54
+ role: "listitem",
55
+ key: mediaCategory.name,
56
+ onClick: () => onSelectCategory(mediaCategory),
57
+ className: classNames(`${baseCssClass}__media-category`, {
58
+ 'is-selected': selectedCategory === mediaCategory
59
+ }),
60
+ "aria-label": mediaCategory.label,
61
+ "aria-current": mediaCategory === selectedCategory ? 'true' : undefined
62
+ }, createElement(HStack, null, createElement(FlexBlock, null, mediaCategory.label), createElement(Icon, {
63
+ icon: chevronRight
64
+ })))), createElement("div", {
65
+ role: "listitem"
66
+ }, createElement(MediaUploadCheck, null, createElement(MediaUpload, {
67
+ multiple: false,
68
+ onSelect: onSelectMedia,
69
+ allowedTypes: ALLOWED_MEDIA_TYPES,
70
+ render: _ref2 => {
71
+ let {
72
+ open
73
+ } = _ref2;
74
+ return createElement(Button, {
75
+ onClick: event => {
76
+ // Safari doesn't emit a focus event on button elements when
77
+ // clicked and we need to manually focus the button here.
78
+ // The reason is that core's Media Library modal explicitly triggers a
79
+ // focus event and therefore a `blur` event is triggered on a different
80
+ // element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`
81
+ // attribute making the Inserter dialog to close.
82
+ event.target.focus();
83
+ open();
84
+ },
85
+ className: "block-editor-inserter__media-library-button",
86
+ variant: "secondary",
87
+ "data-unstable-ignore-focus-outside-for-relatedtarget": ".media-modal"
88
+ }, __('Open Media Library'));
89
+ }
90
+ })))))), isMobile && createElement(MobileTabNavigation, {
91
+ categories: mediaCategories
92
+ }, category => createElement(MediaCategoryPanel, {
93
+ onInsert: onInsert,
94
+ rootClientId: rootClientId,
95
+ category: category
96
+ })));
97
+ }
98
+
99
+ export default MediaTab;
100
+ //# sourceMappingURL=media-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-tab.js"],"names":["classNames","__","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","FlexBlock","Button","useCallback","Icon","chevronRight","MediaCategoryPanel","MediaUploadCheck","MediaUpload","useMediaCategories","getBlockAndPreviewFromMedia","MobileTabNavigation","ALLOWED_MEDIA_TYPES","MediaTab","rootClientId","selectedCategory","onSelectCategory","onInsert","mediaCategories","isMobile","baseCssClass","onSelectMedia","media","url","block","type","map","mediaCategory","name","label","undefined","open","event","target","focus","category"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { Icon, chevronRight } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { MediaCategoryPanel } from './media-panel';\nimport MediaUploadCheck from '../../media-upload/check';\nimport MediaUpload from '../../media-upload';\nimport { useMediaCategories } from './hooks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport MobileTabNavigation from '../mobile-tab-navigation';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video', 'audio' ];\n\nfunction MediaTab( {\n\trootClientId,\n\tselectedCategory,\n\tonSelectCategory,\n\tonInsert,\n} ) {\n\tconst mediaCategories = useMediaCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst baseCssClass = 'block-editor-inserter__media-tabs';\n\tconst onSelectMedia = useCallback(\n\t\t( media ) => {\n\t\t\tif ( ! media?.url ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [ block ] = getBlockAndPreviewFromMedia( media, media.type );\n\t\t\tonInsert( block );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className={ `${ baseCssClass }-container` }>\n\t\t\t\t\t<nav aria-label={ __( 'Media categories' ) }>\n\t\t\t\t\t\t<ItemGroup role=\"list\" className={ baseCssClass }>\n\t\t\t\t\t\t\t{ mediaCategories.map( ( mediaCategory ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ mediaCategory.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( mediaCategory )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={ classNames(\n\t\t\t\t\t\t\t\t\t\t`${ baseCssClass }__media-category`,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t'is-selected':\n\t\t\t\t\t\t\t\t\t\t\t\tselectedCategory ===\n\t\t\t\t\t\t\t\t\t\t\t\tmediaCategory,\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\taria-label={ mediaCategory.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tmediaCategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ mediaCategory.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\t\t\tmultiple={ false }\n\t\t\t\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Safari doesn't emit a focus event on button elements when\n\t\t\t\t\t\t\t\t\t\t\t\t\t// clicked and we need to manually focus the button here.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// The reason is that core's Media Library modal explicitly triggers a\n\t\t\t\t\t\t\t\t\t\t\t\t\t// focus event and therefore a `blur` event is triggered on a different\n\t\t\t\t\t\t\t\t\t\t\t\t\t// element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`\n\t\t\t\t\t\t\t\t\t\t\t\t\t// attribute making the Inserter dialog to close.\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent.target.focus();\n\t\t\t\t\t\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-library-button\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-unstable-ignore-focus-outside-for-relatedtarget=\".media-modal\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t\t\t</Button>\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</MediaUploadCheck>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ mediaCategories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default MediaTab;\n"]}
@@ -0,0 +1,45 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { createBlock } from '@wordpress/blocks';
7
+ const mediaTypeTag = {
8
+ image: 'img',
9
+ video: 'video',
10
+ audio: 'audio'
11
+ };
12
+ export function getBlockAndPreviewFromMedia(media, mediaType) {
13
+ var _media$caption;
14
+
15
+ // Add the common attributes between the different media types.
16
+ const attributes = {
17
+ id: media.id
18
+ }; // Some props are named differently between the Media REST API and Media Library API.
19
+ // For example `source_url` is used in the former and `url` is used in the latter.
20
+
21
+ const mediaSrc = media.source_url || media.url;
22
+ const alt = media.alt_text || media.alt || undefined;
23
+ const caption = ((_media$caption = media.caption) === null || _media$caption === void 0 ? void 0 : _media$caption.raw) || media.caption;
24
+
25
+ if (caption && typeof caption === 'string') {
26
+ attributes.caption = caption;
27
+ }
28
+
29
+ if (mediaType === 'image') {
30
+ attributes.url = mediaSrc;
31
+ attributes.alt = alt;
32
+ } else if (['video', 'audio'].includes(mediaType)) {
33
+ attributes.src = mediaSrc;
34
+ }
35
+
36
+ const PreviewTag = mediaTypeTag[mediaType];
37
+ const preview = createElement(PreviewTag, {
38
+ src: mediaSrc,
39
+ alt: alt,
40
+ controls: mediaType === 'audio' ? true : undefined,
41
+ inert: "true"
42
+ });
43
+ return [createBlock(`core/${mediaType}`, attributes), preview];
44
+ }
45
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/utils.js"],"names":["createBlock","mediaTypeTag","image","video","audio","getBlockAndPreviewFromMedia","media","mediaType","attributes","id","mediaSrc","source_url","url","alt","alt_text","undefined","caption","raw","includes","src","PreviewTag","preview"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,WAAT,QAA4B,mBAA5B;AAEA,MAAMC,YAAY,GAAG;AAAEC,EAAAA,KAAK,EAAE,KAAT;AAAgBC,EAAAA,KAAK,EAAE,OAAvB;AAAgCC,EAAAA,KAAK,EAAE;AAAvC,CAArB;AAEA,OAAO,SAASC,2BAAT,CAAsCC,KAAtC,EAA6CC,SAA7C,EAAyD;AAAA;;AAC/D;AACA,QAAMC,UAAU,GAAG;AAClBC,IAAAA,EAAE,EAAEH,KAAK,CAACG;AADQ,GAAnB,CAF+D,CAK/D;AACA;;AACA,QAAMC,QAAQ,GAAGJ,KAAK,CAACK,UAAN,IAAoBL,KAAK,CAACM,GAA3C;AACA,QAAMC,GAAG,GAAGP,KAAK,CAACQ,QAAN,IAAkBR,KAAK,CAACO,GAAxB,IAA+BE,SAA3C;AACA,QAAMC,OAAO,GAAG,mBAAAV,KAAK,CAACU,OAAN,kEAAeC,GAAf,KAAsBX,KAAK,CAACU,OAA5C;;AACA,MAAKA,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAnC,EAA8C;AAC7CR,IAAAA,UAAU,CAACQ,OAAX,GAAqBA,OAArB;AACA;;AACD,MAAKT,SAAS,KAAK,OAAnB,EAA6B;AAC5BC,IAAAA,UAAU,CAACI,GAAX,GAAiBF,QAAjB;AACAF,IAAAA,UAAU,CAACK,GAAX,GAAiBA,GAAjB;AACA,GAHD,MAGO,IAAK,CAAE,OAAF,EAAW,OAAX,EAAqBK,QAArB,CAA+BX,SAA/B,CAAL,EAAkD;AACxDC,IAAAA,UAAU,CAACW,GAAX,GAAiBT,QAAjB;AACA;;AACD,QAAMU,UAAU,GAAGnB,YAAY,CAAEM,SAAF,CAA/B;AACA,QAAMc,OAAO,GACZ,cAAC,UAAD;AACC,IAAA,GAAG,EAAGX,QADP;AAEC,IAAA,GAAG,EAAGG,GAFP;AAGC,IAAA,QAAQ,EAAGN,SAAS,KAAK,OAAd,GAAwB,IAAxB,GAA+BQ,SAH3C;AAIC,IAAA,KAAK,EAAC;AAJP,IADD;AAQA,SAAO,CAAEf,WAAW,CAAG,QAAQO,SAAW,EAAtB,EAAyBC,UAAzB,CAAb,EAAoDa,OAApD,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst mediaTypeTag = { image: 'img', video: 'video', audio: 'audio' };\n\nexport function getBlockAndPreviewFromMedia( media, mediaType ) {\n\t// Add the common attributes between the different media types.\n\tconst attributes = {\n\t\tid: media.id,\n\t};\n\t// Some props are named differently between the Media REST API and Media Library API.\n\t// For example `source_url` is used in the former and `url` is used in the latter.\n\tconst mediaSrc = media.source_url || media.url;\n\tconst alt = media.alt_text || media.alt || undefined;\n\tconst caption = media.caption?.raw || media.caption;\n\tif ( caption && typeof caption === 'string' ) {\n\t\tattributes.caption = caption;\n\t}\n\tif ( mediaType === 'image' ) {\n\t\tattributes.url = mediaSrc;\n\t\tattributes.alt = alt;\n\t} else if ( [ 'video', 'audio' ].includes( mediaType ) ) {\n\t\tattributes.src = mediaSrc;\n\t}\n\tconst PreviewTag = mediaTypeTag[ mediaType ];\n\tconst preview = (\n\t\t<PreviewTag\n\t\t\tsrc={ mediaSrc }\n\t\t\talt={ alt }\n\t\t\tcontrols={ mediaType === 'audio' ? true : undefined }\n\t\t\tinert=\"true\"\n\t\t/>\n\t);\n\treturn [ createBlock( `core/${ mediaType }`, attributes ), preview ];\n}\n"]}
@@ -21,7 +21,9 @@ import InserterPreviewPanel from './preview-panel';
21
21
  import BlockTypesTab from './block-types-tab';
22
22
  import BlockPatternsTabs, { BlockPatternsCategoryDialog } from './block-patterns-tab';
23
23
  import ReusableBlocksTab from './reusable-blocks-tab';
24
+ import { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';
24
25
  import InserterSearchResults from './search-results';
26
+ import useDebouncedInput from './hooks/use-debounced-input';
25
27
  import useInsertionPoint from './hooks/use-insertion-point';
26
28
  import InserterTabs from './tabs';
27
29
  import { store as blockEditorStore } from '../../store';
@@ -39,9 +41,10 @@ function InserterMenu(_ref, ref) {
39
41
  shouldFocusBlock = true,
40
42
  prioritizePatterns
41
43
  } = _ref;
42
- const [filterValue, setFilterValue] = useState(__experimentalFilterValue);
44
+ const [filterValue, setFilterValue, delayedFilterValue] = useDebouncedInput(__experimentalFilterValue);
43
45
  const [hoveredItem, setHoveredItem] = useState(null);
44
46
  const [selectedPatternCategory, setSelectedPatternCategory] = useState(null);
47
+ const [selectedMediaCategory, setSelectedMediaCategory] = useState(null);
45
48
  const [selectedTab, setSelectedTab] = useState(null);
46
49
  const [destinationRootClientId, onInsertBlocks, onToggleInsertionPoint] = useInsertionPoint({
47
50
  rootClientId,
@@ -65,6 +68,8 @@ function InserterMenu(_ref, ref) {
65
68
  hasReusableBlocks: !!((_getSettings$__experi = getSettings().__experimentalReusableBlocks) !== null && _getSettings$__experi !== void 0 && _getSettings$__experi.length)
66
69
  };
67
70
  }, [destinationRootClientId]);
71
+ const mediaCategories = useMediaCategories(destinationRootClientId);
72
+ const showMedia = !!mediaCategories.length;
68
73
  const onInsert = useCallback((blocks, meta, shouldForceFocusBlock) => {
69
74
  onInsertBlocks(blocks, meta, shouldForceFocusBlock);
70
75
  onSelect();
@@ -93,7 +98,7 @@ function InserterMenu(_ref, ref) {
93
98
  className: "block-editor-inserter__tips"
94
99
  }, createElement(VisuallyHidden, {
95
100
  as: "h2"
96
- }, __('A tip for using the block editor')), createElement(Tips, null))), [destinationRootClientId, onInsert, onHover, filterValue, showMostUsedBlocks, showInserterHelpPanel]);
101
+ }, __('A tip for using the block editor')), createElement(Tips, null))), [destinationRootClientId, onInsert, onHover, delayedFilterValue, showMostUsedBlocks, showInserterHelpPanel]);
97
102
  const patternsTab = useMemo(() => createElement(BlockPatternsTabs, {
98
103
  rootClientId: destinationRootClientId,
99
104
  onInsert: onInsertPattern,
@@ -105,23 +110,32 @@ function InserterMenu(_ref, ref) {
105
110
  onInsert: onInsert,
106
111
  onHover: onHover
107
112
  }), [destinationRootClientId, onInsert, onHover]);
113
+ const mediaTab = useMemo(() => createElement(MediaTab, {
114
+ rootClientId: destinationRootClientId,
115
+ selectedCategory: selectedMediaCategory,
116
+ onSelectCategory: setSelectedMediaCategory,
117
+ onInsert: onInsert
118
+ }), [destinationRootClientId, onInsert, selectedMediaCategory, setSelectedMediaCategory]);
108
119
  const getCurrentTab = useCallback(tab => {
109
120
  if (tab.name === 'blocks') {
110
121
  return blocksTab;
111
122
  } else if (tab.name === 'patterns') {
112
123
  return patternsTab;
124
+ } else if (tab.name === 'reusable') {
125
+ return reusableBlocksTab;
126
+ } else if (tab.name === 'media') {
127
+ return mediaTab;
113
128
  }
114
-
115
- return reusableBlocksTab;
116
- }, [blocksTab, patternsTab, reusableBlocksTab]);
129
+ }, [blocksTab, patternsTab, reusableBlocksTab, mediaTab]);
117
130
  const searchRef = useRef();
118
131
  useImperativeHandle(ref, () => ({
119
132
  focusSearch: () => {
120
133
  searchRef.current.focus();
121
134
  }
122
135
  }));
123
- const showPatternPanel = selectedTab === 'patterns' && !filterValue && selectedPatternCategory;
124
- const showAsTabs = !filterValue && (showPatterns || hasReusableBlocks);
136
+ const showPatternPanel = selectedTab === 'patterns' && !delayedFilterValue && selectedPatternCategory;
137
+ const showAsTabs = !delayedFilterValue && (showPatterns || hasReusableBlocks || showMedia);
138
+ const showMediaPanel = selectedTab === 'media' && !delayedFilterValue && selectedMediaCategory;
125
139
  return createElement("div", {
126
140
  className: "block-editor-inserter__menu"
127
141
  }, createElement("div", {
@@ -129,6 +143,7 @@ function InserterMenu(_ref, ref) {
129
143
  'show-as-tabs': showAsTabs
130
144
  })
131
145
  }, createElement(SearchControl, {
146
+ __nextHasNoMarginBottom: true,
132
147
  className: "block-editor-inserter__search",
133
148
  onChange: value => {
134
149
  if (hoveredItem) setHoveredItem(null);
@@ -138,10 +153,10 @@ function InserterMenu(_ref, ref) {
138
153
  label: __('Search for blocks and patterns'),
139
154
  placeholder: __('Search'),
140
155
  ref: searchRef
141
- }), !!filterValue && createElement("div", {
156
+ }), !!delayedFilterValue && createElement("div", {
142
157
  className: "block-editor-inserter__no-tab-container"
143
158
  }, createElement(InserterSearchResults, {
144
- filterValue: filterValue,
159
+ filterValue: delayedFilterValue,
145
160
  onSelect: onSelect,
146
161
  onHover: onHover,
147
162
  rootClientId: rootClientId,
@@ -153,16 +168,22 @@ function InserterMenu(_ref, ref) {
153
168
  })), showAsTabs && createElement(InserterTabs, {
154
169
  showPatterns: showPatterns,
155
170
  showReusableBlocks: hasReusableBlocks,
171
+ showMedia: showMedia,
156
172
  prioritizePatterns: prioritizePatterns,
157
173
  onSelect: setSelectedTab
158
- }, getCurrentTab), !filterValue && !showAsTabs && createElement("div", {
174
+ }, getCurrentTab), !delayedFilterValue && !showAsTabs && createElement("div", {
159
175
  className: "block-editor-inserter__no-tab-container"
160
- }, blocksTab)), showInserterHelpPanel && hoveredItem && createElement(InserterPreviewPanel, {
176
+ }, blocksTab)), showMediaPanel && createElement(MediaCategoryDialog, {
177
+ rootClientId: destinationRootClientId,
178
+ onInsert: onInsert,
179
+ category: selectedMediaCategory
180
+ }), showInserterHelpPanel && hoveredItem && createElement(InserterPreviewPanel, {
161
181
  item: hoveredItem
162
182
  }), showPatternPanel && createElement(BlockPatternsCategoryDialog, {
163
183
  rootClientId: destinationRootClientId,
164
184
  onInsert: onInsertPattern,
165
- category: selectedPatternCategory
185
+ category: selectedPatternCategory,
186
+ showTitlesAsTooltip: true
166
187
  }));
167
188
  }
168
189
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTabs","BlockPatternsCategoryDialog","ReusableBlocksTab","InserterSearchResults","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","hasReusableBlocks","select","__experimentalGetAllowedPatterns","getSettings","length","__experimentalReusableBlocks","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","value"],"mappings":"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","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 ReusableBlocksTab from './reusable-blocks-tab';\nimport InserterSearchResults from './search-results';\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 ] = useState(\n\t\t__experimentalFilterValue\n\t);\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\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, hasReusableBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\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\thasReusableBlocks:\n\t\t\t\t\t!! getSettings().__experimentalReusableBlocks?.length,\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\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 onClickPatternCategory = useCallback(\n\t\t( patternCategory ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\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\tfilterValue,\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 reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\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}\n\t\t\treturn reusableBlocksTab;\n\t\t},\n\t\t[ blocksTab, patternsTab, reusableBlocksTab ]\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' && ! filterValue && selectedPatternCategory;\n\tconst showAsTabs = ! filterValue && ( showPatterns || hasReusableBlocks );\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\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{ !! filterValue && (\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={ filterValue }\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\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\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ setSelectedTab }\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{ ! filterValue && ! 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{ 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\tcategory={ selectedPatternCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTabs","BlockPatternsCategoryDialog","ReusableBlocksTab","MediaTab","MediaCategoryDialog","useMediaCategories","InserterSearchResults","useDebouncedInput","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","selectedMediaCategory","setSelectedMediaCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","hasReusableBlocks","select","__experimentalGetAllowedPatterns","getSettings","length","__experimentalReusableBlocks","mediaCategories","showMedia","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","mediaTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","showMediaPanel","value"],"mappings":"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","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 ReusableBlocksTab from './reusable-blocks-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 [ 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, hasReusableBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\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\thasReusableBlocks:\n\t\t\t\t\t!! getSettings().__experimentalReusableBlocks?.length,\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\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 onClickPatternCategory = useCallback(\n\t\t( patternCategory ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\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\tdelayedFilterValue,\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 reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\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 === 'reusable' ) {\n\t\t\t\treturn reusableBlocksTab;\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, reusableBlocksTab, 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\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\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={ setSelectedTab }\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\tcategory={ selectedPatternCategory }\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"]}
@@ -0,0 +1,61 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { __, isRTL } from '@wordpress/i18n';
7
+ import { __experimentalItemGroup as ItemGroup, __experimentalItem as Item, __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalSpacer as Spacer, __experimentalHeading as Heading, __experimentalView as View, __experimentalNavigatorProvider as NavigatorProvider, __experimentalNavigatorScreen as NavigatorScreen, __experimentalNavigatorButton as NavigatorButton, __experimentalNavigatorBackButton as NavigatorBackButton, FlexBlock } from '@wordpress/components';
8
+ import { Icon, chevronRight, chevronLeft } from '@wordpress/icons';
9
+
10
+ function ScreenHeader(_ref) {
11
+ let {
12
+ title
13
+ } = _ref;
14
+ return createElement(VStack, {
15
+ spacing: 0
16
+ }, createElement(View, null, createElement(Spacer, {
17
+ marginBottom: 0,
18
+ paddingX: 4,
19
+ paddingY: 3
20
+ }, createElement(HStack, {
21
+ spacing: 2
22
+ }, createElement(NavigatorBackButton, {
23
+ style: // TODO: This style override is also used in ToolsPanelHeader.
24
+ // It should be supported out-of-the-box by Button.
25
+ {
26
+ minWidth: 24,
27
+ padding: 0
28
+ },
29
+ icon: isRTL() ? chevronRight : chevronLeft,
30
+ isSmall: true,
31
+ "aria-label": __('Navigate to the previous view')
32
+ }), createElement(Spacer, null, createElement(Heading, {
33
+ level: 5
34
+ }, title))))));
35
+ }
36
+
37
+ export default function MobileTabNavigation(_ref2) {
38
+ let {
39
+ categories,
40
+ children
41
+ } = _ref2;
42
+ return createElement(NavigatorProvider, {
43
+ initialPath: "/",
44
+ className: "block-editor-inserter__mobile-tab-navigation"
45
+ }, createElement(NavigatorScreen, {
46
+ path: "/"
47
+ }, createElement(ItemGroup, null, categories.map(category => createElement(NavigatorButton, {
48
+ key: category.name,
49
+ path: `/category/${category.name}`,
50
+ as: Item,
51
+ isAction: true
52
+ }, createElement(HStack, null, createElement(FlexBlock, null, category.label), createElement(Icon, {
53
+ icon: isRTL() ? chevronLeft : chevronRight
54
+ })))))), categories.map(category => createElement(NavigatorScreen, {
55
+ key: category.name,
56
+ path: `/category/${category.name}`
57
+ }, createElement(ScreenHeader, {
58
+ title: __('Back')
59
+ }), children(category))));
60
+ }
61
+ //# sourceMappingURL=mobile-tab-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/mobile-tab-navigation.js"],"names":["__","isRTL","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalSpacer","Spacer","__experimentalHeading","Heading","__experimentalView","View","__experimentalNavigatorProvider","NavigatorProvider","__experimentalNavigatorScreen","NavigatorScreen","__experimentalNavigatorButton","NavigatorButton","__experimentalNavigatorBackButton","NavigatorBackButton","FlexBlock","Icon","chevronRight","chevronLeft","ScreenHeader","title","minWidth","padding","MobileTabNavigation","categories","children","map","category","name","label"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,EAAaC,KAAb,QAA0B,iBAA1B;AACA,SACCC,uBAAuB,IAAIC,SAD5B,EAECC,kBAAkB,IAAIC,IAFvB,EAGCC,oBAAoB,IAAIC,MAHzB,EAICC,oBAAoB,IAAIC,MAJzB,EAKCC,oBAAoB,IAAIC,MALzB,EAMCC,qBAAqB,IAAIC,OAN1B,EAOCC,kBAAkB,IAAIC,IAPvB,EAQCC,+BAA+B,IAAIC,iBARpC,EASCC,6BAA6B,IAAIC,eATlC,EAUCC,6BAA6B,IAAIC,eAVlC,EAWCC,iCAAiC,IAAIC,mBAXtC,EAYCC,SAZD,QAaO,uBAbP;AAcA,SAASC,IAAT,EAAeC,YAAf,EAA6BC,WAA7B,QAAgD,kBAAhD;;AAEA,SAASC,YAAT,OAAmC;AAAA,MAAZ;AAAEC,IAAAA;AAAF,GAAY;AAClC,SACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAG;AAAlB,KACC,cAAC,IAAD,QACC,cAAC,MAAD;AAAQ,IAAA,YAAY,EAAG,CAAvB;AAA2B,IAAA,QAAQ,EAAG,CAAtC;AAA0C,IAAA,QAAQ,EAAG;AAArD,KACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAG;AAAlB,KACC,cAAC,mBAAD;AACC,IAAA,KAAK,EACJ;AACA;AACA;AAAEC,MAAAA,QAAQ,EAAE,EAAZ;AAAgBC,MAAAA,OAAO,EAAE;AAAzB,KAJF;AAMC,IAAA,IAAI,EAAG9B,KAAK,KAAKyB,YAAL,GAAoBC,WANjC;AAOC,IAAA,OAAO,MAPR;AAQC,kBAAa3B,EAAE,CAAE,+BAAF;AARhB,IADD,EAWC,cAAC,MAAD,QACC,cAAC,OAAD;AAAS,IAAA,KAAK,EAAG;AAAjB,KAAuB6B,KAAvB,CADD,CAXD,CADD,CADD,CADD,CADD;AAuBA;;AAED,eAAe,SAASG,mBAAT,QAAyD;AAAA,MAA3B;AAAEC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,GAA2B;AACvE,SACC,cAAC,iBAAD;AACC,IAAA,WAAW,EAAC,GADb;AAEC,IAAA,SAAS,EAAC;AAFX,KAIC,cAAC,eAAD;AAAiB,IAAA,IAAI,EAAC;AAAtB,KACC,cAAC,SAAD,QACGD,UAAU,CAACE,GAAX,CAAkBC,QAAF,IACjB,cAAC,eAAD;AACC,IAAA,GAAG,EAAGA,QAAQ,CAACC,IADhB;AAEC,IAAA,IAAI,EAAI,aAAaD,QAAQ,CAACC,IAAM,EAFrC;AAGC,IAAA,EAAE,EAAGhC,IAHN;AAIC,IAAA,QAAQ;AAJT,KAMC,cAAC,MAAD,QACC,cAAC,SAAD,QAAa+B,QAAQ,CAACE,KAAtB,CADD,EAEC,cAAC,IAAD;AACC,IAAA,IAAI,EACHrC,KAAK,KAAK0B,WAAL,GAAmBD;AAF1B,IAFD,CAND,CADC,CADH,CADD,CAJD,EAyBGO,UAAU,CAACE,GAAX,CAAkBC,QAAF,IACjB,cAAC,eAAD;AACC,IAAA,GAAG,EAAGA,QAAQ,CAACC,IADhB;AAEC,IAAA,IAAI,EAAI,aAAaD,QAAQ,CAACC,IAAM;AAFrC,KAIC,cAAC,YAAD;AAAc,IAAA,KAAK,EAAGrC,EAAE,CAAE,MAAF;AAAxB,IAJD,EAKGkC,QAAQ,CAAEE,QAAF,CALX,CADC,CAzBH,CADD;AAqCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalHeading as Heading,\n\t__experimentalView as View,\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorButton as NavigatorButton,\n\t__experimentalNavigatorBackButton as NavigatorBackButton,\n\tFlexBlock,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\n\nfunction ScreenHeader( { title } ) {\n\treturn (\n\t\t<VStack spacing={ 0 }>\n\t\t\t<View>\n\t\t\t\t<Spacer marginBottom={ 0 } paddingX={ 4 } paddingY={ 3 }>\n\t\t\t\t\t<HStack spacing={ 2 }>\n\t\t\t\t\t\t<NavigatorBackButton\n\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t// TODO: This style override is also used in ToolsPanelHeader.\n\t\t\t\t\t\t\t\t// It should be supported out-of-the-box by Button.\n\t\t\t\t\t\t\t\t{ minWidth: 24, padding: 0 }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\taria-label={ __( 'Navigate to the previous view' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Spacer>\n\t\t\t\t\t\t\t<Heading level={ 5 }>{ title }</Heading>\n\t\t\t\t\t\t</Spacer>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Spacer>\n\t\t\t</View>\n\t\t</VStack>\n\t);\n}\n\nexport default function MobileTabNavigation( { categories, children } ) {\n\treturn (\n\t\t<NavigatorProvider\n\t\t\tinitialPath=\"/\"\n\t\t\tclassName=\"block-editor-inserter__mobile-tab-navigation\"\n\t\t>\n\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t<NavigatorButton\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t\t\t\tas={ Item }\n\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t<FlexBlock>{ category.label }</FlexBlock>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronLeft : chevronRight\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</HStack>\n\t\t\t\t\t\t</NavigatorButton>\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</NavigatorScreen>\n\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t<NavigatorScreen\n\t\t\t\t\tkey={ category.name }\n\t\t\t\t\tpath={ `/category/${ category.name }` }\n\t\t\t\t>\n\t\t\t\t\t<ScreenHeader title={ __( 'Back' ) } />\n\t\t\t\t\t{ children( category ) }\n\t\t\t\t</NavigatorScreen>\n\t\t\t) ) }\n\t\t</NavigatorProvider>\n\t);\n}\n"]}
@@ -31,14 +31,16 @@ export default function QuickInserter(_ref) {
31
31
  rootClientId,
32
32
  clientId,
33
33
  isAppender,
34
- prioritizePatterns
34
+ prioritizePatterns,
35
+ selectBlockOnInsert
35
36
  } = _ref;
36
37
  const [filterValue, setFilterValue] = useState('');
37
38
  const [destinationRootClientId, onInsertBlocks] = useInsertionPoint({
38
39
  onSelect,
39
40
  rootClientId,
40
41
  clientId,
41
- isAppender
42
+ isAppender,
43
+ selectBlockOnInsert
42
44
  });
43
45
  const [blockTypes] = useBlockTypesState(destinationRootClientId, onInsertBlocks);
44
46
  const [patterns] = usePatternsState(onInsertBlocks, destinationRootClientId);
@@ -88,6 +90,7 @@ export default function QuickInserter(_ref) {
88
90
  'has-expand': setInserterIsOpened
89
91
  })
90
92
  }, showSearch && createElement(SearchControl, {
93
+ __nextHasNoMarginBottom: true,
91
94
  className: "block-editor-inserter__search",
92
95
  value: filterValue,
93
96
  onChange: value => {
@@ -106,7 +109,8 @@ export default function QuickInserter(_ref) {
106
109
  maxBlockPatterns: maxBlockPatterns,
107
110
  maxBlockTypes: SHOWN_BLOCK_TYPES,
108
111
  isDraggable: false,
109
- prioritizePatterns: prioritizePatterns
112
+ prioritizePatterns: prioritizePatterns,
113
+ selectBlockOnInsert: selectBlockOnInsert
110
114
  })), setInserterIsOpened && createElement(Button, {
111
115
  className: "block-editor-inserter__quick-inserter-expand",
112
116
  onClick: onBrowseAll,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/quick-inserter.js"],"names":["classnames","useState","useEffect","__","Button","SearchControl","useSelect","InserterSearchResults","useInsertionPoint","usePatternsState","useBlockTypesState","store","blockEditorStore","SEARCH_THRESHOLD","SHOWN_BLOCK_TYPES","SHOWN_BLOCK_PATTERNS","SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION","QuickInserter","onSelect","rootClientId","clientId","isAppender","prioritizePatterns","filterValue","setFilterValue","destinationRootClientId","onInsertBlocks","blockTypes","patterns","setInserterIsOpened","insertionIndex","select","getSettings","getBlockIndex","getBlockCount","settings","index","blockCount","__experimentalSetIsInserterOpened","showPatterns","length","showSearch","onBrowseAll","maxBlockPatterns","value"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,QAAT,EAAmBC,SAAnB,QAAoC,oBAApC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,MAAT,EAAiBC,aAAjB,QAAsC,uBAAtC;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,qBAAP,MAAkC,kBAAlC;AACA,OAAOC,iBAAP,MAA8B,6BAA9B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,kBAAP,MAA+B,+BAA/B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,MAAMC,gBAAgB,GAAG,CAAzB;AACA,MAAMC,iBAAiB,GAAG,CAA1B;AACA,MAAMC,oBAAoB,GAAG,CAA7B;AACA,MAAMC,wCAAwC,GAAG,CAAjD;AAEA,eAAe,SAASC,aAAT,OAMX;AAAA,MANmC;AACtCC,IAAAA,QADsC;AAEtCC,IAAAA,YAFsC;AAGtCC,IAAAA,QAHsC;AAItCC,IAAAA,UAJsC;AAKtCC,IAAAA;AALsC,GAMnC;AACH,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCvB,QAAQ,CAAE,EAAF,CAAhD;AACA,QAAM,CAAEwB,uBAAF,EAA2BC,cAA3B,IAA8ClB,iBAAiB,CAAE;AACtEU,IAAAA,QADsE;AAEtEC,IAAAA,YAFsE;AAGtEC,IAAAA,QAHsE;AAItEC,IAAAA;AAJsE,GAAF,CAArE;AAMA,QAAM,CAAEM,UAAF,IAAiBjB,kBAAkB,CACxCe,uBADwC,EAExCC,cAFwC,CAAzC;AAKA,QAAM,CAAEE,QAAF,IAAenB,gBAAgB,CACpCiB,cADoC,EAEpCD,uBAFoC,CAArC;AAKA,QAAM;AAAEI,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MAA0CxB,SAAS,CACtDyB,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,WAAF;AAAeC,MAAAA,aAAf;AAA8BC,MAAAA;AAA9B,QACLH,MAAM,CAAEnB,gBAAF,CADP;AAEA,UAAMuB,QAAQ,GAAGH,WAAW,EAA5B;AACA,UAAMI,KAAK,GAAGH,aAAa,CAAEb,QAAF,CAA3B;AACA,UAAMiB,UAAU,GAAGH,aAAa,EAAhC;AAEA,WAAO;AACNL,MAAAA,mBAAmB,EAAEM,QAAQ,CAACG,iCADxB;AAENR,MAAAA,cAAc,EAAEM,KAAK,KAAK,CAAC,CAAX,GAAeC,UAAf,GAA4BD;AAFtC,KAAP;AAIA,GAZuD,EAaxD,CAAEhB,QAAF,CAbwD,CAAzD;AAgBA,QAAMmB,YAAY,GACjBX,QAAQ,CAACY,MAAT,KAAqB,CAAC,CAAEjB,WAAH,IAAkBD,kBAAvC,CADD;AAEA,QAAMmB,UAAU,GACbF,YAAY,IAAIX,QAAQ,CAACY,MAAT,GAAkB3B,gBAApC,IACAc,UAAU,CAACa,MAAX,GAAoB3B,gBAFrB;AAIAX,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK2B,mBAAL,EAA2B;AAC1BA,MAAAA,mBAAmB,CAAE,KAAF,CAAnB;AACA;AACD,GAJQ,EAIN,CAAEA,mBAAF,CAJM,CAAT,CAxCG,CA8CH;AACA;;AACA,QAAMa,WAAW,GAAG,MAAM;AACzBb,IAAAA,mBAAmB,CAAE;AAAEV,MAAAA,YAAF;AAAgBW,MAAAA,cAAhB;AAAgCP,MAAAA;AAAhC,KAAF,CAAnB;AACA,GAFD;;AAIA,MAAIoB,gBAAgB,GAAG,CAAvB;;AACA,MAAKJ,YAAL,EAAoB;AACnBI,IAAAA,gBAAgB,GAAGrB,kBAAkB,GAClCN,wCADkC,GAElCD,oBAFH;AAGA;;AAED,SACC;AACC,IAAA,SAAS,EAAGf,UAAU,CAAE,uCAAF,EAA2C;AAChE,oBAAcyC,UADkD;AAEhE,oBAAcZ;AAFkD,KAA3C;AADvB,KAMGY,UAAU,IACX,cAAC,aAAD;AACC,IAAA,SAAS,EAAC,+BADX;AAEC,IAAA,KAAK,EAAGlB,WAFT;AAGC,IAAA,QAAQ,EAAKqB,KAAF,IAAa;AACvBpB,MAAAA,cAAc,CAAEoB,KAAF,CAAd;AACA,KALF;AAMC,IAAA,KAAK,EAAGzC,EAAE,CAAE,gCAAF,CANX;AAOC,IAAA,WAAW,EAAGA,EAAE,CAAE,QAAF;AAPjB,IAPF,EAkBC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,qBAAD;AACC,IAAA,WAAW,EAAGoB,WADf;AAEC,IAAA,QAAQ,EAAGL,QAFZ;AAGC,IAAA,YAAY,EAAGC,YAHhB;AAIC,IAAA,QAAQ,EAAGC,QAJZ;AAKC,IAAA,UAAU,EAAGC,UALd;AAMC,IAAA,gBAAgB,EAAGsB,gBANpB;AAOC,IAAA,aAAa,EAAG7B,iBAPjB;AAQC,IAAA,WAAW,EAAG,KARf;AASC,IAAA,kBAAkB,EAAGQ;AATtB,IADD,CAlBD,EAgCGO,mBAAmB,IACpB,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,8CADX;AAEC,IAAA,OAAO,EAAGa,WAFX;AAGC,kBAAavC,EAAE,CACd,2EADc;AAHhB,KAOGA,EAAE,CAAE,YAAF,CAPL,CAjCF,CADD;AA8CA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button, SearchControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { store as blockEditorStore } from '../../store';\n\nconst SEARCH_THRESHOLD = 6;\nconst SHOWN_BLOCK_TYPES = 6;\nconst SHOWN_BLOCK_PATTERNS = 2;\nconst SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION = 4;\n\nexport default function QuickInserter( {\n\tonSelect,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\tprioritizePatterns,\n} ) {\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t} );\n\tconst [ blockTypes ] = useBlockTypesState(\n\t\tdestinationRootClientId,\n\t\tonInsertBlocks\n\t);\n\n\tconst [ patterns ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst { setInserterIsOpened, insertionIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getBlockIndex, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst blockCount = getBlockCount();\n\n\t\t\treturn {\n\t\t\t\tsetInserterIsOpened: settings.__experimentalSetIsInserterOpened,\n\t\t\t\tinsertionIndex: index === -1 ? blockCount : index,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showPatterns =\n\t\tpatterns.length && ( !! filterValue || prioritizePatterns );\n\tconst showSearch =\n\t\t( showPatterns && patterns.length > SEARCH_THRESHOLD ) ||\n\t\tblockTypes.length > SEARCH_THRESHOLD;\n\n\tuseEffect( () => {\n\t\tif ( setInserterIsOpened ) {\n\t\t\tsetInserterIsOpened( false );\n\t\t}\n\t}, [ setInserterIsOpened ] );\n\n\t// When clicking Browse All select the appropriate block so as\n\t// the insertion point can work as expected.\n\tconst onBrowseAll = () => {\n\t\tsetInserterIsOpened( { rootClientId, insertionIndex, filterValue } );\n\t};\n\n\tlet maxBlockPatterns = 0;\n\tif ( showPatterns ) {\n\t\tmaxBlockPatterns = prioritizePatterns\n\t\t\t? SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION\n\t\t\t: SHOWN_BLOCK_PATTERNS;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'block-editor-inserter__quick-inserter', {\n\t\t\t\t'has-search': showSearch,\n\t\t\t\t'has-expand': setInserterIsOpened,\n\t\t\t} ) }\n\t\t>\n\t\t\t{ showSearch && (\n\t\t\t\t<SearchControl\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-results\">\n\t\t\t\t<InserterSearchResults\n\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tmaxBlockPatterns={ maxBlockPatterns }\n\t\t\t\t\tmaxBlockTypes={ SHOWN_BLOCK_TYPES }\n\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{ setInserterIsOpened && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-inserter__quick-inserter-expand\"\n\t\t\t\t\tonClick={ onBrowseAll }\n\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t'Browse all. This will open the main inserter panel in the editor toolbar.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Browse all' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/quick-inserter.js"],"names":["classnames","useState","useEffect","__","Button","SearchControl","useSelect","InserterSearchResults","useInsertionPoint","usePatternsState","useBlockTypesState","store","blockEditorStore","SEARCH_THRESHOLD","SHOWN_BLOCK_TYPES","SHOWN_BLOCK_PATTERNS","SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION","QuickInserter","onSelect","rootClientId","clientId","isAppender","prioritizePatterns","selectBlockOnInsert","filterValue","setFilterValue","destinationRootClientId","onInsertBlocks","blockTypes","patterns","setInserterIsOpened","insertionIndex","select","getSettings","getBlockIndex","getBlockCount","settings","index","blockCount","__experimentalSetIsInserterOpened","showPatterns","length","showSearch","onBrowseAll","maxBlockPatterns","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button, SearchControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { store as blockEditorStore } from '../../store';\n\nconst SEARCH_THRESHOLD = 6;\nconst SHOWN_BLOCK_TYPES = 6;\nconst SHOWN_BLOCK_PATTERNS = 2;\nconst SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION = 4;\n\nexport default function QuickInserter( {\n\tonSelect,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\tprioritizePatterns,\n\tselectBlockOnInsert,\n} ) {\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [ blockTypes ] = useBlockTypesState(\n\t\tdestinationRootClientId,\n\t\tonInsertBlocks\n\t);\n\n\tconst [ patterns ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst { setInserterIsOpened, insertionIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getBlockIndex, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst blockCount = getBlockCount();\n\n\t\t\treturn {\n\t\t\t\tsetInserterIsOpened: settings.__experimentalSetIsInserterOpened,\n\t\t\t\tinsertionIndex: index === -1 ? blockCount : index,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showPatterns =\n\t\tpatterns.length && ( !! filterValue || prioritizePatterns );\n\tconst showSearch =\n\t\t( showPatterns && patterns.length > SEARCH_THRESHOLD ) ||\n\t\tblockTypes.length > SEARCH_THRESHOLD;\n\n\tuseEffect( () => {\n\t\tif ( setInserterIsOpened ) {\n\t\t\tsetInserterIsOpened( false );\n\t\t}\n\t}, [ setInserterIsOpened ] );\n\n\t// When clicking Browse All select the appropriate block so as\n\t// the insertion point can work as expected.\n\tconst onBrowseAll = () => {\n\t\tsetInserterIsOpened( { rootClientId, insertionIndex, filterValue } );\n\t};\n\n\tlet maxBlockPatterns = 0;\n\tif ( showPatterns ) {\n\t\tmaxBlockPatterns = prioritizePatterns\n\t\t\t? SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION\n\t\t\t: SHOWN_BLOCK_PATTERNS;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'block-editor-inserter__quick-inserter', {\n\t\t\t\t'has-search': showSearch,\n\t\t\t\t'has-expand': setInserterIsOpened,\n\t\t\t} ) }\n\t\t>\n\t\t\t{ showSearch && (\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\tvalue={ filterValue }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-results\">\n\t\t\t\t<InserterSearchResults\n\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tmaxBlockPatterns={ maxBlockPatterns }\n\t\t\t\t\tmaxBlockTypes={ SHOWN_BLOCK_TYPES }\n\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\tselectBlockOnInsert={ selectBlockOnInsert }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{ setInserterIsOpened && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-inserter__quick-inserter-expand\"\n\t\t\t\t\tonClick={ onBrowseAll }\n\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t'Browse all. This will open the main inserter panel in the editor toolbar.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Browse all' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}