@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
@@ -11,15 +11,15 @@ var _components = require("@wordpress/components");
11
11
  var _compose = require("@wordpress/compose");
12
12
  var _i18n = require("@wordpress/i18n");
13
13
  var _icons = require("@wordpress/icons");
14
- var _tabPanelLayout = _interopRequireDefault(require("./tab-panel-layout"));
15
14
  var _context = require("./context");
16
15
  var _fontCard = _interopRequireDefault(require("./font-card"));
17
16
  var _filterFonts = _interopRequireDefault(require("./utils/filter-fonts"));
18
- var _collectionFontDetails = _interopRequireDefault(require("./collection-font-details"));
19
17
  var _toggleFont = require("./utils/toggleFont");
20
18
  var _fontsOutline = require("./utils/fonts-outline");
21
19
  var _googleFontsConfirmDialog = _interopRequireDefault(require("./google-fonts-confirm-dialog"));
22
20
  var _utils = require("./utils");
21
+ var _sortFontFaces = require("./utils/sort-font-faces");
22
+ var _collectionFontVariant = _interopRequireDefault(require("./collection-font-variant"));
23
23
  /**
24
24
  * WordPress dependencies
25
25
  */
@@ -32,13 +32,15 @@ const DEFAULT_CATEGORY = {
32
32
  slug: 'all',
33
33
  name: (0, _i18n._x)('All', 'font categories')
34
34
  };
