@wordpress/edit-site 5.28.5 → 5.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +1 -1
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +10 -11
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +2 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/code-editor/index.js +3 -2
  9. package/build/components/code-editor/index.js.map +1 -1
  10. package/build/components/editor/index.js +5 -19
  11. package/build/components/editor/index.js.map +1 -1
  12. package/build/components/editor-canvas-container/index.js +1 -1
  13. package/build/components/editor-canvas-container/index.js.map +1 -1
  14. package/build/components/global-styles/color-palette-panel.js +9 -0
  15. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  16. package/build/components/global-styles/font-families.js +1 -1
  17. package/build/components/global-styles/font-families.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/context.js +11 -0
  20. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/font-collection.js +5 -16
  22. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/index.js +2 -2
  24. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  26. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/utils/index.js +27 -0
  30. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  33. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  34. package/build/components/global-styles/header.js +1 -1
  35. package/build/components/global-styles/header.js.map +1 -1
  36. package/build/components/global-styles/highlighted-colors.js +50 -0
  37. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  38. package/build/components/global-styles/preview-colors.js +62 -0
  39. package/build/components/global-styles/preview-colors.js.map +1 -0
  40. package/build/components/global-styles/preview-iframe.js +131 -0
  41. package/build/components/global-styles/preview-iframe.js.map +1 -0
  42. package/build/components/global-styles/preview-styles.js +163 -0
  43. package/build/components/global-styles/preview-styles.js.map +1 -0
  44. package/build/components/global-styles/preview-typography.js +65 -0
  45. package/build/components/global-styles/preview-typography.js.map +1 -0
  46. package/build/components/global-styles/screen-block-list.js +1 -1
  47. package/build/components/global-styles/screen-block-list.js.map +1 -1
  48. package/build/components/global-styles/screen-block.js +1 -1
  49. package/build/components/global-styles/screen-block.js.map +1 -1
  50. package/build/components/global-styles/screen-colors.js +10 -2
  51. package/build/components/global-styles/screen-colors.js.map +1 -1
  52. package/build/components/global-styles/screen-root.js +2 -2
  53. package/build/components/global-styles/screen-root.js.map +1 -1
  54. package/build/components/global-styles/screen-typography.js +10 -2
  55. package/build/components/global-styles/screen-typography.js.map +1 -1
  56. package/build/components/global-styles/style-variations-container.js +12 -84
  57. package/build/components/global-styles/style-variations-container.js.map +1 -1
  58. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  59. package/build/components/global-styles/typography-elements.js.map +1 -0
  60. package/build/components/global-styles/utils.js +22 -0
  61. package/build/components/global-styles/utils.js.map +1 -1
  62. package/build/components/global-styles/variations/variation.js +90 -0
  63. package/build/components/global-styles/variations/variation.js.map +1 -0
  64. package/build/components/global-styles/variations/variations-color.js +36 -0
  65. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  66. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  67. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  68. package/build/components/global-styles/variations/variations-typography.js +64 -0
  69. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  70. package/build/components/header-edit-mode/document-tools/index.js +1 -2
  71. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  72. package/build/components/header-edit-mode/index.js +16 -13
  73. package/build/components/header-edit-mode/index.js.map +1 -1
  74. package/build/components/header-edit-mode/more-menu/index.js +17 -6
  75. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  76. package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
  77. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  78. package/build/components/keyboard-shortcuts/register.js +0 -18
  79. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  80. package/build/components/layout/index.js +4 -2
  81. package/build/components/layout/index.js.map +1 -1
  82. package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
  83. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  84. package/build/components/page-patterns/header.js +2 -1
  85. package/build/components/page-patterns/header.js.map +1 -1
  86. package/build/components/page-patterns/index.js +0 -1
  87. package/build/components/page-patterns/index.js.map +1 -1
  88. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  89. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  90. package/build/components/page-templates-template-parts/index.js +14 -6
  91. package/build/components/page-templates-template-parts/index.js.map +1 -1
  92. package/build/components/revisions/index.js.map +1 -1
  93. package/build/components/save-button/index.js +2 -1
  94. package/build/components/save-button/index.js.map +1 -1
  95. package/build/components/save-panel/index.js +18 -3
  96. package/build/components/save-panel/index.js.map +1 -1
  97. package/build/components/sidebar/index.js +1 -1
  98. package/build/components/sidebar/index.js.map +1 -1
  99. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  100. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  101. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  102. package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  103. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  104. package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
  105. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  107. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  108. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  109. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  110. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  111. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  112. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  113. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  114. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  115. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  116. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  118. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  119. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  120. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  121. package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  122. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  123. package/build/components/start-template-options/index.js.map +1 -1
  124. package/build/hooks/commands/use-edit-mode-commands.js +3 -171
  125. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  126. package/build/hooks/index.js +0 -1
  127. package/build/hooks/index.js.map +1 -1
  128. package/build/hooks/push-changes-to-global-styles/index.js +4 -5
  129. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  130. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +156 -0
  131. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  132. package/build/store/actions.js +19 -50
  133. package/build/store/actions.js.map +1 -1
  134. package/build/utils/clone-deep.js +15 -0
  135. package/build/utils/clone-deep.js.map +1 -0
  136. package/build-module/components/actions/index.js +1 -1
  137. package/build-module/components/actions/index.js.map +1 -1
  138. package/build-module/components/block-editor/editor-canvas.js +10 -11
  139. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  140. package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
  141. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  142. package/build-module/components/code-editor/index.js +3 -2
  143. package/build-module/components/code-editor/index.js.map +1 -1
  144. package/build-module/components/editor/index.js +6 -20
  145. package/build-module/components/editor/index.js.map +1 -1
  146. package/build-module/components/editor-canvas-container/index.js +2 -2
  147. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  148. package/build-module/components/global-styles/color-palette-panel.js +8 -0
  149. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  150. package/build-module/components/global-styles/font-families.js +1 -1
  151. package/build-module/components/global-styles/font-families.js.map +1 -1
  152. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  153. package/build-module/components/global-styles/font-library-modal/context.js +12 -1
  154. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  155. package/build-module/components/global-styles/font-library-modal/font-collection.js +7 -18
  156. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  157. package/build-module/components/global-styles/font-library-modal/index.js +2 -2
  158. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  159. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  160. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  161. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  162. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  163. package/build-module/components/global-styles/font-library-modal/utils/index.js +26 -0
  164. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  165. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +1 -1
  166. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  167. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  168. package/build-module/components/global-styles/header.js +1 -1
  169. package/build-module/components/global-styles/header.js.map +1 -1
  170. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  171. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  172. package/build-module/components/global-styles/preview-colors.js +54 -0
  173. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  174. package/build-module/components/global-styles/preview-iframe.js +124 -0
  175. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  176. package/build-module/components/global-styles/preview-styles.js +155 -0
  177. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  178. package/build-module/components/global-styles/preview-typography.js +58 -0
  179. package/build-module/components/global-styles/preview-typography.js.map +1 -0
  180. package/build-module/components/global-styles/screen-block-list.js +1 -1
  181. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  182. package/build-module/components/global-styles/screen-block.js +1 -1
  183. package/build-module/components/global-styles/screen-block.js.map +1 -1
  184. package/build-module/components/global-styles/screen-colors.js +10 -2
  185. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  186. package/build-module/components/global-styles/screen-root.js +2 -2
  187. package/build-module/components/global-styles/screen-root.js.map +1 -1
  188. package/build-module/components/global-styles/screen-typography.js +10 -2
  189. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  190. package/build-module/components/global-styles/style-variations-container.js +13 -85
  191. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  192. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +1 -1
  193. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  194. package/build-module/components/global-styles/utils.js +21 -0
  195. package/build-module/components/global-styles/utils.js.map +1 -1
  196. package/build-module/components/global-styles/variations/variation.js +82 -0
  197. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  198. package/build-module/components/global-styles/variations/variations-color.js +28 -0
  199. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  200. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  201. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  202. package/build-module/components/global-styles/variations/variations-typography.js +56 -0
  203. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  204. package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
  205. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  206. package/build-module/components/header-edit-mode/index.js +17 -14
  207. package/build-module/components/header-edit-mode/index.js.map +1 -1
  208. package/build-module/components/header-edit-mode/more-menu/index.js +19 -8
  209. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  210. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
  211. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  212. package/build-module/components/keyboard-shortcuts/register.js +0 -18
  213. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  214. package/build-module/components/layout/index.js +5 -3
  215. package/build-module/components/layout/index.js.map +1 -1
  216. package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
  217. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  218. package/build-module/components/page-patterns/header.js +2 -1
  219. package/build-module/components/page-patterns/header.js.map +1 -1
  220. package/build-module/components/page-patterns/index.js +0 -1
  221. package/build-module/components/page-patterns/index.js.map +1 -1
  222. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  223. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  224. package/build-module/components/page-templates-template-parts/index.js +13 -5
  225. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  226. package/build-module/components/revisions/index.js.map +1 -1
  227. package/build-module/components/save-button/index.js +2 -1
  228. package/build-module/components/save-button/index.js.map +1 -1
  229. package/build-module/components/save-panel/index.js +18 -3
  230. package/build-module/components/save-panel/index.js.map +1 -1
  231. package/build-module/components/sidebar/index.js +1 -1
  232. package/build-module/components/sidebar/index.js.map +1 -1
  233. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  234. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  235. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  236. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  237. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  238. package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
  239. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  240. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  241. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  242. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  243. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  244. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  245. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  246. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +1 -1
  247. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  248. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  249. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  250. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  251. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  252. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  253. package/build-module/components/sidebar-navigation-screen-template/index.js +1 -1
  254. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  255. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +1 -1
  256. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  257. package/build-module/components/start-template-options/index.js.map +1 -1
  258. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
  259. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  260. package/build-module/hooks/index.js +0 -1
  261. package/build-module/hooks/index.js.map +1 -1
  262. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
  263. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  264. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +144 -0
  265. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  266. package/build-module/store/actions.js +19 -50
  267. package/build-module/store/actions.js.map +1 -1
  268. package/build-module/utils/clone-deep.js +9 -0
  269. package/build-module/utils/clone-deep.js.map +1 -0
  270. package/build-style/style-rtl.css +152 -472
  271. package/build-style/style.css +152 -472
  272. package/package.json +43 -42
  273. package/src/components/actions/index.js +1 -1
  274. package/src/components/block-editor/editor-canvas.js +13 -12
  275. package/src/components/block-editor/style.scss +0 -3
  276. package/src/components/block-editor/use-site-editor-settings.js +1 -0
  277. package/src/components/code-editor/index.js +3 -2
  278. package/src/components/editor/index.js +10 -27
  279. package/src/components/editor-canvas-container/index.js +2 -5
  280. package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
  281. package/src/components/global-styles/color-palette-panel.js +11 -1
  282. package/src/components/global-styles/font-families.js +1 -1
  283. package/src/components/global-styles/font-library-modal/collection-font-variant.js +1 -1
  284. package/src/components/global-styles/font-library-modal/context.js +24 -0
  285. package/src/components/global-styles/font-library-modal/font-collection.js +7 -24
  286. package/src/components/global-styles/font-library-modal/index.js +2 -2
  287. package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  288. package/src/components/global-styles/font-library-modal/library-font-variant.js +1 -1
  289. package/src/components/global-styles/font-library-modal/upload-fonts.js +1 -1
  290. package/src/components/global-styles/font-library-modal/utils/index.js +34 -0
  291. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +2 -1
  292. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  293. package/src/components/global-styles/header.js +1 -1
  294. package/src/components/global-styles/highlighted-colors.js +39 -0
  295. package/src/components/global-styles/preview-colors.js +61 -0
  296. package/src/components/global-styles/preview-iframe.js +153 -0
  297. package/src/components/global-styles/preview-styles.js +185 -0
  298. package/src/components/global-styles/preview-typography.js +62 -0
  299. package/src/components/global-styles/screen-block-list.js +1 -1
  300. package/src/components/global-styles/screen-block.js +4 -1
  301. package/src/components/global-styles/screen-colors.js +13 -1
  302. package/src/components/global-styles/screen-revisions/style.scss +2 -2
  303. package/src/components/global-styles/screen-root.js +2 -2
  304. package/src/components/global-styles/screen-typography.js +19 -2
  305. package/src/components/global-styles/style-variations-container.js +14 -92
  306. package/src/components/global-styles/style.scss +1 -35
  307. package/src/components/global-styles/utils.js +37 -0
  308. package/src/components/global-styles/variations/style.scss +44 -0
  309. package/src/components/global-styles/variations/variation.js +93 -0
  310. package/src/components/global-styles/variations/variations-color.js +30 -0
  311. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  312. package/src/components/global-styles/variations/variations-typography.js +85 -0
  313. package/src/components/header-edit-mode/document-tools/index.js +1 -2
  314. package/src/components/header-edit-mode/index.js +22 -31
  315. package/src/components/header-edit-mode/more-menu/index.js +25 -11
  316. package/src/components/header-edit-mode/style.scss +4 -0
  317. package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
  318. package/src/components/keyboard-shortcuts/register.js +0 -19
  319. package/src/components/layout/index.js +5 -2
  320. package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
  321. package/src/components/page-patterns/header.js +1 -0
  322. package/src/components/page-patterns/index.js +1 -2
  323. package/src/components/page-patterns/style.scss +0 -182
  324. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  325. package/src/components/page-templates-template-parts/index.js +20 -3
  326. package/src/components/page-templates-template-parts/style.scss +48 -0
  327. package/src/components/revisions/index.js +1 -1
  328. package/src/components/save-button/index.js +2 -1
  329. package/src/components/save-hub/style.scss +1 -1
  330. package/src/components/save-panel/index.js +34 -12
  331. package/src/components/sidebar/index.js +1 -1
  332. package/src/components/sidebar-button/style.scss +1 -1
  333. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
  334. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  335. package/src/components/sidebar-edit-mode/style.scss +4 -0
  336. package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
  337. package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
  338. package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
  339. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
  340. package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
  341. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  342. package/src/components/sidebar-navigation-screen-navigation-menu/delete-modal.js +1 -1
  343. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  344. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  345. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  346. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  347. package/src/components/sidebar-navigation-screen-template/index.js +1 -1
  348. package/src/components/sidebar-navigation-screen-templates-browse/content.js +1 -1
  349. package/src/components/start-template-options/index.js +1 -1
  350. package/src/hooks/commands/use-edit-mode-commands.js +3 -184
  351. package/src/hooks/index.js +0 -1
  352. package/src/hooks/push-changes-to-global-styles/index.js +1 -4
  353. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +1137 -0
  354. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +159 -0
  355. package/src/store/actions.js +21 -85
  356. package/src/store/test/actions.js +0 -75
  357. package/src/style.scss +3 -8
  358. package/src/utils/clone-deep.js +8 -0
  359. package/build/components/global-styles/preview.js +0 -271
  360. package/build/components/global-styles/preview.js.map +0 -1
  361. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  362. package/build/components/global-styles/variations-panel.js.map +0 -1
  363. package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
  364. package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  365. package/build/components/list/added-by.js.map +0 -1
  366. package/build/components/list/header.js +0 -55
  367. package/build/components/list/header.js.map +0 -1
  368. package/build/components/list/index.js +0 -80
  369. package/build/components/list/index.js.map +0 -1
  370. package/build/components/list/table.js +0 -94
  371. package/build/components/list/table.js.map +0 -1
  372. package/build/components/list/use-register-shortcuts.js +0 -51
  373. package/build/components/list/use-register-shortcuts.js.map +0 -1
  374. package/build/components/page-patterns/duplicate-menu-item.js +0 -93
  375. package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
  376. package/build/components/page-patterns/grid-item.js +0 -223
  377. package/build/components/page-patterns/grid-item.js.map +0 -1
  378. package/build/components/page-patterns/grid.js +0 -31
  379. package/build/components/page-patterns/grid.js.map +0 -1
  380. package/build/components/page-patterns/no-patterns.js +0 -18
  381. package/build/components/page-patterns/no-patterns.js.map +0 -1
  382. package/build/components/page-patterns/patterns-list.js +0 -168
  383. package/build/components/page-patterns/patterns-list.js.map +0 -1
  384. package/build/components/page-patterns/rename-menu-item.js +0 -105
  385. package/build/components/page-patterns/rename-menu-item.js.map +0 -1
  386. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
  387. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  388. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  389. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  390. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  391. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  392. package/build/hooks/navigation-menu-edit.js +0 -82
  393. package/build/hooks/navigation-menu-edit.js.map +0 -1
  394. package/build-module/components/global-styles/preview.js +0 -264
  395. package/build-module/components/global-styles/preview.js.map +0 -1
  396. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  397. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  398. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
  399. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  400. package/build-module/components/list/added-by.js.map +0 -1
  401. package/build-module/components/list/header.js +0 -47
  402. package/build-module/components/list/header.js.map +0 -1
  403. package/build-module/components/list/index.js +0 -72
  404. package/build-module/components/list/index.js.map +0 -1
  405. package/build-module/components/list/table.js +0 -86
  406. package/build-module/components/list/table.js.map +0 -1
  407. package/build-module/components/list/use-register-shortcuts.js +0 -45
  408. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  409. package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
  410. package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
  411. package/build-module/components/page-patterns/grid-item.js +0 -215
  412. package/build-module/components/page-patterns/grid-item.js.map +0 -1
  413. package/build-module/components/page-patterns/grid.js +0 -23
  414. package/build-module/components/page-patterns/grid.js.map +0 -1
  415. package/build-module/components/page-patterns/no-patterns.js +0 -11
  416. package/build-module/components/page-patterns/no-patterns.js.map +0 -1
  417. package/build-module/components/page-patterns/patterns-list.js +0 -160
  418. package/build-module/components/page-patterns/patterns-list.js.map +0 -1
  419. package/build-module/components/page-patterns/rename-menu-item.js +0 -98
  420. package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
  421. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
  422. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  423. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  424. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  425. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  426. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  427. package/build-module/hooks/navigation-menu-edit.js +0 -75
  428. package/build-module/hooks/navigation-menu-edit.js.map +0 -1
  429. package/src/components/global-styles/preview.js +0 -327
  430. package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
  431. package/src/components/list/header.js +0 -48
  432. package/src/components/list/index.js +0 -87
  433. package/src/components/list/style.scss +0 -188
  434. package/src/components/list/table.js +0 -140
  435. package/src/components/list/use-register-shortcuts.js +0 -49
  436. package/src/components/page-patterns/duplicate-menu-item.js +0 -105
  437. package/src/components/page-patterns/grid-item.js +0 -331
  438. package/src/components/page-patterns/grid.js +0 -22
  439. package/src/components/page-patterns/no-patterns.js +0 -12
  440. package/src/components/page-patterns/patterns-list.js +0 -229
  441. package/src/components/page-patterns/rename-menu-item.js +0 -132
  442. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
  443. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  444. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  445. package/src/hooks/navigation-menu-edit.js +0 -92
  446. /package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +0 -0
