@wordpress/edit-site 5.29.0 → 5.31.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 (511) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +3 -5
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +18 -6
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +1 -15
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  11. package/build/components/global-styles/font-families.js +1 -1
  12. package/build/components/global-styles/font-families.js.map +1 -1
  13. package/build/components/global-styles/font-library-modal/collection-font-variant.js +2 -2
  14. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  15. package/build/components/global-styles/font-library-modal/context.js +70 -59
  16. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  17. package/build/components/global-styles/font-library-modal/font-card.js +10 -15
  18. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/font-collection.js +121 -78
  20. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/font-demo.js +29 -8
  22. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
  24. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/index.js +19 -6
  26. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  28. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  30. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/upload-fonts.js +51 -23
  32. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  33. package/build/components/global-styles/font-library-modal/utils/index.js +39 -5
  34. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  36. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  37. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  38. package/build/components/global-styles/header.js +2 -2
  39. package/build/components/global-styles/header.js.map +1 -1
  40. package/build/components/global-styles/highlighted-colors.js +50 -0
  41. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  42. package/build/components/global-styles/hooks.js +50 -1
  43. package/build/components/global-styles/hooks.js.map +1 -1
  44. package/build/components/global-styles/preview-colors.js +62 -0
  45. package/build/components/global-styles/preview-colors.js.map +1 -0
  46. package/build/components/global-styles/preview-iframe.js +130 -0
  47. package/build/components/global-styles/preview-iframe.js.map +1 -0
  48. package/build/components/global-styles/preview-styles.js +163 -0
  49. package/build/components/global-styles/preview-styles.js.map +1 -0
  50. package/build/components/global-styles/screen-block-list.js +1 -1
  51. package/build/components/global-styles/screen-block-list.js.map +1 -1
  52. package/build/components/global-styles/screen-block.js +1 -1
  53. package/build/components/global-styles/screen-block.js.map +1 -1
  54. package/build/components/global-styles/screen-colors.js +3 -2
  55. package/build/components/global-styles/screen-colors.js.map +1 -1
  56. package/build/components/global-styles/screen-revisions/index.js +2 -2
  57. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  58. package/build/components/global-styles/screen-root.js +2 -2
  59. package/build/components/global-styles/screen-root.js.map +1 -1
  60. package/build/components/global-styles/screen-typography.js +5 -2
  61. package/build/components/global-styles/screen-typography.js.map +1 -1
  62. package/build/components/global-styles/style-variations-container.js +12 -84
  63. package/build/components/global-styles/style-variations-container.js.map +1 -1
  64. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  65. package/build/components/global-styles/typography-elements.js.map +1 -0
  66. package/build/components/global-styles/typography-example.js +67 -0
  67. package/build/components/global-styles/typography-example.js.map +1 -0
  68. package/build/components/global-styles/typography-preview.js +3 -1
  69. package/build/components/global-styles/typography-preview.js.map +1 -1
  70. package/build/components/global-styles/ui.js +27 -2
  71. package/build/components/global-styles/ui.js.map +1 -1
  72. package/build/components/global-styles/utils.js +22 -0
  73. package/build/components/global-styles/utils.js.map +1 -1
  74. package/build/components/global-styles/variations/variation.js +90 -0
  75. package/build/components/global-styles/variations/variation.js.map +1 -0
  76. package/build/components/global-styles/variations/variations-color.js +35 -0
  77. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  78. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  79. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  80. package/build/components/global-styles/variations/variations-typography.js +54 -0
  81. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  82. package/build/components/header-edit-mode/index.js +14 -12
  83. package/build/components/header-edit-mode/index.js.map +1 -1
  84. package/build/components/header-edit-mode/more-menu/index.js +10 -2
  85. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  86. package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
  87. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  88. package/build/components/keyboard-shortcuts/global.js +17 -3
  89. package/build/components/keyboard-shortcuts/global.js.map +1 -1
  90. package/build/components/layout/index.js +4 -1
  91. package/build/components/layout/index.js.map +1 -1
  92. package/build/components/layout/router.js +2 -5
  93. package/build/components/layout/router.js.map +1 -1
  94. package/build/components/page-pages/index.js +6 -11
  95. package/build/components/page-pages/index.js.map +1 -1
  96. package/build/components/page-patterns/delete-category-menu-item.js +6 -1
  97. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
  98. package/build/components/page-patterns/index.js +15 -18
  99. package/build/components/page-patterns/index.js.map +1 -1
  100. package/build/components/page-patterns/use-patterns.js +9 -9
  101. package/build/components/page-patterns/use-patterns.js.map +1 -1
  102. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  103. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  104. package/build/components/page-templates-template-parts/index.js +25 -22
  105. package/build/components/page-templates-template-parts/index.js.map +1 -1
  106. package/build/components/resizable-frame/index.js +2 -1
  107. package/build/components/resizable-frame/index.js.map +1 -1
  108. package/build/components/revisions/index.js.map +1 -1
  109. package/build/components/save-panel/index.js +31 -11
  110. package/build/components/save-panel/index.js.map +1 -1
  111. package/build/components/sidebar/index.js +3 -4
  112. package/build/components/sidebar/index.js.map +1 -1
  113. package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  114. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  115. package/build/components/sidebar-dataviews/dataview-item.js +2 -2
  116. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  117. package/build/components/sidebar-dataviews/default-views.js +4 -2
  118. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  119. package/build/components/sidebar-dataviews/index.js +4 -3
  120. package/build/components/sidebar-dataviews/index.js.map +1 -1
  121. package/build/components/sidebar-edit-mode/page-panels/index.js +2 -2
  122. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  123. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/sidebar-card/index.js +12 -6
  127. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  128. package/build/components/sidebar-edit-mode/template-panel/index.js +23 -3
  129. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-global-styles/index.js +13 -1
  131. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  133. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
  135. package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  136. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  137. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  139. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  141. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  143. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  144. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  145. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  146. package/build/components/sidebar-navigation-screen-template/index.js +7 -3
  147. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  148. package/build/components/sidebar-navigation-screen-templates-browse/content.js +6 -6
  149. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  150. package/build/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  151. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  152. package/build/components/start-template-options/index.js.map +1 -1
  153. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  154. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  155. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  156. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  157. package/build/components/template-actions/index.js +44 -27
  158. package/build/components/template-actions/index.js.map +1 -1
  159. package/build/components/welcome-guide/editor.js +11 -2
  160. package/build/components/welcome-guide/editor.js.map +1 -1
  161. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +78 -0
  162. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  163. package/build/utils/constants.js +5 -3
  164. package/build/utils/constants.js.map +1 -1
  165. package/build/utils/get-is-list-page.js +1 -1
  166. package/build/utils/get-is-list-page.js.map +1 -1
  167. package/build/utils/math.js +98 -0
  168. package/build/utils/math.js.map +1 -0
  169. package/build-module/components/actions/index.js +4 -6
  170. package/build-module/components/actions/index.js.map +1 -1
  171. package/build-module/components/block-editor/editor-canvas.js +18 -6
  172. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  173. package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  175. package/build-module/components/editor/index.js +2 -16
  176. package/build-module/components/editor/index.js.map +1 -1
  177. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  178. package/build-module/components/global-styles/font-families.js +1 -1
  179. package/build-module/components/global-styles/font-families.js.map +1 -1
  180. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
  181. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  182. package/build-module/components/global-styles/font-library-modal/context.js +72 -61
  183. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  184. package/build-module/components/global-styles/font-library-modal/font-card.js +11 -16
  185. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
  186. package/build-module/components/global-styles/font-library-modal/font-collection.js +124 -81
  187. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  188. package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -9
  189. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  190. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
  191. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  192. package/build-module/components/global-styles/font-library-modal/index.js +19 -6
  193. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  194. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  195. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  196. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +4 -4
  197. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  198. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +52 -24
  199. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  200. package/build-module/components/global-styles/font-library-modal/utils/index.js +38 -5
  201. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  202. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  203. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  204. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  205. package/build-module/components/global-styles/header.js +2 -2
  206. package/build-module/components/global-styles/header.js.map +1 -1
  207. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  208. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  209. package/build-module/components/global-styles/hooks.js +48 -1
  210. package/build-module/components/global-styles/hooks.js.map +1 -1
  211. package/build-module/components/global-styles/preview-colors.js +54 -0
  212. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  213. package/build-module/components/global-styles/preview-iframe.js +123 -0
  214. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  215. package/build-module/components/global-styles/preview-styles.js +155 -0
  216. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  217. package/build-module/components/global-styles/screen-block-list.js +1 -1
  218. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  219. package/build-module/components/global-styles/screen-block.js +1 -1
  220. package/build-module/components/global-styles/screen-block.js.map +1 -1
  221. package/build-module/components/global-styles/screen-colors.js +3 -2
  222. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  223. package/build-module/components/global-styles/screen-revisions/index.js +2 -2
  224. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  225. package/build-module/components/global-styles/screen-root.js +2 -2
  226. package/build-module/components/global-styles/screen-root.js.map +1 -1
  227. package/build-module/components/global-styles/screen-typography.js +5 -2
  228. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  229. package/build-module/components/global-styles/style-variations-container.js +13 -85
  230. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  231. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  232. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  233. package/build-module/components/global-styles/typography-example.js +60 -0
  234. package/build-module/components/global-styles/typography-example.js.map +1 -0
  235. package/build-module/components/global-styles/typography-preview.js +3 -1
  236. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  237. package/build-module/components/global-styles/ui.js +27 -2
  238. package/build-module/components/global-styles/ui.js.map +1 -1
  239. package/build-module/components/global-styles/utils.js +21 -0
  240. package/build-module/components/global-styles/utils.js.map +1 -1
  241. package/build-module/components/global-styles/variations/variation.js +82 -0
  242. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  243. package/build-module/components/global-styles/variations/variations-color.js +27 -0
  244. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  245. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  246. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  247. package/build-module/components/global-styles/variations/variations-typography.js +46 -0
  248. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  249. package/build-module/components/header-edit-mode/index.js +15 -13
  250. package/build-module/components/header-edit-mode/index.js.map +1 -1
  251. package/build-module/components/header-edit-mode/more-menu/index.js +13 -5
  252. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  253. package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
  254. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  255. package/build-module/components/keyboard-shortcuts/global.js +17 -3
  256. package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
  257. package/build-module/components/layout/index.js +4 -1
  258. package/build-module/components/layout/index.js.map +1 -1
  259. package/build-module/components/layout/router.js +2 -5
  260. package/build-module/components/layout/router.js.map +1 -1
  261. package/build-module/components/page-pages/index.js +7 -12
  262. package/build-module/components/page-pages/index.js.map +1 -1
  263. package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
  264. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
  265. package/build-module/components/page-patterns/index.js +16 -19
  266. package/build-module/components/page-patterns/index.js.map +1 -1
  267. package/build-module/components/page-patterns/use-patterns.js +9 -9
  268. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  269. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  270. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  271. package/build-module/components/page-templates-template-parts/index.js +25 -22
  272. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  273. package/build-module/components/resizable-frame/index.js +2 -1
  274. package/build-module/components/resizable-frame/index.js.map +1 -1
  275. package/build-module/components/revisions/index.js.map +1 -1
  276. package/build-module/components/save-panel/index.js +31 -11
  277. package/build-module/components/save-panel/index.js.map +1 -1
  278. package/build-module/components/sidebar/index.js +3 -4
  279. package/build-module/components/sidebar/index.js.map +1 -1
  280. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  281. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  282. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
  283. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  284. package/build-module/components/sidebar-dataviews/default-views.js +6 -4
  285. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  286. package/build-module/components/sidebar-dataviews/index.js +4 -3
  287. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  288. package/build-module/components/sidebar-edit-mode/page-panels/index.js +3 -3
  289. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  290. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  291. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
  292. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  293. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +13 -7
  294. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  295. package/build-module/components/sidebar-edit-mode/template-panel/index.js +24 -4
  296. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  297. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +14 -2
  298. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  299. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  300. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  301. package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  302. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  303. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  304. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  305. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  306. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  307. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  308. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  309. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  310. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  311. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  312. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  313. package/build-module/components/sidebar-navigation-screen-template/index.js +6 -2
  314. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  315. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  316. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  317. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  318. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  319. package/build-module/components/start-template-options/index.js.map +1 -1
  320. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  321. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  322. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  323. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  324. package/build-module/components/template-actions/index.js +44 -27
  325. package/build-module/components/template-actions/index.js.map +1 -1
  326. package/build-module/components/welcome-guide/editor.js +11 -2
  327. package/build-module/components/welcome-guide/editor.js.map +1 -1
  328. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +76 -1
  329. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  330. package/build-module/utils/constants.js +4 -2
  331. package/build-module/utils/constants.js.map +1 -1
  332. package/build-module/utils/get-is-list-page.js +1 -1
  333. package/build-module/utils/get-is-list-page.js.map +1 -1
  334. package/build-module/utils/math.js +92 -0
  335. package/build-module/utils/math.js.map +1 -0
  336. package/build-style/style-rtl.css +196 -315
  337. package/build-style/style.css +196 -315
  338. package/package.json +42 -42
  339. package/src/components/actions/index.js +4 -6
  340. package/src/components/block-editor/editor-canvas.js +20 -6
  341. package/src/components/block-editor/style.scss +0 -3
  342. package/src/components/block-editor/use-site-editor-settings.js +0 -2
  343. package/src/components/editor/index.js +0 -20
  344. package/src/components/global-styles/color-palette-panel.js +0 -1
  345. package/src/components/global-styles/font-families.js +1 -1
  346. package/src/components/global-styles/font-library-modal/collection-font-variant.js +5 -5
  347. package/src/components/global-styles/font-library-modal/context.js +136 -107
  348. package/src/components/global-styles/font-library-modal/font-card.js +11 -26
  349. package/src/components/global-styles/font-library-modal/font-collection.js +298 -218
  350. package/src/components/global-styles/font-library-modal/font-demo.js +38 -4
  351. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
  352. package/src/components/global-styles/font-library-modal/index.js +23 -16
  353. package/src/components/global-styles/font-library-modal/installed-fonts.js +243 -114
  354. package/src/components/global-styles/font-library-modal/library-font-variant.js +5 -5
  355. package/src/components/global-styles/font-library-modal/style.scss +27 -11
  356. package/src/components/global-styles/font-library-modal/upload-fonts.js +70 -27
  357. package/src/components/global-styles/font-library-modal/utils/index.js +45 -5
  358. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +6 -1
  359. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +7 -18
  360. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  361. package/src/components/global-styles/header.js +2 -2
  362. package/src/components/global-styles/highlighted-colors.js +39 -0
  363. package/src/components/global-styles/hooks.js +68 -1
  364. package/src/components/global-styles/preview-colors.js +61 -0
  365. package/src/components/global-styles/preview-iframe.js +152 -0
  366. package/src/components/global-styles/preview-styles.js +185 -0
  367. package/src/components/global-styles/screen-block-list.js +1 -1
  368. package/src/components/global-styles/screen-block.js +4 -1
  369. package/src/components/global-styles/screen-colors.js +3 -2
  370. package/src/components/global-styles/screen-revisions/index.js +5 -2
  371. package/src/components/global-styles/screen-root.js +2 -2
  372. package/src/components/global-styles/screen-typography.js +8 -2
  373. package/src/components/global-styles/style-variations-container.js +14 -92
  374. package/src/components/global-styles/style.scss +4 -35
  375. package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +5 -1
  376. package/src/components/global-styles/typography-example.js +64 -0
  377. package/src/components/global-styles/typography-preview.js +3 -1
  378. package/src/components/global-styles/ui.js +26 -2
  379. package/src/components/global-styles/utils.js +37 -0
  380. package/src/components/global-styles/variations/style.scss +38 -0
  381. package/src/components/global-styles/variations/variation.js +93 -0
  382. package/src/components/global-styles/variations/variations-color.js +34 -0
  383. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  384. package/src/components/global-styles/variations/variations-typography.js +63 -0
  385. package/src/components/header-edit-mode/index.js +21 -27
  386. package/src/components/header-edit-mode/more-menu/index.js +17 -8
  387. package/src/components/header-edit-mode/style.scss +4 -0
  388. package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
  389. package/src/components/keyboard-shortcuts/global.js +16 -4
  390. package/src/components/layout/index.js +5 -0
  391. package/src/components/layout/router.js +2 -7
  392. package/src/components/page-pages/index.js +8 -13
  393. package/src/components/page-patterns/delete-category-menu-item.js +7 -0
  394. package/src/components/page-patterns/index.js +23 -24
  395. package/src/components/page-patterns/use-patterns.js +17 -10
  396. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  397. package/src/components/page-templates-template-parts/index.js +34 -25
  398. package/src/components/page-templates-template-parts/style.scss +48 -0
  399. package/src/components/resizable-frame/index.js +1 -0
  400. package/src/components/revisions/index.js +1 -1
  401. package/src/components/save-panel/index.js +56 -27
  402. package/src/components/sidebar/index.js +3 -4
  403. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  404. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  405. package/src/components/sidebar-dataviews/default-views.js +14 -4
  406. package/src/components/sidebar-dataviews/index.js +4 -3
  407. package/src/components/sidebar-edit-mode/page-panels/index.js +2 -2
  408. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  409. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  410. package/src/components/sidebar-edit-mode/sidebar-card/index.js +30 -11
  411. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +10 -11
  412. package/src/components/sidebar-edit-mode/template-panel/index.js +25 -6
  413. package/src/components/sidebar-navigation-screen/style.scss +10 -1
  414. package/src/components/sidebar-navigation-screen-global-styles/index.js +35 -2
  415. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  416. package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  417. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
  418. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  419. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
  420. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  421. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  422. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  423. package/src/components/sidebar-navigation-screen-template/index.js +7 -2
  424. package/src/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  425. package/src/components/sidebar-navigation-screen-templates-browse/index.js +5 -3
  426. package/src/components/start-template-options/index.js +1 -1
  427. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  428. package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
  429. package/src/components/template-actions/index.js +63 -46
  430. package/src/components/welcome-guide/editor.js +9 -6
  431. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +173 -0
  432. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +85 -1
  433. package/src/style.scss +2 -3
  434. package/src/utils/constants.js +4 -2
  435. package/src/utils/get-is-list-page.js +1 -1
  436. package/src/utils/math.js +93 -0
  437. package/build/components/global-styles/font-library-modal/collection-font-details.js +0 -50
  438. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  439. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -30
  440. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  441. package/build/components/global-styles/font-library-modal/library-font-card.js +0 -39
  442. package/build/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  443. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +0 -67
  444. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  445. package/build/components/global-styles/preview.js +0 -271
  446. package/build/components/global-styles/preview.js.map +0 -1
  447. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  448. package/build/components/global-styles/variations-panel.js.map +0 -1
  449. package/build/components/list/added-by.js.map +0 -1
  450. package/build/components/list/header.js +0 -55
  451. package/build/components/list/header.js.map +0 -1
  452. package/build/components/list/index.js +0 -80
  453. package/build/components/list/index.js.map +0 -1
  454. package/build/components/list/table.js +0 -94
  455. package/build/components/list/table.js.map +0 -1
  456. package/build/components/list/use-register-shortcuts.js +0 -51
  457. package/build/components/list/use-register-shortcuts.js.map +0 -1
  458. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
  459. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  460. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  461. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  462. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  463. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  464. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  465. package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
  466. package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  467. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +0 -42
  468. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  469. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -23
  470. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  471. package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -31
  472. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  473. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +0 -60
  474. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  475. package/build-module/components/global-styles/preview.js +0 -264
  476. package/build-module/components/global-styles/preview.js.map +0 -1
  477. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  478. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  479. package/build-module/components/list/added-by.js.map +0 -1
  480. package/build-module/components/list/header.js +0 -47
  481. package/build-module/components/list/header.js.map +0 -1
  482. package/build-module/components/list/index.js +0 -72
  483. package/build-module/components/list/index.js.map +0 -1
  484. package/build-module/components/list/table.js +0 -86
  485. package/build-module/components/list/table.js.map +0 -1
  486. package/build-module/components/list/use-register-shortcuts.js +0 -45
  487. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  488. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
  489. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  490. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  491. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  492. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  493. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  494. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  495. package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
  496. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  497. package/src/components/global-styles/font-library-modal/collection-font-details.js +0 -56
  498. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -33
  499. package/src/components/global-styles/font-library-modal/library-font-card.js +0 -34
  500. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +0 -85
  501. package/src/components/global-styles/preview.js +0 -327
  502. package/src/components/list/header.js +0 -48
  503. package/src/components/list/index.js +0 -87
  504. package/src/components/list/style.scss +0 -188
  505. package/src/components/list/table.js +0 -140
  506. package/src/components/list/use-register-shortcuts.js +0 -49
  507. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
  508. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  509. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  510. package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
  511. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_element","_installedFonts","_interopRequireDefault","_fontCollection","_uploadFonts","_context","_lockUnlock","Tabs","unlock","componentsPrivateApis","DEFAULT_TABS","id","title","__","tabsFromCollections","collections","map","slug","name","length","FontLibraryModal","onRequestClose","initialTabId","setNotice","useContext","FontLibraryContext","tabs","onSelect","_react","createElement","Modal","isFullScreen","className","TabList","Tab","key","tabId","contents","default","TabPanel","focusable","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} 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';\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst DEFAULT_TABS = [\n\t{\n\t\tid: 'installed-fonts',\n\t\ttitle: __( 'Library' ),\n\t},\n\t{\n\t\tid: 'upload-fonts',\n\t\ttitle: __( 'Upload' ),\n\t},\n];\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { slug, name } ) => ( {\n\t\tid: slug,\n\t\ttitle:\n\t\t\tcollections.length === 1 && slug === 'google-fonts'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tinitialTabId = 'installed-fonts',\n} ) {\n\tconst { collections, setNotice } = useContext( FontLibraryContext );\n\n\tconst tabs = [\n\t\t...DEFAULT_TABS,\n\t\t...tabsFromCollections( collections || [] ),\n\t];\n\n\t// Reset notice when new tab is selected.\n\tconst onSelect = () => {\n\t\tsetNotice( null );\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<div className=\"font-library-modal__tabs\">\n\t\t\t\t<Tabs initialTabId={ initialTabId } onSelect={ onSelect }>\n\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t{ tabs.map( ( { id, title } ) => (\n\t\t\t\t\t\t\t<Tabs.Tab key={ id } tabId={ id }>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( { id } ) => {\n\t\t\t\t\t\tlet contents;\n\t\t\t\t\t\tswitch ( id ) {\n\t\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\t\tcontents = <UploadFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\t\tcontents = <InstalledFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontents = <FontCollection slug={ id } />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\ttabId={ id }\n\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contents }\n\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAIA,IAAAE,QAAA,GAAAF,OAAA;AAKA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,YAAA,GAAAF,sBAAA,CAAAJ,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAjBA;AACA;AACA;;AAQA;AACA;AACA;;AAOA,MAAM;EAAES;AAAK,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEhD,MAAMC,YAAY,GAAG,CACpB;EACCC,EAAE,EAAE,iBAAiB;EACrBC,KAAK,EAAE,IAAAC,QAAE,EAAE,SAAU;AACtB,CAAC,EACD;EACCF,EAAE,EAAE,cAAc;EAClBC,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAS;AACrB,CAAC,CACD;AAED,MAAMC,mBAAmB,GAAKC,WAAW,IACxCA,WAAW,CAACC,GAAG,CAAE,CAAE;EAAEC,IAAI;EAAEC;AAAK,CAAC,MAAQ;EACxCP,EAAE,EAAEM,IAAI;EACRL,KAAK,EACJG,WAAW,CAACI,MAAM,KAAK,CAAC,IAAIF,IAAI,KAAK,cAAc,GAChD,IAAAJ,QAAE,EAAE,eAAgB,CAAC,GACrBK;AACL,CAAC,CAAG,CAAC;AAEN,SAASE,gBAAgBA,CAAE;EAC1BC,cAAc;EACdC,YAAY,GAAG;AAChB,CAAC,EAAG;EACH,MAAM;IAAEP,WAAW;IAAEQ;EAAU,CAAC,GAAG,IAAAC,mBAAU,EAAEC,2BAAmB,CAAC;EAEnE,MAAMC,IAAI,GAAG,CACZ,GAAGhB,YAAY,EACf,GAAGI,mBAAmB,CAAEC,WAAW,IAAI,EAAG,CAAC,CAC3C;;EAED;EACA,MAAMY,QAAQ,GAAGA,CAAA,KAAM;IACtBJ,SAAS,CAAE,IAAK,CAAC;EAClB,CAAC;EAED,OACC,IAAAK,MAAA,CAAAC,aAAA,EAAC9B,WAAA,CAAA+B,KAAK;IACLlB,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAQ,CAAG;IACvBQ,cAAc,EAAGA,cAAgB;IACjCU,YAAY;IACZC,SAAS,EAAC;EAAoB,GAE9B,IAAAJ,MAAA,CAAAC,aAAA;IAAKG,SAAS,EAAC;EAA0B,GACxC,IAAAJ,MAAA,CAAAC,aAAA,EAACtB,IAAI;IAACe,YAAY,EAAGA,YAAc;IAACK,QAAQ,EAAGA;EAAU,GACxD,IAAAC,MAAA,CAAAC,aAAA,EAACtB,IAAI,CAAC0B,OAAO,QACVP,IAAI,CAACV,GAAG,CAAE,CAAE;IAAEL,EAAE;IAAEC;EAAM,CAAC,KAC1B,IAAAgB,MAAA,CAAAC,aAAA,EAACtB,IAAI,CAAC2B,GAAG;IAACC,GAAG,EAAGxB,EAAI;IAACyB,KAAK,EAAGzB;EAAI,GAC9BC,KACO,CACT,CACW,CAAC,EACbc,IAAI,CAACV,GAAG,CAAE,CAAE;IAAEL;EAAG,CAAC,KAAM;IACzB,IAAI0B,QAAQ;IACZ,QAAS1B,EAAE;MACV,KAAK,cAAc;QAClB0B,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAACzB,YAAA,CAAAkC,OAAW,MAAE,CAAC;QAC1B;MACD,KAAK,iBAAiB;QACrBD,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAAC5B,eAAA,CAAAqC,OAAc,MAAE,CAAC;QAC7B;MACD;QACCD,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAAC1B,eAAA,CAAAmC,OAAc;UAACrB,IAAI,EAAGN;QAAI,CAAE,CAAC;IAC3C;IACA,OACC,IAAAiB,MAAA,CAAAC,aAAA,EAACtB,IAAI,CAACgC,QAAQ;MACbJ,GAAG,EAAGxB,EAAI;MACVyB,KAAK,EAAGzB,EAAI;MACZ6B,SAAS,EAAG;IAAO,GAEjBH,QACY,CAAC;EAElB,CAAE,CACG,CACF,CACC,CAAC;AAEV;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAJ,OAAA,GAEclB,gBAAgB"}