35
+ const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
36
+ const MIN_WINDOW_HEIGHT = 500;
35
37
  function FontCollection({
36
38
  slug
37
39
  }) {
38
40
  var _selectedCollection$c;
39
41
  const requiresPermission = slug === 'google-fonts';
40
42
  const getGoogleFontsPermissionFromStorage = () => {
41
- return window.localStorage.getItem('wp-font-library-google-fonts-permission') === 'true';
43
+ return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === 'true';
42
44
  };
43
45
  const [selectedFont, setSelectedFont] = (0, _element.useState)(null);
44
46
  const [fontsToInstall, setFontsToInstall] = (0, _element.useState)([]);
@@ -48,7 +50,8 @@ function FontCollection({
48
50
  const {
49
51
  collections,
50
52
  getFontCollection,
51
- installFont,
53
+ installFonts,
54
+ isInstalling,
52
55
  notice,
53
56
  setNotice
54
57
  } = (0, _element.useContext)(_context.FontLibraryContext);
@@ -61,6 +64,10 @@ function FontCollection({
61
64
  window.addEventListener('storage', handleStorage);
62
65
  return () => window.removeEventListener('storage', handleStorage);
63
66
  }, [slug, requiresPermission]);
67
+ const revokeAccess = () => {
68
+ window.localStorage.setItem(LOCAL_STORAGE_ITEM, 'false');
69
+ window.dispatchEvent(new Event('storage'));
70
+ };
64
71
  (0, _element.useEffect)(() => {
65
72
  const fetchFontCollection = async () => {
66
73
  try {
@@ -95,7 +102,8 @@ function FontCollection({
95
102
 
96
103
  // NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
97
104
  // The height of each font family item is 61px.
98
- const pageSize = Math.floor((window.innerHeight - 417) / 61);
105
+ const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
106
+ const pageSize = Math.floor((windowHeight - 417) / 61);
99
107
  const totalPages = Math.ceil(fonts.length / pageSize);
100
108
  const itemsStart = (page - 1) * pageSize;
101
109
  const itemsLimit = page * pageSize;
@@ -119,16 +127,6 @@ function FontCollection({
119
127
  setFilters({});
120
128
  setPage(1);
121
129
  };
122
- const resetSearch = () => {
123
- setFilters({
124
- ...filters,
125
- search: ''
126
- });
127
- setPage(1);
128
- };
129
- const handleUnselectFont = () => {
130
- setSelectedFont(null);
131
- };
132
130
  const handleToggleVariant = (font, face) => {
133
131
  const newFontsToInstall = (0, _toggleFont.toggleFont)(font, face, fontsToInstall);
134
132
  setFontsToInstall(newFontsToInstall);
@@ -158,7 +156,7 @@ function FontCollection({
158
156
  return;
159
157
  }
160
158
  try {
161
- await installFont(fontFamily);
159
+ await installFonts([fontFamily]);
162
160
  setNotice({
163
161
  type: 'success',
164
162
  message: (0, _i18n.__)('Fonts were installed successfully.')
@@ -171,39 +169,60 @@ function FontCollection({
171
169
  }
172
170
  resetFontsToInstall();
173
171
  };
174
- let footerComponent = null;
175
- if (selectedFont) {
176
- footerComponent = (0, _react.createElement)(InstallFooter, {
177
- handleInstall: handleInstall,
178
- isDisabled: fontsToInstall.length === 0
179
- });
180
- } else if (!renderConfirmDialog && totalPages > 1) {
181
- footerComponent = (0, _react.createElement)(PaginationFooter, {
182
- page: page,
183
- totalPages: totalPages,
184
- setPage: setPage
185
- });
172
+ const getSortedFontFaces = fontFamily => {
173
+ if (!fontFamily) {
174
+ return [];
175
+ }
176
+ if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
177
+ return [{
178
+ fontFamily: fontFamily.fontFamily,
179
+ fontStyle: 'normal',
180
+ fontWeight: '400'
181
+ }];
182
+ }
183
+ return (0, _sortFontFaces.sortFontFaces)(fontFamily.fontFace);
184
+ };
185
+ if (renderConfirmDialog) {
186
+ return (0, _react.createElement)(_googleFontsConfirmDialog.default, null);
186
187
  }
187
- return (0, _react.createElement)(_tabPanelLayout.default, {
188
- title: !selectedFont ? selectedCollection.name : selectedFont.name,
189
- description: !selectedFont ? selectedCollection.description : (0, _i18n.__)('Select font variants to install.'),
190
- notice: notice,
191
- handleBack: !!selectedFont && handleUnselectFont,
192
- footer: footerComponent
193
- }, renderConfirmDialog && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.__experimentalSpacer, {
194
- margin: 8
195
- }), (0, _react.createElement)(_googleFontsConfirmDialog.default, null)), !renderConfirmDialog && !selectedFont && (0, _react.createElement)(_components.Flex, null, (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_components.__experimentalInputControl, {
188
+ const ActionsComponent = () => {
189
+ if (slug !== 'google-fonts' || renderConfirmDialog || selectedFont) {
190
+ return null;
191
+ }
192
+ return (0, _react.createElement)(_components.DropdownMenu, {
193
+ icon: _icons.moreVertical,
194
+ label: (0, _i18n.__)('Actions'),
195
+ popoverProps: {
196
+ position: 'bottom left'
197
+ },
198
+ controls: [{
199
+ title: (0, _i18n.__)('Revoke access to Google Fonts'),
200
+ onClick: revokeAccess
201
+ }]
202
+ });
203
+ };
204
+ return (0, _react.createElement)("div", {
205
+ className: "font-library-modal__tabpanel-layout"
206
+ }, (0, _react.createElement)(_components.__experimentalNavigatorProvider, {
207
+ initialPath: "/",
208
+ className: "font-library-modal__tabpanel-layout"
209
+ }, (0, _react.createElement)(_components.__experimentalNavigatorScreen, {
210
+ path: "/"
211
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
212
+ justify: "space-between"
213
+ }, (0, _react.createElement)(_components.__experimentalVStack, null, (0, _react.createElement)(_components.__experimentalHeading, {
214
+ level: 2,
215
+ size: 13
216
+ }, selectedCollection.name), (0, _react.createElement)(_components.__experimentalText, null, selectedCollection.description)), (0, _react.createElement)(ActionsComponent, null)), (0, _react.createElement)(_components.__experimentalSpacer, {
217
+ margin: 4
218
+ }), (0, _react.createElement)(_components.Flex, null, (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_components.SearchControl, {
219
+ className: "font-library-modal__search",
196
220
  value: filters.search,
197
221
  placeholder: (0, _i18n.__)('Font name…'),
198
222
  label: (0, _i18n.__)('Search'),
199
223
  onChange: debouncedUpdateSearchInput,
200
- prefix: (0, _react.createElement)(_components.Icon, {
201
- icon: _icons.search
202
- }),
203
- suffix: filters?.search ? (0, _react.createElement)(_components.Icon, {
204
- icon: _icons.closeSmall,
205
- onClick: resetSearch
206
- }) : null
224
+ __nextHasNoMarginBottom: true,
225
+ hideLabelFromVision: false
207
226
  })), (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_components.SelectControl, {
208
227
  label: (0, _i18n.__)('Category'),
209
228
  value: filters.category,
@@ -213,27 +232,67 @@ function FontCollection({
213
232
  key: category.slug
214
233
  }, category.name))))), (0, _react.createElement)(_components.__experimentalSpacer, {
215
234
  margin: 4
216
- }), !renderConfirmDialog && !selectedCollection?.font_families && !notice && (0, _react.createElement)(_components.Spinner, null), !renderConfirmDialog && !!selectedCollection?.font_families?.length && !fonts.length && (0, _react.createElement)(_components.__experimentalText, null, (0, _i18n.__)('No fonts found. Try with a different search term')), !renderConfirmDialog && selectedFont && (0, _react.createElement)(_collectionFontDetails.default, {
217
- font: selectedFont,
218
- handleToggleVariant: handleToggleVariant,
219
- fontToInstallOutline: fontToInstallOutline
220
- }), !renderConfirmDialog && !selectedFont && (0, _react.createElement)("div", {
235
+ }), !selectedCollection?.font_families && !notice && (0, _react.createElement)(_components.Spinner, null), !!selectedCollection?.font_families?.length && !fonts.length && (0, _react.createElement)(_components.__experimentalText, null, (0, _i18n.__)('No fonts found. Try with a different search term')), (0, _react.createElement)("div", {
221
236
  className: "font-library-modal__fonts-grid__main"
222
237
  }, items.map(font => (0, _react.createElement)(_fontCard.default, {
223
238
  key: font.font_family_settings.slug,
224
239
  font: font.font_family_settings,
240
+ navigatorPath: '/fontFamily',
225
241
  onClick: () => {
226
242
  setSelectedFont(font.font_family_settings);
227
243
  }
228
- }))));
229
- }
230
- function PaginationFooter({
231
- page,
232
- totalPages,
233
- setPage
234
- }) {
235
- return (0, _react.createElement)(_components.Flex, {
236
- justify: "center"
244
+ })))), (0, _react.createElement)(_components.__experimentalNavigatorScreen, {
245
+ path: "/fontFamily"
246
+ }, (0, _react.createElement)(_components.Flex, {
247
+ justify: "flex-start"
248
+ }, (0, _react.createElement)(_components.__experimentalNavigatorToParentButton, {
249
+ icon: _icons.chevronLeft,
250
+ size: "small",
251
+ onClick: () => {
252
+ setSelectedFont(null);
253
+ },
254
+ "aria-label": (0, _i18n.__)('Navigate to the previous view')
255
+ }), (0, _react.createElement)(_components.__experimentalHeading, {
256
+ level: 2,
257
+ size: 13,
258
+ className: "edit-site-global-styles-header"
259
+ }, selectedFont?.name)), notice && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.__experimentalSpacer, {
260
+ margin: 1
261
+ }), (0, _react.createElement)(_components.Notice, {
262
+ status: notice.type,
263
+ onRemove: () => setNotice(null)
264
+ }, notice.message), (0, _react.createElement)(_components.__experimentalSpacer, {
265
+ margin: 1
266
+ })), (0, _react.createElement)(_components.__experimentalSpacer, {
267
+ margin: 4
268
+ }), (0, _react.createElement)(_components.__experimentalText, null, " ", (0, _i18n.__)('Select font variants to install.'), " "), (0, _react.createElement)(_components.__experimentalSpacer, {
269
+ margin: 4
270
+ }), (0, _react.createElement)(_components.__experimentalVStack, {
271
+ spacing: 0
272
+ }, (0, _react.createElement)(_components.__experimentalSpacer, {
273
+ margin: 8
274
+ }), getSortedFontFaces(selectedFont).map((face, i) => (0, _react.createElement)(_collectionFontVariant.default, {
275
+ font: selectedFont,
276
+ face: face,
277
+ key: `face${i}`,
278
+ handleToggleVariant: handleToggleVariant,
279
+ selected: (0, _fontsOutline.isFontFontFaceInOutline)(selectedFont.slug, selectedFont.fontFace ? face : null,
280
+ // If the font has no fontFace, we want to check if the font is in the outline
281
+ fontToInstallOutline)
282
+ }))), (0, _react.createElement)(_components.__experimentalSpacer, {
283
+ margin: 16
284
+ }))), selectedFont && (0, _react.createElement)(_components.Flex, {
285
+ justify: "flex-end",
286
+ className: "font-library-modal__tabpanel-layout__footer"
287
+ }, (0, _react.createElement)(_components.Button, {
288
+ variant: "primary",
289
+ onClick: handleInstall,
290
+ isBusy: isInstalling,
291
+ disabled: fontsToInstall.length === 0 || isInstalling,
292
+ __experimentalIsFocusable: true
293
+ }, (0, _i18n.__)('Install'))), !selectedFont && (0, _react.createElement)(_components.Flex, {
294
+ justify: "center",
295
+ className: "font-library-modal__tabpanel-layout__footer"
237
296
  }, (0, _react.createElement)(_components.Button, {
238
297
  label: (0, _i18n.__)('First page'),
239
298
  size: "compact",
@@ -278,24 +337,7 @@ function PaginationFooter({
278
337
  onClick: () => setPage(totalPages),
279
338
  disabled: page === totalPages,
280
339
  __experimentalIsFocusable: true
281
- }, (0, _react.createElement)("span", null, "\xBB")));
282
- }
283
- function InstallFooter({
284
- handleInstall,
285
- isDisabled
286
- }) {
287
- const {
288
- isInstalling
289
- } = (0, _element.useContext)(_context.FontLibraryContext);
290
- return (0, _react.createElement)(_components.Flex, {
291
- justify: "flex-end"
292
- }, (0, _react.createElement)(_components.Button, {
293
- variant: "primary",
294
- onClick: handleInstall,
295
- isBusy: isInstalling,
296
- disabled: isDisabled || isInstalling,
297
- __experimentalIsFocusable: true
298
- }, (0, _i18n.__)('Install')));
340
+ }, (0, _react.createElement)("span", null, "\xBB"))));
299
341
  }
300
342
  var _default = exports.default = FontCollection;
301
343
  //# sourceMappingURL=font-collection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_components","_compose","_i18n","_icons","_tabPanelLayout","_interopRequireDefault","_context","_fontCard","_filterFonts","_collectionFontDetails","_toggleFont","_fontsOutline","_googleFontsConfirmDialog","_utils","DEFAULT_CATEGORY","slug","name","_x","FontCollection","_selectedCollection$c","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","selectedFont","setSelectedFont","useState","fontsToInstall","setFontsToInstall","page","setPage","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","installFont","notice","setNotice","useContext","FontLibraryContext","selectedCollection","find","collection","useEffect","handleStorage","addEventListener","removeEventListener","fetchFontCollection","resetFilters","e","type","message","collectionFonts","useMemo","_selectedCollection$f","font_families","collectionCategories","categories","fonts","filterFonts","pageSize","Math","floor","innerHeight","totalPages","ceil","length","itemsStart","itemsLimit","items","slice","handleCategoryFilter","category","handleUpdateSearchInput","value","search","debouncedUpdateSearchInput","debounce","resetSearch","handleUnselectFont","handleToggleVariant","font","face","newFontsToInstall","toggleFont","fontToInstallOutline","getFontsOutline","resetFontsToInstall","handleInstall","fontFamily","fontFace","Promise","all","map","src","file","downloadFontFaceAssets","error","__","footerComponent","_react","createElement","InstallFooter","isDisabled","PaginationFooter","default","title","description","handleBack","footer","Fragment","__experimentalSpacer","margin","Flex","FlexItem","__experimentalInputControl","placeholder","label","onChange","prefix","Icon","icon","suffix","closeSmall","onClick","SelectControl","key","Spinner","__experimentalText","className","font_family_settings","justify","Button","size","disabled","__experimentalIsFocusable","__experimentalHStack","expanded","spacing","createInterpolateElement","sprintf","CurrenPageControl","options","Array","i","newPage","parseInt","__nextHasNoMarginBottom","isInstalling","variant","isBusy","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalInputControl as InputControl,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tSelectControl,\n\tSpinner,\n\tIcon,\n\tFlexItem,\n\tFlex,\n\tButton,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { sprintf, __, _x } from '@wordpress/i18n';\nimport { search, closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TabPanelLayout from './tab-panel-layout';\nimport { FontLibraryContext } from './context';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport CollectionFontDetails from './collection-font-details';\nimport { toggleFont } from './utils/toggleFont';\nimport { getFontsOutline } from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\nimport { downloadFontFaceAssets } from './utils';\n\nconst DEFAULT_CATEGORY = {\n\tslug: 'all',\n\tname: _x( 'All', 'font categories' ),\n};\nfunction FontCollection( { slug } ) {\n\tconst requiresPermission = slug === 'google-fonts';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(\n\t\t\t\t'wp-font-library-google-fonts-permission'\n\t\t\t) === 'true'\n\t\t);\n\t};\n\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ page, setPage ] = useState( 1 );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { collections, getFontCollection, installFont, notice, setNotice } =\n\t\tuseContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.slug === slug\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ slug, requiresPermission ] );\n\n\tuseEffect( () => {\n\t\tconst fetchFontCollection = async () => {\n\t\t\ttry {\n\t\t\t\tawait getFontCollection( slug );\n\t\t\t\tresetFilters();\n\t\t\t} catch ( e ) {\n\t\t\t\tif ( ! notice ) {\n\t\t\t\t\tsetNotice( {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tmessage: e?.message,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfetchFontCollection();\n\t}, [ slug, getFontCollection, setNotice, notice ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t\tsetNotice( null );\n\t}, [ slug, setNotice ] );\n\n\tuseEffect( () => {\n\t\t// If the selected fonts change, reset the selected fonts to install\n\t\tsetFontsToInstall( [] );\n\t}, [ selectedFont ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.font_families ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\t// NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px\n\t// The height of each font family item is 61px.\n\tconst pageSize = Math.floor( ( window.innerHeight - 417 ) / 61 );\n\tconst totalPages = Math.ceil( fonts.length / pageSize );\n\tconst itemsStart = ( page - 1 ) * pageSize;\n\tconst itemsLimit = page * pageSize;\n\tconst items = fonts.slice( itemsStart, itemsLimit );\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t\tsetPage( 1 );\n\t};\n\n\tconst resetSearch = () => {\n\t\tsetFilters( { ...filters, search: '' } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst handleUnselectFont = () => {\n\t\tsetSelectedFont( null );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\tconst handleInstall = async () => {\n\t\tsetNotice( null );\n\n\t\tconst fontFamily = fontsToInstall[ 0 ];\n\n\t\ttry {\n\t\t\tif ( fontFamily?.fontFace ) {\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tfontFamily.fontFace.map( async ( fontFace ) => {\n\t\t\t\t\t\tif ( fontFace.src ) {\n\t\t\t\t\t\t\tfontFace.file = await downloadFontFaceAssets(\n\t\t\t\t\t\t\t\tfontFace.src\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);\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\t// If any of the fonts fail to download,\n\t\t\t// show an error notice and stop the request from being sent.\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Error installing the fonts, could not be downloaded.'\n\t\t\t\t),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait installFont( fontFamily );\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\t\tresetFontsToInstall();\n\t};\n\n\tlet footerComponent = null;\n\tif ( selectedFont ) {\n\t\tfooterComponent = (\n\t\t\t<InstallFooter\n\t\t\t\thandleInstall={ handleInstall }\n\t\t\t\tisDisabled={ fontsToInstall.length === 0 }\n\t\t\t/>\n\t\t);\n\t} else if ( ! renderConfirmDialog && totalPages > 1 ) {\n\t\tfooterComponent = (\n\t\t\t<PaginationFooter\n\t\t\t\tpage={ page }\n\t\t\t\ttotalPages={ totalPages }\n\t\t\t\tsetPage={ setPage }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<TabPanelLayout\n\t\t\ttitle={\n\t\t\t\t! selectedFont ? selectedCollection.name : selectedFont.name\n\t\t\t}\n\t\t\tdescription={\n\t\t\t\t! selectedFont\n\t\t\t\t\t? selectedCollection.description\n\t\t\t\t\t: __( 'Select font variants to install.' )\n\t\t\t}\n\t\t\tnotice={ notice }\n\t\t\thandleBack={ !! selectedFont && handleUnselectFont }\n\t\t\tfooter={ footerComponent }\n\t\t>\n\t\t\t{ renderConfirmDialog && (\n\t\t\t\t<>\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<GoogleFontsConfirmDialog />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\tprefix={ <Icon icon={ search } /> }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tfilters?.search ? (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\t\t\t\tonClick={ resetSearch }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tvalue={ category.slug }\n\t\t\t\t\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<Spacer margin={ 4 } />\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t! selectedCollection?.font_families &&\n\t\t\t\t! notice && <Spinner /> }\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t!! selectedCollection?.font_families?.length &&\n\t\t\t\t! fonts.length && (\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'No fonts found. Try with a different search term'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && selectedFont && (\n\t\t\t\t<CollectionFontDetails\n\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\tfontToInstallOutline={ fontToInstallOutline }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<div className=\"font-library-modal__fonts-grid__main\">\n\t\t\t\t\t{ items.map( ( font ) => (\n\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\tkey={ font.font_family_settings.slug }\n\t\t\t\t\t\t\tfont={ font.font_family_settings }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetSelectedFont( font.font_family_settings );\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</div>\n\t\t\t) }\n\t\t</TabPanelLayout>\n\t);\n}\n\nfunction PaginationFooter( { page, totalPages, setPage } ) {\n\treturn (\n\t\t<Flex justify=\"center\">\n\t\t\t<Button\n\t\t\t\tlabel={ __( 'First page' ) }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ () => setPage( 1 ) }\n\t\t\t\tdisabled={ page === 1 }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t>\n\t\t\t\t<span>«</span>\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ () => setPage( page - 1 ) }\n\t\t\t\tdisabled={ page === 1 }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t>\n\t\t\t\t<span>‹</span>\n\t\t\t</Button>\n\t\t\t<HStack justify=\"flex-start\" expanded={ false } spacing={ 2 }>\n\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: Total number of pages.\n\t\t\t\t\t\t_x( 'Page <CurrenPageControl /> of %s', 'paging' ),\n\t\t\t\t\t\ttotalPages\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tCurrenPageControl: (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\tvalue={ page }\n\t\t\t\t\t\t\t\toptions={ [ ...Array( totalPages ) ].map(\n\t\t\t\t\t\t\t\t\t( e, i ) => {\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\tlabel: i + 1,\n\t\t\t\t\t\t\t\t\t\t\tvalue: i + 1,\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( newPage ) =>\n\t\t\t\t\t\t\t\t\tsetPage( parseInt( newPage ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsize={ 'compact' }\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\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) }\n\t\t\t</HStack>\n\t\t\t<Button\n\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ () => setPage( page + 1 ) }\n\t\t\t\tdisabled={ page === totalPages }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t>\n\t\t\t\t<span>›</span>\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tlabel={ __( 'Last page' ) }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ () => setPage( totalPages ) }\n\t\t\t\tdisabled={ page === totalPages }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t>\n\t\t\t\t<span>»</span>\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nfunction InstallFooter( { handleInstall, isDisabled } ) {\n\tconst { isInstalling } = useContext( FontLibraryContext );\n\n\treturn (\n\t\t<Flex justify=\"flex-end\">\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ handleInstall }\n\t\t\t\tisBusy={ isInstalling }\n\t\t\t\tdisabled={ isDisabled || isInstalling }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t>\n\t\t\t\t{ __( 'Install' ) }\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_components","_compose","_i18n","_icons","_context","_fontCard","_interopRequireDefault","_filterFonts","_toggleFont","_fontsOutline","_googleFontsConfirmDialog","_utils","_sortFontFaces","_collectionFontVariant","DEFAULT_CATEGORY","slug","name","_x","LOCAL_STORAGE_ITEM","MIN_WINDOW_HEIGHT","FontCollection","_selectedCollection$c","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","selectedFont","setSelectedFont","useState","fontsToInstall","setFontsToInstall","page","setPage","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","installFonts","isInstalling","notice","setNotice","useContext","FontLibraryContext","selectedCollection","find","collection","useEffect","handleStorage","addEventListener","removeEventListener","revokeAccess","setItem","dispatchEvent","Event","fetchFontCollection","resetFilters","e","type","message","collectionFonts","useMemo","_selectedCollection$f","font_families","collectionCategories","categories","fonts","filterFonts","windowHeight","Math","max","innerHeight","pageSize","floor","totalPages","ceil","length","itemsStart","itemsLimit","items","slice","handleCategoryFilter","category","handleUpdateSearchInput","value","search","debouncedUpdateSearchInput","debounce","handleToggleVariant","font","face","newFontsToInstall","toggleFont","fontToInstallOutline","getFontsOutline","resetFontsToInstall","handleInstall","fontFamily","fontFace","Promise","all","map","src","file","downloadFontFaceAssets","error","__","getSortedFontFaces","fontStyle","fontWeight","sortFontFaces","_react","createElement","default","ActionsComponent","DropdownMenu","icon","moreVertical","label","popoverProps","position","controls","title","onClick","className","__experimentalNavigatorProvider","initialPath","__experimentalNavigatorScreen","path","__experimentalHStack","justify","__experimentalVStack","__experimentalHeading","level","size","__experimentalText","description","__experimentalSpacer","margin","Flex","FlexItem","SearchControl","placeholder","onChange","__nextHasNoMarginBottom","hideLabelFromVision","SelectControl","key","Spinner","font_family_settings","navigatorPath","__experimentalNavigatorToParentButton","chevronLeft","Fragment","Notice","status","onRemove","spacing","i","selected","isFontFontFaceInOutline","Button","variant","isBusy","disabled","__experimentalIsFocusable","expanded","createInterpolateElement","sprintf","CurrenPageControl","options","Array","newPage","parseInt","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalNavigatorProvider as NavigatorProvider,\n\t__experimentalNavigatorScreen as NavigatorScreen,\n\t__experimentalNavigatorToParentButton as NavigatorToParentButton,\n\t__experimentalHeading as Heading,\n\tNotice,\n\tSelectControl,\n\tSpinner,\n\tFlexItem,\n\tFlex,\n\tButton,\n\tDropdownMenu,\n\tSearchControl,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { sprintf, __, _x } from '@wordpress/i18n';\nimport { moreVertical, chevronLeft } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport { toggleFont } from './utils/toggleFont';\nimport {\n\tgetFontsOutline,\n\tisFontFontFaceInOutline,\n} from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\nimport { downloadFontFaceAssets } from './utils';\nimport { sortFontFaces } from './utils/sort-font-faces';\nimport CollectionFontVariant from './collection-font-variant';\n\nconst DEFAULT_CATEGORY = {\n\tslug: 'all',\n\tname: _x( 'All', 'font categories' ),\n};\n\nconst LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';\nconst MIN_WINDOW_HEIGHT = 500;\n\nfunction FontCollection( { slug } ) {\n\tconst requiresPermission = slug === 'google-fonts';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn window.localStorage.getItem( LOCAL_STORAGE_ITEM ) === 'true';\n\t};\n\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ page, setPage ] = useState( 1 );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst {\n\t\tcollections,\n\t\tgetFontCollection,\n\t\tinstallFonts,\n\t\tisInstalling,\n\t\tnotice,\n\t\tsetNotice,\n\t} = useContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.slug === slug\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ slug, requiresPermission ] );\n\n\tconst revokeAccess = () => {\n\t\twindow.localStorage.setItem( LOCAL_STORAGE_ITEM, 'false' );\n\t\twindow.dispatchEvent( new Event( 'storage' ) );\n\t};\n\n\tuseEffect( () => {\n\t\tconst fetchFontCollection = async () => {\n\t\t\ttry {\n\t\t\t\tawait getFontCollection( slug );\n\t\t\t\tresetFilters();\n\t\t\t} catch ( e ) {\n\t\t\t\tif ( ! notice ) {\n\t\t\t\t\tsetNotice( {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tmessage: e?.message,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfetchFontCollection();\n\t}, [ slug, getFontCollection, setNotice, notice ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t\tsetNotice( null );\n\t}, [ slug, setNotice ] );\n\n\tuseEffect( () => {\n\t\t// If the selected fonts change, reset the selected fonts to install\n\t\tsetFontsToInstall( [] );\n\t}, [ selectedFont ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.font_families ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\t// NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px\n\t// The height of each font family item is 61px.\n\tconst windowHeight = Math.max( window.innerHeight, MIN_WINDOW_HEIGHT );\n\tconst pageSize = Math.floor( ( windowHeight - 417 ) / 61 );\n\tconst totalPages = Math.ceil( fonts.length / pageSize );\n\tconst itemsStart = ( page - 1 ) * pageSize;\n\tconst itemsLimit = page * pageSize;\n\tconst items = fonts.slice( itemsStart, itemsLimit );\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t\tsetPage( 1 );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\tconst handleInstall = async () => {\n\t\tsetNotice( null );\n\n\t\tconst fontFamily = fontsToInstall[ 0 ];\n\n\t\ttry {\n\t\t\tif ( fontFamily?.fontFace ) {\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tfontFamily.fontFace.map( async ( fontFace ) => {\n\t\t\t\t\t\tif ( fontFace.src ) {\n\t\t\t\t\t\t\tfontFace.file = await downloadFontFaceAssets(\n\t\t\t\t\t\t\t\tfontFace.src\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);\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\t// If any of the fonts fail to download,\n\t\t\t// show an error notice and stop the request from being sent.\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Error installing the fonts, could not be downloaded.'\n\t\t\t\t),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait installFonts( [ fontFamily ] );\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\t\tresetFontsToInstall();\n\t};\n\n\tconst getSortedFontFaces = ( fontFamily ) => {\n\t\tif ( ! fontFamily ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ! fontFamily.fontFace || ! fontFamily.fontFace.length ) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfontFamily: fontFamily.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( fontFamily.fontFace );\n\t};\n\n\tif ( renderConfirmDialog ) {\n\t\treturn <GoogleFontsConfirmDialog />;\n\t}\n\n\tconst ActionsComponent = () => {\n\t\tif ( slug !== 'google-fonts' || renderConfirmDialog || selectedFont ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<DropdownMenu\n\t\t\t\ticon={ moreVertical }\n\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t} }\n\t\t\t\tcontrols={ [\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: __( 'Revoke access to Google Fonts' ),\n\t\t\t\t\t\tonClick: revokeAccess,\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"font-library-modal__tabpanel-layout\">\n\t\t\t<NavigatorProvider\n\t\t\t\tinitialPath=\"/\"\n\t\t\t\tclassName=\"font-library-modal__tabpanel-layout\"\n\t\t\t>\n\t\t\t\t<NavigatorScreen path=\"/\">\n\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t\t\t{ selectedCollection.name }\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t<Text>{ selectedCollection.description }</Text>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t<ActionsComponent />\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t<Flex>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<SearchControl\n\t\t\t\t\t\t\t\tclassName=\"font-library-modal__search\"\n\t\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\thideLabelFromVision={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\t\tvalue={ category.slug }\n\t\t\t\t\t\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\n\t\t\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t\t\t{ ! selectedCollection?.font_families && ! notice && (\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ !! selectedCollection?.font_families?.length &&\n\t\t\t\t\t\t! fonts.length && (\n\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'No fonts found. Try with a different search term'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t<div className=\"font-library-modal__fonts-grid__main\">\n\t\t\t\t\t\t{ items.map( ( font ) => (\n\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\tkey={ font.font_family_settings.slug }\n\t\t\t\t\t\t\t\tfont={ font.font_family_settings }\n\t\t\t\t\t\t\t\tnavigatorPath={ '/fontFamily' }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetSelectedFont(\n\t\t\t\t\t\t\t\t\t\tfont.font_family_settings\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</div>\n\t\t\t\t</NavigatorScreen>\n\n\t\t\t\t<NavigatorScreen path=\"/fontFamily\">\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\tsetSelectedFont( 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{ selectedFont?.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> { __( 'Select font variants to install.' ) } </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{ getSortedFontFaces( selectedFont ).map(\n\t\t\t\t\t\t\t( face, i ) => (\n\t\t\t\t\t\t\t\t<CollectionFontVariant\n\t\t\t\t\t\t\t\t\tfont={ selectedFont }\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\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\t\t\t\t\tselected={ isFontFontFaceInOutline(\n\t\t\t\t\t\t\t\t\t\tselectedFont.slug,\n\t\t\t\t\t\t\t\t\t\tselectedFont.fontFace ? face : null, // If the font has no fontFace, we want to check if the font is in the outline\n\t\t\t\t\t\t\t\t\t\tfontToInstallOutline\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</VStack>\n\t\t\t\t\t<Spacer margin={ 16 } />\n\t\t\t\t</NavigatorScreen>\n\t\t\t</NavigatorProvider>\n\n\t\t\t{ selectedFont && (\n\t\t\t\t<Flex\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\tclassName=\"font-library-modal__tabpanel-layout__footer\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ handleInstall }\n\t\t\t\t\t\tisBusy={ isInstalling }\n\t\t\t\t\t\tdisabled={ fontsToInstall.length === 0 || isInstalling }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Install' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t{ ! selectedFont && (\n\t\t\t\t<Flex\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"font-library-modal__tabpanel-layout__footer\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'First page' ) }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ () => setPage( 1 ) }\n\t\t\t\t\t\tdisabled={ page === 1 }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>«</span>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ () => setPage( page - 1 ) }\n\t\t\t\t\t\tdisabled={ page === 1 }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>‹</span>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Total number of pages.\n\t\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t\t'Page <CurrenPageControl /> of %s',\n\t\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tCurrenPageControl: (\n\t\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={ page }\n\t\t\t\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t\t\t\t...Array( totalPages ),\n\t\t\t\t\t\t\t\t\t\t].map( ( e, i ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: i + 1,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: i + 1,\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( newPage ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetPage( parseInt( newPage ) )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsize={ 'compact' }\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\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</HStack>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ () => setPage( page + 1 ) }\n\t\t\t\t\t\tdisabled={ page === totalPages }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>›</span>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Last page' ) }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ () => setPage( totalPages ) }\n\t\t\t\t\t\tdisabled={ page === totalPages }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>»</span>\n\t\t\t\t\t</Button>\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":"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"}
@@ -25,13 +25,34 @@ function getPreviewUrl(fontFace) {
25
25
  return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
26
26
  }
27
27
  }
28
- function FontFaceDemo({
29
- customPreviewUrl,
30
- fontFace,
31
- text,
32
- style = {}
28
+ function getDisplayFontFace(font) {
29
+ // if this IS a font face return it
30
+ if (font.fontStyle || font.fontWeight) {
31
+ return font;
32
+ }
33
+ // if this is a font family with a collection of font faces
34
+ // return the first one that is normal and 400 OR just the first one
35
+ if (font.fontFace && font.fontFace.length) {
36
+ return font.fontFace.find(face => face.fontStyle === 'normal' && face.fontWeight === '400') || font.fontFace[0];
37
+ }
38
+ // This must be a font family with no font faces
39
+ // return a fake font face
40
+ return {
41
+ fontStyle: 'normal',
42
+ fontWeight: '400',
43
+ fontFamily: font.fontFamily,
44
+ fake: true
45
+ };
46
+ }
47
+ function FontDemo({
48
+ font,
49
+ text
33
50
  }) {
34
51
  const ref = (0, _element.useRef)(null);
52
+ const fontFace = getDisplayFontFace(font);
53
+ const style = (0, _previewStyles.getFamilyPreviewStyle)(font);
54
+ text = text || font.name;
55
+ const customPreviewUrl = font.preview;
35
56
  const [isIntersecting, setIsIntersecting] = (0, _element.useState)(false);
36
57
  const [isAssetLoaded, setIsAssetLoaded] = (0, _element.useState)(false);
37
58
  const {
@@ -44,8 +65,8 @@ function FontFaceDemo({
44
65
  fontSize: '18px',
45
66
  lineHeight: 1,
46
67
  opacity: isAssetLoaded ? '1' : '0',
47
- ...faceStyles,
48
- ...style
68
+ ...style,
69
+ ...faceStyles
49
70
  };
50
71
  (0, _element.useEffect)(() => {
51
72
  const observer = new window.IntersectionObserver(([entry]) => {
@@ -77,5 +98,5 @@ function FontFaceDemo({
77
98
  className: "font-library-modal__font-variant_demo-text"
78
99
  }, text));
79
100
  }
80
- var _default = exports.default = FontFaceDemo;
101
+ var _default = exports.default = FontDemo;
81
102
  //# sourceMappingURL=font-demo.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_context","_previewStyles","getPreviewUrl","fontFace","preview","src","Array","isArray","FontFaceDemo","customPreviewUrl","text","style","ref","useRef","isIntersecting","setIsIntersecting","useState","isAssetLoaded","setIsAssetLoaded","loadFontFaceAsset","useContext","FontLibraryContext","previewUrl","isPreviewImage","match","faceStyles","getFacePreviewStyle","textDemoStyle","fontSize","lineHeight","opacity","useEffect","observer","window","IntersectionObserver","entry","observe","current","disconnect","loadAsset","_react","createElement","loading","alt","className","__experimentalText","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-demo.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalText as Text } from '@wordpress/components';\nimport { useContext, useEffect, useState, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport { getFacePreviewStyle } from './utils/preview-styles';\n\nfunction getPreviewUrl( fontFace ) {\n\tif ( fontFace.preview ) {\n\t\treturn fontFace.preview;\n\t}\n\tif ( fontFace.src ) {\n\t\treturn Array.isArray( fontFace.src ) ? fontFace.src[ 0 ] : fontFace.src;\n\t}\n}\n\nfunction FontFaceDemo( { customPreviewUrl, fontFace, text, style = {} } ) {\n\tconst ref = useRef( null );\n\tconst [ isIntersecting, setIsIntersecting ] = useState( false );\n\tconst [ isAssetLoaded, setIsAssetLoaded ] = useState( false );\n\tconst { loadFontFaceAsset } = useContext( FontLibraryContext );\n\n\tconst previewUrl = customPreviewUrl ?? getPreviewUrl( fontFace );\n\tconst isPreviewImage =\n\t\tpreviewUrl && previewUrl.match( /\\.(png|jpg|jpeg|gif|svg)$/i );\n\n\tconst faceStyles = getFacePreviewStyle( fontFace );\n\tconst textDemoStyle = {\n\t\tfontSize: '18px',\n\t\tlineHeight: 1,\n\t\topacity: isAssetLoaded ? '1' : '0',\n\t\t...faceStyles,\n\t\t...style,\n\t};\n\n\tuseEffect( () => {\n\t\tconst observer = new window.IntersectionObserver( ( [ entry ] ) => {\n\t\t\tsetIsIntersecting( entry.isIntersecting );\n\t\t}, {} );\n\t\tobserver.observe( ref.current );\n\t\treturn () => observer.disconnect();\n\t}, [ ref ] );\n\n\tuseEffect( () => {\n\t\tconst loadAsset = async () => {\n\t\t\tif ( isIntersecting ) {\n\t\t\t\tif ( ! isPreviewImage && fontFace.src ) {\n\t\t\t\t\tawait loadFontFaceAsset( fontFace );\n\t\t\t\t}\n\t\t\t\tsetIsAssetLoaded( true );\n\t\t\t}\n\t\t};\n\t\tloadAsset();\n\t}, [ fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage ] );\n\n\treturn (\n\t\t<div ref={ ref }>\n\t\t\t{ isPreviewImage ? (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ previewUrl }\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\talt={ text }\n\t\t\t\t\tclassName=\"font-library-modal__font-variant_demo-image\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ textDemoStyle }\n\t\t\t\t\tclassName=\"font-library-modal__font-variant_demo-text\"\n\t\t\t\t>\n\t\t\t\t\t{ text }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default FontFaceDemo;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_element","_context","_previewStyles","getPreviewUrl","fontFace","preview","src","Array","isArray","getDisplayFontFace","font","fontStyle","fontWeight","length","find","face","fontFamily","fake","FontDemo","text","ref","useRef","style","getFamilyPreviewStyle","name","customPreviewUrl","isIntersecting","setIsIntersecting","useState","isAssetLoaded","setIsAssetLoaded","loadFontFaceAsset","useContext","FontLibraryContext","previewUrl","isPreviewImage","match","faceStyles","getFacePreviewStyle","textDemoStyle","fontSize","lineHeight","opacity","useEffect","observer","window","IntersectionObserver","entry","observe","current","disconnect","loadAsset","_react","createElement","loading","alt","className","__experimentalText","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-demo.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalText as Text } from '@wordpress/components';\nimport { useContext, useEffect, useState, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport {\n\tgetFacePreviewStyle,\n\tgetFamilyPreviewStyle,\n} from './utils/preview-styles';\n\nfunction getPreviewUrl( fontFace ) {\n\tif ( fontFace.preview ) {\n\t\treturn fontFace.preview;\n\t}\n\tif ( fontFace.src ) {\n\t\treturn Array.isArray( fontFace.src ) ? fontFace.src[ 0 ] : fontFace.src;\n\t}\n}\n\nfunction getDisplayFontFace( font ) {\n\t// if this IS a font face return it\n\tif ( font.fontStyle || font.fontWeight ) {\n\t\treturn font;\n\t}\n\t// if this is a font family with a collection of font faces\n\t// return the first one that is normal and 400 OR just the first one\n\tif ( font.fontFace && font.fontFace.length ) {\n\t\treturn (\n\t\t\tfont.fontFace.find(\n\t\t\t\t( face ) =>\n\t\t\t\t\tface.fontStyle === 'normal' && face.fontWeight === '400'\n\t\t\t) || font.fontFace[ 0 ]\n\t\t);\n\t}\n\t// This must be a font family with no font faces\n\t// return a fake font face\n\treturn {\n\t\tfontStyle: 'normal',\n\t\tfontWeight: '400',\n\t\tfontFamily: font.fontFamily,\n\t\tfake: true,\n\t};\n}\n\nfunction FontDemo( { font, text } ) {\n\tconst ref = useRef( null );\n\n\tconst fontFace = getDisplayFontFace( font );\n\tconst style = getFamilyPreviewStyle( font );\n\ttext = text || font.name;\n\tconst customPreviewUrl = font.preview;\n\n\tconst [ isIntersecting, setIsIntersecting ] = useState( false );\n\tconst [ isAssetLoaded, setIsAssetLoaded ] = useState( false );\n\tconst { loadFontFaceAsset } = useContext( FontLibraryContext );\n\n\tconst previewUrl = customPreviewUrl ?? getPreviewUrl( fontFace );\n\tconst isPreviewImage =\n\t\tpreviewUrl && previewUrl.match( /\\.(png|jpg|jpeg|gif|svg)$/i );\n\n\tconst faceStyles = getFacePreviewStyle( fontFace );\n\tconst textDemoStyle = {\n\t\tfontSize: '18px',\n\t\tlineHeight: 1,\n\t\topacity: isAssetLoaded ? '1' : '0',\n\t\t...style,\n\t\t...faceStyles,\n\t};\n\n\tuseEffect( () => {\n\t\tconst observer = new window.IntersectionObserver( ( [ entry ] ) => {\n\t\t\tsetIsIntersecting( entry.isIntersecting );\n\t\t}, {} );\n\t\tobserver.observe( ref.current );\n\t\treturn () => observer.disconnect();\n\t}, [ ref ] );\n\n\tuseEffect( () => {\n\t\tconst loadAsset = async () => {\n\t\t\tif ( isIntersecting ) {\n\t\t\t\tif ( ! isPreviewImage && fontFace.src ) {\n\t\t\t\t\tawait loadFontFaceAsset( fontFace );\n\t\t\t\t}\n\t\t\t\tsetIsAssetLoaded( true );\n\t\t\t}\n\t\t};\n\t\tloadAsset();\n\t}, [ fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage ] );\n\n\treturn (\n\t\t<div ref={ ref }>\n\t\t\t{ isPreviewImage ? (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ previewUrl }\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\talt={ text }\n\t\t\t\t\tclassName=\"font-library-modal__font-variant_demo-image\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ textDemoStyle }\n\t\t\t\t\tclassName=\"font-library-modal__font-variant_demo-text\"\n\t\t\t\t>\n\t\t\t\t\t{ text }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default FontDemo;\n"],"mappings":"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"}
@@ -8,6 +8,8 @@ exports.default = void 0;
8
8
  var _react = require("react");
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _components = require("@wordpress/components");
11
+ var _coreData = require("@wordpress/core-data");
12
+ var _data = require("@wordpress/data");
11
13
  var _element = require("@wordpress/element");
12
14
  var _installedFonts = _interopRequireDefault(require("./installed-fonts"));
13
15
  var _fontCollection = _interopRequireDefault(require("./font-collection"));
@@ -25,13 +27,14 @@ var _lockUnlock = require("../../../lock-unlock");
25
27
  const {
26
28
  Tabs
27
29
  } = (0, _lockUnlock.unlock)(_components.privateApis);
28
- const DEFAULT_TABS = [{
30
+ const DEFAULT_TAB = {
29
31
  id: 'installed-fonts',
30
32
  title: (0, _i18n.__)('Library')
31
- }, {
33
+ };
34
+ const UPLOAD_TAB = {
32
35
  id: 'upload-fonts',
33
36
  title: (0, _i18n.__)('Upload')
34
- }];
37
+ };
35
38
  const tabsFromCollections = collections => collections.map(({
36
39
  slug,
37
40
  name
@@ -41,13 +44,23 @@ const tabsFromCollections = collections => collections.map(({
41
44
  }));
42
45
  function FontLibraryModal({
43
46
  onRequestClose,
44
- initialTabId = 'installed-fonts'
47
+ defaultTabId = 'installed-fonts'
45
48
  }) {
46
49
  const {
47
50
  collections,
48
51
  setNotice
49
52
  } = (0, _element.useContext)(_context.FontLibraryContext);
50
- const tabs = [...DEFAULT_TABS, ...tabsFromCollections(collections || [])];
53
+ const canUserCreate = (0, _data.useSelect)(select => {
54
+ const {
55
+ canUser
56
+ } = select(_coreData.store);
57
+ return canUser('create', 'font-families');
58
+ }, []);
59
+ const tabs = [DEFAULT_TAB];
60
+ if (canUserCreate) {
61
+ tabs.push(UPLOAD_TAB);
62
+ tabs.push(...tabsFromCollections(collections || []));
63
+ }
51
64
 
52
65
  // Reset notice when new tab is selected.
53
66
  const onSelect = () => {
@@ -61,7 +74,7 @@ function FontLibraryModal({
61
74
  }, (0, _react.createElement)("div", {
62
75
  className: "font-library-modal__tabs"
63
76
  }, (0, _react.createElement)(Tabs, {
64
- initialTabId: initialTabId,
77
+ defaultTabId: defaultTabId,
65
78
  onSelect: onSelect
66
79
  }, (0, _react.createElement)(Tabs.TabList, null, tabs.map(({
67
80
  id,
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_element","_installedFonts","_interopRequireDefault","_fontCollection","_uploadFonts","_context","_lockUnlock","Tabs","unlock","componentsPrivateApis","DEFAULT_TABS","id","title","__","tabsFromCollections","collections","map","slug","name","length","FontLibraryModal","onRequestClose","initialTabId","setNotice","useContext","FontLibraryContext","tabs","onSelect","_react","createElement","Modal","isFullScreen","className","TabList","Tab","key","tabId","contents","default","TabPanel","focusable","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InstalledFonts from './installed-fonts';\nimport FontCollection from './font-collection';\nimport UploadFonts from './upload-fonts';\nimport { FontLibraryContext } from './context';\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst DEFAULT_TABS = [\n\t{\n\t\tid: 'installed-fonts',\n\t\ttitle: __( 'Library' ),\n\t},\n\t{\n\t\tid: 'upload-fonts',\n\t\ttitle: __( 'Upload' ),\n\t},\n];\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { slug, name } ) => ( {\n\t\tid: slug,\n\t\ttitle:\n\t\t\tcollections.length === 1 && slug === 'google-fonts'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tinitialTabId = 'installed-fonts',\n} ) {\n\tconst { collections, setNotice } = useContext( FontLibraryContext );\n\n\tconst tabs = [\n\t\t...DEFAULT_TABS,\n\t\t...tabsFromCollections( collections || [] ),\n\t];\n\n\t// Reset notice when new tab is selected.\n\tconst onSelect = () => {\n\t\tsetNotice( null );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Fonts' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\tisFullScreen\n\t\t\tclassName=\"font-library-modal\"\n\t\t>\n\t\t\t<div className=\"font-library-modal__tabs\">\n\t\t\t\t<Tabs initialTabId={ initialTabId } onSelect={ onSelect }>\n\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t{ tabs.map( ( { id, title } ) => (\n\t\t\t\t\t\t\t<Tabs.Tab key={ id } tabId={ id }>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( { id } ) => {\n\t\t\t\t\t\tlet contents;\n\t\t\t\t\t\tswitch ( id ) {\n\t\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\t\tcontents = <UploadFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\t\tcontents = <InstalledFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontents = <FontCollection slug={ id } />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\ttabId={ id }\n\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contents }\n\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_i18n","require","_components","_coreData","_data","_element","_installedFonts","_interopRequireDefault","_fontCollection","_uploadFonts","_context","_lockUnlock","Tabs","unlock","componentsPrivateApis","DEFAULT_TAB","id","title","__","UPLOAD_TAB","tabsFromCollections","collections","map","slug","name","length","FontLibraryModal","onRequestClose","defaultTabId","setNotice","useContext","FontLibraryContext","canUserCreate","useSelect","select","canUser","coreStore","tabs","push","onSelect","_react","createElement","Modal","isFullScreen","className","TabList","Tab","key","tabId","contents","default","TabPanel","focusable","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InstalledFonts from './installed-fonts';\nimport FontCollection from './font-collection';\nimport UploadFonts from './upload-fonts';\nimport { FontLibraryContext } from './context';\nimport { unlock } from '../../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst DEFAULT_TAB = {\n\tid: 'installed-fonts',\n\ttitle: __( 'Library' ),\n};\n\nconst UPLOAD_TAB = {\n\tid: 'upload-fonts',\n\ttitle: __( 'Upload' ),\n};\n\nconst tabsFromCollections = ( collections ) =>\n\tcollections.map( ( { slug, name } ) => ( {\n\t\tid: slug,\n\t\ttitle:\n\t\t\tcollections.length === 1 && slug === 'google-fonts'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tdefaultTabId = 'installed-fonts',\n} ) {\n\tconst { collections, setNotice } = useContext( FontLibraryContext );\n\tconst canUserCreate = useSelect( ( select ) => {\n\t\tconst { canUser } = select( coreStore );\n\t\treturn canUser( 'create', 'font-families' );\n\t}, [] );\n\n\tconst tabs = [ DEFAULT_TAB ];\n\n\tif ( canUserCreate ) {\n\t\ttabs.push( UPLOAD_TAB );\n\t\ttabs.push( ...tabsFromCollections( collections || [] ) );\n\t}\n\n\t// Reset notice when new tab is selected.\n\tconst onSelect = () => {\n\t\tsetNotice( null );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Fonts' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\tisFullScreen\n\t\t\tclassName=\"font-library-modal\"\n\t\t>\n\t\t\t<div className=\"font-library-modal__tabs\">\n\t\t\t\t<Tabs defaultTabId={ defaultTabId } onSelect={ onSelect }>\n\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t{ tabs.map( ( { id, title } ) => (\n\t\t\t\t\t\t\t<Tabs.Tab key={ id } tabId={ id }>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( { id } ) => {\n\t\t\t\t\t\tlet contents;\n\t\t\t\t\t\tswitch ( id ) {\n\t\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\t\tcontents = <UploadFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\t\tcontents = <InstalledFonts />;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontents = <FontCollection slug={ id } />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\ttabId={ id }\n\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contents }\n\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n"],"mappings":"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"}