@wordpress/block-editor 13.2.0 → 13.4.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 (538) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +0 -5
  3. package/build/components/alignment-control/ui.js +2 -2
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js +1 -1
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +1 -1
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -1
  9. package/build/components/block-breadcrumb/index.js +12 -1
  10. package/build/components/block-breadcrumb/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +6 -3
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +3 -1
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-block-refs.js +9 -2
  16. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-is-hovered.js +25 -9
  18. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  19. package/build/components/block-list/use-in-between-inserter.js +3 -2
  20. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  21. package/build/components/block-lock/modal.js +2 -0
  22. package/build/components/block-lock/modal.js.map +1 -1
  23. package/build/components/block-lock/toolbar.js +0 -1
  24. package/build/components/block-lock/toolbar.js.map +1 -1
  25. package/build/components/block-mover/button.js +1 -1
  26. package/build/components/block-mover/button.js.map +1 -1
  27. package/build/components/block-mover/index.js +1 -1
  28. package/build/components/block-mover/index.js.map +1 -1
  29. package/build/components/block-pattern-setup/setup-toolbar.js +2 -2
  30. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  31. package/build/components/block-patterns-paging/index.js +5 -7
  32. package/build/components/block-patterns-paging/index.js.map +1 -1
  33. package/build/components/block-quick-navigation/index.js +20 -17
  34. package/build/components/block-quick-navigation/index.js.map +1 -1
  35. package/build/components/block-removal-warning-modal/index.js +2 -0
  36. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  37. package/build/components/block-rename/modal.js +4 -12
  38. package/build/components/block-rename/modal.js.map +1 -1
  39. package/build/components/block-switcher/index.js +1 -1
  40. package/build/components/block-switcher/index.js.map +1 -1
  41. package/build/components/block-switcher/pattern-transformations-menu.js +11 -12
  42. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  43. package/build/components/block-switcher/preview-block-popover.js +20 -17
  44. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  45. package/build/components/block-toolbar/shuffle.js +6 -2
  46. package/build/components/block-toolbar/shuffle.js.map +1 -1
  47. package/build/components/block-tools/block-selection-button.js +7 -58
  48. package/build/components/block-tools/block-selection-button.js.map +1 -1
  49. package/build/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  50. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  51. package/build/components/block-tools/index.js +14 -1
  52. package/build/components/block-tools/index.js.map +1 -1
  53. package/build/components/block-tools/use-show-block-tools.js +9 -8
  54. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  55. package/build/components/block-tools/zoom-out-mode-inserter-button.js +45 -0
  56. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  57. package/build/components/block-tools/zoom-out-mode-inserters.js +29 -28
  58. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  59. package/build/components/block-tools/zoom-out-popover.js +58 -0
  60. package/build/components/block-tools/zoom-out-popover.js.map +1 -0
  61. package/build/components/block-tools/zoom-out-toolbar.js +138 -0
  62. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -0
  63. package/build/components/button-block-appender/index.js +3 -1
  64. package/build/components/button-block-appender/index.js.map +1 -1
  65. package/build/components/child-layout-control/index.js +26 -18
  66. package/build/components/child-layout-control/index.js.map +1 -1
  67. package/build/components/date-format-picker/index.js +1 -1
  68. package/build/components/date-format-picker/index.js.map +1 -1
  69. package/build/components/default-block-appender/index.js +7 -4
  70. package/build/components/default-block-appender/index.js.map +1 -1
  71. package/build/components/dimensions-tool/index.js +6 -4
  72. package/build/components/dimensions-tool/index.js.map +1 -1
  73. package/build/components/font-appearance-control/index.js +22 -62
  74. package/build/components/font-appearance-control/index.js.map +1 -1
  75. package/build/components/global-styles/background-panel.js +185 -116
  76. package/build/components/global-styles/background-panel.js.map +1 -1
  77. package/build/components/global-styles/border-panel.js +2 -1
  78. package/build/components/global-styles/border-panel.js.map +1 -1
  79. package/build/components/global-styles/color-panel.js +2 -1
  80. package/build/components/global-styles/color-panel.js.map +1 -1
  81. package/build/components/global-styles/dimensions-panel.js +2 -1
  82. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  83. package/build/components/global-styles/filters-panel.js +2 -1
  84. package/build/components/global-styles/filters-panel.js.map +1 -1
  85. package/build/components/global-styles/hooks.js +13 -1
  86. package/build/components/global-styles/hooks.js.map +1 -1
  87. package/build/components/global-styles/image-settings-panel.js +2 -1
  88. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  89. package/build/components/global-styles/typography-panel.js +45 -24
  90. package/build/components/global-styles/typography-panel.js.map +1 -1
  91. package/build/components/global-styles/typography-utils.js +121 -0
  92. package/build/components/global-styles/typography-utils.js.map +1 -1
  93. package/build/components/global-styles/use-global-styles-output.js +47 -13
  94. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  95. package/build/components/global-styles/utils.js +17 -7
  96. package/build/components/global-styles/utils.js.map +1 -1
  97. package/build/components/grid/grid-item-movers.js +90 -48
  98. package/build/components/grid/grid-item-movers.js.map +1 -1
  99. package/build/components/grid/grid-item-resizer.js +2 -2
  100. package/build/components/grid/grid-item-resizer.js.map +1 -1
  101. package/build/components/grid/grid-visualizer.js +117 -37
  102. package/build/components/grid/grid-visualizer.js.map +1 -1
  103. package/build/components/grid/use-grid-layout-sync.js +60 -41
  104. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  105. package/build/components/index.js +1 -9
  106. package/build/components/index.js.map +1 -1
  107. package/build/components/inner-blocks/index.js +2 -2
  108. package/build/components/inner-blocks/index.js.map +1 -1
  109. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  110. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  111. package/build/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  112. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  113. package/build/components/inserter/media-tab/media-panel.js +1 -0
  114. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  115. package/build/components/inserter/menu.js +26 -4
  116. package/build/components/inserter/menu.js.map +1 -1
  117. package/build/components/inserter/preview-panel.js +20 -3
  118. package/build/components/inserter/preview-panel.js.map +1 -1
  119. package/build/components/inserter/quick-inserter.js +2 -1
  120. package/build/components/inserter/quick-inserter.js.map +1 -1
  121. package/build/components/inserter-draggable-blocks/index.js +10 -3
  122. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  123. package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
  124. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  125. package/build/components/inspector-controls-tabs/settings-tab.js +1 -2
  126. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  127. package/build/components/link-control/link-preview.js +1 -1
  128. package/build/components/link-control/link-preview.js.map +1 -1
  129. package/build/components/list-view/block-select-button.js +2 -6
  130. package/build/components/list-view/block-select-button.js.map +1 -1
  131. package/build/components/list-view/block.js +2 -2
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/utils.js +3 -1
  134. package/build/components/list-view/utils.js.map +1 -1
  135. package/build/components/media-placeholder/index.js +19 -23
  136. package/build/components/media-placeholder/index.js.map +1 -1
  137. package/build/components/navigable-toolbar/index.js +3 -1
  138. package/build/components/navigable-toolbar/index.js.map +1 -1
  139. package/build/components/rich-text/format-toolbar/index.js +1 -1
  140. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  141. package/build/components/rich-text/index.js +1 -1
  142. package/build/components/rich-text/index.js.map +1 -1
  143. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -3
  144. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  145. package/build/components/tabbed-sidebar/index.js +66 -0
  146. package/build/components/tabbed-sidebar/index.js.map +1 -0
  147. package/build/components/url-popover/image-url-input-ui.js +3 -3
  148. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  149. package/build/components/url-popover/index.js +3 -0
  150. package/build/components/url-popover/index.js.map +1 -1
  151. package/build/hooks/background.js +26 -4
  152. package/build/hooks/background.js.map +1 -1
  153. package/build/hooks/block-hooks.js +11 -17
  154. package/build/hooks/block-hooks.js.map +1 -1
  155. package/build/hooks/block-style-variation.js +169 -4
  156. package/build/hooks/block-style-variation.js.map +1 -1
  157. package/build/hooks/duotone.js +16 -11
  158. package/build/hooks/duotone.js.map +1 -1
  159. package/build/hooks/grid-visualizer.js +62 -0
  160. package/build/hooks/grid-visualizer.js.map +1 -0
  161. package/build/hooks/index.js +15 -2
  162. package/build/hooks/index.js.map +1 -1
  163. package/build/hooks/layout-child.js +47 -23
  164. package/build/hooks/layout-child.js.map +1 -1
  165. package/build/hooks/position.js +4 -15
  166. package/build/hooks/position.js.map +1 -1
  167. package/build/hooks/use-bindings-attributes.js +96 -55
  168. package/build/hooks/use-bindings-attributes.js.map +1 -1
  169. package/build/hooks/utils.js +2 -0
  170. package/build/hooks/utils.js.map +1 -1
  171. package/build/layouts/constrained.js +50 -4
  172. package/build/layouts/constrained.js.map +1 -1
  173. package/build/layouts/grid.js +92 -51
  174. package/build/layouts/grid.js.map +1 -1
  175. package/build/private-apis.js +6 -4
  176. package/build/private-apis.js.map +1 -1
  177. package/build/store/actions.js +18 -1
  178. package/build/store/actions.js.map +1 -1
  179. package/build/store/defaults.js +0 -2
  180. package/build/store/defaults.js.map +1 -1
  181. package/build/store/defaults.native.js +0 -3
  182. package/build/store/defaults.native.js.map +1 -1
  183. package/build/store/private-keys.js +2 -1
  184. package/build/store/private-keys.js.map +1 -1
  185. package/build/store/reducer.js +19 -1
  186. package/build/store/reducer.js.map +1 -1
  187. package/build/store/selectors.js +13 -1
  188. package/build/store/selectors.js.map +1 -1
  189. package/build/utils/format-font-style.js +45 -0
  190. package/build/utils/format-font-style.js.map +1 -0
  191. package/build/utils/format-font-weight.js +68 -0
  192. package/build/utils/format-font-weight.js.map +1 -0
  193. package/build/utils/get-editor-region.js +34 -0
  194. package/build/utils/get-editor-region.js.map +1 -0
  195. package/build/utils/get-font-styles-and-weights.js +167 -0
  196. package/build/utils/get-font-styles-and-weights.js.map +1 -0
  197. package/build/utils/pasting.js +5 -13
  198. package/build/utils/pasting.js.map +1 -1
  199. package/build-module/components/alignment-control/ui.js +2 -2
  200. package/build-module/components/alignment-control/ui.js.map +1 -1
  201. package/build-module/components/block-alignment-control/ui.js +1 -1
  202. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  203. package/build-module/components/block-alignment-control/ui.native.js +1 -1
  204. package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
  205. package/build-module/components/block-breadcrumb/index.js +12 -1
  206. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  207. package/build-module/components/block-inspector/index.js +6 -3
  208. package/build-module/components/block-inspector/index.js.map +1 -1
  209. package/build-module/components/block-list/use-block-props/index.js +3 -1
  210. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  211. package/build-module/components/block-list/use-block-props/use-block-refs.js +11 -4
  212. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  213. package/build-module/components/block-list/use-block-props/use-is-hovered.js +26 -9
  214. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  215. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  216. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  217. package/build-module/components/block-lock/modal.js +2 -0
  218. package/build-module/components/block-lock/modal.js.map +1 -1
  219. package/build-module/components/block-lock/toolbar.js +0 -1
  220. package/build-module/components/block-lock/toolbar.js.map +1 -1
  221. package/build-module/components/block-mover/button.js +1 -1
  222. package/build-module/components/block-mover/button.js.map +1 -1
  223. package/build-module/components/block-mover/index.js +1 -1
  224. package/build-module/components/block-mover/index.js.map +1 -1
  225. package/build-module/components/block-pattern-setup/setup-toolbar.js +2 -2
  226. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  227. package/build-module/components/block-patterns-paging/index.js +5 -7
  228. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  229. package/build-module/components/block-quick-navigation/index.js +20 -17
  230. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  231. package/build-module/components/block-removal-warning-modal/index.js +2 -0
  232. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  233. package/build-module/components/block-rename/modal.js +5 -13
  234. package/build-module/components/block-rename/modal.js.map +1 -1
  235. package/build-module/components/block-switcher/index.js +1 -1
  236. package/build-module/components/block-switcher/index.js.map +1 -1
  237. package/build-module/components/block-switcher/pattern-transformations-menu.js +12 -13
  238. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  239. package/build-module/components/block-switcher/preview-block-popover.js +20 -17
  240. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  241. package/build-module/components/block-toolbar/shuffle.js +6 -2
  242. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  243. package/build-module/components/block-tools/block-selection-button.js +10 -61
  244. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  245. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  246. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  247. package/build-module/components/block-tools/index.js +14 -1
  248. package/build-module/components/block-tools/index.js.map +1 -1
  249. package/build-module/components/block-tools/use-show-block-tools.js +9 -8
  250. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  251. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +37 -0
  252. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  253. package/build-module/components/block-tools/zoom-out-mode-inserters.js +30 -29
  254. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  255. package/build-module/components/block-tools/zoom-out-popover.js +49 -0
  256. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -0
  257. package/build-module/components/block-tools/zoom-out-toolbar.js +131 -0
  258. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -0
  259. package/build-module/components/button-block-appender/index.js +3 -1
  260. package/build-module/components/button-block-appender/index.js.map +1 -1
  261. package/build-module/components/child-layout-control/index.js +27 -19
  262. package/build-module/components/child-layout-control/index.js.map +1 -1
  263. package/build-module/components/date-format-picker/index.js +2 -2
  264. package/build-module/components/date-format-picker/index.js.map +1 -1
  265. package/build-module/components/default-block-appender/index.js +7 -4
  266. package/build-module/components/default-block-appender/index.js.map +1 -1
  267. package/build-module/components/dimensions-tool/index.js +6 -4
  268. package/build-module/components/dimensions-tool/index.js.map +1 -1
  269. package/build-module/components/font-appearance-control/index.js +24 -62
  270. package/build-module/components/font-appearance-control/index.js.map +1 -1
  271. package/build-module/components/global-styles/background-panel.js +188 -119
  272. package/build-module/components/global-styles/background-panel.js.map +1 -1
  273. package/build-module/components/global-styles/border-panel.js +3 -2
  274. package/build-module/components/global-styles/border-panel.js.map +1 -1
  275. package/build-module/components/global-styles/color-panel.js +3 -2
  276. package/build-module/components/global-styles/color-panel.js.map +1 -1
  277. package/build-module/components/global-styles/dimensions-panel.js +3 -2
  278. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  279. package/build-module/components/global-styles/filters-panel.js +3 -2
  280. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  281. package/build-module/components/global-styles/hooks.js +13 -1
  282. package/build-module/components/global-styles/hooks.js.map +1 -1
  283. package/build-module/components/global-styles/image-settings-panel.js +3 -2
  284. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  285. package/build-module/components/global-styles/typography-panel.js +47 -26
  286. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  287. package/build-module/components/global-styles/typography-utils.js +117 -0
  288. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  289. package/build-module/components/global-styles/use-global-styles-output.js +47 -13
  290. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  291. package/build-module/components/global-styles/utils.js +15 -6
  292. package/build-module/components/global-styles/utils.js.map +1 -1
  293. package/build-module/components/grid/grid-item-movers.js +93 -50
  294. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  295. package/build-module/components/grid/grid-item-resizer.js +2 -2
  296. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  297. package/build-module/components/grid/grid-visualizer.js +118 -38
  298. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  299. package/build-module/components/grid/use-grid-layout-sync.js +61 -42
  300. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  301. package/build-module/components/index.js +0 -5
  302. package/build-module/components/index.js.map +1 -1
  303. package/build-module/components/inner-blocks/index.js +2 -2
  304. package/build-module/components/inner-blocks/index.js.map +1 -1
  305. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  306. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  307. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  308. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  309. package/build-module/components/inserter/media-tab/media-panel.js +1 -0
  310. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  311. package/build-module/components/inserter/menu.js +26 -4
  312. package/build-module/components/inserter/menu.js.map +1 -1
  313. package/build-module/components/inserter/preview-panel.js +20 -3
  314. package/build-module/components/inserter/preview-panel.js.map +1 -1
  315. package/build-module/components/inserter/quick-inserter.js +2 -1
  316. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  317. package/build-module/components/inserter-draggable-blocks/index.js +10 -3
  318. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  319. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
  320. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  321. package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -2
  322. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  323. package/build-module/components/link-control/link-preview.js +1 -1
  324. package/build-module/components/link-control/link-preview.js.map +1 -1
  325. package/build-module/components/list-view/block-select-button.js +3 -7
  326. package/build-module/components/list-view/block-select-button.js.map +1 -1
  327. package/build-module/components/list-view/block.js +2 -2
  328. package/build-module/components/list-view/block.js.map +1 -1
  329. package/build-module/components/list-view/utils.js +3 -1
  330. package/build-module/components/list-view/utils.js.map +1 -1
  331. package/build-module/components/media-placeholder/index.js +19 -23
  332. package/build-module/components/media-placeholder/index.js.map +1 -1
  333. package/build-module/components/navigable-toolbar/index.js +3 -1
  334. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  335. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  336. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  337. package/build-module/components/rich-text/index.js +1 -1
  338. package/build-module/components/rich-text/index.js.map +1 -1
  339. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -3
  340. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  341. package/build-module/components/tabbed-sidebar/index.js +60 -0
  342. package/build-module/components/tabbed-sidebar/index.js.map +1 -0
  343. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  344. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  345. package/build-module/components/url-popover/index.js +3 -0
  346. package/build-module/components/url-popover/index.js.map +1 -1
  347. package/build-module/hooks/background.js +26 -4
  348. package/build-module/hooks/background.js.map +1 -1
  349. package/build-module/hooks/block-hooks.js +11 -17
  350. package/build-module/hooks/block-hooks.js.map +1 -1
  351. package/build-module/hooks/block-style-variation.js +168 -4
  352. package/build-module/hooks/block-style-variation.js.map +1 -1
  353. package/build-module/hooks/duotone.js +16 -11
  354. package/build-module/hooks/duotone.js.map +1 -1
  355. package/build-module/hooks/grid-visualizer.js +61 -0
  356. package/build-module/hooks/grid-visualizer.js.map +1 -0
  357. package/build-module/hooks/index.js +3 -0
  358. package/build-module/hooks/index.js.map +1 -1
  359. package/build-module/hooks/layout-child.js +47 -23
  360. package/build-module/hooks/layout-child.js.map +1 -1
  361. package/build-module/hooks/position.js +4 -15
  362. package/build-module/hooks/position.js.map +1 -1
  363. package/build-module/hooks/use-bindings-attributes.js +96 -56
  364. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  365. package/build-module/hooks/utils.js +2 -0
  366. package/build-module/hooks/utils.js.map +1 -1
  367. package/build-module/layouts/constrained.js +50 -4
  368. package/build-module/layouts/constrained.js.map +1 -1
  369. package/build-module/layouts/grid.js +92 -51
  370. package/build-module/layouts/grid.js.map +1 -1
  371. package/build-module/private-apis.js +8 -6
  372. package/build-module/private-apis.js.map +1 -1
  373. package/build-module/store/actions.js +15 -0
  374. package/build-module/store/actions.js.map +1 -1
  375. package/build-module/store/defaults.js +0 -2
  376. package/build-module/store/defaults.js.map +1 -1
  377. package/build-module/store/defaults.native.js +0 -3
  378. package/build-module/store/defaults.native.js.map +1 -1
  379. package/build-module/store/private-keys.js +1 -0
  380. package/build-module/store/private-keys.js.map +1 -1
  381. package/build-module/store/reducer.js +18 -1
  382. package/build-module/store/reducer.js.map +1 -1
  383. package/build-module/store/selectors.js +10 -0
  384. package/build-module/store/selectors.js.map +1 -1
  385. package/build-module/utils/format-font-style.js +39 -0
  386. package/build-module/utils/format-font-style.js.map +1 -0
  387. package/build-module/utils/format-font-weight.js +62 -0
  388. package/build-module/utils/format-font-weight.js.map +1 -0
  389. package/build-module/utils/get-editor-region.js +28 -0
  390. package/build-module/utils/get-editor-region.js.map +1 -0
  391. package/build-module/utils/get-font-styles-and-weights.js +160 -0
  392. package/build-module/utils/get-font-styles-and-weights.js.map +1 -0
  393. package/build-module/utils/pasting.js +5 -13
  394. package/build-module/utils/pasting.js.map +1 -1
  395. package/build-style/content-rtl.css +7 -6
  396. package/build-style/content.css +7 -6
  397. package/build-style/style-rtl.css +356 -181
  398. package/build-style/style.css +356 -181
  399. package/build-types/components/block-context/index.d.ts +2 -2
  400. package/build-types/components/block-context/index.d.ts.map +1 -1
  401. package/build-types/utils/dom.d.ts.map +1 -1
  402. package/package.json +32 -32
  403. package/src/components/alignment-control/ui.js +2 -2
  404. package/src/components/block-alignment-control/ui.js +1 -1
  405. package/src/components/block-alignment-control/ui.native.js +1 -1
  406. package/src/components/block-breadcrumb/index.js +16 -1
  407. package/src/components/block-context/README.md +4 -4
  408. package/src/components/block-inspector/index.js +8 -4
  409. package/src/components/block-list/content.scss +2 -16
  410. package/src/components/block-list/use-block-props/index.js +1 -1
  411. package/src/components/block-list/use-block-props/use-block-refs.js +19 -3
  412. package/src/components/block-list/use-block-props/use-is-hovered.js +26 -11
  413. package/src/components/block-list/use-in-between-inserter.js +5 -1
  414. package/src/components/block-lock/modal.js +10 -2
  415. package/src/components/block-lock/style.scss +4 -8
  416. package/src/components/block-lock/toolbar.js +0 -1
  417. package/src/components/block-mover/button.js +1 -1
  418. package/src/components/block-mover/index.js +1 -1
  419. package/src/components/block-pattern-setup/setup-toolbar.js +2 -2
  420. package/src/components/block-patterns-paging/index.js +8 -11
  421. package/src/components/block-patterns-paging/style.scss +0 -5
  422. package/src/components/block-quick-navigation/index.js +21 -28
  423. package/src/components/block-removal-warning-modal/index.js +10 -2
  424. package/src/components/block-rename/modal.js +2 -8
  425. package/src/components/block-switcher/index.js +1 -1
  426. package/src/components/block-switcher/pattern-transformations-menu.js +17 -15
  427. package/src/components/block-switcher/preview-block-popover.js +20 -14
  428. package/src/components/block-switcher/style.scss +8 -17
  429. package/src/components/block-switcher/test/index.js +6 -6
  430. package/src/components/block-toolbar/shuffle.js +9 -1
  431. package/src/components/block-toolbar/style.scss +1 -11
  432. package/src/components/block-tools/block-selection-button.js +11 -83
  433. package/src/components/block-tools/block-toolbar-breadcrumb.js +9 -4
  434. package/src/components/block-tools/index.js +21 -1
  435. package/src/components/block-tools/style.scss +23 -0
  436. package/src/components/block-tools/use-show-block-tools.js +21 -10
  437. package/src/components/block-tools/zoom-out-mode-inserter-button.js +47 -0
  438. package/src/components/block-tools/zoom-out-mode-inserters.js +44 -33
  439. package/src/components/block-tools/zoom-out-popover.js +50 -0
  440. package/src/components/block-tools/zoom-out-toolbar.js +140 -0
  441. package/src/components/button-block-appender/index.js +2 -1
  442. package/src/components/child-layout-control/index.js +41 -23
  443. package/src/components/date-format-picker/index.js +2 -2
  444. package/src/components/date-format-picker/style.scss +0 -9
  445. package/src/components/default-block-appender/index.js +11 -4
  446. package/src/components/dimensions-tool/index.js +97 -89
  447. package/src/components/font-appearance-control/index.js +24 -82
  448. package/src/components/font-appearance-control/style.scss +3 -5
  449. package/src/components/global-styles/background-panel.js +266 -167
  450. package/src/components/global-styles/border-panel.js +3 -2
  451. package/src/components/global-styles/color-panel.js +3 -2
  452. package/src/components/global-styles/dimensions-panel.js +3 -2
  453. package/src/components/global-styles/filters-panel.js +3 -2
  454. package/src/components/global-styles/hooks.js +14 -1
  455. package/src/components/global-styles/image-settings-panel.js +3 -2
  456. package/src/components/global-styles/style.scss +116 -19
  457. package/src/components/global-styles/test/typography-utils.js +594 -0
  458. package/src/components/global-styles/test/use-global-styles-output.js +3 -1
  459. package/src/components/global-styles/typography-panel.js +56 -27
  460. package/src/components/global-styles/typography-utils.js +159 -0
  461. package/src/components/global-styles/use-global-styles-output.js +45 -10
  462. package/src/components/global-styles/utils.js +17 -6
  463. package/src/components/grid/grid-item-movers.js +140 -86
  464. package/src/components/grid/grid-item-resizer.js +3 -2
  465. package/src/components/grid/grid-visualizer.js +172 -55
  466. package/src/components/grid/style.scss +157 -8
  467. package/src/components/grid/use-grid-layout-sync.js +88 -46
  468. package/src/components/iframe/content.scss +2 -1
  469. package/src/components/index.js +0 -5
  470. package/src/components/inner-blocks/index.js +6 -2
  471. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -16
  472. package/src/components/inserter/block-patterns-tab/patterns-filter.js +40 -44
  473. package/src/components/inserter/media-tab/media-panel.js +1 -0
  474. package/src/components/inserter/menu.js +47 -13
  475. package/src/components/inserter/preview-panel.js +27 -4
  476. package/src/components/inserter/quick-inserter.js +6 -1
  477. package/src/components/inserter/style.scss +58 -92
  478. package/src/components/inserter-draggable-blocks/index.js +11 -3
  479. package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
  480. package/src/components/inspector-controls-tabs/settings-tab.js +0 -2
  481. package/src/components/inspector-controls-tabs/style.scss +0 -21
  482. package/src/components/link-control/link-preview.js +1 -1
  483. package/src/components/list-view/block-select-button.js +3 -13
  484. package/src/components/list-view/block.js +10 -3
  485. package/src/components/list-view/style.scss +2 -1
  486. package/src/components/list-view/utils.js +13 -2
  487. package/src/components/media-placeholder/index.js +22 -32
  488. package/src/components/navigable-toolbar/index.js +3 -1
  489. package/src/components/rich-text/format-toolbar/index.js +1 -1
  490. package/src/components/rich-text/index.js +1 -1
  491. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -2
  492. package/src/components/tabbed-sidebar/README.md +76 -0
  493. package/src/components/tabbed-sidebar/index.js +70 -0
  494. package/src/components/tabbed-sidebar/style.scss +53 -0
  495. package/src/components/url-popover/image-url-input-ui.js +3 -3
  496. package/src/components/url-popover/index.js +3 -0
  497. package/src/components/url-popover/style.scss +1 -0
  498. package/src/hooks/background.js +25 -10
  499. package/src/hooks/block-hooks.js +9 -16
  500. package/src/hooks/block-style-variation.js +202 -3
  501. package/src/hooks/duotone.js +16 -12
  502. package/src/hooks/grid-visualizer.js +62 -0
  503. package/src/hooks/index.js +3 -0
  504. package/src/hooks/layout-child.js +64 -39
  505. package/src/hooks/position.js +3 -20
  506. package/src/hooks/test/get-variation-styles-with-ref-values.js +91 -0
  507. package/src/hooks/use-bindings-attributes.js +107 -63
  508. package/src/hooks/utils.js +2 -0
  509. package/src/layouts/constrained.js +53 -4
  510. package/src/layouts/grid.js +148 -51
  511. package/src/private-apis.js +12 -7
  512. package/src/store/actions.js +15 -0
  513. package/src/store/defaults.js +0 -2
  514. package/src/store/defaults.native.js +0 -3
  515. package/src/store/private-keys.js +1 -0
  516. package/src/store/reducer.js +18 -0
  517. package/src/store/selectors.js +10 -0
  518. package/src/style.scss +1 -1
  519. package/src/utils/format-font-style.js +40 -0
  520. package/src/utils/format-font-weight.js +63 -0
  521. package/src/utils/get-editor-region.js +31 -0
  522. package/src/utils/get-font-styles-and-weights.js +191 -0
  523. package/src/utils/pasting.js +5 -12
  524. package/src/utils/test/format-font-style.js +34 -0
  525. package/src/utils/test/format-font-weight.js +66 -0
  526. package/src/utils/test/get-font-styles-and-weights.js +513 -0
  527. package/tsconfig.tsbuildinfo +1 -1
  528. package/build/components/inserter/reusable-block-rename-hint.js +0 -71
  529. package/build/components/inserter/reusable-block-rename-hint.js.map +0 -1
  530. package/build/components/inspector-controls-tabs/settings-tab-hint.js +0 -53
  531. package/build/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  532. package/build-module/components/inserter/reusable-block-rename-hint.js +0 -64
  533. package/build-module/components/inserter/reusable-block-rename-hint.js.map +0 -1
  534. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js +0 -47
  535. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  536. package/src/components/inserter/reusable-block-rename-hint.js +0 -69
  537. package/src/components/inspector-controls-tabs/settings-tab-hint.js +0 -52
  538. package/src/hooks/position.scss +0 -18
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { FontSizePicker, __experimentalNumberControl as NumberControl, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
- import { useCallback, useMemo } from '@wordpress/element';
6
+ import { useCallback, useMemo, useEffect } from '@wordpress/element';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -16,8 +16,9 @@ import TextAlignmentControl from '../text-alignment-control';
16
16
  import TextTransformControl from '../text-transform-control';
17
17
  import TextDecorationControl from '../text-decoration-control';
18
18
  import WritingModeControl from '../writing-mode-control';
19
- import { getValueFromVariable, TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';
19
+ import { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';
20
20
  import { setImmutably } from '../../utils/object';
21
+ import { getMergedFontFamiliesAndFontFamilyFaces, findNearestStyleAndWeight } from './typography-utils';
21
22
  import { jsx as _jsx } from "react/jsx-runtime";
22
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
23
24
  const MIN_TEXT_COLUMNS = 1;
@@ -95,6 +96,7 @@ function TypographyToolsPanel({
95
96
  panelId,
96
97
  children
97
98
  }) {
99
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
98
100
  const resetAll = () => {
99
101
  const updatedValue = resetAllFilter(value);
100
102
  onChange(updatedValue);
@@ -103,7 +105,7 @@ function TypographyToolsPanel({
103
105
  label: __('Typography'),
104
106
  resetAll: resetAll,
105
107
  panelId: panelId,
106
- dropdownMenuProps: TOOLSPANEL_DROPDOWNMENU_PROPS,
108
+ dropdownMenuProps: dropdownMenuProps,
107
109
  children: children
108
110
  });
109
111
  }
@@ -134,16 +136,15 @@ export default function TypographyPanel({
134
136
 
135
137
  // Font Family
136
138
  const hasFontFamilyEnabled = useHasFontFamilyControl(settings);
137
- const fontFamilies = settings?.typography?.fontFamilies;
138
- const mergedFontFamilies = useMemo(() => {
139
- return ['default', 'theme', 'custom'].flatMap(key => {
140
- var _fontFamilies$key;
141
- return (_fontFamilies$key = fontFamilies?.[key]) !== null && _fontFamilies$key !== void 0 ? _fontFamilies$key : [];
142
- });
143
- }, [fontFamilies]);
144
139
  const fontFamily = decodeValue(inheritedValue?.typography?.fontFamily);
140
+ const {
141
+ fontFamilies,
142
+ fontFamilyFaces
143
+ } = useMemo(() => {
144
+ return getMergedFontFamiliesAndFontFamilyFaces(settings, fontFamily);
145
+ }, [settings, fontFamily]);
145
146
  const setFontFamily = newValue => {
146
- const slug = mergedFontFamilies?.find(({
147
+ const slug = fontFamilies?.find(({
147
148
  fontFamily: f
148
149
  }) => f === newValue)?.slug;
149
150
  onChange(setImmutably(value, ['typography', 'fontFamily'], slug ? `var:preset|font-family|${slug}` : newValue || undefined));
@@ -170,23 +171,43 @@ export default function TypographyPanel({
170
171
  const hasFontWeights = settings?.typography?.fontWeight;
171
172
  const fontStyle = decodeValue(inheritedValue?.typography?.fontStyle);
172
173
  const fontWeight = decodeValue(inheritedValue?.typography?.fontWeight);
173
- const setFontAppearance = ({
174
+ const {
175
+ nearestFontStyle,
176
+ nearestFontWeight
177
+ } = findNearestStyleAndWeight(fontFamilyFaces, fontStyle, fontWeight);
178
+ const setFontAppearance = useCallback(({
174
179
  fontStyle: newFontStyle,
175
180
  fontWeight: newFontWeight
176
181
  }) => {
177
- onChange({
178
- ...value,
179
- typography: {
180
- ...value?.typography,
181
- fontStyle: newFontStyle || undefined,
182
- fontWeight: newFontWeight || undefined
183
- }
184
- });
185
- };
182
+ // Only update the font style and weight if they have changed.
183
+ if (newFontStyle !== fontStyle || newFontWeight !== fontWeight) {
184
+ onChange({
185
+ ...value,
186
+ typography: {
187
+ ...value?.typography,
188
+ fontStyle: newFontStyle || undefined,
189
+ fontWeight: newFontWeight || undefined
190
+ }
191
+ });
192
+ }
193
+ }, [fontStyle, fontWeight, onChange, value]);
186
194
  const hasFontAppearance = () => !!value?.typography?.fontStyle || !!value?.typography?.fontWeight;
187
- const resetFontAppearance = () => {
195
+ const resetFontAppearance = useCallback(() => {
188
196
  setFontAppearance({});
189
- };
197
+ }, [setFontAppearance]);
198
+
199
+ // Check if previous font style and weight values are available in the new font family.
200
+ useEffect(() => {
201
+ if (nearestFontStyle && nearestFontWeight) {
202
+ setFontAppearance({
203
+ fontStyle: nearestFontStyle,
204
+ fontWeight: nearestFontWeight
205
+ });
206
+ } else {
207
+ // Reset font appearance if there are no available styles or weights.
208
+ resetFontAppearance();
209
+ }
210
+ }, [nearestFontStyle, nearestFontWeight, resetFontAppearance, setFontAppearance]);
190
211
 
191
212
  // Line Height
192
213
  const hasLineHeightEnabled = useHasLineHeightControl(settings);
@@ -268,7 +289,7 @@ export default function TypographyPanel({
268
289
  isShownByDefault: defaultControls.fontFamily,
269
290
  panelId: panelId,
270
291
  children: /*#__PURE__*/_jsx(FontFamilyControl, {
271
- fontFamilies: mergedFontFamilies,
292
+ fontFamilies: fontFamilies,
272
293
  value: fontFamily,
273
294
  onChange: setFontFamily,
274
295
  size: "__unstable-large",
@@ -304,8 +325,8 @@ export default function TypographyPanel({
304
325
  onChange: setFontAppearance,
305
326
  hasFontStyles: hasFontStyles,
306
327
  hasFontWeights: hasFontWeights,
307
- size: "__unstable-large",
308
- __nextHasNoMarginBottom: true
328
+ fontFamilyFaces: fontFamilyFaces,
329
+ size: "__unstable-large"
309
330
  })
310
331
  }), hasLineHeightEnabled && /*#__PURE__*/_jsx(ToolsPanelItem, {
311
332
  className: "single-column",
@@ -1 +1 @@
1
- {"version":3,"names":["FontSizePicker","__experimentalNumberControl","NumberControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","useCallback","useMemo","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextAlignmentControl","TextTransformControl","TextDecorationControl","WritingModeControl","getValueFromVariable","TOOLSPANEL_DROPDOWNMENU_PROPS","setImmutably","jsx","_jsx","jsxs","_jsxs","MIN_TEXT_COLUMNS","MAX_TEXT_COLUMNS","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextAlign","useHasTextAlignmentControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasWritingMode","useHasWritingModeControl","hasTextColumns","useHasTextColumnsControl","hasFontSize","useHasFontSizeControl","typography","defaultFontSizes","fontSizes","default","length","theme","custom","customFontSize","some","key","fontFamilies","lineHeight","fontStyle","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textAlign","textDecoration","writingMode","textColumns","getMergedFontSizes","_fontSizes$custom","_fontSizes$theme","_fontSizes$default","defaultFontSizesEnabled","TypographyToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","label","dropdownMenuProps","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","mergedFontFamilies","flatMap","_fontFamilies$key","setFontFamily","newValue","slug","find","f","undefined","resetFontFamily","hasFontSizeEnabled","disableCustomFontSizes","mergedFontSizes","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","hasFontStyles","hasFontWeights","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextColumnsControl","setTextColumns","resetTextColumns","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","hasWritingModeControl","setWritingMode","resetWritingMode","hasTextAlignmentControl","setTextAlign","resetTextAlign","previousValue","hasValue","onDeselect","isShownByDefault","size","__nextHasNoMarginBottom","withReset","withSlider","className","__unstableInputWidth","max","min","spinControls","initialPosition","showNone","isBlock"],"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFontSizePicker,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FontFamilyControl from '../font-family';\nimport FontAppearanceControl from '../font-appearance-control';\nimport LineHeightControl from '../line-height-control';\nimport LetterSpacingControl from '../letter-spacing-control';\nimport TextAlignmentControl from '../text-alignment-control';\nimport TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport WritingModeControl from '../writing-mode-control';\nimport { getValueFromVariable, TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';\nimport { setImmutably } from '../../utils/object';\n\nconst MIN_TEXT_COLUMNS = 1;\nconst MAX_TEXT_COLUMNS = 6;\n\nexport function useHasTypographyPanel( settings ) {\n\tconst hasFontFamily = useHasFontFamilyControl( settings );\n\tconst hasLineHeight = useHasLineHeightControl( settings );\n\tconst hasFontAppearance = useHasAppearanceControl( settings );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( settings );\n\tconst hasTextAlign = useHasTextAlignmentControl( settings );\n\tconst hasTextTransform = useHasTextTransformControl( settings );\n\tconst hasTextDecoration = useHasTextDecorationControl( settings );\n\tconst hasWritingMode = useHasWritingModeControl( settings );\n\tconst hasTextColumns = useHasTextColumnsControl( settings );\n\tconst hasFontSize = useHasFontSizeControl( settings );\n\n\treturn (\n\t\thasFontFamily ||\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\thasTextAlign ||\n\t\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration ||\n\t\thasWritingMode ||\n\t\thasTextColumns\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\treturn (\n\t\t( settings?.typography?.defaultFontSizes !== false &&\n\t\t\tsettings?.typography?.fontSizes?.default?.length ) ||\n\t\tsettings?.typography?.fontSizes?.theme?.length ||\n\t\tsettings?.typography?.fontSizes?.custom?.length ||\n\t\tsettings?.typography?.customFontSize\n\t);\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\treturn [ 'default', 'theme', 'custom' ].some(\n\t\t( key ) => settings?.typography?.fontFamilies?.[ key ]?.length\n\t);\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\treturn settings?.typography?.fontStyle || settings?.typography?.fontWeight;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tif ( ! settings?.typography?.fontStyle ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! settings?.typography?.fontWeight ) {\n\t\treturn __( 'Font style' );\n\t}\n\treturn __( 'Appearance' );\n}\n\nfunction useHasLetterSpacingControl( settings ) {\n\treturn settings?.typography?.letterSpacing;\n}\n\nfunction useHasTextTransformControl( settings ) {\n\treturn settings?.typography?.textTransform;\n}\n\nfunction useHasTextAlignmentControl( settings ) {\n\treturn settings?.typography?.textAlign;\n}\n\nfunction useHasTextDecorationControl( settings ) {\n\treturn settings?.typography?.textDecoration;\n}\n\nfunction useHasWritingModeControl( settings ) {\n\treturn settings?.typography?.writingMode;\n}\n\nfunction useHasTextColumnsControl( settings ) {\n\treturn settings?.typography?.textColumns;\n}\n\n/**\n * Concatenate all the font sizes into a single list for the font size picker.\n *\n * @param {Object} settings The global styles settings.\n *\n * @return {Array} The merged font sizes.\n */\nfunction getMergedFontSizes( settings ) {\n\tconst fontSizes = settings?.typography?.fontSizes;\n\tconst defaultFontSizesEnabled = !! settings?.typography?.defaultFontSizes;\n\treturn [\n\t\t...( fontSizes?.custom ?? [] ),\n\t\t...( fontSizes?.theme ?? [] ),\n\t\t...( defaultFontSizesEnabled ? fontSizes?.default ?? [] : [] ),\n\t];\n}\n\nfunction TypographyToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Typography' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tfontFamily: true,\n\tfontSize: true,\n\tfontAppearance: true,\n\tlineHeight: true,\n\tletterSpacing: true,\n\ttextAlign: true,\n\ttextTransform: true,\n\ttextDecoration: true,\n\twritingMode: true,\n\ttextColumns: true,\n};\n\nexport default function TypographyPanel( {\n\tas: Wrapper = TypographyToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Font Family\n\tconst hasFontFamilyEnabled = useHasFontFamilyControl( settings );\n\tconst fontFamilies = settings?.typography?.fontFamilies;\n\tconst mergedFontFamilies = useMemo( () => {\n\t\treturn [ 'default', 'theme', 'custom' ].flatMap(\n\t\t\t( key ) => fontFamilies?.[ key ] ?? []\n\t\t);\n\t}, [ fontFamilies ] );\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\n\tconst setFontFamily = ( newValue ) => {\n\t\tconst slug = mergedFontFamilies?.find(\n\t\t\t( { fontFamily: f } ) => f === newValue\n\t\t)?.slug;\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'fontFamily' ],\n\t\t\t\tslug\n\t\t\t\t\t? `var:preset|font-family|${ slug }`\n\t\t\t\t\t: newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasFontFamily = () => !! value?.typography?.fontFamily;\n\tconst resetFontFamily = () => setFontFamily( undefined );\n\n\t// Font Size\n\tconst hasFontSizeEnabled = useHasFontSizeControl( settings );\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst mergedFontSizes = getMergedFontSizes( settings );\n\n\tconst fontSize = decodeValue( inheritedValue?.typography?.fontSize );\n\tconst setFontSize = ( newValue, metadata ) => {\n\t\tconst actualValue = !! metadata?.slug\n\t\t\t? `var:preset|font-size|${ metadata?.slug }`\n\t\t\t: newValue;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'fontSize' ],\n\t\t\t\tactualValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasFontSize = () => !! value?.typography?.fontSize;\n\tconst resetFontSize = () => setFontSize( undefined );\n\n\t// Appearance\n\tconst hasAppearanceControl = useHasAppearanceControl( settings );\n\tconst appearanceControlLabel = useAppearanceControlLabel( settings );\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tconst fontStyle = decodeValue( inheritedValue?.typography?.fontStyle );\n\tconst fontWeight = decodeValue( inheritedValue?.typography?.fontWeight );\n\tconst setFontAppearance = ( {\n\t\tfontStyle: newFontStyle,\n\t\tfontWeight: newFontWeight,\n\t} ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontStyle: newFontStyle || undefined,\n\t\t\t\tfontWeight: newFontWeight || undefined,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontAppearance = () =>\n\t\t!! value?.typography?.fontStyle || !! value?.typography?.fontWeight;\n\tconst resetFontAppearance = () => {\n\t\tsetFontAppearance( {} );\n\t};\n\n\t// Line Height\n\tconst hasLineHeightEnabled = useHasLineHeightControl( settings );\n\tconst lineHeight = decodeValue( inheritedValue?.typography?.lineHeight );\n\tconst setLineHeight = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'lineHeight' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLineHeight = () => value?.typography?.lineHeight !== undefined;\n\tconst resetLineHeight = () => setLineHeight( undefined );\n\n\t// Letter Spacing\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( settings );\n\tconst letterSpacing = decodeValue(\n\t\tinheritedValue?.typography?.letterSpacing\n\t);\n\tconst setLetterSpacing = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'letterSpacing' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLetterSpacing = () => !! value?.typography?.letterSpacing;\n\tconst resetLetterSpacing = () => setLetterSpacing( undefined );\n\n\t// Text Columns\n\tconst hasTextColumnsControl = useHasTextColumnsControl( settings );\n\tconst textColumns = decodeValue( inheritedValue?.typography?.textColumns );\n\tconst setTextColumns = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textColumns' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextColumns = () => !! value?.typography?.textColumns;\n\tconst resetTextColumns = () => setTextColumns( undefined );\n\n\t// Text Transform\n\tconst hasTextTransformControl = useHasTextTransformControl( settings );\n\tconst textTransform = decodeValue(\n\t\tinheritedValue?.typography?.textTransform\n\t);\n\tconst setTextTransform = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textTransform' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextTransform = () => !! value?.typography?.textTransform;\n\tconst resetTextTransform = () => setTextTransform( undefined );\n\n\t// Text Decoration\n\tconst hasTextDecorationControl = useHasTextDecorationControl( settings );\n\tconst textDecoration = decodeValue(\n\t\tinheritedValue?.typography?.textDecoration\n\t);\n\tconst setTextDecoration = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textDecoration' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextDecoration = () => !! value?.typography?.textDecoration;\n\tconst resetTextDecoration = () => setTextDecoration( undefined );\n\n\t// Text Orientation\n\tconst hasWritingModeControl = useHasWritingModeControl( settings );\n\tconst writingMode = decodeValue( inheritedValue?.typography?.writingMode );\n\tconst setWritingMode = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'writingMode' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasWritingMode = () => !! value?.typography?.writingMode;\n\tconst resetWritingMode = () => setWritingMode( undefined );\n\n\t// Text Alignment\n\tconst hasTextAlignmentControl = useHasTextAlignmentControl( settings );\n\n\tconst textAlign = decodeValue( inheritedValue?.typography?.textAlign );\n\tconst setTextAlign = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textAlign' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextAlign = () => !! value?.typography?.textAlign;\n\tconst resetTextAlign = () => setTextAlign( undefined );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\ttypography: {},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ hasFontFamilyEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font' ) }\n\t\t\t\t\thasValue={ hasFontFamily }\n\t\t\t\t\tonDeselect={ resetFontFamily }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontFamily }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\tfontFamilies={ mergedFontFamilies }\n\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\tonChange={ setFontFamily }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\t\thasValue={ hasFontSize }\n\t\t\t\t\tonDeselect={ resetFontSize }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\tfontSizes={ mergedFontSizes }\n\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\twithReset={ false }\n\t\t\t\t\t\twithSlider\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasAppearanceControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ appearanceControlLabel }\n\t\t\t\t\thasValue={ hasFontAppearance }\n\t\t\t\t\tonDeselect={ resetFontAppearance }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontAppearance }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontAppearanceControl\n\t\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ setFontAppearance }\n\t\t\t\t\t\thasFontStyles={ hasFontStyles }\n\t\t\t\t\t\thasFontWeights={ hasFontWeights }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\t\thasValue={ hasLineHeight }\n\t\t\t\t\tonDeselect={ resetLineHeight }\n\t\t\t\t\tisShownByDefault={ defaultControls.lineHeight }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<LineHeightControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t\tvalue={ lineHeight }\n\t\t\t\t\t\tonChange={ setLineHeight }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Letter spacing' ) }\n\t\t\t\t\thasValue={ hasLetterSpacing }\n\t\t\t\t\tonDeselect={ resetLetterSpacing }\n\t\t\t\t\tisShownByDefault={ defaultControls.letterSpacing }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<LetterSpacingControl\n\t\t\t\t\t\tvalue={ letterSpacing }\n\t\t\t\t\t\tonChange={ setLetterSpacing }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextColumnsControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\thasValue={ hasTextColumns }\n\t\t\t\t\tonDeselect={ resetTextColumns }\n\t\t\t\t\tisShownByDefault={ defaultControls.textColumns }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<NumberControl\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\tmax={ MAX_TEXT_COLUMNS }\n\t\t\t\t\t\tmin={ MIN_TEXT_COLUMNS }\n\t\t\t\t\t\tonChange={ setTextColumns }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tspinControls=\"custom\"\n\t\t\t\t\t\tvalue={ textColumns }\n\t\t\t\t\t\tinitialPosition={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextDecorationControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Decoration' ) }\n\t\t\t\t\thasValue={ hasTextDecoration }\n\t\t\t\t\tonDeselect={ resetTextDecoration }\n\t\t\t\t\tisShownByDefault={ defaultControls.textDecoration }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextDecorationControl\n\t\t\t\t\t\tvalue={ textDecoration }\n\t\t\t\t\t\tonChange={ setTextDecoration }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasWritingModeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Orientation' ) }\n\t\t\t\t\thasValue={ hasWritingMode }\n\t\t\t\t\tonDeselect={ resetWritingMode }\n\t\t\t\t\tisShownByDefault={ defaultControls.writingMode }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<WritingModeControl\n\t\t\t\t\t\tvalue={ writingMode }\n\t\t\t\t\t\tonChange={ setWritingMode }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextTransformControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Letter case' ) }\n\t\t\t\t\thasValue={ hasTextTransform }\n\t\t\t\t\tonDeselect={ resetTextTransform }\n\t\t\t\t\tisShownByDefault={ defaultControls.textTransform }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextTransformControl\n\t\t\t\t\t\tvalue={ textTransform }\n\t\t\t\t\t\tonChange={ setTextTransform }\n\t\t\t\t\t\tshowNone\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextAlignmentControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Text alignment' ) }\n\t\t\t\t\thasValue={ hasTextAlign }\n\t\t\t\t\tonDeselect={ resetTextAlign }\n\t\t\t\t\tisShownByDefault={ defaultControls.textAlign }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextAlignmentControl\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ setTextAlign }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,cAAc,EACdC,2BAA2B,IAAIC,aAAa,EAC5CC,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,QACxC,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;;AAEzD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,gBAAgB;AAC9C,OAAOC,qBAAqB,MAAM,4BAA4B;AAC9D,OAAOC,iBAAiB,MAAM,wBAAwB;AACtD,OAAOC,oBAAoB,MAAM,2BAA2B;AAC5D,OAAOC,oBAAoB,MAAM,2BAA2B;AAC5D,OAAOC,oBAAoB,MAAM,2BAA2B;AAC5D,OAAOC,qBAAqB,MAAM,4BAA4B;AAC9D,OAAOC,kBAAkB,MAAM,yBAAyB;AACxD,SAASC,oBAAoB,EAAEC,6BAA6B,QAAQ,SAAS;AAC7E,SAASC,YAAY,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAElD,MAAMC,gBAAgB,GAAG,CAAC;AAC1B,MAAMC,gBAAgB,GAAG,CAAC;AAE1B,OAAO,SAASC,qBAAqBA,CAAEC,QAAQ,EAAG;EACjD,MAAMC,aAAa,GAAGC,uBAAuB,CAAEF,QAAS,CAAC;EACzD,MAAMG,aAAa,GAAGC,uBAAuB,CAAEJ,QAAS,CAAC;EACzD,MAAMK,iBAAiB,GAAGC,uBAAuB,CAAEN,QAAS,CAAC;EAC7D,MAAMO,gBAAgB,GAAGC,0BAA0B,CAAER,QAAS,CAAC;EAC/D,MAAMS,YAAY,GAAGC,0BAA0B,CAAEV,QAAS,CAAC;EAC3D,MAAMW,gBAAgB,GAAGC,0BAA0B,CAAEZ,QAAS,CAAC;EAC/D,MAAMa,iBAAiB,GAAGC,2BAA2B,CAAEd,QAAS,CAAC;EACjE,MAAMe,cAAc,GAAGC,wBAAwB,CAAEhB,QAAS,CAAC;EAC3D,MAAMiB,cAAc,GAAGC,wBAAwB,CAAElB,QAAS,CAAC;EAC3D,MAAMmB,WAAW,GAAGC,qBAAqB,CAAEpB,QAAS,CAAC;EAErD,OACCC,aAAa,IACbE,aAAa,IACbE,iBAAiB,IACjBE,gBAAgB,IAChBE,YAAY,IACZE,gBAAgB,IAChBQ,WAAW,IACXN,iBAAiB,IACjBE,cAAc,IACdE,cAAc;AAEhB;AAEA,SAASG,qBAAqBA,CAAEpB,QAAQ,EAAG;EAC1C,OACGA,QAAQ,EAAEqB,UAAU,EAAEC,gBAAgB,KAAK,KAAK,IACjDtB,QAAQ,EAAEqB,UAAU,EAAEE,SAAS,EAAEC,OAAO,EAAEC,MAAM,IACjDzB,QAAQ,EAAEqB,UAAU,EAAEE,SAAS,EAAEG,KAAK,EAAED,MAAM,IAC9CzB,QAAQ,EAAEqB,UAAU,EAAEE,SAAS,EAAEI,MAAM,EAAEF,MAAM,IAC/CzB,QAAQ,EAAEqB,UAAU,EAAEO,cAAc;AAEtC;AAEA,SAAS1B,uBAAuBA,CAAEF,QAAQ,EAAG;EAC5C,OAAO,CAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAE,CAAC6B,IAAI,CACzCC,GAAG,IAAM9B,QAAQ,EAAEqB,UAAU,EAAEU,YAAY,GAAID,GAAG,CAAE,EAAEL,MACzD,CAAC;AACF;AAEA,SAASrB,uBAAuBA,CAAEJ,QAAQ,EAAG;EAC5C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEW,UAAU;AACxC;AAEA,SAAS1B,uBAAuBA,CAAEN,QAAQ,EAAG;EAC5C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEY,SAAS,IAAIjC,QAAQ,EAAEqB,UAAU,EAAEa,UAAU;AAC3E;AAEA,SAASC,yBAAyBA,CAAEnC,QAAQ,EAAG;EAC9C,IAAK,CAAEA,QAAQ,EAAEqB,UAAU,EAAEY,SAAS,EAAG;IACxC,OAAOtD,EAAE,CAAE,aAAc,CAAC;EAC3B;EACA,IAAK,CAAEqB,QAAQ,EAAEqB,UAAU,EAAEa,UAAU,EAAG;IACzC,OAAOvD,EAAE,CAAE,YAAa,CAAC;EAC1B;EACA,OAAOA,EAAE,CAAE,YAAa,CAAC;AAC1B;AAEA,SAAS6B,0BAA0BA,CAAER,QAAQ,EAAG;EAC/C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEe,aAAa;AAC3C;AAEA,SAASxB,0BAA0BA,CAAEZ,QAAQ,EAAG;EAC/C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEgB,aAAa;AAC3C;AAEA,SAAS3B,0BAA0BA,CAAEV,QAAQ,EAAG;EAC/C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEiB,SAAS;AACvC;AAEA,SAASxB,2BAA2BA,CAAEd,QAAQ,EAAG;EAChD,OAAOA,QAAQ,EAAEqB,UAAU,EAAEkB,cAAc;AAC5C;AAEA,SAASvB,wBAAwBA,CAAEhB,QAAQ,EAAG;EAC7C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEmB,WAAW;AACzC;AAEA,SAAStB,wBAAwBA,CAAElB,QAAQ,EAAG;EAC7C,OAAOA,QAAQ,EAAEqB,UAAU,EAAEoB,WAAW;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAE1C,QAAQ,EAAG;EAAA,IAAA2C,iBAAA,EAAAC,gBAAA,EAAAC,kBAAA;EACvC,MAAMtB,SAAS,GAAGvB,QAAQ,EAAEqB,UAAU,EAAEE,SAAS;EACjD,MAAMuB,uBAAuB,GAAG,CAAC,CAAE9C,QAAQ,EAAEqB,UAAU,EAAEC,gBAAgB;EACzE,OAAO,CACN,KAAAqB,iBAAA,GAAKpB,SAAS,EAAEI,MAAM,cAAAgB,iBAAA,cAAAA,iBAAA,GAAI,EAAE,CAAE,EAC9B,KAAAC,gBAAA,GAAKrB,SAAS,EAAEG,KAAK,cAAAkB,gBAAA,cAAAA,gBAAA,GAAI,EAAE,CAAE,EAC7B,IAAKE,uBAAuB,IAAAD,kBAAA,GAAGtB,SAAS,EAAEC,OAAO,cAAAqB,kBAAA,cAAAA,kBAAA,GAAI,EAAE,GAAG,EAAE,CAAE,CAC9D;AACF;AAEA,SAASE,oBAAoBA,CAAE;EAC9BC,cAAc;EACdC,QAAQ;EACRC,KAAK;EACLC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGA,CAAA,KAAM;IACtB,MAAMC,YAAY,GAAGN,cAAc,CAAEE,KAAM,CAAC;IAC5CD,QAAQ,CAAEK,YAAa,CAAC;EACzB,CAAC;EAED,oBACC5D,IAAA,CAAClB,UAAU;IACV+E,KAAK,EAAG5E,EAAE,CAAE,YAAa,CAAG;IAC5B0E,QAAQ,EAAGA,QAAU;IACrBF,OAAO,EAAGA,OAAS;IACnBK,iBAAiB,EAAGjE,6BAA+B;IAAA6D,QAAA,EAEjDA;EAAQ,CACC,CAAC;AAEf;AAEA,MAAMK,gBAAgB,GAAG;EACxBC,UAAU,EAAE,IAAI;EAChBC,QAAQ,EAAE,IAAI;EACdC,cAAc,EAAE,IAAI;EACpB5B,UAAU,EAAE,IAAI;EAChBI,aAAa,EAAE,IAAI;EACnBE,SAAS,EAAE,IAAI;EACfD,aAAa,EAAE,IAAI;EACnBE,cAAc,EAAE,IAAI;EACpBC,WAAW,EAAE,IAAI;EACjBC,WAAW,EAAE;AACd,CAAC;AAED,eAAe,SAASoB,eAAeA,CAAE;EACxCC,EAAE,EAAEC,OAAO,GAAGhB,oBAAoB;EAClCG,KAAK;EACLD,QAAQ;EACRe,cAAc,GAAGd,KAAK;EACtBlD,QAAQ;EACRmD,OAAO;EACPc,eAAe,GAAGR;AACnB,CAAC,EAAG;EACH,MAAMS,WAAW,GAAKC,QAAQ,IAC7B7E,oBAAoB,CAAE;IAAEU;EAAS,CAAC,EAAE,EAAE,EAAEmE,QAAS,CAAC;;EAEnD;EACA,MAAMC,oBAAoB,GAAGlE,uBAAuB,CAAEF,QAAS,CAAC;EAChE,MAAM+B,YAAY,GAAG/B,QAAQ,EAAEqB,UAAU,EAAEU,YAAY;EACvD,MAAMsC,kBAAkB,GAAGxF,OAAO,CAAE,MAAM;IACzC,OAAO,CAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAE,CAACyF,OAAO,CAC5CxC,GAAG;MAAA,IAAAyC,iBAAA;MAAA,QAAAA,iBAAA,GAAMxC,YAAY,GAAID,GAAG,CAAE,cAAAyC,iBAAA,cAAAA,iBAAA,GAAI,EAAE;IAAA,CACvC,CAAC;EACF,CAAC,EAAE,CAAExC,YAAY,CAAG,CAAC;EACrB,MAAM2B,UAAU,GAAGQ,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEqC,UAAW,CAAC;EACxE,MAAMc,aAAa,GAAKC,QAAQ,IAAM;IACrC,MAAMC,IAAI,GAAGL,kBAAkB,EAAEM,IAAI,CACpC,CAAE;MAAEjB,UAAU,EAAEkB;IAAE,CAAC,KAAMA,CAAC,KAAKH,QAChC,CAAC,EAAEC,IAAI;IACPzB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,YAAY,CAAE,EAC9BwB,IAAI,GACA,0BAA0BA,IAAM,EAAC,GAClCD,QAAQ,IAAII,SAChB,CACD,CAAC;EACF,CAAC;EACD,MAAM5E,aAAa,GAAGA,CAAA,KAAM,CAAC,CAAEiD,KAAK,EAAE7B,UAAU,EAAEqC,UAAU;EAC5D,MAAMoB,eAAe,GAAGA,CAAA,KAAMN,aAAa,CAAEK,SAAU,CAAC;;EAExD;EACA,MAAME,kBAAkB,GAAG3D,qBAAqB,CAAEpB,QAAS,CAAC;EAC5D,MAAMgF,sBAAsB,GAAG,CAAEhF,QAAQ,EAAEqB,UAAU,EAAEO,cAAc;EACrE,MAAMqD,eAAe,GAAGvC,kBAAkB,CAAE1C,QAAS,CAAC;EAEtD,MAAM2D,QAAQ,GAAGO,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEsC,QAAS,CAAC;EACpE,MAAMuB,WAAW,GAAGA,CAAET,QAAQ,EAAEU,QAAQ,KAAM;IAC7C,MAAMC,WAAW,GAAG,CAAC,CAAED,QAAQ,EAAET,IAAI,GACjC,wBAAwBS,QAAQ,EAAET,IAAM,EAAC,GAC1CD,QAAQ;IAEXxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,UAAU,CAAE,EAC5BkC,WAAW,IAAIP,SAChB,CACD,CAAC;EACF,CAAC;EACD,MAAM1D,WAAW,GAAGA,CAAA,KAAM,CAAC,CAAE+B,KAAK,EAAE7B,UAAU,EAAEsC,QAAQ;EACxD,MAAM0B,aAAa,GAAGA,CAAA,KAAMH,WAAW,CAAEL,SAAU,CAAC;;EAEpD;EACA,MAAMS,oBAAoB,GAAGhF,uBAAuB,CAAEN,QAAS,CAAC;EAChE,MAAMuF,sBAAsB,GAAGpD,yBAAyB,CAAEnC,QAAS,CAAC;EACpE,MAAMwF,aAAa,GAAGxF,QAAQ,EAAEqB,UAAU,EAAEY,SAAS;EACrD,MAAMwD,cAAc,GAAGzF,QAAQ,EAAEqB,UAAU,EAAEa,UAAU;EACvD,MAAMD,SAAS,GAAGiC,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEY,SAAU,CAAC;EACtE,MAAMC,UAAU,GAAGgC,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEa,UAAW,CAAC;EACxE,MAAMwD,iBAAiB,GAAGA,CAAE;IAC3BzD,SAAS,EAAE0D,YAAY;IACvBzD,UAAU,EAAE0D;EACb,CAAC,KAAM;IACN3C,QAAQ,CAAE;MACT,GAAGC,KAAK;MACR7B,UAAU,EAAE;QACX,GAAG6B,KAAK,EAAE7B,UAAU;QACpBY,SAAS,EAAE0D,YAAY,IAAId,SAAS;QACpC3C,UAAU,EAAE0D,aAAa,IAAIf;MAC9B;IACD,CAAE,CAAC;EACJ,CAAC;EACD,MAAMxE,iBAAiB,GAAGA,CAAA,KACzB,CAAC,CAAE6C,KAAK,EAAE7B,UAAU,EAAEY,SAAS,IAAI,CAAC,CAAEiB,KAAK,EAAE7B,UAAU,EAAEa,UAAU;EACpE,MAAM2D,mBAAmB,GAAGA,CAAA,KAAM;IACjCH,iBAAiB,CAAE,CAAC,CAAE,CAAC;EACxB,CAAC;;EAED;EACA,MAAMI,oBAAoB,GAAG1F,uBAAuB,CAAEJ,QAAS,CAAC;EAChE,MAAMgC,UAAU,GAAGkC,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEW,UAAW,CAAC;EACxE,MAAM+D,aAAa,GAAKtB,QAAQ,IAAM;IACrCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,YAAY,CAAE,EAC9BuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAM1E,aAAa,GAAGA,CAAA,KAAM+C,KAAK,EAAE7B,UAAU,EAAEW,UAAU,KAAK6C,SAAS;EACvE,MAAMmB,eAAe,GAAGA,CAAA,KAAMD,aAAa,CAAElB,SAAU,CAAC;;EAExD;EACA,MAAMoB,uBAAuB,GAAGzF,0BAA0B,CAAER,QAAS,CAAC;EACtE,MAAMoC,aAAa,GAAG8B,WAAW,CAChCF,cAAc,EAAE3C,UAAU,EAAEe,aAC7B,CAAC;EACD,MAAM8D,gBAAgB,GAAKzB,QAAQ,IAAM;IACxCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,eAAe,CAAE,EACjCuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAMtE,gBAAgB,GAAGA,CAAA,KAAM,CAAC,CAAE2C,KAAK,EAAE7B,UAAU,EAAEe,aAAa;EAClE,MAAM+D,kBAAkB,GAAGA,CAAA,KAAMD,gBAAgB,CAAErB,SAAU,CAAC;;EAE9D;EACA,MAAMuB,qBAAqB,GAAGlF,wBAAwB,CAAElB,QAAS,CAAC;EAClE,MAAMyC,WAAW,GAAGyB,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEoB,WAAY,CAAC;EAC1E,MAAM4D,cAAc,GAAK5B,QAAQ,IAAM;IACtCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,aAAa,CAAE,EAC/BuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAM5D,cAAc,GAAGA,CAAA,KAAM,CAAC,CAAEiC,KAAK,EAAE7B,UAAU,EAAEoB,WAAW;EAC9D,MAAM6D,gBAAgB,GAAGA,CAAA,KAAMD,cAAc,CAAExB,SAAU,CAAC;;EAE1D;EACA,MAAM0B,uBAAuB,GAAG3F,0BAA0B,CAAEZ,QAAS,CAAC;EACtE,MAAMqC,aAAa,GAAG6B,WAAW,CAChCF,cAAc,EAAE3C,UAAU,EAAEgB,aAC7B,CAAC;EACD,MAAMmE,gBAAgB,GAAK/B,QAAQ,IAAM;IACxCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,eAAe,CAAE,EACjCuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAMlE,gBAAgB,GAAGA,CAAA,KAAM,CAAC,CAAEuC,KAAK,EAAE7B,UAAU,EAAEgB,aAAa;EAClE,MAAMoE,kBAAkB,GAAGA,CAAA,KAAMD,gBAAgB,CAAE3B,SAAU,CAAC;;EAE9D;EACA,MAAM6B,wBAAwB,GAAG5F,2BAA2B,CAAEd,QAAS,CAAC;EACxE,MAAMuC,cAAc,GAAG2B,WAAW,CACjCF,cAAc,EAAE3C,UAAU,EAAEkB,cAC7B,CAAC;EACD,MAAMoE,iBAAiB,GAAKlC,QAAQ,IAAM;IACzCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,gBAAgB,CAAE,EAClCuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAMhE,iBAAiB,GAAGA,CAAA,KAAM,CAAC,CAAEqC,KAAK,EAAE7B,UAAU,EAAEkB,cAAc;EACpE,MAAMqE,mBAAmB,GAAGA,CAAA,KAAMD,iBAAiB,CAAE9B,SAAU,CAAC;;EAEhE;EACA,MAAMgC,qBAAqB,GAAG7F,wBAAwB,CAAEhB,QAAS,CAAC;EAClE,MAAMwC,WAAW,GAAG0B,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEmB,WAAY,CAAC;EAC1E,MAAMsE,cAAc,GAAKrC,QAAQ,IAAM;IACtCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,aAAa,CAAE,EAC/BuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAM9D,cAAc,GAAGA,CAAA,KAAM,CAAC,CAAEmC,KAAK,EAAE7B,UAAU,EAAEmB,WAAW;EAC9D,MAAMuE,gBAAgB,GAAGA,CAAA,KAAMD,cAAc,CAAEjC,SAAU,CAAC;;EAE1D;EACA,MAAMmC,uBAAuB,GAAGtG,0BAA0B,CAAEV,QAAS,CAAC;EAEtE,MAAMsC,SAAS,GAAG4B,WAAW,CAAEF,cAAc,EAAE3C,UAAU,EAAEiB,SAAU,CAAC;EACtE,MAAM2E,YAAY,GAAKxC,QAAQ,IAAM;IACpCxB,QAAQ,CACPzD,YAAY,CACX0D,KAAK,EACL,CAAE,YAAY,EAAE,WAAW,CAAE,EAC7BuB,QAAQ,IAAII,SACb,CACD,CAAC;EACF,CAAC;EACD,MAAMpE,YAAY,GAAGA,CAAA,KAAM,CAAC,CAAEyC,KAAK,EAAE7B,UAAU,EAAEiB,SAAS;EAC1D,MAAM4E,cAAc,GAAGA,CAAA,KAAMD,YAAY,CAAEpC,SAAU,CAAC;EAEtD,MAAM7B,cAAc,GAAGpE,WAAW,CAAIuI,aAAa,IAAM;IACxD,OAAO;MACN,GAAGA,aAAa;MAChB9F,UAAU,EAAE,CAAC;IACd,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,oBACCzB,KAAA,CAACmE,OAAO;IACPf,cAAc,EAAGA,cAAgB;IACjCE,KAAK,EAAGA,KAAO;IACfD,QAAQ,EAAGA,QAAU;IACrBE,OAAO,EAAGA,OAAS;IAAAC,QAAA,GAEjBgB,oBAAoB,iBACrB1E,IAAA,CAAChB,cAAc;MACd6E,KAAK,EAAG5E,EAAE,CAAE,MAAO,CAAG;MACtByI,QAAQ,EAAGnH,aAAe;MAC1BoH,UAAU,EAAGvC,eAAiB;MAC9BwC,gBAAgB,EAAGrD,eAAe,CAACP,UAAY;MAC/CP,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACZ,iBAAiB;QACjBiD,YAAY,EAAGsC,kBAAoB;QACnCnB,KAAK,EAAGQ,UAAY;QACpBT,QAAQ,EAAGuB,aAAe;QAC1B+C,IAAI,EAAC,kBAAkB;QACvBC,uBAAuB;MAAA,CACvB;IAAC,CACa,CAChB,EACCzC,kBAAkB,iBACnBrF,IAAA,CAAChB,cAAc;MACd6E,KAAK,EAAG5E,EAAE,CAAE,MAAO,CAAG;MACtByI,QAAQ,EAAGjG,WAAa;MACxBkG,UAAU,EAAGhC,aAAe;MAC5BiC,gBAAgB,EAAGrD,eAAe,CAACN,QAAU;MAC7CR,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACtB,cAAc;QACd8E,KAAK,EAAGS,QAAU;QAClBV,QAAQ,EAAGiC,WAAa;QACxB3D,SAAS,EAAG0D,eAAiB;QAC7BD,sBAAsB,EAAGA,sBAAwB;QACjDyC,SAAS,EAAG,KAAO;QACnBC,UAAU;QACVH,IAAI,EAAC;MAAkB,CACvB;IAAC,CACa,CAChB,EACCjC,oBAAoB,iBACrB5F,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAGgC,sBAAwB;MAChC6B,QAAQ,EAAG/G,iBAAmB;MAC9BgH,UAAU,EAAGxB,mBAAqB;MAClCyB,gBAAgB,EAAGrD,eAAe,CAACL,cAAgB;MACnDT,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACX,qBAAqB;QACrBmE,KAAK,EAAG;UACPjB,SAAS;UACTC;QACD,CAAG;QACHe,QAAQ,EAAGyC,iBAAmB;QAC9BF,aAAa,EAAGA,aAAe;QAC/BC,cAAc,EAAGA,cAAgB;QACjC8B,IAAI,EAAC,kBAAkB;QACvBC,uBAAuB;MAAA,CACvB;IAAC,CACa,CAChB,EACC1B,oBAAoB,iBACrBpG,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAG5E,EAAE,CAAE,aAAc,CAAG;MAC7ByI,QAAQ,EAAGjH,aAAe;MAC1BkH,UAAU,EAAGrB,eAAiB;MAC9BsB,gBAAgB,EAAGrD,eAAe,CAACjC,UAAY;MAC/CmB,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACV,iBAAiB;QACjBwI,uBAAuB;QACvBI,oBAAoB,EAAC,MAAM;QAC3B1E,KAAK,EAAGlB,UAAY;QACpBiB,QAAQ,EAAG8C,aAAe;QAC1BwB,IAAI,EAAC;MAAkB,CACvB;IAAC,CACa,CAChB,EACCtB,uBAAuB,iBACxBvG,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAG5E,EAAE,CAAE,gBAAiB,CAAG;MAChCyI,QAAQ,EAAG7G,gBAAkB;MAC7B8G,UAAU,EAAGlB,kBAAoB;MACjCmB,gBAAgB,EAAGrD,eAAe,CAAC7B,aAAe;MAClDe,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACT,oBAAoB;QACpBiE,KAAK,EAAGd,aAAe;QACvBa,QAAQ,EAAGiD,gBAAkB;QAC7BqB,IAAI,EAAC,kBAAkB;QACvBK,oBAAoB,EAAC;MAAM,CAC3B;IAAC,CACa,CAChB,EACCxB,qBAAqB,iBACtB1G,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAG5E,EAAE,CAAE,SAAU,CAAG;MACzByI,QAAQ,EAAGnG,cAAgB;MAC3BoG,UAAU,EAAGf,gBAAkB;MAC/BgB,gBAAgB,EAAGrD,eAAe,CAACxB,WAAa;MAChDU,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACpB,aAAa;QACbiF,KAAK,EAAG5E,EAAE,CAAE,SAAU,CAAG;QACzBkJ,GAAG,EAAG/H,gBAAkB;QACxBgI,GAAG,EAAGjI,gBAAkB;QACxBoD,QAAQ,EAAGoD,cAAgB;QAC3BkB,IAAI,EAAC,kBAAkB;QACvBQ,YAAY,EAAC,QAAQ;QACrB7E,KAAK,EAAGT,WAAa;QACrBuF,eAAe,EAAG;MAAG,CACrB;IAAC,CACa,CAChB,EACCtB,wBAAwB,iBACzBhH,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAG5E,EAAE,CAAE,YAAa,CAAG;MAC5ByI,QAAQ,EAAGvG,iBAAmB;MAC9BwG,UAAU,EAAGT,mBAAqB;MAClCU,gBAAgB,EAAGrD,eAAe,CAAC1B,cAAgB;MACnDY,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACN,qBAAqB;QACrB8D,KAAK,EAAGX,cAAgB;QACxBU,QAAQ,EAAG0D,iBAAmB;QAC9BY,IAAI,EAAC,kBAAkB;QACvBK,oBAAoB,EAAC;MAAM,CAC3B;IAAC,CACa,CAChB,EACCf,qBAAqB,iBACtBnH,IAAA,CAAChB,cAAc;MACdiJ,SAAS,EAAC,eAAe;MACzBpE,KAAK,EAAG5E,EAAE,CAAE,aAAc,CAAG;MAC7ByI,QAAQ,EAAGrG,cAAgB;MAC3BsG,UAAU,EAAGN,gBAAkB;MAC/BO,gBAAgB,EAAGrD,eAAe,CAACzB,WAAa;MAChDW,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACL,kBAAkB;QAClB6D,KAAK,EAAGV,WAAa;QACrBS,QAAQ,EAAG6D,cAAgB;QAC3BS,IAAI,EAAC,kBAAkB;QACvBC,uBAAuB;MAAA,CACvB;IAAC,CACa,CAChB,EACCjB,uBAAuB,iBACxB7G,IAAA,CAAChB,cAAc;MACd6E,KAAK,EAAG5E,EAAE,CAAE,aAAc,CAAG;MAC7ByI,QAAQ,EAAGzG,gBAAkB;MAC7B0G,UAAU,EAAGZ,kBAAoB;MACjCa,gBAAgB,EAAGrD,eAAe,CAAC5B,aAAe;MAClDc,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACP,oBAAoB;QACpB+D,KAAK,EAAGb,aAAe;QACvBY,QAAQ,EAAGuD,gBAAkB;QAC7ByB,QAAQ;QACRC,OAAO;QACPX,IAAI,EAAC,kBAAkB;QACvBC,uBAAuB;MAAA,CACvB;IAAC,CACa,CAChB,EACCR,uBAAuB,iBACxBtH,IAAA,CAAChB,cAAc;MACd6E,KAAK,EAAG5E,EAAE,CAAE,gBAAiB,CAAG;MAChCyI,QAAQ,EAAG3G,YAAc;MACzB4G,UAAU,EAAGH,cAAgB;MAC7BI,gBAAgB,EAAGrD,eAAe,CAAC3B,SAAW;MAC9Ca,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnB1D,IAAA,CAACR,oBAAoB;QACpBgE,KAAK,EAAGZ,SAAW;QACnBW,QAAQ,EAAGgE,YAAc;QACzBM,IAAI,EAAC,kBAAkB;QACvBC,uBAAuB;MAAA,CACvB;IAAC,CACa,CAChB;EAAA,CACO,CAAC;AAEZ","ignoreList":[]}
1
+ {"version":3,"names":["FontSizePicker","__experimentalNumberControl","NumberControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","useCallback","useMemo","useEffect","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextAlignmentControl","TextTransformControl","TextDecorationControl","WritingModeControl","getValueFromVariable","useToolsPanelDropdownMenuProps","setImmutably","getMergedFontFamiliesAndFontFamilyFaces","findNearestStyleAndWeight","jsx","_jsx","jsxs","_jsxs","MIN_TEXT_COLUMNS","MAX_TEXT_COLUMNS","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextAlign","useHasTextAlignmentControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasWritingMode","useHasWritingModeControl","hasTextColumns","useHasTextColumnsControl","hasFontSize","useHasFontSizeControl","typography","defaultFontSizes","fontSizes","default","length","theme","custom","customFontSize","some","key","fontFamilies","lineHeight","fontStyle","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textAlign","textDecoration","writingMode","textColumns","getMergedFontSizes","_fontSizes$custom","_fontSizes$theme","_fontSizes$default","defaultFontSizesEnabled","TypographyToolsPanel","resetAllFilter","onChange","value","panelId","children","dropdownMenuProps","resetAll","updatedValue","label","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","fontFamilyFaces","setFontFamily","newValue","slug","find","f","undefined","resetFontFamily","hasFontSizeEnabled","disableCustomFontSizes","mergedFontSizes","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","hasFontStyles","hasFontWeights","nearestFontStyle","nearestFontWeight","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextColumnsControl","setTextColumns","resetTextColumns","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","hasWritingModeControl","setWritingMode","resetWritingMode","hasTextAlignmentControl","setTextAlign","resetTextAlign","previousValue","hasValue","onDeselect","isShownByDefault","size","__nextHasNoMarginBottom","withReset","withSlider","className","__unstableInputWidth","max","min","spinControls","initialPosition","showNone","isBlock"],"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFontSizePicker,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FontFamilyControl from '../font-family';\nimport FontAppearanceControl from '../font-appearance-control';\nimport LineHeightControl from '../line-height-control';\nimport LetterSpacingControl from '../letter-spacing-control';\nimport TextAlignmentControl from '../text-alignment-control';\nimport TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport WritingModeControl from '../writing-mode-control';\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\tgetMergedFontFamiliesAndFontFamilyFaces,\n\tfindNearestStyleAndWeight,\n} from './typography-utils';\n\nconst MIN_TEXT_COLUMNS = 1;\nconst MAX_TEXT_COLUMNS = 6;\n\nexport function useHasTypographyPanel( settings ) {\n\tconst hasFontFamily = useHasFontFamilyControl( settings );\n\tconst hasLineHeight = useHasLineHeightControl( settings );\n\tconst hasFontAppearance = useHasAppearanceControl( settings );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( settings );\n\tconst hasTextAlign = useHasTextAlignmentControl( settings );\n\tconst hasTextTransform = useHasTextTransformControl( settings );\n\tconst hasTextDecoration = useHasTextDecorationControl( settings );\n\tconst hasWritingMode = useHasWritingModeControl( settings );\n\tconst hasTextColumns = useHasTextColumnsControl( settings );\n\tconst hasFontSize = useHasFontSizeControl( settings );\n\n\treturn (\n\t\thasFontFamily ||\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\thasTextAlign ||\n\t\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration ||\n\t\thasWritingMode ||\n\t\thasTextColumns\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\treturn (\n\t\t( settings?.typography?.defaultFontSizes !== false &&\n\t\t\tsettings?.typography?.fontSizes?.default?.length ) ||\n\t\tsettings?.typography?.fontSizes?.theme?.length ||\n\t\tsettings?.typography?.fontSizes?.custom?.length ||\n\t\tsettings?.typography?.customFontSize\n\t);\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\treturn [ 'default', 'theme', 'custom' ].some(\n\t\t( key ) => settings?.typography?.fontFamilies?.[ key ]?.length\n\t);\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\treturn settings?.typography?.fontStyle || settings?.typography?.fontWeight;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tif ( ! settings?.typography?.fontStyle ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! settings?.typography?.fontWeight ) {\n\t\treturn __( 'Font style' );\n\t}\n\treturn __( 'Appearance' );\n}\n\nfunction useHasLetterSpacingControl( settings ) {\n\treturn settings?.typography?.letterSpacing;\n}\n\nfunction useHasTextTransformControl( settings ) {\n\treturn settings?.typography?.textTransform;\n}\n\nfunction useHasTextAlignmentControl( settings ) {\n\treturn settings?.typography?.textAlign;\n}\n\nfunction useHasTextDecorationControl( settings ) {\n\treturn settings?.typography?.textDecoration;\n}\n\nfunction useHasWritingModeControl( settings ) {\n\treturn settings?.typography?.writingMode;\n}\n\nfunction useHasTextColumnsControl( settings ) {\n\treturn settings?.typography?.textColumns;\n}\n\n/**\n * Concatenate all the font sizes into a single list for the font size picker.\n *\n * @param {Object} settings The global styles settings.\n *\n * @return {Array} The merged font sizes.\n */\nfunction getMergedFontSizes( settings ) {\n\tconst fontSizes = settings?.typography?.fontSizes;\n\tconst defaultFontSizesEnabled = !! settings?.typography?.defaultFontSizes;\n\treturn [\n\t\t...( fontSizes?.custom ?? [] ),\n\t\t...( fontSizes?.theme ?? [] ),\n\t\t...( defaultFontSizesEnabled ? fontSizes?.default ?? [] : [] ),\n\t];\n}\n\nfunction TypographyToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Typography' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tfontFamily: true,\n\tfontSize: true,\n\tfontAppearance: true,\n\tlineHeight: true,\n\tletterSpacing: true,\n\ttextAlign: true,\n\ttextTransform: true,\n\ttextDecoration: true,\n\twritingMode: true,\n\ttextColumns: true,\n};\n\nexport default function TypographyPanel( {\n\tas: Wrapper = TypographyToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Font Family\n\tconst hasFontFamilyEnabled = useHasFontFamilyControl( settings );\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\n\tconst { fontFamilies, fontFamilyFaces } = useMemo( () => {\n\t\treturn getMergedFontFamiliesAndFontFamilyFaces( settings, fontFamily );\n\t}, [ settings, fontFamily ] );\n\n\tconst setFontFamily = ( newValue ) => {\n\t\tconst slug = fontFamilies?.find(\n\t\t\t( { fontFamily: f } ) => f === newValue\n\t\t)?.slug;\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'fontFamily' ],\n\t\t\t\tslug\n\t\t\t\t\t? `var:preset|font-family|${ slug }`\n\t\t\t\t\t: newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasFontFamily = () => !! value?.typography?.fontFamily;\n\tconst resetFontFamily = () => setFontFamily( undefined );\n\n\t// Font Size\n\tconst hasFontSizeEnabled = useHasFontSizeControl( settings );\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst mergedFontSizes = getMergedFontSizes( settings );\n\n\tconst fontSize = decodeValue( inheritedValue?.typography?.fontSize );\n\tconst setFontSize = ( newValue, metadata ) => {\n\t\tconst actualValue = !! metadata?.slug\n\t\t\t? `var:preset|font-size|${ metadata?.slug }`\n\t\t\t: newValue;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'fontSize' ],\n\t\t\t\tactualValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasFontSize = () => !! value?.typography?.fontSize;\n\tconst resetFontSize = () => setFontSize( undefined );\n\n\t// Appearance\n\tconst hasAppearanceControl = useHasAppearanceControl( settings );\n\tconst appearanceControlLabel = useAppearanceControlLabel( settings );\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tconst fontStyle = decodeValue( inheritedValue?.typography?.fontStyle );\n\tconst fontWeight = decodeValue( inheritedValue?.typography?.fontWeight );\n\tconst { nearestFontStyle, nearestFontWeight } = findNearestStyleAndWeight(\n\t\tfontFamilyFaces,\n\t\tfontStyle,\n\t\tfontWeight\n\t);\n\tconst setFontAppearance = useCallback(\n\t\t( { fontStyle: newFontStyle, fontWeight: newFontWeight } ) => {\n\t\t\t// Only update the font style and weight if they have changed.\n\t\t\tif ( newFontStyle !== fontStyle || newFontWeight !== fontWeight ) {\n\t\t\t\tonChange( {\n\t\t\t\t\t...value,\n\t\t\t\t\ttypography: {\n\t\t\t\t\t\t...value?.typography,\n\t\t\t\t\t\tfontStyle: newFontStyle || undefined,\n\t\t\t\t\t\tfontWeight: newFontWeight || undefined,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ fontStyle, fontWeight, onChange, value ]\n\t);\n\tconst hasFontAppearance = () =>\n\t\t!! value?.typography?.fontStyle || !! value?.typography?.fontWeight;\n\tconst resetFontAppearance = useCallback( () => {\n\t\tsetFontAppearance( {} );\n\t}, [ setFontAppearance ] );\n\n\t// Check if previous font style and weight values are available in the new font family.\n\tuseEffect( () => {\n\t\tif ( nearestFontStyle && nearestFontWeight ) {\n\t\t\tsetFontAppearance( {\n\t\t\t\tfontStyle: nearestFontStyle,\n\t\t\t\tfontWeight: nearestFontWeight,\n\t\t\t} );\n\t\t} else {\n\t\t\t// Reset font appearance if there are no available styles or weights.\n\t\t\tresetFontAppearance();\n\t\t}\n\t}, [\n\t\tnearestFontStyle,\n\t\tnearestFontWeight,\n\t\tresetFontAppearance,\n\t\tsetFontAppearance,\n\t] );\n\n\t// Line Height\n\tconst hasLineHeightEnabled = useHasLineHeightControl( settings );\n\tconst lineHeight = decodeValue( inheritedValue?.typography?.lineHeight );\n\tconst setLineHeight = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'lineHeight' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLineHeight = () => value?.typography?.lineHeight !== undefined;\n\tconst resetLineHeight = () => setLineHeight( undefined );\n\n\t// Letter Spacing\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( settings );\n\tconst letterSpacing = decodeValue(\n\t\tinheritedValue?.typography?.letterSpacing\n\t);\n\tconst setLetterSpacing = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'letterSpacing' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLetterSpacing = () => !! value?.typography?.letterSpacing;\n\tconst resetLetterSpacing = () => setLetterSpacing( undefined );\n\n\t// Text Columns\n\tconst hasTextColumnsControl = useHasTextColumnsControl( settings );\n\tconst textColumns = decodeValue( inheritedValue?.typography?.textColumns );\n\tconst setTextColumns = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textColumns' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextColumns = () => !! value?.typography?.textColumns;\n\tconst resetTextColumns = () => setTextColumns( undefined );\n\n\t// Text Transform\n\tconst hasTextTransformControl = useHasTextTransformControl( settings );\n\tconst textTransform = decodeValue(\n\t\tinheritedValue?.typography?.textTransform\n\t);\n\tconst setTextTransform = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textTransform' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextTransform = () => !! value?.typography?.textTransform;\n\tconst resetTextTransform = () => setTextTransform( undefined );\n\n\t// Text Decoration\n\tconst hasTextDecorationControl = useHasTextDecorationControl( settings );\n\tconst textDecoration = decodeValue(\n\t\tinheritedValue?.typography?.textDecoration\n\t);\n\tconst setTextDecoration = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textDecoration' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextDecoration = () => !! value?.typography?.textDecoration;\n\tconst resetTextDecoration = () => setTextDecoration( undefined );\n\n\t// Text Orientation\n\tconst hasWritingModeControl = useHasWritingModeControl( settings );\n\tconst writingMode = decodeValue( inheritedValue?.typography?.writingMode );\n\tconst setWritingMode = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'writingMode' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasWritingMode = () => !! value?.typography?.writingMode;\n\tconst resetWritingMode = () => setWritingMode( undefined );\n\n\t// Text Alignment\n\tconst hasTextAlignmentControl = useHasTextAlignmentControl( settings );\n\n\tconst textAlign = decodeValue( inheritedValue?.typography?.textAlign );\n\tconst setTextAlign = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'typography', 'textAlign' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasTextAlign = () => !! value?.typography?.textAlign;\n\tconst resetTextAlign = () => setTextAlign( undefined );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\ttypography: {},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ hasFontFamilyEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font' ) }\n\t\t\t\t\thasValue={ hasFontFamily }\n\t\t\t\t\tonDeselect={ resetFontFamily }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontFamily }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\tonChange={ setFontFamily }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\t\thasValue={ hasFontSize }\n\t\t\t\t\tonDeselect={ resetFontSize }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\tfontSizes={ mergedFontSizes }\n\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\twithReset={ false }\n\t\t\t\t\t\twithSlider\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasAppearanceControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ appearanceControlLabel }\n\t\t\t\t\thasValue={ hasFontAppearance }\n\t\t\t\t\tonDeselect={ resetFontAppearance }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontAppearance }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontAppearanceControl\n\t\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ setFontAppearance }\n\t\t\t\t\t\thasFontStyles={ hasFontStyles }\n\t\t\t\t\t\thasFontWeights={ hasFontWeights }\n\t\t\t\t\t\tfontFamilyFaces={ fontFamilyFaces }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\t\thasValue={ hasLineHeight }\n\t\t\t\t\tonDeselect={ resetLineHeight }\n\t\t\t\t\tisShownByDefault={ defaultControls.lineHeight }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<LineHeightControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t\tvalue={ lineHeight }\n\t\t\t\t\t\tonChange={ setLineHeight }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Letter spacing' ) }\n\t\t\t\t\thasValue={ hasLetterSpacing }\n\t\t\t\t\tonDeselect={ resetLetterSpacing }\n\t\t\t\t\tisShownByDefault={ defaultControls.letterSpacing }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<LetterSpacingControl\n\t\t\t\t\t\tvalue={ letterSpacing }\n\t\t\t\t\t\tonChange={ setLetterSpacing }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextColumnsControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\thasValue={ hasTextColumns }\n\t\t\t\t\tonDeselect={ resetTextColumns }\n\t\t\t\t\tisShownByDefault={ defaultControls.textColumns }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<NumberControl\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\tmax={ MAX_TEXT_COLUMNS }\n\t\t\t\t\t\tmin={ MIN_TEXT_COLUMNS }\n\t\t\t\t\t\tonChange={ setTextColumns }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tspinControls=\"custom\"\n\t\t\t\t\t\tvalue={ textColumns }\n\t\t\t\t\t\tinitialPosition={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextDecorationControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Decoration' ) }\n\t\t\t\t\thasValue={ hasTextDecoration }\n\t\t\t\t\tonDeselect={ resetTextDecoration }\n\t\t\t\t\tisShownByDefault={ defaultControls.textDecoration }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextDecorationControl\n\t\t\t\t\t\tvalue={ textDecoration }\n\t\t\t\t\t\tonChange={ setTextDecoration }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasWritingModeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Orientation' ) }\n\t\t\t\t\thasValue={ hasWritingMode }\n\t\t\t\t\tonDeselect={ resetWritingMode }\n\t\t\t\t\tisShownByDefault={ defaultControls.writingMode }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<WritingModeControl\n\t\t\t\t\t\tvalue={ writingMode }\n\t\t\t\t\t\tonChange={ setWritingMode }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextTransformControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Letter case' ) }\n\t\t\t\t\thasValue={ hasTextTransform }\n\t\t\t\t\tonDeselect={ resetTextTransform }\n\t\t\t\t\tisShownByDefault={ defaultControls.textTransform }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextTransformControl\n\t\t\t\t\t\tvalue={ textTransform }\n\t\t\t\t\t\tonChange={ setTextTransform }\n\t\t\t\t\t\tshowNone\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextAlignmentControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Text alignment' ) }\n\t\t\t\t\thasValue={ hasTextAlign }\n\t\t\t\t\tonDeselect={ resetTextAlign }\n\t\t\t\t\tisShownByDefault={ defaultControls.textAlign }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextAlignmentControl\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ setTextAlign }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@
8
8
  * Internal dependencies
9
9
  */
10
10
  import { getComputedFluidTypographyValue, getTypographyValueAndUnit } from '../font-sizes/fluid-utils';
11
+ import { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';
11
12
 
12
13
  /**
13
14
  * @typedef {Object} FluidPreset
@@ -99,4 +100,120 @@ export function getFluidTypographyOptionsFromSettings(settings) {
99
100
  fluid: typographySettings?.fluid
100
101
  };
101
102
  }
103
+
104
+ /**
105
+ * Returns an object of merged font families and the font faces from the selected font family
106
+ * based on the theme.json settings object and the currently selected font family.
107
+ *
108
+ * @param {Object} settings Theme.json settings.
109
+ * @param {string} selectedFontFamily Decoded font family string.
110
+ * @return {Object} Merged font families and font faces from the selected font family.
111
+ */
112
+ export function getMergedFontFamiliesAndFontFamilyFaces(settings, selectedFontFamily) {
113
+ var _fontFamilies$find$fo;
114
+ const fontFamiliesFromSettings = settings?.typography?.fontFamilies;
115
+ const fontFamilies = ['default', 'theme', 'custom'].flatMap(key => {
116
+ var _fontFamiliesFromSett;
117
+ return (_fontFamiliesFromSett = fontFamiliesFromSettings?.[key]) !== null && _fontFamiliesFromSett !== void 0 ? _fontFamiliesFromSett : [];
118
+ });
119
+ const fontFamilyFaces = (_fontFamilies$find$fo = fontFamilies.find(family => family.fontFamily === selectedFontFamily)?.fontFace) !== null && _fontFamilies$find$fo !== void 0 ? _fontFamilies$find$fo : [];
120
+ return {
121
+ fontFamilies,
122
+ fontFamilyFaces
123
+ };
124
+ }
125
+
126
+ /**
127
+ * Returns the nearest font weight value from the available font weight list based on the new font weight.
128
+ * The nearest font weight is the one with the smallest difference from the new font weight.
129
+ *
130
+ * @param {Array} availableFontWeights Array of available font weights.
131
+ * @param {string} newFontWeightValue New font weight value.
132
+ * @return {string} Nearest font weight.
133
+ */
134
+ export function findNearestFontWeight(availableFontWeights, newFontWeightValue) {
135
+ if (!newFontWeightValue || typeof newFontWeightValue !== 'string') {
136
+ return '';
137
+ }
138
+ if (!availableFontWeights || availableFontWeights.length === 0) {
139
+ return newFontWeightValue;
140
+ }
141
+ const nearestFontWeight = availableFontWeights?.reduce((nearest, {
142
+ value: fw
143
+ }) => {
144
+ const currentDiff = Math.abs(parseInt(fw) - parseInt(newFontWeightValue));
145
+ const nearestDiff = Math.abs(parseInt(nearest) - parseInt(newFontWeightValue));
146
+ return currentDiff < nearestDiff ? fw : nearest;
147
+ }, availableFontWeights[0]?.value);
148
+ return nearestFontWeight;
149
+ }
150
+
151
+ /**
152
+ * Returns the nearest font style based on the new font style.
153
+ * Defaults to an empty string if the new font style is not valid or available.
154
+ *
155
+ * @param {Array} availableFontStyles Array of available font weights.
156
+ * @param {string} newFontStyleValue New font style value.
157
+ * @return {string} Nearest font style or an empty string.
158
+ */
159
+ export function findNearestFontStyle(availableFontStyles, newFontStyleValue) {
160
+ if (typeof newFontStyleValue !== 'string' || !newFontStyleValue) {
161
+ return '';
162
+ }
163
+ const validStyles = ['normal', 'italic', 'oblique'];
164
+ if (!validStyles.includes(newFontStyleValue)) {
165
+ return '';
166
+ }
167
+ if (!availableFontStyles || availableFontStyles.length === 0 || availableFontStyles.find(style => style.value === newFontStyleValue)) {
168
+ return newFontStyleValue;
169
+ }
170
+ if (newFontStyleValue === 'oblique' && !availableFontStyles.find(style => style.value === 'oblique')) {
171
+ return 'italic';
172
+ }
173
+ return '';
174
+ }
175
+
176
+ /**
177
+ * Returns the nearest font style and weight based on the available font family faces and the new font style and weight.
178
+ *
179
+ * @param {Array} fontFamilyFaces Array of available font family faces.
180
+ * @param {string} fontStyle New font style. Defaults to previous value.
181
+ * @param {string} fontWeight New font weight. Defaults to previous value.
182
+ * @return {Object} Nearest font style and font weight.
183
+ */
184
+ export function findNearestStyleAndWeight(fontFamilyFaces, fontStyle, fontWeight) {
185
+ let nearestFontStyle = fontStyle;
186
+ let nearestFontWeight = fontWeight;
187
+ const {
188
+ fontStyles,
189
+ fontWeights,
190
+ combinedStyleAndWeightOptions
191
+ } = getFontStylesAndWeights(fontFamilyFaces);
192
+
193
+ // Check if the new font style and weight are available in the font family faces.
194
+ const hasFontStyle = fontStyles?.some(({
195
+ value: fs
196
+ }) => fs === fontStyle);
197
+ const hasFontWeight = fontWeights?.some(({
198
+ value: fw
199
+ }) => fw === fontWeight);
200
+ if (!hasFontStyle) {
201
+ /*
202
+ * Default to italic if oblique is not available.
203
+ * Or find the nearest font style based on the nearest font weight.
204
+ */
205
+ nearestFontStyle = fontStyle ? findNearestFontStyle(fontStyles, fontStyle) : combinedStyleAndWeightOptions?.find(option => option.style.fontWeight === findNearestFontWeight(fontWeights, fontWeight))?.style?.fontStyle;
206
+ }
207
+ if (!hasFontWeight) {
208
+ /*
209
+ * Find the nearest font weight based on available weights.
210
+ * Or find the nearest font weight based on the nearest font style.
211
+ */
212
+ nearestFontWeight = fontWeight ? findNearestFontWeight(fontWeights, fontWeight) : combinedStyleAndWeightOptions?.find(option => option.style.fontStyle === (nearestFontStyle || fontStyle))?.style?.fontWeight;
213
+ }
214
+ return {
215
+ nearestFontStyle,
216
+ nearestFontWeight
217
+ };
218
+ }
102
219
  //# sourceMappingURL=typography-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getComputedFluidTypographyValue","getTypographyValueAndUnit","getTypographyFontSizeValue","preset","settings","size","defaultSize","isFluidTypographyEnabled","typography","fluid","fluidTypographySettings","getFluidTypographyOptionsFromSettings","fluidFontSizeValue","minimumFontSize","min","maximumFontSize","max","fontSize","minimumFontSizeLimit","minFontSize","maximumViewportWidth","maxViewportWidth","minimumViewportWidth","minViewportWidth","typographySettings","fluidSettings","Object","keys","length","layoutSettings","layout","defaultMaxViewportWidth","wideSize"],"sources":["@wordpress/block-editor/src/components/global-styles/typography-utils.js"],"sourcesContent":["/**\n * The fluid utilities must match the backend equivalent.\n * See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php\n * ---------------------------------------------------------------\n */\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetComputedFluidTypographyValue,\n\tgetTypographyValueAndUnit,\n} from '../font-sizes/fluid-utils';\n\n/**\n * @typedef {Object} FluidPreset\n * @property {string|undefined} max A maximum font size value.\n * @property {?string|undefined} min A minimum font size value.\n */\n\n/**\n * @typedef {Object} Preset\n * @property {?string|?number} size A default font size.\n * @property {string} name A font size name, displayed in the UI.\n * @property {string} slug A font size slug\n * @property {boolean|FluidPreset|undefined} fluid Specifies the minimum and maximum font size value of a fluid font size.\n */\n\n/**\n * @typedef {Object} TypographySettings\n * @property {?string} minViewportWidth Minimum viewport size from which type will have fluidity. Optional if size is specified.\n * @property {?string} maxViewportWidth Maximum size up to which type will have fluidity. Optional if size is specified.\n * @property {?number} scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.\n * @property {?number} minFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.\n * @property {?string} minFontSize The smallest a calculated font size may be. Optional.\n */\n\n/**\n * Returns a font-size value based on a given font-size preset.\n * Takes into account fluid typography parameters and attempts to return a css formula depending on available, valid values.\n *\n * @param {Preset} preset\n * @param {Object} settings\n * @param {boolean|TypographySettings} settings.typography.fluid Whether fluid typography is enabled, and, optionally, fluid font size options.\n * @param {Object?} settings.typography.layout Layout options.\n *\n * @return {string|*} A font-size value or the value of preset.size.\n */\nexport function getTypographyFontSizeValue( preset, settings ) {\n\tconst { size: defaultSize } = preset;\n\n\tif ( ! isFluidTypographyEnabled( settings?.typography ) ) {\n\t\treturn defaultSize;\n\t}\n\t/*\n\t * Checks whether a font size has explicitly bypassed fluid calculations.\n\t * Also catches falsy values and 0/'0'.\n\t * Fluid calculations cannot be performed on `0`.\n\t */\n\tif ( ! defaultSize || '0' === defaultSize || false === preset?.fluid ) {\n\t\treturn defaultSize;\n\t}\n\n\tlet fluidTypographySettings =\n\t\tgetFluidTypographyOptionsFromSettings( settings );\n\tfluidTypographySettings =\n\t\ttypeof fluidTypographySettings?.fluid === 'object'\n\t\t\t? fluidTypographySettings?.fluid\n\t\t\t: {};\n\n\tconst fluidFontSizeValue = getComputedFluidTypographyValue( {\n\t\tminimumFontSize: preset?.fluid?.min,\n\t\tmaximumFontSize: preset?.fluid?.max,\n\t\tfontSize: defaultSize,\n\t\tminimumFontSizeLimit: fluidTypographySettings?.minFontSize,\n\t\tmaximumViewportWidth: fluidTypographySettings?.maxViewportWidth,\n\t\tminimumViewportWidth: fluidTypographySettings?.minViewportWidth,\n\t} );\n\n\tif ( !! fluidFontSizeValue ) {\n\t\treturn fluidFontSizeValue;\n\t}\n\n\treturn defaultSize;\n}\n\nfunction isFluidTypographyEnabled( typographySettings ) {\n\tconst fluidSettings = typographySettings?.fluid;\n\treturn (\n\t\ttrue === fluidSettings ||\n\t\t( fluidSettings &&\n\t\t\ttypeof fluidSettings === 'object' &&\n\t\t\tObject.keys( fluidSettings ).length > 0 )\n\t);\n}\n\n/**\n * Returns fluid typography settings from theme.json setting object.\n *\n * @param {Object} settings Theme.json settings\n * @param {Object} settings.typography Theme.json typography settings\n * @param {Object} settings.layout Theme.json layout settings\n * @return {TypographySettings} Fluid typography settings\n */\nexport function getFluidTypographyOptionsFromSettings( settings ) {\n\tconst typographySettings = settings?.typography;\n\tconst layoutSettings = settings?.layout;\n\tconst defaultMaxViewportWidth = getTypographyValueAndUnit(\n\t\tlayoutSettings?.wideSize\n\t)\n\t\t? layoutSettings?.wideSize\n\t\t: null;\n\treturn isFluidTypographyEnabled( typographySettings ) &&\n\t\tdefaultMaxViewportWidth\n\t\t? {\n\t\t\t\tfluid: {\n\t\t\t\t\tmaxViewportWidth: defaultMaxViewportWidth,\n\t\t\t\t\t...typographySettings.fluid,\n\t\t\t\t},\n\t\t }\n\t\t: {\n\t\t\t\tfluid: typographySettings?.fluid,\n\t\t };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SACCA,+BAA+B,EAC/BC,yBAAyB,QACnB,2BAA2B;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAEC,MAAM,EAAEC,QAAQ,EAAG;EAC9D,MAAM;IAAEC,IAAI,EAAEC;EAAY,CAAC,GAAGH,MAAM;EAEpC,IAAK,CAAEI,wBAAwB,CAAEH,QAAQ,EAAEI,UAAW,CAAC,EAAG;IACzD,OAAOF,WAAW;EACnB;EACA;AACD;AACA;AACA;AACA;EACC,IAAK,CAAEA,WAAW,IAAI,GAAG,KAAKA,WAAW,IAAI,KAAK,KAAKH,MAAM,EAAEM,KAAK,EAAG;IACtE,OAAOH,WAAW;EACnB;EAEA,IAAII,uBAAuB,GAC1BC,qCAAqC,CAAEP,QAAS,CAAC;EAClDM,uBAAuB,GACtB,OAAOA,uBAAuB,EAAED,KAAK,KAAK,QAAQ,GAC/CC,uBAAuB,EAAED,KAAK,GAC9B,CAAC,CAAC;EAEN,MAAMG,kBAAkB,GAAGZ,+BAA+B,CAAE;IAC3Da,eAAe,EAAEV,MAAM,EAAEM,KAAK,EAAEK,GAAG;IACnCC,eAAe,EAAEZ,MAAM,EAAEM,KAAK,EAAEO,GAAG;IACnCC,QAAQ,EAAEX,WAAW;IACrBY,oBAAoB,EAAER,uBAAuB,EAAES,WAAW;IAC1DC,oBAAoB,EAAEV,uBAAuB,EAAEW,gBAAgB;IAC/DC,oBAAoB,EAAEZ,uBAAuB,EAAEa;EAChD,CAAE,CAAC;EAEH,IAAK,CAAC,CAAEX,kBAAkB,EAAG;IAC5B,OAAOA,kBAAkB;EAC1B;EAEA,OAAON,WAAW;AACnB;AAEA,SAASC,wBAAwBA,CAAEiB,kBAAkB,EAAG;EACvD,MAAMC,aAAa,GAAGD,kBAAkB,EAAEf,KAAK;EAC/C,OACC,IAAI,KAAKgB,aAAa,IACpBA,aAAa,IACd,OAAOA,aAAa,KAAK,QAAQ,IACjCC,MAAM,CAACC,IAAI,CAAEF,aAAc,CAAC,CAACG,MAAM,GAAG,CAAG;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASjB,qCAAqCA,CAAEP,QAAQ,EAAG;EACjE,MAAMoB,kBAAkB,GAAGpB,QAAQ,EAAEI,UAAU;EAC/C,MAAMqB,cAAc,GAAGzB,QAAQ,EAAE0B,MAAM;EACvC,MAAMC,uBAAuB,GAAG9B,yBAAyB,CACxD4B,cAAc,EAAEG,QACjB,CAAC,GACEH,cAAc,EAAEG,QAAQ,GACxB,IAAI;EACP,OAAOzB,wBAAwB,CAAEiB,kBAAmB,CAAC,IACpDO,uBAAuB,GACrB;IACAtB,KAAK,EAAE;MACNY,gBAAgB,EAAEU,uBAAuB;MACzC,GAAGP,kBAAkB,CAACf;IACvB;EACA,CAAC,GACD;IACAA,KAAK,EAAEe,kBAAkB,EAAEf;EAC3B,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"names":["getComputedFluidTypographyValue","getTypographyValueAndUnit","getFontStylesAndWeights","getTypographyFontSizeValue","preset","settings","size","defaultSize","isFluidTypographyEnabled","typography","fluid","fluidTypographySettings","getFluidTypographyOptionsFromSettings","fluidFontSizeValue","minimumFontSize","min","maximumFontSize","max","fontSize","minimumFontSizeLimit","minFontSize","maximumViewportWidth","maxViewportWidth","minimumViewportWidth","minViewportWidth","typographySettings","fluidSettings","Object","keys","length","layoutSettings","layout","defaultMaxViewportWidth","wideSize","getMergedFontFamiliesAndFontFamilyFaces","selectedFontFamily","_fontFamilies$find$fo","fontFamiliesFromSettings","fontFamilies","flatMap","key","_fontFamiliesFromSett","fontFamilyFaces","find","family","fontFamily","fontFace","findNearestFontWeight","availableFontWeights","newFontWeightValue","nearestFontWeight","reduce","nearest","value","fw","currentDiff","Math","abs","parseInt","nearestDiff","findNearestFontStyle","availableFontStyles","newFontStyleValue","validStyles","includes","style","findNearestStyleAndWeight","fontStyle","fontWeight","nearestFontStyle","fontStyles","fontWeights","combinedStyleAndWeightOptions","hasFontStyle","some","fs","hasFontWeight","option"],"sources":["@wordpress/block-editor/src/components/global-styles/typography-utils.js"],"sourcesContent":["/**\n * The fluid utilities must match the backend equivalent.\n * See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php\n * ---------------------------------------------------------------\n */\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetComputedFluidTypographyValue,\n\tgetTypographyValueAndUnit,\n} from '../font-sizes/fluid-utils';\nimport { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';\n\n/**\n * @typedef {Object} FluidPreset\n * @property {string|undefined} max A maximum font size value.\n * @property {?string|undefined} min A minimum font size value.\n */\n\n/**\n * @typedef {Object} Preset\n * @property {?string|?number} size A default font size.\n * @property {string} name A font size name, displayed in the UI.\n * @property {string} slug A font size slug\n * @property {boolean|FluidPreset|undefined} fluid Specifies the minimum and maximum font size value of a fluid font size.\n */\n\n/**\n * @typedef {Object} TypographySettings\n * @property {?string} minViewportWidth Minimum viewport size from which type will have fluidity. Optional if size is specified.\n * @property {?string} maxViewportWidth Maximum size up to which type will have fluidity. Optional if size is specified.\n * @property {?number} scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.\n * @property {?number} minFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.\n * @property {?string} minFontSize The smallest a calculated font size may be. Optional.\n */\n\n/**\n * Returns a font-size value based on a given font-size preset.\n * Takes into account fluid typography parameters and attempts to return a css formula depending on available, valid values.\n *\n * @param {Preset} preset\n * @param {Object} settings\n * @param {boolean|TypographySettings} settings.typography.fluid Whether fluid typography is enabled, and, optionally, fluid font size options.\n * @param {Object?} settings.typography.layout Layout options.\n *\n * @return {string|*} A font-size value or the value of preset.size.\n */\nexport function getTypographyFontSizeValue( preset, settings ) {\n\tconst { size: defaultSize } = preset;\n\n\tif ( ! isFluidTypographyEnabled( settings?.typography ) ) {\n\t\treturn defaultSize;\n\t}\n\t/*\n\t * Checks whether a font size has explicitly bypassed fluid calculations.\n\t * Also catches falsy values and 0/'0'.\n\t * Fluid calculations cannot be performed on `0`.\n\t */\n\tif ( ! defaultSize || '0' === defaultSize || false === preset?.fluid ) {\n\t\treturn defaultSize;\n\t}\n\n\tlet fluidTypographySettings =\n\t\tgetFluidTypographyOptionsFromSettings( settings );\n\tfluidTypographySettings =\n\t\ttypeof fluidTypographySettings?.fluid === 'object'\n\t\t\t? fluidTypographySettings?.fluid\n\t\t\t: {};\n\n\tconst fluidFontSizeValue = getComputedFluidTypographyValue( {\n\t\tminimumFontSize: preset?.fluid?.min,\n\t\tmaximumFontSize: preset?.fluid?.max,\n\t\tfontSize: defaultSize,\n\t\tminimumFontSizeLimit: fluidTypographySettings?.minFontSize,\n\t\tmaximumViewportWidth: fluidTypographySettings?.maxViewportWidth,\n\t\tminimumViewportWidth: fluidTypographySettings?.minViewportWidth,\n\t} );\n\n\tif ( !! fluidFontSizeValue ) {\n\t\treturn fluidFontSizeValue;\n\t}\n\n\treturn defaultSize;\n}\n\nfunction isFluidTypographyEnabled( typographySettings ) {\n\tconst fluidSettings = typographySettings?.fluid;\n\treturn (\n\t\ttrue === fluidSettings ||\n\t\t( fluidSettings &&\n\t\t\ttypeof fluidSettings === 'object' &&\n\t\t\tObject.keys( fluidSettings ).length > 0 )\n\t);\n}\n\n/**\n * Returns fluid typography settings from theme.json setting object.\n *\n * @param {Object} settings Theme.json settings\n * @param {Object} settings.typography Theme.json typography settings\n * @param {Object} settings.layout Theme.json layout settings\n * @return {TypographySettings} Fluid typography settings\n */\nexport function getFluidTypographyOptionsFromSettings( settings ) {\n\tconst typographySettings = settings?.typography;\n\tconst layoutSettings = settings?.layout;\n\tconst defaultMaxViewportWidth = getTypographyValueAndUnit(\n\t\tlayoutSettings?.wideSize\n\t)\n\t\t? layoutSettings?.wideSize\n\t\t: null;\n\treturn isFluidTypographyEnabled( typographySettings ) &&\n\t\tdefaultMaxViewportWidth\n\t\t? {\n\t\t\t\tfluid: {\n\t\t\t\t\tmaxViewportWidth: defaultMaxViewportWidth,\n\t\t\t\t\t...typographySettings.fluid,\n\t\t\t\t},\n\t\t }\n\t\t: {\n\t\t\t\tfluid: typographySettings?.fluid,\n\t\t };\n}\n\n/**\n * Returns an object of merged font families and the font faces from the selected font family\n * based on the theme.json settings object and the currently selected font family.\n *\n * @param {Object} settings Theme.json settings.\n * @param {string} selectedFontFamily Decoded font family string.\n * @return {Object} Merged font families and font faces from the selected font family.\n */\nexport function getMergedFontFamiliesAndFontFamilyFaces(\n\tsettings,\n\tselectedFontFamily\n) {\n\tconst fontFamiliesFromSettings = settings?.typography?.fontFamilies;\n\n\tconst fontFamilies = [ 'default', 'theme', 'custom' ].flatMap(\n\t\t( key ) => fontFamiliesFromSettings?.[ key ] ?? []\n\t);\n\n\tconst fontFamilyFaces =\n\t\tfontFamilies.find(\n\t\t\t( family ) => family.fontFamily === selectedFontFamily\n\t\t)?.fontFace ?? [];\n\n\treturn { fontFamilies, fontFamilyFaces };\n}\n\n/**\n * Returns the nearest font weight value from the available font weight list based on the new font weight.\n * The nearest font weight is the one with the smallest difference from the new font weight.\n *\n * @param {Array} availableFontWeights Array of available font weights.\n * @param {string} newFontWeightValue New font weight value.\n * @return {string} Nearest font weight.\n */\nexport function findNearestFontWeight(\n\tavailableFontWeights,\n\tnewFontWeightValue\n) {\n\tif ( ! newFontWeightValue || typeof newFontWeightValue !== 'string' ) {\n\t\treturn '';\n\t}\n\n\tif ( ! availableFontWeights || availableFontWeights.length === 0 ) {\n\t\treturn newFontWeightValue;\n\t}\n\n\tconst nearestFontWeight = availableFontWeights?.reduce(\n\t\t( nearest, { value: fw } ) => {\n\t\t\tconst currentDiff = Math.abs(\n\t\t\t\tparseInt( fw ) - parseInt( newFontWeightValue )\n\t\t\t);\n\t\t\tconst nearestDiff = Math.abs(\n\t\t\t\tparseInt( nearest ) - parseInt( newFontWeightValue )\n\t\t\t);\n\t\t\treturn currentDiff < nearestDiff ? fw : nearest;\n\t\t},\n\t\tavailableFontWeights[ 0 ]?.value\n\t);\n\n\treturn nearestFontWeight;\n}\n\n/**\n * Returns the nearest font style based on the new font style.\n * Defaults to an empty string if the new font style is not valid or available.\n *\n * @param {Array} availableFontStyles Array of available font weights.\n * @param {string} newFontStyleValue New font style value.\n * @return {string} Nearest font style or an empty string.\n */\nexport function findNearestFontStyle( availableFontStyles, newFontStyleValue ) {\n\tif ( typeof newFontStyleValue !== 'string' || ! newFontStyleValue ) {\n\t\treturn '';\n\t}\n\n\tconst validStyles = [ 'normal', 'italic', 'oblique' ];\n\tif ( ! validStyles.includes( newFontStyleValue ) ) {\n\t\treturn '';\n\t}\n\n\tif (\n\t\t! availableFontStyles ||\n\t\tavailableFontStyles.length === 0 ||\n\t\tavailableFontStyles.find(\n\t\t\t( style ) => style.value === newFontStyleValue\n\t\t)\n\t) {\n\t\treturn newFontStyleValue;\n\t}\n\n\tif (\n\t\tnewFontStyleValue === 'oblique' &&\n\t\t! availableFontStyles.find( ( style ) => style.value === 'oblique' )\n\t) {\n\t\treturn 'italic';\n\t}\n\n\treturn '';\n}\n\n/**\n * Returns the nearest font style and weight based on the available font family faces and the new font style and weight.\n *\n * @param {Array} fontFamilyFaces Array of available font family faces.\n * @param {string} fontStyle New font style. Defaults to previous value.\n * @param {string} fontWeight New font weight. Defaults to previous value.\n * @return {Object} Nearest font style and font weight.\n */\nexport function findNearestStyleAndWeight(\n\tfontFamilyFaces,\n\tfontStyle,\n\tfontWeight\n) {\n\tlet nearestFontStyle = fontStyle;\n\tlet nearestFontWeight = fontWeight;\n\n\tconst { fontStyles, fontWeights, combinedStyleAndWeightOptions } =\n\t\tgetFontStylesAndWeights( fontFamilyFaces );\n\n\t// Check if the new font style and weight are available in the font family faces.\n\tconst hasFontStyle = fontStyles?.some(\n\t\t( { value: fs } ) => fs === fontStyle\n\t);\n\tconst hasFontWeight = fontWeights?.some(\n\t\t( { value: fw } ) => fw === fontWeight\n\t);\n\n\tif ( ! hasFontStyle ) {\n\t\t/*\n\t\t * Default to italic if oblique is not available.\n\t\t * Or find the nearest font style based on the nearest font weight.\n\t\t */\n\t\tnearestFontStyle = fontStyle\n\t\t\t? findNearestFontStyle( fontStyles, fontStyle )\n\t\t\t: combinedStyleAndWeightOptions?.find(\n\t\t\t\t\t( option ) =>\n\t\t\t\t\t\toption.style.fontWeight ===\n\t\t\t\t\t\tfindNearestFontWeight( fontWeights, fontWeight )\n\t\t\t )?.style?.fontStyle;\n\t}\n\n\tif ( ! hasFontWeight ) {\n\t\t/*\n\t\t * Find the nearest font weight based on available weights.\n\t\t * Or find the nearest font weight based on the nearest font style.\n\t\t */\n\t\tnearestFontWeight = fontWeight\n\t\t\t? findNearestFontWeight( fontWeights, fontWeight )\n\t\t\t: combinedStyleAndWeightOptions?.find(\n\t\t\t\t\t( option ) =>\n\t\t\t\t\t\toption.style.fontStyle ===\n\t\t\t\t\t\t( nearestFontStyle || fontStyle )\n\t\t\t )?.style?.fontWeight;\n\t}\n\n\treturn { nearestFontStyle, nearestFontWeight };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -17,12 +17,19 @@ import { GlobalStylesContext } from './context';
17
17
  import { useGlobalSetting } from './hooks';
18
18
  import { getDuotoneFilter } from '../duotone/utils';
19
19
  import { getGapCSSValue } from '../../hooks/gap';
20
+ import { setBackgroundStyleDefaults } from '../../hooks/background';
20
21
  import { store as blockEditorStore } from '../../store';
21
22
  import { LAYOUT_DEFINITIONS } from '../../layouts/definitions';
22
23
  import { getValueFromObjectPath, setImmutably } from '../../utils/object';
23
24
  import { unlock } from '../../lock-unlock';
24
25
  import { setThemeFileUris } from './theme-file-uri-utils';
25
26
 
27
+ // Elements that rely on class names in their selectors.
28
+ const ELEMENT_CLASS_NAMES = {
29
+ button: 'wp-element-button',
30
+ caption: 'wp-element-caption'
31
+ };
32
+
26
33
  // List of block support features that can have their related styles
27
34
  // generated under their own feature level selector rather than the block's.
28
35
  const BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {
@@ -278,6 +285,20 @@ export function getStylesDeclarations(blockStyles = {}, selector = '', useRootPa
278
285
  return declarations;
279
286
  }, []);
280
287
 
288
+ /*
289
+ * Set background defaults.
290
+ * Applies to all background styles except the top-level site background.
291
+ */
292
+ if (!isRoot && !!blockStyles.background) {
293
+ blockStyles = {
294
+ ...blockStyles,
295
+ background: {
296
+ ...blockStyles.background,
297
+ ...setBackgroundStyleDefaults(blockStyles.background)
298
+ }
299
+ };
300
+ }
301
+
281
302
  // The goal is to move everything to server side generated engine styles
282
303
  // This is temporary as we absorb more and more styles into the engine.
283
304
  const extraRules = getCSSRules(blockStyles);
@@ -444,14 +465,20 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
444
465
  if (styles) {
445
466
  nodes.push({
446
467
  styles,
447
- selector: ROOT_BLOCK_SELECTOR
468
+ selector: ROOT_BLOCK_SELECTOR,
469
+ // Root selector (body) styles should not be wrapped in `:root where()` to keep
470
+ // specificity at (0,0,1) and maintain backwards compatibility.
471
+ skipSelectorWrapper: true
448
472
  });
449
473
  }
450
474
  Object.entries(ELEMENTS).forEach(([name, selector]) => {
451
475
  if (tree.styles?.elements?.[name]) {
452
476
  nodes.push({
453
477
  styles: tree.styles?.elements?.[name],
454
- selector
478
+ selector,
479
+ // Top level elements that don't use a class name should not receive the
480
+ // `:root :where()` wrapper to maintain backwards compatibility.
481
+ skipSelectorWrapper: !ELEMENT_CLASS_NAMES[name]
455
482
  });
456
483
  }
457
484
  });
@@ -468,7 +495,7 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
468
495
  if (variation?.css) {
469
496
  variations[variationName].css = variation.css;
470
497
  }
471
- const variationSelector = blockSelectors[blockName].styleVariationSelectors?.[variationName];
498
+ const variationSelector = blockSelectors[blockName]?.styleVariationSelectors?.[variationName];
472
499
 
473
500
  // Process the variation's inner element styles.
474
501
  // This comes before the inner block styles so the
@@ -486,9 +513,9 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
486
513
  // Process the variations inner block type styles.
487
514
  Object.entries((_variation$blocks = variation?.blocks) !== null && _variation$blocks !== void 0 ? _variation$blocks : {}).forEach(([variationBlockName, variationBlockStyles]) => {
488
515
  var _variationBlockStyles;
489
- const variationBlockSelector = scopeSelector(variationSelector, blockSelectors[variationBlockName].selector);
490
- const variationDuotoneSelector = scopeSelector(variationSelector, blockSelectors[variationBlockName].duotoneSelector);
491
- const variationFeatureSelectors = scopeFeatureSelectors(variationSelector, blockSelectors[variationBlockName].featureSelectors);
516
+ const variationBlockSelector = scopeSelector(variationSelector, blockSelectors[variationBlockName]?.selector);
517
+ const variationDuotoneSelector = scopeSelector(variationSelector, blockSelectors[variationBlockName]?.duotoneSelector);
518
+ const variationFeatureSelectors = scopeFeatureSelectors(variationSelector, blockSelectors[variationBlockName]?.featureSelectors);
492
519
  const variationBlockStyleNodes = pickStyleKeys(variationBlockStyles);
493
520
  if (variationBlockStyles?.css) {
494
521
  variationBlockStyleNodes.css = variationBlockStyles.css;
@@ -497,8 +524,8 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
497
524
  selector: variationBlockSelector,
498
525
  duotoneSelector: variationDuotoneSelector,
499
526
  featureSelectors: variationFeatureSelectors,
500
- fallbackGapValue: blockSelectors[variationBlockName].fallbackGapValue,
501
- hasLayoutSupport: blockSelectors[variationBlockName].hasLayoutSupport,
527
+ fallbackGapValue: blockSelectors[variationBlockName]?.fallbackGapValue,
528
+ hasLayoutSupport: blockSelectors[variationBlockName]?.hasLayoutSupport,
502
529
  styles: variationBlockStyleNodes
503
530
  });
504
531
 
@@ -651,8 +678,8 @@ export const toStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGa
651
678
  ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }
652
679
  .has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
653
680
  .has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }
654
- .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull, .alignwide)) { padding-right: 0; padding-left: 0; }
655
- .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull, .alignwide)) > .alignfull { margin-left: 0; margin-right: 0;
681
+ .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }
682
+ .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0;
656
683
  `;
657
684
  }
658
685
  ruleset += '}';
@@ -665,7 +692,8 @@ export const toStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGa
665
692
  fallbackGapValue,
666
693
  hasLayoutSupport,
667
694
  featureSelectors,
668
- styleVariationSelectors
695
+ styleVariationSelectors,
696
+ skipSelectorWrapper
669
697
  }) => {
670
698
  // Process styles for block support features with custom feature level
671
699
  // CSS selectors set.
@@ -706,7 +734,8 @@ export const toStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGa
706
734
  // Process the remaining block styles (they use either normal block class or __experimentalSelector).
707
735
  const styleDeclarations = getStylesDeclarations(styles, selector, useRootPaddingAlign, tree, disableRootPadding);
708
736
  if (styleDeclarations?.length) {
709
- ruleset += `:root :where(${selector}){${styleDeclarations.join(';')};}`;
737
+ const generalSelector = skipSelectorWrapper ? selector : `:root :where(${selector})`;
738
+ ruleset += `${generalSelector}{${styleDeclarations.join(';')};}`;
710
739
  }
711
740
  if (styles?.css) {
712
741
  ruleset += processCSSNesting(styles.css, `:root :where(${selector})`);
@@ -756,7 +785,12 @@ export const toStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGa
756
785
  // Split and append pseudo selector to create
757
786
  // the proper rules to target the elements.
758
787
  const _selector = selector.split(',').map(sel => sel + pseudoKey).join(',');
759
- const pseudoRule = `${_selector}{${pseudoDeclarations.join(';')};}`;
788
+
789
+ // As pseudo classes such as :hover, :focus etc. have class-level
790
+ // specificity, they must use the `:root :where()` wrapper. This.
791
+ // caps the specificity at `0-1-0` to allow proper nesting of variations
792
+ // and block type element styles.
793
+ const pseudoRule = `:root :where(${_selector}){${pseudoDeclarations.join(';')};}`;
760
794
  ruleset += pseudoRule;
761
795
  });
762
796
  }