@wordpress/edit-site 5.19.2 → 5.20.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 (788) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +9 -8
  3. package/build/components/add-new-page/index.js.map +1 -1
  4. package/build/components/add-new-pattern/index.js +12 -15
  5. package/build/components/add-new-pattern/index.js.map +1 -1
  6. package/build/components/add-new-template/add-custom-generic-template-modal-content.js +8 -7
  7. package/build/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -1
  8. package/build/components/add-new-template/add-custom-template-modal-content.js +20 -19
  9. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  10. package/build/components/add-new-template/index.js +2 -2
  11. package/build/components/add-new-template/index.js.map +1 -1
  12. package/build/components/add-new-template/new-template.js +17 -16
  13. package/build/components/add-new-template/new-template.js.map +1 -1
  14. package/build/components/add-new-template/template-actions-loading-screen.js +4 -4
  15. package/build/components/add-new-template/template-actions-loading-screen.js.map +1 -1
  16. package/build/components/app/index.js +2 -2
  17. package/build/components/app/index.js.map +1 -1
  18. package/build/components/block-editor/back-button.js +2 -2
  19. package/build/components/block-editor/back-button.js.map +1 -1
  20. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +10 -6
  21. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -1
  22. package/build/components/block-editor/block-editor-provider/index.js +3 -3
  23. package/build/components/block-editor/block-editor-provider/index.js.map +1 -1
  24. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +3 -2
  25. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +1 -1
  26. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +19 -11
  27. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -1
  28. package/build/components/block-editor/block-inspector-button.js +2 -2
  29. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  30. package/build/components/block-editor/editor-canvas.js +4 -3
  31. package/build/components/block-editor/editor-canvas.js.map +1 -1
  32. package/build/components/block-editor/index.js +2 -2
  33. package/build/components/block-editor/index.js.map +1 -1
  34. package/build/components/block-editor/resizable-editor.js +4 -3
  35. package/build/components/block-editor/resizable-editor.js.map +1 -1
  36. package/build/components/block-editor/resize-handle.js +3 -3
  37. package/build/components/block-editor/resize-handle.js.map +1 -1
  38. package/build/components/block-editor/site-editor-canvas.js +8 -7
  39. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  40. package/build/components/canvas-loader/index.js +4 -4
  41. package/build/components/canvas-loader/index.js.map +1 -1
  42. package/build/components/code-editor/index.js +8 -7
  43. package/build/components/code-editor/index.js.map +1 -1
  44. package/build/components/create-template-part-modal/index.js +17 -16
  45. package/build/components/create-template-part-modal/index.js.map +1 -1
  46. package/build/components/dataviews/dataviews.js +61 -0
  47. package/build/components/dataviews/dataviews.js.map +1 -0
  48. package/build/components/dataviews/index.js +21 -0
  49. package/build/components/dataviews/index.js.map +1 -0
  50. package/build/components/dataviews/list-view.js +89 -0
  51. package/build/components/dataviews/list-view.js.map +1 -0
  52. package/build/components/dataviews/pagination.js +89 -0
  53. package/build/components/dataviews/pagination.js.map +1 -0
  54. package/build/components/dataviews/text-filter.js +44 -0
  55. package/build/components/dataviews/text-filter.js.map +1 -0
  56. package/build/components/dataviews/view-actions.js +189 -0
  57. package/build/components/dataviews/view-actions.js.map +1 -0
  58. package/build/components/editor/index.js +15 -14
  59. package/build/components/editor/index.js.map +1 -1
  60. package/build/components/editor-canvas-container/index.js +4 -3
  61. package/build/components/editor-canvas-container/index.js.map +1 -1
  62. package/build/components/error-boundary/index.js +2 -1
  63. package/build/components/error-boundary/index.js.map +1 -1
  64. package/build/components/error-boundary/warning.js +4 -4
  65. package/build/components/error-boundary/warning.js.map +1 -1
  66. package/build/components/global-styles/block-preview-panel.js +5 -4
  67. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  68. package/build/components/global-styles/color-indicator-wrapper.js +2 -2
  69. package/build/components/global-styles/color-indicator-wrapper.js.map +1 -1
  70. package/build/components/global-styles/color-palette-panel.js +5 -5
  71. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  72. package/build/components/global-styles/dimensions-panel.js +3 -2
  73. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  74. package/build/components/global-styles/font-families.js +14 -14
  75. package/build/components/global-styles/font-families.js.map +1 -1
  76. package/build/components/global-styles/font-family-item.js +6 -5
  77. package/build/components/global-styles/font-family-item.js.map +1 -1
  78. package/build/components/global-styles/font-library-modal/collection-font-details.js +9 -7
  79. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  80. package/build/components/global-styles/font-library-modal/collection-font-variant.js +5 -5
  81. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  82. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +2 -2
  83. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -1
  84. package/build/components/global-styles/font-library-modal/context.js +28 -31
  85. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  86. package/build/components/global-styles/font-library-modal/font-card.js +7 -7
  87. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  88. package/build/components/global-styles/font-library-modal/font-collection.js +44 -23
  89. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  90. package/build/components/global-styles/font-library-modal/font-demo.js +5 -4
  91. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  92. package/build/components/global-styles/font-library-modal/font-variant.js +7 -7
  93. package/build/components/global-styles/font-library-modal/font-variant.js.map +1 -1
  94. package/build/components/global-styles/font-library-modal/fonts-grid.js +8 -7
  95. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  96. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -9
  97. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  98. package/build/components/global-styles/font-library-modal/index.js +16 -8
  99. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  100. package/build/components/global-styles/font-library-modal/installed-fonts.js +39 -18
  101. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  102. package/build/components/global-styles/font-library-modal/library-font-card.js +3 -2
  103. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  104. package/build/components/global-styles/font-library-modal/library-font-details.js +6 -6
  105. package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -1
  106. package/build/components/global-styles/font-library-modal/library-font-variant.js +5 -4
  107. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  108. package/build/components/global-styles/font-library-modal/local-fonts.js +39 -11
  109. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  110. package/build/components/global-styles/font-library-modal/resolvers.js +1 -1
  111. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  112. package/build/components/global-styles/font-library-modal/tab-layout.js +9 -9
  113. package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -1
  114. package/build/components/global-styles/font-library-modal/upload-fonts.js +26 -0
  115. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -0
  116. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -1
  117. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -1
  118. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +71 -0
  119. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +1 -0
  120. package/build/components/global-styles/font-library-modal/utils/index.js +4 -1
  121. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  122. package/build/components/global-styles/global-styles-provider.js +3 -2
  123. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  124. package/build/components/global-styles/gradients-palette-panel.js +8 -8
  125. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  126. package/build/components/global-styles/header.js +7 -7
  127. package/build/components/global-styles/header.js.map +1 -1
  128. package/build/components/global-styles/icon-with-current-color.js +2 -2
  129. package/build/components/global-styles/icon-with-current-color.js.map +1 -1
  130. package/build/components/global-styles/navigation-button.js +7 -7
  131. package/build/components/global-styles/navigation-button.js.map +1 -1
  132. package/build/components/global-styles/palette.js +11 -10
  133. package/build/components/global-styles/palette.js.map +1 -1
  134. package/build/components/global-styles/preview.js +17 -16
  135. package/build/components/global-styles/preview.js.map +1 -1
  136. package/build/components/global-styles/root-menu.js +4 -4
  137. package/build/components/global-styles/root-menu.js.map +1 -1
  138. package/build/components/global-styles/screen-block-list.js +10 -9
  139. package/build/components/global-styles/screen-block-list.js.map +1 -1
  140. package/build/components/global-styles/screen-block.js +17 -16
  141. package/build/components/global-styles/screen-block.js.map +1 -1
  142. package/build/components/global-styles/screen-color-palette.js +5 -5
  143. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  144. package/build/components/global-styles/screen-colors.js +5 -5
  145. package/build/components/global-styles/screen-colors.js.map +1 -1
  146. package/build/components/global-styles/screen-css.js +5 -5
  147. package/build/components/global-styles/screen-css.js.map +1 -1
  148. package/build/components/global-styles/screen-layout.js +3 -3
  149. package/build/components/global-styles/screen-layout.js.map +1 -1
  150. package/build/components/global-styles/screen-revisions/index.js +10 -9
  151. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  152. package/build/components/global-styles/screen-revisions/revisions-buttons.js +10 -10
  153. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  154. package/build/components/global-styles/screen-root.js +14 -14
  155. package/build/components/global-styles/screen-root.js.map +1 -1
  156. package/build/components/global-styles/screen-style-variations.js +5 -4
  157. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  158. package/build/components/global-styles/screen-typography-element.js +15 -14
  159. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  160. package/build/components/global-styles/screen-typography.js +5 -5
  161. package/build/components/global-styles/screen-typography.js.map +1 -1
  162. package/build/components/global-styles/style-variations-container.js +8 -7
  163. package/build/components/global-styles/style-variations-container.js.map +1 -1
  164. package/build/components/global-styles/subtitle.js +2 -2
  165. package/build/components/global-styles/subtitle.js.map +1 -1
  166. package/build/components/global-styles/typography-panel.js +2 -2
  167. package/build/components/global-styles/typography-panel.js.map +1 -1
  168. package/build/components/global-styles/typography-preview.js +2 -2
  169. package/build/components/global-styles/typography-preview.js.map +1 -1
  170. package/build/components/global-styles/typogrphy-elements.js +13 -13
  171. package/build/components/global-styles/typogrphy-elements.js.map +1 -1
  172. package/build/components/global-styles/ui.js +41 -40
  173. package/build/components/global-styles/ui.js.map +1 -1
  174. package/build/components/global-styles/variations-panel.js +3 -3
  175. package/build/components/global-styles/variations-panel.js.map +1 -1
  176. package/build/components/header-edit-mode/document-actions/index.js +16 -15
  177. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  178. package/build/components/header-edit-mode/index.js +20 -19
  179. package/build/components/header-edit-mode/index.js.map +1 -1
  180. package/build/components/header-edit-mode/mode-switcher/index.js +3 -3
  181. package/build/components/header-edit-mode/mode-switcher/index.js.map +1 -1
  182. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js +2 -2
  183. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -1
  184. package/build/components/header-edit-mode/more-menu/index.js +14 -14
  185. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  186. package/build/components/header-edit-mode/more-menu/site-export.js +2 -2
  187. package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -1
  188. package/build/components/header-edit-mode/more-menu/welcome-guide-menu-item.js +2 -2
  189. package/build/components/header-edit-mode/more-menu/welcome-guide-menu-item.js.map +1 -1
  190. package/build/components/header-edit-mode/plugin-more-menu-item/index.js +1 -1
  191. package/build/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -1
  192. package/build/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js +3 -3
  193. package/build/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -1
  194. package/build/components/header-edit-mode/tools-more-menu-group/index.js +2 -2
  195. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -1
  196. package/build/components/header-edit-mode/undo-redo/redo.js +3 -2
  197. package/build/components/header-edit-mode/undo-redo/redo.js.map +1 -1
  198. package/build/components/header-edit-mode/undo-redo/undo.js +3 -2
  199. package/build/components/header-edit-mode/undo-redo/undo.js.map +1 -1
  200. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +2 -2
  201. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  202. package/build/components/keyboard-shortcut-help-modal/index.js +15 -15
  203. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  204. package/build/components/keyboard-shortcut-help-modal/shortcut.js +8 -7
  205. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  206. package/build/components/layout/index.js +15 -14
  207. package/build/components/layout/index.js.map +1 -1
  208. package/build/components/list/added-by.js +9 -8
  209. package/build/components/list/added-by.js.map +1 -1
  210. package/build/components/list/header.js +5 -5
  211. package/build/components/list/header.js.map +1 -1
  212. package/build/components/list/index.js +5 -5
  213. package/build/components/list/index.js.map +1 -1
  214. package/build/components/list/table.js +15 -15
  215. package/build/components/list/table.js.map +1 -1
  216. package/build/components/page/header.js +6 -6
  217. package/build/components/page/header.js.map +1 -1
  218. package/build/components/page/index.js +5 -5
  219. package/build/components/page/index.js.map +1 -1
  220. package/build/components/page-actions/index.js +3 -3
  221. package/build/components/page-actions/index.js.map +1 -1
  222. package/build/components/page-actions/trash-page-menu-item.js +2 -2
  223. package/build/components/page-actions/trash-page-menu-item.js.map +1 -1
  224. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +3 -2
  225. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  226. package/build/components/page-content-focus-manager/edit-template-notification.js +3 -2
  227. package/build/components/page-content-focus-manager/edit-template-notification.js.map +1 -1
  228. package/build/components/page-content-focus-manager/index.js +35 -4
  229. package/build/components/page-content-focus-manager/index.js.map +1 -1
  230. package/build/components/page-main/index.js +7 -4
  231. package/build/components/page-main/index.js.map +1 -1
  232. package/build/components/page-pages/index.js +174 -0
  233. package/build/components/page-pages/index.js.map +1 -0
  234. package/build/components/page-patterns/duplicate-menu-item.js +2 -2
  235. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  236. package/build/components/page-patterns/grid-item.js +21 -20
  237. package/build/components/page-patterns/grid-item.js.map +1 -1
  238. package/build/components/page-patterns/grid.js +3 -4
  239. package/build/components/page-patterns/grid.js.map +1 -1
  240. package/build/components/page-patterns/header.js +4 -4
  241. package/build/components/page-patterns/header.js.map +1 -1
  242. package/build/components/page-patterns/index.js +4 -4
  243. package/build/components/page-patterns/index.js.map +1 -1
  244. package/build/components/page-patterns/no-patterns.js +2 -2
  245. package/build/components/page-patterns/no-patterns.js.map +1 -1
  246. package/build/components/page-patterns/pagination.js +10 -10
  247. package/build/components/page-patterns/pagination.js.map +1 -1
  248. package/build/components/page-patterns/patterns-list.js +16 -15
  249. package/build/components/page-patterns/patterns-list.js.map +1 -1
  250. package/build/components/page-patterns/rename-menu-item.js +10 -9
  251. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  252. package/build/components/page-patterns/use-patterns.js +5 -1
  253. package/build/components/page-patterns/use-patterns.js.map +1 -1
  254. package/build/components/page-template-parts/add-new-template-part.js +4 -3
  255. package/build/components/page-template-parts/add-new-template-part.js.map +1 -1
  256. package/build/components/page-template-parts/index.js +21 -10
  257. package/build/components/page-template-parts/index.js.map +1 -1
  258. package/build/components/page-templates/index.js +10 -10
  259. package/build/components/page-templates/index.js.map +1 -1
  260. package/build/components/plugin-template-setting-panel/index.js +1 -1
  261. package/build/components/plugin-template-setting-panel/index.js.map +1 -1
  262. package/build/components/preferences-modal/enable-feature.js +2 -2
  263. package/build/components/preferences-modal/enable-feature.js.map +1 -1
  264. package/build/components/preferences-modal/index.js +12 -11
  265. package/build/components/preferences-modal/index.js.map +1 -1
  266. package/build/components/resizable-frame/index.js +7 -6
  267. package/build/components/resizable-frame/index.js.map +1 -1
  268. package/build/components/revisions/index.js +9 -8
  269. package/build/components/revisions/index.js.map +1 -1
  270. package/build/components/routes/link.js +2 -2
  271. package/build/components/routes/link.js.map +1 -1
  272. package/build/components/save-button/index.js +2 -2
  273. package/build/components/save-button/index.js.map +1 -1
  274. package/build/components/save-hub/index.js +4 -4
  275. package/build/components/save-hub/index.js.map +1 -1
  276. package/build/components/save-panel/index.js +11 -11
  277. package/build/components/save-panel/index.js.map +1 -1
  278. package/build/components/secondary-sidebar/inserter-sidebar.js +7 -6
  279. package/build/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  280. package/build/components/secondary-sidebar/list-view-sidebar.js +7 -6
  281. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  282. package/build/components/sidebar/index.js +23 -14
  283. package/build/components/sidebar/index.js.map +1 -1
  284. package/build/components/sidebar-button/index.js +2 -2
  285. package/build/components/sidebar-button/index.js.map +1 -1
  286. package/build/components/sidebar-edit-mode/default-sidebar.js +3 -3
  287. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  288. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +8 -7
  289. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  290. package/build/components/sidebar-edit-mode/index.js +6 -5
  291. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  292. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +20 -10
  293. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  294. package/build/components/sidebar-edit-mode/page-panels/index.js +7 -7
  295. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  296. package/build/components/sidebar-edit-mode/page-panels/page-content.js +3 -2
  297. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  298. package/build/components/sidebar-edit-mode/page-panels/page-status.js +21 -20
  299. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  300. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +4 -4
  301. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  302. package/build/components/sidebar-edit-mode/page-panels/publish-date.js +7 -6
  303. package/build/components/sidebar-edit-mode/page-panels/publish-date.js.map +1 -1
  304. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +3 -3
  305. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  306. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +7 -6
  307. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
  308. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -2
  309. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  310. package/build/components/sidebar-edit-mode/settings-header/index.js +3 -3
  311. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  312. package/build/components/sidebar-edit-mode/sidebar-card/index.js +7 -7
  313. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  314. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js +2 -2
  315. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +1 -1
  316. package/build/components/sidebar-edit-mode/template-panel/hooks.js +71 -0
  317. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
  318. package/build/components/sidebar-edit-mode/template-panel/index.js +5 -5
  319. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  320. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +5 -5
  321. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  322. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +5 -4
  323. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
  324. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +83 -0
  325. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
  326. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +12 -5
  327. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  328. package/build/components/sidebar-edit-mode/template-panel/template-areas.js +8 -8
  329. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -1
  330. package/build/components/sidebar-navigation-item/index.js +5 -5
  331. package/build/components/sidebar-navigation-item/index.js.map +1 -1
  332. package/build/components/sidebar-navigation-screen/index.js +11 -11
  333. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  334. package/build/components/sidebar-navigation-screen-details-footer/index.js +8 -7
  335. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  336. package/build/components/sidebar-navigation-screen-details-panel/index.js +3 -3
  337. package/build/components/sidebar-navigation-screen-details-panel/index.js.map +1 -1
  338. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js +2 -2
  339. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js.map +1 -1
  340. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +2 -2
  341. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  342. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js +2 -2
  343. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js.map +1 -1
  344. package/build/components/sidebar-navigation-screen-global-styles/index.js +12 -11
  345. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  346. package/build/components/sidebar-navigation-screen-main/index.js +9 -8
  347. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  348. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +2 -2
  349. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -1
  350. package/build/components/sidebar-navigation-screen-navigation-item/index.js +4 -4
  351. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  352. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js +2 -2
  353. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  354. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -2
  355. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
  356. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +7 -7
  357. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  358. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +8 -7
  359. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  360. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +4 -3
  361. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
  362. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +9 -8
  363. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  364. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +5 -5
  365. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  366. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +8 -8
  367. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  368. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +7 -6
  369. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -1
  370. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +5 -4
  371. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  372. package/build/components/sidebar-navigation-screen-page/index.js +11 -11
  373. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  374. package/build/components/sidebar-navigation-screen-page/page-details.js +6 -6
  375. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  376. package/build/components/sidebar-navigation-screen-page/status-label.js +5 -4
  377. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  378. package/build/components/sidebar-navigation-screen-pages/index.js +26 -17
  379. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  380. package/build/components/sidebar-navigation-screen-pattern/index.js +4 -4
  381. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  382. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -3
  383. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  384. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list.js +3 -3
  385. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list.js.map +1 -1
  386. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +6 -4
  387. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  388. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +4 -4
  389. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  390. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +10 -3
  391. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  392. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +7 -7
  393. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  394. package/build/components/sidebar-navigation-screen-patterns/category-item.js +3 -3
  395. package/build/components/sidebar-navigation-screen-patterns/category-item.js.map +1 -1
  396. package/build/components/sidebar-navigation-screen-patterns/index.js +27 -15
  397. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  398. package/build/components/sidebar-navigation-screen-template/home-template-details.js +26 -30
  399. package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  400. package/build/components/sidebar-navigation-screen-template/index.js +12 -12
  401. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  402. package/build/components/sidebar-navigation-screen-templates/index.js +6 -6
  403. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  404. package/build/components/sidebar-navigation-screen-templates-browse/index.js +17 -5
  405. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  406. package/build/components/site-hub/index.js +12 -11
  407. package/build/components/site-hub/index.js.map +1 -1
  408. package/build/components/site-icon/index.js +5 -5
  409. package/build/components/site-icon/index.js.map +1 -1
  410. package/build/components/start-template-options/index.js +10 -9
  411. package/build/components/start-template-options/index.js.map +1 -1
  412. package/build/components/style-book/index.js +19 -18
  413. package/build/components/style-book/index.js.map +1 -1
  414. package/build/components/table/index.js +6 -6
  415. package/build/components/table/index.js.map +1 -1
  416. package/build/components/template-actions/index.js +8 -7
  417. package/build/components/template-actions/index.js.map +1 -1
  418. package/build/components/template-actions/rename-menu-item.js +10 -9
  419. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  420. package/build/components/template-part-converter/convert-to-regular.js +2 -2
  421. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  422. package/build/components/template-part-converter/convert-to-template-part.js +4 -3
  423. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  424. package/build/components/template-part-converter/index.js +5 -5
  425. package/build/components/template-part-converter/index.js.map +1 -1
  426. package/build/components/welcome-guide/editor.js +8 -7
  427. package/build/components/welcome-guide/editor.js.map +1 -1
  428. package/build/components/welcome-guide/image.js +4 -4
  429. package/build/components/welcome-guide/image.js.map +1 -1
  430. package/build/components/welcome-guide/index.js +2 -2
  431. package/build/components/welcome-guide/index.js.map +1 -1
  432. package/build/components/welcome-guide/page.js +6 -6
  433. package/build/components/welcome-guide/page.js.map +1 -1
  434. package/build/components/welcome-guide/styles.js +15 -15
  435. package/build/components/welcome-guide/styles.js.map +1 -1
  436. package/build/components/welcome-guide/template.js +6 -6
  437. package/build/components/welcome-guide/template.js.map +1 -1
  438. package/build/hooks/commands/use-common-commands.js +2 -2
  439. package/build/hooks/commands/use-common-commands.js.map +1 -1
  440. package/build/hooks/navigation-menu-edit.js +5 -5
  441. package/build/hooks/navigation-menu-edit.js.map +1 -1
  442. package/build/hooks/push-changes-to-global-styles/index.js +6 -5
  443. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  444. package/build/hooks/template-part-edit.js +5 -5
  445. package/build/hooks/template-part-edit.js.map +1 -1
  446. package/build/index.js +3 -2
  447. package/build/index.js.map +1 -1
  448. package/build/utils/constants.js +1 -1
  449. package/build/utils/constants.js.map +1 -1
  450. package/build/utils/get-is-list-page.js +1 -1
  451. package/build/utils/get-is-list-page.js.map +1 -1
  452. package/build-module/components/add-new-page/index.js +1 -1
  453. package/build-module/components/add-new-pattern/index.js +8 -12
  454. package/build-module/components/add-new-pattern/index.js.map +1 -1
  455. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js +1 -1
  456. package/build-module/components/add-new-template/add-custom-template-modal-content.js +1 -1
  457. package/build-module/components/add-new-template/index.js +1 -1
  458. package/build-module/components/add-new-template/new-template.js +1 -1
  459. package/build-module/components/add-new-template/template-actions-loading-screen.js +1 -1
  460. package/build-module/components/app/index.js +1 -1
  461. package/build-module/components/block-editor/back-button.js +1 -1
  462. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +9 -5
  463. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -1
  464. package/build-module/components/block-editor/block-editor-provider/index.js +1 -1
  465. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +1 -1
  466. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +19 -11
  467. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -1
  468. package/build-module/components/block-editor/block-inspector-button.js +1 -1
  469. package/build-module/components/block-editor/editor-canvas.js +1 -1
  470. package/build-module/components/block-editor/index.js +1 -1
  471. package/build-module/components/block-editor/resizable-editor.js +1 -1
  472. package/build-module/components/block-editor/resize-handle.js +1 -1
  473. package/build-module/components/block-editor/site-editor-canvas.js +1 -1
  474. package/build-module/components/canvas-loader/index.js +1 -1
  475. package/build-module/components/code-editor/index.js +1 -1
  476. package/build-module/components/create-template-part-modal/index.js +1 -1
  477. package/build-module/components/dataviews/dataviews.js +53 -0
  478. package/build-module/components/dataviews/dataviews.js.map +1 -0
  479. package/build-module/components/dataviews/index.js +3 -0
  480. package/build-module/components/dataviews/index.js.map +1 -0
  481. package/build-module/components/dataviews/list-view.js +80 -0
  482. package/build-module/components/dataviews/list-view.js.map +1 -0
  483. package/build-module/components/dataviews/pagination.js +83 -0
  484. package/build-module/components/dataviews/pagination.js.map +1 -0
  485. package/build-module/components/dataviews/text-filter.js +36 -0
  486. package/build-module/components/dataviews/text-filter.js.map +1 -0
  487. package/build-module/components/dataviews/view-actions.js +179 -0
  488. package/build-module/components/dataviews/view-actions.js.map +1 -0
  489. package/build-module/components/editor/index.js +1 -1
  490. package/build-module/components/editor-canvas-container/index.js +1 -1
  491. package/build-module/components/error-boundary/index.js +1 -1
  492. package/build-module/components/error-boundary/warning.js +1 -1
  493. package/build-module/components/global-styles/block-preview-panel.js +1 -1
  494. package/build-module/components/global-styles/color-indicator-wrapper.js +1 -1
  495. package/build-module/components/global-styles/color-palette-panel.js +1 -1
  496. package/build-module/components/global-styles/dimensions-panel.js +1 -1
  497. package/build-module/components/global-styles/font-families.js +3 -4
  498. package/build-module/components/global-styles/font-families.js.map +1 -1
  499. package/build-module/components/global-styles/font-family-item.js +1 -1
  500. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +4 -2
  501. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  502. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +1 -1
  503. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +1 -1
  504. package/build-module/components/global-styles/font-library-modal/context.js +27 -31
  505. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  506. package/build-module/components/global-styles/font-library-modal/font-card.js +1 -1
  507. package/build-module/components/global-styles/font-library-modal/font-collection.js +33 -13
  508. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  509. package/build-module/components/global-styles/font-library-modal/font-demo.js +1 -1
  510. package/build-module/components/global-styles/font-library-modal/font-variant.js +1 -1
  511. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +1 -1
  512. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  513. package/build-module/components/global-styles/font-library-modal/index.js +11 -4
  514. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  515. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +29 -9
  516. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  517. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  518. package/build-module/components/global-styles/font-library-modal/library-font-details.js +1 -1
  519. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +1 -1
  520. package/build-module/components/global-styles/font-library-modal/local-fonts.js +39 -12
  521. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  522. package/build-module/components/global-styles/font-library-modal/resolvers.js +1 -1
  523. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  524. package/build-module/components/global-styles/font-library-modal/tab-layout.js +1 -1
  525. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +17 -0
  526. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -0
  527. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -1
  528. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -1
  529. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +63 -0
  530. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +1 -0
  531. package/build-module/components/global-styles/font-library-modal/utils/index.js +4 -1
  532. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  533. package/build-module/components/global-styles/global-styles-provider.js +1 -1
  534. package/build-module/components/global-styles/gradients-palette-panel.js +1 -1
  535. package/build-module/components/global-styles/header.js +1 -1
  536. package/build-module/components/global-styles/icon-with-current-color.js +1 -1
  537. package/build-module/components/global-styles/navigation-button.js +1 -1
  538. package/build-module/components/global-styles/palette.js +1 -1
  539. package/build-module/components/global-styles/preview.js +1 -1
  540. package/build-module/components/global-styles/root-menu.js +1 -1
  541. package/build-module/components/global-styles/screen-block-list.js +1 -1
  542. package/build-module/components/global-styles/screen-block.js +1 -1
  543. package/build-module/components/global-styles/screen-color-palette.js +1 -1
  544. package/build-module/components/global-styles/screen-colors.js +1 -1
  545. package/build-module/components/global-styles/screen-css.js +1 -1
  546. package/build-module/components/global-styles/screen-layout.js +1 -1
  547. package/build-module/components/global-styles/screen-revisions/index.js +1 -1
  548. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  549. package/build-module/components/global-styles/screen-root.js +1 -1
  550. package/build-module/components/global-styles/screen-style-variations.js +1 -1
  551. package/build-module/components/global-styles/screen-typography-element.js +1 -1
  552. package/build-module/components/global-styles/screen-typography.js +2 -2
  553. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  554. package/build-module/components/global-styles/style-variations-container.js +1 -1
  555. package/build-module/components/global-styles/subtitle.js +1 -1
  556. package/build-module/components/global-styles/typography-panel.js +1 -1
  557. package/build-module/components/global-styles/typography-preview.js +1 -1
  558. package/build-module/components/global-styles/typogrphy-elements.js +1 -1
  559. package/build-module/components/global-styles/ui.js +1 -1
  560. package/build-module/components/global-styles/variations-panel.js +1 -1
  561. package/build-module/components/header-edit-mode/document-actions/index.js +1 -1
  562. package/build-module/components/header-edit-mode/index.js +1 -1
  563. package/build-module/components/header-edit-mode/mode-switcher/index.js +1 -1
  564. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js +1 -1
  565. package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
  566. package/build-module/components/header-edit-mode/more-menu/site-export.js +1 -1
  567. package/build-module/components/header-edit-mode/more-menu/welcome-guide-menu-item.js +1 -1
  568. package/build-module/components/header-edit-mode/plugin-more-menu-item/index.js +1 -1
  569. package/build-module/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -1
  570. package/build-module/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js +2 -2
  571. package/build-module/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -1
  572. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js +1 -1
  573. package/build-module/components/header-edit-mode/undo-redo/redo.js +1 -1
  574. package/build-module/components/header-edit-mode/undo-redo/undo.js +1 -1
  575. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +1 -1
  576. package/build-module/components/keyboard-shortcut-help-modal/index.js +1 -1
  577. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +1 -1
  578. package/build-module/components/layout/index.js +1 -1
  579. package/build-module/components/list/added-by.js +1 -1
  580. package/build-module/components/list/header.js +1 -1
  581. package/build-module/components/list/index.js +1 -1
  582. package/build-module/components/list/table.js +1 -1
  583. package/build-module/components/page/header.js +1 -1
  584. package/build-module/components/page/index.js +1 -1
  585. package/build-module/components/page-actions/index.js +1 -1
  586. package/build-module/components/page-actions/trash-page-menu-item.js +1 -1
  587. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +1 -1
  588. package/build-module/components/page-content-focus-manager/edit-template-notification.js +1 -1
  589. package/build-module/components/page-content-focus-manager/index.js +34 -4
  590. package/build-module/components/page-content-focus-manager/index.js.map +1 -1
  591. package/build-module/components/page-main/index.js +4 -1
  592. package/build-module/components/page-main/index.js.map +1 -1
  593. package/build-module/components/page-pages/index.js +166 -0
  594. package/build-module/components/page-pages/index.js.map +1 -0
  595. package/build-module/components/page-patterns/duplicate-menu-item.js +1 -1
  596. package/build-module/components/page-patterns/grid-item.js +1 -1
  597. package/build-module/components/page-patterns/grid.js +1 -2
  598. package/build-module/components/page-patterns/grid.js.map +1 -1
  599. package/build-module/components/page-patterns/header.js +1 -1
  600. package/build-module/components/page-patterns/index.js +1 -1
  601. package/build-module/components/page-patterns/no-patterns.js +1 -1
  602. package/build-module/components/page-patterns/pagination.js +1 -1
  603. package/build-module/components/page-patterns/patterns-list.js +2 -2
  604. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  605. package/build-module/components/page-patterns/rename-menu-item.js +1 -1
  606. package/build-module/components/page-patterns/use-patterns.js +5 -1
  607. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  608. package/build-module/components/page-template-parts/add-new-template-part.js +1 -1
  609. package/build-module/components/page-template-parts/index.js +13 -2
  610. package/build-module/components/page-template-parts/index.js.map +1 -1
  611. package/build-module/components/page-templates/index.js +1 -1
  612. package/build-module/components/plugin-template-setting-panel/index.js +1 -1
  613. package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
  614. package/build-module/components/preferences-modal/enable-feature.js +1 -1
  615. package/build-module/components/preferences-modal/index.js +1 -1
  616. package/build-module/components/resizable-frame/index.js +1 -1
  617. package/build-module/components/revisions/index.js +1 -1
  618. package/build-module/components/routes/link.js +1 -1
  619. package/build-module/components/save-button/index.js +1 -1
  620. package/build-module/components/save-hub/index.js +1 -1
  621. package/build-module/components/save-panel/index.js +1 -1
  622. package/build-module/components/secondary-sidebar/inserter-sidebar.js +1 -1
  623. package/build-module/components/secondary-sidebar/list-view-sidebar.js +1 -1
  624. package/build-module/components/sidebar/index.js +10 -2
  625. package/build-module/components/sidebar/index.js.map +1 -1
  626. package/build-module/components/sidebar-button/index.js +1 -1
  627. package/build-module/components/sidebar-edit-mode/default-sidebar.js +1 -1
  628. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +1 -1
  629. package/build-module/components/sidebar-edit-mode/index.js +1 -1
  630. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +15 -5
  631. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  632. package/build-module/components/sidebar-edit-mode/page-panels/index.js +1 -1
  633. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +1 -1
  634. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  635. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +1 -1
  636. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js +1 -1
  637. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +2 -2
  638. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  639. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +1 -1
  640. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +1 -1
  641. package/build-module/components/sidebar-edit-mode/settings-header/index.js +1 -1
  642. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +1 -1
  643. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js +1 -1
  644. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +64 -0
  645. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
  646. package/build-module/components/sidebar-edit-mode/template-panel/index.js +1 -1
  647. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +1 -1
  648. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +4 -4
  649. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
  650. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +76 -0
  651. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
  652. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +11 -4
  653. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  654. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +2 -2
  655. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -1
  656. package/build-module/components/sidebar-navigation-item/index.js +1 -1
  657. package/build-module/components/sidebar-navigation-screen/index.js +1 -1
  658. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +1 -1
  659. package/build-module/components/sidebar-navigation-screen-details-panel/index.js +1 -1
  660. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js +1 -1
  661. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +1 -1
  662. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js +1 -1
  663. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  664. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -1
  665. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +1 -1
  666. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +1 -1
  667. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js +1 -1
  668. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +1 -1
  669. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +1 -1
  670. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -1
  671. package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  672. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +1 -1
  673. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +1 -1
  674. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +1 -1
  675. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +1 -1
  676. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +1 -1
  677. package/build-module/components/sidebar-navigation-screen-page/index.js +1 -1
  678. package/build-module/components/sidebar-navigation-screen-page/page-details.js +1 -1
  679. package/build-module/components/sidebar-navigation-screen-page/status-label.js +1 -1
  680. package/build-module/components/sidebar-navigation-screen-pages/index.js +13 -5
  681. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  682. package/build-module/components/sidebar-navigation-screen-pattern/index.js +1 -1
  683. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +4 -2
  684. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  685. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list.js +1 -1
  686. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +4 -2
  687. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  688. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  689. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +8 -2
  690. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  691. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  692. package/build-module/components/sidebar-navigation-screen-patterns/category-item.js +1 -1
  693. package/build-module/components/sidebar-navigation-screen-patterns/index.js +15 -3
  694. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  695. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +15 -20
  696. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  697. package/build-module/components/sidebar-navigation-screen-template/index.js +1 -1
  698. package/build-module/components/sidebar-navigation-screen-templates/index.js +1 -1
  699. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +17 -5
  700. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  701. package/build-module/components/site-hub/index.js +1 -1
  702. package/build-module/components/site-icon/index.js +1 -1
  703. package/build-module/components/start-template-options/index.js +4 -4
  704. package/build-module/components/start-template-options/index.js.map +1 -1
  705. package/build-module/components/style-book/index.js +1 -1
  706. package/build-module/components/table/index.js +1 -1
  707. package/build-module/components/template-actions/index.js +1 -1
  708. package/build-module/components/template-actions/rename-menu-item.js +1 -1
  709. package/build-module/components/template-part-converter/convert-to-regular.js +1 -1
  710. package/build-module/components/template-part-converter/convert-to-template-part.js +1 -1
  711. package/build-module/components/template-part-converter/index.js +1 -1
  712. package/build-module/components/welcome-guide/editor.js +1 -1
  713. package/build-module/components/welcome-guide/image.js +1 -1
  714. package/build-module/components/welcome-guide/index.js +1 -1
  715. package/build-module/components/welcome-guide/page.js +1 -1
  716. package/build-module/components/welcome-guide/styles.js +1 -1
  717. package/build-module/components/welcome-guide/template.js +1 -1
  718. package/build-module/hooks/commands/use-common-commands.js +4 -4
  719. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  720. package/build-module/hooks/navigation-menu-edit.js +1 -1
  721. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
  722. package/build-module/hooks/template-part-edit.js +1 -1
  723. package/build-module/index.js +1 -1
  724. package/build-module/utils/constants.js +1 -1
  725. package/build-module/utils/constants.js.map +1 -1
  726. package/build-module/utils/get-is-list-page.js +1 -1
  727. package/build-module/utils/get-is-list-page.js.map +1 -1
  728. package/build-style/style-rtl.css +93 -18
  729. package/build-style/style.css +93 -18
  730. package/package.json +41 -40
  731. package/src/components/add-new-pattern/index.js +7 -10
  732. package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +10 -5
  733. package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +33 -4
  734. package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +27 -14
  735. package/src/components/dataviews/dataviews.js +60 -0
  736. package/src/components/dataviews/index.js +2 -0
  737. package/src/components/dataviews/list-view.js +106 -0
  738. package/src/components/dataviews/pagination.js +118 -0
  739. package/src/components/dataviews/style.scss +36 -0
  740. package/src/components/dataviews/text-filter.js +37 -0
  741. package/src/components/dataviews/view-actions.js +246 -0
  742. package/src/components/global-styles/font-families.js +1 -5
  743. package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  744. package/src/components/global-styles/font-library-modal/context.js +36 -38
  745. package/src/components/global-styles/font-library-modal/font-collection.js +41 -12
  746. package/src/components/global-styles/font-library-modal/index.js +16 -6
  747. package/src/components/global-styles/font-library-modal/installed-fonts.js +36 -6
  748. package/src/components/global-styles/font-library-modal/local-fonts.js +65 -23
  749. package/src/components/global-styles/font-library-modal/resolvers.js +1 -1
  750. package/src/components/global-styles/font-library-modal/style.scss +18 -1
  751. package/src/components/global-styles/font-library-modal/upload-fonts.js +20 -0
  752. package/src/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -3
  753. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +62 -0
  754. package/src/components/global-styles/font-library-modal/utils/index.js +5 -1
  755. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +1 -1
  756. package/src/components/global-styles/screen-typography.js +3 -4
  757. package/src/components/header-edit-mode/plugin-more-menu-item/index.js +1 -1
  758. package/src/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js +1 -1
  759. package/src/components/page-content-focus-manager/index.js +29 -4
  760. package/src/components/page-main/index.js +3 -0
  761. package/src/components/page-pages/index.js +190 -0
  762. package/src/components/page-patterns/grid.js +1 -1
  763. package/src/components/page-patterns/patterns-list.js +1 -1
  764. package/src/components/page-patterns/use-patterns.js +7 -3
  765. package/src/components/page-template-parts/index.js +14 -1
  766. package/src/components/plugin-template-setting-panel/index.js +1 -1
  767. package/src/components/sidebar/index.js +11 -0
  768. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +31 -16
  769. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +1 -1
  770. package/src/components/sidebar-edit-mode/template-panel/hooks.js +97 -0
  771. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +18 -16
  772. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +89 -0
  773. package/src/components/sidebar-edit-mode/template-panel/style.scss +18 -0
  774. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +27 -12
  775. package/src/components/sidebar-edit-mode/template-panel/template-areas.js +1 -1
  776. package/src/components/sidebar-navigation-screen/style.scss +0 -1
  777. package/src/components/sidebar-navigation-screen-pages/index.js +11 -4
  778. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +3 -1
  779. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -1
  780. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -5
  781. package/src/components/sidebar-navigation-screen-patterns/index.js +25 -4
  782. package/src/components/sidebar-navigation-screen-template/home-template-details.js +27 -35
  783. package/src/components/sidebar-navigation-screen-templates-browse/index.js +12 -4
  784. package/src/components/start-template-options/index.js +3 -3
  785. package/src/hooks/commands/use-common-commands.js +12 -4
  786. package/src/style.scss +1 -0
  787. package/src/utils/constants.js +1 -1
  788. package/src/utils/get-is-list-page.js +3 -2
