@wordpress/edit-site 5.29.0 → 5.30.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 (364) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +1 -1
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +10 -11
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/editor/index.js +1 -15
  7. package/build/components/editor/index.js.map +1 -1
  8. package/build/components/global-styles/color-palette-panel.js +9 -0
  9. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  10. package/build/components/global-styles/font-families.js +1 -1
  11. package/build/components/global-styles/font-families.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/collection-font-variant.js +2 -2
  13. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/context.js +62 -58
  15. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/font-card.js +10 -15
  17. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/font-collection.js +118 -76
  19. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/font-demo.js +29 -8
  21. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/index.js +19 -6
  23. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  27. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/upload-fonts.js +8 -14
  29. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +38 -4
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  33. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  34. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  35. package/build/components/global-styles/header.js +1 -1
  36. package/build/components/global-styles/header.js.map +1 -1
  37. package/build/components/global-styles/highlighted-colors.js +50 -0
  38. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  39. package/build/components/global-styles/preview-colors.js +62 -0
  40. package/build/components/global-styles/preview-colors.js.map +1 -0
  41. package/build/components/global-styles/preview-iframe.js +131 -0
  42. package/build/components/global-styles/preview-iframe.js.map +1 -0
  43. package/build/components/global-styles/preview-styles.js +163 -0
  44. package/build/components/global-styles/preview-styles.js.map +1 -0
  45. package/build/components/global-styles/preview-typography.js +65 -0
  46. package/build/components/global-styles/preview-typography.js.map +1 -0
  47. package/build/components/global-styles/screen-block-list.js +1 -1
  48. package/build/components/global-styles/screen-block-list.js.map +1 -1
  49. package/build/components/global-styles/screen-block.js +1 -1
  50. package/build/components/global-styles/screen-block.js.map +1 -1
  51. package/build/components/global-styles/screen-colors.js +10 -2
  52. package/build/components/global-styles/screen-colors.js.map +1 -1
  53. package/build/components/global-styles/screen-revisions/index.js +2 -2
  54. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  55. package/build/components/global-styles/screen-root.js +2 -2
  56. package/build/components/global-styles/screen-root.js.map +1 -1
  57. package/build/components/global-styles/screen-typography.js +10 -2
  58. package/build/components/global-styles/screen-typography.js.map +1 -1
  59. package/build/components/global-styles/style-variations-container.js +12 -84
  60. package/build/components/global-styles/style-variations-container.js.map +1 -1
  61. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  62. package/build/components/global-styles/typography-elements.js.map +1 -0
  63. package/build/components/global-styles/ui.js +27 -2
  64. package/build/components/global-styles/ui.js.map +1 -1
  65. package/build/components/global-styles/utils.js +22 -0
  66. package/build/components/global-styles/utils.js.map +1 -1
  67. package/build/components/global-styles/variations/variation.js +90 -0
  68. package/build/components/global-styles/variations/variation.js.map +1 -0
  69. package/build/components/global-styles/variations/variations-color.js +36 -0
  70. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  71. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  72. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  73. package/build/components/global-styles/variations/variations-typography.js +64 -0
  74. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  75. package/build/components/header-edit-mode/index.js +12 -11
  76. package/build/components/header-edit-mode/index.js.map +1 -1
  77. package/build/components/header-edit-mode/more-menu/index.js +10 -2
  78. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  79. package/build/components/layout/index.js +4 -1
  80. package/build/components/layout/index.js.map +1 -1
  81. package/build/components/page-patterns/index.js +14 -14
  82. package/build/components/page-patterns/index.js.map +1 -1
  83. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  84. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  85. package/build/components/page-templates-template-parts/index.js +14 -6
  86. package/build/components/page-templates-template-parts/index.js.map +1 -1
  87. package/build/components/resizable-frame/index.js +2 -1
  88. package/build/components/resizable-frame/index.js.map +1 -1
  89. package/build/components/revisions/index.js.map +1 -1
  90. package/build/components/save-panel/index.js +18 -3
  91. package/build/components/save-panel/index.js.map +1 -1
  92. package/build/components/sidebar/index.js +1 -1
  93. package/build/components/sidebar/index.js.map +1 -1
  94. package/build/components/sidebar-dataviews/default-views.js +2 -0
  95. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  96. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  97. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  98. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  99. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  100. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  101. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  102. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  103. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  104. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  105. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  106. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  107. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  108. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  109. package/build/components/sidebar-navigation-screen-templates-browse/content.js +4 -4
  110. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  111. package/build/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  112. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  113. package/build/components/start-template-options/index.js.map +1 -1
  114. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +65 -0
  115. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  116. package/build-module/components/actions/index.js +1 -1
  117. package/build-module/components/actions/index.js.map +1 -1
  118. package/build-module/components/block-editor/editor-canvas.js +10 -11
  119. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  120. package/build-module/components/editor/index.js +2 -16
  121. package/build-module/components/editor/index.js.map +1 -1
  122. package/build-module/components/global-styles/color-palette-panel.js +8 -0
  123. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  124. package/build-module/components/global-styles/font-families.js +1 -1
  125. package/build-module/components/global-styles/font-families.js.map +1 -1
  126. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
  127. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  128. package/build-module/components/global-styles/font-library-modal/context.js +63 -59
  129. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  130. package/build-module/components/global-styles/font-library-modal/font-card.js +11 -16
  131. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
  132. package/build-module/components/global-styles/font-library-modal/font-collection.js +121 -79
  133. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  134. package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -9
  135. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  136. package/build-module/components/global-styles/font-library-modal/index.js +19 -6
  137. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  138. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  139. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  140. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +4 -4
  141. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  142. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +9 -15
  143. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  144. package/build-module/components/global-styles/font-library-modal/utils/index.js +37 -4
  145. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  146. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  147. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  148. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  149. package/build-module/components/global-styles/header.js +1 -1
  150. package/build-module/components/global-styles/header.js.map +1 -1
  151. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  152. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  153. package/build-module/components/global-styles/preview-colors.js +54 -0
  154. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  155. package/build-module/components/global-styles/preview-iframe.js +124 -0
  156. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  157. package/build-module/components/global-styles/preview-styles.js +155 -0
  158. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  159. package/build-module/components/global-styles/preview-typography.js +58 -0
  160. package/build-module/components/global-styles/preview-typography.js.map +1 -0
  161. package/build-module/components/global-styles/screen-block-list.js +1 -1
  162. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  163. package/build-module/components/global-styles/screen-block.js +1 -1
  164. package/build-module/components/global-styles/screen-block.js.map +1 -1
  165. package/build-module/components/global-styles/screen-colors.js +10 -2
  166. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  167. package/build-module/components/global-styles/screen-revisions/index.js +2 -2
  168. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  169. package/build-module/components/global-styles/screen-root.js +2 -2
  170. package/build-module/components/global-styles/screen-root.js.map +1 -1
  171. package/build-module/components/global-styles/screen-typography.js +10 -2
  172. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  173. package/build-module/components/global-styles/style-variations-container.js +13 -85
  174. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  175. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  176. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  177. package/build-module/components/global-styles/ui.js +27 -2
  178. package/build-module/components/global-styles/ui.js.map +1 -1
  179. package/build-module/components/global-styles/utils.js +21 -0
  180. package/build-module/components/global-styles/utils.js.map +1 -1
  181. package/build-module/components/global-styles/variations/variation.js +82 -0
  182. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  183. package/build-module/components/global-styles/variations/variations-color.js +28 -0
  184. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  185. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  186. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  187. package/build-module/components/global-styles/variations/variations-typography.js +56 -0
  188. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  189. package/build-module/components/header-edit-mode/index.js +13 -12
  190. package/build-module/components/header-edit-mode/index.js.map +1 -1
  191. package/build-module/components/header-edit-mode/more-menu/index.js +13 -5
  192. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  193. package/build-module/components/layout/index.js +4 -1
  194. package/build-module/components/layout/index.js.map +1 -1
  195. package/build-module/components/page-patterns/index.js +14 -14
  196. package/build-module/components/page-patterns/index.js.map +1 -1
  197. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  198. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  199. package/build-module/components/page-templates-template-parts/index.js +13 -5
  200. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  201. package/build-module/components/resizable-frame/index.js +2 -1
  202. package/build-module/components/resizable-frame/index.js.map +1 -1
  203. package/build-module/components/revisions/index.js.map +1 -1
  204. package/build-module/components/save-panel/index.js +18 -3
  205. package/build-module/components/save-panel/index.js.map +1 -1
  206. package/build-module/components/sidebar/index.js +1 -1
  207. package/build-module/components/sidebar/index.js.map +1 -1
  208. package/build-module/components/sidebar-dataviews/default-views.js +3 -1
  209. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  210. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  211. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  212. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  213. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  214. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  215. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  216. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  217. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  218. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  219. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  220. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  221. package/build-module/components/sidebar-navigation-screen-template/index.js +1 -1
  222. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  223. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +3 -3
  224. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  225. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  226. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  227. package/build-module/components/start-template-options/index.js.map +1 -1
  228. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +63 -1
  229. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  230. package/build-style/style-rtl.css +163 -286
  231. package/build-style/style.css +163 -286
  232. package/package.json +42 -42
  233. package/src/components/actions/index.js +1 -1
  234. package/src/components/block-editor/editor-canvas.js +13 -12
  235. package/src/components/block-editor/style.scss +0 -3
  236. package/src/components/editor/index.js +0 -20
  237. package/src/components/global-styles/color-palette-panel.js +11 -1
  238. package/src/components/global-styles/font-families.js +1 -1
  239. package/src/components/global-styles/font-library-modal/collection-font-variant.js +5 -5
  240. package/src/components/global-styles/font-library-modal/context.js +116 -104
  241. package/src/components/global-styles/font-library-modal/font-card.js +11 -26
  242. package/src/components/global-styles/font-library-modal/font-collection.js +297 -218
  243. package/src/components/global-styles/font-library-modal/font-demo.js +38 -4
  244. package/src/components/global-styles/font-library-modal/index.js +23 -16
  245. package/src/components/global-styles/font-library-modal/installed-fonts.js +243 -114
  246. package/src/components/global-styles/font-library-modal/library-font-variant.js +5 -5
  247. package/src/components/global-styles/font-library-modal/style.scss +15 -8
  248. package/src/components/global-styles/font-library-modal/upload-fonts.js +17 -19
  249. package/src/components/global-styles/font-library-modal/utils/index.js +44 -4
  250. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +2 -1
  251. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +7 -18
  252. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  253. package/src/components/global-styles/header.js +1 -1
  254. package/src/components/global-styles/highlighted-colors.js +39 -0
  255. package/src/components/global-styles/preview-colors.js +61 -0
  256. package/src/components/global-styles/preview-iframe.js +153 -0
  257. package/src/components/global-styles/preview-styles.js +185 -0
  258. package/src/components/global-styles/preview-typography.js +62 -0
  259. package/src/components/global-styles/screen-block-list.js +1 -1
  260. package/src/components/global-styles/screen-block.js +4 -1
  261. package/src/components/global-styles/screen-colors.js +13 -1
  262. package/src/components/global-styles/screen-revisions/index.js +5 -2
  263. package/src/components/global-styles/screen-root.js +2 -2
  264. package/src/components/global-styles/screen-typography.js +19 -2
  265. package/src/components/global-styles/style-variations-container.js +14 -92
  266. package/src/components/global-styles/style.scss +0 -34
  267. package/src/components/global-styles/ui.js +26 -2
  268. package/src/components/global-styles/utils.js +37 -0
  269. package/src/components/global-styles/variations/style.scss +44 -0
  270. package/src/components/global-styles/variations/variation.js +93 -0
  271. package/src/components/global-styles/variations/variations-color.js +30 -0
  272. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  273. package/src/components/global-styles/variations/variations-typography.js +85 -0
  274. package/src/components/header-edit-mode/index.js +20 -27
  275. package/src/components/header-edit-mode/more-menu/index.js +17 -8
  276. package/src/components/header-edit-mode/style.scss +4 -0
  277. package/src/components/layout/index.js +5 -0
  278. package/src/components/page-patterns/index.js +21 -21
  279. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  280. package/src/components/page-templates-template-parts/index.js +20 -3
  281. package/src/components/page-templates-template-parts/style.scss +48 -0
  282. package/src/components/resizable-frame/index.js +1 -0
  283. package/src/components/revisions/index.js +1 -1
  284. package/src/components/save-panel/index.js +34 -12
  285. package/src/components/sidebar/index.js +1 -1
  286. package/src/components/sidebar-dataviews/default-views.js +3 -1
  287. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  288. package/src/components/sidebar-edit-mode/template-panel/index.js +1 -1
  289. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  290. package/src/components/sidebar-navigation-screen-navigation-menu/delete-modal.js +1 -1
  291. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  292. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  293. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  294. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  295. package/src/components/sidebar-navigation-screen-template/index.js +1 -1
  296. package/src/components/sidebar-navigation-screen-templates-browse/content.js +3 -3
  297. package/src/components/sidebar-navigation-screen-templates-browse/index.js +5 -3
  298. package/src/components/start-template-options/index.js +1 -1
  299. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +173 -0
  300. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +68 -1
  301. package/src/style.scss +2 -2
  302. package/build/components/global-styles/font-library-modal/collection-font-details.js +0 -50
  303. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  304. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -30
  305. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  306. package/build/components/global-styles/font-library-modal/library-font-card.js +0 -39
  307. package/build/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  308. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +0 -67
  309. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  310. package/build/components/global-styles/preview.js +0 -271
  311. package/build/components/global-styles/preview.js.map +0 -1
  312. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  313. package/build/components/global-styles/variations-panel.js.map +0 -1
  314. package/build/components/list/added-by.js.map +0 -1
  315. package/build/components/list/header.js +0 -55
  316. package/build/components/list/header.js.map +0 -1
  317. package/build/components/list/index.js +0 -80
  318. package/build/components/list/index.js.map +0 -1
  319. package/build/components/list/table.js +0 -94
  320. package/build/components/list/table.js.map +0 -1
  321. package/build/components/list/use-register-shortcuts.js +0 -51
  322. package/build/components/list/use-register-shortcuts.js.map +0 -1
  323. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  324. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  325. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  326. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  327. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +0 -42
  328. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  329. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -23
  330. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  331. package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -31
  332. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  333. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +0 -60
  334. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  335. package/build-module/components/global-styles/preview.js +0 -264
  336. package/build-module/components/global-styles/preview.js.map +0 -1
  337. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  338. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  339. package/build-module/components/list/added-by.js.map +0 -1
  340. package/build-module/components/list/header.js +0 -47
  341. package/build-module/components/list/header.js.map +0 -1
  342. package/build-module/components/list/index.js +0 -72
  343. package/build-module/components/list/index.js.map +0 -1
  344. package/build-module/components/list/table.js +0 -86
  345. package/build-module/components/list/table.js.map +0 -1
  346. package/build-module/components/list/use-register-shortcuts.js +0 -45
  347. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  348. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  349. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  350. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  351. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  352. package/src/components/global-styles/font-library-modal/collection-font-details.js +0 -56
  353. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -33
  354. package/src/components/global-styles/font-library-modal/library-font-card.js +0 -34
  355. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +0 -85
  356. package/src/components/global-styles/preview.js +0 -327
  357. package/src/components/list/header.js +0 -48
  358. package/src/components/list/index.js +0 -87
  359. package/src/components/list/style.scss +0 -188
  360. package/src/components/list/table.js +0 -140
  361. package/src/components/list/use-register-shortcuts.js +0 -49
  362. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  363. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  364. /package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +0 -0