1
+ {"version":3,"names":["_i18n","require","_components","_coreData","_data","_element","_installedFonts","_interopRequireDefault","_fontCollection","_uploadFonts","_context","_lockUnlock","Tabs","unlock","componentsPrivateApis","DEFAULT_TAB","id","title","__","UPLOAD_TAB","tabsFromCollections","collections","map","slug","name","length","FontLibraryModal","onRequestClose","defaultTabId","setNotice","useContext","FontLibraryContext","canUserCreate","useSelect","select","canUser","coreStore","tabs","push","onSelect","_react","createElement","Modal","isFullScreen","className","TabList","Tab","key","tabId","contents","default","TabPanel","focusable","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\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';\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst DEFAULT_TAB = {\n\tid: 'installed-fonts',\n\ttitle: __( 'Library' ),\n};\n\nconst UPLOAD_TAB = {\n\tid: 'upload-fonts',\n\ttitle: __( 'Upload' ),\n};\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { slug, name } ) => ( {\n\t\tid: slug,\n\t\ttitle:\n\t\t\tcollections.length === 1 && slug === 'google-fonts'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tdefaultTabId = 'installed-fonts',\n} ) {\n\tconst { collections, setNotice } = useContext( FontLibraryContext );\n\tconst canUserCreate = useSelect( ( select ) => {\n\t\tconst { canUser } = select( coreStore );\n\t\treturn canUser( 'create', 'font-families' );\n\t}, [] );\n\n\tconst tabs = [ DEFAULT_TAB ];\n\n\tif ( canUserCreate ) {\n\t\ttabs.push( UPLOAD_TAB );\n\t\ttabs.push( ...tabsFromCollections( collections || [] ) );\n\t}\n\n\t// Reset notice when new tab is selected.\n\tconst onSelect = () => {\n\t\tsetNotice( null );\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<div className=\"font-library-modal__tabs\">\n\t\t\t\t<Tabs defaultTabId={ defaultTabId } onSelect={ onSelect }>\n\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t{ tabs.map( ( { id, title } ) => (\n\t\t\t\t\t\t\t<Tabs.Tab key={ id } tabId={ id }>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( { id } ) => {\n\t\t\t\t\t\tlet contents;\n\t\t\t\t\t\tswitch ( id ) {\n\t\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\t\tcontents = <UploadFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\t\tcontents = <InstalledFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontents = <FontCollection slug={ id } />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\ttabId={ id }\n\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contents }\n\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAIA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAKA,IAAAK,eAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,eAAA,GAAAD,sBAAA,CAAAN,OAAA;AACA,IAAAQ,YAAA,GAAAF,sBAAA,CAAAN,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,WAAA,GAAAV,OAAA;AAnBA;AACA;AACA;;AAUA;AACA;AACA;;AAOA,MAAM;EAAEW;AAAK,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEhD,MAAMC,WAAW,GAAG;EACnBC,EAAE,EAAE,iBAAiB;EACrBC,KAAK,EAAE,IAAAC,QAAE,EAAE,SAAU;AACtB,CAAC;AAED,MAAMC,UAAU,GAAG;EAClBH,EAAE,EAAE,cAAc;EAClBC,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAS;AACrB,CAAC;AAED,MAAME,mBAAmB,GAAKC,WAAW,IACxCA,WAAW,CAACC,GAAG,CAAE,CAAE;EAAEC,IAAI;EAAEC;AAAK,CAAC,MAAQ;EACxCR,EAAE,EAAEO,IAAI;EACRN,KAAK,EACJI,WAAW,CAACI,MAAM,KAAK,CAAC,IAAIF,IAAI,KAAK,cAAc,GAChD,IAAAL,QAAE,EAAE,eAAgB,CAAC,GACrBM;AACL,CAAC,CAAG,CAAC;AAEN,SAASE,gBAAgBA,CAAE;EAC1BC,cAAc;EACdC,YAAY,GAAG;AAChB,CAAC,EAAG;EACH,MAAM;IAAEP,WAAW;IAAEQ;EAAU,CAAC,GAAG,IAAAC,mBAAU,EAAEC,2BAAmB,CAAC;EACnE,MAAMC,aAAa,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC9C,MAAM;MAAEC;IAAQ,CAAC,GAAGD,MAAM,CAAEE,eAAU,CAAC;IACvC,OAAOD,OAAO,CAAE,QAAQ,EAAE,eAAgB,CAAC;EAC5C,CAAC,EAAE,EAAG,CAAC;EAEP,MAAME,IAAI,GAAG,CAAEtB,WAAW,CAAE;EAE5B,IAAKiB,aAAa,EAAG;IACpBK,IAAI,CAACC,IAAI,CAAEnB,UAAW,CAAC;IACvBkB,IAAI,CAACC,IAAI,CAAE,GAAGlB,mBAAmB,CAAEC,WAAW,IAAI,EAAG,CAAE,CAAC;EACzD;;EAEA;EACA,MAAMkB,QAAQ,GAAGA,CAAA,KAAM;IACtBV,SAAS,CAAE,IAAK,CAAC;EAClB,CAAC;EAED,OACC,IAAAW,MAAA,CAAAC,aAAA,EAACvC,WAAA,CAAAwC,KAAK;IACLzB,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAQ,CAAG;IACvBS,cAAc,EAAGA,cAAgB;IACjCgB,YAAY;IACZC,SAAS,EAAC;EAAoB,GAE9B,IAAAJ,MAAA,CAAAC,aAAA;IAAKG,SAAS,EAAC;EAA0B,GACxC,IAAAJ,MAAA,CAAAC,aAAA,EAAC7B,IAAI;IAACgB,YAAY,EAAGA,YAAc;IAACW,QAAQ,EAAGA;EAAU,GACxD,IAAAC,MAAA,CAAAC,aAAA,EAAC7B,IAAI,CAACiC,OAAO,QACVR,IAAI,CAACf,GAAG,CAAE,CAAE;IAAEN,EAAE;IAAEC;EAAM,CAAC,KAC1B,IAAAuB,MAAA,CAAAC,aAAA,EAAC7B,IAAI,CAACkC,GAAG;IAACC,GAAG,EAAG/B,EAAI;IAACgC,KAAK,EAAGhC;EAAI,GAC9BC,KACO,CACT,CACW,CAAC,EACboB,IAAI,CAACf,GAAG,CAAE,CAAE;IAAEN;EAAG,CAAC,KAAM;IACzB,IAAIiC,QAAQ;IACZ,QAASjC,EAAE;MACV,KAAK,cAAc;QAClBiC,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAAChC,YAAA,CAAAyC,OAAW,MAAE,CAAC;QAC1B;MACD,KAAK,iBAAiB;QACrBD,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAACnC,eAAA,CAAA4C,OAAc,MAAE,CAAC;QAC7B;MACD;QACCD,QAAQ,GAAG,IAAAT,MAAA,CAAAC,aAAA,EAACjC,eAAA,CAAA0C,OAAc;UAAC3B,IAAI,EAAGP;QAAI,CAAE,CAAC;IAC3C;IACA,OACC,IAAAwB,MAAA,CAAAC,aAAA,EAAC7B,IAAI,CAACuC,QAAQ;MACbJ,GAAG,EAAG/B,EAAI;MACVgC,KAAK,EAAGhC,EAAI;MACZoC,SAAS,EAAG;IAAO,GAEjBH,QACY,CAAC;EAElB,CAAE,CACG,CACF,CACC,CAAC;AAEV;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAJ,OAAA,GAEcxB,gBAAgB"}
@@ -6,15 +6,17 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = require("react");
9
- var _i18n = require("@wordpress/i18n");
10
- var _element = require("@wordpress/element");
11
9
  var _components = require("@wordpress/components");
12
- var _tabPanelLayout = _interopRequireDefault(require("./tab-panel-layout"));
13
- var _context = require("./context");
14
- var _libraryFontDetails = _interopRequireDefault(require("./library-font-details"));
15
- var _libraryFontCard = _interopRequireDefault(require("./library-font-card"));
16
- var _confirmDeleteDialog = _interopRequireDefault(require("./confirm-delete-dialog"));
10
+ var _coreData = require("@wordpress/core-data");
11
+ var _data = require("@wordpress/data");
12
+ var _element = require("@wordpress/element");
13
+ var _i18n = require("@wordpress/i18n");
14
+ var _icons = require("@wordpress/icons");
17
15
  var _lockUnlock = require("../../../lock-unlock");
16
+ var _context = require("./context");
17
+ var _fontCard = _interopRequireDefault(require("./font-card"));
18
+ var _libraryFontVariant = _interopRequireDefault(require("./library-font-variant"));
19
+ var _sortFontFaces = require("./utils/sort-font-faces");
18
20
  /**
19
21
  * WordPress dependencies
20
22
  */
@@ -35,71 +37,74 @@ function InstalledFonts() {
35
37
  refreshLibrary,
36
38
  uninstallFontFamily,
37
39
  isResolvingLibrary,
40
+ isInstalling,
41
+ saveFontFamilies,
42
+ getFontFacesActivated,
43
+ fontFamiliesHasChanges,
38
44
  notice,
39
45
  setNotice
40
46
  } = (0, _element.useContext)(_context.FontLibraryContext);
41
47
  const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, _element.useState)(false);