@@ -0,0 +1,1137 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { renderHook } from '@testing-library/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import useThemeStyleVariationsByProperty, {
10
+ filterObjectByProperty,
11
+ removePropertyFromObject,
12
+ } from '../use-theme-style-variations-by-property';
13
+
14
+ describe( 'filterObjectByProperty', () => {
15
+ const noop = () => {};
16
+ test.each( [
17
+ {
18
+ object: {
19
+ foo: 'bar',
20
+ array: [ 1, 3, 4 ],
21
+ },
22
+ property: 'array',
23
+ expected: { array: [ 1, 3, 4 ] },
24
+ },
25
+ {
26
+ object: {
27
+ foo: 'bar',
28
+ },
29
+ property: 'does-not-exist',
30
+ expected: {},
31
+ },
32
+ {
33
+ object: {
34
+ foo: 'bar',
35
+ },
36
+ property: false,
37
+ expected: {},
38
+ },
39
+ {
40
+ object: {
41
+ dig: {
42
+ deeper: {
43
+ null: null,
44
+ },
45
+ },
46
+ },
47
+ property: 'null',
48
+ expected: {
49
+ dig: {
50
+ deeper: {
51
+ null: null,
52
+ },
53
+ },
54
+ },
55
+ },
56
+ {
57
+ object: {
58
+ function: noop,
59
+ },
60
+ property: 'function',
61
+ expected: {
62
+ function: noop,
63
+ },
64
+ },
65
+ {
66
+ object: [],
67
+ property: 'something',
68
+ expected: {},
69
+ },
70
+ {
71
+ object: {},
72
+ property: undefined,
73
+ expected: {},
74
+ },
75
+ {
76
+ object: {
77
+ 'nested-object': {
78
+ 'nested-object-foo': 'bar',
79
+ array: [ 1, 3, 4 ],
80
+ },
81
+ },
82
+ property: 'nested-object-foo',
83
+ expected: {
84
+ 'nested-object': {
85
+ 'nested-object-foo': 'bar',
86
+ },
87
+ },
88
+ },
89
+ ] )(
90
+ 'should filter object by $property',
91
+ ( { expected, object, property } ) => {
92
+ const result = filterObjectByProperty( object, property );
93
+ expect( result ).toEqual( expected );
94
+ }
95
+ );
96
+ } );
97
+
98
+ describe( 'useThemeStyleVariationsByProperty', () => {
99
+ const mockVariations = [
100
+ {
101
+ title: 'Title 1',
102
+ description: 'Description 1',
103
+ settings: {
104
+ color: {
105
+ duotone: [
106
+ {
107
+ name: 'Dark grayscale',
108
+ colors: [ '#000000', '#7f7f7f' ],
109
+ slug: 'dark-grayscale',
110
+ },
111
+ {
112
+ name: 'Grayscale',
113
+ colors: [ '#000000', '#ffffff' ],
114
+ slug: 'grayscale',
115
+ },
116
+ {
117
+ name: 'Purple and yellow',
118
+ colors: [ '#8c00b7', '#fcff41' ],
119
+ slug: 'purple-yellow',
120
+ },
121
+ ],
122
+ gradients: [
123
+ {
124
+ name: 'Vivid cyan blue to vivid purple',
125
+ gradient:
126
+ 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
127
+ slug: 'vivid-cyan-blue-to-vivid-purple',
128
+ },
129
+ {
130
+ name: 'Light green cyan to vivid green cyan',
131
+ gradient:
132
+ 'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
133
+ slug: 'light-green-cyan-to-vivid-green-cyan',
134
+ },
135
+ {
136
+ name: 'Luminous vivid amber to luminous vivid orange',
137
+ gradient:
138
+ 'linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)',
139
+ slug: 'luminous-vivid-amber-to-luminous-vivid-orange',
140
+ },
141
+ ],
142
+ palette: [
143
+ {
144
+ name: 'Vivid red',
145
+ slug: 'vivid-red',
146
+ color: '#cf2e2e',
147
+ },
148
+ {
149
+ name: 'Luminous vivid orange',
150
+ slug: 'luminous-vivid-orange',
151
+ color: '#ff6900',
152
+ },
153
+ {
154
+ name: 'Luminous vivid amber',
155
+ slug: 'luminous-vivid-amber',
156
+ color: '#fcb900',
157
+ },
158
+ ],
159
+ },
160
+ typography: {
161
+ fluid: true,
162
+ fontFamilies: {
163
+ theme: [
164
+ {
165
+ name: 'Inter san-serif',
166
+ fontFamily: 'Inter san-serif',
167
+ slug: 'inter-san-serif',
168
+ fontFace: [
169
+ {
170
+ src: 'inter-san-serif.woff2',
171
+ fontWeight: '400',
172
+ fontStyle: 'italic',
173
+ fontFamily: 'Inter san-serif',
174
+ },
175
+ ],
176
+ },
177
+ ],
178
+ },
179
+ fontSizes: [
180
+ {
181
+ name: 'Small',
182
+ slug: 'small',
183
+ size: '13px',
184
+ },
185
+ {
186
+ name: 'Medium',
187
+ slug: 'medium',
188
+ size: '20px',
189
+ },
190
+ {
191
+ name: 'Large',
192
+ slug: 'large',
193
+ size: '36px',
194
+ },
195
+ ],
196
+ },
197
+ layout: {
198
+ wideSize: '1200px',
199
+ },
200
+ },
201
+ styles: {
202
+ typography: {
203
+ letterSpacing: '3px',
204
+ },
205
+ color: {
206
+ backgroundColor: 'red',
207
+ color: 'orange',
208
+ },
209
+ elements: {
210
+ cite: {
211
+ color: {
212
+ text: 'white',
213
+ },
214
+ },
215
+ },
216
+ blocks: {
217
+ 'core/quote': {
218
+ color: {
219
+ text: 'black',
220
+ background: 'white',
221
+ },
222
+ typography: {
223
+ fontSize: '20px',
224
+ },
225
+ },
226
+ },
227
+ },
228
+ },
229
+ {
230
+ title: 'Title 2',
231
+ description: 'Description 2',
232
+ settings: {
233
+ color: {
234
+ duotone: [
235
+ {
236
+ name: 'Boom',
237
+ colors: [ '#000000', '#7f7f7f' ],
238
+ slug: 'boom',
239
+ },
240
+ {
241
+ name: 'Gray to white',
242
+ colors: [ '#000000', '#ffffff' ],
243
+ slug: 'gray-to-white',
244
+ },
245
+ {
246
+ name: 'Whatever to whatever',
247
+ colors: [ '#8c00b7', '#fcff41' ],
248
+ slug: 'whatever-to-whatever',
249
+ },
250
+ ],
251
+ gradients: [
252
+ {
253
+ name: 'Jam in the office',
254
+ gradient:
255
+ 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
256
+ slug: 'jam-in-the-office',
257
+ },
258
+ {
259
+ name: 'Open source',
260
+ gradient:
261
+ 'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
262
+ slug: 'open-source',
263
+ },
264
+ {
265
+ name: 'Here to there',
266
+ gradient:
267
+ 'linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)',
268
+ slug: 'here-to-there',
269
+ },
270
+ ],
271
+ palette: [
272
+ {
273
+ name: 'Chunky Bacon',
274
+ slug: 'chunky-bacon',
275
+ color: '#cf2e2e',
276
+ },
277
+ {
278
+ name: 'Burrito',
279
+ slug: 'burrito',
280
+ color: '#ff6900',
281
+ },
282
+ {
283
+ name: 'Dinosaur',
284
+ slug: 'dinosaur',
285
+ color: '#fcb900',
286
+ },
287
+ ],
288
+ },
289
+ typography: {
290
+ fontSizes: [
291
+ {
292
+ name: 'Smallish',
293
+ slug: 'smallish',
294
+ size: '15px',
295
+ },
296
+ {
297
+ name: 'Mediumish',
298
+ slug: 'mediumish',
299
+ size: '22px',
300
+ },
301
+ {
302
+ name: 'Largish',
303
+ slug: 'largish',
304
+ size: '44px',
305
+ },
306
+ ],
307
+ },
308
+ layout: {
309
+ contentSize: '300px',
310
+ },
311
+ },
312
+ styles: {
313
+ typography: {
314
+ letterSpacing: '3px',
315
+ },
316
+ color: {
317
+ backgroundColor: 'red',
318
+ text: 'orange',
319
+ },
320
+ elements: {
321
+ link: {
322
+ typography: {
323
+ textDecoration: 'underline',
324
+ },
325
+ },
326
+ },
327
+ blocks: {
328
+ 'core/paragraph': {
329
+ color: {
330
+ text: 'purple',
331
+ background: 'green',
332
+ },
333
+ typography: {
334
+ fontSize: '20px',
335
+ },
336
+ },
337
+ },
338
+ },
339
+ },
340
+ ];
341
+ const mockBaseVariation = {
342
+ settings: {
343
+ typography: {
344
+ fontFamilies: {
345
+ custom: [
346
+ {
347
+ name: 'ADLaM Display',
348
+ fontFamily: 'ADLaM Display, system-ui',
349
+ slug: 'adlam-display',
350
+ fontFace: [
351
+ {
352
+ src: 'adlam.woff2',
353
+ fontWeight: '400',
354
+ fontStyle: 'normal',
355
+ fontFamily: 'ADLaM Display',
356
+ },
357
+ ],
358
+ },
359
+ ],
360
+ },
361
+ fontSizes: [
362
+ {
363
+ name: 'Base small',
364
+ slug: 'base-small',
365
+ size: '1px',
366
+ },
367
+ {
368
+ name: 'Base medium',
369
+ slug: 'base-medium',
370
+ size: '2px',
371
+ },
372
+ {
373
+ name: 'Base large',
374
+ slug: 'base-large',
375
+ size: '3px',
376
+ },
377
+ ],
378
+ },
379
+ color: {
380
+ palette: {
381
+ custom: [
382
+ {
383
+ color: '#c42727',
384
+ name: 'Color 1',
385
+ slug: 'custom-color-1',
386
+ },
387
+ {
388
+ color: '#3b0f0f',
389
+ name: 'Color 2',
390
+ slug: 'custom-color-2',
391
+ },
392
+ ],
393
+ },
394
+ },
395
+ layout: {
396
+ wideSize: '1137px',
397
+ contentSize: '400px',
398
+ },
399
+ },
400
+ styles: {
401
+ typography: {
402
+ fontSize: '12px',
403
+ lineHeight: '1.5',
404
+ },
405
+ color: {
406
+ backgroundColor: 'cheese',
407
+ color: 'lettuce',
408
+ },
409
+ blocks: {
410
+ 'core/quote': {
411
+ color: {
412
+ text: 'hello',
413
+ background: 'dolly',
414
+ },
415
+ typography: {
416
+ fontSize: '111111px',
417
+ },
418
+ },
419
+ 'core/group': {
420
+ typography: {
421
+ fontFamily: 'var:preset|font-family|system-sans-serif',
422
+ },
423
+ },
424
+ },
425
+ },
426
+ };
427
+
428
+ it( 'should return variations if property is falsy', () => {
429
+ const { result } = renderHook( () =>
430
+ useThemeStyleVariationsByProperty( {
431
+ variations: mockVariations,
432
+ property: '',
433
+ } )
434
+ );
435
+
436
+ expect( result.current ).toEqual( mockVariations );
437
+ } );
438
+
439
+ it( 'should return variations if variations is empty or falsy', () => {
440
+ const { result: emptyResult } = renderHook( () =>
441
+ useThemeStyleVariationsByProperty( {
442
+ variations: [],
443
+ property: 'layout',
444
+ } )
445
+ );
446
+
447
+ expect( emptyResult.current ).toEqual( [] );
448
+
449
+ const { result: falsyResult } = renderHook( () =>
450
+ useThemeStyleVariationsByProperty( {
451
+ variations: null,
452
+ property: 'layout',
453
+ } )
454
+ );
455
+
456
+ expect( falsyResult.current ).toEqual( null );
457
+ } );
458
+
459
+ it( 'should return new, unreferenced object', () => {
460
+ const variations = [
461
+ {
462
+ title: 'hey',
463
+ description: 'ho',
464
+ joe: {
465
+ where: {
466
+ you: 'going with that unit test in your hand',
467
+ },
468
+ },
469
+ },
470
+ ];
471
+ const { result } = renderHook( () =>
472
+ useThemeStyleVariationsByProperty( {
473
+ variations,
474
+ property: 'where',
475
+ } )
476
+ );
477
+
478
+ expect( result.current ).toEqual( [
479
+ {
480
+ title: 'hey',
481
+ description: 'ho',
482
+ joe: {
483
+ where: {
484
+ you: 'going with that unit test in your hand',
485
+ },
486
+ },
487
+ },
488
+ ] );
489
+
490
+ expect( result.current[ 0 ].joe.where ).not.toBe(
491
+ variations[ 0 ].joe.where
492
+ );
493
+ expect( result.current[ 0 ].joe ).not.toBe( variations[ 0 ].joe );
494
+ } );
495
+
496
+ it( "should return the variation's typography properties", () => {
497
+ const { result } = renderHook( () =>
498
+ useThemeStyleVariationsByProperty( {
499
+ variations: mockVariations,
500
+ property: 'typography',
501
+ } )
502
+ );
503
+
504
+ expect( result.current ).toEqual( [
505
+ {
506
+ title: 'Title 1',
507
+ description: 'Description 1',
508
+ settings: {
509
+ typography: {
510
+ fluid: true,
511
+ fontFamilies: {
512
+ theme: [
513
+ {
514
+ name: 'Inter san-serif',
515
+ fontFamily: 'Inter san-serif',
516
+ slug: 'inter-san-serif',
517
+ fontFace: [
518
+ {
519
+ src: 'inter-san-serif.woff2',
520
+ fontWeight: '400',
521
+ fontStyle: 'italic',
522
+ fontFamily: 'Inter san-serif',
523
+ },
524
+ ],
525
+ },
526
+ ],
527
+ },
528
+ fontSizes: [
529
+ {
530
+ name: 'Small',
531
+ slug: 'small',
532
+ size: '13px',
533
+ },
534
+ {
535
+ name: 'Medium',
536
+ slug: 'medium',
537
+ size: '20px',
538
+ },
539
+ {
540
+ name: 'Large',
541
+ slug: 'large',
542
+ size: '36px',
543
+ },
544
+ ],
545
+ },
546
+ },
547
+ styles: {
548
+ typography: {
549
+ letterSpacing: '3px',
550
+ },
551
+ blocks: {
552
+ 'core/quote': {
553
+ typography: {
554
+ fontSize: '20px',
555
+ },
556
+ },
557
+ },
558
+ },
559
+ },
560
+ {
561
+ title: 'Title 2',
562
+ description: 'Description 2',
563
+ settings: {
564
+ typography: {
565
+ fontSizes: [
566
+ {
567
+ name: 'Smallish',
568
+ slug: 'smallish',
569
+ size: '15px',
570
+ },
571
+ {
572
+ name: 'Mediumish',
573
+ slug: 'mediumish',
574
+ size: '22px',
575
+ },
576
+ {
577
+ name: 'Largish',
578
+ slug: 'largish',
579
+ size: '44px',
580
+ },
581
+ ],
582
+ },
583
+ },
584
+ styles: {
585
+ typography: {
586
+ letterSpacing: '3px',
587
+ },
588
+ elements: {
589
+ link: {
590
+ typography: {
591
+ textDecoration: 'underline',
592
+ },
593
+ },
594
+ },
595
+ blocks: {
596
+ 'core/paragraph': {
597
+ typography: {
598
+ fontSize: '20px',
599
+ },
600
+ },
601
+ },
602
+ },
603
+ },
604
+ ] );
605
+ } );
606
+
607
+ it( "should return the variation's color properties", () => {
608
+ const { result } = renderHook( () =>
609
+ useThemeStyleVariationsByProperty( {
610
+ variations: mockVariations,
611
+ property: 'color',
612
+ } )
613
+ );
614
+
615
+ expect( result.current ).toEqual( [
616
+ {
617
+ title: 'Title 1',
618
+ description: 'Description 1',
619
+ settings: {
620
+ color: {
621
+ duotone: [
622
+ {
623
+ name: 'Dark grayscale',
624
+ colors: [ '#000000', '#7f7f7f' ],
625
+ slug: 'dark-grayscale',
626
+ },
627
+ {
628
+ name: 'Grayscale',
629
+ colors: [ '#000000', '#ffffff' ],
630
+ slug: 'grayscale',
631
+ },
632
+ {
633
+ name: 'Purple and yellow',
634
+ colors: [ '#8c00b7', '#fcff41' ],
635
+ slug: 'purple-yellow',
636
+ },
637
+ ],
638
+ gradients: [
639
+ {
640
+ name: 'Vivid cyan blue to vivid purple',
641
+ gradient:
642
+ 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
643
+ slug: 'vivid-cyan-blue-to-vivid-purple',
644
+ },
645
+ {
646
+ name: 'Light green cyan to vivid green cyan',
647
+ gradient:
648
+ 'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
649
+ slug: 'light-green-cyan-to-vivid-green-cyan',
650
+ },
651
+ {
652
+ name: 'Luminous vivid amber to luminous vivid orange',
653
+ gradient:
654
+ 'linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)',
655
+ slug: 'luminous-vivid-amber-to-luminous-vivid-orange',
656
+ },
657
+ ],
658
+ palette: [
659
+ {
660
+ name: 'Vivid red',
661
+ slug: 'vivid-red',
662
+ color: '#cf2e2e',
663
+ },
664
+ {
665
+ name: 'Luminous vivid orange',
666
+ slug: 'luminous-vivid-orange',
667
+ color: '#ff6900',
668
+ },
669
+ {
670
+ name: 'Luminous vivid amber',
671
+ slug: 'luminous-vivid-amber',
672
+ color: '#fcb900',
673
+ },
674
+ ],
675
+ },
676
+ },
677
+ styles: {
678
+ color: {
679
+ backgroundColor: 'red',
680
+ color: 'orange',
681
+ },
682
+ elements: {
683
+ cite: {
684
+ color: {
685
+ text: 'white',
686
+ },
687
+ },
688
+ },
689
+ blocks: {
690
+ 'core/quote': {
691
+ color: {
692
+ text: 'black',
693
+ background: 'white',
694
+ },
695
+ },
696
+ },
697
+ },
698
+ },
699
+ {
700
+ title: 'Title 2',
701
+ description: 'Description 2',
702
+ settings: {
703
+ color: {
704
+ duotone: [
705
+ {
706
+ name: 'Boom',
707
+ colors: [ '#000000', '#7f7f7f' ],
708
+ slug: 'boom',
709
+ },
710
+ {
711
+ name: 'Gray to white',
712
+ colors: [ '#000000', '#ffffff' ],
713
+ slug: 'gray-to-white',
714
+ },
715
+ {
716
+ name: 'Whatever to whatever',
717
+ colors: [ '#8c00b7', '#fcff41' ],
718
+ slug: 'whatever-to-whatever',
719
+ },
720
+ ],
721
+ gradients: [
722
+ {
723
+ name: 'Jam in the office',
724
+ gradient:
725
+ 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
726
+ slug: 'jam-in-the-office',
727
+ },
728
+ {
729
+ name: 'Open source',
730
+ gradient:
731
+ 'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
732
+ slug: 'open-source',
733
+ },
734
+ {
735
+ name: 'Here to there',
736
+ gradient:
737
+ 'linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)',
738
+ slug: 'here-to-there',
739
+ },
740
+ ],
741
+ palette: [
742
+ {
743
+ name: 'Chunky Bacon',
744
+ slug: 'chunky-bacon',
745
+ color: '#cf2e2e',
746
+ },
747
+ {
748
+ name: 'Burrito',
749
+ slug: 'burrito',
750
+ color: '#ff6900',
751
+ },
752
+ {
753
+ name: 'Dinosaur',
754
+ slug: 'dinosaur',
755
+ color: '#fcb900',
756
+ },
757
+ ],
758
+ },
759
+ },
760
+ styles: {
761
+ color: {
762
+ backgroundColor: 'red',
763
+ text: 'orange',
764
+ },
765
+ blocks: {
766
+ 'core/paragraph': {
767
+ color: {
768
+ text: 'purple',
769
+ background: 'green',
770
+ },
771
+ },
772
+ },
773
+ },
774
+ },
775
+ ] );
776
+ } );
777
+
778
+ it( 'should merge the user styles and settings with the supplied variation, but only for the specified property', () => {
779
+ const { result } = renderHook( () =>
780
+ useThemeStyleVariationsByProperty( {
781
+ variations: [ mockVariations[ 0 ] ],
782
+ property: 'typography',
783
+ baseVariation: mockBaseVariation,
784
+ } )
785
+ );
786
+
787
+ expect( result.current ).toEqual( [
788
+ {
789
+ title: 'Title 1',
790
+ description: 'Description 1',
791
+ settings: {
792
+ typography: {
793
+ fluid: true,
794
+ fontFamilies: {
795
+ theme: [
796
+ {
797
+ name: 'Inter san-serif',
798
+ fontFamily: 'Inter san-serif',
799
+ slug: 'inter-san-serif',
800
+ fontFace: [
801
+ {
802
+ src: 'inter-san-serif.woff2',
803
+ fontWeight: '400',
804
+ fontStyle: 'italic',
805
+ fontFamily: 'Inter san-serif',
806
+ },
807
+ ],
808
+ },
809
+ ],
810
+ custom: [
811
+ {
812
+ name: 'ADLaM Display',
813
+ fontFamily: 'ADLaM Display, system-ui',
814
+ slug: 'adlam-display',
815
+ fontFace: [
816
+ {
817
+ src: 'adlam.woff2',
818
+ fontWeight: '400',
819
+ fontStyle: 'normal',
820
+ fontFamily: 'ADLaM Display',
821
+ },
822
+ ],
823
+ },
824
+ ],
825
+ },
826
+ fontSizes: [
827
+ {
828
+ name: 'Small',
829
+ slug: 'small',
830
+ size: '13px',
831
+ },
832
+ {
833
+ name: 'Medium',
834
+ slug: 'medium',
835
+ size: '20px',
836
+ },
837
+ {
838
+ name: 'Large',
839
+ slug: 'large',
840
+ size: '36px',
841
+ },
842
+ ],
843
+ },
844
+ color: {
845
+ palette: {
846
+ custom: [
847
+ {
848
+ color: '#c42727',
849
+ name: 'Color 1',
850
+ slug: 'custom-color-1',
851
+ },
852
+ {
853
+ color: '#3b0f0f',
854
+ name: 'Color 2',
855
+ slug: 'custom-color-2',
856
+ },
857
+ ],
858
+ },
859
+ },
860
+ layout: {
861
+ wideSize: '1137px',
862
+ contentSize: '400px',
863
+ },
864
+ },
865
+ styles: {
866
+ color: {
867
+ backgroundColor: 'cheese',
868
+ color: 'lettuce',
869
+ },
870
+ typography: {
871
+ fontSize: '12px',
872
+ letterSpacing: '3px',
873
+ lineHeight: '1.5',
874
+ },
875
+ blocks: {
876
+ 'core/quote': {
877
+ color: {
878
+ text: 'hello',
879
+ background: 'dolly',
880
+ },
881
+ typography: {
882
+ fontSize: '20px',
883
+ },
884
+ },
885
+ 'core/group': {
886
+ typography: {
887
+ fontFamily:
888
+ 'var:preset|font-family|system-sans-serif',
889
+ },
890
+ },
891
+ },
892
+ },
893
+ },
894
+ ] );
895
+ } );
896
+
897
+ it( 'should filter the output and return only variations that match filter', () => {
898
+ const { result } = renderHook( () =>
899
+ useThemeStyleVariationsByProperty( {
900
+ variations: mockVariations,
901
+ property: 'typography',
902
+ filter: ( variation ) =>
903
+ !! variation?.settings?.typography?.fontFamilies?.theme
904
+ ?.length,
905
+ } )
906
+ );
907
+ expect( result.current ).toEqual( [
908
+ {
909
+ title: 'Title 1',
910
+ description: 'Description 1',
911
+ settings: {
912
+ typography: {
913
+ fluid: true,
914
+ fontFamilies: {
915
+ theme: [
916
+ {
917
+ name: 'Inter san-serif',
918
+ fontFamily: 'Inter san-serif',
919
+ slug: 'inter-san-serif',
920
+ fontFace: [
921
+ {
922
+ src: 'inter-san-serif.woff2',
923
+ fontWeight: '400',
924
+ fontStyle: 'italic',
925
+ fontFamily: 'Inter san-serif',
926
+ },
927
+ ],
928
+ },
929
+ ],
930
+ },
931
+ fontSizes: [
932
+ {
933
+ name: 'Small',
934
+ slug: 'small',
935
+ size: '13px',
936
+ },
937
+ {
938
+ name: 'Medium',
939
+ slug: 'medium',
940
+ size: '20px',
941
+ },
942
+ {
943
+ name: 'Large',
944
+ slug: 'large',
945
+ size: '36px',
946
+ },
947
+ ],
948
+ },
949
+ },
950
+ styles: {
951
+ typography: {
952
+ letterSpacing: '3px',
953
+ },
954
+ blocks: {
955
+ 'core/quote': {
956
+ typography: {
957
+ fontSize: '20px',
958
+ },
959
+ },
960
+ },
961
+ },
962
+ },
963
+ ] );
964
+ } );
965
+ } );
966
+
967
+ describe( 'removePropertyFromObject', () => {
968
+ const mockBaseVariation = {
969
+ settings: {
970
+ typography: {
971
+ fontFamilies: {
972
+ custom: [
973
+ {
974
+ name: 'ADLaM Display',
975
+ fontFamily: 'ADLaM Display, system-ui',
976
+ slug: 'adlam-display',
977
+ fontFace: [
978
+ {
979
+ src: 'adlam.woff2',
980
+ fontWeight: '400',
981
+ fontStyle: 'normal',
982
+ fontFamily: 'ADLaM Display',
983
+ },
984
+ ],
985
+ },
986
+ ],
987
+ },
988
+ fontSizes: [
989
+ {
990
+ name: 'Base small',
991
+ slug: 'base-small',
992
+ size: '1px',
993
+ },
994
+ {
995
+ name: 'Base medium',
996
+ slug: 'base-medium',
997
+ size: '2px',
998
+ },
999
+ {
1000
+ name: 'Base large',
1001
+ slug: 'base-large',
1002
+ size: '3px',
1003
+ },
1004
+ ],
1005
+ },
1006
+ color: {
1007
+ palette: {
1008
+ custom: [
1009
+ {
1010
+ color: '#c42727',
1011
+ name: 'Color 1',
1012
+ slug: 'custom-color-1',
1013
+ },
1014
+ {
1015
+ color: '#3b0f0f',
1016
+ name: 'Color 2',
1017
+ slug: 'custom-color-2',
1018
+ },
1019
+ ],
1020
+ },
1021
+ },
1022
+ layout: {
1023
+ wideSize: '1137px',
1024
+ contentSize: '400px',
1025
+ },
1026
+ },
1027
+ styles: {
1028
+ typography: {
1029
+ fontSize: '12px',
1030
+ lineHeight: '1.5',
1031
+ },
1032
+ color: {
1033
+ backgroundColor: 'cheese',
1034
+ color: 'lettuce',
1035
+ },
1036
+ elements: {
1037
+ cite: {
1038
+ color: {
1039
+ text: 'white',
1040
+ },
1041
+ typography: {
1042
+ letterSpacing: 'white',
1043
+ },
1044
+ },
1045
+ },
1046
+ blocks: {
1047
+ 'core/quote': {
1048
+ color: {
1049
+ text: 'hello',
1050
+ background: 'dolly',
1051
+ },
1052
+ typography: {
1053
+ fontSize: '111111px',
1054
+ },
1055
+ },
1056
+ 'core/group': {
1057
+ typography: {
1058
+ fontFamily: 'var:preset|font-family|system-sans-serif',
1059
+ },
1060
+ },
1061
+ },
1062
+ },
1063
+ };
1064
+
1065
+ it( 'should return with no property', () => {
1066
+ const object = { test: 'me' };
1067
+ expect( removePropertyFromObject( object, undefined ) ).toEqual(
1068
+ object
1069
+ );
1070
+ } );
1071
+
1072
+ it( 'should return with non-string property', () => {
1073
+ const object = { test: 'you' };
1074
+ expect( removePropertyFromObject( object, true ) ).toEqual( object );
1075
+ } );
1076
+
1077
+ it( 'should return with empty object', () => {
1078
+ const object = {};
1079
+ expect( removePropertyFromObject( object, 'color' ) ).toEqual( object );
1080
+ } );
1081
+
1082
+ it( 'should remove the specified property from the object', () => {
1083
+ expect(
1084
+ removePropertyFromObject(
1085
+ {
1086
+ ...mockBaseVariation,
1087
+ },
1088
+ 'typography'
1089
+ )
1090
+ ).toEqual( {
1091
+ settings: {
1092
+ color: {
1093
+ palette: {
1094
+ custom: [
1095
+ {
1096
+ color: '#c42727',
1097
+ name: 'Color 1',
1098
+ slug: 'custom-color-1',
1099
+ },
1100
+ {
1101
+ color: '#3b0f0f',
1102
+ name: 'Color 2',
1103
+ slug: 'custom-color-2',
1104
+ },
1105
+ ],
1106
+ },
1107
+ },
1108
+ layout: {
1109
+ wideSize: '1137px',
1110
+ contentSize: '400px',
1111
+ },
1112
+ },
1113
+ styles: {
1114
+ color: {
1115
+ backgroundColor: 'cheese',
1116
+ color: 'lettuce',
1117
+ },
1118
+ elements: {
1119
+ cite: {
1120
+ color: {
1121
+ text: 'white',
1122
+ },
1123
+ },
1124
+ },
1125
+ blocks: {
1126
+ 'core/quote': {
1127
+ color: {
1128
+ text: 'hello',
1129
+ background: 'dolly',
1130
+ },
1131
+ },
1132
+ 'core/group': {},
1133
+ },
1134
+ },
1135
+ } );
1136
+ } );
1137
+ } );