@wordpress/global-styles-ui 1.1.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 (701) hide show
  1. package/LICENSE.md +788 -0
  2. package/README.md +48 -0
  3. package/build/background-panel.js +62 -0
  4. package/build/background-panel.js.map +7 -0
  5. package/build/block-preview-panel.js +90 -0
  6. package/build/block-preview-panel.js.map +7 -0
  7. package/build/color-indicator-wrapper.js +55 -0
  8. package/build/color-indicator-wrapper.js.map +7 -0
  9. package/build/color-palette-panel.js +123 -0
  10. package/build/color-palette-panel.js.map +7 -0
  11. package/build/color-preview.js +94 -0
  12. package/build/color-preview.js.map +7 -0
  13. package/build/color-variations.js +41 -0
  14. package/build/color-variations.js.map +7 -0
  15. package/build/confirm-reset-shadow-dialog.js +55 -0
  16. package/build/confirm-reset-shadow-dialog.js.map +7 -0
  17. package/build/context.js +37 -0
  18. package/build/context.js.map +7 -0
  19. package/build/dimensions-panel.js +89 -0
  20. package/build/dimensions-panel.js.map +7 -0
  21. package/build/font-families.js +114 -0
  22. package/build/font-families.js.map +7 -0
  23. package/build/font-family-item.js +48 -0
  24. package/build/font-family-item.js.map +7 -0
  25. package/build/font-library-modal/collection-font-variant.js +75 -0
  26. package/build/font-library-modal/collection-font-variant.js.map +7 -0
  27. package/build/font-library-modal/context.js +386 -0
  28. package/build/font-library-modal/context.js.map +7 -0
  29. package/build/font-library-modal/font-card.js +81 -0
  30. package/build/font-library-modal/font-card.js.map +7 -0
  31. package/build/font-library-modal/font-collection.js +510 -0
  32. package/build/font-library-modal/font-collection.js.map +7 -0
  33. package/build/font-library-modal/font-demo.js +111 -0
  34. package/build/font-library-modal/font-demo.js.map +7 -0
  35. package/build/font-library-modal/google-fonts-confirm-dialog.js +58 -0
  36. package/build/font-library-modal/google-fonts-confirm-dialog.js.map +7 -0
  37. package/build/font-library-modal/index.js +110 -0
  38. package/build/font-library-modal/index.js.map +7 -0
  39. package/build/font-library-modal/installed-fonts.js +453 -0
  40. package/build/font-library-modal/installed-fonts.js.map +7 -0
  41. package/build/font-library-modal/lib/inflate.js +2628 -0
  42. package/build/font-library-modal/lib/inflate.js.map +7 -0
  43. package/build/font-library-modal/lib/lib-font.browser.d.js +33 -0
  44. package/build/font-library-modal/lib/lib-font.browser.d.js.map +7 -0
  45. package/build/font-library-modal/lib/lib-font.browser.js +3788 -0
  46. package/build/font-library-modal/lib/lib-font.browser.js.map +7 -0
  47. package/build/font-library-modal/lib/unbrotli.js +3678 -0
  48. package/build/font-library-modal/lib/unbrotli.js.map +7 -0
  49. package/build/font-library-modal/library-font-details.js +63 -0
  50. package/build/font-library-modal/library-font-details.js.map +7 -0
  51. package/build/font-library-modal/library-font-variant.js +81 -0
  52. package/build/font-library-modal/library-font-variant.js.map +7 -0
  53. package/build/font-library-modal/resolvers.js +115 -0
  54. package/build/font-library-modal/resolvers.js.map +7 -0
  55. package/build/font-library-modal/types.js +17 -0
  56. package/build/font-library-modal/types.js.map +7 -0
  57. package/build/font-library-modal/upload-fonts.js +207 -0
  58. package/build/font-library-modal/upload-fonts.js.map +7 -0
  59. package/build/font-library-modal/utils/constants.js +49 -0
  60. package/build/font-library-modal/utils/constants.js.map +7 -0
  61. package/build/font-library-modal/utils/filter-fonts.js +39 -0
  62. package/build/font-library-modal/utils/filter-fonts.js.map +7 -0
  63. package/build/font-library-modal/utils/fonts-outline.js +51 -0
  64. package/build/font-library-modal/utils/fonts-outline.js.map +7 -0
  65. package/build/font-library-modal/utils/index.js +274 -0
  66. package/build/font-library-modal/utils/index.js.map +7 -0
  67. package/build/font-library-modal/utils/make-families-from-faces.js +45 -0
  68. package/build/font-library-modal/utils/make-families-from-faces.js.map +7 -0
  69. package/build/font-library-modal/utils/preview-styles.js +119 -0
  70. package/build/font-library-modal/utils/preview-styles.js.map +7 -0
  71. package/build/font-library-modal/utils/set-immutably.js +40 -0
  72. package/build/font-library-modal/utils/set-immutably.js.map +7 -0
  73. package/build/font-library-modal/utils/sort-font-faces.js +59 -0
  74. package/build/font-library-modal/utils/sort-font-faces.js.map +7 -0
  75. package/build/font-library-modal/utils/toggleFont.js +67 -0
  76. package/build/font-library-modal/utils/toggleFont.js.map +7 -0
  77. package/build/font-sizes/confirm-delete-font-size-dialog.js +60 -0
  78. package/build/font-sizes/confirm-delete-font-size-dialog.js.map +7 -0
  79. package/build/font-sizes/confirm-reset-font-sizes-dialog.js +55 -0
  80. package/build/font-sizes/confirm-reset-font-sizes-dialog.js.map +7 -0
  81. package/build/font-sizes/font-size-preview.js +50 -0
  82. package/build/font-sizes/font-size-preview.js.map +7 -0
  83. package/build/font-sizes/font-size.js +261 -0
  84. package/build/font-sizes/font-size.js.map +7 -0
  85. package/build/font-sizes/font-sizes-count.js +40 -0
  86. package/build/font-sizes/font-sizes-count.js.map +7 -0
  87. package/build/font-sizes/font-sizes.js +215 -0
  88. package/build/font-sizes/font-sizes.js.map +7 -0
  89. package/build/font-sizes/rename-font-size-dialog.js +96 -0
  90. package/build/font-sizes/rename-font-size-dialog.js.map +7 -0
  91. package/build/global-styles-ui.js +213 -0
  92. package/build/global-styles-ui.js.map +7 -0
  93. package/build/gradients-palette-panel.js +133 -0
  94. package/build/gradients-palette-panel.js.map +7 -0
  95. package/build/highlighted-colors.js +57 -0
  96. package/build/highlighted-colors.js.map +7 -0
  97. package/build/hooks.js +176 -0
  98. package/build/hooks.js.map +7 -0
  99. package/build/icon-with-current-color.js +56 -0
  100. package/build/icon-with-current-color.js.map +7 -0
  101. package/build/index.js +51 -0
  102. package/build/index.js.map +7 -0
  103. package/build/lock-unlock.js +35 -0
  104. package/build/lock-unlock.js.map +7 -0
  105. package/build/navigation-button.js +52 -0
  106. package/build/navigation-button.js.map +7 -0
  107. package/build/pagination/index.js +133 -0
  108. package/build/pagination/index.js.map +7 -0
  109. package/build/palette.js +93 -0
  110. package/build/palette.js.map +7 -0
  111. package/build/preset-colors.js +40 -0
  112. package/build/preset-colors.js.map +7 -0
  113. package/build/preview-colors.js +86 -0
  114. package/build/preview-colors.js.map +7 -0
  115. package/build/preview-hooks.js +60 -0
  116. package/build/preview-hooks.js.map +7 -0
  117. package/build/preview-styles.js +219 -0
  118. package/build/preview-styles.js.map +7 -0
  119. package/build/preview-typography.js +72 -0
  120. package/build/preview-typography.js.map +7 -0
  121. package/build/preview-wrapper.js +102 -0
  122. package/build/preview-wrapper.js.map +7 -0
  123. package/build/provider.js +54 -0
  124. package/build/provider.js.map +7 -0
  125. package/build/root-menu.js +72 -0
  126. package/build/root-menu.js.map +7 -0
  127. package/build/screen-background.js +58 -0
  128. package/build/screen-background.js.map +7 -0
  129. package/build/screen-block-list.js +160 -0
  130. package/build/screen-block-list.js.map +7 -0
  131. package/build/screen-block.js +316 -0
  132. package/build/screen-block.js.map +7 -0
  133. package/build/screen-color-palette.js +64 -0
  134. package/build/screen-color-palette.js.map +7 -0
  135. package/build/screen-colors.js +85 -0
  136. package/build/screen-colors.js.map +7 -0
  137. package/build/screen-css.js +68 -0
  138. package/build/screen-css.js.map +7 -0
  139. package/build/screen-header.js +61 -0
  140. package/build/screen-header.js.map +7 -0
  141. package/build/screen-layout.js +54 -0
  142. package/build/screen-layout.js.map +7 -0
  143. package/build/screen-revisions/index.js +147 -0
  144. package/build/screen-revisions/index.js.map +7 -0
  145. package/build/screen-revisions/revisions-buttons.js +198 -0
  146. package/build/screen-revisions/revisions-buttons.js.map +7 -0
  147. package/build/screen-revisions/types.js +17 -0
  148. package/build/screen-revisions/types.js.map +7 -0
  149. package/build/screen-revisions/use-global-styles-revisions.js +163 -0
  150. package/build/screen-revisions/use-global-styles-revisions.js.map +7 -0
  151. package/build/screen-root.js +134 -0
  152. package/build/screen-root.js.map +7 -0
  153. package/build/screen-shadows.js +49 -0
  154. package/build/screen-shadows.js.map +7 -0
  155. package/build/screen-style-variations.js +52 -0
  156. package/build/screen-style-variations.js.map +7 -0
  157. package/build/screen-typography-element.js +167 -0
  158. package/build/screen-typography-element.js.map +7 -0
  159. package/build/screen-typography.js +65 -0
  160. package/build/screen-typography.js.map +7 -0
  161. package/build/shadow-utils.js +125 -0
  162. package/build/shadow-utils.js.map +7 -0
  163. package/build/shadows-edit-panel.js +503 -0
  164. package/build/shadows-edit-panel.js.map +7 -0
  165. package/build/shadows-panel.js +203 -0
  166. package/build/shadows-panel.js.map +7 -0
  167. package/build/size-control/index.js +86 -0
  168. package/build/size-control/index.js.map +7 -0
  169. package/build/style-variations-container.js +130 -0
  170. package/build/style-variations-container.js.map +7 -0
  171. package/build/style-variations-content.js +52 -0
  172. package/build/style-variations-content.js.map +7 -0
  173. package/build/style-variations.js +41 -0
  174. package/build/style-variations.js.map +7 -0
  175. package/build/subtitle.js +33 -0
  176. package/build/subtitle.js.map +7 -0
  177. package/build/typography-elements.js +117 -0
  178. package/build/typography-elements.js.map +7 -0
  179. package/build/typography-example.js +79 -0
  180. package/build/typography-example.js.map +7 -0
  181. package/build/typography-panel.js +64 -0
  182. package/build/typography-panel.js.map +7 -0
  183. package/build/typography-preview.js +70 -0
  184. package/build/typography-preview.js.map +7 -0
  185. package/build/typography-variations.js +41 -0
  186. package/build/typography-variations.js.map +7 -0
  187. package/build/utils.js +210 -0
  188. package/build/utils.js.map +7 -0
  189. package/build/variations/variation.js +116 -0
  190. package/build/variations/variation.js.map +7 -0
  191. package/build/variations/variations-color.js +64 -0
  192. package/build/variations/variations-color.js.map +7 -0
  193. package/build/variations/variations-panel.js +69 -0
  194. package/build/variations/variations-panel.js.map +7 -0
  195. package/build/variations/variations-typography.js +80 -0
  196. package/build/variations/variations-typography.js.map +7 -0
  197. package/build/with-global-styles-provider.js +48 -0
  198. package/build/with-global-styles-provider.js.map +7 -0
  199. package/build-module/background-panel.js +38 -0
  200. package/build-module/background-panel.js.map +7 -0
  201. package/build-module/block-preview-panel.js +70 -0
  202. package/build-module/block-preview-panel.js.map +7 -0
  203. package/build-module/color-indicator-wrapper.js +25 -0
  204. package/build-module/color-indicator-wrapper.js.map +7 -0
  205. package/build-module/color-palette-panel.js +97 -0
  206. package/build-module/color-palette-panel.js.map +7 -0
  207. package/build-module/color-preview.js +70 -0
  208. package/build-module/color-preview.js.map +7 -0
  209. package/build-module/color-variations.js +7 -0
  210. package/build-module/color-variations.js.map +7 -0
  211. package/build-module/confirm-reset-shadow-dialog.js +35 -0
  212. package/build-module/confirm-reset-shadow-dialog.js.map +7 -0
  213. package/build-module/context.js +13 -0
  214. package/build-module/context.js.map +7 -0
  215. package/build-module/dimensions-panel.js +69 -0
  216. package/build-module/dimensions-panel.js.map +7 -0
  217. package/build-module/font-families.js +92 -0
  218. package/build-module/font-families.js.map +7 -0
  219. package/build-module/font-family-item.js +32 -0
  220. package/build-module/font-family-item.js.map +7 -0
  221. package/build-module/font-library-modal/collection-font-variant.js +45 -0
  222. package/build-module/font-library-modal/collection-font-variant.js.map +7 -0
  223. package/build-module/font-library-modal/context.js +382 -0
  224. package/build-module/font-library-modal/context.js.map +7 -0
  225. package/build-module/font-library-modal/font-card.js +57 -0
  226. package/build-module/font-library-modal/font-card.js.map +7 -0
  227. package/build-module/font-library-modal/font-collection.js +510 -0
  228. package/build-module/font-library-modal/font-collection.js.map +7 -0
  229. package/build-module/font-library-modal/font-demo.js +94 -0
  230. package/build-module/font-library-modal/font-demo.js.map +7 -0
  231. package/build-module/font-library-modal/google-fonts-confirm-dialog.js +45 -0
  232. package/build-module/font-library-modal/google-fonts-confirm-dialog.js.map +7 -0
  233. package/build-module/font-library-modal/index.js +83 -0
  234. package/build-module/font-library-modal/index.js.map +7 -0
  235. package/build-module/font-library-modal/installed-fonts.js +442 -0
  236. package/build-module/font-library-modal/installed-fonts.js.map +7 -0
  237. package/build-module/font-library-modal/lib/inflate.js +2636 -0
  238. package/build-module/font-library-modal/lib/inflate.js.map +7 -0
  239. package/build-module/font-library-modal/lib/lib-font.browser.d.js +9 -0
  240. package/build-module/font-library-modal/lib/lib-font.browser.d.js.map +7 -0
  241. package/build-module/font-library-modal/lib/lib-font.browser.js +3754 -0
  242. package/build-module/font-library-modal/lib/lib-font.browser.js.map +7 -0
  243. package/build-module/font-library-modal/lib/unbrotli.js +3686 -0
  244. package/build-module/font-library-modal/lib/unbrotli.js.map +7 -0
  245. package/build-module/font-library-modal/library-font-details.js +36 -0
  246. package/build-module/font-library-modal/library-font-details.js.map +7 -0
  247. package/build-module/font-library-modal/library-font-variant.js +51 -0
  248. package/build-module/font-library-modal/library-font-variant.js.map +7 -0
  249. package/build-module/font-library-modal/resolvers.js +76 -0
  250. package/build-module/font-library-modal/resolvers.js.map +7 -0
  251. package/build-module/font-library-modal/types.js +1 -0
  252. package/build-module/font-library-modal/types.js.map +7 -0
  253. package/build-module/font-library-modal/upload-fonts.js +187 -0
  254. package/build-module/font-library-modal/upload-fonts.js.map +7 -0
  255. package/build-module/font-library-modal/utils/constants.js +23 -0
  256. package/build-module/font-library-modal/utils/constants.js.map +7 -0
  257. package/build-module/font-library-modal/utils/filter-fonts.js +19 -0
  258. package/build-module/font-library-modal/utils/filter-fonts.js.map +7 -0
  259. package/build-module/font-library-modal/utils/fonts-outline.js +26 -0
  260. package/build-module/font-library-modal/utils/fonts-outline.js.map +7 -0
  261. package/build-module/font-library-modal/utils/index.js +238 -0
  262. package/build-module/font-library-modal/utils/index.js.map +7 -0
  263. package/build-module/font-library-modal/utils/make-families-from-faces.js +25 -0
  264. package/build-module/font-library-modal/utils/make-families-from-faces.js.map +7 -0
  265. package/build-module/font-library-modal/utils/preview-styles.js +92 -0
  266. package/build-module/font-library-modal/utils/preview-styles.js.map +7 -0
  267. package/build-module/font-library-modal/utils/set-immutably.js +16 -0
  268. package/build-module/font-library-modal/utils/set-immutably.js.map +7 -0
  269. package/build-module/font-library-modal/utils/sort-font-faces.js +35 -0
  270. package/build-module/font-library-modal/utils/sort-font-faces.js.map +7 -0
  271. package/build-module/font-library-modal/utils/toggleFont.js +43 -0
  272. package/build-module/font-library-modal/utils/toggleFont.js.map +7 -0
  273. package/build-module/font-sizes/confirm-delete-font-size-dialog.js +40 -0
  274. package/build-module/font-sizes/confirm-delete-font-size-dialog.js.map +7 -0
  275. package/build-module/font-sizes/confirm-reset-font-sizes-dialog.js +35 -0
  276. package/build-module/font-sizes/confirm-reset-font-sizes-dialog.js.map +7 -0
  277. package/build-module/font-sizes/font-size-preview.js +30 -0
  278. package/build-module/font-sizes/font-size-preview.js.map +7 -0
  279. package/build-module/font-sizes/font-size.js +241 -0
  280. package/build-module/font-sizes/font-size.js.map +7 -0
  281. package/build-module/font-sizes/font-sizes-count.js +25 -0
  282. package/build-module/font-sizes/font-sizes-count.js.map +7 -0
  283. package/build-module/font-sizes/font-sizes.js +200 -0
  284. package/build-module/font-sizes/font-sizes.js.map +7 -0
  285. package/build-module/font-sizes/rename-font-size-dialog.js +82 -0
  286. package/build-module/font-sizes/rename-font-size-dialog.js.map +7 -0
  287. package/build-module/global-styles-ui.js +182 -0
  288. package/build-module/global-styles-ui.js.map +7 -0
  289. package/build-module/gradients-palette-panel.js +118 -0
  290. package/build-module/gradients-palette-panel.js.map +7 -0
  291. package/build-module/highlighted-colors.js +37 -0
  292. package/build-module/highlighted-colors.js.map +7 -0
  293. package/build-module/hooks.js +144 -0
  294. package/build-module/hooks.js.map +7 -0
  295. package/build-module/icon-with-current-color.js +22 -0
  296. package/build-module/icon-with-current-color.js.map +7 -0
  297. package/build-module/index.js +13 -0
  298. package/build-module/index.js.map +7 -0
  299. package/build-module/lock-unlock.js +10 -0
  300. package/build-module/lock-unlock.js.map +7 -0
  301. package/build-module/navigation-button.js +32 -0
  302. package/build-module/navigation-button.js.map +7 -0
  303. package/build-module/pagination/index.js +107 -0
  304. package/build-module/pagination/index.js.map +7 -0
  305. package/build-module/palette.js +70 -0
  306. package/build-module/palette.js.map +7 -0
  307. package/build-module/preset-colors.js +20 -0
  308. package/build-module/preset-colors.js.map +7 -0
  309. package/build-module/preview-colors.js +59 -0
  310. package/build-module/preview-colors.js.map +7 -0
  311. package/build-module/preview-hooks.js +36 -0
  312. package/build-module/preview-hooks.js.map +7 -0
  313. package/build-module/preview-styles.js +193 -0
  314. package/build-module/preview-styles.js.map +7 -0
  315. package/build-module/preview-typography.js +42 -0
  316. package/build-module/preview-typography.js.map +7 -0
  317. package/build-module/preview-wrapper.js +86 -0
  318. package/build-module/preview-wrapper.js.map +7 -0
  319. package/build-module/provider.js +30 -0
  320. package/build-module/provider.js.map +7 -0
  321. package/build-module/root-menu.js +58 -0
  322. package/build-module/root-menu.js.map +7 -0
  323. package/build-module/screen-background.js +28 -0
  324. package/build-module/screen-background.js.map +7 -0
  325. package/build-module/screen-block-list.js +150 -0
  326. package/build-module/screen-block-list.js.map +7 -0
  327. package/build-module/screen-block.js +293 -0
  328. package/build-module/screen-block.js.map +7 -0
  329. package/build-module/screen-color-palette.js +34 -0
  330. package/build-module/screen-color-palette.js.map +7 -0
  331. package/build-module/screen-colors.js +55 -0
  332. package/build-module/screen-colors.js.map +7 -0
  333. package/build-module/screen-css.js +48 -0
  334. package/build-module/screen-css.js.map +7 -0
  335. package/build-module/screen-header.js +44 -0
  336. package/build-module/screen-header.js.map +7 -0
  337. package/build-module/screen-layout.js +24 -0
  338. package/build-module/screen-layout.js.map +7 -0
  339. package/build-module/screen-revisions/index.js +121 -0
  340. package/build-module/screen-revisions/index.js.map +7 -0
  341. package/build-module/screen-revisions/revisions-buttons.js +178 -0
  342. package/build-module/screen-revisions/revisions-buttons.js.map +7 -0
  343. package/build-module/screen-revisions/types.js +1 -0
  344. package/build-module/screen-revisions/types.js.map +7 -0
  345. package/build-module/screen-revisions/use-global-styles-revisions.js +145 -0
  346. package/build-module/screen-revisions/use-global-styles-revisions.js.map +7 -0
  347. package/build-module/screen-root.js +114 -0
  348. package/build-module/screen-root.js.map +7 -0
  349. package/build-module/screen-shadows.js +14 -0
  350. package/build-module/screen-shadows.js.map +7 -0
  351. package/build-module/screen-style-variations.js +32 -0
  352. package/build-module/screen-style-variations.js.map +7 -0
  353. package/build-module/screen-typography-element.js +141 -0
  354. package/build-module/screen-typography-element.js.map +7 -0
  355. package/build-module/screen-typography.js +35 -0
  356. package/build-module/screen-typography.js.map +7 -0
  357. package/build-module/shadow-utils.js +98 -0
  358. package/build-module/shadow-utils.js.map +7 -0
  359. package/build-module/shadows-edit-panel.js +502 -0
  360. package/build-module/shadows-edit-panel.js.map +7 -0
  361. package/build-module/shadows-panel.js +182 -0
  362. package/build-module/shadows-panel.js.map +7 -0
  363. package/build-module/size-control/index.js +72 -0
  364. package/build-module/size-control/index.js.map +7 -0
  365. package/build-module/style-variations-container.js +100 -0
  366. package/build-module/style-variations-container.js.map +7 -0
  367. package/build-module/style-variations-content.js +18 -0
  368. package/build-module/style-variations-content.js.map +7 -0
  369. package/build-module/style-variations.js +7 -0
  370. package/build-module/style-variations.js.map +7 -0
  371. package/build-module/subtitle.js +9 -0
  372. package/build-module/subtitle.js.map +7 -0
  373. package/build-module/typography-elements.js +102 -0
  374. package/build-module/typography-elements.js.map +7 -0
  375. package/build-module/typography-example.js +59 -0
  376. package/build-module/typography-example.js.map +7 -0
  377. package/build-module/typography-panel.js +44 -0
  378. package/build-module/typography-panel.js.map +7 -0
  379. package/build-module/typography-preview.js +50 -0
  380. package/build-module/typography-preview.js.map +7 -0
  381. package/build-module/typography-variations.js +7 -0
  382. package/build-module/typography-variations.js.map +7 -0
  383. package/build-module/utils.js +179 -0
  384. package/build-module/utils.js.map +7 -0
  385. package/build-module/variations/variation.js +86 -0
  386. package/build-module/variations/variation.js.map +7 -0
  387. package/build-module/variations/variations-color.js +37 -0
  388. package/build-module/variations/variations-color.js.map +7 -0
  389. package/build-module/variations/variations-panel.js +44 -0
  390. package/build-module/variations/variations-panel.js.map +7 -0
  391. package/build-module/variations/variations-typography.js +53 -0
  392. package/build-module/variations/variations-typography.js.map +7 -0
  393. package/build-module/with-global-styles-provider.js +24 -0
  394. package/build-module/with-global-styles-provider.js.map +7 -0
  395. package/build-style/style-rtl.css +717 -0
  396. package/build-style/style.css +718 -0
  397. package/build-types/background-panel.d.ts +10 -0
  398. package/build-types/background-panel.d.ts.map +1 -0
  399. package/build-types/block-preview-panel.d.ts +7 -0
  400. package/build-types/block-preview-panel.d.ts.map +1 -0
  401. package/build-types/color-indicator-wrapper.d.ts +7 -0
  402. package/build-types/color-indicator-wrapper.d.ts.map +1 -0
  403. package/build-types/color-palette-panel.d.ts +6 -0
  404. package/build-types/color-palette-panel.d.ts.map +1 -0
  405. package/build-types/color-preview.d.ts +2 -0
  406. package/build-types/color-preview.d.ts.map +1 -0
  407. package/build-types/color-variations.d.ts +27 -0
  408. package/build-types/color-variations.d.ts.map +1 -0
  409. package/build-types/confirm-reset-shadow-dialog.d.ts +10 -0
  410. package/build-types/confirm-reset-shadow-dialog.d.ts.map +1 -0
  411. package/build-types/context.d.ts +10 -0
  412. package/build-types/context.d.ts.map +1 -0
  413. package/build-types/dimensions-panel.d.ts +2 -0
  414. package/build-types/dimensions-panel.d.ts.map +1 -0
  415. package/build-types/font-families.d.ts +4 -0
  416. package/build-types/font-families.d.ts.map +1 -0
  417. package/build-types/font-family-item.d.ts +7 -0
  418. package/build-types/font-family-item.d.ts.map +1 -0
  419. package/build-types/font-library-modal/collection-font-variant.d.ts +4 -0
  420. package/build-types/font-library-modal/collection-font-variant.d.ts.map +1 -0
  421. package/build-types/font-library-modal/context.d.ts +7 -0
  422. package/build-types/font-library-modal/context.d.ts.map +1 -0
  423. package/build-types/font-library-modal/font-card.d.ts +9 -0
  424. package/build-types/font-library-modal/font-card.d.ts.map +1 -0
  425. package/build-types/font-library-modal/font-collection.d.ts +5 -0
  426. package/build-types/font-library-modal/font-collection.d.ts.map +1 -0
  427. package/build-types/font-library-modal/font-demo.d.ts +4 -0
  428. package/build-types/font-library-modal/font-demo.d.ts.map +1 -0
  429. package/build-types/font-library-modal/google-fonts-confirm-dialog.d.ts +3 -0
  430. package/build-types/font-library-modal/google-fonts-confirm-dialog.d.ts.map +1 -0
  431. package/build-types/font-library-modal/index.d.ts +6 -0
  432. package/build-types/font-library-modal/index.d.ts.map +1 -0
  433. package/build-types/font-library-modal/installed-fonts.d.ts +3 -0
  434. package/build-types/font-library-modal/installed-fonts.d.ts.map +1 -0
  435. package/build-types/font-library-modal/library-font-details.d.ts +6 -0
  436. package/build-types/font-library-modal/library-font-details.d.ts.map +1 -0
  437. package/build-types/font-library-modal/library-font-variant.d.ts +7 -0
  438. package/build-types/font-library-modal/library-font-variant.d.ts.map +1 -0
  439. package/build-types/font-library-modal/resolvers.d.ts +43 -0
  440. package/build-types/font-library-modal/resolvers.d.ts.map +1 -0
  441. package/build-types/font-library-modal/types.d.ts +133 -0
  442. package/build-types/font-library-modal/types.d.ts.map +1 -0
  443. package/build-types/font-library-modal/upload-fonts.d.ts +3 -0
  444. package/build-types/font-library-modal/upload-fonts.d.ts.map +1 -0
  445. package/build-types/font-library-modal/utils/constants.d.ts +4 -0
  446. package/build-types/font-library-modal/utils/constants.d.ts.map +1 -0
  447. package/build-types/font-library-modal/utils/filter-fonts.d.ts +25 -0
  448. package/build-types/font-library-modal/utils/filter-fonts.d.ts.map +1 -0
  449. package/build-types/font-library-modal/utils/fonts-outline.d.ts +7 -0
  450. package/build-types/font-library-modal/utils/fonts-outline.d.ts.map +1 -0
  451. package/build-types/font-library-modal/utils/index.d.ts +21 -0
  452. package/build-types/font-library-modal/utils/index.d.ts.map +1 -0
  453. package/build-types/font-library-modal/utils/make-families-from-faces.d.ts +6 -0
  454. package/build-types/font-library-modal/utils/make-families-from-faces.d.ts.map +1 -0
  455. package/build-types/font-library-modal/utils/preview-styles.d.ts +13 -0
  456. package/build-types/font-library-modal/utils/preview-styles.d.ts.map +1 -0
  457. package/build-types/font-library-modal/utils/set-immutably.d.ts +13 -0
  458. package/build-types/font-library-modal/utils/set-immutably.d.ts.map +1 -0
  459. package/build-types/font-library-modal/utils/sort-font-faces.d.ts +6 -0
  460. package/build-types/font-library-modal/utils/sort-font-faces.d.ts.map +1 -0
  461. package/build-types/font-library-modal/utils/toggleFont.d.ts +38 -0
  462. package/build-types/font-library-modal/utils/toggleFont.d.ts.map +1 -0
  463. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts +10 -0
  464. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts.map +1 -0
  465. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts +10 -0
  466. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts.map +1 -0
  467. package/build-types/font-sizes/font-size-preview.d.ts +7 -0
  468. package/build-types/font-sizes/font-size-preview.d.ts.map +1 -0
  469. package/build-types/font-sizes/font-size.d.ts +4 -0
  470. package/build-types/font-sizes/font-size.d.ts.map +1 -0
  471. package/build-types/font-sizes/font-sizes-count.d.ts +3 -0
  472. package/build-types/font-sizes/font-sizes-count.d.ts.map +1 -0
  473. package/build-types/font-sizes/font-sizes.d.ts +3 -0
  474. package/build-types/font-sizes/font-sizes.d.ts.map +1 -0
  475. package/build-types/font-sizes/rename-font-size-dialog.d.ts +9 -0
  476. package/build-types/font-sizes/rename-font-size-dialog.d.ts.map +1 -0
  477. package/build-types/global-styles-ui.d.ts +26 -0
  478. package/build-types/global-styles-ui.d.ts.map +1 -0
  479. package/build-types/gradients-palette-panel.d.ts +6 -0
  480. package/build-types/gradients-palette-panel.d.ts.map +1 -0
  481. package/build-types/highlighted-colors.d.ts +7 -0
  482. package/build-types/highlighted-colors.d.ts.map +1 -0
  483. package/build-types/hooks.d.ts +46 -0
  484. package/build-types/hooks.d.ts.map +1 -0
  485. package/build-types/icon-with-current-color.d.ts +9 -0
  486. package/build-types/icon-with-current-color.d.ts.map +1 -0
  487. package/build-types/index.d.ts +6 -0
  488. package/build-types/index.d.ts.map +1 -0
  489. package/build-types/lock-unlock.d.ts +2 -0
  490. package/build-types/lock-unlock.d.ts.map +1 -0
  491. package/build-types/navigation-button.d.ts +10 -0
  492. package/build-types/navigation-button.d.ts.map +1 -0
  493. package/build-types/pagination/index.d.ts +13 -0
  494. package/build-types/pagination/index.d.ts.map +1 -0
  495. package/build-types/palette.d.ts +6 -0
  496. package/build-types/palette.d.ts.map +1 -0
  497. package/build-types/preset-colors.d.ts +2 -0
  498. package/build-types/preset-colors.d.ts.map +1 -0
  499. package/build-types/preview-colors.d.ts +8 -0
  500. package/build-types/preview-colors.d.ts.map +1 -0
  501. package/build-types/preview-hooks.d.ts +9 -0
  502. package/build-types/preview-hooks.d.ts.map +1 -0
  503. package/build-types/preview-styles.d.ts +9 -0
  504. package/build-types/preview-styles.d.ts.map +1 -0
  505. package/build-types/preview-typography.d.ts +8 -0
  506. package/build-types/preview-typography.d.ts.map +1 -0
  507. package/build-types/preview-wrapper.d.ts +15 -0
  508. package/build-types/preview-wrapper.d.ts.map +1 -0
  509. package/build-types/provider.d.ts +15 -0
  510. package/build-types/provider.d.ts.map +1 -0
  511. package/build-types/root-menu.d.ts +3 -0
  512. package/build-types/root-menu.d.ts.map +1 -0
  513. package/build-types/screen-background.d.ts +3 -0
  514. package/build-types/screen-background.d.ts.map +1 -0
  515. package/build-types/screen-block-list.d.ts +4 -0
  516. package/build-types/screen-block-list.d.ts.map +1 -0
  517. package/build-types/screen-block.d.ts +7 -0
  518. package/build-types/screen-block.d.ts.map +1 -0
  519. package/build-types/screen-color-palette.d.ts +5 -0
  520. package/build-types/screen-color-palette.d.ts.map +1 -0
  521. package/build-types/screen-colors.d.ts +3 -0
  522. package/build-types/screen-colors.d.ts.map +1 -0
  523. package/build-types/screen-css.d.ts +3 -0
  524. package/build-types/screen-css.d.ts.map +1 -0
  525. package/build-types/screen-header.d.ts +8 -0
  526. package/build-types/screen-header.d.ts.map +1 -0
  527. package/build-types/screen-layout.d.ts +3 -0
  528. package/build-types/screen-layout.d.ts.map +1 -0
  529. package/build-types/screen-revisions/index.d.ts +6 -0
  530. package/build-types/screen-revisions/index.d.ts.map +1 -0
  531. package/build-types/screen-revisions/revisions-buttons.d.ts +23 -0
  532. package/build-types/screen-revisions/revisions-buttons.d.ts.map +1 -0
  533. package/build-types/screen-revisions/types.d.ts +17 -0
  534. package/build-types/screen-revisions/types.d.ts.map +1 -0
  535. package/build-types/screen-revisions/use-global-styles-revisions.d.ts +17 -0
  536. package/build-types/screen-revisions/use-global-styles-revisions.d.ts.map +1 -0
  537. package/build-types/screen-root.d.ts +3 -0
  538. package/build-types/screen-root.d.ts.map +1 -0
  539. package/build-types/screen-shadows.d.ts +3 -0
  540. package/build-types/screen-shadows.d.ts.map +1 -0
  541. package/build-types/screen-style-variations.d.ts +3 -0
  542. package/build-types/screen-style-variations.d.ts.map +1 -0
  543. package/build-types/screen-typography-element.d.ts +28 -0
  544. package/build-types/screen-typography-element.d.ts.map +1 -0
  545. package/build-types/screen-typography.d.ts +3 -0
  546. package/build-types/screen-typography.d.ts.map +1 -0
  547. package/build-types/shadow-utils.d.ts +126 -0
  548. package/build-types/shadow-utils.d.ts.map +1 -0
  549. package/build-types/shadows-edit-panel.d.ts +2 -0
  550. package/build-types/shadows-edit-panel.d.ts.map +1 -0
  551. package/build-types/shadows-panel.d.ts +3 -0
  552. package/build-types/shadows-panel.d.ts.map +1 -0
  553. package/build-types/size-control/index.d.ts +11 -0
  554. package/build-types/size-control/index.d.ts.map +1 -0
  555. package/build-types/stories/index.story.d.ts +6 -0
  556. package/build-types/stories/index.story.d.ts.map +1 -0
  557. package/build-types/style-variations-container.d.ts +6 -0
  558. package/build-types/style-variations-container.d.ts.map +1 -0
  559. package/build-types/style-variations-content.d.ts +2 -0
  560. package/build-types/style-variations-content.d.ts.map +1 -0
  561. package/build-types/style-variations.d.ts +25 -0
  562. package/build-types/style-variations.d.ts.map +1 -0
  563. package/build-types/subtitle.d.ts +7 -0
  564. package/build-types/subtitle.d.ts.map +1 -0
  565. package/build-types/test/shadow-utils.spec.d.ts +2 -0
  566. package/build-types/test/shadow-utils.spec.d.ts.map +1 -0
  567. package/build-types/test/utils.spec.d.ts +2 -0
  568. package/build-types/test/utils.spec.d.ts.map +1 -0
  569. package/build-types/typography-elements.d.ts +3 -0
  570. package/build-types/typography-elements.d.ts.map +1 -0
  571. package/build-types/typography-example.d.ts +7 -0
  572. package/build-types/typography-example.d.ts.map +1 -0
  573. package/build-types/typography-panel.d.ts +7 -0
  574. package/build-types/typography-panel.d.ts.map +1 -0
  575. package/build-types/typography-preview.d.ts +8 -0
  576. package/build-types/typography-preview.d.ts.map +1 -0
  577. package/build-types/typography-variations.d.ts +27 -0
  578. package/build-types/typography-variations.d.ts.map +1 -0
  579. package/build-types/utils.d.ts +63 -0
  580. package/build-types/utils.d.ts.map +1 -0
  581. package/build-types/variations/variation.d.ts +10 -0
  582. package/build-types/variations/variation.d.ts.map +1 -0
  583. package/build-types/variations/variations-color.d.ts +7 -0
  584. package/build-types/variations/variations-color.d.ts.map +1 -0
  585. package/build-types/variations/variations-panel.d.ts +13 -0
  586. package/build-types/variations/variations-panel.d.ts.map +1 -0
  587. package/build-types/variations/variations-typography.d.ts +7 -0
  588. package/build-types/variations/variations-typography.d.ts.map +1 -0
  589. package/build-types/with-global-styles-provider.d.ts +20 -0
  590. package/build-types/with-global-styles-provider.d.ts.map +1 -0
  591. package/package.json +67 -0
  592. package/src/README.md +99 -0
  593. package/src/background-panel.tsx +56 -0
  594. package/src/block-preview-panel.tsx +91 -0
  595. package/src/color-indicator-wrapper.tsx +34 -0
  596. package/src/color-palette-panel.tsx +111 -0
  597. package/src/color-preview.tsx +78 -0
  598. package/src/color-variations.tsx +35 -0
  599. package/src/confirm-reset-shadow-dialog.tsx +45 -0
  600. package/src/context.ts +21 -0
  601. package/src/dimensions-panel.tsx +85 -0
  602. package/src/font-families.tsx +127 -0
  603. package/src/font-family-item.tsx +52 -0
  604. package/src/font-library-modal/collection-font-variant.tsx +52 -0
  605. package/src/font-library-modal/context.tsx +591 -0
  606. package/src/font-library-modal/font-card.tsx +77 -0
  607. package/src/font-library-modal/font-collection.tsx +592 -0
  608. package/src/font-library-modal/font-demo.tsx +123 -0
  609. package/src/font-library-modal/google-fonts-confirm-dialog.tsx +57 -0
  610. package/src/font-library-modal/index.tsx +110 -0
  611. package/src/font-library-modal/installed-fonts.tsx +547 -0
  612. package/src/font-library-modal/lib/inflate.js +4112 -0
  613. package/src/font-library-modal/lib/lib-font.browser.d.ts +11 -0
  614. package/src/font-library-modal/lib/lib-font.browser.js +3861 -0
  615. package/src/font-library-modal/lib/unbrotli.js +2706 -0
  616. package/src/font-library-modal/library-font-details.tsx +46 -0
  617. package/src/font-library-modal/library-font-variant.tsx +67 -0
  618. package/src/font-library-modal/resolvers.tsx +100 -0
  619. package/src/font-library-modal/style.scss +222 -0
  620. package/src/font-library-modal/types.ts +176 -0
  621. package/src/font-library-modal/upload-fonts.tsx +269 -0
  622. package/src/font-library-modal/utils/constants.ts +23 -0
  623. package/src/font-library-modal/utils/filter-fonts.ts +47 -0
  624. package/src/font-library-modal/utils/fonts-outline.ts +33 -0
  625. package/src/font-library-modal/utils/index.ts +368 -0
  626. package/src/font-library-modal/utils/make-families-from-faces.ts +34 -0
  627. package/src/font-library-modal/utils/preview-styles.ts +167 -0
  628. package/src/font-library-modal/utils/set-immutably.ts +37 -0
  629. package/src/font-library-modal/utils/sort-font-faces.ts +46 -0
  630. package/src/font-library-modal/utils/toggleFont.ts +109 -0
  631. package/src/font-sizes/confirm-delete-font-size-dialog.tsx +51 -0
  632. package/src/font-sizes/confirm-reset-font-sizes-dialog.tsx +45 -0
  633. package/src/font-sizes/font-size-preview.tsx +47 -0
  634. package/src/font-sizes/font-size.tsx +289 -0
  635. package/src/font-sizes/font-sizes-count.tsx +37 -0
  636. package/src/font-sizes/font-sizes.tsx +265 -0
  637. package/src/font-sizes/rename-font-size-dialog.tsx +83 -0
  638. package/src/global-styles-ui.tsx +292 -0
  639. package/src/gradients-palette-panel.tsx +126 -0
  640. package/src/highlighted-colors.tsx +44 -0
  641. package/src/hooks.ts +251 -0
  642. package/src/icon-with-current-color.tsx +31 -0
  643. package/src/index.ts +7 -0
  644. package/src/lock-unlock.ts +10 -0
  645. package/src/navigation-button.tsx +53 -0
  646. package/src/pagination/index.tsx +107 -0
  647. package/src/pagination/style.scss +7 -0
  648. package/src/palette.tsx +101 -0
  649. package/src/preset-colors.tsx +18 -0
  650. package/src/preview-colors.tsx +68 -0
  651. package/src/preview-hooks.tsx +58 -0
  652. package/src/preview-styles.tsx +196 -0
  653. package/src/preview-typography.tsx +49 -0
  654. package/src/preview-wrapper.tsx +137 -0
  655. package/src/provider.tsx +54 -0
  656. package/src/root-menu.tsx +87 -0
  657. package/src/screen-background.tsx +37 -0
  658. package/src/screen-block-list.tsx +198 -0
  659. package/src/screen-block.tsx +370 -0
  660. package/src/screen-color-palette.tsx +47 -0
  661. package/src/screen-colors.tsx +67 -0
  662. package/src/screen-css.tsx +56 -0
  663. package/src/screen-header.tsx +56 -0
  664. package/src/screen-layout.tsx +34 -0
  665. package/src/screen-revisions/index.tsx +158 -0
  666. package/src/screen-revisions/revisions-buttons.tsx +259 -0
  667. package/src/screen-revisions/style.scss +194 -0
  668. package/src/screen-revisions/types.ts +18 -0
  669. package/src/screen-revisions/use-global-styles-revisions.tsx +204 -0
  670. package/src/screen-root.tsx +146 -0
  671. package/src/screen-shadows.tsx +13 -0
  672. package/src/screen-style-variations.tsx +36 -0
  673. package/src/screen-typography-element.tsx +127 -0
  674. package/src/screen-typography.tsx +41 -0
  675. package/src/shadow-utils.ts +167 -0
  676. package/src/shadows-edit-panel.tsx +559 -0
  677. package/src/shadows-panel.tsx +207 -0
  678. package/src/size-control/index.tsx +97 -0
  679. package/src/size-control/style.scss +7 -0
  680. package/src/stories/index.story.js +410 -0
  681. package/src/style-variations-container.tsx +153 -0
  682. package/src/style-variations-content.tsx +24 -0
  683. package/src/style-variations.tsx +33 -0
  684. package/src/style.scss +287 -0
  685. package/src/subtitle.tsx +17 -0
  686. package/src/test/shadow-utils.spec.js +251 -0
  687. package/src/test/utils.spec.js +59 -0
  688. package/src/typography-elements.tsx +113 -0
  689. package/src/typography-example.tsx +78 -0
  690. package/src/typography-panel.tsx +56 -0
  691. package/src/typography-preview.tsx +61 -0
  692. package/src/typography-variations.tsx +35 -0
  693. package/src/utils.ts +301 -0
  694. package/src/variations/style.scss +43 -0
  695. package/src/variations/variation.tsx +113 -0
  696. package/src/variations/variations-color.tsx +54 -0
  697. package/src/variations/variations-panel.tsx +79 -0
  698. package/src/variations/variations-typography.tsx +65 -0
  699. package/src/with-global-styles-provider.tsx +44 -0
  700. package/tsconfig.json +26 -0
  701. package/tsconfig.tsbuildinfo +1 -0