42
- const handleUnselectFont = () => {
43
- handleSetLibraryFontSelected(null);
44
- };
45
- const handleSelectFont = font => {
46
- handleSetLibraryFontSelected(font);
48
+ const customFontFamilyId = libraryFontSelected?.source === 'custom' && libraryFontSelected?.id;
49
+ const canUserDelete = (0, _data.useSelect)(select => {
50
+ const {
51
+ canUser
52
+ } = select(_coreData.store);
53
+ return customFontFamilyId && canUser('delete', 'font-families', customFontFamilyId);
54
+ }, [customFontFamilyId]);
55
+ const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== 'theme' && canUserDelete;
56
+ const handleUninstallClick = () => {
57
+ setIsConfirmDeleteOpen(true);
47
58
  };
48
- const handleConfirmUninstall = async () => {
49
- setNotice(null);
50
- try {
51
- await uninstallFontFamily(libraryFontSelected);
52
- setNotice({
53
- type: 'success',
54
- message: (0, _i18n.__)('Font family uninstalled successfully.')
55
- });
56
-
57
- // If the font was succesfully uninstalled it is unselected.
58
- handleUnselectFont();
59
- setIsConfirmDeleteOpen(false);
60
- } catch (error) {
61
- setNotice({
62
- type: 'error',
63
- message: (0, _i18n.__)('There was an error uninstalling the font family. ') + error.message
64
- });
59
+ const getFontFacesToDisplay = font => {
60
+ if (!font) {
61
+ return [];
62
+ }
63
+ if (!font.fontFace || !font.fontFace.length) {
64
+ return [{
65
+ fontFamily: font.fontFamily,
66
+ fontStyle: 'normal',
67
+ fontWeight: '400'
68
+ }];
65
69
  }
70
+ return (0, _sortFontFaces.sortFontFaces)(font.fontFace);
66
71
  };
67
- const handleUninstallClick = async () => {
68
- setIsConfirmDeleteOpen(true);
72
+ const getFontCardVariantsText = font => {
73
+ const variantsInstalled = font?.fontFace?.length > 0 ? font.fontFace.length : 1;
74
+ const variantsActive = getFontFacesActivated(font.slug, font.source).length;
75
+ return (0, _i18n.sprintf)( /* translators: 1: Active font variants, 2: Total font variants. */
76
+ (0, _i18n.__)('%1$s/%2$s variants active'), variantsActive, variantsInstalled);
69
77
  };
70
- const handleCancelUninstall = () => {
71
- setIsConfirmDeleteOpen(false);
72
- };
73
- const tabDescription = !!libraryFontSelected ? (0, _i18n.__)('Choose font variants. Keep in mind that too many variants could make your site slower.') : null;
74
- const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== 'theme';
75
78
  (0, _element.useEffect)(() => {
76
- handleSelectFont(libraryFontSelected);
79
+ handleSetLibraryFontSelected(libraryFontSelected);
77
80
  refreshLibrary();
78
- // eslint-disable-next-line react-hooks/exhaustive-deps
79
81
  }, []);
80
- return (0, _react.createElement)(_tabPanelLayout.default, {
81
- title: libraryFontSelected?.name || '',
82
- description: tabDescription,
83
- notice: notice,
84
- handleBack: !!libraryFontSelected && handleUnselectFont,
85
- footer: (0, _react.createElement)(Footer, {
86
- shouldDisplayDeleteButton: shouldDisplayDeleteButton,
87
- handleUninstallClick: handleUninstallClick
88
- })
89
- }, (0, _react.createElement)(_confirmDeleteDialog.default, {
90
- font: libraryFontSelected,
91
- isConfirmDeleteOpen: isConfirmDeleteOpen,
92
- handleConfirmUninstall: handleConfirmUninstall,
93
- handleCancelUninstall: handleCancelUninstall
94
- }), !libraryFontSelected && (0, _react.createElement)(_react.Fragment, null, isResolvingLibrary && (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_components.__experimentalSpacer, {
95
- margin: 2
96
- }), (0, _react.createElement)(_components.Spinner, null), (0, _react.createElement)(_components.__experimentalSpacer, {
82
+ return (0, _react.createElement)("div", {
83
+ className: "font-library-modal__tabpanel-layout"
84
+ }, isResolvingLibrary && (0, _react.createElement)(_components.__experimentalHStack, {
85
+ align: "center"
86
+ }, (0, _react.createElement)(_components.__experimentalSpacer, null), (0, _react.createElement)(_components.Spinner, null), (0, _react.createElement)(_components.__experimentalSpacer, null)), (0, _react.createElement)(_components.__experimentalNavigatorProvider, {
87
+ initialPath: libraryFontSelected ? '/fontFamily' : '/'
88
+ }, (0, _react.createElement)(_components.__experimentalNavigatorScreen, {
89
+ path: "/"
90
+ }, notice && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.__experimentalSpacer, {
91
+ margin: 1
92
+ }), (0, _react.createElement)(_components.Notice, {
93
+ status: notice.type,
94
+ onRemove: () => setNotice(null)
95
+ }, notice.message), (0, _react.createElement)(_components.__experimentalSpacer, {
96
+ margin: 1
97
+ })), baseCustomFonts.length > 0 && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.__experimentalText, {
98
+ className: "font-library-modal__subtitle"
99
+ }, (0, _i18n.__)('Installed Fonts')), (0, _react.createElement)(_components.__experimentalSpacer, {
97
100
  margin: 2
98
- })), baseCustomFonts.length > 0 && (0, _react.createElement)(_react.Fragment, null, baseCustomFonts.map(font => (0, _react.createElement)(_libraryFontCard.default, {
101
+ }), baseCustomFonts.map(font => (0, _react.createElement)(_fontCard.default, {
99
102
  font: font,
100
103
  key: font.slug,
104
+ navigatorPath: '/fontFamily',
105
+ variantsText: getFontCardVariantsText(font),
101
106
  onClick: () => {
102
- handleSelectFont(font);
107
+ handleSetLibraryFontSelected(font);
103
108
  }
104
109
  })), (0, _react.createElement)(_components.__experimentalSpacer, {
105
110
  margin: 8
@@ -107,42 +112,109 @@ function InstalledFonts() {
107
112
  className: "font-library-modal__subtitle"
108
113
  }, (0, _i18n.__)('Theme Fonts')), (0, _react.createElement)(_components.__experimentalSpacer, {
109
114
  margin: 2
110
- }), baseThemeFonts.map(font => (0, _react.createElement)(_libraryFontCard.default, {
115
+ }), baseThemeFonts.map(font => (0, _react.createElement)(_fontCard.default, {
111
116
  font: font,
112
117
  key: font.slug,
118
+ navigatorPath: '/fontFamily',
119
+ variantsText: getFontCardVariantsText(font),
113
120
  onClick: () => {
114
- handleSelectFont(font);
121
+ handleSetLibraryFontSelected(font);
115
122
  }
116
123
  }))), (0, _react.createElement)(_components.__experimentalSpacer, {
117
124
  margin: 16
118
- })), libraryFontSelected && (0, _react.createElement)(_libraryFontDetails.default, {
125
+ })), (0, _react.createElement)(_components.__experimentalNavigatorScreen, {
126
+ path: "/fontFamily"
127
+ }, (0, _react.createElement)(ConfirmDeleteDialog, {
119
128
  font: libraryFontSelected,
120
- isConfirmDeleteOpen: isConfirmDeleteOpen,
121
- handleConfirmUninstall: handleConfirmUninstall,
122
- handleCancelUninstall: handleCancelUninstall
123
- }));
124
- }
125
- function Footer({
126
- shouldDisplayDeleteButton,
127
- handleUninstallClick
128
- }) {
129
- const {
130
- saveFontFamilies,
131
- fontFamiliesHasChanges,
132
- isInstalling
133
- } = (0, _element.useContext)(_context.FontLibraryContext);
134
- return (0, _react.createElement)(_components.__experimentalHStack, {
135
- justify: "flex-end"
136
- }, isInstalling && (0, _react.createElement)(ProgressBar, null), (0, _react.createElement)("div", null, shouldDisplayDeleteButton && (0, _react.createElement)(_components.Button, {
129
+ isOpen: isConfirmDeleteOpen,
130
+ setIsOpen: setIsConfirmDeleteOpen,
131
+ setNotice: setNotice,
132
+ uninstallFontFamily: uninstallFontFamily,
133
+ handleSetLibraryFontSelected: handleSetLibraryFontSelected
134
+ }), (0, _react.createElement)(_components.Flex, {
135
+ justify: "flex-start"
136
+ }, (0, _react.createElement)(_components.__experimentalNavigatorToParentButton, {
137
+ icon: _icons.chevronLeft,
138
+ size: "small",
139
+ onClick: () => {
140
+ handleSetLibraryFontSelected(null);
141
+ },
142
+ label: (0, _i18n.__)('Back')
143
+ }), (0, _react.createElement)(_components.__experimentalHeading, {
144
+ level: 2,
145
+ size: 13,
146
+ className: "edit-site-global-styles-header"
147
+ }, libraryFontSelected?.name)), notice && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.__experimentalSpacer, {
148
+ margin: 1
149
+ }), (0, _react.createElement)(_components.Notice, {
150
+ status: notice.type,
151
+ onRemove: () => setNotice(null)
152
+ }, notice.message), (0, _react.createElement)(_components.__experimentalSpacer, {
153
+ margin: 1
154
+ })), (0, _react.createElement)(_components.__experimentalSpacer, {
155
+ margin: 4
156
+ }), (0, _react.createElement)(_components.__experimentalText, null, (0, _i18n.__)('Choose font variants. Keep in mind that too many variants could make your site slower.')), (0, _react.createElement)(_components.__experimentalSpacer, {
157
+ margin: 4
158
+ }), (0, _react.createElement)(_components.__experimentalVStack, {
159
+ spacing: 0
160
+ }, (0, _react.createElement)(_components.__experimentalSpacer, {
161
+ margin: 8
162
+ }), getFontFacesToDisplay(libraryFontSelected).map((face, i) => (0, _react.createElement)(_libraryFontVariant.default, {
163
+ font: libraryFontSelected,
164
+ face: face,
165
+ key: `face${i}`
166
+ }))))), (0, _react.createElement)(_components.__experimentalHStack, {
167
+ justify: "flex-end",
168
+ className: "font-library-modal__tabpanel-layout__footer"
169
+ }, isInstalling && (0, _react.createElement)(ProgressBar, null), shouldDisplayDeleteButton && (0, _react.createElement)(_components.Button, {
137
170
  isDestructive: true,
138
171
  variant: "tertiary",
139
172
  onClick: handleUninstallClick
140
- }, (0, _i18n.__)('Delete'))), (0, _react.createElement)(_components.Button, {
173
+ }, (0, _i18n.__)('Delete')), (0, _react.createElement)(_components.Button, {
141
174
  variant: "primary",
142
175
  onClick: saveFontFamilies,
143
176
  disabled: !fontFamiliesHasChanges,
144
177
  __experimentalIsFocusable: true
145
- }, (0, _i18n.__)('Update')));
178
+ }, (0, _i18n.__)('Update'))));
179
+ }
180
+ function ConfirmDeleteDialog({
181
+ font,
182
+ isOpen,
183
+ setIsOpen,
184
+ setNotice,
185
+ uninstallFontFamily,
186
+ handleSetLibraryFontSelected
187
+ }) {
188
+ const navigator = (0, _components.__experimentalUseNavigator)();
189
+ const handleConfirmUninstall = async () => {
190
+ setNotice(null);
191
+ setIsOpen(false);
192
+ try {
193
+ await uninstallFontFamily(font);
194
+ navigator.goBack();
195
+ handleSetLibraryFontSelected(null);
196
+ setNotice({
197
+ type: 'success',
198
+ message: (0, _i18n.__)('Font family uninstalled successfully.')
199
+ });
200
+ } catch (error) {
201
+ setNotice({
202
+ type: 'error',
203
+ message: (0, _i18n.__)('There was an error uninstalling the font family. ') + error.message
204
+ });
205
+ }
206
+ };
207
+ const handleCancelUninstall = () => {
208
+ setIsOpen(false);
209
+ };
210
+ return (0, _react.createElement)(_components.__experimentalConfirmDialog, {
211
+ isOpen: isOpen,
212
+ cancelButtonText: (0, _i18n.__)('Cancel'),
213
+ confirmButtonText: (0, _i18n.__)('Delete'),
214
+ onCancel: handleCancelUninstall,
215
+ onConfirm: handleConfirmUninstall
216
+ }, font && (0, _i18n.sprintf)( /* translators: %s: Name of the font. */
217
+ (0, _i18n.__)('Are you sure you want to delete "%s" font and all its variants and assets?'), font.name));
146
218
  }
