@wordpress/edit-site 4.16.0 → 4.18.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 (285) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/app/index.js +8 -3
  3. package/build/components/app/index.js.map +1 -1
  4. package/build/components/block-editor/block-inspector-button.js +1 -1
  5. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  6. package/build/components/block-editor/index.js +17 -11
  7. package/build/components/block-editor/index.js.map +1 -1
  8. package/build/components/editor/index.js +14 -20
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/border-panel.js +2 -1
  11. package/build/components/global-styles/border-panel.js.map +1 -1
  12. package/build/components/global-styles/global-styles-provider.js +6 -5
  13. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  14. package/build/components/global-styles/preview.js +84 -49
  15. package/build/components/global-styles/preview.js.map +1 -1
  16. package/build/components/global-styles/screen-style-variations.js +35 -4
  17. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  18. package/build/components/global-styles/typography-panel.js +16 -2
  19. package/build/components/global-styles/typography-panel.js.map +1 -1
  20. package/build/components/global-styles/typography-utils.js +39 -176
  21. package/build/components/global-styles/typography-utils.js.map +1 -1
  22. package/build/components/global-styles/use-global-styles-output.js +27 -9
  23. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  24. package/build/components/{header → header-edit-mode}/document-actions/index.js +58 -24
  25. package/build/components/header-edit-mode/document-actions/index.js.map +1 -0
  26. package/build/components/{header → header-edit-mode}/index.js +14 -55
  27. package/build/components/header-edit-mode/index.js.map +1 -0
  28. package/build/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  29. package/build/components/header-edit-mode/mode-switcher/index.js.map +1 -0
  30. package/build/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  31. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -0
  32. package/build/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  33. package/build/components/header-edit-mode/more-menu/index.js.map +1 -0
  34. package/build/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  35. package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -0
  36. package/build/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  37. package/build/components/header-edit-mode/more-menu/welcome-guide-menu-item.js.map +1 -0
  38. package/build/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  39. package/build/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -0
  40. package/build/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  41. package/build/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -0
  42. package/build/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  43. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -0
  44. package/build/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  45. package/build/components/header-edit-mode/undo-redo/redo.js.map +1 -0
  46. package/build/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  47. package/build/components/header-edit-mode/undo-redo/undo.js.map +1 -0
  48. package/build/components/keyboard-shortcut-help-modal/shortcut.js +1 -7
  49. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  50. package/build/components/keyboard-shortcuts/index.js +6 -6
  51. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  52. package/build/components/navigation-sidebar/navigation-panel/index.js +9 -8
  53. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  54. package/build/components/save-button/index.js +17 -13
  55. package/build/components/save-button/index.js.map +1 -1
  56. package/build/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  57. package/build/components/sidebar-edit-mode/constants.js.map +1 -0
  58. package/build/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  59. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -0
  60. package/build/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  61. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -0
  62. package/build/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  63. package/build/components/sidebar-edit-mode/index.js.map +1 -0
  64. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  65. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +1 -0
  66. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  67. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -0
  68. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  69. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -0
  70. package/build/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  71. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -0
  72. package/build/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  73. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -0
  74. package/build/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  75. package/build/components/sidebar-edit-mode/template-card/index.js.map +1 -0
  76. package/build/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  77. package/build/components/sidebar-edit-mode/template-card/template-actions.js.map +1 -0
  78. package/build/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  79. package/build/components/sidebar-edit-mode/template-card/template-areas.js.map +1 -0
  80. package/build/index.js +8 -13
  81. package/build/index.js.map +1 -1
  82. package/build/store/actions.js +15 -0
  83. package/build/store/actions.js.map +1 -1
  84. package/build/store/reducer.js +28 -1
  85. package/build/store/reducer.js.map +1 -1
  86. package/build/store/selectors.js +13 -0
  87. package/build/store/selectors.js.map +1 -1
  88. package/build-module/components/app/index.js +8 -3
  89. package/build-module/components/app/index.js.map +1 -1
  90. package/build-module/components/block-editor/block-inspector-button.js +1 -1
  91. package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
  92. package/build-module/components/block-editor/index.js +16 -10
  93. package/build-module/components/block-editor/index.js.map +1 -1
  94. package/build-module/components/editor/index.js +14 -20
  95. package/build-module/components/editor/index.js.map +1 -1
  96. package/build-module/components/global-styles/border-panel.js +2 -1
  97. package/build-module/components/global-styles/border-panel.js.map +1 -1
  98. package/build-module/components/global-styles/global-styles-provider.js +7 -6
  99. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  100. package/build-module/components/global-styles/preview.js +84 -49
  101. package/build-module/components/global-styles/preview.js.map +1 -1
  102. package/build-module/components/global-styles/screen-style-variations.js +36 -6
  103. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  104. package/build-module/components/global-styles/typography-panel.js +15 -2
  105. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  106. package/build-module/components/global-styles/typography-utils.js +37 -169
  107. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  108. package/build-module/components/global-styles/use-global-styles-output.js +26 -9
  109. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  110. package/build-module/components/{header → header-edit-mode}/document-actions/index.js +53 -24
  111. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -0
  112. package/build-module/components/{header → header-edit-mode}/index.js +14 -52
  113. package/build-module/components/header-edit-mode/index.js.map +1 -0
  114. package/build-module/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  115. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +1 -0
  116. package/build-module/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  117. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -0
  118. package/build-module/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  119. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -0
  120. package/build-module/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  121. package/build-module/components/header-edit-mode/more-menu/site-export.js.map +1 -0
  122. package/build-module/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  123. package/build-module/components/header-edit-mode/more-menu/welcome-guide-menu-item.js.map +1 -0
  124. package/build-module/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  125. package/build-module/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -0
  126. package/build-module/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  127. package/build-module/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -0
  128. package/build-module/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  129. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -0
  130. package/build-module/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  131. package/build-module/components/header-edit-mode/undo-redo/redo.js.map +1 -0
  132. package/build-module/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  133. package/build-module/components/header-edit-mode/undo-redo/undo.js.map +1 -0
  134. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +1 -6
  135. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  136. package/build-module/components/keyboard-shortcuts/index.js +6 -6
  137. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  138. package/build-module/components/navigation-sidebar/navigation-panel/index.js +9 -7
  139. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  140. package/build-module/components/save-button/index.js +19 -15
  141. package/build-module/components/save-button/index.js.map +1 -1
  142. package/build-module/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  143. package/build-module/components/sidebar-edit-mode/constants.js.map +1 -0
  144. package/build-module/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  145. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -0
  146. package/build-module/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  147. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -0
  148. package/build-module/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  149. package/build-module/components/sidebar-edit-mode/index.js.map +1 -0
  150. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  151. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +1 -0
  152. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  153. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -0
  154. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  155. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -0
  156. package/build-module/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  157. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -0
  158. package/build-module/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  159. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -0
  160. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  161. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +1 -0
  162. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  163. package/build-module/components/sidebar-edit-mode/template-card/template-actions.js.map +1 -0
  164. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  165. package/build-module/components/sidebar-edit-mode/template-card/template-areas.js.map +1 -0
  166. package/build-module/index.js +8 -6
  167. package/build-module/index.js.map +1 -1
  168. package/build-module/store/actions.js +13 -0
  169. package/build-module/store/actions.js.map +1 -1
  170. package/build-module/store/reducer.js +26 -1
  171. package/build-module/store/reducer.js.map +1 -1
  172. package/build-module/store/selectors.js +11 -0
  173. package/build-module/store/selectors.js.map +1 -1
  174. package/build-style/style-rtl.css +63 -86
  175. package/build-style/style.css +63 -86
  176. package/package.json +29 -29
  177. package/src/components/app/index.js +11 -2
  178. package/src/components/block-editor/block-inspector-button.js +1 -1
  179. package/src/components/block-editor/index.js +29 -11
  180. package/src/components/block-editor/style.scss +1 -0
  181. package/src/components/editor/index.js +18 -29
  182. package/src/components/global-styles/border-panel.js +1 -0
  183. package/src/components/global-styles/global-styles-provider.js +5 -6
  184. package/src/components/global-styles/preview.js +80 -59
  185. package/src/components/global-styles/screen-style-variations.js +39 -4
  186. package/src/components/global-styles/style.scss +1 -0
  187. package/src/components/global-styles/test/typography-utils.js +333 -103
  188. package/src/components/global-styles/test/use-global-styles-output.js +57 -3
  189. package/src/components/global-styles/typography-panel.js +15 -1
  190. package/src/components/global-styles/typography-utils.js +34 -195
  191. package/src/components/global-styles/use-global-styles-output.js +16 -0
  192. package/src/components/{header → header-edit-mode}/document-actions/index.js +67 -46
  193. package/src/components/{header → header-edit-mode}/document-actions/style.scss +0 -0
  194. package/src/components/{header → header-edit-mode}/index.js +14 -53
  195. package/src/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  196. package/src/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  197. package/src/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  198. package/src/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  199. package/src/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  200. package/src/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  201. package/src/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  202. package/src/components/{header → header-edit-mode}/style.scss +20 -50
  203. package/src/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  204. package/src/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  205. package/src/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  206. package/src/components/keyboard-shortcut-help-modal/shortcut.js +15 -18
  207. package/src/components/keyboard-shortcuts/index.js +4 -3
  208. package/src/components/navigation-sidebar/navigation-panel/index.js +30 -24
  209. package/src/components/navigation-sidebar/navigation-toggle/test/__snapshots__/index.js.snap +41 -0
  210. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +10 -12
  211. package/src/components/save-button/index.js +14 -14
  212. package/src/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  213. package/src/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  214. package/src/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  215. package/src/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  216. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  217. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  218. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  219. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/style.scss +0 -0
  220. package/src/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  221. package/src/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  222. package/src/components/{sidebar → sidebar-edit-mode}/settings-header/style.scss +2 -2
  223. package/src/components/{sidebar → sidebar-edit-mode}/style.scss +1 -1
  224. package/src/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  225. package/src/components/{sidebar → sidebar-edit-mode}/template-card/style.scss +0 -0
  226. package/src/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  227. package/src/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  228. package/src/index.js +13 -6
  229. package/src/store/actions.js +13 -0
  230. package/src/store/reducer.js +19 -0
  231. package/src/store/selectors.js +11 -0
  232. package/src/style.scss +6 -6
  233. package/build/components/header/document-actions/index.js.map +0 -1
  234. package/build/components/header/index.js.map +0 -1
  235. package/build/components/header/mode-switcher/index.js.map +0 -1
  236. package/build/components/header/more-menu/copy-content-menu-item.js.map +0 -1
  237. package/build/components/header/more-menu/index.js.map +0 -1
  238. package/build/components/header/more-menu/site-export.js.map +0 -1
  239. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  240. package/build/components/header/plugin-more-menu-item/index.js.map +0 -1
  241. package/build/components/header/plugin-sidebar-more-menu-item/index.js.map +0 -1
  242. package/build/components/header/tools-more-menu-group/index.js.map +0 -1
  243. package/build/components/header/undo-redo/redo.js.map +0 -1
  244. package/build/components/header/undo-redo/undo.js.map +0 -1
  245. package/build/components/main-dashboard-button/index.js +0 -41
  246. package/build/components/main-dashboard-button/index.js.map +0 -1
  247. package/build/components/sidebar/constants.js.map +0 -1
  248. package/build/components/sidebar/default-sidebar.js.map +0 -1
  249. package/build/components/sidebar/global-styles-sidebar.js.map +0 -1
  250. package/build/components/sidebar/index.js.map +0 -1
  251. package/build/components/sidebar/navigation-menu-sidebar/index.js.map +0 -1
  252. package/build/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  253. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  254. package/build/components/sidebar/plugin-sidebar/index.js.map +0 -1
  255. package/build/components/sidebar/settings-header/index.js.map +0 -1
  256. package/build/components/sidebar/template-card/index.js.map +0 -1
  257. package/build/components/sidebar/template-card/template-actions.js.map +0 -1
  258. package/build/components/sidebar/template-card/template-areas.js.map +0 -1
  259. package/build-module/components/header/document-actions/index.js.map +0 -1
  260. package/build-module/components/header/index.js.map +0 -1
  261. package/build-module/components/header/mode-switcher/index.js.map +0 -1
  262. package/build-module/components/header/more-menu/copy-content-menu-item.js.map +0 -1
  263. package/build-module/components/header/more-menu/index.js.map +0 -1
  264. package/build-module/components/header/more-menu/site-export.js.map +0 -1
  265. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  266. package/build-module/components/header/plugin-more-menu-item/index.js.map +0 -1
  267. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js.map +0 -1
  268. package/build-module/components/header/tools-more-menu-group/index.js.map +0 -1
  269. package/build-module/components/header/undo-redo/redo.js.map +0 -1
  270. package/build-module/components/header/undo-redo/undo.js.map +0 -1
  271. package/build-module/components/main-dashboard-button/index.js +0 -32
  272. package/build-module/components/main-dashboard-button/index.js.map +0 -1
  273. package/build-module/components/sidebar/constants.js.map +0 -1
  274. package/build-module/components/sidebar/default-sidebar.js.map +0 -1
  275. package/build-module/components/sidebar/global-styles-sidebar.js.map +0 -1
  276. package/build-module/components/sidebar/index.js.map +0 -1
  277. package/build-module/components/sidebar/navigation-menu-sidebar/index.js.map +0 -1
  278. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  279. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  280. package/build-module/components/sidebar/plugin-sidebar/index.js.map +0 -1
  281. package/build-module/components/sidebar/settings-header/index.js.map +0 -1
  282. package/build-module/components/sidebar/template-card/index.js.map +0 -1
  283. package/build-module/components/sidebar/template-card/template-actions.js.map +0 -1
  284. package/build-module/components/sidebar/template-card/template-areas.js.map +0 -1
  285. package/src/components/main-dashboard-button/index.js +0 -28
