@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
@@ -10,46 +10,55 @@ import {
10
10
  } from '@wordpress/element';
11
11
  import {
12
12
  __experimentalSpacer as Spacer,
13
- __experimentalInputControl as InputControl,
14
13
  __experimentalText as Text,
15
14
  __experimentalHStack as HStack,
15
+ __experimentalVStack as VStack,
16
+ __experimentalNavigatorProvider as NavigatorProvider,
17
+ __experimentalNavigatorScreen as NavigatorScreen,
18
+ __experimentalNavigatorToParentButton as NavigatorToParentButton,
19
+ __experimentalHeading as Heading,
20
+ Notice,
16
21
  SelectControl,
17
22
  Spinner,
18
- Icon,
19
23
  FlexItem,
20
24
  Flex,
21
25
  Button,
26
+ DropdownMenu,
27
+ SearchControl,
22
28
  } from '@wordpress/components';
23
29
  import { debounce } from '@wordpress/compose';
24
30
  import { sprintf, __, _x } from '@wordpress/i18n';
25
- import { search, closeSmall } from '@wordpress/icons';
31
+ import { moreVertical, chevronLeft } from '@wordpress/icons';
26
32
 
27
33
  /**
28
34
  * Internal dependencies
29
35
  */
30
- import TabPanelLayout from './tab-panel-layout';
31
36
  import { FontLibraryContext } from './context';
32
37
  import FontCard from './font-card';
33
38
  import filterFonts from './utils/filter-fonts';
34
- import CollectionFontDetails from './collection-font-details';
35
39
  import { toggleFont } from './utils/toggleFont';
36
- import { getFontsOutline } from './utils/fonts-outline';
40
+ import {
41
+ getFontsOutline,
42
+ isFontFontFaceInOutline,
43
+ } from './utils/fonts-outline';
37
44
  import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
38
45
  import { downloadFontFaceAssets } from './utils';
46
+ import { sortFontFaces } from './utils/sort-font-faces';
47
+ import CollectionFontVariant from './collection-font-variant';
39
48
 
40
49
  const DEFAULT_CATEGORY = {
41
50
  slug: 'all',
42
51
  name: _x( 'All', 'font categories' ),
43
52
  };
53
+
54
+ const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
55
+ const MIN_WINDOW_HEIGHT = 500;
56
+
44
57
  function FontCollection( { slug } ) {
45
58
  const requiresPermission = slug === 'google-fonts';
46
59
 
47
60
  const getGoogleFontsPermissionFromStorage = () => {
48
- return (
49
- window.localStorage.getItem(
50
- 'wp-font-library-google-fonts-permission'
51
- ) === 'true'
52
- );
61
+ return window.localStorage.getItem( LOCAL_STORAGE_ITEM ) === 'true';
53
62
  };
54
63
 
55
64
  const [ selectedFont, setSelectedFont ] = useState( null );
@@ -59,8 +68,14 @@ function FontCollection( { slug } ) {
59
68
  const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
60
69
  requiresPermission && ! getGoogleFontsPermissionFromStorage()
61
70
  );
62
- const { collections, getFontCollection, installFont, notice, setNotice } =
63
- useContext( FontLibraryContext );
71
+ const {
72
+ collections,
73
+ getFontCollection,
74
+ installFonts,
75
+ isInstalling,
76
+ notice,
77
+ setNotice,
78
+ } = useContext( FontLibraryContext );
64
79
  const selectedCollection = collections.find(
65
80
  ( collection ) => collection.slug === slug
66
81
  );
@@ -76,6 +91,11 @@ function FontCollection( { slug } ) {
76
91
  return () => window.removeEventListener( 'storage', handleStorage );
77
92
  }, [ slug, requiresPermission ] );
78
93
 
