@wordpress/edit-site 5.26.0 → 5.27.1

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 (340) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +139 -36
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/editor-canvas-container/index.js +1 -1
  5. package/build/components/editor-canvas-container/index.js.map +1 -1
  6. package/build/components/global-styles/font-families.js +3 -2
  7. package/build/components/global-styles/font-families.js.map +1 -1
  8. package/build/components/global-styles/font-family-item.js +3 -4
  9. package/build/components/global-styles/font-family-item.js.map +1 -1
  10. package/build/components/global-styles/font-library-modal/context.js +80 -41
  11. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
  13. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  15. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +4 -4
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
  21. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  23. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/local-fonts.js +13 -4
  25. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
  27. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +6 -2
  29. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  31. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  33. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  34. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  35. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +10 -0
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-typography.js +4 -1
  39. package/build/components/global-styles/screen-typography.js.map +1 -1
  40. package/build/components/layout/hooks.js +6 -5
  41. package/build/components/layout/hooks.js.map +1 -1
  42. package/build/components/layout/index.js +19 -28
  43. package/build/components/layout/index.js.map +1 -1
  44. package/build/components/layout/router.js +135 -0
  45. package/build/components/layout/router.js.map +1 -0
  46. package/build/components/page-pages/index.js +92 -69
  47. package/build/components/page-pages/index.js.map +1 -1
  48. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  49. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  50. package/build/components/page-patterns/index.js +295 -15
  51. package/build/components/page-patterns/index.js.map +1 -1
  52. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  53. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  54. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  55. package/build/components/page-templates-template-parts/index.js +395 -0
  56. package/build/components/page-templates-template-parts/index.js.map +1 -0
  57. package/build/components/preferences-modal/index.js +9 -134
  58. package/build/components/preferences-modal/index.js.map +1 -1
  59. package/build/components/revisions/index.js +1 -1
  60. package/build/components/revisions/index.js.map +1 -1
  61. package/build/components/save-button/index.js +4 -2
  62. package/build/components/save-button/index.js.map +1 -1
  63. package/build/components/save-panel/index.js +6 -5
  64. package/build/components/save-panel/index.js.map +1 -1
  65. package/build/components/sidebar/index.js +3 -1
  66. package/build/components/sidebar/index.js.map +1 -1
  67. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  68. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  69. package/build/components/sidebar-dataviews/default-views.js +4 -2
  70. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  71. package/build/components/sidebar-dataviews/index.js +2 -2
  72. package/build/components/sidebar-dataviews/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen/index.js +8 -7
  74. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  76. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  78. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  79. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  80. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  81. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  82. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  83. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  84. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  85. package/build/components/site-hub/index.js +3 -1
  86. package/build/components/site-hub/index.js.map +1 -1
  87. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  88. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  89. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  90. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  91. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  92. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  93. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  94. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  95. package/build/hooks/template-part-edit.js +7 -6
  96. package/build/hooks/template-part-edit.js.map +1 -1
  97. package/build/index.js +1 -1
  98. package/build/index.js.map +1 -1
  99. package/build/store/actions.js +11 -29
  100. package/build/store/actions.js.map +1 -1
  101. package/build/store/private-actions.js +85 -1
  102. package/build/store/private-actions.js.map +1 -1
  103. package/build/store/selectors.js +2 -2
  104. package/build/store/selectors.js.map +1 -1
  105. package/build/utils/get-is-list-page.js +1 -1
  106. package/build/utils/get-is-list-page.js.map +1 -1
  107. package/build/utils/use-actual-current-theme.js +32 -0
  108. package/build/utils/use-actual-current-theme.js.map +1 -0
  109. package/build-module/components/actions/index.js +139 -36
  110. package/build-module/components/actions/index.js.map +1 -1
  111. package/build-module/components/editor-canvas-container/index.js +1 -1
  112. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  113. package/build-module/components/global-styles/font-families.js +3 -2
  114. package/build-module/components/global-styles/font-families.js.map +1 -1
  115. package/build-module/components/global-styles/font-family-item.js +4 -5
  116. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  118. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  120. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  122. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  124. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  126. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  128. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  130. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  132. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  134. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +6 -2
  136. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -1
  137. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  138. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  139. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  140. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  141. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  142. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  143. package/build-module/components/global-styles/screen-block.js +10 -0
  144. package/build-module/components/global-styles/screen-block.js.map +1 -1
  145. package/build-module/components/global-styles/screen-typography.js +4 -1
  146. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  147. package/build-module/components/layout/hooks.js +6 -5
  148. package/build-module/components/layout/hooks.js.map +1 -1
  149. package/build-module/components/layout/index.js +19 -28
  150. package/build-module/components/layout/index.js.map +1 -1
  151. package/build-module/components/layout/router.js +127 -0
  152. package/build-module/components/layout/router.js.map +1 -0
  153. package/build-module/components/page-pages/index.js +91 -70
  154. package/build-module/components/page-pages/index.js.map +1 -1
  155. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  156. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  157. package/build-module/components/page-patterns/index.js +296 -16
  158. package/build-module/components/page-patterns/index.js.map +1 -1
  159. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  160. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  161. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  162. package/build-module/components/page-templates-template-parts/index.js +385 -0
  163. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  164. package/build-module/components/preferences-modal/index.js +12 -136
  165. package/build-module/components/preferences-modal/index.js.map +1 -1
  166. package/build-module/components/revisions/index.js +1 -1
  167. package/build-module/components/revisions/index.js.map +1 -1
  168. package/build-module/components/save-button/index.js +4 -2
  169. package/build-module/components/save-button/index.js.map +1 -1
  170. package/build-module/components/save-panel/index.js +7 -6
  171. package/build-module/components/save-panel/index.js.map +1 -1
  172. package/build-module/components/sidebar/index.js +3 -1
  173. package/build-module/components/sidebar/index.js.map +1 -1
  174. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  175. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  176. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  177. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  178. package/build-module/components/sidebar-dataviews/index.js +2 -2
  179. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  181. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  182. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  183. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  185. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  187. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  189. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  190. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  191. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  192. package/build-module/components/site-hub/index.js +3 -1
  193. package/build-module/components/site-hub/index.js.map +1 -1
  194. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  195. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  196. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  197. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  198. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  199. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  200. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  201. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  202. package/build-module/hooks/template-part-edit.js +7 -6
  203. package/build-module/hooks/template-part-edit.js.map +1 -1
  204. package/build-module/index.js +1 -1
  205. package/build-module/index.js.map +1 -1
  206. package/build-module/store/actions.js +13 -30
  207. package/build-module/store/actions.js.map +1 -1
  208. package/build-module/store/private-actions.js +83 -0
  209. package/build-module/store/private-actions.js.map +1 -1
  210. package/build-module/store/selectors.js +2 -2
  211. package/build-module/store/selectors.js.map +1 -1
  212. package/build-module/utils/get-is-list-page.js +1 -1
  213. package/build-module/utils/get-is-list-page.js.map +1 -1
  214. package/build-module/utils/use-actual-current-theme.js +24 -0
  215. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  216. package/build-style/style-rtl.css +316 -215
  217. package/build-style/style.css +316 -215
  218. package/package.json +42 -42
  219. package/src/components/actions/index.js +236 -84
  220. package/src/components/editor-canvas-container/index.js +1 -1
  221. package/src/components/global-styles/font-families.js +14 -8
  222. package/src/components/global-styles/font-family-item.js +7 -4
  223. package/src/components/global-styles/font-library-modal/context.js +156 -50
  224. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  225. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  226. package/src/components/global-styles/font-library-modal/index.js +4 -4
  227. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  228. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  229. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  230. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  231. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  232. package/src/components/global-styles/font-library-modal/style.scss +23 -35
  233. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +30 -26
  234. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  235. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  236. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  237. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  238. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  239. package/src/components/global-styles/screen-block.js +10 -0
  240. package/src/components/global-styles/screen-typography.js +9 -3
  241. package/src/components/global-styles/style.scss +4 -0
  242. package/src/components/header-edit-mode/style.scss +15 -5
  243. package/src/components/layout/hooks.js +6 -5
  244. package/src/components/layout/index.js +80 -96
  245. package/src/components/layout/router.js +121 -0
  246. package/src/components/layout/style.scss +13 -16
  247. package/src/components/page/style.scss +1 -8
  248. package/src/components/page-pages/index.js +142 -148
  249. package/src/components/page-pages/style.scss +41 -2
  250. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  251. package/src/components/page-patterns/index.js +392 -14
  252. package/src/components/page-patterns/style.scss +36 -2
  253. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  254. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  255. package/src/components/page-templates-template-parts/style.scss +44 -0
  256. package/src/components/preferences-modal/index.js +8 -211
  257. package/src/components/revisions/index.js +1 -1
  258. package/src/components/save-button/index.js +7 -4
  259. package/src/components/save-panel/index.js +13 -12
  260. package/src/components/sidebar/index.js +4 -5
  261. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  262. package/src/components/sidebar-dataviews/default-views.js +4 -2
  263. package/src/components/sidebar-dataviews/index.js +8 -6
  264. package/src/components/sidebar-navigation-item/style.scss +1 -1
  265. package/src/components/sidebar-navigation-screen/index.js +19 -10
  266. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  267. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  268. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  269. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  270. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  271. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  272. package/src/components/site-hub/index.js +4 -1
  273. package/src/components/site-hub/style.scss +1 -12
  274. package/src/components/site-icon/style.scss +1 -1
  275. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  276. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  277. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  278. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  279. package/src/hooks/template-part-edit.js +12 -12
  280. package/src/index.js +1 -1
  281. package/src/store/actions.js +17 -51
  282. package/src/store/private-actions.js +133 -0
  283. package/src/store/selectors.js +2 -4
  284. package/src/style.scss +2 -1
  285. package/src/utils/get-is-list-page.js +3 -2
  286. package/src/utils/use-actual-current-theme.js +27 -0
  287. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  288. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  289. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  290. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  291. package/build/components/page-main/index.js +0 -44
  292. package/build/components/page-main/index.js.map +0 -1
  293. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  294. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  295. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  296. package/build/components/page-template-parts/index.js +0 -81
  297. package/build/components/page-template-parts/index.js.map +0 -1
  298. package/build/components/page-templates/index.js +0 -352
  299. package/build/components/page-templates/index.js.map +0 -1
  300. package/build/components/page-templates/template-actions.js.map +0 -1
  301. package/build/components/post-preview/index.js +0 -29
  302. package/build/components/post-preview/index.js.map +0 -1
  303. package/build/components/preferences-modal/enable-feature.js +0 -36
  304. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  305. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  306. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  307. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  308. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  309. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  310. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  311. package/build-module/components/page-main/index.js +0 -36
  312. package/build-module/components/page-main/index.js.map +0 -1
  313. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  314. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  315. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  316. package/build-module/components/page-template-parts/index.js +0 -73
  317. package/build-module/components/page-template-parts/index.js.map +0 -1
  318. package/build-module/components/page-templates/index.js +0 -344
  319. package/build-module/components/page-templates/index.js.map +0 -1
  320. package/build-module/components/page-templates/template-actions.js.map +0 -1
  321. package/build-module/components/post-preview/index.js +0 -21
  322. package/build-module/components/post-preview/index.js.map +0 -1
  323. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  324. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  325. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  326. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  327. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  328. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  329. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  330. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  331. package/src/components/page-main/index.js +0 -38
  332. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  333. package/src/components/page-template-parts/index.js +0 -99
  334. package/src/components/page-templates/style.scss +0 -13
  335. package/src/components/post-preview/index.js +0 -16
  336. package/src/components/preferences-modal/enable-feature.js +0 -31
  337. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  338. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  339. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  340. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -9,13 +9,15 @@ import {
9
9
  useEntityRecords,
10
10
  store as coreStore,
11
11
  } from '@wordpress/core-data';