@@ -4,73 +4,59 @@
4
4
  * ---------------------------------------------------------------
5
5
  */
6
6
 
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { getComputedFluidTypographyValue } from '@wordpress/block-editor';
11
+
12
+ /**
13
+ * @typedef {Object} FluidPreset
14
+ * @property {string|undefined} max A maximum font size value.
15
+ * @property {?string|undefined} min A minimum font size value.
16
+ */
17
+
18
+ /**
19
+ * @typedef {Object} Preset
20
+ * @property {?string|?number} size A default font size.
21
+ * @property {string} name A font size name, displayed in the UI.
22
+ * @property {string} slug A font size slug
23
+ * @property {boolean|FluidPreset|undefined} fluid A font size slug
24
+ */
25
+
7
26
  /**
8
27
  * Returns a font-size value based on a given font-size preset.
9
28
  * Takes into account fluid typography parameters and attempts to return a css formula depending on available, valid values.
10
29
  *
11
- * @param {Object} preset
12
- * @param {string} preset.size A default font size.
13
- * @param {string} preset.name A font size name, displayed in the UI.
14
- * @param {string} preset.slug A font size slug.
15
- * @param {Object} preset.fluid
16
- * @param {string|undefined} preset.fluid.max A maximum font size value.
17
- * @param {string|undefined} preset.fluid.min A minimum font size value.
18
- * @param {Object} typographySettings
19
- * @param {boolean} typographySettings.fluid Whether fluid typography is enabled.
30
+ * @param {Preset} preset
31
+ * @param {Object} typographySettings
32
+ * @param {boolean} typographySettings.fluid Whether fluid typography is enabled.
20
33
  *
21
- * @return {string} An font-size value
34
+ * @return {string|*} A font-size value or the value of preset.size.
22
35
  */
