@wordpress/edit-site 5.18.0 → 5.19.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 (427) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +62 -1
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-template/index.js +3 -2
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +6 -1
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +6 -1
  9. package/build/components/add-new-template/utils.js.map +1 -1
  10. package/build/components/app/index.js +2 -7
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/back-button.js +3 -2
  13. package/build/components/block-editor/back-button.js.map +1 -1
  14. package/build/components/block-editor/editor-canvas.js +20 -16
  15. package/build/components/block-editor/editor-canvas.js.map +1 -1
  16. package/build/components/block-editor/site-editor-canvas.js +1 -3
  17. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  18. package/build/components/block-editor/use-site-editor-settings.js +8 -4
  19. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  20. package/build/components/canvas-loader/index.js +18 -1
  21. package/build/components/canvas-loader/index.js.map +1 -1
  22. package/build/components/editor/index.js +3 -8
  23. package/build/components/editor/index.js.map +1 -1
  24. package/build/components/global-styles/dimensions-panel.js +5 -4
  25. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  26. package/build/components/global-styles/font-families.js +68 -0
  27. package/build/components/global-styles/font-families.js.map +1 -0
  28. package/build/components/global-styles/font-family-item.js +47 -0
  29. package/build/components/global-styles/font-family-item.js.map +1 -0
  30. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +31 -0
  31. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  32. package/build/components/global-styles/font-library-modal/context.js +285 -0
  33. package/build/components/global-styles/font-library-modal/context.js.map +1 -0
  34. package/build/components/global-styles/font-library-modal/font-card.js +58 -0
  35. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -0
  36. package/build/components/global-styles/font-library-modal/font-demo.js +69 -0
  37. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  38. package/build/components/global-styles/font-library-modal/font-variant.js +51 -0
  39. package/build/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  40. package/build/components/global-styles/font-library-modal/fonts-grid.js +54 -0
  41. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  42. package/build/components/global-styles/font-library-modal/index.js +47 -0
  43. package/build/components/global-styles/font-library-modal/index.js.map +1 -0
  44. package/build/components/global-styles/font-library-modal/installed-fonts.js +128 -0
  45. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  46. package/build/components/global-styles/font-library-modal/library-font-card.js +44 -0
  47. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  48. package/build/components/global-styles/font-library-modal/library-font-details.js +43 -0
  49. package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  50. package/build/components/global-styles/font-library-modal/library-font-variant.js +59 -0
  51. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  52. package/build/components/global-styles/font-library-modal/local-fonts.js +143 -0
  53. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  54. package/build/components/global-styles/font-library-modal/resolvers.js +37 -0
  55. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  56. package/build/components/global-styles/font-library-modal/tab-layout.js +45 -0
  57. package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  58. package/build/components/global-styles/font-library-modal/utils/constants.js +37 -0
  59. package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  60. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  61. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  62. package/build/components/global-styles/font-library-modal/utils/index.js +205 -0
  63. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  64. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js +22 -0
  65. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  66. package/build/components/global-styles/font-library-modal/utils/toggleFont.js +92 -0
  67. package/build/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  68. package/build/components/global-styles/global-styles-provider.js +7 -12
  69. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  70. package/build/components/global-styles/screen-block.js +34 -21
  71. package/build/components/global-styles/screen-block.js.map +1 -1
  72. package/build/components/global-styles/screen-revisions/index.js +1 -3
  73. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  74. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  75. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  76. package/build/components/global-styles/screen-typography.js +4 -72
  77. package/build/components/global-styles/screen-typography.js.map +1 -1
  78. package/build/components/global-styles/style-variations-container.js +3 -5
  79. package/build/components/global-styles/style-variations-container.js.map +1 -1
  80. package/build/components/global-styles/typogrphy-elements.js +96 -0
  81. package/build/components/global-styles/typogrphy-elements.js.map +1 -0
  82. package/build/components/page-patterns/duplicate-menu-item.js +52 -16
  83. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  84. package/build/components/page-patterns/grid-item.js +46 -20
  85. package/build/components/page-patterns/grid-item.js.map +1 -1
  86. package/build/components/page-patterns/header.js +3 -7
  87. package/build/components/page-patterns/header.js.map +1 -1
  88. package/build/components/page-patterns/index.js +3 -3
  89. package/build/components/page-patterns/index.js.map +1 -1
  90. package/build/components/page-patterns/patterns-list.js +7 -7
  91. package/build/components/page-patterns/patterns-list.js.map +1 -1
  92. package/build/components/page-patterns/rename-menu-item.js +6 -5
  93. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  94. package/build/components/page-patterns/search-items.js +8 -2
  95. package/build/components/page-patterns/search-items.js.map +1 -1
  96. package/build/components/page-patterns/use-patterns.js +53 -27
  97. package/build/components/page-patterns/use-patterns.js.map +1 -1
  98. package/build/components/page-patterns/utils.js +1 -20
  99. package/build/components/page-patterns/utils.js.map +1 -1
  100. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +33 -24
  101. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  102. package/build/components/sidebar-edit-mode/page-panels/hooks.js +64 -0
  103. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  104. package/build/components/sidebar-edit-mode/page-panels/index.js +1 -4
  105. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  107. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  108. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +56 -0
  109. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  110. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +91 -0
  111. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  112. package/build/components/sidebar-edit-mode/template-panel/index.js +11 -9
  113. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  114. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +6 -4
  115. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  116. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +211 -0
  117. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  118. package/build/components/sidebar-navigation-screen/index.js +6 -4
  119. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  120. package/build/components/sidebar-navigation-screen-details-footer/index.js +32 -4
  121. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  122. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  123. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  124. package/build/components/sidebar-navigation-screen-global-styles/index.js +4 -31
  125. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  126. package/build/components/sidebar-navigation-screen-page/index.js +3 -3
  127. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  128. package/build/components/sidebar-navigation-screen-pattern/index.js +18 -8
  129. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  131. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-patterns/index.js +7 -35
  133. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  135. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  137. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  139. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-templates/index.js +1 -1
  141. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  142. package/build/components/template-actions/index.js +7 -4
  143. package/build/components/template-actions/index.js.map +1 -1
  144. package/build/components/template-actions/rename-menu-item.js +3 -2
  145. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  146. package/build/components/welcome-guide/styles.js +2 -2
  147. package/build/components/welcome-guide/styles.js.map +1 -1
  148. package/build/hooks/push-changes-to-global-styles/index.js +5 -37
  149. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  150. package/build/store/actions.js +29 -6
  151. package/build/store/actions.js.map +1 -1
  152. package/build/utils/constants.js +45 -2
  153. package/build/utils/constants.js.map +1 -1
  154. package/build/utils/is-template-removable.js +6 -1
  155. package/build/utils/is-template-removable.js.map +1 -1
  156. package/build/utils/is-template-revertable.js +6 -1
  157. package/build/utils/is-template-revertable.js.map +1 -1
  158. package/build-module/components/add-new-pattern/index.js +66 -5
  159. package/build-module/components/add-new-pattern/index.js.map +1 -1
  160. package/build-module/components/add-new-template/index.js +3 -2
  161. package/build-module/components/add-new-template/index.js.map +1 -1
  162. package/build-module/components/add-new-template/new-template.js +6 -1
  163. package/build-module/components/add-new-template/new-template.js.map +1 -1
  164. package/build-module/components/add-new-template/utils.js +6 -1
  165. package/build-module/components/add-new-template/utils.js.map +1 -1
  166. package/build-module/components/app/index.js +2 -7
  167. package/build-module/components/app/index.js.map +1 -1
  168. package/build-module/components/block-editor/back-button.js +3 -2
  169. package/build-module/components/block-editor/back-button.js.map +1 -1
  170. package/build-module/components/block-editor/editor-canvas.js +21 -17
  171. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  172. package/build-module/components/block-editor/site-editor-canvas.js +3 -5
  173. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js +8 -4
  175. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  176. package/build-module/components/canvas-loader/index.js +18 -1
  177. package/build-module/components/canvas-loader/index.js.map +1 -1
  178. package/build-module/components/editor/index.js +3 -8
  179. package/build-module/components/editor/index.js.map +1 -1
  180. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  181. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  182. package/build-module/components/global-styles/font-families.js +58 -0
  183. package/build-module/components/global-styles/font-families.js.map +1 -0
  184. package/build-module/components/global-styles/font-family-item.js +40 -0
  185. package/build-module/components/global-styles/font-family-item.js.map +1 -0
  186. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +23 -0
  187. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  188. package/build-module/components/global-styles/font-library-modal/context.js +276 -0
  189. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -0
  190. package/build-module/components/global-styles/font-library-modal/font-card.js +49 -0
  191. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -0
  192. package/build-module/components/global-styles/font-library-modal/font-demo.js +62 -0
  193. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  194. package/build-module/components/global-styles/font-library-modal/font-variant.js +42 -0
  195. package/build-module/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  196. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +47 -0
  197. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  198. package/build-module/components/global-styles/font-library-modal/index.js +38 -0
  199. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -0
  200. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +120 -0
  201. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  202. package/build-module/components/global-styles/font-library-modal/library-font-card.js +36 -0
  203. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  204. package/build-module/components/global-styles/font-library-modal/library-font-details.js +34 -0
  205. package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  206. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +50 -0
  207. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  208. package/build-module/components/global-styles/font-library-modal/local-fonts.js +135 -0
  209. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  210. package/build-module/components/global-styles/font-library-modal/resolvers.js +28 -0
  211. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  212. package/build-module/components/global-styles/font-library-modal/tab-layout.js +37 -0
  213. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  214. package/build-module/components/global-styles/font-library-modal/utils/constants.js +26 -0
  215. package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  216. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +52 -0
  217. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  218. package/build-module/components/global-styles/font-library-modal/utils/index.js +190 -0
  219. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  220. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js +16 -0
  221. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  222. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js +86 -0
  223. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  224. package/build-module/components/global-styles/global-styles-provider.js +7 -12
  225. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  226. package/build-module/components/global-styles/screen-block.js +34 -21
  227. package/build-module/components/global-styles/screen-block.js.map +1 -1
  228. package/build-module/components/global-styles/screen-revisions/index.js +1 -3
  229. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  230. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  231. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  232. package/build-module/components/global-styles/screen-typography.js +6 -74
  233. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  234. package/build-module/components/global-styles/style-variations-container.js +3 -5
  235. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  236. package/build-module/components/global-styles/typogrphy-elements.js +87 -0
  237. package/build-module/components/global-styles/typogrphy-elements.js.map +1 -0
  238. package/build-module/components/page-patterns/duplicate-menu-item.js +51 -16
  239. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  240. package/build-module/components/page-patterns/grid-item.js +47 -21
  241. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  242. package/build-module/components/page-patterns/header.js +3 -7
  243. package/build-module/components/page-patterns/header.js.map +1 -1
  244. package/build-module/components/page-patterns/index.js +3 -3
  245. package/build-module/components/page-patterns/index.js.map +1 -1
  246. package/build-module/components/page-patterns/patterns-list.js +7 -7
  247. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  248. package/build-module/components/page-patterns/rename-menu-item.js +6 -5
  249. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  250. package/build-module/components/page-patterns/search-items.js +8 -2
  251. package/build-module/components/page-patterns/search-items.js.map +1 -1
  252. package/build-module/components/page-patterns/use-patterns.js +54 -28
  253. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  254. package/build-module/components/page-patterns/utils.js +0 -11
  255. package/build-module/components/page-patterns/utils.js.map +1 -1
  256. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +34 -27
  257. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  258. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +54 -0
  259. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  260. package/build-module/components/sidebar-edit-mode/page-panels/index.js +1 -4
  261. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  262. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  263. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  264. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +49 -0
  265. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  266. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +85 -0
  267. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  268. package/build-module/components/sidebar-edit-mode/template-panel/index.js +12 -10
  269. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  270. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +8 -6
  271. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  272. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +202 -0
  273. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  274. package/build-module/components/sidebar-navigation-screen/index.js +6 -4
  275. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  276. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +32 -5
  277. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  278. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  279. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  280. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -33
  281. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  282. package/build-module/components/sidebar-navigation-screen-page/index.js +3 -3
  283. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  284. package/build-module/components/sidebar-navigation-screen-pattern/index.js +19 -9
  285. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  286. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  287. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  288. package/build-module/components/sidebar-navigation-screen-patterns/index.js +10 -38
  289. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  290. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  291. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  292. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -2
  293. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  294. package/build-module/components/sidebar-navigation-screen-template/index.js +2 -2
  295. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  296. package/build-module/components/sidebar-navigation-screen-templates/index.js +1 -1
  297. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  298. package/build-module/components/template-actions/index.js +7 -4
  299. package/build-module/components/template-actions/index.js.map +1 -1
  300. package/build-module/components/template-actions/rename-menu-item.js +3 -2
  301. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  302. package/build-module/components/welcome-guide/styles.js +2 -2
  303. package/build-module/components/welcome-guide/styles.js.map +1 -1
  304. package/build-module/hooks/push-changes-to-global-styles/index.js +5 -37
  305. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  306. package/build-module/store/actions.js +30 -7
  307. package/build-module/store/actions.js.map +1 -1
  308. package/build-module/utils/constants.js +35 -1
  309. package/build-module/utils/constants.js.map +1 -1
  310. package/build-module/utils/is-template-removable.js +6 -1
  311. package/build-module/utils/is-template-removable.js.map +1 -1
  312. package/build-module/utils/is-template-revertable.js +6 -1
  313. package/build-module/utils/is-template-revertable.js.map +1 -1
  314. package/build-style/style-rtl.css +244 -37
  315. package/build-style/style.css +244 -37
  316. package/lib/inflate.js +4082 -0
  317. package/lib/lib-font.browser.js +3831 -0
  318. package/lib/unbrotli.js +2679 -0
  319. package/package.json +40 -40
  320. package/src/components/add-new-pattern/index.js +83 -5
  321. package/src/components/add-new-template/index.js +3 -2
  322. package/src/components/add-new-template/new-template.js +6 -1
  323. package/src/components/add-new-template/utils.js +12 -3
  324. package/src/components/app/index.js +9 -12
  325. package/src/components/block-editor/back-button.js +6 -2
  326. package/src/components/block-editor/editor-canvas.js +31 -19
  327. package/src/components/block-editor/site-editor-canvas.js +2 -10
  328. package/src/components/block-editor/style.scss +88 -1
  329. package/src/components/block-editor/use-site-editor-settings.js +26 -19
  330. package/src/components/canvas-loader/index.js +12 -1
  331. package/src/components/canvas-loader/style.scss +1 -1
  332. package/src/components/editor/index.js +3 -8
  333. package/src/components/global-styles/dimensions-panel.js +8 -4
  334. package/src/components/global-styles/font-families.js +71 -0
  335. package/src/components/global-styles/font-family-item.js +44 -0
  336. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +33 -0
  337. package/src/components/global-styles/font-library-modal/context.js +347 -0
  338. package/src/components/global-styles/font-library-modal/font-card.js +70 -0
  339. package/src/components/global-styles/font-library-modal/font-demo.js +57 -0
  340. package/src/components/global-styles/font-library-modal/font-variant.js +53 -0
  341. package/src/components/global-styles/font-library-modal/fonts-grid.js +55 -0
  342. package/src/components/global-styles/font-library-modal/index.js +42 -0
  343. package/src/components/global-styles/font-library-modal/installed-fonts.js +174 -0
  344. package/src/components/global-styles/font-library-modal/library-font-card.js +40 -0
  345. package/src/components/global-styles/font-library-modal/library-font-details.js +46 -0
  346. package/src/components/global-styles/font-library-modal/library-font-variant.js +54 -0
  347. package/src/components/global-styles/font-library-modal/local-fonts.js +160 -0
  348. package/src/components/global-styles/font-library-modal/resolvers.js +29 -0
  349. package/src/components/global-styles/font-library-modal/style.scss +113 -0
  350. package/src/components/global-styles/font-library-modal/tab-layout.js +50 -0
  351. package/src/components/global-styles/font-library-modal/utils/constants.js +31 -0
  352. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  353. package/src/components/global-styles/font-library-modal/utils/index.js +213 -0
  354. package/src/components/global-styles/font-library-modal/utils/make-families-from-faces.js +15 -0
  355. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +53 -0
  356. package/src/components/global-styles/font-library-modal/utils/test/getFontFaceVariantName.spec.js +30 -0
  357. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +240 -0
  358. package/src/components/global-styles/font-library-modal/utils/test/getPreviewStyle.spec.js +121 -0
  359. package/src/components/global-styles/font-library-modal/utils/test/isUrlEncoded.spec.js +31 -0
  360. package/src/components/global-styles/font-library-modal/utils/test/makeFamiliesFromFaces.spec.js +57 -0
  361. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +62 -0
  362. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFaces.spec.js +56 -0
  363. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFamilies.spec.js +108 -0
  364. package/src/components/global-styles/font-library-modal/utils/test/setUIValuesNeeded.spec.js +41 -0
  365. package/src/components/global-styles/font-library-modal/utils/test/toggleFont.spec.js +141 -0
  366. package/src/components/global-styles/font-library-modal/utils/toggleFont.js +90 -0
  367. package/src/components/global-styles/global-styles-provider.js +2 -7
  368. package/src/components/global-styles/screen-block.js +42 -20
  369. package/src/components/global-styles/screen-revisions/index.js +0 -2
  370. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  371. package/src/components/global-styles/screen-typography.js +7 -95
  372. package/src/components/global-styles/style-variations-container.js +0 -2
  373. package/src/components/global-styles/typogrphy-elements.js +110 -0
  374. package/src/components/list/style.scss +2 -0
  375. package/src/components/page-patterns/duplicate-menu-item.js +63 -20
  376. package/src/components/page-patterns/grid-item.js +77 -30
  377. package/src/components/page-patterns/header.js +3 -12
  378. package/src/components/page-patterns/index.js +3 -3
  379. package/src/components/page-patterns/patterns-list.js +7 -7
  380. package/src/components/page-patterns/rename-menu-item.js +18 -7
  381. package/src/components/page-patterns/search-items.js +14 -2
  382. package/src/components/page-patterns/style.scss +1 -5
  383. package/src/components/page-patterns/use-patterns.js +67 -33
  384. package/src/components/page-patterns/utils.js +0 -19
  385. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +47 -33
  386. package/src/components/sidebar-edit-mode/page-panels/hooks.js +83 -0
  387. package/src/components/sidebar-edit-mode/page-panels/index.js +0 -4
  388. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  389. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +44 -0
  390. package/src/components/sidebar-edit-mode/page-panels/style.scss +41 -10
  391. package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +82 -0
  392. package/src/components/sidebar-edit-mode/template-panel/index.js +28 -24
  393. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +19 -15
  394. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +270 -0
  395. package/src/components/sidebar-navigation-screen/index.js +4 -9
  396. package/src/components/sidebar-navigation-screen/style.scss +7 -1
  397. package/src/components/sidebar-navigation-screen-details-footer/index.js +38 -10
  398. package/src/components/sidebar-navigation-screen-details-footer/style.scss +10 -3
  399. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +2 -0
  400. package/src/components/sidebar-navigation-screen-global-styles/index.js +6 -44
  401. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +0 -4
  402. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  403. package/src/components/sidebar-navigation-screen-pattern/index.js +20 -7
  404. package/src/components/sidebar-navigation-screen-pattern/style.scss +0 -3
  405. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +46 -13
  406. package/src/components/sidebar-navigation-screen-patterns/index.js +14 -49
  407. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +48 -6
  408. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -5
  409. package/src/components/sidebar-navigation-screen-template/index.js +2 -4
  410. package/src/components/sidebar-navigation-screen-templates/index.js +1 -1
  411. package/src/components/template-actions/index.js +14 -8
  412. package/src/components/template-actions/rename-menu-item.js +15 -4
  413. package/src/components/welcome-guide/styles.js +2 -2
  414. package/src/hooks/push-changes-to-global-styles/index.js +6 -49
  415. package/src/store/actions.js +39 -13
  416. package/src/store/test/actions.js +0 -1
  417. package/src/store/test/reducer.js +0 -1
  418. package/src/style.scss +1 -1
  419. package/src/utils/constants.js +38 -3
  420. package/src/utils/is-template-removable.js +8 -1
  421. package/src/utils/is-template-revertable.js +8 -1
  422. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -30
  423. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  424. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -23
  425. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  426. package/src/components/sidebar-navigation-screen-global-styles/style.scss +0 -12
  427. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -24