147
219
  var _default = exports.default = InstalledFonts;
148
220
  //# sourceMappingURL=installed-fonts.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_element","_components","_tabPanelLayout","_interopRequireDefault","_context","_libraryFontDetails","_libraryFontCard","_confirmDeleteDialog","_lockUnlock","ProgressBar","unlock","componentsPrivateApis","InstalledFonts","baseCustomFonts","libraryFontSelected","baseThemeFonts","handleSetLibraryFontSelected","refreshLibrary","uninstallFontFamily","isResolvingLibrary","notice","setNotice","useContext","FontLibraryContext","isConfirmDeleteOpen","setIsConfirmDeleteOpen","useState","handleUnselectFont","handleSelectFont","font","handleConfirmUninstall","type","message","__","error","handleUninstallClick","handleCancelUninstall","tabDescription","shouldDisplayDeleteButton","source","useEffect","_react","createElement","default","title","name","description","handleBack","footer","Footer","Fragment","FlexItem","__experimentalSpacer","margin","Spinner","length","map","key","slug","onClick","__experimentalText","className","saveFontFamilies","fontFamiliesHasChanges","isInstalling","__experimentalHStack","justify","Button","isDestructive","variant","disabled","__experimentalIsFocusable","_default","exports"],"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\t__experimentalText as Text,\n\tButton,\n\tSpinner,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport TabPanelLayout from './tab-panel-layout';\nimport { FontLibraryContext } from './context';\nimport LibraryFontDetails from './library-font-details';\nimport LibraryFontCard from './library-font-card';\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\tuninstallFontFamily,\n\t\tisResolvingLibrary,\n\t\tnotice,\n\t\tsetNotice,\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\tsetNotice( null );\n\n\t\ttry {\n\t\t\tawait uninstallFontFamily( libraryFontSelected );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Font family uninstalled successfully.' ),\n\t\t\t} );\n\n\t\t\t// If the font was succesfully uninstalled it is unselected.\n\t\t\thandleUnselectFont();\n\t\t\tsetIsConfirmDeleteOpen( false );\n\t\t} catch ( error ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage:\n\t\t\t\t\t__( 'There was an error uninstalling the font family. ' ) +\n\t\t\t\t\terror.message,\n\t\t\t} );\n\t\t}\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\thandleSelectFont( libraryFontSelected );\n\t\trefreshLibrary();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\treturn (\n\t\t<TabPanelLayout\n\t\t\ttitle={ libraryFontSelected?.name || '' }\n\t\t\tdescription={ tabDescription }\n\t\t\tnotice={ notice }\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 && (\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ baseCustomFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ baseCustomFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\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<Text className=\"font-library-modal__subtitle\">\n\t\t\t\t\t\t\t\t{ __( 'Theme Fonts' ) }\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t{ baseThemeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t<LibraryFontCard\n\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleSelectFont( font );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t<Spacer margin={ 16 } />\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</TabPanelLayout>\n\t);\n}\n\nfunction Footer( { shouldDisplayDeleteButton, handleUninstallClick } ) {\n\tconst { saveFontFamilies, fontFamiliesHasChanges, isInstalling } =\n\t\tuseContext( FontLibraryContext );\n\treturn (\n\t\t<HStack justify=\"flex-end\">\n\t\t\t{ isInstalling && <ProgressBar /> }\n\t\t\t<div>\n\t\t\t\t{ shouldDisplayDeleteButton && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ handleUninstallClick }\n\t\t\t\t\t>\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\tvariant=\"primary\"\n\t\t\t\tonClick={ saveFontFamilies }\n\t\t\t\tdisabled={ ! fontFamiliesHasChanges }\n\t\t\t\t__experimentalIsFocusable\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":["_components","require","_coreData","_data","_element","_i18n","_icons","_lockUnlock","_context","_fontCard","_interopRequireDefault","_libraryFontVariant","_sortFontFaces","ProgressBar","unlock","componentsPrivateApis","InstalledFonts","baseCustomFonts","libraryFontSelected","baseThemeFonts","handleSetLibraryFontSelected","refreshLibrary","uninstallFontFamily","isResolvingLibrary","isInstalling","saveFontFamilies","getFontFacesActivated","fontFamiliesHasChanges","notice","setNotice","useContext","FontLibraryContext","isConfirmDeleteOpen","setIsConfirmDeleteOpen","useState","customFontFamilyId","source","id","canUserDelete","useSelect","select","canUser","coreStore","shouldDisplayDeleteButton","handleUninstallClick","getFontFacesToDisplay","font","fontFace","length","fontFamily","fontStyle","fontWeight","sortFontFaces","getFontCardVariantsText","variantsInstalled","variantsActive","slug","sprintf","__","useEffect","_react","createElement","className","__experimentalHStack","align","__experimentalSpacer","Spinner","__experimentalNavigatorProvider","initialPath","__experimentalNavigatorScreen","path","Fragment","margin","Notice","status","type","onRemove","message","__experimentalText","map","default","key","navigatorPath","variantsText","onClick","ConfirmDeleteDialog","isOpen","setIsOpen","Flex","justify","__experimentalNavigatorToParentButton","icon","chevronLeft","size","label","__experimentalHeading","level","name","__experimentalVStack","spacing","face","i","Button","isDestructive","variant","disabled","__experimentalIsFocusable","navigator","useNavigator","handleConfirmUninstall","goBack","error","handleCancelUninstall","__experimentalConfirmDialog","cancelButtonText","confirmButtonText","onCancel","onConfirm","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/installed-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorToParentButton as NavigatorToParentButton,\n\t__experimentalUseNavigator as useNavigator,\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tNotice,\n\tSpinner,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { chevronLeft } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport { FontLibraryContext } from './context';\nimport FontCard from './font-card';\nimport LibraryFontVariant from './library-font-variant';\nimport { sortFontFaces } from './utils/sort-font-faces';\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\tuninstallFontFamily,\n\t\tisResolvingLibrary,\n\t\tisInstalling,\n\t\tsaveFontFamilies,\n\t\tgetFontFacesActivated,\n\t\tfontFamiliesHasChanges,\n\t\tnotice,\n\t\tsetNotice,\n\t} = useContext( FontLibraryContext );\n\tconst [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] = useState( false );\n\tconst customFontFamilyId =\n\t\tlibraryFontSelected?.source === 'custom' && libraryFontSelected?.id;\n\n\tconst canUserDelete = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\treturn (\n\t\t\t\tcustomFontFamilyId &&\n\t\t\t\tcanUser( 'delete', 'font-families', customFontFamilyId )\n\t\t\t);\n\t\t},\n\t\t[ customFontFamilyId ]\n\t);\n\n\tconst shouldDisplayDeleteButton =\n\t\t!! libraryFontSelected &&\n\t\tlibraryFontSelected?.source !== 'theme' &&\n\t\tcanUserDelete;\n\n\tconst handleUninstallClick = () => {\n\t\tsetIsConfirmDeleteOpen( true );\n\t};\n\n\tconst getFontFacesToDisplay = ( font ) => {\n\t\tif ( ! font ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ! font.fontFace || ! font.fontFace.length ) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfontFamily: font.fontFamily,\n\t\t\t\t\tfontStyle: 'normal',\n\t\t\t\t\tfontWeight: '400',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t\treturn sortFontFaces( font.fontFace );\n\t};\n\n\tconst getFontCardVariantsText = ( font ) => {\n\t\tconst variantsInstalled =\n\t\t\tfont?.fontFace?.length > 0 ? font.fontFace.length : 1;\n\t\tconst variantsActive = getFontFacesActivated(\n\t\t\tfont.slug,\n\t\t\tfont.source\n\t\t).length;\n\t\treturn sprintf(\n\t\t\t/* translators: 1: Active font variants, 2: Total font variants. */\n\t\t\t__( '%1$s/%2$s variants active' ),\n\t\t\tvariantsActive,\n\t\t\tvariantsInstalled\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\thandleSetLibraryFontSelected( libraryFontSelected );\n\t\trefreshLibrary();\n\t}, [] );\n\n\treturn (\n\t\t<div className=\"font-library-modal__tabpanel-layout\">\n\t\t\t{ isResolvingLibrary && (\n\t\t\t\t<HStack align=\"center\">\n\t\t\t\t\t<Spacer />\n\t\t\t\t\t<Spinner />\n\t\t\t\t\t<Spacer />\n\t\t\t\t</HStack>\n\t\t\t) }\n\n\t\t\t<NavigatorProvider\n\t\t\t\tinitialPath={ libraryFontSelected ? '/fontFamily' : '/' }\n\t\t\t>\n\t\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t\t{ notice && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ baseCustomFonts.length > 0 && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Text className=\"font-library-modal__subtitle\">\n\t\t\t\t\t\t\t\t{ __( 'Installed Fonts' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t{ baseCustomFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\tnavigatorPath={ '/fontFamily' }\n\t\t\t\t\t\t\t\t\tvariantsText={ getFontCardVariantsText(\n\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected( font );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\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<Text className=\"font-library-modal__subtitle\">\n\t\t\t\t\t\t\t\t{ __( 'Theme Fonts' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t\t{ baseThemeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\tnavigatorPath={ '/fontFamily' }\n\t\t\t\t\t\t\t\t\tvariantsText={ getFontCardVariantsText(\n\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected( font );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t<Spacer margin={ 16 } />\n\t\t\t\t</NavigatorScreen>\n\n\t\t\t\t<NavigatorScreen path=\"/fontFamily\">\n\t\t\t\t\t<ConfirmDeleteDialog\n\t\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\t\tisOpen={ isConfirmDeleteOpen }\n\t\t\t\t\t\tsetIsOpen={ setIsConfirmDeleteOpen }\n\t\t\t\t\t\tsetNotice={ setNotice }\n\t\t\t\t\t\tuninstallFontFamily={ uninstallFontFamily }\n\t\t\t\t\t\thandleSetLibraryFontSelected={\n\t\t\t\t\t\t\thandleSetLibraryFontSelected\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Flex justify=\"flex-start\">\n\t\t\t\t\t\t<NavigatorToParentButton\n\t\t\t\t\t\t\ticon={ chevronLeft }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\thandleSetLibraryFontSelected( null );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tlabel={ __( 'Back' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t\t\tsize={ 13 }\n\t\t\t\t\t\t\tclassName=\"edit-site-global-styles-header\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ libraryFontSelected?.name }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ notice && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Choose font variants. Keep in mind that too many variants could make your site slower.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t\t{ getFontFacesToDisplay( libraryFontSelected ).map(\n\t\t\t\t\t\t\t( face, i ) => (\n\t\t\t\t\t\t\t\t<LibraryFontVariant\n\t\t\t\t\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\t\t\t\t\tface={ face }\n\t\t\t\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t</NavigatorScreen>\n\t\t\t</NavigatorProvider>\n\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\tclassName=\"font-library-modal__tabpanel-layout__footer\"\n\t\t\t>\n\t\t\t\t{ isInstalling && <ProgressBar /> }\n\t\t\t\t{ shouldDisplayDeleteButton && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ handleUninstallClick }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tonClick={ saveFontFamilies }\n\t\t\t\t\tdisabled={ ! fontFamiliesHasChanges }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Update' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</div>\n\t);\n}\n\nfunction ConfirmDeleteDialog( {\n\tfont,\n\tisOpen,\n\tsetIsOpen,\n\tsetNotice,\n\tuninstallFontFamily,\n\thandleSetLibraryFontSelected,\n} ) {\n\tconst navigator = useNavigator();\n\n\tconst handleConfirmUninstall = async () => {\n\t\tsetNotice( null );\n\t\tsetIsOpen( false );\n\t\ttry {\n\t\t\tawait uninstallFontFamily( font );\n\t\t\tnavigator.goBack();\n\t\t\thandleSetLibraryFontSelected( null );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Font family uninstalled successfully.' ),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage:\n\t\t\t\t\t__( 'There was an error uninstalling the font family. ' ) +\n\t\t\t\t\terror.message,\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst handleCancelUninstall = () => {\n\t\tsetIsOpen( false );\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isOpen }\n\t\t\tcancelButtonText={ __( 'Cancel' ) }\n\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\tonCancel={ handleCancelUninstall }\n\t\t\tonConfirm={ handleConfirmUninstall }\n\t\t>\n\t\t\t{ font &&\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: Name of the font. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete \"%s\" font and all its variants and assets?'\n\t\t\t\t\t),\n\t\t\t\t\tfont.name\n\t\t\t\t) }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default InstalledFonts;\n"],"mappings":"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"}