package/src/utils.ts ADDED
@@ -0,0 +1,301 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { areGlobalStylesEqual } from '@wordpress/global-styles-engine';
5
+ import type { GlobalStylesConfig } from '@wordpress/global-styles-engine';
6
+
7
+ /**
8
+ * Removes all instances of properties from an object.
9
+ *
10
+ * @param object The object to remove the properties from.
11
+ * @param properties The properties to remove.
12
+ * @return The modified object.
13
+ */
14
+ export function removePropertiesFromObject(
15
+ object: any,
16
+ properties: string[]
17
+ ): any {
18
+ if ( ! properties?.length ) {
19
+ return object;
20
+ }
21
+
22
+ if (
23
+ typeof object !== 'object' ||
24
+ ! object ||
25
+ ! Object.keys( object ).length
26
+ ) {
27
+ return object;
28
+ }
29
+
30
+ for ( const key in object ) {
31
+ if ( properties.includes( key ) ) {
32
+ delete object[ key ];
33
+ } else if ( typeof object[ key ] === 'object' ) {
34
+ removePropertiesFromObject( object[ key ], properties );
35
+ }
36
+ }
37
+ return object;
38
+ }
39
+
40
+ /**
41
+ * Returns a new object, with properties specified in `properties` array.,
42
+ * maintain the original object tree structure.
43
+ * The function is recursive, so it will perform a deep search for the given properties.
44
+ * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the properties are `[ 'test' ]`.
45
+ *
46
+ * @param object The object to filter
47
+ * @param properties The properties to filter by
48
+ * @return The merged object.
49
+ */
50
+ export const filterObjectByProperties = (
51
+ object: any,
52
+ properties: string[]
53
+ ): any => {
54
+ if ( ! object || ! properties?.length ) {
55
+ return {};
56
+ }
57
+
58
+ const newObject: any = {};
59
+ Object.keys( object ).forEach( ( key ) => {
60
+ if ( properties.includes( key ) ) {
61
+ newObject[ key ] = object[ key ];
62
+ } else if ( typeof object[ key ] === 'object' ) {
63
+ const newFilter = filterObjectByProperties(
64
+ object[ key ],
65
+ properties
66
+ );
67
+ if ( Object.keys( newFilter ).length ) {
68
+ newObject[ key ] = newFilter;
69
+ }
70
+ }
71
+ } );
72
+ return newObject;
73
+ };
74
+
75
+ /**
76
+ * Compares a style variation to the same variation filtered by the specified properties.
77
+ * Returns true if the variation contains only the properties specified.
78
+ *
79
+ * @param variation The variation to compare.
80
+ * @param properties The properties to compare.
81
+ * @return Whether the variation contains only the specified properties.
82
+ */
83
+ export function isVariationWithProperties(
84
+ variation: GlobalStylesConfig,
85
+ properties: string[]
86
+ ): boolean {
87
+ const variationWithProperties = filterObjectByProperties(
88
+ structuredClone( variation ),
89
+ properties
90
+ );
91
+
92
+ return areGlobalStylesEqual( variationWithProperties, variation );
93
+ }
94
+
95
+ function getFontFamilyFromSetting( fontFamilies: any[], setting: string ): any {
96
+ if ( ! Array.isArray( fontFamilies ) || ! setting ) {
97
+ return null;
98
+ }
99
+
100
+ const fontFamilyVariable = setting.replace( 'var(', '' ).replace( ')', '' );
101
+ const fontFamilySlug = fontFamilyVariable?.split( '--' ).slice( -1 )[ 0 ];
102
+
103
+ return fontFamilies.find(
104
+ ( fontFamily ) => fontFamily.slug === fontFamilySlug
105
+ );
106
+ }
107
+
108
+ /**
109
+ * Extracts font families from a theme JSON configuration.
110
+ *
111
+ * @param themeJson The theme JSON configuration
112
+ * @return Array containing [bodyFontFamily, headingFontFamily]
113
+ */
114
+ export function getFontFamilies( themeJson: any ): [ any, any ] {
115
+ const themeFontFamilies =
116
+ themeJson?.settings?.typography?.fontFamilies?.theme;
117
+ const customFontFamilies =
118
+ themeJson?.settings?.typography?.fontFamilies?.custom;
119
+
120
+ let fontFamilies: any[] = [];
121
+ if ( themeFontFamilies && customFontFamilies ) {
122
+ fontFamilies = [ ...themeFontFamilies, ...customFontFamilies ];
123
+ } else if ( themeFontFamilies ) {
124
+ fontFamilies = themeFontFamilies;
125
+ } else if ( customFontFamilies ) {
126
+ fontFamilies = customFontFamilies;
127
+ }
128
+ const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
129
+ const bodyFontFamily = getFontFamilyFromSetting(
130
+ fontFamilies,
131
+ bodyFontFamilySetting
132
+ );
133
+
134
+ const headingFontFamilySetting =
135
+ themeJson?.styles?.elements?.heading?.typography?.fontFamily;
136
+
137
+ let headingFontFamily;
138
+ if ( ! headingFontFamilySetting ) {
139
+ headingFontFamily = bodyFontFamily;
140
+ } else {
141
+ headingFontFamily = getFontFamilyFromSetting(
142
+ fontFamilies,
143
+ themeJson?.styles?.elements?.heading?.typography?.fontFamily
144
+ );
145
+ }
146
+
147
+ return [ bodyFontFamily, headingFontFamily ];
148
+ }
149
+
150
+ function findNearest( input: number, numbers: number[] ): number | null {
151
+ // If the numbers array is empty, return null
152
+ if ( numbers.length === 0 ) {
153
+ return null;
154
+ }
155
+ // Sort the array based on the absolute difference with the input
156
+ numbers.sort( ( a, b ) => Math.abs( input - a ) - Math.abs( input - b ) );
157
+ // Return the first element (which will be the nearest) from the sorted array
158
+ return numbers[ 0 ];
159
+ }
160
+
161
+ function extractFontWeights( fontFaces: any[] ): number[] {
162
+ const result: number[] = [];
163
+
164
+ fontFaces.forEach( ( face ) => {
165
+ const weights = String( face.fontWeight ).split( ' ' );
166
+
167
+ if ( weights.length === 2 ) {
168
+ const start = parseInt( weights[ 0 ] );
169
+ const end = parseInt( weights[ 1 ] );
170
+
171
+ for ( let i = start; i <= end; i += 100 ) {
172
+ result.push( i );
173
+ }
174
+ } else if ( weights.length === 1 ) {
175
+ result.push( parseInt( weights[ 0 ] ) );
176
+ }
177
+ } );
178
+
179
+ return result;
180
+ }
181
+
182
+ /*
183
+ * Format the font family to use in the CSS font-family property of a CSS rule.
184
+ *
185
+ * The input can be a string with the font family name or a string with multiple font family names separated by commas.
186
+ * It follows the recommendations from the CSS Fonts Module Level 4.
187
+ * https://www.w3.org/TR/css-fonts-4/#font-family-prop
188
+ *
189
+ * @param input - The font family.
190
+ * @return The formatted font family.
191
+ */
192
+ export function formatFontFamily( input: string ): string {
193
+ // Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).
194
+ const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/;
195
+ const output = input.trim();
196
+
197
+ const formatItem = ( item: string ) => {
198
+ item = item.trim();
199
+ if ( item.match( regex ) ) {
200
+ // removes leading and trailing quotes.
201
+ item = item.replace( /^["']|["']$/g, '' );
202
+ return `"${ item }"`;
203
+ }
204
+ return item;
205
+ };
206
+
207
+ if ( output.includes( ',' ) ) {
208
+ return output
209
+ .split( ',' )
210
+ .map( formatItem )
211
+ .filter( ( item ) => item !== '' )
212
+ .join( ', ' );
213
+ }
214
+
215
+ return formatItem( output );
216
+ }
217
+
218
+ /**
219
+ * Gets the preview style for a font family.
220
+ *
221
+ * @param family The font family object
222
+ * @return CSS style object for the font family
223
+ */
224
+ export function getFamilyPreviewStyle( family: any ): React.CSSProperties {
225
+ const style: React.CSSProperties = {
226
+ fontFamily: formatFontFamily( family.fontFamily ),
227
+ };
228
+
229
+ if ( ! Array.isArray( family.fontFace ) ) {
230
+ style.fontWeight = '400';
231
+ style.fontStyle = 'normal';
232
+ return style;
233
+ }
234
+
235
+ if ( family.fontFace ) {
236
+ //get all the font faces with normal style
237
+ const normalFaces = family.fontFace.filter(
238
+ ( face: any ) =>
239
+ face?.fontStyle && face.fontStyle.toLowerCase() === 'normal'
240
+ );
241
+ if ( normalFaces.length > 0 ) {
242
+ style.fontStyle = 'normal';
243
+ const normalWeights = extractFontWeights( normalFaces );
244
+ const nearestWeight = findNearest( 400, normalWeights );
245
+ style.fontWeight = String( nearestWeight ) || '400';
246
+ } else {
247
+ style.fontStyle =
248
+ ( family.fontFace.length && family.fontFace[ 0 ].fontStyle ) ||
249
+ 'normal';
250
+ style.fontWeight =
251
+ ( family.fontFace.length &&
252
+ String( family.fontFace[ 0 ].fontWeight ) ) ||
253
+ '400';
254
+ }
255
+ }
256
+
257
+ return style;
258
+ }
259
+
260
+ /**
261
+ * Iterates through the presets array and searches for slugs that start with the specified
262
+ * slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found
263
+ * and returns one greater than the highest found suffix, ensuring that the new index is unique.
264
+ *
265
+ * @param presets The array of preset objects, each potentially containing a slug property.
266
+ * @param slugPrefix The prefix to look for in the preset slugs.
267
+ *
268
+ * @return The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.
269
+ */
270
+ /**
271
+ * Gets the variation class name for a block style variation.
272
+ *
273
+ * @param variation The variation name.
274
+ * @return The variation class name.
275
+ */
276
+ export function getVariationClassName( variation: string ): string {
277
+ if ( ! variation ) {
278
+ return '';
279
+ }
280
+ return `is-style-${ variation }`;
281
+ }
282
+
283
+ export function getNewIndexFromPresets(
284
+ presets: any[],
285
+ slugPrefix: string
286
+ ): number {
287
+ const nameRegex = new RegExp( `^${ slugPrefix }([\\d]+)$` );
288
+ const highestPresetValue = presets.reduce( ( currentHighest, preset ) => {
289
+ if ( typeof preset?.slug === 'string' ) {
290
+ const matches = preset?.slug.match( nameRegex );
291
+ if ( matches ) {
292
+ const id = parseInt( matches[ 1 ], 10 );
293
+ if ( id > currentHighest ) {
294
+ return id;
295
+ }
296
+ }
297
+ }
298
+ return currentHighest;
299
+ }, 0 );
300
+ return highestPresetValue + 1;
301
+ }
@@ -0,0 +1,43 @@
1
+ @use "@wordpress/base-styles/colors" as *;
2
+ @use "@wordpress/base-styles/variables" as *;
3
+
4
+ .global-styles-ui-variations_item {
5
+ box-sizing: border-box;
6
+ // To round the outline in Windows 10 high contrast mode.
7
+ cursor: pointer;
8
+
9
+ .global-styles-ui-variations_item-preview {
10
+ border-radius: $radius-small;
11
+ outline: $border-width solid rgba($black, 0.1);
12
+ outline-offset: -$border-width;
13
+ overflow: hidden;
14
+ position: relative;
15
+ @media not (prefers-reduced-motion) {
16
+ // Add the same transition that block style variations and other buttons have.
17
+ transition: outline 0.1s linear;
18
+ }
19
+
20
+ &.is-pill {
21
+ height: $button-size-compact;
22
+
23
+ .block-editor-iframe__scale-container {
24
+ overflow: hidden;
25
+ }
26
+ }
27
+ }
28
+
29
+ &:not(.is-active):hover .global-styles-ui-variations_item-preview {
30
+ outline-color: rgba($black, 0.3);
31
+ }
32
+
33
+ &.is-active .global-styles-ui-variations_item-preview,
34
+ &:focus-visible .global-styles-ui-variations_item-preview {
35
+ outline-color: $gray-900;
36
+ outline-offset: $border-width;
37
+ outline-width: var(--wp-admin-border-width-focus);
38
+ }
39
+
40
+ &:focus-visible .global-styles-ui-variations_item-preview {
41
+ outline-color: var(--wp-admin-theme-color);
42
+ }
43
+ }
@@ -0,0 +1,113 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { Tooltip } from '@wordpress/components';
10
+ import { useMemo, useContext, useState } from '@wordpress/element';
11
+ import { ENTER } from '@wordpress/keycodes';
12
+ import { _x, sprintf } from '@wordpress/i18n';
13
+ import { areGlobalStylesEqual } from '@wordpress/global-styles-engine';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import { GlobalStylesContext } from '../context';
19
+ import { filterObjectByProperties } from '../utils';
20
+
21
+ interface VariationProps {
22
+ variation: any;
23
+ children: ( isFocused: boolean ) => React.ReactNode;
24
+ isPill?: boolean;
25
+ properties?: string[];
26
+ showTooltip?: boolean;
27
+ }
28
+
29
+ export default function Variation( {
30
+ variation,
31
+ children,
32
+ isPill = false,
33
+ properties,
34
+ showTooltip = false,
35
+ }: VariationProps ) {
36
+ const [ isFocused, setIsFocused ] = useState( false );
37
+ const {
38
+ base,
39
+ user,
40
+ onChange: setUserConfig,
41
+ } = useContext( GlobalStylesContext );
42
+
43
+ const context = useMemo( () => {
44
+ let merged = { ...base, ...variation };
45
+ if ( properties ) {
46
+ merged = filterObjectByProperties( merged, properties );
47
+ }
48
+ return {
49
+ user: variation,
50
+ base,
51
+ merged,
52
+ onChange: () => {},
53
+ };
54
+ }, [ variation, base, properties ] );
55
+
56
+ const selectVariation = () => setUserConfig( variation );
57
+
58
+ const selectOnEnter = ( event: React.KeyboardEvent ) => {
59
+ if ( event.keyCode === ENTER ) {
60
+ event.preventDefault();
61
+ selectVariation();
62
+ }
63
+ };
64
+
65
+ const isActive = useMemo(
66
+ () => areGlobalStylesEqual( user, variation ),
67
+ [ user, variation ]
68
+ );
69
+
70
+ let label = variation?.title;
71
+ if ( variation?.description ) {
72
+ label = sprintf(
73
+ /* translators: 1: variation title. 2: variation description. */
74
+ _x( '%1$s (%2$s)', 'variation label' ),
75
+ variation?.title,
76
+ variation?.description
77
+ );
78
+ }
79
+
80
+ const content = (
81
+ <div
82
+ className={ clsx( 'global-styles-ui-variations_item', {
83
+ 'is-active': isActive,
84
+ } ) }
85
+ role="button"
86
+ onClick={ selectVariation }
87
+ onKeyDown={ selectOnEnter }
88
+ tabIndex={ 0 }
89
+ aria-label={ label }
90
+ aria-current={ isActive }
91
+ onFocus={ () => setIsFocused( true ) }
92
+ onBlur={ () => setIsFocused( false ) }
93
+ >
94
+ <div
95
+ className={ clsx( 'global-styles-ui-variations_item-preview', {
96
+ 'is-pill': isPill,
97
+ } ) }
98
+ >
99
+ { children( isFocused ) }
100
+ </div>
101
+ </div>
102
+ );
103
+
104
+ return (
105
+ <GlobalStylesContext.Provider value={ context }>
106
+ { showTooltip ? (
107
+ <Tooltip text={ variation?.title }>{ content }</Tooltip>
108
+ ) : (
109
+ content
110
+ ) }
111
+ </GlobalStylesContext.Provider>
112
+ );
113
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalGrid as Grid,
6
+ __experimentalVStack as VStack,
7
+ } from '@wordpress/components';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import StylesPreviewColors from '../preview-colors';
13
+ import { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../hooks';
14
+ import { Subtitle } from '../subtitle';
15
+ import Variation from './variation';
16
+
17
+ interface ColorVariationsProps {
18
+ title?: string;
19
+ gap?: number;
20
+ }
21
+
22
+ const propertiesToFilter = [ 'color' ];
23
+
24
+ export default function ColorVariations( {
25
+ title,
26
+ gap = 2,
27
+ }: ColorVariationsProps ) {
28
+ const colorVariations =
29
+ useCurrentMergeThemeStyleVariationsWithUserConfig( propertiesToFilter );
30
+
31
+ // Return null if there is only one variation (the default).
32
+ if ( colorVariations?.length <= 1 ) {
33
+ return null;
34
+ }
35
+
36
+ return (
37
+ <VStack spacing={ 3 }>
38
+ { title && <Subtitle level={ 3 }>{ title }</Subtitle> }
39
+ <Grid gap={ gap }>
40
+ { colorVariations.map( ( variation: any, index: number ) => (
41
+ <Variation
42
+ key={ index }
43
+ variation={ variation }
44
+ isPill
45
+ properties={ propertiesToFilter }
46
+ showTooltip
47
+ >
48
+ { () => <StylesPreviewColors /> }
49
+ </Variation>
50
+ ) ) }
51
+ </Grid>
52
+ </VStack>
53
+ );
54
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ // @ts-expect-error: Not typed yet.
5
+ import { store as blocksStore } from '@wordpress/blocks';
6
+ import { useSelect } from '@wordpress/data';
7
+ import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { NavigationButtonAsItem } from '../navigation-button';
13
+ import { useSetting } from '../hooks';
14
+
15
+ interface BlockStyle {
16
+ name: string;
17
+ label: string;
18
+ source?: string;
19
+ isDefault?: boolean;
20
+ }
21
+
22
+ interface VariationsPanelProps {
23
+ name: string;
24
+ }
25
+
26
+ // Only core block styles (source === block) or block styles with a matching
27
+ // theme.json style variation will be configurable via Global Styles.
28
+ function getFilteredBlockStyles(
29
+ blockStyles: BlockStyle[],
30
+ variations: string[]
31
+ ): BlockStyle[] {
32
+ return (
33
+ blockStyles?.filter(
34
+ ( style ) =>
35
+ style.source === 'block' || variations.includes( style.name )
36
+ ) || []
37
+ );
38
+ }
39
+
40
+ export function useBlockVariations( name: string ): BlockStyle[] {
41
+ const blockStyles = useSelect(
42
+ ( select ) => {
43
+ const { getBlockStyles } = select( blocksStore );
44
+ return getBlockStyles( name );
45
+ },
46
+ [ name ]
47
+ );
48
+ const [ variations ] = useSetting( 'variations', name );
49
+ const variationNames = Object.keys( variations ?? {} );
50
+
51
+ return getFilteredBlockStyles( blockStyles, variationNames );
52
+ }
53
+
54
+ export function VariationsPanel( { name }: VariationsPanelProps ) {
55
+ const coreBlockStyles = useBlockVariations( name );
56
+
57
+ return (
58
+ <ItemGroup isBordered isSeparated>
59
+ { coreBlockStyles.map( ( style, index ) => {
60
+ if ( style?.isDefault ) {
61
+ return null;
62
+ }
63
+ return (
64
+ <NavigationButtonAsItem
65
+ key={ index }
66
+ path={
67
+ '/blocks/' +
68
+ encodeURIComponent( name ) +
69
+ '/variations/' +
70
+ encodeURIComponent( style.name )
71
+ }
72
+ >
73
+ { style.label }
74
+ </NavigationButtonAsItem>
75
+ );
76
+ } ) }
77
+ </ItemGroup>
78
+ );
79
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalGrid as Grid,
6
+ __experimentalVStack as VStack,
7
+ } from '@wordpress/components';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import StylesPreviewTypography from '../preview-typography';
13
+ import { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../hooks';
14
+ import { Subtitle } from '../subtitle';
15
+ import Variation from './variation';
16
+
17
+ interface TypographyVariationsProps {
18
+ title?: string;
19
+ gap?: number;
20
+ }
21
+
22
+ const propertiesToFilter = [ 'typography' ];
23
+
24
+ export default function TypographyVariations( {
25
+ title,
26
+ gap = 2,
27
+ }: TypographyVariationsProps ) {
28
+ const typographyVariations =
29
+ useCurrentMergeThemeStyleVariationsWithUserConfig( propertiesToFilter );
30
+
31
+ // Return null if there is only one variation (the default).
32
+ if ( typographyVariations?.length <= 1 ) {
33
+ return null;
34
+ }
35
+
36
+ return (
37
+ <VStack spacing={ 3 }>
38
+ { title && <Subtitle level={ 3 }>{ title }</Subtitle> }
39
+ <Grid
40
+ columns={ 3 }
41
+ gap={ gap }
42
+ className="global-styles-ui-style-variations-container"
43
+ >
44
+ { typographyVariations.map(
45
+ ( variation: any, index: number ) => {
46
+ return (
47
+ <Variation
48
+ key={ index }
49
+ variation={ variation }
50
+ properties={ propertiesToFilter }
51
+ showTooltip
52
+ >
53
+ { () => (
54
+ <StylesPreviewTypography
55
+ variation={ variation }
56
+ />
57
+ ) }
58
+ </Variation>
59
+ );
60
+ }
61
+ ) }
62
+ </Grid>
63
+ </VStack>
64
+ );
65
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import type { GlobalStylesConfig } from '@wordpress/global-styles-engine';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { GlobalStylesProvider } from './provider';
10
+
11
+ interface GlobalStylesProviderProps {
12
+ value: GlobalStylesConfig;
13
+ baseValue: GlobalStylesConfig;
14
+ onChange: ( config: GlobalStylesConfig ) => void;
15
+ }
16
+
17
+ /**
18
+ * Higher-order component that wraps a component with GlobalStylesProvider.
19
+ * This allows components to access GlobalStylesContext without exposing
20
+ * the provider directly in the public API.
21
+ *
22
+ * @param Component - The component to wrap
23
+ * @return A wrapped component that accepts value, baseValue, and onChange props
24
+ */
25
+ export function withGlobalStylesProvider< P extends object >(
26
+ Component: React.ComponentType< P >
27
+ ) {
28
+ return function WrappedComponent( {
29
+ value,
30
+ baseValue,
31
+ onChange,
32
+ ...props
33
+ }: P & GlobalStylesProviderProps ) {
34
+ return (
35
+ <GlobalStylesProvider
36
+ value={ value }
37
+ baseValue={ baseValue }
38
+ onChange={ onChange }
39
+ >
40
+ <Component { ...( props as P ) } />
41
+ </GlobalStylesProvider>
42
+ );
43
+ };
44
+ }