23
36
  export function getTypographyFontSizeValue( preset, typographySettings ) {
24
37
  const { size: defaultSize } = preset;
25
38
 
26
- if ( true !== typographySettings?.fluid ) {
39
+ /*
40
+ * Catches falsy values and 0/'0'.
41
+ * Fluid calculations cannot be performed on 0.
42
+ */
43
+ if ( ! defaultSize || '0' === defaultSize ) {
27
44
  return defaultSize;
28
45
  }
29
46
 
30
- // Defaults.
31
- const DEFAULT_MAXIMUM_VIEWPORT_WIDTH = '1600px';
32
- const DEFAULT_MINIMUM_VIEWPORT_WIDTH = '768px';
33
- const DEFAULT_MINIMUM_FONT_SIZE_FACTOR = 0.75;
34
- const DEFAULT_MAXIMUM_FONT_SIZE_FACTOR = 1.5;
35
- const DEFAULT_SCALE_FACTOR = 1;
36
-
37
- // Font sizes.
38
- // A font size has explicitly bypassed fluid calculations.
39
- if ( false === preset?.fluid ) {
47
+ if ( true !== typographySettings?.fluid ) {
40
48
  return defaultSize;
41
49
  }
42
50
 
43
- const fluidFontSizeSettings = preset?.fluid || {};
44
-
45
- // Try to grab explicit min and max fluid font sizes.
46
- let minimumFontSizeRaw = fluidFontSizeSettings?.min;
47
- let maximumFontSizeRaw = fluidFontSizeSettings?.max;
48
- const preferredSize = getTypographyValueAndUnit( defaultSize );
49
-
50
- // Protect against unsupported units.
51
- if ( ! preferredSize?.unit ) {
51
+ // A font size has explicitly bypassed fluid calculations.
52
+ if ( false === preset?.fluid ) {
52
53
  return defaultSize;
53
54
  }
54
55
 
55
- // If no fluid min or max font sizes are available, create some using min/max font size factors.
56
- if ( ! minimumFontSizeRaw ) {
57
- minimumFontSizeRaw =
58
- preferredSize.value * DEFAULT_MINIMUM_FONT_SIZE_FACTOR +
59
- preferredSize.unit;
60
- }
61
-
62
- if ( ! maximumFontSizeRaw ) {
63
- maximumFontSizeRaw =
64
- preferredSize.value * DEFAULT_MAXIMUM_FONT_SIZE_FACTOR +
65
- preferredSize.unit;
66
- }
67
-
68
56
  const fluidFontSizeValue = getComputedFluidTypographyValue( {
69
- maximumViewPortWidth: DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
70
- minimumViewPortWidth: DEFAULT_MINIMUM_VIEWPORT_WIDTH,
71
- maximumFontSize: maximumFontSizeRaw,
72
- minimumFontSize: minimumFontSizeRaw,
73
- scaleFactor: DEFAULT_SCALE_FACTOR,
57
+ minimumFontSize: preset?.fluid?.min,
58
+ maximumFontSize: preset?.fluid?.max,
59
+ fontSize: defaultSize,
74
60
  } );
75
61
 
76
62
  if ( !! fluidFontSizeValue ) {
@@ -79,150 +65,3 @@ export function getTypographyFontSizeValue( preset, typographySettings ) {
79
65
 
80
66
  return defaultSize;
81
67
  }
82
-
83
- /**
84
- * Internal implementation of clamp() based on available min/max viewport width, and min/max font sizes.
85
- *
86
- * @param {Object} args
87
- * @param {string} args.maximumViewPortWidth Maximum size up to which type will have fluidity.
88
- * @param {string} args.minimumViewPortWidth Minimum viewport size from which type will have fluidity.
89
- * @param {string} args.maximumFontSize Maximum font size for any clamp() calculation.
90
- * @param {string} args.minimumFontSize Minimum font size for any clamp() calculation.
91
- * @param {number} args.scaleFactor A scale factor to determine how fast a font scales within boundaries.
92
- *
93
- * @return {string|null} A font-size value using clamp().
94
- */
95
- export function getComputedFluidTypographyValue( {
96
- maximumViewPortWidth,
97
- minimumViewPortWidth,
98
- maximumFontSize,
99
- minimumFontSize,
100
- scaleFactor,
101
- } ) {
102
- // Grab the minimum font size and normalize it in order to use the value for calculations.
103
- const minimumFontSizeParsed = getTypographyValueAndUnit( minimumFontSize );
104
-
105
- // We get a 'preferred' unit to keep units consistent when calculating,
106
- // otherwise the result will not be accurate.
107
- const fontSizeUnit = minimumFontSizeParsed?.unit || 'rem';
108
-
109
- // Grab the maximum font size and normalize it in order to use the value for calculations.
110
- const maximumFontSizeParsed = getTypographyValueAndUnit( maximumFontSize, {
111
- coerceTo: fontSizeUnit,
112
- } );
113
-
114
- // Protect against unsupported units.
115
- if ( ! minimumFontSizeParsed || ! maximumFontSizeParsed ) {
116
- return null;
117
- }
118
-
119
- // Use rem for accessible fluid target font scaling.
120
- const minimumFontSizeRem = getTypographyValueAndUnit( minimumFontSize, {
121
- coerceTo: 'rem',
122
- } );
123
-
124
- // Viewport widths defined for fluid typography. Normalize units
125
- const maximumViewPortWidthParsed = getTypographyValueAndUnit(
126
- maximumViewPortWidth,
127
- { coerceTo: fontSizeUnit }
128
- );
129
- const minumumViewPortWidthParsed = getTypographyValueAndUnit(
130
- minimumViewPortWidth,
131
- { coerceTo: fontSizeUnit }
132
- );
133
-
134
- // Protect against unsupported units.
135
- if (
136
- ! maximumViewPortWidthParsed ||
137
- ! minumumViewPortWidthParsed ||
138
- ! minimumFontSizeRem
139
- ) {
140
- return null;
141
- }
142
-
143
- // Build CSS rule.
144
- // Borrowed from https://websemantics.uk/tools/responsive-font-calculator/.
145
- const minViewPortWidthOffsetValue = roundToPrecision(
146
- minumumViewPortWidthParsed.value / 100,
147
- 3
148
- );
149
-
150
- const viewPortWidthOffset = minViewPortWidthOffsetValue + fontSizeUnit;
151
- let linearFactor =
152
- 100 *
153
- ( ( maximumFontSizeParsed.value - minimumFontSizeParsed.value ) /
154
- ( maximumViewPortWidthParsed.value -
155
- minumumViewPortWidthParsed.value ) );
156
- linearFactor = roundToPrecision( linearFactor, 3 ) || 1;
157
- const linearFactorScaled = linearFactor * scaleFactor;
158
- const fluidTargetFontSize = `${ minimumFontSizeRem.value }${ minimumFontSizeRem.unit } + ((1vw - ${ viewPortWidthOffset }) * ${ linearFactorScaled })`;
159
-
160
- return `clamp(${ minimumFontSize }, ${ fluidTargetFontSize }, ${ maximumFontSize })`;
161
- }
162
-
163
- /**
164
- *
165
- * @param {string} rawValue Raw size value from theme.json.
166
- * @param {Object|undefined} options Calculation options.
167
- *
168
- * @return {{ unit: string, value: number }|null} An object consisting of `'value'` and `'unit'` properties.
169
- */
170
- export function getTypographyValueAndUnit( rawValue, options = {} ) {
171
- if ( ! rawValue ) {
172
- return null;
173
- }
174
-
175
- const { coerceTo, rootSizeValue, acceptableUnits } = {
176
- coerceTo: '',
177
- // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`.
178
- rootSizeValue: 16,
179
- acceptableUnits: [ 'rem', 'px', 'em' ],
180
- ...options,
181
- };
182
-
183
- const acceptableUnitsGroup = acceptableUnits?.join( '|' );
184
- const regexUnits = new RegExp(
185
- `^(\\d*\\.?\\d+)(${ acceptableUnitsGroup }){1,1}$`
186
- );
187
-
188
- const matches = rawValue.match( regexUnits );
189
-
190
- // We need a number value and a unit.
191
- if ( ! matches || matches.length < 3 ) {
192
- return null;
193
- }
194
-
195
- let [ , value, unit ] = matches;
196
-
197
- let returnValue = parseFloat( value );
198
-
199
- if ( 'px' === coerceTo && ( 'em' === unit || 'rem' === unit ) ) {
200
- returnValue = returnValue * rootSizeValue;
201
- unit = coerceTo;
202
- }
203
-
204
- if ( 'px' === unit && ( 'em' === coerceTo || 'rem' === coerceTo ) ) {
205
- returnValue = returnValue / rootSizeValue;
206
- unit = coerceTo;
207
- }
208
-
209
- return {
210
- value: returnValue,
211
- unit,
212
- };
213
- }
214
-
215
- /**
216
- * Returns a value rounded to defined precision.
217
- * Returns `undefined` if the value is not a valid finite number.
218
- *
219
- * @param {number} value Raw value.
220
- * @param {number} digits The number of digits to appear after the decimal point
221
- *
222
- * @return {number|undefined} Value rounded to standard precision.
223
- */
224
- export function roundToPrecision( value, digits = 3 ) {
225
- return Number.isFinite( value )
226
- ? parseFloat( value.toFixed( digits ) )
227
- : undefined;
228
- }
@@ -24,6 +24,7 @@ import {
24
24
  * Internal dependencies
25
25
  */
26
26
  import { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';
27
+ import { getTypographyFontSizeValue } from './typography-utils';
27
28
  import { GlobalStylesContext } from './context';
28
29
  import { useSetting } from './hooks';
29
30
 
@@ -276,6 +277,21 @@ export function getStylesDeclarations(
276
277
  }
277
278
  }
278
279
 
280
+ // Calculate fluid typography rules where available.
281
+ if ( cssProperty === 'font-size' ) {
282
+ /*
283
+ * getTypographyFontSizeValue() will check
284
+ * if fluid typography has been activated and also
285
+ * whether the incoming value can be converted to a fluid value.
286
+ * Values that already have a "clamp()" function will not pass the test,
287
+ * and therefore the original $value will be returned.
288
+ */
289
+ ruleValue = getTypographyFontSizeValue(
290
+ { size: ruleValue },
291
+ tree?.settings?.typography
292
+ );
293
+ }
294
+
279
295
  output.push( `${ cssProperty }: ${ ruleValue }` );
280
296
  } );
281
297
 
@@ -21,6 +21,15 @@ import {
21
21
  import { chevronDown } from '@wordpress/icons';
22
22
  import { useState, useMemo } from '@wordpress/element';
23
23
  import { store as blockEditorStore } from '@wordpress/block-editor';
24
+ import { store as coreStore } from '@wordpress/core-data';
25
+ import { store as editorStore } from '@wordpress/editor';
26
+ import { store as preferencesStore } from '@wordpress/preferences';
27
+
28
+ /**
29
+ * Internal dependencies
30
+ */
31
+ import TemplateDetails from '../../template-details';
32
+ import { store as editSiteStore } from '../../../store';
24
33
 
25
34
  function getBlockDisplayText( block ) {
26
35
  if ( block ) {
@@ -52,25 +61,36 @@ function useSecondaryText() {
52
61
  return {};
53
62
  }
54
63
 
55
- /**
56
- * @param {Object} props Props for the DocumentActions component.
57
- * @param {string} props.entityTitle The title to display.
58
- * @param {string} props.entityLabel A label to use for entity-related options.
59
- * E.g. "template" would be used for "edit
60
- * template" and "show template details".
61
- * @param {boolean} props.isLoaded Whether the data is available.
62
- * @param {Function} props.children React component to use for the
63
- * information dropdown area. Should be a
64
- * function which accepts dropdown props.
65
- * @param {boolean} props.showIconLabels Whether buttons display icons or text labels.
66
- */
67
- export default function DocumentActions( {
68
- entityTitle,
69
- entityLabel,
70
- isLoaded,
71
- children: dropdownContent,
72
- showIconLabels,
73
- } ) {
64
+ export default function DocumentActions() {
65
+ const { showIconLabels, entityTitle, template, templateType, isLoaded } =
66
+ useSelect( ( select ) => {
67
+ const { getEditedPostType, getEditedPostId } =
68
+ select( editSiteStore );
69
+ const { getEditedEntityRecord } = select( coreStore );
70
+ const { __experimentalGetTemplateInfo: getTemplateInfo } =
71
+ select( editorStore );
72
+ const postType = getEditedPostType();
73
+ const postId = getEditedPostId();
74
+ const record = getEditedEntityRecord(
75
+ 'postType',
76
+ postType,
77
+ postId
78
+ );
79
+ const _isLoaded = !! postId;
80
+
81
+ return {
82
+ showIconLabels: select( preferencesStore ).get(
83
+ 'core/edit-site',
84
+ 'showIconLabels'
85
+ ),
86
+ entityTitle: getTemplateInfo( record ).title,
87
+ isLoaded: _isLoaded,
88
+ template: record,
89
+ templateType: postType,
90
+ };
91
+ }, [] );
92
+ const entityLabel =
93
+ templateType === 'wp_template_part' ? 'template part' : 'template';
74
94
  const { label } = useSecondaryText();
75
95
 
76
96
  // Use internal state instead of a ref to make sure that the component
@@ -137,33 +157,34 @@ export default function DocumentActions( {
137
157
  { label ?? '' }
138
158
  </Text>
139
159
 
140
- { dropdownContent && (
141
- <Dropdown
142
- popoverProps={ popoverProps }
143
- position="bottom center"
144
- renderToggle={ ( { isOpen, onToggle } ) => (
145
- <Button
146
- className="edit-site-document-actions__get-info"
147
- icon={ chevronDown }
148
- aria-expanded={ isOpen }
149
- aria-haspopup="true"
150
- onClick={ onToggle }
151
- variant={
152
- showIconLabels ? 'tertiary' : undefined
153
- }
154
- label={ sprintf(
155
- /* translators: %s: the entity to see details about, like "template"*/
156
- __( 'Show %s details' ),
157
- entityLabel
158
- ) }
159
- >
160
- { showIconLabels && __( 'Details' ) }
161
- </Button>
162
- ) }
163
- contentClassName="edit-site-document-actions__info-dropdown"
164
- renderContent={ dropdownContent }
165
- />
166
- ) }
160
+ <Dropdown
161
+ popoverProps={ popoverProps }
162
+ position="bottom center"
163
+ renderToggle={ ( { isOpen, onToggle } ) => (
164
+ <Button
165
+ className="edit-site-document-actions__get-info"
166
+ icon={ chevronDown }
167
+ aria-expanded={ isOpen }
168
+ aria-haspopup="true"
169
+ onClick={ onToggle }
170
+ variant={ showIconLabels ? 'tertiary' : undefined }
171
+ label={ sprintf(
172
+ /* translators: %s: the entity to see details about, like "template"*/
173
+ __( 'Show %s details' ),
174
+ entityLabel
175
+ ) }
176
+ >
177
+ { showIconLabels && __( 'Details' ) }
178
+ </Button>
179
+ ) }
180
+ contentClassName="edit-site-document-actions__info-dropdown"
181
+ renderContent={ ( { onClose } ) => (
182
+ <TemplateDetails
183
+ template={ template }
184
+ onClose={ onClose }
185
+ />
186
+ ) }
187
+ />
167
188
  </div>
168
189
  </div>
169
190
  );
@@ -26,8 +26,6 @@ import {
26
26
  VisuallyHidden,
27
27
  } from '@wordpress/components';
28
28
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
29
- import { store as editorStore } from '@wordpress/editor';
30
- import { store as coreStore } from '@wordpress/core-data';
31
29
 
32
30
  /**
33
31
  * Internal dependencies
@@ -37,28 +35,20 @@ import SaveButton from '../save-button';
37
35
  import UndoButton from './undo-redo/undo';
38
36
  import RedoButton from './undo-redo/redo';
39
37
  import DocumentActions from './document-actions';
40
- import TemplateDetails from '../template-details';
41
38
  import { store as editSiteStore } from '../../store';
42
39
 
43
40
  const preventDefault = ( event ) => {
44
41
  event.preventDefault();
45
42
  };
46
43
 
47
- export default function Header( {
48
- openEntitiesSavedStates,
49
- isEntitiesSavedStatesOpen,
50
- showIconLabels,
51
- } ) {
44
+ export default function Header( { showIconLabels } ) {
52
45
  const inserterButton = useRef();
53
46
  const {
54
47
  deviceType,
55
- entityTitle,
56
- template,
57
48
  templateType,
58
49
  isInserterOpen,
59
50
  isListViewOpen,
60
51
  listViewShortcut,
61
- isLoaded,
62
52
  isVisualMode,
63
53
  settings,
64
54
  blockEditorMode,
@@ -66,28 +56,18 @@ export default function Header( {
66
56
  const {
67
57
  __experimentalGetPreviewDeviceType,
68
58
  getEditedPostType,
69
- getEditedPostId,
70
59
  isInserterOpened,
71
60
  isListViewOpened,
72
61
  getEditorMode,
73
62
  getSettings,
74
63
  } = select( editSiteStore );
75
- const { getEditedEntityRecord } = select( coreStore );
76
- const { __experimentalGetTemplateInfo: getTemplateInfo } =
77
- select( editorStore );
78
64
  const { getShortcutRepresentation } = select( keyboardShortcutsStore );
79
65
  const { __unstableGetEditorMode } = select( blockEditorStore );
80
66
 
81
67
  const postType = getEditedPostType();
82
- const postId = getEditedPostId();
83
- const record = getEditedEntityRecord( 'postType', postType, postId );
84
- const _isLoaded = !! postId;
85
68
 
86
69
  return {
87
70
  deviceType: __experimentalGetPreviewDeviceType(),
88
- entityTitle: getTemplateInfo( record ).title,
89
- isLoaded: _isLoaded,
90
- template: record,
91
71
  templateType: postType,
92
72
  isInserterOpen: isInserterOpened(),
93
73
  isListViewOpen: isListViewOpened(),
@@ -137,16 +117,16 @@ export default function Header( {
137
117
  const isZoomedOutView = blockEditorMode === 'zoom-out';
138
118
 
139
119
  return (
140
- <div className="edit-site-header">
120
+ <div className="edit-site-header-edit-mode">
141
121
  <NavigableToolbar
142
- className="edit-site-header_start"
122
+ className="edit-site-header-edit-mode__start"
143
123
  aria-label={ __( 'Document tools' ) }
144
124
  >
145
- <div className="edit-site-header__toolbar">
125
+ <div className="edit-site-header-edit-mode__toolbar">
146
126
  <ToolbarItem
147
127
  ref={ inserterButton }
148
128
  as={ Button }
149
- className="edit-site-header-toolbar__inserter-toggle"
129
+ className="edit-site-header-edit-mode__inserter-toggle"
150
130
  variant="primary"
151
131
  isPressed={ isInserterOpen }
152
132
  onMouseDown={ preventDefault }
@@ -182,7 +162,7 @@ export default function Header( {
182
162
  />
183
163
  <ToolbarItem
184
164
  as={ Button }
185
- className="edit-site-header-toolbar__list-view-toggle"
165
+ className="edit-site-header-edit-mode__list-view-toggle"
186
166
  disabled={ ! isVisualMode && isZoomedOutView }
187
167
  icon={ listView }
188
168
  isPressed={ isListViewOpen }
@@ -198,14 +178,12 @@ export default function Header( {
198
178
  { isZoomedOutViewExperimentEnabled && (
199
179
  <ToolbarItem
200
180
  as={ Button }
201
- className="edit-site-header-toolbar__zoom-out-view-toggle"
202
181
  icon={ chevronUpDown }
203
182
  isPressed={ isZoomedOutView }
204
183
  /* translators: button label text should, if possible, be under 16 characters. */
205
184
  label={ __( 'Zoom-out View' ) }
206
185
  onClick={ () => {
207
186
  setPreviewDeviceType( 'desktop' );
208
- setIsListViewOpened( false );
209
187
  __unstableSetEditorMode(
210
188
  isZoomedOutView
211
189
  ? 'edit'
@@ -219,38 +197,24 @@ export default function Header( {
219
197
  </div>
220
198
  </NavigableToolbar>
221
199
 
222
- <div className="edit-site-header_center">
223
- <DocumentActions
224
- entityTitle={ entityTitle }
225
- entityLabel={
226
- templateType === 'wp_template_part'
227
- ? 'template part'
228
- : 'template'
229
- }
230
- isLoaded={ isLoaded }
231
- showIconLabels={ showIconLabels }
232
- >
233
- { ( { onClose } ) => (
234
- <TemplateDetails
235
- template={ template }
236
- onClose={ onClose }
237
- />
238
- ) }
239
- </DocumentActions>
200
+ <div className="edit-site-header-edit-mode__center">
201
+ <DocumentActions />
240
202
  </div>
241
203
 
242
- <div className="edit-site-header_end">
243
- <div className="edit-site-header__actions">
204
+ <div className="edit-site-header-edit-mode__end">
205
+ <div className="edit-site-header-edit-mode__actions">
244
206
  { ! isFocusMode && (
245
207
  <div
246
208
  className={ classnames(
247
- 'edit-site-header__actions__preview-options',
209
+ 'edit-site-header-edit-mode__preview-options',
248
210
  { 'is-zoomed-out': isZoomedOutView }
249
211
  ) }
250
212
  >
251
213
  <PreviewOptions
252
214
  deviceType={ deviceType }
253
215
  setDeviceType={ setPreviewDeviceType }
216
+ /* translators: button label text should, if possible, be under 16 characters. */
217
+ viewLabel={ __( 'View' ) }
254
218
  >
255
219
  <MenuGroup>
256
220
  <MenuItem
@@ -270,10 +234,7 @@ export default function Header( {
270
234
  </PreviewOptions>
271
235
  </div>
272
236
  ) }
273
- <SaveButton
274
- openEntitiesSavedStates={ openEntitiesSavedStates }
275
- isEntitiesSavedStatesOpen={ isEntitiesSavedStatesOpen }
276
- />
237
+ <SaveButton />
277
238
  <PinnedItems.Slot scope="core/edit-site" />
278
239
  <MoreMenu showIconLabels={ showIconLabels } />
279
240
  </div>