@@ -0,0 +1,58 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __ } from '@wordpress/i18n';
6
+ import { __experimentalItemGroup as ItemGroup, __experimentalVStack as VStack, __experimentalHStack as HStack, Button, Tooltip } from '@wordpress/components';
7
+ import { typography } from '@wordpress/icons';
8
+ import { useContext } from '@wordpress/element';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import FontLibraryProvider, { FontLibraryContext } from './font-library-modal/context';
14
+ import FontLibraryModal from './font-library-modal';
15
+ import FontFamilyItem from './font-family-item';
16
+ import Subtitle from './subtitle';
17
+ function FontFamilies() {
18
+ const {
19
+ modalTabOpen,
20
+ toggleModal,
21
+ themeFonts,
22
+ customFonts
23
+ } = useContext(FontLibraryContext);
24
+ return createElement(Fragment, null, !!modalTabOpen && createElement(FontLibraryModal, {
25
+ onRequestClose: () => toggleModal(),
26
+ initialTabName: modalTabOpen
27
+ }), createElement(VStack, {
28
+ spacing: 3
29
+ }, createElement(HStack, {
30
+ justify: "space-between"
31
+ }, createElement(Subtitle, {
32
+ level: 3
33
+ }, __('Fonts')), createElement(HStack, {
34
+ justify: "flex-end"
35
+ }, createElement(Tooltip, {
36
+ text: __('Manage fonts')
37
+ }, createElement(Button, {
38
+ onClick: () => toggleModal('installed-fonts'),
39
+ "aria-label": __('Manage fonts'),
40
+ icon: typography,
41
+ size: 'small'
42
+ })))), createElement(ItemGroup, {
43
+ isBordered: true,
44
+ isSeparated: true
45
+ }, customFonts.map(font => createElement(FontFamilyItem, {
46
+ key: font.slug,
47
+ font: font
48
+ })), themeFonts.map(font => createElement(FontFamilyItem, {
49
+ key: font.slug,
50
+ font: font
51
+ })))));
52
+ }
53
+ export default (({
54
+ ...props
55
+ }) => createElement(FontLibraryProvider, null, createElement(FontFamilies, {
56
+ ...props
57
+ })));
58
+ //# sourceMappingURL=font-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","__experimentalItemGroup","ItemGroup","__experimentalVStack","VStack","__experimentalHStack","HStack","Button","Tooltip","typography","useContext","FontLibraryProvider","FontLibraryContext","FontLibraryModal","FontFamilyItem","Subtitle","FontFamilies","modalTabOpen","toggleModal","themeFonts","customFonts","createElement","Fragment","onRequestClose","initialTabName","spacing","justify","level","text","onClick","icon","size","isBordered","isSeparated","map","font","key","slug","props"],"sources":["@wordpress/edit-site/src/components/global-styles/font-families.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n} from '@wordpress/components';\nimport { typography } from '@wordpress/icons';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FontLibraryProvider, {\n\tFontLibraryContext,\n} from './font-library-modal/context';\nimport FontLibraryModal from './font-library-modal';\nimport FontFamilyItem from './font-family-item';\nimport Subtitle from './subtitle';\n\nfunction FontFamilies() {\n\tconst { modalTabOpen, toggleModal, themeFonts, customFonts } =\n\t\tuseContext( FontLibraryContext );\n\n\treturn (\n\t\t<>\n\t\t\t{ !! modalTabOpen && (\n\t\t\t\t<FontLibraryModal\n\t\t\t\t\tonRequestClose={ () => toggleModal() }\n\t\t\t\t\tinitialTabName={ modalTabOpen }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Fonts' ) }</Subtitle>\n\t\t\t\t\t<HStack justify=\"flex-end\">\n\t\t\t\t\t\t<Tooltip text={ __( 'Manage fonts' ) }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\ttoggleModal( 'installed-fonts' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-label={ __( 'Manage fonts' ) }\n\t\t\t\t\t\t\t\ticon={ typography }\n\t\t\t\t\t\t\t\tsize={ 'small' }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t{ customFonts.map( ( font ) => (\n\t\t\t\t\t\t<FontFamilyItem key={ font.slug } font={ font } />\n\t\t\t\t\t) ) }\n\t\t\t\t\t{ themeFonts.map( ( font ) => (\n\t\t\t\t\t\t<FontFamilyItem key={ font.slug } font={ font } />\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</VStack>\n\t\t</>\n\t);\n}\n\nexport default ( { ...props } ) => (\n\t<FontLibraryProvider>\n\t\t<FontFamilies { ...props } />\n\t</FontLibraryProvider>\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SACCC,uBAAuB,IAAIC,SAAS,EACpCC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,MAAM,EACNC,OAAO,QACD,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,mBAAmB,IACzBC,kBAAkB,QACZ,8BAA8B;AACrC,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,cAAc,MAAM,oBAAoB;AAC/C,OAAOC,QAAQ,MAAM,YAAY;AAEjC,SAASC,YAAYA,CAAA,EAAG;EACvB,MAAM;IAAEC,YAAY;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAY,CAAC,GAC3DV,UAAU,CAAEE,kBAAmB,CAAC;EAEjC,OACCS,aAAA,CAAAC,QAAA,QACG,CAAC,CAAEL,YAAY,IAChBI,aAAA,CAACR,gBAAgB;IAChBU,cAAc,EAAGA,CAAA,KAAML,WAAW,CAAC,CAAG;IACtCM,cAAc,EAAGP;EAAc,CAC/B,CACD,EAEDI,aAAA,CAACjB,MAAM;IAACqB,OAAO,EAAG;EAAG,GACpBJ,aAAA,CAACf,MAAM;IAACoB,OAAO,EAAC;EAAe,GAC9BL,aAAA,CAACN,QAAQ;IAACY,KAAK,EAAG;EAAG,GAAG3B,EAAE,CAAE,OAAQ,CAAa,CAAC,EAClDqB,aAAA,CAACf,MAAM;IAACoB,OAAO,EAAC;EAAU,GACzBL,aAAA,CAACb,OAAO;IAACoB,IAAI,EAAG5B,EAAE,CAAE,cAAe;EAAG,GACrCqB,aAAA,CAACd,MAAM;IACNsB,OAAO,EAAGA,CAAA,KACTX,WAAW,CAAE,iBAAkB,CAC/B;IACD,cAAalB,EAAE,CAAE,cAAe,CAAG;IACnC8B,IAAI,EAAGrB,UAAY;IACnBsB,IAAI,EAAG;EAAS,CAChB,CACO,CACF,CACD,CAAC,EACTV,aAAA,CAACnB,SAAS;IAAC8B,UAAU;IAACC,WAAW;EAAA,GAC9Bb,WAAW,CAACc,GAAG,CAAIC,IAAI,IACxBd,aAAA,CAACP,cAAc;IAACsB,GAAG,EAAGD,IAAI,CAACE,IAAM;IAACF,IAAI,EAAGA;EAAM,CAAE,CAChD,CAAC,EACDhB,UAAU,CAACe,GAAG,CAAIC,IAAI,IACvBd,aAAA,CAACP,cAAc;IAACsB,GAAG,EAAGD,IAAI,CAACE,IAAM;IAACF,IAAI,EAAGA;EAAM,CAAE,CAChD,CACQ,CACJ,CACP,CAAC;AAEL;AAEA,gBAAe,CAAE;EAAE,GAAGG;AAAM,CAAC,KAC5BjB,aAAA,CAACV,mBAAmB,QACnBU,aAAA,CAACL,YAAY;EAAA,GAAMsB;AAAK,CAAI,CACR,CACrB"}
@@ -0,0 +1,40 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { _n } from '@wordpress/i18n';
6
+ import { __experimentalHStack as HStack, __experimentalItem as Item, FlexItem } from '@wordpress/components';
7
+ import { useContext } from '@wordpress/element';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { FontLibraryContext } from './font-library-modal/context';
13
+ import { getPreviewStyle } from './font-library-modal/utils';
14
+ function FontFamilyItem({
15
+ font
16
+ }) {
17
+ const {
18
+ handleSetLibraryFontSelected,
19
+ toggleModal
20
+ } = useContext(FontLibraryContext);
21
+ const variantsCount = font?.fontFace?.length || 1;
22
+ const handleClick = () => {
23
+ handleSetLibraryFontSelected(font);
24
+ toggleModal('installed-fonts');
25
+ };
26
+ const previewStyle = getPreviewStyle(font);
27
+ return createElement(Item, {
28
+ onClick: handleClick
29
+ }, createElement(HStack, {
30
+ justify: "space-between"
31
+ }, createElement(FlexItem, {
32
+ style: previewStyle
33
+ }, font.name), createElement(FlexItem, {
34
+ style: {
35
+ color: '#9e9e9e'
36
+ }
37
+ }, variantsCount, ' ', _n('variant', 'variants', variantsCount))));
38
+ }
39
+ export default FontFamilyItem;
40
+ //# sourceMappingURL=font-family-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_n","__experimentalHStack","HStack","__experimentalItem","Item","FlexItem","useContext","FontLibraryContext","getPreviewStyle","FontFamilyItem","font","handleSetLibraryFontSelected","toggleModal","variantsCount","fontFace","length","handleClick","previewStyle","createElement","onClick","justify","style","name","color"],"sources":["@wordpress/edit-site/src/components/global-styles/font-family-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _n } from '@wordpress/i18n';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalItem as Item,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './font-library-modal/context';\nimport { getPreviewStyle } from './font-library-modal/utils';\n\nfunction FontFamilyItem( { font } ) {\n\tconst { handleSetLibraryFontSelected, toggleModal } =\n\t\tuseContext( FontLibraryContext );\n\n\tconst variantsCount = font?.fontFace?.length || 1;\n\n\tconst handleClick = () => {\n\t\thandleSetLibraryFontSelected( font );\n\t\ttoggleModal( 'installed-fonts' );\n\t};\n\n\tconst previewStyle = getPreviewStyle( font );\n\n\treturn (\n\t\t<Item onClick={ handleClick }>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<FlexItem style={ previewStyle }>{ font.name }</FlexItem>\n\t\t\t\t<FlexItem style={ { color: '#9e9e9e' } }>\n\t\t\t\t\t{ variantsCount }{ ' ' }\n\t\t\t\t\t{ _n( 'variant', 'variants', variantsCount ) }\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</Item>\n\t);\n}\n\nexport default FontFamilyItem;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,kBAAkB,IAAIC,IAAI,EAC1BC,QAAQ,QACF,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,eAAe,QAAQ,4BAA4B;AAE5D,SAASC,cAAcA,CAAE;EAAEC;AAAK,CAAC,EAAG;EACnC,MAAM;IAAEC,4BAA4B;IAAEC;EAAY,CAAC,GAClDN,UAAU,CAAEC,kBAAmB,CAAC;EAEjC,MAAMM,aAAa,GAAGH,IAAI,EAAEI,QAAQ,EAAEC,MAAM,IAAI,CAAC;EAEjD,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACzBL,4BAA4B,CAAED,IAAK,CAAC;IACpCE,WAAW,CAAE,iBAAkB,CAAC;EACjC,CAAC;EAED,MAAMK,YAAY,GAAGT,eAAe,CAAEE,IAAK,CAAC;EAE5C,OACCQ,aAAA,CAACd,IAAI;IAACe,OAAO,EAAGH;EAAa,GAC5BE,aAAA,CAAChB,MAAM;IAACkB,OAAO,EAAC;EAAe,GAC9BF,aAAA,CAACb,QAAQ;IAACgB,KAAK,EAAGJ;EAAc,GAAGP,IAAI,CAACY,IAAgB,CAAC,EACzDJ,aAAA,CAACb,QAAQ;IAACgB,KAAK,EAAG;MAAEE,KAAK,EAAE;IAAU;EAAG,GACrCV,aAAa,EAAI,GAAG,EACpBb,EAAE,CAAE,SAAS,EAAE,UAAU,EAAEa,aAAc,CAClC,CACH,CACH,CAAC;AAET;AAEA,eAAeJ,cAAc"}
@@ -0,0 +1,23 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
7
+ function ConfirmDeleteDialog({
8
+ font,
9
+ isConfirmDeleteOpen,
10
+ handleConfirmUninstall,
11
+ handleCancelUninstall
12
+ }) {
13
+ return createElement(ConfirmDialog, {
14
+ isOpen: isConfirmDeleteOpen,
15
+ cancelButtonText: __('No, keep the font'),
16
+ confirmButtonText: __('Yes, uninstall'),
17
+ onCancel: handleCancelUninstall,
18
+ onConfirm: handleConfirmUninstall
19
+ }, font && sprintf( /* translators: %s: Name of the font. */
20
+ __('Would you like to remove %s and all its variants and assets?'), font.name));
21
+ }
22
+ export default ConfirmDeleteDialog;
23
+ //# sourceMappingURL=confirm-delete-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","sprintf","__experimentalConfirmDialog","ConfirmDialog","ConfirmDeleteDialog","font","isConfirmDeleteOpen","handleConfirmUninstall","handleCancelUninstall","createElement","isOpen","cancelButtonText","confirmButtonText","onCancel","onConfirm","name"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/confirm-delete-dialog.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';\n\nfunction ConfirmDeleteDialog( {\n\tfont,\n\tisConfirmDeleteOpen,\n\thandleConfirmUninstall,\n\thandleCancelUninstall,\n} ) {\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isConfirmDeleteOpen }\n\t\t\tcancelButtonText={ __( 'No, keep the font' ) }\n\t\t\tconfirmButtonText={ __( 'Yes, uninstall' ) }\n\t\t\tonCancel={ handleCancelUninstall }\n\t\t\tonConfirm={ handleConfirmUninstall }\n\t\t>\n\t\t\t{ font &&\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: Name of the font. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Would you like to remove %s and all its variants and assets?'\n\t\t\t\t\t),\n\t\t\t\t\tfont.name\n\t\t\t\t) }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default ConfirmDeleteDialog;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,2BAA2B,IAAIC,aAAa,QAAQ,uBAAuB;AAEpF,SAASC,mBAAmBA,CAAE;EAC7BC,IAAI;EACJC,mBAAmB;EACnBC,sBAAsB;EACtBC;AACD,CAAC,EAAG;EACH,OACCC,aAAA,CAACN,aAAa;IACbO,MAAM,EAAGJ,mBAAqB;IAC9BK,gBAAgB,EAAGX,EAAE,CAAE,mBAAoB,CAAG;IAC9CY,iBAAiB,EAAGZ,EAAE,CAAE,gBAAiB,CAAG;IAC5Ca,QAAQ,EAAGL,qBAAuB;IAClCM,SAAS,EAAGP;EAAwB,GAElCF,IAAI,IACLJ,OAAO,EACN;EACAD,EAAE,CACD,8DACD,CAAC,EACDK,IAAI,CAACU,IACN,CACa,CAAC;AAElB;AAEA,eAAeX,mBAAmB"}
@@ -0,0 +1,276 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { createContext, useState, useEffect } from '@wordpress/element';
6
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
7
+ import { useSelect, useDispatch } from '@wordpress/data';
8
+ import { useEntityRecord, useEntityRecords, store as coreStore } from '@wordpress/core-data';
9
+ import { store as noticesStore } from '@wordpress/notices';
10
+ import { __ } from '@wordpress/i18n';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { fetchInstallFonts, fetchUninstallFonts } from './resolvers';
16
+ import { unlock } from '../../../lock-unlock';
17
+ const {
18
+ useGlobalSetting
19
+ } = unlock(blockEditorPrivateApis);
20
+ import { setUIValuesNeeded, mergeFontFamilies, loadFontFaceInBrowser, getDisplaySrcFromFontFace, makeFormDataFromFontFamilies } from './utils';
21
+ import { toggleFont } from './utils/toggleFont';
22
+ import getIntersectingFontFaces from './utils/get-intersecting-font-faces';
23
+ export const FontLibraryContext = createContext({});
24
+ function FontLibraryProvider({
25
+ children
26
+ }) {
27
+ const {
28
+ __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
29
+ } = useDispatch(coreStore);
30
+ const {
31
+ globalStylesId
32
+ } = useSelect(select => {
33
+ const {
34
+ __experimentalGetCurrentGlobalStylesId
35
+ } = select(coreStore);
36
+ return {
37
+ globalStylesId: __experimentalGetCurrentGlobalStylesId()
38
+ };
39
+ });
40
+ const globalStyles = useEntityRecord('root', 'globalStyles', globalStylesId);
41
+ const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
42
+ const {
43
+ createErrorNotice
44
+ } = useDispatch(noticesStore);
45
+ const [isInstalling, setIsInstalling] = useState(false);
46
+ const [refreshKey, setRefreshKey] = useState(0);
47
+ const refreshLibrary = () => {
48
+ setRefreshKey(prevKey => prevKey + 1);
49
+ };
50
+ const {
51
+ records: libraryPosts = [],
52
+ isResolving: isResolvingLibrary,
53
+ hasResolved: hasResolvedLibrary
54
+ } = useEntityRecords('postType', 'wp_font_family', {
55
+ refreshKey
56
+ });
57
+ const libraryFonts = (libraryPosts || []).map(post => JSON.parse(post.content.raw)) || [];
58
+
59
+ // Global Styles (settings) font families
60
+ const [fontFamilies, setFontFamilies] = useGlobalSetting('typography.fontFamilies');
61
+ // theme.json file font families
62
+ const [baseFontFamilies] = useGlobalSetting('typography.fontFamilies', undefined, 'base');
63
+
64
+ // Save font families to the global styles post in the database.
65
+ const saveFontFamilies = () => {
66
+ saveSpecifiedEntityEdits('root', 'globalStyles', globalStylesId, ['settings.typography.fontFamilies']);
67
+ };
68
+
69
+ // Library Fonts
70
+ const [modalTabOpen, setModalTabOpen] = useState(false);
71
+ const [libraryFontSelected, setLibraryFontSelected] = useState(null);
72
+ const baseThemeFonts = baseFontFamilies?.theme ? baseFontFamilies.theme.map(f => setUIValuesNeeded(f, {
73
+ source: 'theme'
74
+ })).sort((a, b) => a.name.localeCompare(b.name)) : [];
75
+ const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map(f => setUIValuesNeeded(f, {
76
+ source: 'theme'
77
+ })).sort((a, b) => a.name.localeCompare(b.name)) : [];
78
+ const customFonts = fontFamilies?.custom ? fontFamilies.custom.map(f => setUIValuesNeeded(f, {
79
+ source: 'custom'
80
+ })).sort((a, b) => a.name.localeCompare(b.name)) : [];
81
+ const baseCustomFonts = libraryFonts ? libraryFonts.map(f => setUIValuesNeeded(f, {
82
+ source: 'custom'
83
+ })).sort((a, b) => a.name.localeCompare(b.name)) : [];
84
+ useEffect(() => {
85
+ if (!modalTabOpen) {
86
+ setLibraryFontSelected(null);
87
+ }
88
+ }, [modalTabOpen]);
89
+ const handleSetLibraryFontSelected = font => {
90
+ // If font is null, reset the selected font
91
+ if (!font) {
92
+ setLibraryFontSelected(null);
93
+ return;
94
+ }
95
+ const fonts = font.source === 'theme' ? baseThemeFonts : baseCustomFonts;
96
+
97
+ // Tries to find the font in the installed fonts
98
+ const fontSelected = fonts.find(f => f.slug === font.slug);
99
+ // If the font is not found (it is only defined in custom styles), use the font from custom styles
100
+ setLibraryFontSelected({
101
+ ...(fontSelected || font),
102
+ source: font.source
103
+ });
104
+ };
105
+ const toggleModal = tabName => {
106
+ setModalTabOpen(tabName || null);
107
+ };
108
+
109
+ // Demo
110
+ const [loadedFontUrls] = useState(new Set());
111
+
112
+ // Theme data
113
+ const {
114
+ site,
115
+ currentTheme
116
+ } = useSelect(select => {
117
+ return {
118
+ site: select(coreStore).getSite(),
119
+ currentTheme: select(coreStore).getCurrentTheme()
120
+ };
121
+ });
122
+ const themeUrl = site?.url + '/wp-content/themes/' + currentTheme?.stylesheet;
123
+ const getAvailableFontsOutline = availableFontFamilies => {
124
+ const outline = availableFontFamilies.reduce((acc, font) => {
125
+ const availableFontFaces = Array.isArray(font?.fontFace) ? font?.fontFace.map(face => `${face.fontStyle + face.fontWeight}`) : ['normal400']; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400
126
+
127
+ acc[font.slug] = availableFontFaces;
128
+ return acc;
129
+ }, {});
130
+ return outline;
131
+ };
132
+ const getActivatedFontsOutline = source => {
133
+ switch (source) {
134
+ case 'theme':
135
+ return getAvailableFontsOutline(themeFonts);
136
+ case 'custom':
137
+ default:
138
+ return getAvailableFontsOutline(customFonts);
139
+ }
140
+ };
141
+ const isFontActivated = (slug, style, weight, source) => {
142
+ if (!style && !weight) {
143
+ return !!getActivatedFontsOutline(source)[slug];
144
+ }
145
+ return !!getActivatedFontsOutline(source)[slug]?.includes(style + weight);
146
+ };
147
+ const getFontFacesActivated = (slug, source) => {
148
+ return getActivatedFontsOutline(source)[slug] || [];
149
+ };
150
+ async function installFonts(fonts) {
151
+ setIsInstalling(true);
152
+ try {
153
+ // Prepare formData to install.
154
+ const formData = makeFormDataFromFontFamilies(fonts);
155
+ // Install the fonts (upload the font files to the server and create the post in the database).
156
+ const fontsInstalled = await fetchInstallFonts(formData);
157
+ // Get intersecting font faces between the fonts we tried to installed and the fonts that were installed
158
+ // (to avoid activating a non installed font).
159
+ const fontToBeActivated = getIntersectingFontFaces(fontsInstalled, fonts);
160
+ // Activate the font families (add the font families to the global styles).
161
+ activateCustomFontFamilies(fontToBeActivated);
162
+ // Save the global styles to the database.
163
+ saveSpecifiedEntityEdits('root', 'globalStyles', globalStylesId, ['settings.typography.fontFamilies']);
164
+ refreshLibrary();
165
+ setIsInstalling(false);
166
+ return true;
167
+ } catch (e) {
168
+ // eslint-disable-next-line no-console
169
+ console.error(e);
170
+ createErrorNotice(__('Error installing fonts.'), {
171
+ type: 'snackbar'
172
+ });
173
+ setIsInstalling(false);
174
+ return false;
175
+ }
176
+ }
177
+ async function uninstallFont(font) {
178
+ try {
179
+ // Uninstall the font (remove the font files from the server and the post from the database).
180
+ await fetchUninstallFonts([font]);
181
+ // Deactivate the font family (remove the font family from the global styles).
182
+ deactivateFontFamily(font);
183
+ // Save the global styles to the database.
184
+ await saveSpecifiedEntityEdits('root', 'globalStyles', globalStylesId, ['settings.typography.fontFamilies']);
185
+ // Refresh the library (the the library font families from database).
186
+ refreshLibrary();
187
+ return true;
188
+ } catch (e) {
189
+ // eslint-disable-next-line no-console
190
+ console.error(e);
191
+ createErrorNotice(__('Error uninstalling fonts.'), {
192
+ type: 'snackbar'
193
+ });
194
+ return false;
195
+ }
196
+ }
197
+ const deactivateFontFamily = font => {
198
+ var _fontFamilies$font$so;
199
+ // If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
200
+ // We want to save as active all the theme fonts at the beginning
201
+ const initialCustomFonts = (_fontFamilies$font$so = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so !== void 0 ? _fontFamilies$font$so : [];
202
+ const newCustomFonts = initialCustomFonts.filter(f => f.slug !== font.slug);
203
+ setFontFamilies({
204
+ ...fontFamilies,
205
+ [font.source]: newCustomFonts
206
+ });
207
+ };
208
+ const activateCustomFontFamilies = fontsToAdd => {
209
+ // Merge the existing custom fonts with the new fonts.
210
+ const newCustomFonts = mergeFontFamilies(fontFamilies?.custom, fontsToAdd);
211
+ // Activate the fonts by set the new custom fonts array.
212
+ setFontFamilies({
213
+ ...fontFamilies,
214
+ custom: newCustomFonts
215
+ });
216
+ // Add custom fonts to the browser.
217
+ fontsToAdd.forEach(font => {
218
+ font.fontFace.forEach(face => {
219
+ // Load font faces just in the iframe because they already are in the document.
220
+ loadFontFaceInBrowser(face, getDisplaySrcFromFontFace(face.src), 'iframe');
221
+ });
222
+ });
223
+ };
224
+ const toggleActivateFont = (font, face) => {
225
+ var _fontFamilies$font$so2;
226
+ // If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts
227
+ // We want to save as active all the theme fonts at the beginning
228
+ const initialFonts = (_fontFamilies$font$so2 = fontFamilies?.[font.source]) !== null && _fontFamilies$font$so2 !== void 0 ? _fontFamilies$font$so2 : [];
229
+ // Toggles the received font family or font face
230
+ const newFonts = toggleFont(font, face, initialFonts);
231
+ // Updates the font families activated in global settings:
232
+ setFontFamilies({
233
+ ...fontFamilies,
234
+ [font.source]: newFonts
235
+ });
236
+ };
237
+ const loadFontFaceAsset = async fontFace => {
238
+ // If the font doesn't have a src, don't load it.
239
+ if (!fontFace.src) return;
240
+ // Get the src of the font.
241
+ const src = getDisplaySrcFromFontFace(fontFace.src, themeUrl);
242
+ // If the font is already loaded, don't load it again.
243
+ if (loadedFontUrls.has(src)) return;
244
+ // Load the font in the browser.
245
+ loadFontFaceInBrowser(fontFace, src, 'document');
246
+ // Add the font to the loaded fonts list.
247
+ loadedFontUrls.add(src);
248
+ };
249
+ return createElement(FontLibraryContext.Provider, {
250
+ value: {
251
+ libraryFontSelected,
252
+ handleSetLibraryFontSelected,
253
+ themeFonts,
254
+ baseThemeFonts,
255
+ customFonts,
256
+ baseCustomFonts,
257
+ isFontActivated,
258
+ getFontFacesActivated,
259
+ loadFontFaceAsset,
260
+ installFonts,
261
+ uninstallFont,
262
+ toggleActivateFont,
263
+ getAvailableFontsOutline,
264
+ modalTabOpen,
265
+ toggleModal,
266
+ refreshLibrary,
267
+ saveFontFamilies,
268
+ fontFamiliesHasChanges,
269
+ isResolvingLibrary,
270
+ hasResolvedLibrary,
271
+ isInstalling
272
+ }
273
+ }, children);
274
+ }
275
+ export default FontLibraryProvider;
276
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useState","useEffect","privateApis","blockEditorPrivateApis","useSelect","useDispatch","useEntityRecord","useEntityRecords","store","coreStore","noticesStore","__","fetchInstallFonts","fetchUninstallFonts","unlock","useGlobalSetting","setUIValuesNeeded","mergeFontFamilies","loadFontFaceInBrowser","getDisplaySrcFromFontFace","makeFormDataFromFontFamilies","toggleFont","getIntersectingFontFaces","FontLibraryContext","FontLibraryProvider","children","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","globalStylesId","select","__experimentalGetCurrentGlobalStylesId","globalStyles","fontFamiliesHasChanges","edits","settings","typography","fontFamilies","createErrorNotice","isInstalling","setIsInstalling","refreshKey","setRefreshKey","refreshLibrary","prevKey","records","libraryPosts","isResolving","isResolvingLibrary","hasResolved","hasResolvedLibrary","libraryFonts","map","post","JSON","parse","content","raw","setFontFamilies","baseFontFamilies","undefined","saveFontFamilies","modalTabOpen","setModalTabOpen","libraryFontSelected","setLibraryFontSelected","baseThemeFonts","theme","f","source","sort","a","b","name","localeCompare","themeFonts","customFonts","custom","baseCustomFonts","handleSetLibraryFontSelected","font","fonts","fontSelected","find","slug","toggleModal","tabName","loadedFontUrls","Set","site","currentTheme","getSite","getCurrentTheme","themeUrl","url","stylesheet","getAvailableFontsOutline","availableFontFamilies","outline","reduce","acc","availableFontFaces","Array","isArray","fontFace","face","fontStyle","fontWeight","getActivatedFontsOutline","isFontActivated","style","weight","includes","getFontFacesActivated","installFonts","formData","fontsInstalled","fontToBeActivated","activateCustomFontFamilies","e","console","error","type","uninstallFont","deactivateFontFamily","_fontFamilies$font$so","initialCustomFonts","newCustomFonts","filter","fontsToAdd","forEach","src","toggleActivateFont","_fontFamilies$font$so2","initialFonts","newFonts","loadFontFaceAsset","has","add","createElement","Provider","value"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/context.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext, useState, useEffect } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseEntityRecord,\n\tuseEntityRecords,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { fetchInstallFonts, fetchUninstallFonts } from './resolvers';\nimport { unlock } from '../../../lock-unlock';\nconst { useGlobalSetting } = unlock( blockEditorPrivateApis );\nimport {\n\tsetUIValuesNeeded,\n\tmergeFontFamilies,\n\tloadFontFaceInBrowser,\n\tgetDisplaySrcFromFontFace,\n\tmakeFormDataFromFontFamilies,\n} from './utils';\nimport { toggleFont } from './utils/toggleFont';\nimport getIntersectingFontFaces from './utils/get-intersecting-font-faces';\n\nexport const FontLibraryContext = createContext( {} );\n\nfunction FontLibraryProvider( { children } ) {\n\tconst { __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits } =\n\t\tuseDispatch( coreStore );\n\tconst { globalStylesId } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentGlobalStylesId } = select( coreStore );\n\t\treturn { globalStylesId: __experimentalGetCurrentGlobalStylesId() };\n\t} );\n\n\tconst globalStyles = useEntityRecord(\n\t\t'root',\n\t\t'globalStyles',\n\t\tglobalStylesId\n\t);\n\tconst fontFamiliesHasChanges =\n\t\t!! globalStyles?.edits?.settings?.typography?.fontFamilies;\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst [ isInstalling, setIsInstalling ] = useState( false );\n\tconst [ refreshKey, setRefreshKey ] = useState( 0 );\n\n\tconst refreshLibrary = () => {\n\t\tsetRefreshKey( ( prevKey ) => prevKey + 1 );\n\t};\n\n\tconst {\n\t\trecords: libraryPosts = [],\n\t\tisResolving: isResolvingLibrary,\n\t\thasResolved: hasResolvedLibrary,\n\t} = useEntityRecords( 'postType', 'wp_font_family', { refreshKey } );\n\n\tconst libraryFonts =\n\t\t( libraryPosts || [] ).map( ( post ) =>\n\t\t\tJSON.parse( post.content.raw )\n\t\t) || [];\n\n\t// Global Styles (settings) font families\n\tconst [ fontFamilies, setFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies'\n\t);\n\t// theme.json file font families\n\tconst [ baseFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies',\n\t\tundefined,\n\t\t'base'\n\t);\n\n\t// Save font families to the global styles post in the database.\n\tconst saveFontFamilies = () => {\n\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t'settings.typography.fontFamilies',\n\t\t] );\n\t};\n\n\t// Library Fonts\n\tconst [ modalTabOpen, setModalTabOpen ] = useState( false );\n\tconst [ libraryFontSelected, setLibraryFontSelected ] = useState( null );\n\n\tconst baseThemeFonts = baseFontFamilies?.theme\n\t\t? baseFontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst themeFonts = fontFamilies?.theme\n\t\t? fontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst customFonts = fontFamilies?.custom\n\t\t? fontFamilies.custom\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst baseCustomFonts = libraryFonts\n\t\t? libraryFonts\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tuseEffect( () => {\n\t\tif ( ! modalTabOpen ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t}\n\t}, [ modalTabOpen ] );\n\n\tconst handleSetLibraryFontSelected = ( font ) => {\n\t\t// If font is null, reset the selected font\n\t\tif ( ! font ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst fonts =\n\t\t\tfont.source === 'theme' ? baseThemeFonts : baseCustomFonts;\n\n\t\t// Tries to find the font in the installed fonts\n\t\tconst fontSelected = fonts.find( ( f ) => f.slug === font.slug );\n\t\t// If the font is not found (it is only defined in custom styles), use the font from custom styles\n\t\tsetLibraryFontSelected( {\n\t\t\t...( fontSelected || font ),\n\t\t\tsource: font.source,\n\t\t} );\n\t};\n\n\tconst toggleModal = ( tabName ) => {\n\t\tsetModalTabOpen( tabName || null );\n\t};\n\n\t// Demo\n\tconst [ loadedFontUrls ] = useState( new Set() );\n\n\t// Theme data\n\tconst { site, currentTheme } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tsite: select( coreStore ).getSite(),\n\t\t\tcurrentTheme: select( coreStore ).getCurrentTheme(),\n\t\t};\n\t} );\n\tconst themeUrl =\n\t\tsite?.url + '/wp-content/themes/' + currentTheme?.stylesheet;\n\n\tconst getAvailableFontsOutline = ( availableFontFamilies ) => {\n\t\tconst outline = availableFontFamilies.reduce( ( acc, font ) => {\n\t\t\tconst availableFontFaces = Array.isArray( font?.fontFace )\n\t\t\t\t? font?.fontFace.map(\n\t\t\t\t\t\t( face ) => `${ face.fontStyle + face.fontWeight }`\n\t\t\t\t )\n\t\t\t\t: [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400\n\n\t\t\tacc[ font.slug ] = availableFontFaces;\n\t\t\treturn acc;\n\t\t}, {} );\n\t\treturn outline;\n\t};\n\n\tconst getActivatedFontsOutline = ( source ) => {\n\t\tswitch ( source ) {\n\t\t\tcase 'theme':\n\t\t\t\treturn getAvailableFontsOutline( themeFonts );\n\t\t\tcase 'custom':\n\t\t\tdefault:\n\t\t\t\treturn getAvailableFontsOutline( customFonts );\n\t\t}\n\t};\n\n\tconst isFontActivated = ( slug, style, weight, source ) => {\n\t\tif ( ! style && ! weight ) {\n\t\t\treturn !! getActivatedFontsOutline( source )[ slug ];\n\t\t}\n\t\treturn !! getActivatedFontsOutline( source )[ slug ]?.includes(\n\t\t\tstyle + weight\n\t\t);\n\t};\n\n\tconst getFontFacesActivated = ( slug, source ) => {\n\t\treturn getActivatedFontsOutline( source )[ slug ] || [];\n\t};\n\n\tasync function installFonts( fonts ) {\n\t\tsetIsInstalling( true );\n\t\ttry {\n\t\t\t// Prepare formData to install.\n\t\t\tconst formData = makeFormDataFromFontFamilies( fonts );\n\t\t\t// Install the fonts (upload the font files to the server and create the post in the database).\n\t\t\tconst fontsInstalled = await fetchInstallFonts( formData );\n\t\t\t// Get intersecting font faces between the fonts we tried to installed and the fonts that were installed\n\t\t\t// (to avoid activating a non installed font).\n\t\t\tconst fontToBeActivated = getIntersectingFontFaces(\n\t\t\t\tfontsInstalled,\n\t\t\t\tfonts\n\t\t\t);\n\t\t\t// Activate the font families (add the font families to the global styles).\n\t\t\tactivateCustomFontFamilies( fontToBeActivated );\n\t\t\t// Save the global styles to the database.\n\t\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t\t'settings.typography.fontFamilies',\n\t\t\t] );\n\t\t\trefreshLibrary();\n\t\t\tsetIsInstalling( false );\n\t\t\treturn true;\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tcreateErrorNotice( __( 'Error installing fonts.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tsetIsInstalling( false );\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync function uninstallFont( font ) {\n\t\ttry {\n\t\t\t// Uninstall the font (remove the font files from the server and the post from the database).\n\t\t\tawait fetchUninstallFonts( [ font ] );\n\t\t\t// Deactivate the font family (remove the font family from the global styles).\n\t\t\tdeactivateFontFamily( font );\n\t\t\t// Save the global styles to the database.\n\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId,\n\t\t\t\t[ 'settings.typography.fontFamilies' ]\n\t\t\t);\n\t\t\t// Refresh the library (the the library font families from database).\n\t\t\trefreshLibrary();\n\t\t\treturn true;\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tcreateErrorNotice( __( 'Error uninstalling fonts.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst deactivateFontFamily = ( font ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialCustomFonts = fontFamilies?.[ font.source ] ?? [];\n\t\tconst newCustomFonts = initialCustomFonts.filter(\n\t\t\t( f ) => f.slug !== font.slug\n\t\t);\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newCustomFonts,\n\t\t} );\n\t};\n\n\tconst activateCustomFontFamilies = ( fontsToAdd ) => {\n\t\t// Merge the existing custom fonts with the new fonts.\n\t\tconst newCustomFonts = mergeFontFamilies(\n\t\t\tfontFamilies?.custom,\n\t\t\tfontsToAdd\n\t\t);\n\t\t// Activate the fonts by set the new custom fonts array.\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\tcustom: newCustomFonts,\n\t\t} );\n\t\t// Add custom fonts to the browser.\n\t\tfontsToAdd.forEach( ( font ) => {\n\t\t\tfont.fontFace.forEach( ( face ) => {\n\t\t\t\t// Load font faces just in the iframe because they already are in the document.\n\t\t\t\tloadFontFaceInBrowser(\n\t\t\t\t\tface,\n\t\t\t\t\tgetDisplaySrcFromFontFace( face.src ),\n\t\t\t\t\t'iframe'\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t};\n\n\tconst toggleActivateFont = ( font, face ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialFonts = fontFamilies?.[ font.source ] ?? [];\n\t\t// Toggles the received font family or font face\n\t\tconst newFonts = toggleFont( font, face, initialFonts );\n\t\t// Updates the font families activated in global settings:\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newFonts,\n\t\t} );\n\t};\n\n\tconst loadFontFaceAsset = async ( fontFace ) => {\n\t\t// If the font doesn't have a src, don't load it.\n\t\tif ( ! fontFace.src ) return;\n\t\t// Get the src of the font.\n\t\tconst src = getDisplaySrcFromFontFace( fontFace.src, themeUrl );\n\t\t// If the font is already loaded, don't load it again.\n\t\tif ( loadedFontUrls.has( src ) ) return;\n\t\t// Load the font in the browser.\n\t\tloadFontFaceInBrowser( fontFace, src, 'document' );\n\t\t// Add the font to the loaded fonts list.\n\t\tloadedFontUrls.add( src );\n\t};\n\n\treturn (\n\t\t<FontLibraryContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tlibraryFontSelected,\n\t\t\t\thandleSetLibraryFontSelected,\n\t\t\t\tthemeFonts,\n\t\t\t\tbaseThemeFonts,\n\t\t\t\tcustomFonts,\n\t\t\t\tbaseCustomFonts,\n\t\t\t\tisFontActivated,\n\t\t\t\tgetFontFacesActivated,\n\t\t\t\tloadFontFaceAsset,\n\t\t\t\tinstallFonts,\n\t\t\t\tuninstallFont,\n\t\t\t\ttoggleActivateFont,\n\t\t\t\tgetAvailableFontsOutline,\n\t\t\t\tmodalTabOpen,\n\t\t\t\ttoggleModal,\n\t\t\t\trefreshLibrary,\n\t\t\t\tsaveFontFamilies,\n\t\t\t\tfontFamiliesHasChanges,\n\t\t\t\tisResolvingLibrary,\n\t\t\t\thasResolvedLibrary,\n\t\t\t\tisInstalling,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</FontLibraryContext.Provider>\n\t);\n}\n\nexport default FontLibraryProvider;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,oBAAoB;AACvE,SAASC,WAAW,IAAIC,sBAAsB,QAAQ,yBAAyB;AAC/E,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,eAAe,EACfC,gBAAgB,EAChBC,KAAK,IAAIC,SAAS,QACZ,sBAAsB;AAC7B,SAASD,KAAK,IAAIE,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,iBAAiB,EAAEC,mBAAmB,QAAQ,aAAa;AACpE,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,MAAM;EAAEC;AAAiB,CAAC,GAAGD,MAAM,CAAEX,sBAAuB,CAAC;AAC7D,SACCa,iBAAiB,EACjBC,iBAAiB,EACjBC,qBAAqB,EACrBC,yBAAyB,EACzBC,4BAA4B,QACtB,SAAS;AAChB,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,OAAOC,wBAAwB,MAAM,qCAAqC;AAE1E,OAAO,MAAMC,kBAAkB,GAAGxB,aAAa,CAAE,CAAC,CAAE,CAAC;AAErD,SAASyB,mBAAmBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC5C,MAAM;IAAEC,sCAAsC,EAAEC;EAAyB,CAAC,GACzEtB,WAAW,CAAEI,SAAU,CAAC;EACzB,MAAM;IAAEmB;EAAe,CAAC,GAAGxB,SAAS,CAAIyB,MAAM,IAAM;IACnD,MAAM;MAAEC;IAAuC,CAAC,GAAGD,MAAM,CAAEpB,SAAU,CAAC;IACtE,OAAO;MAAEmB,cAAc,EAAEE,sCAAsC,CAAC;IAAE,CAAC;EACpE,CAAE,CAAC;EAEH,MAAMC,YAAY,GAAGzB,eAAe,CACnC,MAAM,EACN,cAAc,EACdsB,cACD,CAAC;EACD,MAAMI,sBAAsB,GAC3B,CAAC,CAAED,YAAY,EAAEE,KAAK,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,YAAY;EAE3D,MAAM;IAAEC;EAAkB,CAAC,GAAGhC,WAAW,CAAEK,YAAa,CAAC;EAEzD,MAAM,CAAE4B,YAAY,EAAEC,eAAe,CAAE,GAAGvC,QAAQ,CAAE,KAAM,CAAC;EAC3D,MAAM,CAAEwC,UAAU,EAAEC,aAAa,CAAE,GAAGzC,QAAQ,CAAE,CAAE,CAAC;EAEnD,MAAM0C,cAAc,GAAGA,CAAA,KAAM;IAC5BD,aAAa,CAAIE,OAAO,IAAMA,OAAO,GAAG,CAAE,CAAC;EAC5C,CAAC;EAED,MAAM;IACLC,OAAO,EAAEC,YAAY,GAAG,EAAE;IAC1BC,WAAW,EAAEC,kBAAkB;IAC/BC,WAAW,EAAEC;EACd,CAAC,GAAG1C,gBAAgB,CAAE,UAAU,EAAE,gBAAgB,EAAE;IAAEiC;EAAW,CAAE,CAAC;EAEpE,MAAMU,YAAY,GACjB,CAAEL,YAAY,IAAI,EAAE,EAAGM,GAAG,CAAIC,IAAI,IACjCC,IAAI,CAACC,KAAK,CAAEF,IAAI,CAACG,OAAO,CAACC,GAAI,CAC9B,CAAC,IAAI,EAAE;;EAER;EACA,MAAM,CAAEpB,YAAY,EAAEqB,eAAe,CAAE,GAAG1C,gBAAgB,CACzD,yBACD,CAAC;EACD;EACA,MAAM,CAAE2C,gBAAgB,CAAE,GAAG3C,gBAAgB,CAC5C,yBAAyB,EACzB4C,SAAS,EACT,MACD,CAAC;;EAED;EACA,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC9BjC,wBAAwB,CAAE,MAAM,EAAE,cAAc,EAAEC,cAAc,EAAE,CACjE,kCAAkC,CACjC,CAAC;EACJ,CAAC;;EAED;EACA,MAAM,CAAEiC,YAAY,EAAEC,eAAe,CAAE,GAAG9D,QAAQ,CAAE,KAAM,CAAC;EAC3D,MAAM,CAAE+D,mBAAmB,EAAEC,sBAAsB,CAAE,GAAGhE,QAAQ,CAAE,IAAK,CAAC;EAExE,MAAMiE,cAAc,GAAGP,gBAAgB,EAAEQ,KAAK,GAC3CR,gBAAgB,CAACQ,KAAK,CACrBf,GAAG,CAAIgB,CAAC,IAAMnD,iBAAiB,CAAEmD,CAAC,EAAE;IAAEC,MAAM,EAAE;EAAQ,CAAE,CAAE,CAAC,CAC3DC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,IAAI,CAACC,aAAa,CAAEF,CAAC,CAACC,IAAK,CAAE,CAAC,GACnD,EAAE;EAEL,MAAME,UAAU,GAAGtC,YAAY,EAAE8B,KAAK,GACnC9B,YAAY,CAAC8B,KAAK,CACjBf,GAAG,CAAIgB,CAAC,IAAMnD,iBAAiB,CAAEmD,CAAC,EAAE;IAAEC,MAAM,EAAE;EAAQ,CAAE,CAAE,CAAC,CAC3DC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,IAAI,CAACC,aAAa,CAAEF,CAAC,CAACC,IAAK,CAAE,CAAC,GACnD,EAAE;EAEL,MAAMG,WAAW,GAAGvC,YAAY,EAAEwC,MAAM,GACrCxC,YAAY,CAACwC,MAAM,CAClBzB,GAAG,CAAIgB,CAAC,IAAMnD,iBAAiB,CAAEmD,CAAC,EAAE;IAAEC,MAAM,EAAE;EAAS,CAAE,CAAE,CAAC,CAC5DC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,IAAI,CAACC,aAAa,CAAEF,CAAC,CAACC,IAAK,CAAE,CAAC,GACnD,EAAE;EAEL,MAAMK,eAAe,GAAG3B,YAAY,GACjCA,YAAY,CACXC,GAAG,CAAIgB,CAAC,IAAMnD,iBAAiB,CAAEmD,CAAC,EAAE;IAAEC,MAAM,EAAE;EAAS,CAAE,CAAE,CAAC,CAC5DC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,IAAI,CAACC,aAAa,CAAEF,CAAC,CAACC,IAAK,CAAE,CAAC,GACnD,EAAE;EAELvE,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE4D,YAAY,EAAG;MACrBG,sBAAsB,CAAE,IAAK,CAAC;IAC/B;EACD,CAAC,EAAE,CAAEH,YAAY,CAAG,CAAC;EAErB,MAAMiB,4BAA4B,GAAKC,IAAI,IAAM;IAChD;IACA,IAAK,CAAEA,IAAI,EAAG;MACbf,sBAAsB,CAAE,IAAK,CAAC;MAC9B;IACD;IAEA,MAAMgB,KAAK,GACVD,IAAI,CAACX,MAAM,KAAK,OAAO,GAAGH,cAAc,GAAGY,eAAe;;IAE3D;IACA,MAAMI,YAAY,GAAGD,KAAK,CAACE,IAAI,CAAIf,CAAC,IAAMA,CAAC,CAACgB,IAAI,KAAKJ,IAAI,CAACI,IAAK,CAAC;IAChE;IACAnB,sBAAsB,CAAE;MACvB,IAAKiB,YAAY,IAAIF,IAAI,CAAE;MAC3BX,MAAM,EAAEW,IAAI,CAACX;IACd,CAAE,CAAC;EACJ,CAAC;EAED,MAAMgB,WAAW,GAAKC,OAAO,IAAM;IAClCvB,eAAe,CAAEuB,OAAO,IAAI,IAAK,CAAC;EACnC,CAAC;;EAED;EACA,MAAM,CAAEC,cAAc,CAAE,GAAGtF,QAAQ,CAAE,IAAIuF,GAAG,CAAC,CAAE,CAAC;;EAEhD;EACA,MAAM;IAAEC,IAAI;IAAEC;EAAa,CAAC,GAAGrF,SAAS,CAAIyB,MAAM,IAAM;IACvD,OAAO;MACN2D,IAAI,EAAE3D,MAAM,CAAEpB,SAAU,CAAC,CAACiF,OAAO,CAAC,CAAC;MACnCD,YAAY,EAAE5D,MAAM,CAAEpB,SAAU,CAAC,CAACkF,eAAe,CAAC;IACnD,CAAC;EACF,CAAE,CAAC;EACH,MAAMC,QAAQ,GACbJ,IAAI,EAAEK,GAAG,GAAG,qBAAqB,GAAGJ,YAAY,EAAEK,UAAU;EAE7D,MAAMC,wBAAwB,GAAKC,qBAAqB,IAAM;IAC7D,MAAMC,OAAO,GAAGD,qBAAqB,CAACE,MAAM,CAAE,CAAEC,GAAG,EAAEpB,IAAI,KAAM;MAC9D,MAAMqB,kBAAkB,GAAGC,KAAK,CAACC,OAAO,CAAEvB,IAAI,EAAEwB,QAAS,CAAC,GACvDxB,IAAI,EAAEwB,QAAQ,CAACpD,GAAG,CAChBqD,IAAI,IAAO,GAAGA,IAAI,CAACC,SAAS,GAAGD,IAAI,CAACE,UAAY,EAClD,CAAC,GACD,CAAE,WAAW,CAAE,CAAC,CAAC;;MAEpBP,GAAG,CAAEpB,IAAI,CAACI,IAAI,CAAE,GAAGiB,kBAAkB;MACrC,OAAOD,GAAG;IACX,CAAC,EAAE,CAAC,CAAE,CAAC;IACP,OAAOF,OAAO;EACf,CAAC;EAED,MAAMU,wBAAwB,GAAKvC,MAAM,IAAM;IAC9C,QAASA,MAAM;MACd,KAAK,OAAO;QACX,OAAO2B,wBAAwB,CAAErB,UAAW,CAAC;MAC9C,KAAK,QAAQ;MACb;QACC,OAAOqB,wBAAwB,CAAEpB,WAAY,CAAC;IAChD;EACD,CAAC;EAED,MAAMiC,eAAe,GAAGA,CAAEzB,IAAI,EAAE0B,KAAK,EAAEC,MAAM,EAAE1C,MAAM,KAAM;IAC1D,IAAK,CAAEyC,KAAK,IAAI,CAAEC,MAAM,EAAG;MAC1B,OAAO,CAAC,CAAEH,wBAAwB,CAAEvC,MAAO,CAAC,CAAEe,IAAI,CAAE;IACrD;IACA,OAAO,CAAC,CAAEwB,wBAAwB,CAAEvC,MAAO,CAAC,CAAEe,IAAI,CAAE,EAAE4B,QAAQ,CAC7DF,KAAK,GAAGC,MACT,CAAC;EACF,CAAC;EAED,MAAME,qBAAqB,GAAGA,CAAE7B,IAAI,EAAEf,MAAM,KAAM;IACjD,OAAOuC,wBAAwB,CAAEvC,MAAO,CAAC,CAAEe,IAAI,CAAE,IAAI,EAAE;EACxD,CAAC;EAED,eAAe8B,YAAYA,CAAEjC,KAAK,EAAG;IACpCzC,eAAe,CAAE,IAAK,CAAC;IACvB,IAAI;MACH;MACA,MAAM2E,QAAQ,GAAG9F,4BAA4B,CAAE4D,KAAM,CAAC;MACtD;MACA,MAAMmC,cAAc,GAAG,MAAMvG,iBAAiB,CAAEsG,QAAS,CAAC;MAC1D;MACA;MACA,MAAME,iBAAiB,GAAG9F,wBAAwB,CACjD6F,cAAc,EACdnC,KACD,CAAC;MACD;MACAqC,0BAA0B,CAAED,iBAAkB,CAAC;MAC/C;MACAzF,wBAAwB,CAAE,MAAM,EAAE,cAAc,EAAEC,cAAc,EAAE,CACjE,kCAAkC,CACjC,CAAC;MACHc,cAAc,CAAC,CAAC;MAChBH,eAAe,CAAE,KAAM,CAAC;MACxB,OAAO,IAAI;IACZ,CAAC,CAAC,OAAQ+E,CAAC,EAAG;MACb;MACAC,OAAO,CAACC,KAAK,CAAEF,CAAE,CAAC;MAClBjF,iBAAiB,CAAE1B,EAAE,CAAE,yBAA0B,CAAC,EAAE;QACnD8G,IAAI,EAAE;MACP,CAAE,CAAC;MACHlF,eAAe,CAAE,KAAM,CAAC;MACxB,OAAO,KAAK;IACb;EACD;EAEA,eAAemF,aAAaA,CAAE3C,IAAI,EAAG;IACpC,IAAI;MACH;MACA,MAAMlE,mBAAmB,CAAE,CAAEkE,IAAI,CAAG,CAAC;MACrC;MACA4C,oBAAoB,CAAE5C,IAAK,CAAC;MAC5B;MACA,MAAMpD,wBAAwB,CAC7B,MAAM,EACN,cAAc,EACdC,cAAc,EACd,CAAE,kCAAkC,CACrC,CAAC;MACD;MACAc,cAAc,CAAC,CAAC;MAChB,OAAO,IAAI;IACZ,CAAC,CAAC,OAAQ4E,CAAC,EAAG;MACb;MACAC,OAAO,CAACC,KAAK,CAAEF,CAAE,CAAC;MAClBjF,iBAAiB,CAAE1B,EAAE,CAAE,2BAA4B,CAAC,EAAE;QACrD8G,IAAI,EAAE;MACP,CAAE,CAAC;MACH,OAAO,KAAK;IACb;EACD;EAEA,MAAME,oBAAoB,GAAK5C,IAAI,IAAM;IAAA,IAAA6C,qBAAA;IACxC;IACA;IACA,MAAMC,kBAAkB,IAAAD,qBAAA,GAAGxF,YAAY,GAAI2C,IAAI,CAACX,MAAM,CAAE,cAAAwD,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAC9D,MAAME,cAAc,GAAGD,kBAAkB,CAACE,MAAM,CAC7C5D,CAAC,IAAMA,CAAC,CAACgB,IAAI,KAAKJ,IAAI,CAACI,IAC1B,CAAC;IACD1B,eAAe,CAAE;MAChB,GAAGrB,YAAY;MACf,CAAE2C,IAAI,CAACX,MAAM,GAAI0D;IAClB,CAAE,CAAC;EACJ,CAAC;EAED,MAAMT,0BAA0B,GAAKW,UAAU,IAAM;IACpD;IACA,MAAMF,cAAc,GAAG7G,iBAAiB,CACvCmB,YAAY,EAAEwC,MAAM,EACpBoD,UACD,CAAC;IACD;IACAvE,eAAe,CAAE;MAChB,GAAGrB,YAAY;MACfwC,MAAM,EAAEkD;IACT,CAAE,CAAC;IACH;IACAE,UAAU,CAACC,OAAO,CAAIlD,IAAI,IAAM;MAC/BA,IAAI,CAACwB,QAAQ,CAAC0B,OAAO,CAAIzB,IAAI,IAAM;QAClC;QACAtF,qBAAqB,CACpBsF,IAAI,EACJrF,yBAAyB,CAAEqF,IAAI,CAAC0B,GAAI,CAAC,EACrC,QACD,CAAC;MACF,CAAE,CAAC;IACJ,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,kBAAkB,GAAGA,CAAEpD,IAAI,EAAEyB,IAAI,KAAM;IAAA,IAAA4B,sBAAA;IAC5C;IACA;IACA,MAAMC,YAAY,IAAAD,sBAAA,GAAGhG,YAAY,GAAI2C,IAAI,CAACX,MAAM,CAAE,cAAAgE,sBAAA,cAAAA,sBAAA,GAAI,EAAE;IACxD;IACA,MAAME,QAAQ,GAAGjH,UAAU,CAAE0D,IAAI,EAAEyB,IAAI,EAAE6B,YAAa,CAAC;IACvD;IACA5E,eAAe,CAAE;MAChB,GAAGrB,YAAY;MACf,CAAE2C,IAAI,CAACX,MAAM,GAAIkE;IAClB,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,iBAAiB,GAAG,MAAQhC,QAAQ,IAAM;IAC/C;IACA,IAAK,CAAEA,QAAQ,CAAC2B,GAAG,EAAG;IACtB;IACA,MAAMA,GAAG,GAAG/G,yBAAyB,CAAEoF,QAAQ,CAAC2B,GAAG,EAAEtC,QAAS,CAAC;IAC/D;IACA,IAAKN,cAAc,CAACkD,GAAG,CAAEN,GAAI,CAAC,EAAG;IACjC;IACAhH,qBAAqB,CAAEqF,QAAQ,EAAE2B,GAAG,EAAE,UAAW,CAAC;IAClD;IACA5C,cAAc,CAACmD,GAAG,CAAEP,GAAI,CAAC;EAC1B,CAAC;EAED,OACCQ,aAAA,CAACnH,kBAAkB,CAACoH,QAAQ;IAC3BC,KAAK,EAAG;MACP7E,mBAAmB;MACnBe,4BAA4B;MAC5BJ,UAAU;MACVT,cAAc;MACdU,WAAW;MACXE,eAAe;MACf+B,eAAe;MACfI,qBAAqB;MACrBuB,iBAAiB;MACjBtB,YAAY;MACZS,aAAa;MACbS,kBAAkB;MAClBpC,wBAAwB;MACxBlC,YAAY;MACZuB,WAAW;MACX1C,cAAc;MACdkB,gBAAgB;MAChB5B,sBAAsB;MACtBe,kBAAkB;MAClBE,kBAAkB;MAClBX;IACD;EAAG,GAEDb,QAC0B,CAAC;AAEhC;AAEA,eAAeD,mBAAmB"}
@@ -0,0 +1,49 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { _n } from '@wordpress/i18n';
6
+ import { __experimentalText as Text, Button, Flex, FlexItem } from '@wordpress/components';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import FontDemo from './font-demo';
12
+ import { getPreviewStyle } from './utils';
13
+ function FontCard({
14
+ font,
15
+ onClick,
16
+ actionHandler,
17
+ variantsText
18
+ }) {
19
+ const fakeFontFace = {
20
+ fontStyle: 'normal',
21
+ fontWeight: '400',
22
+ fontFamily: font.fontFamily,
23
+ fake: true
24
+ };
25
+ const displayFontFace = font.fontFace && font.fontFace.length ? font?.fontFace?.find(face => face.fontStyle === 'normal' && face.fontWeight === '400') || font.fontFace[0] : fakeFontFace;
26
+ const demoStyle = getPreviewStyle(font);
27
+ const variantsCount = font.fontFace?.length || 1;
28
+ const style = {
29
+ cursor: !!onClick ? 'pointer' : 'default'
30
+ };
31
+ return createElement(Button, {
32
+ onClick: onClick,
33
+ style: style,
34
+ className: "font-library-modal__font-card"
35
+ }, createElement(Flex, {
36
+ justify: "space-between",
37
+ wrap: false
38
+ }, createElement(FontDemo, {
39
+ fontFace: displayFontFace,
40
+ text: font.name,
41
+ style: demoStyle
42
+ }), createElement(Flex, {
43
+ justify: "flex-end"
44
+ }, createElement(FlexItem, null, createElement(Text, {
45
+ className: "font-library-modal__font-card__count"
46
+ }, variantsText || variantsCount + ' ' + _n('variant', 'variants', variantsCount))), createElement(FlexItem, null, !!actionHandler && actionHandler))));
47
+ }
48
+ export default FontCard;
49
+ //# sourceMappingURL=font-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_n","__experimentalText","Text","Button","Flex","FlexItem","FontDemo","getPreviewStyle","FontCard","font","onClick","actionHandler","variantsText","fakeFontFace","fontStyle","fontWeight","fontFamily","fake","displayFontFace","fontFace","length","find","face","demoStyle","variantsCount","style","cursor","createElement","className","justify","wrap","text","name"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-card.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _n } from '@wordpress/i18n';\nimport {\n\t__experimentalText as Text,\n\tButton,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport FontDemo from './font-demo';\nimport { getPreviewStyle } from './utils';\n\nfunction FontCard( { font, onClick, actionHandler, variantsText } ) {\n\tconst fakeFontFace = {\n\t\tfontStyle: 'normal',\n\t\tfontWeight: '400',\n\t\tfontFamily: font.fontFamily,\n\t\tfake: true,\n\t};\n\n\tconst displayFontFace =\n\t\tfont.fontFace && font.fontFace.length\n\t\t\t? font?.fontFace?.find(\n\t\t\t\t\t( face ) =>\n\t\t\t\t\t\tface.fontStyle === 'normal' && face.fontWeight === '400'\n\t\t\t ) || font.fontFace[ 0 ]\n\t\t\t: fakeFontFace;\n\n\tconst demoStyle = getPreviewStyle( font );\n\n\tconst variantsCount = font.fontFace?.length || 1;\n\n\tconst style = {\n\t\tcursor: !! onClick ? 'pointer' : 'default',\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tonClick={ onClick }\n\t\t\tstyle={ style }\n\t\t\tclassName=\"font-library-modal__font-card\"\n\t\t>\n\t\t\t<Flex justify=\"space-between\" wrap={ false }>\n\t\t\t\t<FontDemo\n\t\t\t\t\tfontFace={ displayFontFace }\n\t\t\t\t\ttext={ font.name }\n\t\t\t\t\tstyle={ demoStyle }\n\t\t\t\t/>\n\t\t\t\t<Flex justify=\"flex-end\">\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Text className=\"font-library-modal__font-card__count\">\n\t\t\t\t\t\t\t{ variantsText ||\n\t\t\t\t\t\t\t\tvariantsCount +\n\t\t\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\t\t\t_n( 'variant', 'variants', variantsCount ) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>{ !! actionHandler && actionHandler }</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nexport default FontCard;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SACCC,kBAAkB,IAAIC,IAAI,EAC1BC,MAAM,EACNC,IAAI,EACJC,QAAQ,QACF,uBAAuB;;AAE9B;AACA;AACA;AACA,OAAOC,QAAQ,MAAM,aAAa;AAClC,SAASC,eAAe,QAAQ,SAAS;AAEzC,SAASC,QAAQA,CAAE;EAAEC,IAAI;EAAEC,OAAO;EAAEC,aAAa;EAAEC;AAAa,CAAC,EAAG;EACnE,MAAMC,YAAY,GAAG;IACpBC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAEP,IAAI,CAACO,UAAU;IAC3BC,IAAI,EAAE;EACP,CAAC;EAED,MAAMC,eAAe,GACpBT,IAAI,CAACU,QAAQ,IAAIV,IAAI,CAACU,QAAQ,CAACC,MAAM,GAClCX,IAAI,EAAEU,QAAQ,EAAEE,IAAI,CAClBC,IAAI,IACLA,IAAI,CAACR,SAAS,KAAK,QAAQ,IAAIQ,IAAI,CAACP,UAAU,KAAK,KACpD,CAAC,IAAIN,IAAI,CAACU,QAAQ,CAAE,CAAC,CAAE,GACvBN,YAAY;EAEhB,MAAMU,SAAS,GAAGhB,eAAe,CAAEE,IAAK,CAAC;EAEzC,MAAMe,aAAa,GAAGf,IAAI,CAACU,QAAQ,EAAEC,MAAM,IAAI,CAAC;EAEhD,MAAMK,KAAK,GAAG;IACbC,MAAM,EAAE,CAAC,CAAEhB,OAAO,GAAG,SAAS,GAAG;EAClC,CAAC;EAED,OACCiB,aAAA,CAACxB,MAAM;IACNO,OAAO,EAAGA,OAAS;IACnBe,KAAK,EAAGA,KAAO;IACfG,SAAS,EAAC;EAA+B,GAEzCD,aAAA,CAACvB,IAAI;IAACyB,OAAO,EAAC,eAAe;IAACC,IAAI,EAAG;EAAO,GAC3CH,aAAA,CAACrB,QAAQ;IACRa,QAAQ,EAAGD,eAAiB;IAC5Ba,IAAI,EAAGtB,IAAI,CAACuB,IAAM;IAClBP,KAAK,EAAGF;EAAW,CACnB,CAAC,EACFI,aAAA,CAACvB,IAAI;IAACyB,OAAO,EAAC;EAAU,GACvBF,aAAA,CAACtB,QAAQ,QACRsB,aAAA,CAACzB,IAAI;IAAC0B,SAAS,EAAC;EAAsC,GACnDhB,YAAY,IACbY,aAAa,GACZ,GAAG,GACHxB,EAAE,CAAE,SAAS,EAAE,UAAU,EAAEwB,aAAc,CACtC,CACG,CAAC,EACXG,aAAA,CAACtB,QAAQ,QAAG,CAAC,CAAEM,aAAa,IAAIA,aAAyB,CACpD,CACD,CACC,CAAC;AAEX;AAEA,eAAeH,QAAQ"}
@@ -0,0 +1,62 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __experimentalText as Text } from '@wordpress/components';
6
+ import { useContext, useEffect, useState, useRef } from '@wordpress/element';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { FontLibraryContext } from './context';
12
+ function FontFaceDemo({
13
+ fontFace,
14
+ text,
15
+ style = {}
16
+ }) {
17
+ const ref = useRef(null);
18
+ const [isIntersecting, setIsIntersecting] = useState(false);
19
+ const [isAssetLoaded, setIsAssetLoaded] = useState(false);
20
+ const {
21
+ loadFontFaceAsset
22
+ } = useContext(FontLibraryContext);
23
+ const {
24
+ fontFamily,
25
+ fontStyle,
26
+ fontWeight
27
+ } = fontFace;
28
+ const demoStyle = {
29
+ fontWeight,
30
+ fontStyle,
31
+ fontFamily,
32
+ flexShrink: 0,
33
+ fontSize: '18px',
34
+ opacity: isAssetLoaded ? '1' : '0',
35
+ transition: 'opacity 0.3s ease-in-out',
36
+ ...style
37
+ };
38
+ useEffect(() => {
39
+ const observer = new window.IntersectionObserver(([entry]) => {
40
+ setIsIntersecting(entry.isIntersecting);
41
+ }, {});
42
+ observer.observe(ref.current);
43
+ return () => observer.disconnect();
44
+ }, [ref]);
45
+ useEffect(() => {
46
+ const loadAsset = async () => {
47
+ if (isIntersecting) {
48
+ if (fontFace.src) {
49
+ await loadFontFaceAsset(fontFace);
50
+ }
51
+ setIsAssetLoaded(true);
52
+ }
53
+ };
54
+ loadAsset();
55
+ }, [fontFace, isIntersecting, loadFontFaceAsset]);
56
+ return createElement(Text, {
57
+ style: demoStyle,
58
+ ref: ref
59
+ }, text);
60
+ }
61
+ export default FontFaceDemo;
62
+ //# sourceMappingURL=font-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__experimentalText","Text","useContext","useEffect","useState","useRef","FontLibraryContext","FontFaceDemo","fontFace","text","style","ref","isIntersecting","setIsIntersecting","isAssetLoaded","setIsAssetLoaded","loadFontFaceAsset","fontFamily","fontStyle","fontWeight","demoStyle","flexShrink","fontSize","opacity","transition","observer","window","IntersectionObserver","entry","observe","current","disconnect","loadAsset","src","createElement"],"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';\n\nfunction FontFaceDemo( { 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\tconst { fontFamily, fontStyle, fontWeight } = fontFace;\n\n\tconst demoStyle = {\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tfontFamily,\n\t\tflexShrink: 0,\n\t\tfontSize: '18px',\n\t\topacity: isAssetLoaded ? '1' : '0',\n\t\ttransition: 'opacity 0.3s ease-in-out',\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 ( 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 ] );\n\n\treturn (\n\t\t<Text style={ demoStyle } ref={ ref }>\n\t\t\t{ text }\n\t\t</Text>\n\t);\n}\n\nexport default FontFaceDemo;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,kBAAkB,IAAIC,IAAI,QAAQ,uBAAuB;AAClE,SAASC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,oBAAoB;;AAE5E;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAEC,IAAI;EAAEC,KAAK,GAAG,CAAC;AAAE,CAAC,EAAG;EACvD,MAAMC,GAAG,GAAGN,MAAM,CAAE,IAAK,CAAC;EAC1B,MAAM,CAAEO,cAAc,EAAEC,iBAAiB,CAAE,GAAGT,QAAQ,CAAE,KAAM,CAAC;EAC/D,MAAM,CAAEU,aAAa,EAAEC,gBAAgB,CAAE,GAAGX,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM;IAAEY;EAAkB,CAAC,GAAGd,UAAU,CAAEI,kBAAmB,CAAC;EAC9D,MAAM;IAAEW,UAAU;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGX,QAAQ;EAEtD,MAAMY,SAAS,GAAG;IACjBD,UAAU;IACVD,SAAS;IACTD,UAAU;IACVI,UAAU,EAAE,CAAC;IACbC,QAAQ,EAAE,MAAM;IAChBC,OAAO,EAAET,aAAa,GAAG,GAAG,GAAG,GAAG;IAClCU,UAAU,EAAE,0BAA0B;IACtC,GAAGd;EACJ,CAAC;EAEDP,SAAS,CAAE,MAAM;IAChB,MAAMsB,QAAQ,GAAG,IAAIC,MAAM,CAACC,oBAAoB,CAAE,CAAE,CAAEC,KAAK,CAAE,KAAM;MAClEf,iBAAiB,CAAEe,KAAK,CAAChB,cAAe,CAAC;IAC1C,CAAC,EAAE,CAAC,CAAE,CAAC;IACPa,QAAQ,CAACI,OAAO,CAAElB,GAAG,CAACmB,OAAQ,CAAC;IAC/B,OAAO,MAAML,QAAQ,CAACM,UAAU,CAAC,CAAC;EACnC,CAAC,EAAE,CAAEpB,GAAG,CAAG,CAAC;EAEZR,SAAS,CAAE,MAAM;IAChB,MAAM6B,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC7B,IAAKpB,cAAc,EAAG;QACrB,IAAKJ,QAAQ,CAACyB,GAAG,EAAG;UACnB,MAAMjB,iBAAiB,CAAER,QAAS,CAAC;QACpC;QACAO,gBAAgB,CAAE,IAAK,CAAC;MACzB;IACD,CAAC;IACDiB,SAAS,CAAC,CAAC;EACZ,CAAC,EAAE,CAAExB,QAAQ,EAAEI,cAAc,EAAEI,iBAAiB,CAAG,CAAC;EAEpD,OACCkB,aAAA,CAACjC,IAAI;IAACS,KAAK,EAAGU,SAAW;IAACT,GAAG,EAAGA;EAAK,GAClCF,IACG,CAAC;AAET;AAEA,eAAeF,YAAY"}
@@ -0,0 +1,42 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __experimentalText as Text, __experimentalVStack as VStack, __experimentalHStack as HStack, CheckboxControl } from '@wordpress/components';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import FontFaceDemo from './font-demo';
11
+ function FontVariant({
12
+ fontFace,
13
+ variantName,
14
+ checked,
15
+ onClick,
16
+ text,
17
+ actionHandler
18
+ }) {
19
+ const {
20
+ fontStyle,
21
+ fontWeight
22
+ } = fontFace;
23
+ const displayVariantName = variantName || `${fontWeight} ${fontStyle}`;
24
+ return createElement("div", {
25
+ className: "font-library-modal__font-variant"
26
+ }, createElement(VStack, {
27
+ spacing: 1
28
+ }, createElement(HStack, {
29
+ justify: "flex-start",
30
+ alignment: "top"
31
+ }, !!actionHandler ? actionHandler : createElement(CheckboxControl, {
32
+ checked: checked,
33
+ onChange: onClick
34
+ }), typeof displayVariantName === 'string' ? createElement(Text, null, displayVariantName) : displayVariantName), createElement("div", {
35
+ className: "font-library-modal__font-variant_demo-wrapper"
36
+ }, createElement(FontFaceDemo, {
37
+ fontFace: fontFace,
38
+ text: text
39
+ }))));
40
+ }
41
+ export default FontVariant;
42
+ //# sourceMappingURL=font-variant.js.map