12
+ import { __, sprintf } from '@wordpress/i18n';
12
13
 
13
14
  /**
14
15
  * Internal dependencies
15
16
  */
16
17
  import {
17
- fetchInstallFont,
18
- fetchUninstallFonts,
18
+ fetchGetFontFamilyBySlug,
19
+ fetchInstallFontFamily,
20
+ fetchUninstallFontFamily,
19
21
  fetchFontCollections,
20
22
  fetchFontCollection,
21
23
  } from './resolvers';
@@ -26,10 +28,12 @@ import {
26
28
  mergeFontFamilies,
27
29
  loadFontFaceInBrowser,
28
30
  getDisplaySrcFromFontFace,
29
- makeFormDataFromFontFamily,
31
+ makeFontFacesFormData,
32
+ makeFontFamilyFormData,
33
+ batchInstallFontFaces,
34
+ checkFontFaceInstalled,
30
35
  } from './utils';
31
36
  import { toggleFont } from './utils/toggleFont';
32
- import getIntersectingFontFaces from './utils/get-intersecting-font-faces';
33
37
 
34
38
  export const FontLibraryContext = createContext( {} );
35
39
 
@@ -60,12 +64,22 @@ function FontLibraryProvider( { children } ) {
60
64
  records: libraryPosts = [],
61
65
  isResolving: isResolvingLibrary,
62
66
  hasResolved: hasResolvedLibrary,
63
- } = useEntityRecords( 'postType', 'wp_font_family', { refreshKey } );
67
+ } = useEntityRecords( 'postType', 'wp_font_family', {
68
+ refreshKey,
69
+ _embed: true,
70
+ } );
64
71
 