@@ -42,7 +42,7 @@ function LibraryFontVariant({
42
42
  } = (0, _lockUnlock.unlock)(_components.privateApis);
43
43
  const checkboxId = kebabCase(`${font.slug}-${(0, _utils.getFontFaceVariantName)(face)}`);
44
44
  return (0, _react.createElement)("div", {
45
- className: "font-library-modal__library-font-variant"
45
+ className: "font-library-modal__font-card"
46
46
  }, (0, _react.createElement)(_components.Flex, {
47
47
  justify: "flex-start",
48
48
  align: "center",
@@ -55,7 +55,7 @@ function LibraryFontVariant({
55
55
  }), (0, _react.createElement)("label", {
56
56
  htmlFor: checkboxId
57
57
  }, (0, _react.createElement)(_fontDemo.default, {
58
- fontFace: face,
58
+ font: face,
59
59
  text: displayName,
60
60
  onClick: handleToggleActivation
61
61
  }))));
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_components","_utils","_context","_fontDemo","_interopRequireDefault","_lockUnlock","LibraryFontVariant","face","font","isFontActivated","toggleActivateFont","useContext","FontLibraryContext","isInstalled","fontFace","length","slug","fontStyle","fontWeight","source","handleToggleActivation","displayName","name","getFontFaceVariantName","kebabCase","unlock","componentsPrivateApis","checkboxId","_react","createElement","className","Flex","justify","align","gap","CheckboxControl","checked","onChange","__nextHasNoMarginBottom","id","htmlFor","default","text","onClick","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/library-font-variant.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\tCheckboxControl,\n\tFlex,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getFontFaceVariantName } from './utils';\nimport { FontLibraryContext } from './context';\nimport FontFaceDemo from './font-demo';\nimport { unlock } from '../../../lock-unlock';\n\nfunction LibraryFontVariant( { face, font } ) {\n\tconst { isFontActivated, toggleActivateFont } =\n\t\tuseContext( FontLibraryContext );\n\n\tconst isInstalled =\n\t\tfont?.fontFace?.length > 0\n\t\t\t? isFontActivated(\n\t\t\t\t\tfont.slug,\n\t\t\t\t\tface.fontStyle,\n\t\t\t\t\tface.fontWeight,\n\t\t\t\t\tfont.source\n\t\t\t )\n\t\t\t: isFontActivated( font.slug, null, null, font.source );\n\n\tconst handleToggleActivation = () => {\n\t\tif ( font?.fontFace?.length > 0 ) {\n\t\t\ttoggleActivateFont( font, face );\n\t\t\treturn;\n\t\t}\n\t\ttoggleActivateFont( font );\n\t};\n\n\tconst displayName = font.name + ' ' + getFontFaceVariantName( face );\n\tconst { kebabCase } = unlock( componentsPrivateApis );\n\tconst checkboxId = kebabCase(\n\t\t`${ font.slug }-${ getFontFaceVariantName( face ) }`\n\t);\n\n\treturn (\n\t\t<div className=\"font-library-modal__library-font-variant\">\n\t\t\t<Flex justify=\"flex-start\" align=\"center\" gap=\"1rem\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tchecked={ isInstalled }\n\t\t\t\t\tonChange={ handleToggleActivation }\n\t\t\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\t\t\tid={ checkboxId }\n\t\t\t\t/>\n\t\t\t\t<label htmlFor={ checkboxId }>\n\t\t\t\t\t<FontFaceDemo\n\t\t\t\t\t\tfontFace={ face }\n\t\t\t\t\t\ttext={ displayName }\n\t\t\t\t\t\tonClick={ handleToggleActivation }\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default LibraryFontVariant;\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AASA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAhBA;AACA;AACA;;AAQA;AACA;AACA;;AAMA,SAASO,kBAAkBA,CAAE;EAAEC,IAAI;EAAEC;AAAK,CAAC,EAAG;EAC7C,MAAM;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAC5C,IAAAC,mBAAU,EAAEC,2BAAmB,CAAC;EAEjC,MAAMC,WAAW,GAChBL,IAAI,EAAEM,QAAQ,EAAEC,MAAM,GAAG,CAAC,GACvBN,eAAe,CACfD,IAAI,CAACQ,IAAI,EACTT,IAAI,CAACU,SAAS,EACdV,IAAI,CAACW,UAAU,EACfV,IAAI,CAACW,MACL,CAAC,GACDV,eAAe,CAAED,IAAI,CAACQ,IAAI,EAAE,IAAI,EAAE,IAAI,EAAER,IAAI,CAACW,MAAO,CAAC;EAEzD,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;IACpC,IAAKZ,IAAI,EAAEM,QAAQ,EAAEC,MAAM,GAAG,CAAC,EAAG;MACjCL,kBAAkB,CAAEF,IAAI,EAAED,IAAK,CAAC;MAChC;IACD;IACAG,kBAAkB,CAAEF,IAAK,CAAC;EAC3B,CAAC;EAED,MAAMa,WAAW,GAAGb,IAAI,CAACc,IAAI,GAAG,GAAG,GAAG,IAAAC,6BAAsB,EAAEhB,IAAK,CAAC;EACpE,MAAM;IAAEiB;EAAU,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;EACrD,MAAMC,UAAU,GAAGH,SAAS,CAC1B,GAAGhB,IAAI,CAACQ,IAAM,IAAI,IAAAO,6BAAsB,EAAEhB,IAAK,CAAG,EACpD,CAAC;EAED,OACC,IAAAqB,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA0C,GACxD,IAAAF,MAAA,CAAAC,aAAA,EAAC7B,WAAA,CAAA+B,IAAI;IAACC,OAAO,EAAC,YAAY;IAACC,KAAK,EAAC,QAAQ;IAACC,GAAG,EAAC;EAAM,GACnD,IAAAN,MAAA,CAAAC,aAAA,EAAC7B,WAAA,CAAAmC,eAAe;IACfC,OAAO,EAAGvB,WAAa;IACvBwB,QAAQ,EAAGjB,sBAAwB;IACnCkB,uBAAuB,EAAG,IAAM;IAChCC,EAAE,EAAGZ;EAAY,CACjB,CAAC,EACF,IAAAC,MAAA,CAAAC,aAAA;IAAOW,OAAO,EAAGb;EAAY,GAC5B,IAAAC,MAAA,CAAAC,aAAA,EAAC1B,SAAA,CAAAsC,OAAY;IACZ3B,QAAQ,EAAGP,IAAM;IACjBmC,IAAI,EAAGrB,WAAa;IACpBsB,OAAO,EAAGvB;EAAwB,CAClC,CACK,CACF,CACF,CAAC;AAER;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAJ,OAAA,GAEcnC,kBAAkB"}
1
+ {"version":3,"names":["_element","require","_components","_utils","_context","_fontDemo","_interopRequireDefault","_lockUnlock","LibraryFontVariant","face","font","isFontActivated","toggleActivateFont","useContext","FontLibraryContext","isInstalled","fontFace","length","slug","fontStyle","fontWeight","source","handleToggleActivation","displayName","name","getFontFaceVariantName","kebabCase","unlock","componentsPrivateApis","checkboxId","_react","createElement","className","Flex","justify","align","gap","CheckboxControl","checked","onChange","__nextHasNoMarginBottom","id","htmlFor","default","text","onClick","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/library-font-variant.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\tCheckboxControl,\n\tFlex,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getFontFaceVariantName } from './utils';\nimport { FontLibraryContext } from './context';\nimport FontDemo from './font-demo';\nimport { unlock } from '../../../lock-unlock';\n\nfunction LibraryFontVariant( { face, font } ) {\n\tconst { isFontActivated, toggleActivateFont } =\n\t\tuseContext( FontLibraryContext );\n\n\tconst isInstalled =\n\t\tfont?.fontFace?.length > 0\n\t\t\t? isFontActivated(\n\t\t\t\t\tfont.slug,\n\t\t\t\t\tface.fontStyle,\n\t\t\t\t\tface.fontWeight,\n\t\t\t\t\tfont.source\n\t\t\t )\n\t\t\t: isFontActivated( font.slug, null, null, font.source );\n\n\tconst handleToggleActivation = () => {\n\t\tif ( font?.fontFace?.length > 0 ) {\n\t\t\ttoggleActivateFont( font, face );\n\t\t\treturn;\n\t\t}\n\t\ttoggleActivateFont( font );\n\t};\n\n\tconst displayName = font.name + ' ' + getFontFaceVariantName( face );\n\tconst { kebabCase } = unlock( componentsPrivateApis );\n\tconst checkboxId = kebabCase(\n\t\t`${ font.slug }-${ getFontFaceVariantName( face ) }`\n\t);\n\n\treturn (\n\t\t<div className=\"font-library-modal__font-card\">\n\t\t\t<Flex justify=\"flex-start\" align=\"center\" gap=\"1rem\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tchecked={ isInstalled }\n\t\t\t\t\tonChange={ handleToggleActivation }\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tid={ checkboxId }\n\t\t\t\t/>\n\t\t\t\t<label htmlFor={ checkboxId }>\n\t\t\t\t\t<FontDemo\n\t\t\t\t\t\tfont={ face }\n\t\t\t\t\t\ttext={ displayName }\n\t\t\t\t\t\tonClick={ handleToggleActivation }\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default LibraryFontVariant;\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AASA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAhBA;AACA;AACA;;AAQA;AACA;AACA;;AAMA,SAASO,kBAAkBA,CAAE;EAAEC,IAAI;EAAEC;AAAK,CAAC,EAAG;EAC7C,MAAM;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAC5C,IAAAC,mBAAU,EAAEC,2BAAmB,CAAC;EAEjC,MAAMC,WAAW,GAChBL,IAAI,EAAEM,QAAQ,EAAEC,MAAM,GAAG,CAAC,GACvBN,eAAe,CACfD,IAAI,CAACQ,IAAI,EACTT,IAAI,CAACU,SAAS,EACdV,IAAI,CAACW,UAAU,EACfV,IAAI,CAACW,MACL,CAAC,GACDV,eAAe,CAAED,IAAI,CAACQ,IAAI,EAAE,IAAI,EAAE,IAAI,EAAER,IAAI,CAACW,MAAO,CAAC;EAEzD,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;IACpC,IAAKZ,IAAI,EAAEM,QAAQ,EAAEC,MAAM,GAAG,CAAC,EAAG;MACjCL,kBAAkB,CAAEF,IAAI,EAAED,IAAK,CAAC;MAChC;IACD;IACAG,kBAAkB,CAAEF,IAAK,CAAC;EAC3B,CAAC;EAED,MAAMa,WAAW,GAAGb,IAAI,CAACc,IAAI,GAAG,GAAG,GAAG,IAAAC,6BAAsB,EAAEhB,IAAK,CAAC;EACpE,MAAM;IAAEiB;EAAU,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;EACrD,MAAMC,UAAU,GAAGH,SAAS,CAC1B,GAAGhB,IAAI,CAACQ,IAAM,IAAI,IAAAO,6BAAsB,EAAEhB,IAAK,CAAG,EACpD,CAAC;EAED,OACC,IAAAqB,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA+B,GAC7C,IAAAF,MAAA,CAAAC,aAAA,EAAC7B,WAAA,CAAA+B,IAAI;IAACC,OAAO,EAAC,YAAY;IAACC,KAAK,EAAC,QAAQ;IAACC,GAAG,EAAC;EAAM,GACnD,IAAAN,MAAA,CAAAC,aAAA,EAAC7B,WAAA,CAAAmC,eAAe;IACfC,OAAO,EAAGvB,WAAa;IACvBwB,QAAQ,EAAGjB,sBAAwB;IACnCkB,uBAAuB;IACvBC,EAAE,EAAGZ;EAAY,CACjB,CAAC,EACF,IAAAC,MAAA,CAAAC,aAAA;IAAOW,OAAO,EAAGb;EAAY,GAC5B,IAAAC,MAAA,CAAAC,aAAA,EAAC1B,SAAA,CAAAsC,OAAQ;IACRjC,IAAI,EAAGD,IAAM;IACbmC,IAAI,EAAGrB,WAAa;IACpBsB,OAAO,EAAGvB;EAAwB,CAClC,CACK,CACF,CACF,CAAC;AAER;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAJ,OAAA,GAEcnC,kBAAkB"}
@@ -14,7 +14,6 @@ var _context = require("./context");
14
14
  var _libFont = require("../../../../lib/lib-font.browser");
15
15
  var _makeFamiliesFromFaces = _interopRequireDefault(require("./utils/make-families-from-faces"));
16
16
  var _utils = require("./utils");
17
- var _tabPanelLayout = _interopRequireDefault(require("./tab-panel-layout"));
18
17
  var _lockUnlock = require("../../../lock-unlock");
19
18
  /**
20
19
  * WordPress dependencies
@@ -29,7 +28,7 @@ const {
29
28
  } = (0, _lockUnlock.unlock)(_components.privateApis);
30
29
  function UploadFonts() {
31
30
  const {
32
- installFont,
31
+ installFonts,
33
32
  notice,
34
33
  setNotice
35
34
  } = (0, _element.useContext)(_context.FontLibraryContext);
@@ -47,29 +46,42 @@ function UploadFonts() {
47
46
  * @param {Array} files The files to be filtered
48
47
  * @return {void}
49
48
  */
50
- const handleFilesUpload = files => {
49
+ const handleFilesUpload = async files => {
51
50
  setNotice(null);
52
51
  setIsUploading(true);
53
52
  const uniqueFilenames = new Set();
54
53
  const selectedFiles = [...files];
55
- const allowedFiles = selectedFiles.filter(file => {
54
+ let hasInvalidFiles = false;
55
+
56
+ // Use map to create a promise for each file check, then filter with Promise.all.
57
+ const checkFilesPromises = selectedFiles.map(async file => {
58
+ const isFont = await isFontFile(file);
59
+ if (!isFont) {
60
+ hasInvalidFiles = true;
61
+ return null; // Return null for invalid files.
62
+ }
63
+ // Check for duplicates
56
64
  if (uniqueFilenames.has(file.name)) {
57
- return false; // Discard duplicates
65
+ return null; // Return null for duplicates.
58
66
  }
59
- // Eliminates files that are not allowed
67
+ // Check if the file extension is allowed.
60
68
  const fileExtension = file.name.split('.').pop().toLowerCase();
61
69
  if (_constants.ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
62
70
  uniqueFilenames.add(file.name);
63
- return true; // Keep file if the extension is allowed
71
+ return file; // Return the file if it passes all checks.
64
72
  }
65
- return false; // Discard file extension not allowed
73
+ return null; // Return null for disallowed file extensions.
66
74
  });
75
+
76
+ // Filter out the nulls after all promises have resolved.
77
+ const allowedFiles = (await Promise.all(checkFilesPromises)).filter(file => null !== file);
67
78
  if (allowedFiles.length > 0) {
68
79
  loadFiles(allowedFiles);
69
80
  } else {
81
+ const message = hasInvalidFiles ? (0, _i18n.__)('Sorry, you are not allowed to upload this file type.') : (0, _i18n.__)('No fonts found to install.');
70
82
  setNotice({
71
83
  type: 'error',
72
- message: (0, _i18n.__)('No fonts found to install.')
84
+ message
73
85
  });
74
86
  setIsUploading(false);
75
87
  }
@@ -90,6 +102,23 @@ function UploadFonts() {
90
102
  handleInstall(fontFacesLoaded);
91
103
  };
92
104
 
105
+ /**
106
+ * Checks if a file is a valid Font file.
107
+ *
108
+ * @param {File} file The file to be checked.
109
+ * @return {boolean} Whether the file is a valid font file.
110
+ */
111
+ async function isFontFile(file) {
112
+ const font = new _libFont.Font('Uploaded Font');
113
+ try {
114
+ const buffer = await readFileAsArrayBuffer(file);
115
+ await font.fromDataBuffer(buffer, 'font');
116
+ return true;
117
+ } catch (error) {
118
+ return false;
119
+ }
120
+ }
121
+
93
122
  // Create a function to read the file as array buffer
94
123
  async function readFileAsArrayBuffer(file) {
95
124
  return new Promise((resolve, reject) => {
@@ -133,16 +162,8 @@ function UploadFonts() {
133
162
  */
134
163
  const handleInstall = async fontFaces => {
135
164
  const fontFamilies = (0, _makeFamiliesFromFaces.default)(fontFaces);
136
- if (fontFamilies.length > 1) {
137
- setNotice({
138
- type: 'error',
139
- message: (0, _i18n.__)('Variants from only one font family can be uploaded at a time.')
140
- });
141
- setIsUploading(false);
142
- return;
143
- }
144
165
  try {
145
- await installFont(fontFamilies[0]);
166
+ await installFonts(fontFamilies);
146
167
  setNotice({
147
168
  type: 'success',
148
169
  message: (0, _i18n.__)('Fonts were installed successfully.')
@@ -150,18 +171,25 @@ function UploadFonts() {
150
171
  } catch (error) {
151
172
  setNotice({
152
173
  type: 'error',
153
- message: error.message
174
+ message: error.message,
175
+ errors: error?.installationErrors
154
176
  });
155
177
  }
156
178
  setIsUploading(false);
157
179
  };
158
- return (0, _react.createElement)(_tabPanelLayout.default, {
159
- notice: notice
180
+ return (0, _react.createElement)("div", {
181
+ className: "font-library-modal__tabpanel-layout"
160
182
  }, (0, _react.createElement)(_components.DropZone, {
161
183
  onFilesDrop: handleDropZone
162
184
  }), (0, _react.createElement)(_components.__experimentalVStack, {
163
185
  className: "font-library-modal__local-fonts"
164
- }, isUploading && (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)("div", {
186
+ }, notice && (0, _react.createElement)(_components.Notice, {
187
+ status: notice.type,
188
+ __unstableHTML: true,
189
+ onRemove: () => setNotice(null)
190
+ }, notice.message, notice.errors && (0, _react.createElement)("ul", null, notice.errors.map((error, index) => (0, _react.createElement)("li", {
191
+ key: index
192
+ }, error)))), isUploading && (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)("div", {
165
193
  className: "font-library-modal__upload-area"
166
194
  }, (0, _react.createElement)(ProgressBar, null))), !isUploading && (0, _react.createElement)(_components.FormFileUpload, {
167
195
  accept: _constants.ALLOWED_FILE_EXTENSIONS.map(ext => `.${ext}`).join(','),
@@ -177,7 +205,7 @@ function UploadFonts() {
177
205
  margin: 2
178
206
  }), (0, _react.createElement)(_components.__experimentalText, {
179
207
  className: "font-library-modal__upload-area__text"
180
- }, (0, _i18n.__)('Uploaded fonts appear in your library and can be used in your theme. Supported formats: .tff, .otf, .woff, and .woff2.'))));
208
+ }, (0, _i18n.__)('Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.'))));
181
209
  }
182
210
  var _default = exports.default = UploadFonts;
183
211
  //# sourceMappingURL=upload-fonts.js.map