94
+ const revokeAccess = () => {
95
+ window.localStorage.setItem( LOCAL_STORAGE_ITEM, 'false' );
96
+ window.dispatchEvent( new Event( 'storage' ) );
97
+ };
98
+
79
99
  useEffect( () => {
80
100
  const fetchFontCollection = async () => {
81
101
  try {
@@ -118,7 +138,8 @@ function FontCollection( { slug } ) {
118
138
 
119
139
  // NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
120
140
  // The height of each font family item is 61px.
121
- const pageSize = Math.floor( ( window.innerHeight - 417 ) / 61 );
141
+ const windowHeight = Math.max( window.innerHeight, MIN_WINDOW_HEIGHT );
142
+ const pageSize = Math.floor( ( windowHeight - 417 ) / 61 );
122
143
  const totalPages = Math.ceil( fonts.length / pageSize );
123
144
  const itemsStart = ( page - 1 ) * pageSize;
124
145
  const itemsLimit = page * pageSize;
@@ -141,15 +162,6 @@ function FontCollection( { slug } ) {
141
162
  setPage( 1 );
142
163
  };
143
164
 
144
- const resetSearch = () => {
145
- setFilters( { ...filters, search: '' } );
146
- setPage( 1 );
147
- };
148
-
149
- const handleUnselectFont = () => {
150
- setSelectedFont( null );
151
- };
152
-
153
165
  const handleToggleVariant = ( font, face ) => {
154
166
  const newFontsToInstall = toggleFont( font, face, fontsToInstall );
155
167
  setFontsToInstall( newFontsToInstall );
@@ -191,7 +203,7 @@ function FontCollection( { slug } ) {
191
203
  }
192
204
 
193
205
  try {
194
- await installFont( fontFamily );
206
+ await installFonts( [ fontFamily ] );
195
207
  setNotice( {
196
208
  type: 'success',
197
209
  message: __( 'Fonts were installed successfully.' ),
@@ -205,212 +217,279 @@ function FontCollection( { slug } ) {
205
217
  resetFontsToInstall();
206
218
  };
207
219
 
208
- let footerComponent = null;
209
- if ( selectedFont ) {
210
- footerComponent = (
211
- <InstallFooter
212
- handleInstall={ handleInstall }
213
- isDisabled={ fontsToInstall.length === 0 }
214
- />
215
- );
216
- } else if ( ! renderConfirmDialog && totalPages > 1 ) {
217
- footerComponent = (
218
- <PaginationFooter
219
- page={ page }
220
- totalPages={ totalPages }
221
- setPage={ setPage }
220
+ const getSortedFontFaces = ( fontFamily ) => {
221
+ if ( ! fontFamily ) {
222
+ return [];
223
+ }
224
+ if ( ! fontFamily.fontFace || ! fontFamily.fontFace.length ) {
225
+ return [
226
+ {
227
+ fontFamily: fontFamily.fontFamily,
228
+ fontStyle: 'normal',
229
+ fontWeight: '400',
230
+ },
231
+ ];
232
+ }
233
+ return sortFontFaces( fontFamily.fontFace );
234
+ };
235
+
236
+ if ( renderConfirmDialog ) {
237
+ return <GoogleFontsConfirmDialog />;
238
+ }
239
+
240
+ const ActionsComponent = () => {
241
+ if ( slug !== 'google-fonts' || renderConfirmDialog || selectedFont ) {
242
+ return null;
243
+ }
244
+ return (
245
+ <DropdownMenu
246
+ icon={ moreVertical }
247
+ label={ __( 'Actions' ) }
248
+ popoverProps={ {
249
+ position: 'bottom left',
250
+ } }
251
+ controls={ [
252
+ {
253
+ title: __( 'Revoke access to Google Fonts' ),
254
+ onClick: revokeAccess,
255
+ },
256
+ ] }
222
257
  />
223
258
  );
224
- }
259
+ };
225
260
 
226
261
  return (
227
- <TabPanelLayout
228
- title={
229
- ! selectedFont ? selectedCollection.name : selectedFont.name
230
- }
231
- description={
232
- ! selectedFont
233
- ? selectedCollection.description
234
- : __( 'Select font variants to install.' )
235
- }
236
- notice={ notice }
237
- handleBack={ !! selectedFont && handleUnselectFont }
238
- footer={ footerComponent }
239
- >
240
- { renderConfirmDialog && (
241
- <>
242
- <Spacer margin={ 8 } />
243
- <GoogleFontsConfirmDialog />
244
- </>
245
- ) }
262
+ <div className="font-library-modal__tabpanel-layout">
263
+ <NavigatorProvider
264
+ initialPath="/"
265
+ className="font-library-modal__tabpanel-layout"
266
+ >
267
+ <NavigatorScreen path="/">
268
+ <HStack justify="space-between">
269
+ <VStack>
270
+ <Heading level={ 2 } size={ 13 }>
271
+ { selectedCollection.name }
272
+ </Heading>
273
+ <Text>{ selectedCollection.description }</Text>
274
+ </VStack>
275
+ <ActionsComponent />
276
+ </HStack>
277
+ <Spacer margin={ 4 } />
278
+ <Flex>
279
+ <FlexItem>
280
+ <SearchControl
281
+ className="font-library-modal__search"
282
+ value={ filters.search }
283
+ placeholder={ __( 'Font name…' ) }
284
+ label={ __( 'Search' ) }
285
+ onChange={ debouncedUpdateSearchInput }
286
+ __nextHasNoMarginBottom
287
+ hideLabelFromVision={ false }
288
+ />
289
+ </FlexItem>
290
+ <FlexItem>
291
+ <SelectControl
292
+ label={ __( 'Category' ) }
293
+ value={ filters.category }
294
+ onChange={ handleCategoryFilter }
295
+ >
296
+ { categories &&
297
+ categories.map( ( category ) => (
298
+ <option
299
+ value={ category.slug }
300
+ key={ category.slug }
301
+ >
302
+ { category.name }
303
+ </option>
304
+ ) ) }
305
+ </SelectControl>
306
+ </FlexItem>
307
+ </Flex>
308
+
309
+ <Spacer margin={ 4 } />
310
+
311
+ { ! selectedCollection?.font_families && ! notice && (
312
+ <Spinner />
313
+ ) }
314
+
315
+ { !! selectedCollection?.font_families?.length &&
316
+ ! fonts.length && (
317
+ <Text>
318
+ { __(
319
+ 'No fonts found. Try with a different search term'
320
+ ) }
321
+ </Text>
322
+ ) }
246
323
 
247
- { ! renderConfirmDialog && ! selectedFont && (
248
- <Flex>
249
- <FlexItem>
250
- <InputControl
251
- value={ filters.search }
252
- placeholder={ __( 'Font name…' ) }
253
- label={ __( 'Search' ) }
254
- onChange={ debouncedUpdateSearchInput }
255
- prefix={ <Icon icon={ search } /> }
256
- suffix={
257
- filters?.search ? (
258
- <Icon
259
- icon={ closeSmall }
260
- onClick={ resetSearch }
261
- />
262
- ) : null
263
- }
324
+ <div className="font-library-modal__fonts-grid__main">
325
+ { items.map( ( font ) => (
326
+ <FontCard
327
+ key={ font.font_family_settings.slug }
328
+ font={ font.font_family_settings }
329
+ navigatorPath={ '/fontFamily' }
330
+ onClick={ () => {
331
+ setSelectedFont(
332
+ font.font_family_settings
333
+ );
334
+ } }
335
+ />
336
+ ) ) }
337
+ </div>
338
+ </NavigatorScreen>
339
+
340
+ <NavigatorScreen path="/fontFamily">
341
+ <Flex justify="flex-start">
342
+ <NavigatorToParentButton
343
+ icon={ chevronLeft }
344
+ size="small"
345
+ onClick={ () => {
346
+ setSelectedFont( null );
347
+ } }
348
+ aria-label={ __( 'Navigate to the previous view' ) }
264
349
  />
265
- </FlexItem>
266
- <FlexItem>
267
- <SelectControl
268
- label={ __( 'Category' ) }
269
- value={ filters.category }
270
- onChange={ handleCategoryFilter }
350
+ <Heading
351
+ level={ 2 }
352
+ size={ 13 }
353
+ className="edit-site-global-styles-header"
271
354
  >
272
- { categories &&
273
- categories.map( ( category ) => (
274
- <option
275
- value={ category.slug }
276
- key={ category.slug }
277
- >
278
- { category.name }
279
- </option>
280
- ) ) }
281
- </SelectControl>
282
- </FlexItem>
355
+ { selectedFont?.name }
356
+ </Heading>
357
+ </Flex>
358
+ { notice && (
359
+ <>
360
+ <Spacer margin={ 1 } />
361
+ <Notice
362
+ status={ notice.type }
363
+ onRemove={ () => setNotice( null ) }
364
+ >
365
+ { notice.message }
366
+ </Notice>
367
+ <Spacer margin={ 1 } />
368
+ </>
369
+ ) }
370
+ <Spacer margin={ 4 } />
371
+ <Text> { __( 'Select font variants to install.' ) } </Text>
372
+ <Spacer margin={ 4 } />
373
+ <VStack spacing={ 0 }>
374
+ <Spacer margin={ 8 } />
375
+ { getSortedFontFaces( selectedFont ).map(
376
+ ( face, i ) => (
377
+ <CollectionFontVariant
378
+ font={ selectedFont }
379
+ face={ face }
380
+ key={ `face${ i }` }
381
+ handleToggleVariant={ handleToggleVariant }
382
+ selected={ isFontFontFaceInOutline(
383
+ selectedFont.slug,
384
+ selectedFont.fontFace ? face : null, // If the font has no fontFace, we want to check if the font is in the outline
385
+ fontToInstallOutline
386
+ ) }
387
+ />
388
+ )
389
+ ) }
390
+ </VStack>
391
+ <Spacer margin={ 16 } />
392
+ </NavigatorScreen>
393
+ </NavigatorProvider>
394
+
395
+ { selectedFont && (
396
+ <Flex
397
+ justify="flex-end"
398
+ className="font-library-modal__tabpanel-layout__footer"
399
+ >
400
+ <Button
401
+ variant="primary"
402
+ onClick={ handleInstall }
403
+ isBusy={ isInstalling }
404
+ disabled={ fontsToInstall.length === 0 || isInstalling }
405
+ __experimentalIsFocusable
406
+ >
407
+ { __( 'Install' ) }
408
+ </Button>
283
409
  </Flex>
284
410
  ) }
285
411
 
286
- <Spacer margin={ 4 } />
287
- { ! renderConfirmDialog &&
288
- ! selectedCollection?.font_families &&
289
- ! notice && <Spinner /> }
290
-
291
- { ! renderConfirmDialog &&
292
- !! selectedCollection?.font_families?.length &&
293
- ! fonts.length && (
294
- <Text>
295
- { __(
296
- 'No fonts found. Try with a different search term'
412
+ { ! selectedFont && (
413
+ <Flex
414
+ justify="center"
415
+ className="font-library-modal__tabpanel-layout__footer"
416
+ >
417
+ <Button
418
+ label={ __( 'First page' ) }
419
+ size="compact"
420
+ onClick={ () => setPage( 1 ) }
421
+ disabled={ page === 1 }
422
+ __experimentalIsFocusable
423
+ >
424
+ <span>«</span>
425
+ </Button>
426
+ <Button
427
+ label={ __( 'Previous page' ) }
428
+ size="compact"
429
+ onClick={ () => setPage( page - 1 ) }
430
+ disabled={ page === 1 }
431
+ __experimentalIsFocusable
432
+ >
433
+ <span>‹</span>
434
+ </Button>
435
+ <HStack
436
+ justify="flex-start"
437
+ expanded={ false }
438
+ spacing={ 2 }
439
+ >
440
+ { createInterpolateElement(
441
+ sprintf(
442
+ // translators: %s: Total number of pages.
443
+ _x(
444
+ 'Page <CurrenPageControl /> of %s',
445
+ 'paging'
446
+ ),
447
+ totalPages
448
+ ),
449
+ {
450
+ CurrenPageControl: (
451
+ <SelectControl
452
+ aria-label={ __( 'Current page' ) }
453
+ value={ page }
454
+ options={ [
455
+ ...Array( totalPages ),
456
+ ].map( ( e, i ) => {
457
+ return {
458
+ label: i + 1,
459
+ value: i + 1,
460
+ };
461
+ } ) }
462
+ onChange={ ( newPage ) =>
463
+ setPage( parseInt( newPage ) )
464
+ }
465
+ size={ 'compact' }
466
+ __nextHasNoMarginBottom
467
+ />
468
+ ),
469
+ }
297
470
  ) }
298
- </Text>
299
- ) }
300
-
301
- { ! renderConfirmDialog && selectedFont && (
302
- <CollectionFontDetails
303
- font={ selectedFont }
304
- handleToggleVariant={ handleToggleVariant }
305
- fontToInstallOutline={ fontToInstallOutline }
306
- />
307
- ) }
308
-
309
- { ! renderConfirmDialog && ! selectedFont && (
310
- <div className="font-library-modal__fonts-grid__main">
311
- { items.map( ( font ) => (
312
- <FontCard
313
- key={ font.font_family_settings.slug }
314
- font={ font.font_family_settings }
315
- onClick={ () => {
316
- setSelectedFont( font.font_family_settings );
317
- } }
318
- />
319
- ) ) }
320
- </div>
471
+ </HStack>
472
+ <Button
473
+ label={ __( 'Next page' ) }
474
+ size="compact"
475
+ onClick={ () => setPage( page + 1 ) }
476
+ disabled={ page === totalPages }
477
+ __experimentalIsFocusable
478
+ >
479
+ <span>›</span>
480
+ </Button>
481
+ <Button
482
+ label={ __( 'Last page' ) }
483
+ size="compact"
484
+ onClick={ () => setPage( totalPages ) }
485
+ disabled={ page === totalPages }
486
+ __experimentalIsFocusable
487
+ >
488
+ <span>»</span>
489
+ </Button>
490
+ </Flex>
321
491
  ) }
322
- </TabPanelLayout>
323
- );
324
- }
325
-
326
- function PaginationFooter( { page, totalPages, setPage } ) {
327
- return (
328
- <Flex justify="center">
329
- <Button
330
- label={ __( 'First page' ) }
331
- size="compact"
332
- onClick={ () => setPage( 1 ) }
333
- disabled={ page === 1 }
334
- __experimentalIsFocusable
335
- >
336
- <span>«</span>
337
- </Button>
338
- <Button
339
- label={ __( 'Previous page' ) }
340
- size="compact"
341
- onClick={ () => setPage( page - 1 ) }
342
- disabled={ page === 1 }
343
- __experimentalIsFocusable
344
- >
345
- <span>‹</span>
346
- </Button>
347
- <HStack justify="flex-start" expanded={ false } spacing={ 2 }>
348
- { createInterpolateElement(
349
- sprintf(
350
- // translators: %s: Total number of pages.
351
- _x( 'Page <CurrenPageControl /> of %s', 'paging' ),
352
- totalPages
353
- ),
354
- {
355
- CurrenPageControl: (
356
- <SelectControl
357
- aria-label={ __( 'Current page' ) }
358
- value={ page }
359
- options={ [ ...Array( totalPages ) ].map(
360
- ( e, i ) => {
361
- return {
362
- label: i + 1,
363
- value: i + 1,
364
- };
365
- }
366
- ) }
367
- onChange={ ( newPage ) =>
368
- setPage( parseInt( newPage ) )
369
- }
370
- size={ 'compact' }
371
- __nextHasNoMarginBottom
372
- />
373
- ),
374
- }
375
- ) }
376
- </HStack>
377
- <Button
378
- label={ __( 'Next page' ) }
379
- size="compact"
380
- onClick={ () => setPage( page + 1 ) }
381
- disabled={ page === totalPages }
382
- __experimentalIsFocusable
383
- >
384
- <span>›</span>
385
- </Button>
386
- <Button
387
- label={ __( 'Last page' ) }
388
- size="compact"
389
- onClick={ () => setPage( totalPages ) }
390
- disabled={ page === totalPages }
391
- __experimentalIsFocusable
392
- >
393
- <span>»</span>
394
- </Button>
395
- </Flex>
396
- );
397
- }
398
-
399
- function InstallFooter( { handleInstall, isDisabled } ) {
400
- const { isInstalling } = useContext( FontLibraryContext );
401
-
402
- return (
403
- <Flex justify="flex-end">
404
- <Button
405
- variant="primary"
406
- onClick={ handleInstall }
407
- isBusy={ isInstalling }
408
- disabled={ isDisabled || isInstalling }
409
- __experimentalIsFocusable
410
- >
411
- { __( 'Install' ) }
412
- </Button>
413
- </Flex>
492
+ </div>
414
493
  );
415
494
  }
416
495
 
@@ -8,7 +8,10 @@ import { useContext, useEffect, useState, useRef } from '@wordpress/element';
8
8
  * Internal dependencies
9
9
  */
10
10
  import { FontLibraryContext } from './context';
11
- import { getFacePreviewStyle } from './utils/preview-styles';
11
+ import {
12
+ getFacePreviewStyle,
13
+ getFamilyPreviewStyle,
14
+ } from './utils/preview-styles';
12
15
 
13
16
  function getPreviewUrl( fontFace ) {
14
17
  if ( fontFace.preview ) {
@@ -19,8 +22,39 @@ function getPreviewUrl( fontFace ) {
19
22
  }
20
23
  }
21
24
 
22
- function FontFaceDemo( { customPreviewUrl, fontFace, text, style = {} } ) {
25
+ function getDisplayFontFace( font ) {
26
+ // if this IS a font face return it
27
+ if ( font.fontStyle || font.fontWeight ) {
28
+ return font;
29
+ }
30
+ // if this is a font family with a collection of font faces
31
+ // return the first one that is normal and 400 OR just the first one
32
+ if ( font.fontFace && font.fontFace.length ) {
33
+ return (
34
+ font.fontFace.find(
35
+ ( face ) =>
36
+ face.fontStyle === 'normal' && face.fontWeight === '400'
37
+ ) || font.fontFace[ 0 ]
38
+ );
39
+ }
40
+ // This must be a font family with no font faces
41
+ // return a fake font face
42
+ return {
43
+ fontStyle: 'normal',
44
+ fontWeight: '400',
45
+ fontFamily: font.fontFamily,
46
+ fake: true,
47
+ };
48
+ }
49
+
50
+ function FontDemo( { font, text } ) {
23
51
  const ref = useRef( null );
52
+
53
+ const fontFace = getDisplayFontFace( font );
54
+ const style = getFamilyPreviewStyle( font );
55
+ text = text || font.name;
56
+ const customPreviewUrl = font.preview;
57
+
24
58
  const [ isIntersecting, setIsIntersecting ] = useState( false );
25
59
  const [ isAssetLoaded, setIsAssetLoaded ] = useState( false );
26
60
  const { loadFontFaceAsset } = useContext( FontLibraryContext );
@@ -34,8 +68,8 @@ function FontFaceDemo( { customPreviewUrl, fontFace, text, style = {} } ) {
34
68
  fontSize: '18px',
35
69
  lineHeight: 1,
36
70
  opacity: isAssetLoaded ? '1' : '0',
37
- ...faceStyles,
38
71
  ...style,
72
+ ...faceStyles,
39
73
  };
40
74
 
41
75
  useEffect( () => {
@@ -79,4 +113,4 @@ function FontFaceDemo( { customPreviewUrl, fontFace, text, style = {} } ) {
79
113
  );
80
114
  }
81
115
 
82
- export default FontFaceDemo;
116
+ export default FontDemo;