65
72
  const libraryFonts =
66
- ( libraryPosts || [] ).map( ( post ) =>
67
- JSON.parse( post.content.raw )
68
- ) || [];
73
+ ( libraryPosts || [] ).map( ( fontFamilyPost ) => {
74
+ return {
75
+ id: fontFamilyPost.id,
76
+ ...fontFamilyPost.font_family_settings,
77
+ fontFace:
78
+ fontFamilyPost?._embedded?.font_faces.map(
79
+ ( face ) => face.font_face_settings
80
+ ) || [],
81
+ };
82
+ } ) || [];
69
83
 
70
84
  // Global Styles (settings) font families
71
85
  const [ fontFamilies, setFontFamilies ] = useGlobalSetting(
@@ -157,11 +171,12 @@ function FontLibraryProvider( { children } ) {
157
171
 
158
172
  const getAvailableFontsOutline = ( availableFontFamilies ) => {
159
173
  const outline = availableFontFamilies.reduce( ( acc, font ) => {
160
- const availableFontFaces = Array.isArray( font?.fontFace )
161
- ? font?.fontFace.map(
162
- ( face ) => `${ face.fontStyle + face.fontWeight }`
163
- )
164
- : [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400
174
+ const availableFontFaces =
175
+ font?.fontFace && font.fontFace?.length > 0
176
+ ? font?.fontFace.map(
177
+ ( face ) => `${ face.fontStyle + face.fontWeight }`
178
+ )
179
+ : [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400
165
180
 
166
181
  acc[ font.slug ] = availableFontFaces;
167
182
  return acc;
@@ -192,45 +207,133 @@ function FontLibraryProvider( { children } ) {
192
207
  return getActivatedFontsOutline( source )[ slug ] || [];
193
208
  };
194
209
 
195
- async function installFont( font ) {
210
+ async function installFont( fontFamilyToInstall ) {
196
211
  setIsInstalling( true );
197
212
  try {
198
- // Prepare formData to install.
199
- const formData = makeFormDataFromFontFamily( font );
213
+ // Get the font family if it already exists.
214
+ let installedFontFamily = await fetchGetFontFamilyBySlug(
215
+ fontFamilyToInstall.slug
216
+ );
217
+
218
+ // Otherwise create it.
219
+ if ( ! installedFontFamily ) {
220
+ // Prepare font family form data to install.
221
+ installedFontFamily = await fetchInstallFontFamily(
222
+ makeFontFamilyFormData( fontFamilyToInstall )
223
+ );
224
+ }
225
+
226
+ // Collect font faces that have already been installed (to be activated later)
227
+ const alreadyInstalledFontFaces =
228
+ installedFontFamily.fontFace && fontFamilyToInstall.fontFace
229
+ ? installedFontFamily.fontFace.filter(
230
+ ( fontFaceToInstall ) =>
231
+ checkFontFaceInstalled(
232
+ fontFaceToInstall,
233
+ fontFamilyToInstall.fontFace
234
+ )
235
+ )
236
+ : [];
237
+
238
+ // Filter out Font Faces that have already been installed (so that they are not re-installed)
239
+ if (
240
+ installedFontFamily.fontFace &&
241
+ fontFamilyToInstall.fontFace
242
+ ) {
243
+ fontFamilyToInstall.fontFace =
244
+ fontFamilyToInstall.fontFace.filter(
245
+ ( fontFaceToInstall ) =>
246
+ ! checkFontFaceInstalled(
247
+ fontFaceToInstall,
248
+ installedFontFamily.fontFace
249
+ )
250
+ );
251
+ }
252
+
200
253
  // Install the fonts (upload the font files to the server and create the post in the database).
201
- const response = await fetchInstallFont( formData );
202
- const fontsInstalled = response?.successes || [];
203
- // Get intersecting font faces between the fonts we tried to installed and the fonts that were installed
204
- // (to avoid activating a non installed font).
205
- const fontToBeActivated = getIntersectingFontFaces(
206
- fontsInstalled,
207
- [ font ]
254
+ let sucessfullyInstalledFontFaces = [];
255
+ let unsucessfullyInstalledFontFaces = [];
256
+ if ( fontFamilyToInstall?.fontFace?.length > 0 ) {
257
+ const response = await batchInstallFontFaces(
258
+ installedFontFamily.id,
259
+ makeFontFacesFormData( fontFamilyToInstall )
260
+ );
261
+ sucessfullyInstalledFontFaces = response?.successes;
262
+ unsucessfullyInstalledFontFaces = response?.errors;
263
+ }
264
+
265
+ const detailedErrorMessage = unsucessfullyInstalledFontFaces.reduce(
266
+ ( errorMessageCollection, error ) => {
267
+ return `${ errorMessageCollection } ${ error.message }`;
268
+ },
269
+ ''
208
270
  );
209
- // Activate the font families (add the font families to the global styles).
210
- activateCustomFontFamilies( fontToBeActivated );
271
+
272
+ // If there were no successes and nothing already installed then we don't need to activate anything and can bounce now.
273
+ if (
274
+ fontFamilyToInstall?.fontFace?.length > 0 &&
275
+ sucessfullyInstalledFontFaces.length === 0 &&
276
+ alreadyInstalledFontFaces.length === 0
277
+ ) {
278
+ throw new Error(
279
+ sprintf(
280
+ /* translators: %s: Specific error message returned from server. */
281
+ __( 'No font faces were installed. %s' ),
282
+ detailedErrorMessage
283
+ )
284
+ );
285
+ }
286
+
287
+ // Use the sucessfully installed font faces
288
+ // As well as any font faces that were already installed (those will be activated)
289
+ if (
290
+ sucessfullyInstalledFontFaces?.length > 0 ||
291
+ alreadyInstalledFontFaces?.length > 0
292
+ ) {
293
+ fontFamilyToInstall.fontFace = [
294
+ ...sucessfullyInstalledFontFaces,
295
+ ...alreadyInstalledFontFaces,
296
+ ];
297
+ }
298
+
299
+ // Activate the font family (add the font family to the global styles).
300
+ activateCustomFontFamilies( [ fontFamilyToInstall ] );
301
+
211
302
  // Save the global styles to the database.
212
303
  saveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [
213
304
  'settings.typography.fontFamilies',
214
305
  ] );
306
+
215
307
  refreshLibrary();
216
- setIsInstalling( false );
217
308
 
218
- return response;
219
- } catch ( error ) {
309
+ if ( unsucessfullyInstalledFontFaces.length > 0 ) {
310
+ throw new Error(
311
+ sprintf(
312
+ /* translators: %s: Specific error message returned from server. */
313
+ __(
314
+ 'Some font faces were installed. There were some errors. %s'
315
+ ),
316
+ detailedErrorMessage
317
+ )
318
+ );
319
+ }
320
+ } finally {
220
321
  setIsInstalling( false );
221
- return {
222
- errors: [ error ],
223
- };
224
322
  }
225
323
  }
226
324
 
227
- async function uninstallFont( font ) {
325
+ async function uninstallFontFamily( fontFamilyToUninstall ) {
228
326
  try {
229
- // Uninstall the font (remove the font files from the server and the post from the database).
230
- const response = await fetchUninstallFonts( [ font ] );
231
- // Deactivate the font family (remove the font family from the global styles).
232
- if ( 0 === response.errors.length ) {
233
- deactivateFontFamily( font );
327
+ // Uninstall the font family.
328
+ // (Removes the font files from the server and the posts from the database).
329
+ const uninstalledFontFamily = await fetchUninstallFontFamily(
330
+ fontFamilyToUninstall.id
331
+ );
332
+
333
+ // Deactivate the font family if delete request is successful
334
+ // (Removes the font family from the global styles).
335
+ if ( uninstalledFontFamily.deleted ) {
336
+ deactivateFontFamily( fontFamilyToUninstall );
234
337
  // Save the global styles to the database.
235
338
  await saveSpecifiedEntityEdits(
236
339
  'root',
@@ -239,15 +342,18 @@ function FontLibraryProvider( { children } ) {
239
342
  [ 'settings.typography.fontFamilies' ]
240
343
  );
241
344
  }
242
- // Refresh the library (the the library font families from database).
345
+
346
+ // Refresh the library (the library font families from database).
243
347
  refreshLibrary();
244
- return response;
348
+
349
+ return uninstalledFontFamily;
245
350
  } catch ( error ) {
246
351
  // eslint-disable-next-line no-console
247
- console.error( error );
248
- return {
249
- errors: [ error ],
250
- };
352
+ console.error(
353
+ `There was an error uninstalling the font family:`,
354
+ error
355
+ );
356
+ throw error;
251
357
  }
252
358
  }
253
359
 
@@ -322,16 +428,16 @@ function FontLibraryProvider( { children } ) {
322
428
  const response = await fetchFontCollections();
323
429
  setFontCollections( response );
324
430
  };
325
- const getFontCollection = async ( id ) => {
431
+ const getFontCollection = async ( slug ) => {
326
432
  try {
327
433
  const hasData = !! collections.find(
328
- ( collection ) => collection.id === id
329
- )?.data;
434
+ ( collection ) => collection.slug === slug
435
+ )?.font_families;
330
436
  if ( hasData ) return;
331
- const response = await fetchFontCollection( id );
437
+ const response = await fetchFontCollection( slug );
332
438
  const updatedCollections = collections.map( ( collection ) =>
333
- collection.id === id
334
- ? { ...collection, data: { ...response?.data } }
439
+ collection.slug === slug
440
+ ? { ...collection, ...response }
335
441
  : collection
336
442
  );
337
443
  setFontCollections( updatedCollections );
@@ -359,7 +465,7 @@ function FontLibraryProvider( { children } ) {
359
465
  getFontFacesActivated,
360
466
  loadFontFaceAsset,
361
467
  installFont,
362
- uninstallFont,
468
+ uninstallFontFamily,
363
469
  toggleActivateFont,
364
470
  getAvailableFontsOutline,
365
471
  modalTabOpen,
@@ -30,14 +30,14 @@ import CollectionFontDetails from './collection-font-details';
30
30
  import { toggleFont } from './utils/toggleFont';
31
31
  import { getFontsOutline } from './utils/fonts-outline';
32
32
  import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
33
- import { getNoticeFromInstallResponse } from './utils/get-notice-from-response';
33
+ import { downloadFontFaceAsset } from './utils';
34
34
 
35
35
  const DEFAULT_CATEGORY = {
36
- id: 'all',
36
+ slug: 'all',
37
37
  name: __( 'All' ),
38
38
  };
39
- function FontCollection( { id } ) {
40
- const requiresPermission = id === 'default-font-collection';
39
+ function FontCollection( { slug } ) {
40
+ const requiresPermission = slug === 'default-font-collection';
41
41
 
42
42
  const getGoogleFontsPermissionFromStorage = () => {
43
43
  return (
@@ -57,7 +57,7 @@ function FontCollection( { id } ) {
57
57
  const { collections, getFontCollection, installFont } =
58
58
  useContext( FontLibraryContext );
59
59
  const selectedCollection = collections.find(
60
- ( collection ) => collection.id === id
60
+ ( collection ) => collection.slug === slug
61
61
  );
62
62
 
63
63
  useEffect( () => {
@@ -69,12 +69,12 @@ function FontCollection( { id } ) {
69
69
  handleStorage();
70
70
  window.addEventListener( 'storage', handleStorage );
71
71
  return () => window.removeEventListener( 'storage', handleStorage );
72
- }, [ id, requiresPermission ] );
72
+ }, [ slug, requiresPermission ] );
73
73
 
74
74
  useEffect( () => {
75
75
  const fetchFontCollection = async () => {
76
76
  try {
77
- await getFontCollection( id );
77
+ await getFontCollection( slug );
78
78
  resetFilters();
79
79
  } catch ( e ) {
80
80
  setNotice( {
@@ -85,12 +85,12 @@ function FontCollection( { id } ) {
85
85
  }
86
86
  };
87
87
  fetchFontCollection();
88
- }, [ id, getFontCollection ] );
88
+ }, [ slug, getFontCollection ] );
89
89
 
90
90
  useEffect( () => {
91
91
  setSelectedFont( null );
92
92
  setNotice( null );
93
- }, [ id ] );
93
+ }, [ slug ] );
94
94
 
95
95
  useEffect( () => {
96
96
  // If the selected fonts change, reset the selected fonts to install
@@ -108,10 +108,10 @@ function FontCollection( { id } ) {
108
108
  }, [ notice ] );
109
109
 
110
110
  const collectionFonts = useMemo(
111
- () => selectedCollection?.data?.fontFamilies ?? [],
111
+ () => selectedCollection?.font_families ?? [],
112
112
  [ selectedCollection ]
113
113
  );
114
- const collectionCategories = selectedCollection?.data?.categories ?? [];
114
+ const collectionCategories = selectedCollection?.categories ?? [];
115
115
 
116
116
  const categories = [ DEFAULT_CATEGORY, ...collectionCategories ];
117
117
 
@@ -154,9 +154,44 @@ function FontCollection( { id } ) {
154
154
  };
155
155
 
156
156
  const handleInstall = async () => {
157
- const response = await installFont( fontsToInstall[ 0 ] );
158
- const installNotice = getNoticeFromInstallResponse( response );
159
- setNotice( installNotice );
157
+ const fontFamily = fontsToInstall[ 0 ];
158
+
159
+ try {
160
+ if ( fontFamily?.fontFace ) {
161
+ await Promise.all(
162
+ fontFamily.fontFace.map( async ( fontFace ) => {
163
+ if ( fontFace.src ) {
164
+ fontFace.file = await downloadFontFaceAsset(
165
+ fontFace.src
166
+ );
167
+ }
168
+ } )
169
+ );
170
+ }
171
+ } catch ( error ) {
172
+ // If any of the fonts fail to download,
173
+ // show an error notice and stop the request from being sent.
174
+ setNotice( {
175
+ type: 'error',
176
+ message: __(
177
+ 'Error installing the fonts, could not be downloaded.'
178
+ ),
179
+ } );
180
+ return;
181
+ }
182
+
183
+ try {
184
+ await installFont( fontFamily );
185
+ setNotice( {
186
+ type: 'success',
187
+ message: __( 'Fonts were installed successfully.' ),
188
+ } );
189
+ } catch ( error ) {
190
+ setNotice( {
191
+ type: 'error',
192
+ message: error.message,
193
+ } );
194
+ }
160
195
  resetFontsToInstall();
161
196
  };
162
197
 
@@ -228,8 +263,8 @@ function FontCollection( { id } ) {
228
263
  { categories &&
229
264
  categories.map( ( category ) => (
230
265
  <option
231
- value={ category.id }
232
- key={ category.id }
266
+ value={ category.slug }
267
+ key={ category.slug }
233
268
  >
234
269
  { category.name }
235
270
  </option>
@@ -241,11 +276,11 @@ function FontCollection( { id } ) {
241
276
 
242
277
  <Spacer margin={ 4 } />
243
278
  { ! renderConfirmDialog &&
244
- ! selectedCollection?.data?.fontFamilies &&
279
+ ! selectedCollection?.font_families &&
245
280
  ! notice && <Spinner /> }
246
281
 
247
282
  { ! renderConfirmDialog &&
248
- !! selectedCollection?.data?.fontFamilies?.length &&
283
+ !! selectedCollection?.font_families?.length &&
249
284
  ! fonts.length && (
250
285
  <Text>
251
286
  { __(
@@ -266,10 +301,10 @@ function FontCollection( { id } ) {
266
301
  <FontsGrid>
267
302
  { fonts.map( ( font ) => (
268
303
  <FontCard
269
- key={ font.slug }
270
- font={ font }
304
+ key={ font.font_family_settings.slug }
305
+ font={ font.font_family_settings }
271
306
  onClick={ () => {
272
- setSelectedFont( font );
307
+ setSelectedFont( font.font_family_settings );
273
308
  } }
274
309
  />
275
310
  ) ) }
@@ -42,9 +42,13 @@ function FontsGrid( { title, children, pageSize = 32 } ) {
42
42
  <div className="font-library-modal__fonts-grid__main">
43
43
  { items.map( ( child, i ) => {
44
44
  if ( i === itemsLimit - 1 ) {
45
- return <div ref={ setLastItem }>{ child }</div>;
45
+ return (
46
+ <div key={ child.key } ref={ setLastItem }>
47
+ { child }
48
+ </div>
49
+ );
46
50
  }
47
- return child;
51
+ return <div key={ child.key }>{ child }</div>;
48
52
  } ) }
49
53
  </div>
50
54
  </VStack>
@@ -31,10 +31,10 @@ const DEFAULT_TABS = [
31
31
  ];
32
32
 
33
33
  const tabsFromCollections = ( collections ) =>
34
- collections.map( ( { id, name } ) => ( {
35
- id,
34
+ collections.map( ( { slug, name } ) => ( {
35
+ id: slug,
36
36
  title:
37
- collections.length === 1 && id === 'default-font-collection'
37
+ collections.length === 1 && slug === 'default-font-collection'
38
38
  ? __( 'Install Fonts' )
39
39
  : name,
40
40
  } ) );
@@ -76,7 +76,7 @@ function FontLibraryModal( {
76
76
  contents = <InstalledFonts />;
77
77
  break;
78
78
  default:
79
- contents = <FontCollection id={ id } />;
79
+ contents = <FontCollection slug={ id } />;
80
80
  }
81
81
  return (
82
82
  <Tabs.TabPanel
@@ -22,7 +22,6 @@ import FontsGrid from './fonts-grid';
22
22
  import LibraryFontDetails from './library-font-details';
23
23
  import LibraryFontCard from './library-font-card';
24
24
  import ConfirmDeleteDialog from './confirm-delete-dialog';
25
- import { getNoticeFromUninstallResponse } from './utils/get-notice-from-response';
26
25
  import { unlock } from '../../../lock-unlock';
27
26
  const { ProgressBar } = unlock( componentsPrivateApis );
28
27
 
@@ -33,7 +32,7 @@ function InstalledFonts() {
33
32
  baseThemeFonts,
34
33
  handleSetLibraryFontSelected,
35
34
  refreshLibrary,
36
- uninstallFont,
35
+ uninstallFontFamily,
37
36
  isResolvingLibrary,
38
37
  } = useContext( FontLibraryContext );
39
38
  const [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] = useState( false );
@@ -49,14 +48,24 @@ function InstalledFonts() {
49
48
  const [ notice, setNotice ] = useState( null );
50
49
 
51
50
  const handleConfirmUninstall = async () => {
52
- const response = await uninstallFont( libraryFontSelected );
53
- const uninstallNotice = getNoticeFromUninstallResponse( response );
54
- setNotice( uninstallNotice );
55
- // If the font was succesfully uninstalled it is unselected
56
- if ( ! response?.errors?.length ) {
51
+ try {
52
+ await uninstallFontFamily( libraryFontSelected );
53
+ setNotice( {
54
+ type: 'success',
55
+ message: __( 'Font family uninstalled successfully.' ),
56
+ } );
57
+
58
+ // If the font was succesfully uninstalled it is unselected.
57
59
  handleUnselectFont();
60
+ setIsConfirmDeleteOpen( false );
61
+ } catch ( error ) {
62
+ setNotice( {
63
+ type: 'error',
64
+ message:
65
+ __( 'There was an error uninstalling the font family. ' ) +
66
+ error.message,
67
+ } );
58
68
  }
59
- setIsConfirmDeleteOpen( false );
60
69
  };
61
70
 
62
71
  const handleUninstallClick = async () => {
@@ -77,6 +86,7 @@ function InstalledFonts() {
77
86
  !! libraryFontSelected && libraryFontSelected?.source !== 'theme';
78
87
 
79
88
  useEffect( () => {
89
+ handleSelectFont( libraryFontSelected );
80
90
  refreshLibrary();
81
91
  // eslint-disable-next-line react-hooks/exhaustive-deps
82
92
  }, [] );
@@ -13,7 +13,8 @@ import { FontLibraryContext } from './context';
13
13
  function LibraryFontCard( { font, ...props } ) {
14
14
  const { getFontFacesActivated } = useContext( FontLibraryContext );
15
15
 
16
- const variantsInstalled = font.fontFace?.length || 1;
16
+ const variantsInstalled =
17
+ font?.fontFace?.length > 0 ? font.fontFace.length : 1;
17
18
  const variantsActive = getFontFacesActivated(
18
19
  font.slug,
19
20
  font.source
@@ -20,17 +20,18 @@ function LibraryFontVariant( { face, font } ) {
20
20
  const { isFontActivated, toggleActivateFont } =
21
21
  useContext( FontLibraryContext );
22
22
 
23
- const isIstalled = font?.fontFace
24
- ? isFontActivated(
25
- font.slug,
26
- face.fontStyle,
27
- face.fontWeight,
28
- font.source
29
- )
30
- : isFontActivated( font.slug, null, null, font.source );
23
+ const isIstalled =
24
+ font?.fontFace?.length > 0
25
+ ? isFontActivated(
26
+ font.slug,
27
+ face.fontStyle,
28
+ face.fontWeight,
29
+ font.source
30
+ )
31
+ : isFontActivated( font.slug, null, null, font.source );
31
32
 
32
33
  const handleToggleActivation = () => {
33
- if ( font?.fontFace ) {
34
+ if ( font?.fontFace?.length > 0 ) {
34
35
  toggleActivateFont( font, face );
35
36
  return;
36
37
  }
@@ -23,7 +23,6 @@ import { FontLibraryContext } from './context';
23
23
  import { Font } from '../../../../lib/lib-font.browser';
24
24
  import makeFamiliesFromFaces from './utils/make-families-from-faces';
25
25
  import { loadFontFaceInBrowser } from './utils';
26
- import { getNoticeFromInstallResponse } from './utils/get-notice-from-response';
27
26
  import { unlock } from '../../../lock-unlock';
28
27
 
29
28
  const { ProgressBar } = unlock( componentsPrivateApis );
@@ -161,12 +160,23 @@ function LocalFonts() {
161
160
  'Variants from only one font family can be uploaded at a time.'
162
161
  ),
163
162
  } );
163
+ setIsUploading( false );
164
164
  return;
165
165
  }
166
166
 
167
- const response = await installFont( fontFamilies[ 0 ] );
168
- const installNotice = getNoticeFromInstallResponse( response );
169
- setNotice( installNotice );
167
+ try {
168
+ await installFont( fontFamilies[ 0 ] );
169
+ setNotice( {
170
+ type: 'success',
171
+ message: __( 'Fonts were installed successfully.' ),
172
+ } );
173
+ } catch ( error ) {
174
+ setNotice( {
175
+ type: 'error',
176
+ message: error.message,
177
+ } );
178
+ }
179
+
170
180
  setIsUploading( false );
171
181
  };
172
182