@@ -1,9 +1,9 @@
1
- import { createElement, Fragment } from "@wordpress/element";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { useContext, useEffect, useState, useMemo } from '@wordpress/element';
6
- import { __experimentalSpacer as Spacer, __experimentalInputControl as InputControl, __experimentalText as Text, SelectControl, Spinner, Icon, FlexItem, Flex, Button } from '@wordpress/components';
6
+ import { __experimentalSpacer as Spacer, __experimentalInputControl as InputControl, __experimentalText as Text, SelectControl, Spinner, Icon, FlexItem, Flex, Button, Notice } from '@wordpress/components';
7
7
  import { debounce } from '@wordpress/compose';
8
8
  import { __ } from '@wordpress/i18n';
9
9
  import { search, closeSmall } from '@wordpress/icons';
@@ -20,6 +20,7 @@ import CollectionFontDetails from './collection-font-details';
20
20
  import { toggleFont } from './utils/toggleFont';
21
21
  import { getFontsOutline } from './utils/fonts-outline';
22
22
  import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
23
+ import { getNoticeFromInstallResponse } from './utils/get-notice-from-response';
23
24
  const DEFAULT_CATEGORY = {
24
25
  id: 'all',
25
26
  name: __('All')
@@ -32,13 +33,15 @@ function FontCollection({
32
33
  const getGoogleFontsPermissionFromStorage = () => {
33
34
  return window.localStorage.getItem('wp-font-library-default-font-collection-permission') === 'true';
34
35
  };
36
+ const [notice, setNotice] = useState(null);
35
37
  const [selectedFont, setSelectedFont] = useState(null);
36
38
  const [fontsToInstall, setFontsToInstall] = useState([]);
37
39
  const [filters, setFilters] = useState({});
38
40
  const [renderConfirmDialog, setRenderConfirmDialog] = useState(requiresPermission && !getGoogleFontsPermissionFromStorage());
39
41
  const {
40
42
  collections,
41
- getFontCollection
43
+ getFontCollection,
44
+ installFonts
42
45
  } = useContext(FontLibraryContext);
43
46
  const selectedCollection = collections.find(collection => collection.id === id);
44
47
  useEffect(() => {
@@ -56,6 +59,16 @@ function FontCollection({
56
59
  useEffect(() => {
57
60
  setSelectedFont(null);
58
61
  }, [id]);
62
+
63
+ // Reset notice after 5 seconds
64
+ useEffect(() => {
65
+ if (notice) {
66
+ const timeout = setTimeout(() => {
67
+ setNotice(null);
68
+ }, 5000);
69
+ return () => clearTimeout(timeout);
70
+ }
71
+ }, [notice]);
59
72
  const collectionFonts = useMemo(() => {
60
73
  var _selectedCollection$d;
61
74
  return (_selectedCollection$d = selectedCollection?.data?.fontFamilies) !== null && _selectedCollection$d !== void 0 ? _selectedCollection$d : [];
@@ -96,17 +109,30 @@ function FontCollection({
96
109
  const resetFontsToInstall = () => {
97
110
  setFontsToInstall([]);
98
111
  };
112
+ const handleInstall = async () => {
113
+ const response = await installFonts(fontsToInstall);
114
+ const installNotice = getNoticeFromInstallResponse(response);
115
+ setNotice(installNotice);
116
+ resetFontsToInstall();
117
+ };
99
118
  return createElement(TabLayout, {
100
119
  title: !selectedFont ? selectedCollection.name : selectedFont.name,
101
120
  description: !selectedFont ? selectedCollection.description : __('Select font variants to install.'),
102
121
  handleBack: !!selectedFont && handleUnselectFont,
103
122
  footer: fontsToInstall.length > 0 && createElement(Footer, {
104
- fontsToInstall: fontsToInstall,
105
- resetFontsToInstall: resetFontsToInstall
123
+ handleInstall: handleInstall
106
124
  })
107
125
  }, renderConfirmDialog && createElement(Fragment, null, createElement(Spacer, {
108
126
  margin: 8
109
- }), createElement(GoogleFontsConfirmDialog, null)), !renderConfirmDialog && !selectedCollection.data && createElement(Spinner, null), !renderConfirmDialog && !selectedFont && createElement(Flex, null, createElement(FlexItem, null, createElement(InputControl, {
127
+ }), createElement(GoogleFontsConfirmDialog, null)), !renderConfirmDialog && !selectedCollection.data && createElement(Spinner, null), notice && createElement(Fragment, null, createElement(FlexItem, null, createElement(Spacer, {
128
+ margin: 2
129
+ }), createElement(Notice, {
130
+ isDismissible: false,
131
+ status: notice.type,
132
+ className: "font-library-modal__font-collection__notice"
133
+ }, notice.message)), createElement(Spacer, {
134
+ margin: 2
135
+ })), !renderConfirmDialog && !selectedFont && createElement(Flex, null, createElement(FlexItem, null, createElement(InputControl, {
110
136
  value: filters.search,
111
137
  placeholder: __('Font name…'),
112
138
  label: __('Search'),
@@ -140,17 +166,11 @@ function FontCollection({
140
166
  }))));
141
167
  }
142
168
  function Footer({
143
- fontsToInstall,
144
- resetFontsToInstall
169
+ handleInstall
145
170
  }) {
146
171
  const {
147
- installFonts,
148
172
  isInstalling
149
173
  } = useContext(FontLibraryContext);
150
- const handleInstall = async () => {
151
- await installFonts(fontsToInstall);
152
- resetFontsToInstall();
153
- };
154
174
  return createElement(Flex, {
155
175
  justify: "flex-end"
156
176
  }, createElement(Button, {
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useEffect","useState","useMemo","__experimentalSpacer","Spacer","__experimentalInputControl","InputControl","__experimentalText","Text","SelectControl","Spinner","Icon","FlexItem","Flex","Button","debounce","__","search","closeSmall","TabLayout","FontLibraryContext","FontsGrid","FontCard","filterFonts","CollectionFontDetails","toggleFont","getFontsOutline","GoogleFontsConfirmDialog","DEFAULT_CATEGORY","id","name","FontCollection","_selectedCollection$d2","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","selectedFont","setSelectedFont","fontsToInstall","setFontsToInstall","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","selectedCollection","find","collection","handleStorage","addEventListener","removeEventListener","resetFilters","collectionFonts","_selectedCollection$d","data","fontFamilies","collectionCategories","categories","fonts","handleCategoryFilter","category","handleUpdateSearchInput","value","debouncedUpdateSearchInput","resetSearch","handleUnselectFont","handleToggleVariant","font","face","newFontsToInstall","fontToInstallOutline","resetFontsToInstall","createElement","title","description","handleBack","footer","length","Footer","Fragment","margin","placeholder","label","onChange","prefix","icon","suffix","onClick","map","key","slug","installFonts","isInstalling","handleInstall","justify","variant","isBusy","disabled"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext, useEffect, useState, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalInputControl as InputControl,\n\t__experimentalText as Text,\n\tSelectControl,\n\tSpinner,\n\tIcon,\n\tFlexItem,\n\tFlex,\n\tButton,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { search, closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport CollectionFontDetails from './collection-font-details';\nimport { toggleFont } from './utils/toggleFont';\nimport { getFontsOutline } from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\n\nconst DEFAULT_CATEGORY = {\n\tid: 'all',\n\tname: __( 'All' ),\n};\nfunction FontCollection( { id } ) {\n\tconst requiresPermission = id === 'default-font-collection';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(\n\t\t\t\t'wp-font-library-default-font-collection-permission'\n\t\t\t) === 'true'\n\t\t);\n\t};\n\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { collections, getFontCollection } = useContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.id === id\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ id, requiresPermission ] );\n\n\tuseEffect( () => {\n\t\tgetFontCollection( id );\n\t\tresetFilters();\n\t}, [ id, getFontCollection ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t}, [ id ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.data?.fontFamilies ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.data?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t};\n\n\tconst resetSearch = () => {\n\t\tsetFilters( { ...filters, search: '' } );\n\t};\n\n\tconst handleUnselectFont = () => {\n\t\tsetSelectedFont( null );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={\n\t\t\t\t! selectedFont ? selectedCollection.name : selectedFont.name\n\t\t\t}\n\t\t\tdescription={\n\t\t\t\t! selectedFont\n\t\t\t\t\t? selectedCollection.description\n\t\t\t\t\t: __( 'Select font variants to install.' )\n\t\t\t}\n\t\t\thandleBack={ !! selectedFont && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\tfontsToInstall.length > 0 && (\n\t\t\t\t\t<Footer\n\t\t\t\t\t\tfontsToInstall={ fontsToInstall }\n\t\t\t\t\t\tresetFontsToInstall={ resetFontsToInstall }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ renderConfirmDialog && (\n\t\t\t\t<>\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<GoogleFontsConfirmDialog />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedCollection.data && (\n\t\t\t\t<Spinner />\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\tprefix={ <Icon icon={ search } /> }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tfilters?.search ? (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\t\t\t\tonClick={ resetSearch }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tvalue={ category.id }\n\t\t\t\t\t\t\t\t\t\tkey={ category.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t! selectedCollection?.data?.fontFamilies && <Spinner /> }\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t!! selectedCollection?.data?.fontFamilies?.length &&\n\t\t\t\t! fonts.length && (\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'No fonts found. Try with a different seach term'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && selectedFont && (\n\t\t\t\t<CollectionFontDetails\n\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\tfontToInstallOutline={ fontToInstallOutline }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<FontsGrid>\n\t\t\t\t\t{ fonts.map( ( font ) => (\n\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetSelectedFont( font );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</FontsGrid>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { fontsToInstall, resetFontsToInstall } ) {\n\tconst { installFonts, isInstalling } = useContext( FontLibraryContext );\n\n\tconst handleInstall = async () => {\n\t\tawait installFonts( fontsToInstall );\n\t\tresetFontsToInstall();\n\t};\n\n\treturn (\n\t\t<Flex justify=\"flex-end\">\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ handleInstall }\n\t\t\t\tisBusy={ isInstalling }\n\t\t\t\tdisabled={ isInstalling }\n\t\t\t>\n\t\t\t\t{ __( 'Install' ) }\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,OAAO,QAAQ,oBAAoB;AAC7E,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,0BAA0B,IAAIC,YAAY,EAC1CC,kBAAkB,IAAIC,IAAI,EAC1BC,aAAa,EACbC,OAAO,EACPC,IAAI,EACJC,QAAQ,EACRC,IAAI,EACJC,MAAM,QACA,uBAAuB;AAC9B,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,EAAEC,UAAU,QAAQ,kBAAkB;;AAErD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,SAASC,kBAAkB,QAAQ,WAAW;AAC9C,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,WAAW,MAAM,sBAAsB;AAC9C,OAAOC,qBAAqB,MAAM,2BAA2B;AAC7D,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,eAAe,QAAQ,uBAAuB;AACvD,OAAOC,wBAAwB,MAAM,+BAA+B;AAEpE,MAAMC,gBAAgB,GAAG;EACxBC,EAAE,EAAE,KAAK;EACTC,IAAI,EAAEd,EAAE,CAAE,KAAM;AACjB,CAAC;AACD,SAASe,cAAcA,CAAE;EAAEF;AAAG,CAAC,EAAG;EAAA,IAAAG,sBAAA;EACjC,MAAMC,kBAAkB,GAAGJ,EAAE,KAAK,yBAAyB;EAE3D,MAAMK,mCAAmC,GAAGA,CAAA,KAAM;IACjD,OACCC,MAAM,CAACC,YAAY,CAACC,OAAO,CAC1B,oDACD,CAAC,KAAK,MAAM;EAEd,CAAC;EAED,MAAM,CAAEC,YAAY,EAAEC,eAAe,CAAE,GAAGtC,QAAQ,CAAE,IAAK,CAAC;EAC1D,MAAM,CAAEuC,cAAc,EAAEC,iBAAiB,CAAE,GAAGxC,QAAQ,CAAE,EAAG,CAAC;EAC5D,MAAM,CAAEyC,OAAO,EAAEC,UAAU,CAAE,GAAG1C,QAAQ,CAAE,CAAC,CAAE,CAAC;EAC9C,MAAM,CAAE2C,mBAAmB,EAAEC,sBAAsB,CAAE,GAAG5C,QAAQ,CAC/DgC,kBAAkB,IAAI,CAAEC,mCAAmC,CAAC,CAC7D,CAAC;EACD,MAAM;IAAEY,WAAW;IAAEC;EAAkB,CAAC,GAAGhD,UAAU,CAAEqB,kBAAmB,CAAC;EAC3E,MAAM4B,kBAAkB,GAAGF,WAAW,CAACG,IAAI,CACxCC,UAAU,IAAMA,UAAU,CAACrB,EAAE,KAAKA,EACrC,CAAC;EAED7B,SAAS,CAAE,MAAM;IAChB,MAAMmD,aAAa,GAAGA,CAAA,KAAM;MAC3BN,sBAAsB,CACrBZ,kBAAkB,IAAI,CAAEC,mCAAmC,CAAC,CAC7D,CAAC;IACF,CAAC;IACDiB,aAAa,CAAC,CAAC;IACfhB,MAAM,CAACiB,gBAAgB,CAAE,SAAS,EAAED,aAAc,CAAC;IACnD,OAAO,MAAMhB,MAAM,CAACkB,mBAAmB,CAAE,SAAS,EAAEF,aAAc,CAAC;EACpE,CAAC,EAAE,CAAEtB,EAAE,EAAEI,kBAAkB,CAAG,CAAC;EAE/BjC,SAAS,CAAE,MAAM;IAChB+C,iBAAiB,CAAElB,EAAG,CAAC;IACvByB,YAAY,CAAC,CAAC;EACf,CAAC,EAAE,CAAEzB,EAAE,EAAEkB,iBAAiB,CAAG,CAAC;EAE9B/C,SAAS,CAAE,MAAM;IAChBuC,eAAe,CAAE,IAAK,CAAC;EACxB,CAAC,EAAE,CAAEV,EAAE,CAAG,CAAC;EAEX,MAAM0B,eAAe,GAAGrD,OAAO,CAC9B;IAAA,IAAAsD,qBAAA;IAAA,QAAAA,qBAAA,GAAMR,kBAAkB,EAAES,IAAI,EAAEC,YAAY,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EAAA,GAClD,CAAER,kBAAkB,CACrB,CAAC;EACD,MAAMW,oBAAoB,IAAA3B,sBAAA,GAAGgB,kBAAkB,EAAES,IAAI,EAAEG,UAAU,cAAA5B,sBAAA,cAAAA,sBAAA,GAAI,EAAE;EAEvE,MAAM4B,UAAU,GAAG,CAAEhC,gBAAgB,EAAE,GAAG+B,oBAAoB,CAAE;EAEhE,MAAME,KAAK,GAAG3D,OAAO,CACpB,MAAMqB,WAAW,CAAEgC,eAAe,EAAEb,OAAQ,CAAC,EAC7C,CAAEa,eAAe,EAAEb,OAAO,CAC3B,CAAC;EAED,MAAMoB,oBAAoB,GAAKC,QAAQ,IAAM;IAC5CpB,UAAU,CAAE;MAAE,GAAGD,OAAO;MAAEqB;IAAS,CAAE,CAAC;EACvC,CAAC;EAED,MAAMC,uBAAuB,GAAKC,KAAK,IAAM;IAC5CtB,UAAU,CAAE;MAAE,GAAGD,OAAO;MAAEzB,MAAM,EAAEgD;IAAM,CAAE,CAAC;EAC5C,CAAC;EAED,MAAMC,0BAA0B,GAAGnD,QAAQ,CAAEiD,uBAAuB,EAAE,GAAI,CAAC;EAE3E,MAAMV,YAAY,GAAGA,CAAA,KAAM;IAC1BX,UAAU,CAAE,CAAC,CAAE,CAAC;EACjB,CAAC;EAED,MAAMwB,WAAW,GAAGA,CAAA,KAAM;IACzBxB,UAAU,CAAE;MAAE,GAAGD,OAAO;MAAEzB,MAAM,EAAE;IAAG,CAAE,CAAC;EACzC,CAAC;EAED,MAAMmD,kBAAkB,GAAGA,CAAA,KAAM;IAChC7B,eAAe,CAAE,IAAK,CAAC;EACxB,CAAC;EAED,MAAM8B,mBAAmB,GAAGA,CAAEC,IAAI,EAAEC,IAAI,KAAM;IAC7C,MAAMC,iBAAiB,GAAG/C,UAAU,CAAE6C,IAAI,EAAEC,IAAI,EAAE/B,cAAe,CAAC;IAClEC,iBAAiB,CAAE+B,iBAAkB,CAAC;EACvC,CAAC;EAED,MAAMC,oBAAoB,GAAG/C,eAAe,CAAEc,cAAe,CAAC;EAE9D,MAAMkC,mBAAmB,GAAGA,CAAA,KAAM;IACjCjC,iBAAiB,CAAE,EAAG,CAAC;EACxB,CAAC;EAED,OACCkC,aAAA,CAACxD,SAAS;IACTyD,KAAK,EACJ,CAAEtC,YAAY,GAAGU,kBAAkB,CAAClB,IAAI,GAAGQ,YAAY,CAACR,IACxD;IACD+C,WAAW,EACV,CAAEvC,YAAY,GACXU,kBAAkB,CAAC6B,WAAW,GAC9B7D,EAAE,CAAE,kCAAmC,CAC1C;IACD8D,UAAU,EAAG,CAAC,CAAExC,YAAY,IAAI8B,kBAAoB;IACpDW,MAAM,EACLvC,cAAc,CAACwC,MAAM,GAAG,CAAC,IACxBL,aAAA,CAACM,MAAM;MACNzC,cAAc,EAAGA,cAAgB;MACjCkC,mBAAmB,EAAGA;IAAqB,CAC3C;EAEF,GAEC9B,mBAAmB,IACpB+B,aAAA,CAAAO,QAAA,QACCP,aAAA,CAACvE,MAAM;IAAC+E,MAAM,EAAG;EAAG,CAAE,CAAC,EACvBR,aAAA,CAAChD,wBAAwB,MAAE,CAC1B,CACF,EAEC,CAAEiB,mBAAmB,IAAI,CAAEI,kBAAkB,CAACS,IAAI,IACnDkB,aAAA,CAACjE,OAAO,MAAE,CACV,EAEC,CAAEkC,mBAAmB,IAAI,CAAEN,YAAY,IACxCqC,aAAA,CAAC9D,IAAI,QACJ8D,aAAA,CAAC/D,QAAQ,QACR+D,aAAA,CAACrE,YAAY;IACZ2D,KAAK,EAAGvB,OAAO,CAACzB,MAAQ;IACxBmE,WAAW,EAAGpE,EAAE,CAAE,YAAa,CAAG;IAClCqE,KAAK,EAAGrE,EAAE,CAAE,QAAS,CAAG;IACxBsE,QAAQ,EAAGpB,0BAA4B;IACvCqB,MAAM,EAAGZ,aAAA,CAAChE,IAAI;MAAC6E,IAAI,EAAGvE;IAAQ,CAAE,CAAG;IACnCwE,MAAM,EACL/C,OAAO,EAAEzB,MAAM,GACd0D,aAAA,CAAChE,IAAI;MACJ6E,IAAI,EAAGtE,UAAY;MACnBwE,OAAO,EAAGvB;IAAa,CACvB,CAAC,GACC;EACJ,CACD,CACQ,CAAC,EACXQ,aAAA,CAAC/D,QAAQ,QACR+D,aAAA,CAAClE,aAAa;IACb4E,KAAK,EAAGrE,EAAE,CAAE,UAAW,CAAG;IAC1BiD,KAAK,EAAGvB,OAAO,CAACqB,QAAU;IAC1BuB,QAAQ,EAAGxB;EAAsB,GAE/BF,UAAU,IACXA,UAAU,CAAC+B,GAAG,CAAI5B,QAAQ,IACzBY,aAAA;IACCV,KAAK,EAAGF,QAAQ,CAAClC,EAAI;IACrB+D,GAAG,EAAG7B,QAAQ,CAAClC;EAAI,GAEjBkC,QAAQ,CAACjC,IACJ,CACP,CACW,CACN,CACL,CACN,EAED6C,aAAA,CAACvE,MAAM;IAAC+E,MAAM,EAAG;EAAG,CAAE,CAAC,EAErB,CAAEvC,mBAAmB,IACtB,CAAEI,kBAAkB,EAAES,IAAI,EAAEC,YAAY,IAAIiB,aAAA,CAACjE,OAAO,MAAE,CAAC,EAEtD,CAAEkC,mBAAmB,IACtB,CAAC,CAAEI,kBAAkB,EAAES,IAAI,EAAEC,YAAY,EAAEsB,MAAM,IACjD,CAAEnB,KAAK,CAACmB,MAAM,IACbL,aAAA,CAACnE,IAAI,QACFQ,EAAE,CACH,iDACD,CACK,CACN,EAEA,CAAE4B,mBAAmB,IAAIN,YAAY,IACtCqC,aAAA,CAACnD,qBAAqB;IACrB8C,IAAI,EAAGhC,YAAc;IACrB+B,mBAAmB,EAAGA,mBAAqB;IAC3CI,oBAAoB,EAAGA;EAAsB,CAC7C,CACD,EAEC,CAAE7B,mBAAmB,IAAI,CAAEN,YAAY,IACxCqC,aAAA,CAACtD,SAAS,QACPwC,KAAK,CAAC8B,GAAG,CAAIrB,IAAI,IAClBK,aAAA,CAACrD,QAAQ;IACRsE,GAAG,EAAGtB,IAAI,CAACuB,IAAM;IACjBvB,IAAI,EAAGA,IAAM;IACboB,OAAO,EAAGA,CAAA,KAAM;MACfnD,eAAe,CAAE+B,IAAK,CAAC;IACxB;EAAG,CACH,CACA,CACQ,CAEF,CAAC;AAEd;AAEA,SAASW,MAAMA,CAAE;EAAEzC,cAAc;EAAEkC;AAAoB,CAAC,EAAG;EAC1D,MAAM;IAAEoB,YAAY;IAAEC;EAAa,CAAC,GAAGhG,UAAU,CAAEqB,kBAAmB,CAAC;EAEvE,MAAM4E,aAAa,GAAG,MAAAA,CAAA,KAAY;IACjC,MAAMF,YAAY,CAAEtD,cAAe,CAAC;IACpCkC,mBAAmB,CAAC,CAAC;EACtB,CAAC;EAED,OACCC,aAAA,CAAC9D,IAAI;IAACoF,OAAO,EAAC;EAAU,GACvBtB,aAAA,CAAC7D,MAAM;IACNoF,OAAO,EAAC,SAAS;IACjBR,OAAO,EAAGM,aAAe;IACzBG,MAAM,EAAGJ,YAAc;IACvBK,QAAQ,EAAGL;EAAc,GAEvB/E,EAAE,CAAE,SAAU,CACT,CACH,CAAC;AAET;AAEA,eAAee,cAAc"}
1
+ {"version":3,"names":["useContext","useEffect","useState","useMemo","__experimentalSpacer","Spacer","__experimentalInputControl","InputControl","__experimentalText","Text","SelectControl","Spinner","Icon","FlexItem","Flex","Button","Notice","debounce","__","search","closeSmall","TabLayout","FontLibraryContext","FontsGrid","FontCard","filterFonts","CollectionFontDetails","toggleFont","getFontsOutline","GoogleFontsConfirmDialog","getNoticeFromInstallResponse","DEFAULT_CATEGORY","id","name","FontCollection","_selectedCollection$d2","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","notice","setNotice","selectedFont","setSelectedFont","fontsToInstall","setFontsToInstall","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","installFonts","selectedCollection","find","collection","handleStorage","addEventListener","removeEventListener","resetFilters","timeout","setTimeout","clearTimeout","collectionFonts","_selectedCollection$d","data","fontFamilies","collectionCategories","categories","fonts","handleCategoryFilter","category","handleUpdateSearchInput","value","debouncedUpdateSearchInput","resetSearch","handleUnselectFont","handleToggleVariant","font","face","newFontsToInstall","fontToInstallOutline","resetFontsToInstall","handleInstall","response","installNotice","createElement","title","description","handleBack","footer","length","Footer","Fragment","margin","isDismissible","status","type","className","message","placeholder","label","onChange","prefix","icon","suffix","onClick","map","key","slug","isInstalling","justify","variant","isBusy","disabled"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext, useEffect, useState, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalInputControl as InputControl,\n\t__experimentalText as Text,\n\tSelectControl,\n\tSpinner,\n\tIcon,\n\tFlexItem,\n\tFlex,\n\tButton,\n\tNotice,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { search, closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport CollectionFontDetails from './collection-font-details';\nimport { toggleFont } from './utils/toggleFont';\nimport { getFontsOutline } from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\nimport { getNoticeFromInstallResponse } from './utils/get-notice-from-response';\n\nconst DEFAULT_CATEGORY = {\n\tid: 'all',\n\tname: __( 'All' ),\n};\nfunction FontCollection( { id } ) {\n\tconst requiresPermission = id === 'default-font-collection';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(\n\t\t\t\t'wp-font-library-default-font-collection-permission'\n\t\t\t) === 'true'\n\t\t);\n\t};\n\n\tconst [ notice, setNotice ] = useState( null );\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { collections, getFontCollection, installFonts } =\n\t\tuseContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.id === id\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ id, requiresPermission ] );\n\n\tuseEffect( () => {\n\t\tgetFontCollection( id );\n\t\tresetFilters();\n\t}, [ id, getFontCollection ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t}, [ id ] );\n\n\t// Reset notice after 5 seconds\n\tuseEffect( () => {\n\t\tif ( notice ) {\n\t\t\tconst timeout = setTimeout( () => {\n\t\t\t\tsetNotice( null );\n\t\t\t}, 5000 );\n\t\t\treturn () => clearTimeout( timeout );\n\t\t}\n\t}, [ notice ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.data?.fontFamilies ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.data?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t};\n\n\tconst resetSearch = () => {\n\t\tsetFilters( { ...filters, search: '' } );\n\t};\n\n\tconst handleUnselectFont = () => {\n\t\tsetSelectedFont( null );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\tconst handleInstall = async () => {\n\t\tconst response = await installFonts( fontsToInstall );\n\t\tconst installNotice = getNoticeFromInstallResponse( response );\n\t\tsetNotice( installNotice );\n\t\tresetFontsToInstall();\n\t};\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={\n\t\t\t\t! selectedFont ? selectedCollection.name : selectedFont.name\n\t\t\t}\n\t\t\tdescription={\n\t\t\t\t! selectedFont\n\t\t\t\t\t? selectedCollection.description\n\t\t\t\t\t: __( 'Select font variants to install.' )\n\t\t\t}\n\t\t\thandleBack={ !! selectedFont && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\tfontsToInstall.length > 0 && (\n\t\t\t\t\t<Footer handleInstall={ handleInstall } />\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ renderConfirmDialog && (\n\t\t\t\t<>\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<GoogleFontsConfirmDialog />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedCollection.data && (\n\t\t\t\t<Spinner />\n\t\t\t) }\n\n\t\t\t{ notice && (\n\t\t\t\t<>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\tclassName=\"font-library-modal__font-collection__notice\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\tprefix={ <Icon icon={ search } /> }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tfilters?.search ? (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\t\t\t\tonClick={ resetSearch }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tvalue={ category.id }\n\t\t\t\t\t\t\t\t\t\tkey={ category.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t! selectedCollection?.data?.fontFamilies && <Spinner /> }\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t!! selectedCollection?.data?.fontFamilies?.length &&\n\t\t\t\t! fonts.length && (\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'No fonts found. Try with a different seach term'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && selectedFont && (\n\t\t\t\t<CollectionFontDetails\n\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\tfontToInstallOutline={ fontToInstallOutline }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<FontsGrid>\n\t\t\t\t\t{ fonts.map( ( font ) => (\n\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetSelectedFont( font );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</FontsGrid>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { handleInstall } ) {\n\tconst { isInstalling } = useContext( FontLibraryContext );\n\n\treturn (\n\t\t<Flex justify=\"flex-end\">\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ handleInstall }\n\t\t\t\tisBusy={ isInstalling }\n\t\t\t\tdisabled={ isInstalling }\n\t\t\t>\n\t\t\t\t{ __( 'Install' ) }\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement, Fragment } from "@wordpress/element";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -11,12 +11,17 @@ import { useContext } from '@wordpress/element';
11
11
  */
12
12
  import InstalledFonts from './installed-fonts';
13
13
  import FontCollection from './font-collection';
14
+ import UploadFonts from './upload-fonts';
14
15
  import { FontLibraryContext } from './context';
15
- const INSTALLED_FONTS_TAB = {
16
+ const DEFAULT_TABS = [{
16
17
  name: 'installed-fonts',
17
18
  title: __('Library'),
18
19
  className: 'installed-fonts'
19
- };
20
+ }, {
21
+ name: 'upload-fonts',
22
+ title: __('Upload'),
23
+ className: 'upload-fonts'
24
+ }];
20
25
  const tabsFromCollections = collections => collections.map(({
21
26
  id,
22
27
  name
@@ -32,7 +37,7 @@ function FontLibraryModal({
32
37
  const {
33
38
  collections
34
39
  } = useContext(FontLibraryContext);
35
- const tabs = [INSTALLED_FONTS_TAB, ...tabsFromCollections(collections || [])];
40
+ const tabs = [...DEFAULT_TABS, ...tabsFromCollections(collections || [])];
36
41
  return createElement(Modal, {
37
42
  title: __('Fonts'),
38
43
  onRequestClose: onRequestClose,
@@ -44,6 +49,8 @@ function FontLibraryModal({
44
49
  tabs: tabs
45
50
  }, tab => {
46
51
  switch (tab.name) {
52
+ case 'upload-fonts':
53
+ return createElement(UploadFonts, null);
47
54
  case 'installed-fonts':
48
55
  return createElement(InstalledFonts, null);
49
56
  default:
@@ -1 +1 @@
1
- {"version":3,"names":["__","Modal","TabPanel","useContext","InstalledFonts","FontCollection","FontLibraryContext","INSTALLED_FONTS_TAB","name","title","className","tabsFromCollections","collections","map","id","length","FontLibraryModal","onRequestClose","initialTabName","tabs","createElement","isFullScreen","tab"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Modal, TabPanel } from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InstalledFonts from './installed-fonts';\nimport FontCollection from './font-collection';\nimport { FontLibraryContext } from './context';\n\nconst INSTALLED_FONTS_TAB = {\n\tname: 'installed-fonts',\n\ttitle: __( 'Library' ),\n\tclassName: 'installed-fonts',\n};\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { id, name } ) => ( {\n\t\tname: id,\n\t\ttitle:\n\t\t\tcollections.length === 1 && id === 'default-font-collection'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t\tclassName: 'collection',\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tinitialTabName = 'installed-fonts',\n} ) {\n\tconst { collections } = useContext( FontLibraryContext );\n\n\tconst tabs = [\n\t\tINSTALLED_FONTS_TAB,\n\t\t...tabsFromCollections( collections || [] ),\n\t];\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Fonts' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\tisFullScreen\n\t\t\tclassName=\"font-library-modal\"\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\tclassName=\"font-library-modal__tab-panel\"\n\t\t\t\tinitialTabName={ initialTabName }\n\t\t\t\ttabs={ tabs }\n\t\t\t>\n\t\t\t\t{ ( tab ) => {\n\t\t\t\t\tswitch ( tab.name ) {\n\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\treturn <InstalledFonts />;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn <FontCollection id={ tab.name } />;\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t</TabPanel>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,QAAQ,QAAQ,uBAAuB;AACvD,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,MAAMC,mBAAmB,GAAG;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,KAAK,EAAET,EAAE,CAAE,SAAU,CAAC;EACtBU,SAAS,EAAE;AACZ,CAAC;AAED,MAAMC,mBAAmB,GAAKC,WAAW,IACxCA,WAAW,CAACC,GAAG,CAAE,CAAE;EAAEC,EAAE;EAAEN;AAAK,CAAC,MAAQ;EACtCA,IAAI,EAAEM,EAAE;EACRL,KAAK,EACJG,WAAW,CAACG,MAAM,KAAK,CAAC,IAAID,EAAE,KAAK,yBAAyB,GACzDd,EAAE,CAAE,eAAgB,CAAC,GACrBQ,IAAI;EACRE,SAAS,EAAE;AACZ,CAAC,CAAG,CAAC;AAEN,SAASM,gBAAgBA,CAAE;EAC1BC,cAAc;EACdC,cAAc,GAAG;AAClB,CAAC,EAAG;EACH,MAAM;IAAEN;EAAY,CAAC,GAAGT,UAAU,CAAEG,kBAAmB,CAAC;EAExD,MAAMa,IAAI,GAAG,CACZZ,mBAAmB,EACnB,GAAGI,mBAAmB,CAAEC,WAAW,IAAI,EAAG,CAAC,CAC3C;EAED,OACCQ,aAAA,CAACnB,KAAK;IACLQ,KAAK,EAAGT,EAAE,CAAE,OAAQ,CAAG;IACvBiB,cAAc,EAAGA,cAAgB;IACjCI,YAAY;IACZX,SAAS,EAAC;EAAoB,GAE9BU,aAAA,CAAClB,QAAQ;IACRQ,SAAS,EAAC,+BAA+B;IACzCQ,cAAc,EAAGA,cAAgB;IACjCC,IAAI,EAAGA;EAAM,GAETG,GAAG,IAAM;IACZ,QAASA,GAAG,CAACd,IAAI;MAChB,KAAK,iBAAiB;QACrB,OAAOY,aAAA,CAAChB,cAAc,MAAE,CAAC;MAC1B;QACC,OAAOgB,aAAA,CAACf,cAAc;UAACS,EAAE,EAAGQ,GAAG,CAACd;QAAM,CAAE,CAAC;IAC3C;EACD,CACS,CACJ,CAAC;AAEV;AAEA,eAAeQ,gBAAgB"}
1
+ {"version":3,"names":["__","Modal","TabPanel","useContext","InstalledFonts","FontCollection","UploadFonts","FontLibraryContext","DEFAULT_TABS","name","title","className","tabsFromCollections","collections","map","id","length","FontLibraryModal","onRequestClose","initialTabName","tabs","createElement","isFullScreen","tab"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Modal, TabPanel } from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InstalledFonts from './installed-fonts';\nimport FontCollection from './font-collection';\nimport UploadFonts from './upload-fonts';\nimport { FontLibraryContext } from './context';\n\nconst DEFAULT_TABS = [\n\t{\n\t\tname: 'installed-fonts',\n\t\ttitle: __( 'Library' ),\n\t\tclassName: 'installed-fonts',\n\t},\n\t{\n\t\tname: 'upload-fonts',\n\t\ttitle: __( 'Upload' ),\n\t\tclassName: 'upload-fonts',\n\t},\n];\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { id, name } ) => ( {\n\t\tname: id,\n\t\ttitle:\n\t\t\tcollections.length === 1 && id === 'default-font-collection'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t\tclassName: 'collection',\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tinitialTabName = 'installed-fonts',\n} ) {\n\tconst { collections } = useContext( FontLibraryContext );\n\n\tconst tabs = [\n\t\t...DEFAULT_TABS,\n\t\t...tabsFromCollections( collections || [] ),\n\t];\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Fonts' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\tisFullScreen\n\t\t\tclassName=\"font-library-modal\"\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\tclassName=\"font-library-modal__tab-panel\"\n\t\t\t\tinitialTabName={ initialTabName }\n\t\t\t\ttabs={ tabs }\n\t\t\t>\n\t\t\t\t{ ( tab ) => {\n\t\t\t\t\tswitch ( tab.name ) {\n\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\treturn <UploadFonts />;\n\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\treturn <InstalledFonts />;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn <FontCollection id={ tab.name } />;\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t</TabPanel>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,QAAQ,QAAQ,uBAAuB;AACvD,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,MAAMC,YAAY,GAAG,CACpB;EACCC,IAAI,EAAE,iBAAiB;EACvBC,KAAK,EAAEV,EAAE,CAAE,SAAU,CAAC;EACtBW,SAAS,EAAE;AACZ,CAAC,EACD;EACCF,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAEV,EAAE,CAAE,QAAS,CAAC;EACrBW,SAAS,EAAE;AACZ,CAAC,CACD;AAED,MAAMC,mBAAmB,GAAKC,WAAW,IACxCA,WAAW,CAACC,GAAG,CAAE,CAAE;EAAEC,EAAE;EAAEN;AAAK,CAAC,MAAQ;EACtCA,IAAI,EAAEM,EAAE;EACRL,KAAK,EACJG,WAAW,CAACG,MAAM,KAAK,CAAC,IAAID,EAAE,KAAK,yBAAyB,GACzDf,EAAE,CAAE,eAAgB,CAAC,GACrBS,IAAI;EACRE,SAAS,EAAE;AACZ,CAAC,CAAG,CAAC;AAEN,SAASM,gBAAgBA,CAAE;EAC1BC,cAAc;EACdC,cAAc,GAAG;AAClB,CAAC,EAAG;EACH,MAAM;IAAEN;EAAY,CAAC,GAAGV,UAAU,CAAEI,kBAAmB,CAAC;EAExD,MAAMa,IAAI,GAAG,CACZ,GAAGZ,YAAY,EACf,GAAGI,mBAAmB,CAAEC,WAAW,IAAI,EAAG,CAAC,CAC3C;EAED,OACCQ,aAAA,CAACpB,KAAK;IACLS,KAAK,EAAGV,EAAE,CAAE,OAAQ,CAAG;IACvBkB,cAAc,EAAGA,cAAgB;IACjCI,YAAY;IACZX,SAAS,EAAC;EAAoB,GAE9BU,aAAA,CAACnB,QAAQ;IACRS,SAAS,EAAC,+BAA+B;IACzCQ,cAAc,EAAGA,cAAgB;IACjCC,IAAI,EAAGA;EAAM,GAETG,GAAG,IAAM;IACZ,QAASA,GAAG,CAACd,IAAI;MAChB,KAAK,cAAc;QAClB,OAAOY,aAAA,CAACf,WAAW,MAAE,CAAC;MACvB,KAAK,iBAAiB;QACrB,OAAOe,aAAA,CAACjB,cAAc,MAAE,CAAC;MAC1B;QACC,OAAOiB,aAAA,CAAChB,cAAc;UAACU,EAAE,EAAGQ,GAAG,CAACd;QAAM,CAAE,CAAC;IAC3C;EACD,CACS,CACJ,CAAC;AAEV;AAEA,eAAeQ,gBAAgB"}
@@ -1,10 +1,10 @@
1
- import { createElement, Fragment } from "@wordpress/element";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { __ } from '@wordpress/i18n';
6
6
  import { useContext, useEffect, useState } from '@wordpress/element';
7
- import { privateApis as componentsPrivateApis, __experimentalHStack as HStack, __experimentalSpacer as Spacer, Button, Spinner } from '@wordpress/components';
7
+ import { privateApis as componentsPrivateApis, __experimentalHStack as HStack, __experimentalSpacer as Spacer, Button, Spinner, Notice, FlexItem } from '@wordpress/components';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -14,8 +14,8 @@ import { FontLibraryContext } from './context';
14
14
  import FontsGrid from './fonts-grid';
15
15
  import LibraryFontDetails from './library-font-details';
16
16
  import LibraryFontCard from './library-font-card';
17
- import LocalFonts from './local-fonts';
18
17
  import ConfirmDeleteDialog from './confirm-delete-dialog';
18
+ import { getNoticeFromUninstallResponse } from './utils/get-notice-from-response';
19
19
  import { unlock } from '../../../lock-unlock';
20
20
  const {
21
21
  ProgressBar
@@ -37,10 +37,13 @@ function InstalledFonts() {
37
37
  const handleSelectFont = font => {
38
38
  handleSetLibraryFontSelected(font);
39
39
  };
40
+ const [notice, setNotice] = useState(null);
40
41
  const handleConfirmUninstall = async () => {
41
- const result = await uninstallFont(libraryFontSelected);
42
+ const response = await uninstallFont(libraryFontSelected);
43
+ const uninstallNotice = getNoticeFromUninstallResponse(response);
44
+ setNotice(uninstallNotice);
42
45
  // If the font was succesfully uninstalled it is unselected
43
- if (result) {
46
+ if (!response?.errors?.length) {
44
47
  handleUnselectFont();
45
48
  }
46
49
  setIsConfirmDeleteOpen(false);
@@ -55,7 +58,18 @@ function InstalledFonts() {
55
58
  const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== 'theme';
56
59
  useEffect(() => {
57
60
  refreshLibrary();
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
58
62
  }, []);
63
+
64
+ // Reset notice after 5 seconds
65
+ useEffect(() => {
66
+ if (notice) {
67
+ const timeout = setTimeout(() => {
68
+ setNotice(null);
69
+ }, 5000);
70
+ return () => clearTimeout(timeout);
71
+ }
72
+ }, [notice]);
59
73
  return createElement(TabLayout, {
60
74
  title: libraryFontSelected?.name || '',
61
75
  description: tabDescription,
@@ -69,7 +83,15 @@ function InstalledFonts() {
69
83
  isConfirmDeleteOpen: isConfirmDeleteOpen,
70
84
  handleConfirmUninstall: handleConfirmUninstall,
71
85
  handleCancelUninstall: handleCancelUninstall
72
- }), !libraryFontSelected && createElement(Fragment, null, isResolvingLibrary && createElement(Spinner, null), baseCustomFonts.length > 0 && createElement(Fragment, null, createElement(Spacer, {
86
+ }), notice && createElement(Fragment, null, createElement(FlexItem, null, createElement(Spacer, {
87
+ margin: 2
88
+ }), createElement(Notice, {
89
+ isDismissible: false,
90
+ status: notice.type,
91
+ className: "font-library-modal__font-collection__notice"
92
+ }, notice.message)), createElement(Spacer, {
93
+ margin: 4
94
+ })), !libraryFontSelected && createElement(Fragment, null, isResolvingLibrary && createElement(Spinner, null), baseCustomFonts.length > 0 && createElement(Fragment, null, createElement(Spacer, {
73
95
  margin: 2
74
96
  }), createElement(FontsGrid, null, baseCustomFonts.map(font => createElement(LibraryFontCard, {
75
97
  font: font,
@@ -87,9 +109,7 @@ function InstalledFonts() {
87
109
  onClick: () => {
88
110
  handleSelectFont(font);
89
111
  }
90
- })))), createElement(Spacer, {
91
- margin: 8
92
- }), createElement(LocalFonts, null)), libraryFontSelected && createElement(LibraryFontDetails, {
112
+ }))))), libraryFontSelected && createElement(LibraryFontDetails, {
93
113
  font: libraryFontSelected,
94
114
  isConfirmDeleteOpen: isConfirmDeleteOpen,
95
115
  handleConfirmUninstall: handleConfirmUninstall,
@@ -1 +1 @@
1
- {"version":3,"names":["__","useContext","useEffect","useState","privateApis","componentsPrivateApis","__experimentalHStack","HStack","__experimentalSpacer","Spacer","Button","Spinner","TabLayout","FontLibraryContext","FontsGrid","LibraryFontDetails","LibraryFontCard","LocalFonts","ConfirmDeleteDialog","unlock","ProgressBar","InstalledFonts","baseCustomFonts","libraryFontSelected","baseThemeFonts","handleSetLibraryFontSelected","refreshLibrary","uninstallFont","isResolvingLibrary","isConfirmDeleteOpen","setIsConfirmDeleteOpen","handleUnselectFont","handleSelectFont","font","handleConfirmUninstall","result","handleUninstallClick","handleCancelUninstall","tabDescription","shouldDisplayDeleteButton","source","createElement","title","name","description","handleBack","footer","Footer","Fragment","length","margin","map","key","slug","onClick","saveFontFamilies","fontFamiliesHasChanges","isInstalling","justify","variant","disabled"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/installed-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useEffect, useState } from '@wordpress/element';\nimport {\n\tprivateApis as componentsPrivateApis,\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n\tButton,\n\tSpinner,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport LibraryFontDetails from './library-font-details';\nimport LibraryFontCard from './library-font-card';\nimport LocalFonts from './local-fonts';\nimport ConfirmDeleteDialog from './confirm-delete-dialog';\nimport { unlock } from '../../../lock-unlock';\nconst { ProgressBar } = unlock( componentsPrivateApis );\n\nfunction InstalledFonts() {\n\tconst {\n\t\tbaseCustomFonts,\n\t\tlibraryFontSelected,\n\t\tbaseThemeFonts,\n\t\thandleSetLibraryFontSelected,\n\t\trefreshLibrary,\n\t\tuninstallFont,\n\t\tisResolvingLibrary,\n\t} = useContext( FontLibraryContext );\n\tconst [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] = useState( false );\n\n\tconst handleUnselectFont = () => {\n\t\thandleSetLibraryFontSelected( null );\n\t};\n\n\tconst handleSelectFont = ( font ) => {\n\t\thandleSetLibraryFontSelected( font );\n\t};\n\n\tconst handleConfirmUninstall = async () => {\n\t\tconst result = await uninstallFont( libraryFontSelected );\n\t\t// If the font was succesfully uninstalled it is unselected\n\t\tif ( result ) {\n\t\t\thandleUnselectFont();\n\t\t}\n\t\tsetIsConfirmDeleteOpen( false );\n\t};\n\n\tconst handleUninstallClick = async () => {\n\t\tsetIsConfirmDeleteOpen( true );\n\t};\n\n\tconst handleCancelUninstall = () => {\n\t\tsetIsConfirmDeleteOpen( false );\n\t};\n\n\tconst tabDescription = !! libraryFontSelected\n\t\t? __(\n\t\t\t\t'Choose font variants. Keep in mind that too many variants could make your site slower.'\n\t\t )\n\t\t: null;\n\n\tconst shouldDisplayDeleteButton =\n\t\t!! libraryFontSelected && libraryFontSelected?.source !== 'theme';\n\n\tuseEffect( () => {\n\t\trefreshLibrary();\n\t}, [] );\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={ libraryFontSelected?.name || '' }\n\t\t\tdescription={ tabDescription }\n\t\t\thandleBack={ !! libraryFontSelected && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\t<Footer\n\t\t\t\t\tshouldDisplayDeleteButton={ shouldDisplayDeleteButton }\n\t\t\t\t\thandleUninstallClick={ handleUninstallClick }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<ConfirmDeleteDialog\n\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\tisConfirmDeleteOpen={ isConfirmDeleteOpen }\n\t\t\t\thandleConfirmUninstall={ handleConfirmUninstall }\n\t\t\t\thandleCancelUninstall={ handleCancelUninstall }\n\t\t\t/>\n\n\t\t\t{ ! libraryFontSelected && (\n\t\t\t\t<>\n\t\t\t\t\t{ isResolvingLibrary && <Spinner /> }\n\t\t\t\t\t{ baseCustomFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t<FontsGrid>\n\t\t\t\t\t\t\t\t{ baseCustomFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</FontsGrid>\n\t\t\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ baseThemeFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<FontsGrid title={ __( 'Theme Fonts' ) }>\n\t\t\t\t\t\t\t\t{ baseThemeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</FontsGrid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<LocalFonts />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ libraryFontSelected && (\n\t\t\t\t<LibraryFontDetails\n\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\tisConfirmDeleteOpen={ isConfirmDeleteOpen }\n\t\t\t\t\thandleConfirmUninstall={ handleConfirmUninstall }\n\t\t\t\t\thandleCancelUninstall={ handleCancelUninstall }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { shouldDisplayDeleteButton, handleUninstallClick } ) {\n\tconst { saveFontFamilies, fontFamiliesHasChanges, isInstalling } =\n\t\tuseContext( FontLibraryContext );\n\treturn (\n\t\t<HStack justify=\"space-between\">\n\t\t\t{ isInstalling && <ProgressBar /> }\n\t\t\t<div>\n\t\t\t\t{ shouldDisplayDeleteButton && (\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ handleUninstallClick }>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tdisabled={ ! fontFamiliesHasChanges }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ saveFontFamilies }\n\t\t\t>\n\t\t\t\t{ __( 'Update' ) }\n\t\t\t</Button>\n\t\t</HStack>\n\t);\n}\n\nexport default InstalledFonts;\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","useContext","useEffect","useState","privateApis","componentsPrivateApis","__experimentalHStack","HStack","__experimentalSpacer","Spacer","Button","Spinner","Notice","FlexItem","TabLayout","FontLibraryContext","FontsGrid","LibraryFontDetails","LibraryFontCard","ConfirmDeleteDialog","getNoticeFromUninstallResponse","unlock","ProgressBar","InstalledFonts","baseCustomFonts","libraryFontSelected","baseThemeFonts","handleSetLibraryFontSelected","refreshLibrary","uninstallFont","isResolvingLibrary","isConfirmDeleteOpen","setIsConfirmDeleteOpen","handleUnselectFont","handleSelectFont","font","notice","setNotice","handleConfirmUninstall","response","uninstallNotice","errors","length","handleUninstallClick","handleCancelUninstall","tabDescription","shouldDisplayDeleteButton","source","timeout","setTimeout","clearTimeout","createElement","title","name","description","handleBack","footer","Footer","Fragment","margin","isDismissible","status","type","className","message","map","key","slug","onClick","saveFontFamilies","fontFamiliesHasChanges","isInstalling","justify","variant","disabled"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/installed-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useEffect, useState } from '@wordpress/element';\nimport {\n\tprivateApis as componentsPrivateApis,\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n\tButton,\n\tSpinner,\n\tNotice,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport LibraryFontDetails from './library-font-details';\nimport LibraryFontCard from './library-font-card';\nimport ConfirmDeleteDialog from './confirm-delete-dialog';\nimport { getNoticeFromUninstallResponse } from './utils/get-notice-from-response';\nimport { unlock } from '../../../lock-unlock';\nconst { ProgressBar } = unlock( componentsPrivateApis );\n\nfunction InstalledFonts() {\n\tconst {\n\t\tbaseCustomFonts,\n\t\tlibraryFontSelected,\n\t\tbaseThemeFonts,\n\t\thandleSetLibraryFontSelected,\n\t\trefreshLibrary,\n\t\tuninstallFont,\n\t\tisResolvingLibrary,\n\t} = useContext( FontLibraryContext );\n\tconst [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] = useState( false );\n\n\tconst handleUnselectFont = () => {\n\t\thandleSetLibraryFontSelected( null );\n\t};\n\n\tconst handleSelectFont = ( font ) => {\n\t\thandleSetLibraryFontSelected( font );\n\t};\n\n\tconst [ notice, setNotice ] = useState( null );\n\n\tconst handleConfirmUninstall = async () => {\n\t\tconst response = await uninstallFont( libraryFontSelected );\n\t\tconst uninstallNotice = getNoticeFromUninstallResponse( response );\n\t\tsetNotice( uninstallNotice );\n\t\t// If the font was succesfully uninstalled it is unselected\n\t\tif ( ! response?.errors?.length ) {\n\t\t\thandleUnselectFont();\n\t\t}\n\t\tsetIsConfirmDeleteOpen( false );\n\t};\n\n\tconst handleUninstallClick = async () => {\n\t\tsetIsConfirmDeleteOpen( true );\n\t};\n\n\tconst handleCancelUninstall = () => {\n\t\tsetIsConfirmDeleteOpen( false );\n\t};\n\n\tconst tabDescription = !! libraryFontSelected\n\t\t? __(\n\t\t\t\t'Choose font variants. Keep in mind that too many variants could make your site slower.'\n\t\t )\n\t\t: null;\n\n\tconst shouldDisplayDeleteButton =\n\t\t!! libraryFontSelected && libraryFontSelected?.source !== 'theme';\n\n\tuseEffect( () => {\n\t\trefreshLibrary();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\t// Reset notice after 5 seconds\n\tuseEffect( () => {\n\t\tif ( notice ) {\n\t\t\tconst timeout = setTimeout( () => {\n\t\t\t\tsetNotice( null );\n\t\t\t}, 5000 );\n\t\t\treturn () => clearTimeout( timeout );\n\t\t}\n\t}, [ notice ] );\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={ libraryFontSelected?.name || '' }\n\t\t\tdescription={ tabDescription }\n\t\t\thandleBack={ !! libraryFontSelected && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\t<Footer\n\t\t\t\t\tshouldDisplayDeleteButton={ shouldDisplayDeleteButton }\n\t\t\t\t\thandleUninstallClick={ handleUninstallClick }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<ConfirmDeleteDialog\n\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\tisConfirmDeleteOpen={ isConfirmDeleteOpen }\n\t\t\t\thandleConfirmUninstall={ handleConfirmUninstall }\n\t\t\t\thandleCancelUninstall={ handleCancelUninstall }\n\t\t\t/>\n\n\t\t\t{ notice && (\n\t\t\t\t<>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\tclassName=\"font-library-modal__font-collection__notice\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! libraryFontSelected && (\n\t\t\t\t<>\n\t\t\t\t\t{ isResolvingLibrary && <Spinner /> }\n\t\t\t\t\t{ baseCustomFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t<FontsGrid>\n\t\t\t\t\t\t\t\t{ baseCustomFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</FontsGrid>\n\t\t\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ baseThemeFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<FontsGrid title={ __( 'Theme Fonts' ) }>\n\t\t\t\t\t\t\t\t{ baseThemeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</FontsGrid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ libraryFontSelected && (\n\t\t\t\t<LibraryFontDetails\n\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\tisConfirmDeleteOpen={ isConfirmDeleteOpen }\n\t\t\t\t\thandleConfirmUninstall={ handleConfirmUninstall }\n\t\t\t\t\thandleCancelUninstall={ handleCancelUninstall }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { shouldDisplayDeleteButton, handleUninstallClick } ) {\n\tconst { saveFontFamilies, fontFamiliesHasChanges, isInstalling } =\n\t\tuseContext( FontLibraryContext );\n\treturn (\n\t\t<HStack justify=\"space-between\">\n\t\t\t{ isInstalling && <ProgressBar /> }\n\t\t\t<div>\n\t\t\t\t{ shouldDisplayDeleteButton && (\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ handleUninstallClick }>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tdisabled={ ! fontFamiliesHasChanges }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ saveFontFamilies }\n\t\t\t>\n\t\t\t\t{ __( 'Update' ) }\n\t\t\t</Button>\n\t\t</HStack>\n\t);\n}\n\nexport default InstalledFonts;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement, Fragment } from "@wordpress/element";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -1,10 +1,10 @@
1
- import { createElement, Fragment } from "@wordpress/element";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { __ } from '@wordpress/i18n';
6
- import { Button, DropZone, __experimentalSpacer as Spacer, __experimentalText as Text, FormFileUpload } from '@wordpress/components';
7
- import { useContext } from '@wordpress/element';
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import { Button, DropZone, __experimentalSpacer as Spacer, __experimentalText as Text, __experimentalVStack as VStack, FormFileUpload, Notice, FlexItem } from '@wordpress/components';
7
+ import { useContext, useState, useEffect } from '@wordpress/element';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -14,10 +14,13 @@ import { FontLibraryContext } from './context';
14
14
  import { Font } from '../../../../lib/lib-font.browser';
15
15
  import makeFamiliesFromFaces from './utils/make-families-from-faces';
16
16
  import { loadFontFaceInBrowser } from './utils';
17
+ import { getNoticeFromInstallResponse } from './utils/get-notice-from-response';
17
18
  function LocalFonts() {
18
19
  const {
19
20
  installFonts
20
21
  } = useContext(FontLibraryContext);
22
+ const [notice, setNotice] = useState(null);
23
+ const supportedFormats = ALLOWED_FILE_EXTENSIONS.slice(0, -1).map(extension => `.${extension}`).join(', ') + ` ${__('and')} .${ALLOWED_FILE_EXTENSIONS.slice(-1)}`;
21
24
  const handleDropZone = files => {
22
25
  handleFilesUpload(files);
23
26
  };
@@ -25,6 +28,16 @@ function LocalFonts() {
25
28
  handleFilesUpload(event.target.files);
26
29
  };
27
30
 
31
+ // Reset notice after 5 seconds
32
+ useEffect(() => {
33
+ if (notice) {
34
+ const timeout = setTimeout(() => {
35
+ setNotice(null);
36
+ }, 5000);
37
+ return () => clearTimeout(timeout);
38
+ }
39
+ }, [notice]);
40
+
28
41
  /**
29
42
  * Filters the selected files to only allow the ones with the allowed extensions
30
43
  *
@@ -32,6 +45,7 @@ function LocalFonts() {
32
45
  * @return {void}
33
46
  */
34
47
  const handleFilesUpload = files => {
48
+ setNotice(null);
35
49
  const uniqueFilenames = new Set();
36
50
  const selectedFiles = [...files];
37
51
  const allowedFiles = selectedFiles.filter(file => {
@@ -111,15 +125,17 @@ function LocalFonts() {
111
125
  */
112
126
  const handleInstall = async fontFaces => {
113
127
  const fontFamilies = makeFamiliesFromFaces(fontFaces);
114
- await installFonts(fontFamilies);
128
+ const response = await installFonts(fontFamilies);
129
+ const installNotice = getNoticeFromInstallResponse(response);
130
+ setNotice(installNotice);
115
131
  };
116
- return createElement(Fragment, null, createElement(Text, {
117
- className: "font-library-modal__subtitle"
118
- }, __('Upload Fonts')), createElement(Spacer, {
119
- margin: 2
132
+ return createElement(Fragment, null, createElement(Spacer, {
133
+ margin: 16
120
134
  }), createElement(DropZone, {
121
135
  onFilesDrop: handleDropZone
122
- }), createElement(FormFileUpload, {
136
+ }), createElement(VStack, {
137
+ className: "font-library-modal__local-fonts"
138
+ }, createElement(FormFileUpload, {
123
139
  accept: ALLOWED_FILE_EXTENSIONS.map(ext => `.${ext}`).join(','),
124
140
  multiple: true,
125
141
  onChange: onFilesUpload,
@@ -128,8 +144,19 @@ function LocalFonts() {
128
144
  }) => createElement(Button, {
129
145
  className: "font-library-modal__upload-area",
130
146
  onClick: openFileDialog
131
- }, createElement("span", null, __('Drag and drop your font files here.')))
132
- }));
147
+ }, createElement("span", null, __('Upload font')))
148
+ }), notice && createElement(FlexItem, null, createElement(Spacer, {
149
+ margin: 2
150
+ }), createElement(Notice, {
151
+ isDismissible: false,
152
+ status: notice.type,
153
+ className: "font-library-modal__upload-area__notice"
154
+ }, notice.message)), createElement(Spacer, {
155
+ margin: 2
156
+ }), createElement(Text, {
157
+ className: "font-library-modal__upload-area__text"
158
+ }, sprintf( /* translators: %s: supported font formats: ex: .ttf, .woff and .woff2 */
159
+ __('Uploaded fonts appear in your library and can be used in your theme. Supported formats: %s.'), supportedFormats))));
133
160
  }
134
161
  export default LocalFonts;
135
162
  //# sourceMappingURL=local-fonts.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","Button","DropZone","__experimentalSpacer","Spacer","__experimentalText","Text","FormFileUpload","useContext","ALLOWED_FILE_EXTENSIONS","FontLibraryContext","Font","makeFamiliesFromFaces","loadFontFaceInBrowser","LocalFonts","installFonts","handleDropZone","files","handleFilesUpload","onFilesUpload","event","target","uniqueFilenames","Set","selectedFiles","allowedFiles","filter","file","has","name","fileExtension","split","pop","toLowerCase","includes","add","length","loadFiles","fontFacesLoaded","Promise","all","map","fontFile","fontFaceData","getFontFaceMetadata","handleInstall","readFileAsArrayBuffer","resolve","reject","reader","window","FileReader","readAsArrayBuffer","onload","result","onerror","buffer","fontObj","fromDataBuffer","onloadEvent","font","detail","opentype","tables","fontName","get","isItalic","fontWeight","usWeightClass","isVariable","fvar","weightAxis","axes","find","tag","weightRange","minValue","maxValue","fontFamily","fontStyle","fontFaces","fontFamilies","createElement","Fragment","className","margin","onFilesDrop","accept","ext","join","multiple","onChange","render","openFileDialog","onClick"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/local-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropZone,\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\tFormFileUpload,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_FILE_EXTENSIONS } from './utils/constants';\nimport { FontLibraryContext } from './context';\nimport { Font } from '../../../../lib/lib-font.browser';\nimport makeFamiliesFromFaces from './utils/make-families-from-faces';\nimport { loadFontFaceInBrowser } from './utils';\n\nfunction LocalFonts() {\n\tconst { installFonts } = useContext( FontLibraryContext );\n\n\tconst handleDropZone = ( files ) => {\n\t\thandleFilesUpload( files );\n\t};\n\tconst onFilesUpload = ( event ) => {\n\t\thandleFilesUpload( event.target.files );\n\t};\n\n\t/**\n\t * Filters the selected files to only allow the ones with the allowed extensions\n\t *\n\t * @param {Array} files The files to be filtered\n\t * @return {void}\n\t */\n\tconst handleFilesUpload = ( files ) => {\n\t\tconst uniqueFilenames = new Set();\n\t\tconst selectedFiles = [ ...files ];\n\t\tconst allowedFiles = selectedFiles.filter( ( file ) => {\n\t\t\tif ( uniqueFilenames.has( file.name ) ) {\n\t\t\t\treturn false; // Discard duplicates\n\t\t\t}\n\t\t\t// Eliminates files that are not allowed\n\t\t\tconst fileExtension = file.name.split( '.' ).pop().toLowerCase();\n\t\t\tif ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {\n\t\t\t\tuniqueFilenames.add( file.name );\n\t\t\t\treturn true; // Keep file if the extension is allowed\n\t\t\t}\n\t\t\treturn false; // Discard file extension not allowed\n\t\t} );\n\t\tif ( allowedFiles.length > 0 ) {\n\t\t\tloadFiles( allowedFiles );\n\t\t}\n\t};\n\n\t/**\n\t * Loads the selected files and reads the font metadata\n\t *\n\t * @param {Array} files The files to be loaded\n\t * @return {void}\n\t */\n\tconst loadFiles = async ( files ) => {\n\t\tconst fontFacesLoaded = await Promise.all(\n\t\t\tfiles.map( async ( fontFile ) => {\n\t\t\t\tconst fontFaceData = await getFontFaceMetadata( fontFile );\n\t\t\t\tawait loadFontFaceInBrowser(\n\t\t\t\t\tfontFaceData,\n\t\t\t\t\tfontFaceData.file,\n\t\t\t\t\t'all'\n\t\t\t\t);\n\t\t\t\treturn fontFaceData;\n\t\t\t} )\n\t\t);\n\t\tawait handleInstall( fontFacesLoaded );\n\t};\n\n\t// Create a function to read the file as array buffer\n\tasync function readFileAsArrayBuffer( file ) {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tconst reader = new window.FileReader();\n\t\t\treader.readAsArrayBuffer( file );\n\t\t\treader.onload = () => resolve( reader.result );\n\t\t\treader.onerror = reject;\n\t\t} );\n\t}\n\n\tconst getFontFaceMetadata = async ( fontFile ) => {\n\t\tconst buffer = await readFileAsArrayBuffer( fontFile );\n\t\tconst fontObj = new Font( 'Uploaded Font' );\n\t\tfontObj.fromDataBuffer( buffer, fontFile.name );\n\t\t// Assuming that fromDataBuffer triggers onload event and returning a Promise\n\t\tconst onloadEvent = await new Promise(\n\t\t\t( resolve ) => ( fontObj.onload = resolve )\n\t\t);\n\t\tconst font = onloadEvent.detail.font;\n\t\tconst { name } = font.opentype.tables;\n\t\tconst fontName = name.get( 16 ) || name.get( 1 );\n\t\tconst isItalic = name.get( 2 ).toLowerCase().includes( 'italic' );\n\t\tconst fontWeight =\n\t\t\tfont.opentype.tables[ 'OS/2' ].usWeightClass || 'normal';\n\t\tconst isVariable = !! font.opentype.tables.fvar;\n\t\tconst weightAxis =\n\t\t\tisVariable &&\n\t\t\tfont.opentype.tables.fvar.axes.find(\n\t\t\t\t( { tag } ) => tag === 'wght'\n\t\t\t);\n\t\tconst weightRange = weightAxis\n\t\t\t? `${ weightAxis.minValue } ${ weightAxis.maxValue }`\n\t\t\t: null;\n\t\treturn {\n\t\t\tfile: fontFile,\n\t\t\tfontFamily: fontName,\n\t\t\tfontStyle: isItalic ? 'italic' : 'normal',\n\t\t\tfontWeight: weightRange || fontWeight,\n\t\t};\n\t};\n\n\t/**\n\t * Creates the font family definition and sends it to the server\n\t *\n\t * @param {Array} fontFaces The font faces to be installed\n\t * @return {void}\n\t */\n\tconst handleInstall = async ( fontFaces ) => {\n\t\tconst fontFamilies = makeFamiliesFromFaces( fontFaces );\n\t\tawait installFonts( fontFamilies );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Text className=\"font-library-modal__subtitle\">\n\t\t\t\t{ __( 'Upload Fonts' ) }\n\t\t\t</Text>\n\t\t\t<Spacer margin={ 2 } />\n\t\t\t<DropZone onFilesDrop={ handleDropZone } />\n\t\t\t<FormFileUpload\n\t\t\t\taccept={ ALLOWED_FILE_EXTENSIONS.map(\n\t\t\t\t\t( ext ) => `.${ ext }`\n\t\t\t\t).join( ',' ) }\n\t\t\t\tmultiple={ true }\n\t\t\t\tonChange={ onFilesUpload }\n\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"font-library-modal__upload-area\"\n\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{ __( 'Drag and drop your font files here.' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default LocalFonts;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SACCC,MAAM,EACNC,QAAQ,EACRC,oBAAoB,IAAIC,MAAM,EAC9BC,kBAAkB,IAAIC,IAAI,EAC1BC,cAAc,QACR,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,uBAAuB,QAAQ,mBAAmB;AAC3D,SAASC,kBAAkB,QAAQ,WAAW;AAC9C,SAASC,IAAI,QAAQ,kCAAkC;AACvD,OAAOC,qBAAqB,MAAM,kCAAkC;AACpE,SAASC,qBAAqB,QAAQ,SAAS;AAE/C,SAASC,UAAUA,CAAA,EAAG;EACrB,MAAM;IAAEC;EAAa,CAAC,GAAGP,UAAU,CAAEE,kBAAmB,CAAC;EAEzD,MAAMM,cAAc,GAAKC,KAAK,IAAM;IACnCC,iBAAiB,CAAED,KAAM,CAAC;EAC3B,CAAC;EACD,MAAME,aAAa,GAAKC,KAAK,IAAM;IAClCF,iBAAiB,CAAEE,KAAK,CAACC,MAAM,CAACJ,KAAM,CAAC;EACxC,CAAC;;EAED;AACD;AACA;AACA;AACA;AACA;EACC,MAAMC,iBAAiB,GAAKD,KAAK,IAAM;IACtC,MAAMK,eAAe,GAAG,IAAIC,GAAG,CAAC,CAAC;IACjC,MAAMC,aAAa,GAAG,CAAE,GAAGP,KAAK,CAAE;IAClC,MAAMQ,YAAY,GAAGD,aAAa,CAACE,MAAM,CAAIC,IAAI,IAAM;MACtD,IAAKL,eAAe,CAACM,GAAG,CAAED,IAAI,CAACE,IAAK,CAAC,EAAG;QACvC,OAAO,KAAK,CAAC,CAAC;MACf;MACA;MACA,MAAMC,aAAa,GAAGH,IAAI,CAACE,IAAI,CAACE,KAAK,CAAE,GAAI,CAAC,CAACC,GAAG,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MAChE,IAAKxB,uBAAuB,CAACyB,QAAQ,CAAEJ,aAAc,CAAC,EAAG;QACxDR,eAAe,CAACa,GAAG,CAAER,IAAI,CAACE,IAAK,CAAC;QAChC,OAAO,IAAI,CAAC,CAAC;MACd;;MACA,OAAO,KAAK,CAAC,CAAC;IACf,CAAE,CAAC;;IACH,IAAKJ,YAAY,CAACW,MAAM,GAAG,CAAC,EAAG;MAC9BC,SAAS,CAAEZ,YAAa,CAAC;IAC1B;EACD,CAAC;;EAED;AACD;AACA;AACA;AACA;AACA;EACC,MAAMY,SAAS,GAAG,MAAQpB,KAAK,IAAM;IACpC,MAAMqB,eAAe,GAAG,MAAMC,OAAO,CAACC,GAAG,CACxCvB,KAAK,CAACwB,GAAG,CAAE,MAAQC,QAAQ,IAAM;MAChC,MAAMC,YAAY,GAAG,MAAMC,mBAAmB,CAAEF,QAAS,CAAC;MAC1D,MAAM7B,qBAAqB,CAC1B8B,YAAY,EACZA,YAAY,CAAChB,IAAI,EACjB,KACD,CAAC;MACD,OAAOgB,YAAY;IACpB,CAAE,CACH,CAAC;IACD,MAAME,aAAa,CAAEP,eAAgB,CAAC;EACvC,CAAC;;EAED;EACA,eAAeQ,qBAAqBA,CAAEnB,IAAI,EAAG;IAC5C,OAAO,IAAIY,OAAO,CAAE,CAAEQ,OAAO,EAAEC,MAAM,KAAM;MAC1C,MAAMC,MAAM,GAAG,IAAIC,MAAM,CAACC,UAAU,CAAC,CAAC;MACtCF,MAAM,CAACG,iBAAiB,CAAEzB,IAAK,CAAC;MAChCsB,MAAM,CAACI,MAAM,GAAG,MAAMN,OAAO,CAAEE,MAAM,CAACK,MAAO,CAAC;MAC9CL,MAAM,CAACM,OAAO,GAAGP,MAAM;IACxB,CAAE,CAAC;EACJ;EAEA,MAAMJ,mBAAmB,GAAG,MAAQF,QAAQ,IAAM;IACjD,MAAMc,MAAM,GAAG,MAAMV,qBAAqB,CAAEJ,QAAS,CAAC;IACtD,MAAMe,OAAO,GAAG,IAAI9C,IAAI,CAAE,eAAgB,CAAC;IAC3C8C,OAAO,CAACC,cAAc,CAAEF,MAAM,EAAEd,QAAQ,CAACb,IAAK,CAAC;IAC/C;IACA,MAAM8B,WAAW,GAAG,MAAM,IAAIpB,OAAO,CAClCQ,OAAO,IAAQU,OAAO,CAACJ,MAAM,GAAGN,OACnC,CAAC;IACD,MAAMa,IAAI,GAAGD,WAAW,CAACE,MAAM,CAACD,IAAI;IACpC,MAAM;MAAE/B;IAAK,CAAC,GAAG+B,IAAI,CAACE,QAAQ,CAACC,MAAM;IACrC,MAAMC,QAAQ,GAAGnC,IAAI,CAACoC,GAAG,CAAE,EAAG,CAAC,IAAIpC,IAAI,CAACoC,GAAG,CAAE,CAAE,CAAC;IAChD,MAAMC,QAAQ,GAAGrC,IAAI,CAACoC,GAAG,CAAE,CAAE,CAAC,CAAChC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAE,QAAS,CAAC;IACjE,MAAMiC,UAAU,GACfP,IAAI,CAACE,QAAQ,CAACC,MAAM,CAAE,MAAM,CAAE,CAACK,aAAa,IAAI,QAAQ;IACzD,MAAMC,UAAU,GAAG,CAAC,CAAET,IAAI,CAACE,QAAQ,CAACC,MAAM,CAACO,IAAI;IAC/C,MAAMC,UAAU,GACfF,UAAU,IACVT,IAAI,CAACE,QAAQ,CAACC,MAAM,CAACO,IAAI,CAACE,IAAI,CAACC,IAAI,CAClC,CAAE;MAAEC;IAAI,CAAC,KAAMA,GAAG,KAAK,MACxB,CAAC;IACF,MAAMC,WAAW,GAAGJ,UAAU,GAC1B,GAAGA,UAAU,CAACK,QAAU,IAAIL,UAAU,CAACM,QAAU,EAAC,GACnD,IAAI;IACP,OAAO;MACNlD,IAAI,EAAEe,QAAQ;MACdoC,UAAU,EAAEd,QAAQ;MACpBe,SAAS,EAAEb,QAAQ,GAAG,QAAQ,GAAG,QAAQ;MACzCC,UAAU,EAAEQ,WAAW,IAAIR;IAC5B,CAAC;EACF,CAAC;;EAED;AACD;AACA;AACA;AACA;AACA;EACC,MAAMtB,aAAa,GAAG,MAAQmC,SAAS,IAAM;IAC5C,MAAMC,YAAY,GAAGrE,qBAAqB,CAAEoE,SAAU,CAAC;IACvD,MAAMjE,YAAY,CAAEkE,YAAa,CAAC;EACnC,CAAC;EAED,OACCC,aAAA,CAAAC,QAAA,QACCD,aAAA,CAAC5E,IAAI;IAAC8E,SAAS,EAAC;EAA8B,GAC3CpF,EAAE,CAAE,cAAe,CAChB,CAAC,EACPkF,aAAA,CAAC9E,MAAM;IAACiF,MAAM,EAAG;EAAG,CAAE,CAAC,EACvBH,aAAA,CAAChF,QAAQ;IAACoF,WAAW,EAAGtE;EAAgB,CAAE,CAAC,EAC3CkE,aAAA,CAAC3E,cAAc;IACdgF,MAAM,EAAG9E,uBAAuB,CAACgC,GAAG,CACjC+C,GAAG,IAAO,IAAIA,GAAK,EACtB,CAAC,CAACC,IAAI,CAAE,GAAI,CAAG;IACfC,QAAQ,EAAG,IAAM;IACjBC,QAAQ,EAAGxE,aAAe;IAC1ByE,MAAM,EAAGA,CAAE;MAAEC;IAAe,CAAC,KAC5BX,aAAA,CAACjF,MAAM;MACNmF,SAAS,EAAC,iCAAiC;MAC3CU,OAAO,EAAGD;IAAgB,GAE1BX,aAAA,eACGlF,EAAE,CAAE,qCAAsC,CACvC,CACC;EACN,CACH,CACA,CAAC;AAEL;AAEA,eAAec,UAAU"}
1
+ {"version":3,"names":["__","sprintf","Button","DropZone","__experimentalSpacer","Spacer","__experimentalText","Text","__experimentalVStack","VStack","FormFileUpload","Notice","FlexItem","useContext","useState","useEffect","ALLOWED_FILE_EXTENSIONS","FontLibraryContext","Font","makeFamiliesFromFaces","loadFontFaceInBrowser","getNoticeFromInstallResponse","LocalFonts","installFonts","notice","setNotice","supportedFormats","slice","map","extension","join","handleDropZone","files","handleFilesUpload","onFilesUpload","event","target","timeout","setTimeout","clearTimeout","uniqueFilenames","Set","selectedFiles","allowedFiles","filter","file","has","name","fileExtension","split","pop","toLowerCase","includes","add","length","loadFiles","fontFacesLoaded","Promise","all","fontFile","fontFaceData","getFontFaceMetadata","handleInstall","readFileAsArrayBuffer","resolve","reject","reader","window","FileReader","readAsArrayBuffer","onload","result","onerror","buffer","fontObj","fromDataBuffer","onloadEvent","font","detail","opentype","tables","fontName","get","isItalic","fontWeight","usWeightClass","isVariable","fvar","weightAxis","axes","find","tag","weightRange","minValue","maxValue","fontFamily","fontStyle","fontFaces","fontFamilies","response","installNotice","createElement","Fragment","margin","onFilesDrop","className","accept","ext","multiple","onChange","render","openFileDialog","onClick","isDismissible","status","type","message"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/local-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropZone,\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFormFileUpload,\n\tNotice,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useContext, useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_FILE_EXTENSIONS } from './utils/constants';\nimport { FontLibraryContext } from './context';\nimport { Font } from '../../../../lib/lib-font.browser';\nimport makeFamiliesFromFaces from './utils/make-families-from-faces';\nimport { loadFontFaceInBrowser } from './utils';\nimport { getNoticeFromInstallResponse } from './utils/get-notice-from-response';\n\nfunction LocalFonts() {\n\tconst { installFonts } = useContext( FontLibraryContext );\n\tconst [ notice, setNotice ] = useState( null );\n\tconst supportedFormats =\n\t\tALLOWED_FILE_EXTENSIONS.slice( 0, -1 )\n\t\t\t.map( ( extension ) => `.${ extension }` )\n\t\t\t.join( ', ' ) +\n\t\t` ${ __( 'and' ) } .${ ALLOWED_FILE_EXTENSIONS.slice( -1 ) }`;\n\n\tconst handleDropZone = ( files ) => {\n\t\thandleFilesUpload( files );\n\t};\n\tconst onFilesUpload = ( event ) => {\n\t\thandleFilesUpload( event.target.files );\n\t};\n\n\t// Reset notice after 5 seconds\n\tuseEffect( () => {\n\t\tif ( notice ) {\n\t\t\tconst timeout = setTimeout( () => {\n\t\t\t\tsetNotice( null );\n\t\t\t}, 5000 );\n\t\t\treturn () => clearTimeout( timeout );\n\t\t}\n\t}, [ notice ] );\n\n\t/**\n\t * Filters the selected files to only allow the ones with the allowed extensions\n\t *\n\t * @param {Array} files The files to be filtered\n\t * @return {void}\n\t */\n\tconst handleFilesUpload = ( files ) => {\n\t\tsetNotice( null );\n\t\tconst uniqueFilenames = new Set();\n\t\tconst selectedFiles = [ ...files ];\n\t\tconst allowedFiles = selectedFiles.filter( ( file ) => {\n\t\t\tif ( uniqueFilenames.has( file.name ) ) {\n\t\t\t\treturn false; // Discard duplicates\n\t\t\t}\n\t\t\t// Eliminates files that are not allowed\n\t\t\tconst fileExtension = file.name.split( '.' ).pop().toLowerCase();\n\t\t\tif ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {\n\t\t\t\tuniqueFilenames.add( file.name );\n\t\t\t\treturn true; // Keep file if the extension is allowed\n\t\t\t}\n\t\t\treturn false; // Discard file extension not allowed\n\t\t} );\n\t\tif ( allowedFiles.length > 0 ) {\n\t\t\tloadFiles( allowedFiles );\n\t\t}\n\t};\n\n\t/**\n\t * Loads the selected files and reads the font metadata\n\t *\n\t * @param {Array} files The files to be loaded\n\t * @return {void}\n\t */\n\tconst loadFiles = async ( files ) => {\n\t\tconst fontFacesLoaded = await Promise.all(\n\t\t\tfiles.map( async ( fontFile ) => {\n\t\t\t\tconst fontFaceData = await getFontFaceMetadata( fontFile );\n\t\t\t\tawait loadFontFaceInBrowser(\n\t\t\t\t\tfontFaceData,\n\t\t\t\t\tfontFaceData.file,\n\t\t\t\t\t'all'\n\t\t\t\t);\n\t\t\t\treturn fontFaceData;\n\t\t\t} )\n\t\t);\n\t\tawait handleInstall( fontFacesLoaded );\n\t};\n\n\t// Create a function to read the file as array buffer\n\tasync function readFileAsArrayBuffer( file ) {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tconst reader = new window.FileReader();\n\t\t\treader.readAsArrayBuffer( file );\n\t\t\treader.onload = () => resolve( reader.result );\n\t\t\treader.onerror = reject;\n\t\t} );\n\t}\n\n\tconst getFontFaceMetadata = async ( fontFile ) => {\n\t\tconst buffer = await readFileAsArrayBuffer( fontFile );\n\t\tconst fontObj = new Font( 'Uploaded Font' );\n\t\tfontObj.fromDataBuffer( buffer, fontFile.name );\n\t\t// Assuming that fromDataBuffer triggers onload event and returning a Promise\n\t\tconst onloadEvent = await new Promise(\n\t\t\t( resolve ) => ( fontObj.onload = resolve )\n\t\t);\n\t\tconst font = onloadEvent.detail.font;\n\t\tconst { name } = font.opentype.tables;\n\t\tconst fontName = name.get( 16 ) || name.get( 1 );\n\t\tconst isItalic = name.get( 2 ).toLowerCase().includes( 'italic' );\n\t\tconst fontWeight =\n\t\t\tfont.opentype.tables[ 'OS/2' ].usWeightClass || 'normal';\n\t\tconst isVariable = !! font.opentype.tables.fvar;\n\t\tconst weightAxis =\n\t\t\tisVariable &&\n\t\t\tfont.opentype.tables.fvar.axes.find(\n\t\t\t\t( { tag } ) => tag === 'wght'\n\t\t\t);\n\t\tconst weightRange = weightAxis\n\t\t\t? `${ weightAxis.minValue } ${ weightAxis.maxValue }`\n\t\t\t: null;\n\t\treturn {\n\t\t\tfile: fontFile,\n\t\t\tfontFamily: fontName,\n\t\t\tfontStyle: isItalic ? 'italic' : 'normal',\n\t\t\tfontWeight: weightRange || fontWeight,\n\t\t};\n\t};\n\n\t/**\n\t * Creates the font family definition and sends it to the server\n\t *\n\t * @param {Array} fontFaces The font faces to be installed\n\t * @return {void}\n\t */\n\tconst handleInstall = async ( fontFaces ) => {\n\t\tconst fontFamilies = makeFamiliesFromFaces( fontFaces );\n\t\tconst response = await installFonts( fontFamilies );\n\t\tconst installNotice = getNoticeFromInstallResponse( response );\n\t\tsetNotice( installNotice );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Spacer margin={ 16 } />\n\t\t\t<DropZone onFilesDrop={ handleDropZone } />\n\t\t\t<VStack className=\"font-library-modal__local-fonts\">\n\t\t\t\t<FormFileUpload\n\t\t\t\t\taccept={ ALLOWED_FILE_EXTENSIONS.map(\n\t\t\t\t\t\t( ext ) => `.${ ext }`\n\t\t\t\t\t).join( ',' ) }\n\t\t\t\t\tmultiple={ true }\n\t\t\t\t\tonChange={ onFilesUpload }\n\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"font-library-modal__upload-area\"\n\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{ __( 'Upload font' ) }</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t{ notice && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\tclassName=\"font-library-modal__upload-area__notice\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t<Text className=\"font-library-modal__upload-area__text\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: supported font formats: ex: .ttf, .woff and .woff2 */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Uploaded fonts appear in your library and can be used in your theme. Supported formats: %s.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsupportedFormats\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</>\n\t);\n}\n\nexport default LocalFonts;\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ export async function fetchInstallFonts(data) {
16
16
  }
17
17
  export async function fetchUninstallFonts(fonts) {
18
18
  const data = {
19
- fontFamilies: fonts
19
+ font_families: fonts
20
20
  };
21
21
  const config = {
22
22
  path: '/wp/v2/fonts',