@@ -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
+ "aria-label": (0, _i18n.__)('Navigate to the previous view')
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":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAaA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAF,sBAAA,CAAAJ,OAAA;AACA,IAAAO,gBAAA,GAAAH,sBAAA,CAAAJ,OAAA;AACA,IAAAQ,oBAAA,GAAAJ,sBAAA,CAAAJ,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AAvBA;AACA;AACA;;AAaA;AACA;AACA;;AAOA,MAAM;EAAEU;AAAY,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEvD,SAASC,cAAcA,CAAA,EAAG;EACzB,MAAM;IACLC,eAAe;IACfC,mBAAmB;IACnBC,cAAc;IACdC,4BAA4B;IAC5BC,cAAc;IACdC,mBAAmB;IACnBC,kBAAkB;IAClBC,MAAM;IACNC;EACD,CAAC,GAAG,IAAAC,mBAAU,EAAEC,2BAAmB,CAAC;EACpC,MAAM,CAAEC,mBAAmB,EAAEC,sBAAsB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAEzE,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAChCX,4BAA4B,CAAE,IAAK,CAAC;EACrC,CAAC;EAED,MAAMY,gBAAgB,GAAKC,IAAI,IAAM;IACpCb,4BAA4B,CAAEa,IAAK,CAAC;EACrC,CAAC;EAED,MAAMC,sBAAsB,GAAG,MAAAA,CAAA,KAAY;IAC1CT,SAAS,CAAE,IAAK,CAAC;IAEjB,IAAI;MACH,MAAMH,mBAAmB,CAAEJ,mBAAoB,CAAC;MAChDO,SAAS,CAAE;QACVU,IAAI,EAAE,SAAS;QACfC,OAAO,EAAE,IAAAC,QAAE,EAAE,uCAAwC;MACtD,CAAE,CAAC;;MAEH;MACAN,kBAAkB,CAAC,CAAC;MACpBF,sBAAsB,CAAE,KAAM,CAAC;IAChC,CAAC,CAAC,OAAQS,KAAK,EAAG;MACjBb,SAAS,CAAE;QACVU,IAAI,EAAE,OAAO;QACbC,OAAO,EACN,IAAAC,QAAE,EAAE,mDAAoD,CAAC,GACzDC,KAAK,CAACF;MACR,CAAE,CAAC;IACJ;EACD,CAAC;EAED,MAAMG,oBAAoB,GAAG,MAAAA,CAAA,KAAY;IACxCV,sBAAsB,CAAE,IAAK,CAAC;EAC/B,CAAC;EAED,MAAMW,qBAAqB,GAAGA,CAAA,KAAM;IACnCX,sBAAsB,CAAE,KAAM,CAAC;EAChC,CAAC;EAED,MAAMY,cAAc,GAAG,CAAC,CAAEvB,mBAAmB,GAC1C,IAAAmB,QAAE,EACF,wFACA,CAAC,GACD,IAAI;EAEP,MAAMK,yBAAyB,GAC9B,CAAC,CAAExB,mBAAmB,IAAIA,mBAAmB,EAAEyB,MAAM,KAAK,OAAO;EAElE,IAAAC,kBAAS,EAAE,MAAM;IAChBZ,gBAAgB,CAAEd,mBAAoB,CAAC;IACvCG,cAAc,CAAC,CAAC;IAChB;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,OACC,IAAAwB,MAAA,CAAAC,aAAA,EAACxC,eAAA,CAAAyC,OAAc;IACdC,KAAK,EAAG9B,mBAAmB,EAAE+B,IAAI,IAAI,EAAI;IACzCC,WAAW,EAAGT,cAAgB;IAC9BjB,MAAM,EAAGA,MAAQ;IACjB2B,UAAU,EAAG,CAAC,CAAEjC,mBAAmB,IAAIa,kBAAoB;IAC3DqB,MAAM,EACL,IAAAP,MAAA,CAAAC,aAAA,EAACO,MAAM;MACNX,yBAAyB,EAAGA,yBAA2B;MACvDH,oBAAoB,EAAGA;IAAsB,CAC7C;EACD,GAED,IAAAM,MAAA,CAAAC,aAAA,EAACnC,oBAAA,CAAAoC,OAAmB;IACnBd,IAAI,EAAGf,mBAAqB;IAC5BU,mBAAmB,EAAGA,mBAAqB;IAC3CM,sBAAsB,EAAGA,sBAAwB;IACjDM,qBAAqB,EAAGA;EAAuB,CAC/C,CAAC,EAEA,CAAEtB,mBAAmB,IACtB,IAAA2B,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAS,QAAA,QACG/B,kBAAkB,IACnB,IAAAsB,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAkD,QAAQ,QACR,IAAAV,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAmD,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CAAC,EACvB,IAAAZ,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAqD,OAAO,MAAE,CAAC,EACX,IAAAb,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAmD,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CACb,CACV,EACCxC,eAAe,CAAC0C,MAAM,GAAG,CAAC,IAC3B,IAAAd,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAS,QAAA,QACGrC,eAAe,CAAC2C,GAAG,CAAI3B,IAAI,IAC5B,IAAAY,MAAA,CAAAC,aAAA,EAACpC,gBAAA,CAAAqC,OAAe;IACfd,IAAI,EAAGA,IAAM;IACb4B,GAAG,EAAG5B,IAAI,CAAC6B,IAAM;IACjBC,OAAO,EAAGA,CAAA,KAAM;MACf/B,gBAAgB,CAAEC,IAAK,CAAC;IACzB;EAAG,CACH,CACA,CAAC,EACH,IAAAY,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAmD,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CACrB,CACF,EAECtC,cAAc,CAACwC,MAAM,GAAG,CAAC,IAC1B,IAAAd,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAS,QAAA,QACC,IAAAT,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAA2D,kBAAI;IAACC,SAAS,EAAC;EAA8B,GAC3C,IAAA5B,QAAE,EAAE,aAAc,CACf,CAAC,EAEP,IAAAQ,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAmD,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CAAC,EACrBtC,cAAc,CAACyC,GAAG,CAAI3B,IAAI,IAC3B,IAAAY,MAAA,CAAAC,aAAA,EAACpC,gBAAA,CAAAqC,OAAe;IACfd,IAAI,EAAGA,IAAM;IACb4B,GAAG,EAAG5B,IAAI,CAAC6B,IAAM;IACjBC,OAAO,EAAGA,CAAA,KAAM;MACf/B,gBAAgB,CAAEC,IAAK,CAAC;IACzB;EAAG,CACH,CACA,CACD,CACF,EACD,IAAAY,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAmD,oBAAM;IAACC,MAAM,EAAG;EAAI,CAAE,CACtB,CACF,EAECvC,mBAAmB,IACpB,IAAA2B,MAAA,CAAAC,aAAA,EAACrC,mBAAA,CAAAsC,OAAkB;IAClBd,IAAI,EAAGf,mBAAqB;IAC5BU,mBAAmB,EAAGA,mBAAqB;IAC3CM,sBAAsB,EAAGA,sBAAwB;IACjDM,qBAAqB,EAAGA;EAAuB,CAC/C,CAEa,CAAC;AAEnB;AAEA,SAASa,MAAMA,CAAE;EAAEX,yBAAyB;EAAEH;AAAqB,CAAC,EAAG;EACtE,MAAM;IAAE2B,gBAAgB;IAAEC,sBAAsB;IAAEC;EAAa,CAAC,GAC/D,IAAA1C,mBAAU,EAAEC,2BAAmB,CAAC;EACjC,OACC,IAAAkB,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAgE,oBAAM;IAACC,OAAO,EAAC;EAAU,GACvBF,YAAY,IAAI,IAAAvB,MAAA,CAAAC,aAAA,EAACjC,WAAW,MAAE,CAAC,EACjC,IAAAgC,MAAA,CAAAC,aAAA,eACGJ,yBAAyB,IAC1B,IAAAG,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAkE,MAAM;IACNC,aAAa;IACbC,OAAO,EAAC,UAAU;IAClBV,OAAO,EAAGxB;EAAsB,GAE9B,IAAAF,QAAE,EAAE,QAAS,CACR,CAEL,CAAC,EACN,IAAAQ,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAAkE,MAAM;IACNE,OAAO,EAAC,SAAS;IACjBV,OAAO,EAAGG,gBAAkB;IAC5BQ,QAAQ,EAAG,CAAEP,sBAAwB;IACrCQ,yBAAyB;EAAA,GAEvB,IAAAtC,QAAE,EAAE,QAAS,CACR,CACD,CAAC;AAEX;AAAC,IAAAuC,QAAA,GAAAC,OAAA,CAAA9B,OAAA,GAEc/B,cAAc"}
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","__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\taria-label={ __( 'Navigate to the previous view' ) }\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);
@@ -133,16 +132,8 @@ function UploadFonts() {
133
132
  */
134
133
  const handleInstall = async fontFaces => {
135
134
  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
135
  try {
145
- await installFont(fontFamilies[0]);
136
+ await installFonts(fontFamilies);
146
137
  setNotice({
147
138
  type: 'success',
148
139
  message: (0, _i18n.__)('Fonts were installed successfully.')
@@ -155,13 +146,16 @@ function UploadFonts() {
155
146
  }
156
147
  setIsUploading(false);
157
148
  };
158
- return (0, _react.createElement)(_tabPanelLayout.default, {
159
- notice: notice
149
+ return (0, _react.createElement)("div", {
150
+ className: "font-library-modal__tabpanel-layout"
160
151
  }, (0, _react.createElement)(_components.DropZone, {
161
152
  onFilesDrop: handleDropZone
162
153
  }), (0, _react.createElement)(_components.__experimentalVStack, {
163
154
  className: "font-library-modal__local-fonts"
164
- }, isUploading && (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)("div", {
155
+ }, notice && (0, _react.createElement)(_components.Notice, {
156
+ status: notice.type,
157
+ onRemove: () => setNotice(null)
158
+ }, notice.message), isUploading && (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)("div", {
165
159
  className: "font-library-modal__upload-area"
166
160
  }, (0, _react.createElement)(ProgressBar, null))), !isUploading && (0, _react.createElement)(_components.FormFileUpload, {
167
161
  accept: _constants.ALLOWED_FILE_EXTENSIONS.map(ext => `.${ext}`).join(','),
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_element","_constants","_context","_libFont","_makeFamiliesFromFaces","_interopRequireDefault","_utils","_tabPanelLayout","_lockUnlock","ProgressBar","unlock","componentsPrivateApis","UploadFonts","installFont","notice","setNotice","useContext","FontLibraryContext","isUploading","setIsUploading","useState","handleDropZone","files","handleFilesUpload","onFilesUpload","event","target","uniqueFilenames","Set","selectedFiles","allowedFiles","filter","file","has","name","fileExtension","split","pop","toLowerCase","ALLOWED_FILE_EXTENSIONS","includes","add","length","loadFiles","type","message","__","fontFacesLoaded","Promise","all","map","fontFile","fontFaceData","getFontFaceMetadata","loadFontFaceInBrowser","handleInstall","readFileAsArrayBuffer","resolve","reject","reader","window","FileReader","readAsArrayBuffer","onload","result","onerror","buffer","fontObj","Font","fromDataBuffer","onloadEvent","font","detail","opentype","tables","fontName","get","isItalic","fontWeight","usWeightClass","isVariable","fvar","weightAxis","axes","find","tag","weightRange","minValue","maxValue","fontFamily","fontStyle","fontFaces","fontFamilies","makeFamiliesFromFaces","error","_react","createElement","default","DropZone","onFilesDrop","__experimentalVStack","className","FlexItem","FormFileUpload","accept","ext","join","multiple","onChange","render","openFileDialog","Button","onClick","__experimentalSpacer","margin","__experimentalText","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/upload-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropZone,\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFormFileUpload,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useContext, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_FILE_EXTENSIONS } from './utils/constants';\nimport { FontLibraryContext } from './context';\nimport { Font } from '../../../../lib/lib-font.browser';\nimport makeFamiliesFromFaces from './utils/make-families-from-faces';\nimport { loadFontFaceInBrowser } from './utils';\nimport TabPanelLayout from './tab-panel-layout';\nimport { unlock } from '../../../lock-unlock';\n\nconst { ProgressBar } = unlock( componentsPrivateApis );\n\nfunction UploadFonts() {\n\tconst { installFont, notice, setNotice } = useContext( FontLibraryContext );\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\n\tconst handleDropZone = ( files ) => {\n\t\thandleFilesUpload( files );\n\t};\n\tconst onFilesUpload = ( event ) => {\n\t\thandleFilesUpload( event.target.files );\n\t};\n\n\t/**\n\t * Filters the selected files to only allow the ones with the allowed extensions\n\t *\n\t * @param {Array} files The files to be filtered\n\t * @return {void}\n\t */\n\tconst handleFilesUpload = ( files ) => {\n\t\tsetNotice( null );\n\t\tsetIsUploading( true );\n\t\tconst uniqueFilenames = new Set();\n\t\tconst selectedFiles = [ ...files ];\n\t\tconst allowedFiles = selectedFiles.filter( ( file ) => {\n\t\t\tif ( uniqueFilenames.has( file.name ) ) {\n\t\t\t\treturn false; // Discard duplicates\n\t\t\t}\n\t\t\t// Eliminates files that are not allowed\n\t\t\tconst fileExtension = file.name.split( '.' ).pop().toLowerCase();\n\t\t\tif ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {\n\t\t\t\tuniqueFilenames.add( file.name );\n\t\t\t\treturn true; // Keep file if the extension is allowed\n\t\t\t}\n\t\t\treturn false; // Discard file extension not allowed\n\t\t} );\n\t\tif ( allowedFiles.length > 0 ) {\n\t\t\tloadFiles( allowedFiles );\n\t\t} else {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __( 'No fonts found to install.' ),\n\t\t\t} );\n\t\t\tsetIsUploading( false );\n\t\t}\n\t};\n\n\t/**\n\t * Loads the selected files and reads the font metadata\n\t *\n\t * @param {Array} files The files to be loaded\n\t * @return {void}\n\t */\n\tconst loadFiles = async ( files ) => {\n\t\tconst fontFacesLoaded = await Promise.all(\n\t\t\tfiles.map( async ( fontFile ) => {\n\t\t\t\tconst fontFaceData = await getFontFaceMetadata( fontFile );\n\t\t\t\tawait loadFontFaceInBrowser(\n\t\t\t\t\tfontFaceData,\n\t\t\t\t\tfontFaceData.file,\n\t\t\t\t\t'all'\n\t\t\t\t);\n\t\t\t\treturn fontFaceData;\n\t\t\t} )\n\t\t);\n\t\thandleInstall( fontFacesLoaded );\n\t};\n\n\t// Create a function to read the file as array buffer\n\tasync function readFileAsArrayBuffer( file ) {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tconst reader = new window.FileReader();\n\t\t\treader.readAsArrayBuffer( file );\n\t\t\treader.onload = () => resolve( reader.result );\n\t\t\treader.onerror = reject;\n\t\t} );\n\t}\n\n\tconst getFontFaceMetadata = async ( fontFile ) => {\n\t\tconst buffer = await readFileAsArrayBuffer( fontFile );\n\t\tconst fontObj = new Font( 'Uploaded Font' );\n\t\tfontObj.fromDataBuffer( buffer, fontFile.name );\n\t\t// Assuming that fromDataBuffer triggers onload event and returning a Promise\n\t\tconst onloadEvent = await new Promise(\n\t\t\t( resolve ) => ( fontObj.onload = resolve )\n\t\t);\n\t\tconst font = onloadEvent.detail.font;\n\t\tconst { name } = font.opentype.tables;\n\t\tconst fontName = name.get( 16 ) || name.get( 1 );\n\t\tconst isItalic = name.get( 2 ).toLowerCase().includes( 'italic' );\n\t\tconst fontWeight =\n\t\t\tfont.opentype.tables[ 'OS/2' ].usWeightClass || 'normal';\n\t\tconst isVariable = !! font.opentype.tables.fvar;\n\t\tconst weightAxis =\n\t\t\tisVariable &&\n\t\t\tfont.opentype.tables.fvar.axes.find(\n\t\t\t\t( { tag } ) => tag === 'wght'\n\t\t\t);\n\t\tconst weightRange = weightAxis\n\t\t\t? `${ weightAxis.minValue } ${ weightAxis.maxValue }`\n\t\t\t: null;\n\t\treturn {\n\t\t\tfile: fontFile,\n\t\t\tfontFamily: fontName,\n\t\t\tfontStyle: isItalic ? 'italic' : 'normal',\n\t\t\tfontWeight: weightRange || fontWeight,\n\t\t};\n\t};\n\n\t/**\n\t * Creates the font family definition and sends it to the server\n\t *\n\t * @param {Array} fontFaces The font faces to be installed\n\t * @return {void}\n\t */\n\tconst handleInstall = async ( fontFaces ) => {\n\t\tconst fontFamilies = makeFamiliesFromFaces( fontFaces );\n\n\t\tif ( fontFamilies.length > 1 ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Variants from only one font family can be uploaded at a time.'\n\t\t\t\t),\n\t\t\t} );\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait installFont( fontFamilies[ 0 ] );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Fonts were installed 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: error.message,\n\t\t\t} );\n\t\t}\n\n\t\tsetIsUploading( false );\n\t};\n\n\treturn (\n\t\t<TabPanelLayout notice={ notice }>\n\t\t\t<DropZone onFilesDrop={ handleDropZone } />\n\t\t\t<VStack className=\"font-library-modal__local-fonts\">\n\t\t\t\t{ isUploading && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<div className=\"font-library-modal__upload-area\">\n\t\t\t\t\t\t\t<ProgressBar />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isUploading && (\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\taccept={ ALLOWED_FILE_EXTENSIONS.map(\n\t\t\t\t\t\t\t( ext ) => `.${ ext }`\n\t\t\t\t\t\t).join( ',' ) }\n\t\t\t\t\t\tmultiple={ true }\n\t\t\t\t\t\tonChange={ onFilesUpload }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"font-library-modal__upload-area\"\n\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload font' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t<Text className=\"font-library-modal__upload-area__text\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Uploaded fonts appear in your library and can be used in your theme. Supported formats: .tff, .otf, .woff, and .woff2.'\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</TabPanelLayout>\n\t);\n}\n\nexport default UploadFonts;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_i18n","require","_components","_element","_constants","_context","_libFont","_makeFamiliesFromFaces","_interopRequireDefault","_utils","_lockUnlock","ProgressBar","unlock","componentsPrivateApis","UploadFonts","installFonts","notice","setNotice","useContext","FontLibraryContext","isUploading","setIsUploading","useState","handleDropZone","files","handleFilesUpload","onFilesUpload","event","target","uniqueFilenames","Set","selectedFiles","allowedFiles","filter","file","has","name","fileExtension","split","pop","toLowerCase","ALLOWED_FILE_EXTENSIONS","includes","add","length","loadFiles","type","message","__","fontFacesLoaded","Promise","all","map","fontFile","fontFaceData","getFontFaceMetadata","loadFontFaceInBrowser","handleInstall","readFileAsArrayBuffer","resolve","reject","reader","window","FileReader","readAsArrayBuffer","onload","result","onerror","buffer","fontObj","Font","fromDataBuffer","onloadEvent","font","detail","opentype","tables","fontName","get","isItalic","fontWeight","usWeightClass","isVariable","fvar","weightAxis","axes","find","tag","weightRange","minValue","maxValue","fontFamily","fontStyle","fontFaces","fontFamilies","makeFamiliesFromFaces","error","_react","createElement","className","DropZone","onFilesDrop","__experimentalVStack","Notice","status","onRemove","FlexItem","FormFileUpload","accept","ext","join","multiple","onChange","render","openFileDialog","Button","onClick","__experimentalSpacer","margin","__experimentalText","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/upload-fonts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tButton,\n\tDropZone,\n\tNotice,\n\tFormFileUpload,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useContext, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_FILE_EXTENSIONS } from './utils/constants';\nimport { FontLibraryContext } from './context';\nimport { Font } from '../../../../lib/lib-font.browser';\nimport makeFamiliesFromFaces from './utils/make-families-from-faces';\nimport { loadFontFaceInBrowser } from './utils';\nimport { unlock } from '../../../lock-unlock';\n\nconst { ProgressBar } = unlock( componentsPrivateApis );\n\nfunction UploadFonts() {\n\tconst { installFonts, notice, setNotice } =\n\t\tuseContext( FontLibraryContext );\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\n\tconst handleDropZone = ( files ) => {\n\t\thandleFilesUpload( files );\n\t};\n\tconst onFilesUpload = ( event ) => {\n\t\thandleFilesUpload( event.target.files );\n\t};\n\n\t/**\n\t * Filters the selected files to only allow the ones with the allowed extensions\n\t *\n\t * @param {Array} files The files to be filtered\n\t * @return {void}\n\t */\n\tconst handleFilesUpload = ( files ) => {\n\t\tsetNotice( null );\n\t\tsetIsUploading( true );\n\t\tconst uniqueFilenames = new Set();\n\t\tconst selectedFiles = [ ...files ];\n\t\tconst allowedFiles = selectedFiles.filter( ( file ) => {\n\t\t\tif ( uniqueFilenames.has( file.name ) ) {\n\t\t\t\treturn false; // Discard duplicates\n\t\t\t}\n\t\t\t// Eliminates files that are not allowed\n\t\t\tconst fileExtension = file.name.split( '.' ).pop().toLowerCase();\n\t\t\tif ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {\n\t\t\t\tuniqueFilenames.add( file.name );\n\t\t\t\treturn true; // Keep file if the extension is allowed\n\t\t\t}\n\t\t\treturn false; // Discard file extension not allowed\n\t\t} );\n\t\tif ( allowedFiles.length > 0 ) {\n\t\t\tloadFiles( allowedFiles );\n\t\t} else {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __( 'No fonts found to install.' ),\n\t\t\t} );\n\t\t\tsetIsUploading( false );\n\t\t}\n\t};\n\n\t/**\n\t * Loads the selected files and reads the font metadata\n\t *\n\t * @param {Array} files The files to be loaded\n\t * @return {void}\n\t */\n\tconst loadFiles = async ( files ) => {\n\t\tconst fontFacesLoaded = await Promise.all(\n\t\t\tfiles.map( async ( fontFile ) => {\n\t\t\t\tconst fontFaceData = await getFontFaceMetadata( fontFile );\n\t\t\t\tawait loadFontFaceInBrowser(\n\t\t\t\t\tfontFaceData,\n\t\t\t\t\tfontFaceData.file,\n\t\t\t\t\t'all'\n\t\t\t\t);\n\t\t\t\treturn fontFaceData;\n\t\t\t} )\n\t\t);\n\t\thandleInstall( fontFacesLoaded );\n\t};\n\n\t// Create a function to read the file as array buffer\n\tasync function readFileAsArrayBuffer( file ) {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tconst reader = new window.FileReader();\n\t\t\treader.readAsArrayBuffer( file );\n\t\t\treader.onload = () => resolve( reader.result );\n\t\t\treader.onerror = reject;\n\t\t} );\n\t}\n\n\tconst getFontFaceMetadata = async ( fontFile ) => {\n\t\tconst buffer = await readFileAsArrayBuffer( fontFile );\n\t\tconst fontObj = new Font( 'Uploaded Font' );\n\t\tfontObj.fromDataBuffer( buffer, fontFile.name );\n\t\t// Assuming that fromDataBuffer triggers onload event and returning a Promise\n\t\tconst onloadEvent = await new Promise(\n\t\t\t( resolve ) => ( fontObj.onload = resolve )\n\t\t);\n\t\tconst font = onloadEvent.detail.font;\n\t\tconst { name } = font.opentype.tables;\n\t\tconst fontName = name.get( 16 ) || name.get( 1 );\n\t\tconst isItalic = name.get( 2 ).toLowerCase().includes( 'italic' );\n\t\tconst fontWeight =\n\t\t\tfont.opentype.tables[ 'OS/2' ].usWeightClass || 'normal';\n\t\tconst isVariable = !! font.opentype.tables.fvar;\n\t\tconst weightAxis =\n\t\t\tisVariable &&\n\t\t\tfont.opentype.tables.fvar.axes.find(\n\t\t\t\t( { tag } ) => tag === 'wght'\n\t\t\t);\n\t\tconst weightRange = weightAxis\n\t\t\t? `${ weightAxis.minValue } ${ weightAxis.maxValue }`\n\t\t\t: null;\n\t\treturn {\n\t\t\tfile: fontFile,\n\t\t\tfontFamily: fontName,\n\t\t\tfontStyle: isItalic ? 'italic' : 'normal',\n\t\t\tfontWeight: weightRange || fontWeight,\n\t\t};\n\t};\n\n\t/**\n\t * Creates the font family definition and sends it to the server\n\t *\n\t * @param {Array} fontFaces The font faces to be installed\n\t * @return {void}\n\t */\n\tconst handleInstall = async ( fontFaces ) => {\n\t\tconst fontFamilies = makeFamiliesFromFaces( fontFaces );\n\n\t\ttry {\n\t\t\tawait installFonts( fontFamilies );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Fonts were installed 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: error.message,\n\t\t\t} );\n\t\t}\n\n\t\tsetIsUploading( false );\n\t};\n\n\treturn (\n\t\t<div className=\"font-library-modal__tabpanel-layout\">\n\t\t\t<DropZone onFilesDrop={ handleDropZone } />\n\t\t\t<VStack className=\"font-library-modal__local-fonts\">\n\t\t\t\t{ notice && (\n\t\t\t\t\t<Notice\n\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t</Notice>\n\t\t\t\t) }\n\t\t\t\t{ isUploading && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<div className=\"font-library-modal__upload-area\">\n\t\t\t\t\t\t\t<ProgressBar />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isUploading && (\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\taccept={ ALLOWED_FILE_EXTENSIONS.map(\n\t\t\t\t\t\t\t( ext ) => `.${ ext }`\n\t\t\t\t\t\t).join( ',' ) }\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tonChange={ onFilesUpload }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"font-library-modal__upload-area\"\n\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload font' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t<Text className=\"font-library-modal__upload-area__text\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Uploaded fonts appear in your library and can be used in your theme. Supported formats: .tff, .otf, .woff, and .woff2.'\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default UploadFonts;\n"],"mappings":"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"}
@@ -15,6 +15,7 @@ exports.makeFontFamilyFormData = makeFontFamilyFormData;
15
15
  exports.mergeFontFaces = mergeFontFaces;
16
16
  exports.mergeFontFamilies = mergeFontFamilies;
17
17
  exports.setUIValuesNeeded = setUIValuesNeeded;
18
+ exports.unloadFontFaceInBrowser = unloadFontFaceInBrowser;
18
19
  var _components = require("@wordpress/components");
19
20
  var _constants = require("./constants");
20
21
  var _lockUnlock = require("../../../../lock-unlock");
@@ -124,7 +125,40 @@ async function loadFontFaceInBrowser(fontFace, source, addTo = 'all') {
124
125
  iframeDocument.fonts.add(loadedFace);
125
126
  }
126
127
  }
127
- function getDisplaySrcFromFontFace(input, urlPrefix) {
128
+
129
+ /*
130
+ * Unloads the font face and remove it from the browser.
131
+ * It also removes it from the iframe document.
132
+ *
133
+ * Note that Font faces that were added to the set using the CSS @font-face rule
134
+ * remain connected to the corresponding CSS, and cannot be deleted.
135
+ *
136
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/delete.
137
+ */
138
+ function unloadFontFaceInBrowser(fontFace, removeFrom = 'all') {
139
+ const unloadFontFace = fonts => {
140
+ fonts.forEach(f => {
141
+ if (f.family === (0, _previewStyles.formatFontFaceName)(fontFace.fontFamily) && f.weight === fontFace.fontWeight && f.style === fontFace.fontStyle) {
142
+ fonts.delete(f);
143
+ }
144
+ });
145
+ };
146
+ if (removeFrom === 'document' || removeFrom === 'all') {
147
+ unloadFontFace(document.fonts);
148
+ }
149
+ if (removeFrom === 'iframe' || removeFrom === 'all') {
150
+ const iframeDocument = document.querySelector('iframe[name="editor-canvas"]').contentDocument;
151
+ unloadFontFace(iframeDocument.fonts);
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Retrieves the display source from a font face src.
157
+ *
158
+ * @param {string|string[]} input - The font face src.
159
+ * @return {string|undefined} The display source or undefined if the input is invalid.
160
+ */
161
+ function getDisplaySrcFromFontFace(input) {
128
162
  if (!input) {
129
163
  return;
130
164
  }
@@ -134,9 +168,9 @@ function getDisplaySrcFromFontFace(input, urlPrefix) {
134
168
  } else {
135
169
  src = input;
136
170
  }
137
- // If it is a theme font, we need to make the url absolute
138
- if (src.startsWith('file:.') && urlPrefix) {
139
- src = src.replace('file:.', urlPrefix);
171
+ // It's expected theme fonts will already be loaded in the browser.
172
+ if (src.startsWith('file:.')) {
173
+ return;
140
174
  }
141
175
  if (!isUrlEncoded(src)) {
142
176
  src = encodeURI(src);