@wordpress/block-editor 12.5.0 → 12.7.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 (442) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -6
  3. package/build/autocompleters/block.js +6 -2
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-draggable/index.js +6 -3
  6. package/build/components/block-draggable/index.js.map +1 -1
  7. package/build/components/block-draggable/index.native.js +2 -2
  8. package/build/components/block-draggable/index.native.js.map +1 -1
  9. package/build/components/block-edit/edit.js +25 -13
  10. package/build/components/block-edit/edit.js.map +1 -1
  11. package/build/components/block-editing-mode/index.js +1 -1
  12. package/build/components/block-editing-mode/index.js.map +1 -1
  13. package/build/components/block-list/block-outline.native.js +14 -18
  14. package/build/components/block-list/block-outline.native.js.map +1 -1
  15. package/build/components/block-list/block.js +4 -2
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +21 -42
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/index.js +2 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-mover/index.native.js +1 -1
  22. package/build/components/block-mover/index.native.js.map +1 -1
  23. package/build/components/block-parent-selector/index.js +6 -21
  24. package/build/components/block-parent-selector/index.js.map +1 -1
  25. package/build/components/block-preview/auto.js +6 -1
  26. package/build/components/block-preview/auto.js.map +1 -1
  27. package/build/components/block-removal-warning-modal/index.js +1 -4
  28. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  29. package/build/components/block-settings/button.native.js +2 -2
  30. package/build/components/block-settings/button.native.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -17
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +7 -5
  34. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  35. package/build/components/block-toolbar/index.js +4 -33
  36. package/build/components/block-toolbar/index.js.map +1 -1
  37. package/build/components/block-toolbar/index.native.js +62 -3
  38. package/build/components/block-toolbar/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/utils.js +56 -51
  40. package/build/components/block-toolbar/utils.js.map +1 -1
  41. package/build/components/block-tools/block-contextual-toolbar.js +4 -2
  42. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  43. package/build/components/block-variation-picker/index.native.js +10 -20
  44. package/build/components/block-variation-picker/index.native.js.map +1 -1
  45. package/build/components/colors-gradients/control.js +4 -2
  46. package/build/components/colors-gradients/control.js.map +1 -1
  47. package/build/components/editor-styles/index.js +2 -2
  48. package/build/components/editor-styles/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +11 -11
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/global-styles/behaviors-panel.js +66 -0
  52. package/build/components/global-styles/behaviors-panel.js.map +1 -0
  53. package/build/components/global-styles/color-panel.js +21 -15
  54. package/build/components/global-styles/color-panel.js.map +1 -1
  55. package/build/components/global-styles/dimensions-panel.js +13 -2
  56. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  57. package/build/components/global-styles/get-block-css-selector.js +4 -8
  58. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  59. package/build/components/global-styles/hooks.js +131 -27
  60. package/build/components/global-styles/hooks.js.map +1 -1
  61. package/build/components/global-styles/index.js +20 -0
  62. package/build/components/global-styles/index.js.map +1 -1
  63. package/build/components/global-styles/typography-panel.js +18 -3
  64. package/build/components/global-styles/typography-panel.js.map +1 -1
  65. package/build/components/global-styles/typography-utils.js +4 -4
  66. package/build/components/global-styles/typography-utils.js.map +1 -1
  67. package/build/components/global-styles/use-global-styles-output.js +12 -18
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  69. package/build/components/global-styles/utils.js +7 -7
  70. package/build/components/global-styles/utils.js.map +1 -1
  71. package/build/components/iframe/index.js +36 -48
  72. package/build/components/iframe/index.js.map +1 -1
  73. package/build/components/iframe/use-compatibility-styles.js +5 -0
  74. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  75. package/build/components/index.js +1 -10
  76. package/build/components/index.js.map +1 -1
  77. package/build/components/inner-blocks/index.js +3 -1
  78. package/build/components/inner-blocks/index.js.map +1 -1
  79. package/build/components/inner-blocks/index.native.js +3 -1
  80. package/build/components/inner-blocks/index.native.js.map +1 -1
  81. package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
  82. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  83. package/build/components/inserter/hooks/use-block-types-state.js +6 -2
  84. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  85. package/build/components/inserter/hooks/use-debounced-input.js +5 -7
  86. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -1
  87. package/build/components/inserter/hooks/use-patterns-state.js +3 -2
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/index.js +2 -4
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/index.native.js +21 -32
  92. package/build/components/inserter/index.native.js.map +1 -1
  93. package/build/components/inserter/reusable-block-rename-hint.js +23 -3
  94. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -1
  95. package/build/components/inserter/reusable-blocks-tab.js +3 -2
  96. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  97. package/build/components/inserter-list-item/index.js +1 -1
  98. package/build/components/inserter-list-item/index.js.map +1 -1
  99. package/build/components/link-control/index.js +51 -7
  100. package/build/components/link-control/index.js.map +1 -1
  101. package/build/components/link-control/link-preview.js +3 -3
  102. package/build/components/link-control/link-preview.js.map +1 -1
  103. package/build/components/link-control/search-item.js +1 -1
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/use-list-view-client-ids.js +2 -2
  106. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  107. package/build/components/list-view/use-list-view-drop-zone.js +6 -1
  108. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  109. package/build/components/media-placeholder/index.native.js +65 -31
  110. package/build/components/media-placeholder/index.native.js.map +1 -1
  111. package/build/components/media-replace-flow/index.native.js +15 -3
  112. package/build/components/media-replace-flow/index.native.js.map +1 -1
  113. package/build/components/preview-options/index.js +2 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/rich-text/content.js +0 -36
  116. package/build/components/rich-text/content.js.map +1 -1
  117. package/build/components/rich-text/format-edit.js +57 -28
  118. package/build/components/rich-text/format-edit.js.map +1 -1
  119. package/build/components/rich-text/get-rich-text-values.js +111 -0
  120. package/build/components/rich-text/get-rich-text-values.js.map +1 -0
  121. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  122. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  125. package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
  126. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  127. package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
  128. package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  129. package/build/components/spacing-sizes-control/utils.js +2 -2
  130. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  131. package/build/components/use-block-display-information/index.js +7 -3
  132. package/build/components/use-block-display-information/index.js.map +1 -1
  133. package/build/components/use-block-drop-zone/index.native.js +49 -8
  134. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  135. package/build/components/use-setting/index.js +5 -9
  136. package/build/components/use-setting/index.js.map +1 -1
  137. package/build/hooks/behaviors.js +5 -12
  138. package/build/hooks/behaviors.js.map +1 -1
  139. package/build/hooks/border.js +2 -1
  140. package/build/hooks/border.js.map +1 -1
  141. package/build/hooks/margin.js +1 -1
  142. package/build/hooks/margin.js.map +1 -1
  143. package/build/hooks/padding.js +1 -1
  144. package/build/hooks/padding.js.map +1 -1
  145. package/build/hooks/style.js +11 -2
  146. package/build/hooks/style.js.map +1 -1
  147. package/build/hooks/utils.js +1 -7
  148. package/build/hooks/utils.js.map +1 -1
  149. package/build/private-apis.js +10 -3
  150. package/build/private-apis.js.map +1 -1
  151. package/build/store/actions.js +3 -4
  152. package/build/store/actions.js.map +1 -1
  153. package/build/store/private-selectors.js +5 -6
  154. package/build/store/private-selectors.js.map +1 -1
  155. package/build/store/reducer.js +0 -1
  156. package/build/store/reducer.js.map +1 -1
  157. package/build/store/selectors.js +23 -79
  158. package/build/store/selectors.js.map +1 -1
  159. package/build/utils/object.js +38 -2
  160. package/build/utils/object.js.map +1 -1
  161. package/build-module/autocompleters/block.js +7 -3
  162. package/build-module/autocompleters/block.js.map +1 -1
  163. package/build-module/components/block-draggable/index.js +6 -3
  164. package/build-module/components/block-draggable/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.native.js +2 -2
  166. package/build-module/components/block-draggable/index.native.js.map +1 -1
  167. package/build-module/components/block-edit/edit.js +27 -10
  168. package/build-module/components/block-edit/edit.js.map +1 -1
  169. package/build-module/components/block-editing-mode/index.js +1 -1
  170. package/build-module/components/block-editing-mode/index.js.map +1 -1
  171. package/build-module/components/block-list/block-outline.native.js +14 -18
  172. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  173. package/build-module/components/block-list/block.js +4 -2
  174. package/build-module/components/block-list/block.js.map +1 -1
  175. package/build-module/components/block-list/block.native.js +24 -43
  176. package/build-module/components/block-list/block.native.js.map +1 -1
  177. package/build-module/components/block-list/index.js +2 -3
  178. package/build-module/components/block-list/index.js.map +1 -1
  179. package/build-module/components/block-mover/index.native.js +3 -3
  180. package/build-module/components/block-mover/index.native.js.map +1 -1
  181. package/build-module/components/block-parent-selector/index.js +7 -22
  182. package/build-module/components/block-parent-selector/index.js.map +1 -1
  183. package/build-module/components/block-preview/auto.js +6 -1
  184. package/build-module/components/block-preview/auto.js.map +1 -1
  185. package/build-module/components/block-removal-warning-modal/index.js +1 -4
  186. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  187. package/build-module/components/block-settings/button.native.js +3 -3
  188. package/build-module/components/block-settings/button.native.js.map +1 -1
  189. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -18
  190. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  191. package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +9 -7
  192. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  193. package/build-module/components/block-toolbar/index.js +6 -35
  194. package/build-module/components/block-toolbar/index.js.map +1 -1
  195. package/build-module/components/block-toolbar/index.native.js +60 -4
  196. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  197. package/build-module/components/block-toolbar/utils.js +54 -49
  198. package/build-module/components/block-toolbar/utils.js.map +1 -1
  199. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
  200. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  201. package/build-module/components/block-variation-picker/index.native.js +13 -23
  202. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  203. package/build-module/components/colors-gradients/control.js +3 -2
  204. package/build-module/components/colors-gradients/control.js.map +1 -1
  205. package/build-module/components/editor-styles/index.js +2 -2
  206. package/build-module/components/editor-styles/index.js.map +1 -1
  207. package/build-module/components/font-sizes/fluid-utils.js +11 -11
  208. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  209. package/build-module/components/global-styles/behaviors-panel.js +57 -0
  210. package/build-module/components/global-styles/behaviors-panel.js.map +1 -0
  211. package/build-module/components/global-styles/color-panel.js +21 -15
  212. package/build-module/components/global-styles/color-panel.js.map +1 -1
  213. package/build-module/components/global-styles/dimensions-panel.js +13 -2
  214. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  215. package/build-module/components/global-styles/get-block-css-selector.js +4 -8
  216. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  217. package/build-module/components/global-styles/hooks.js +127 -27
  218. package/build-module/components/global-styles/hooks.js.map +1 -1
  219. package/build-module/components/global-styles/index.js +2 -1
  220. package/build-module/components/global-styles/index.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +18 -3
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/typography-utils.js +4 -4
  224. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  225. package/build-module/components/global-styles/use-global-styles-output.js +13 -18
  226. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  227. package/build-module/components/global-styles/utils.js +6 -6
  228. package/build-module/components/global-styles/utils.js.map +1 -1
  229. package/build-module/components/iframe/index.js +37 -49
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/iframe/use-compatibility-styles.js +5 -0
  232. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  233. package/build-module/components/index.js +0 -5
  234. package/build-module/components/index.js.map +1 -1
  235. package/build-module/components/inner-blocks/index.js +3 -1
  236. package/build-module/components/inner-blocks/index.js.map +1 -1
  237. package/build-module/components/inner-blocks/index.native.js +3 -1
  238. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  239. package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
  240. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  241. package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
  242. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  243. package/build-module/components/inserter/hooks/use-debounced-input.js +5 -7
  244. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -1
  245. package/build-module/components/inserter/hooks/use-patterns-state.js +3 -2
  246. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  247. package/build-module/components/inserter/index.js +2 -4
  248. package/build-module/components/inserter/index.js.map +1 -1
  249. package/build-module/components/inserter/index.native.js +22 -33
  250. package/build-module/components/inserter/index.native.js.map +1 -1
  251. package/build-module/components/inserter/reusable-block-rename-hint.js +22 -3
  252. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -1
  253. package/build-module/components/inserter/reusable-blocks-tab.js +3 -2
  254. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  255. package/build-module/components/inserter-list-item/index.js +1 -1
  256. package/build-module/components/inserter-list-item/index.js.map +1 -1
  257. package/build-module/components/link-control/index.js +49 -7
  258. package/build-module/components/link-control/index.js.map +1 -1
  259. package/build-module/components/link-control/link-preview.js +3 -3
  260. package/build-module/components/link-control/link-preview.js.map +1 -1
  261. package/build-module/components/link-control/search-item.js +1 -1
  262. package/build-module/components/link-control/search-item.js.map +1 -1
  263. package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
  264. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  265. package/build-module/components/list-view/use-list-view-drop-zone.js +6 -1
  266. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  267. package/build-module/components/media-placeholder/index.native.js +66 -33
  268. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  269. package/build-module/components/media-replace-flow/index.native.js +15 -3
  270. package/build-module/components/media-replace-flow/index.native.js.map +1 -1
  271. package/build-module/components/preview-options/index.js +2 -2
  272. package/build-module/components/preview-options/index.js.map +1 -1
  273. package/build-module/components/rich-text/content.js +1 -36
  274. package/build-module/components/rich-text/content.js.map +1 -1
  275. package/build-module/components/rich-text/format-edit.js +51 -26
  276. package/build-module/components/rich-text/format-edit.js.map +1 -1
  277. package/build-module/components/rich-text/get-rich-text-values.js +100 -0
  278. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
  279. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  280. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  281. package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
  282. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
  284. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
  286. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  288. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  289. package/build-module/components/use-block-display-information/index.js +7 -3
  290. package/build-module/components/use-block-display-information/index.js.map +1 -1
  291. package/build-module/components/use-block-drop-zone/index.native.js +50 -8
  292. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  293. package/build-module/components/use-setting/index.js +5 -9
  294. package/build-module/components/use-setting/index.js.map +1 -1
  295. package/build-module/hooks/behaviors.js +5 -12
  296. package/build-module/hooks/behaviors.js.map +1 -1
  297. package/build-module/hooks/border.js +2 -1
  298. package/build-module/hooks/border.js.map +1 -1
  299. package/build-module/hooks/margin.js +1 -1
  300. package/build-module/hooks/margin.js.map +1 -1
  301. package/build-module/hooks/padding.js +1 -1
  302. package/build-module/hooks/padding.js.map +1 -1
  303. package/build-module/hooks/style.js +11 -2
  304. package/build-module/hooks/style.js.map +1 -1
  305. package/build-module/hooks/utils.js +2 -7
  306. package/build-module/hooks/utils.js.map +1 -1
  307. package/build-module/private-apis.js +7 -2
  308. package/build-module/private-apis.js.map +1 -1
  309. package/build-module/store/actions.js +4 -5
  310. package/build-module/store/actions.js.map +1 -1
  311. package/build-module/store/private-selectors.js +3 -3
  312. package/build-module/store/private-selectors.js.map +1 -1
  313. package/build-module/store/reducer.js +0 -1
  314. package/build-module/store/reducer.js.map +1 -1
  315. package/build-module/store/selectors.js +20 -75
  316. package/build-module/store/selectors.js.map +1 -1
  317. package/build-module/utils/object.js +34 -2
  318. package/build-module/utils/object.js.map +1 -1
  319. package/build-style/content-rtl.css +2 -1
  320. package/build-style/content.css +2 -1
  321. package/build-style/style-rtl.css +25 -6
  322. package/build-style/style.css +25 -6
  323. package/package.json +32 -32
  324. package/src/autocompleters/block.js +21 -6
  325. package/src/components/block-controls/README.md +89 -0
  326. package/src/components/block-draggable/index.js +13 -4
  327. package/src/components/block-draggable/index.native.js +7 -3
  328. package/src/components/block-draggable/test/index.native.js +2 -57
  329. package/src/components/block-edit/edit.js +26 -9
  330. package/src/components/block-edit/test/edit.js +1 -1
  331. package/src/components/block-editing-mode/index.js +1 -1
  332. package/src/components/block-list/block-outline.native.js +26 -25
  333. package/src/components/block-list/block.js +6 -1
  334. package/src/components/block-list/block.native.js +24 -38
  335. package/src/components/block-list/block.native.scss +18 -40
  336. package/src/components/block-list/index.js +3 -6
  337. package/src/components/block-list/style.native.scss +3 -3
  338. package/src/components/block-list/test/block-invalid-warning.native.js +8 -1
  339. package/src/components/block-mover/index.native.js +3 -3
  340. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +40 -6
  341. package/src/components/block-parent-selector/index.js +30 -42
  342. package/src/components/block-preview/auto.js +8 -1
  343. package/src/components/block-preview/style.scss +2 -1
  344. package/src/components/block-removal-warning-modal/index.js +0 -3
  345. package/src/components/block-settings/button.native.js +12 -6
  346. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -13
  347. package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +15 -10
  348. package/src/components/block-toolbar/index.js +36 -64
  349. package/src/components/block-toolbar/index.native.js +86 -6
  350. package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
  351. package/src/components/block-toolbar/test/index.native.js +42 -0
  352. package/src/components/block-toolbar/utils.js +57 -45
  353. package/src/components/block-tools/block-contextual-toolbar.js +43 -35
  354. package/src/components/block-tools/style.scss +17 -5
  355. package/src/components/block-variation-picker/index.native.js +52 -72
  356. package/src/components/button-block-appender/styles.native.scss +2 -2
  357. package/src/components/caption/README.md +49 -0
  358. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  359. package/src/components/colors-gradients/control.js +3 -2
  360. package/src/components/editor-styles/index.js +2 -2
  361. package/src/components/font-sizes/fluid-utils.js +17 -17
  362. package/src/components/font-sizes/test/fluid-utils.js +6 -6
  363. package/src/components/global-styles/behaviors-panel.js +71 -0
  364. package/src/components/global-styles/color-panel.js +23 -16
  365. package/src/components/global-styles/dimensions-panel.js +8 -2
  366. package/src/components/global-styles/get-block-css-selector.js +5 -9
  367. package/src/components/global-styles/hooks.js +134 -31
  368. package/src/components/global-styles/index.js +3 -0
  369. package/src/components/global-styles/test/typography-utils.js +6 -6
  370. package/src/components/global-styles/typography-panel.js +17 -5
  371. package/src/components/global-styles/typography-utils.js +4 -4
  372. package/src/components/global-styles/use-global-styles-output.js +36 -18
  373. package/src/components/global-styles/utils.js +17 -7
  374. package/src/components/iframe/index.js +30 -56
  375. package/src/components/iframe/use-compatibility-styles.js +5 -0
  376. package/src/components/index.js +0 -5
  377. package/src/components/inner-blocks/README.md +10 -0
  378. package/src/components/inner-blocks/index.js +4 -0
  379. package/src/components/inner-blocks/index.native.js +4 -0
  380. package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
  381. package/src/components/inserter/hooks/use-block-types-state.js +15 -6
  382. package/src/components/inserter/hooks/use-debounced-input.js +8 -7
  383. package/src/components/inserter/hooks/use-patterns-state.js +2 -1
  384. package/src/components/inserter/index.js +2 -3
  385. package/src/components/inserter/index.native.js +17 -36
  386. package/src/components/inserter/reusable-block-rename-hint.js +18 -1
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -1
  388. package/src/components/inserter/style.native.scss +10 -15
  389. package/src/components/inserter-list-item/index.js +3 -1
  390. package/src/components/link-control/README.md +12 -3
  391. package/src/components/link-control/index.js +47 -7
  392. package/src/components/link-control/link-preview.js +6 -4
  393. package/src/components/link-control/search-item.js +1 -1
  394. package/src/components/link-control/style.scss +11 -3
  395. package/src/components/link-control/test/index.js +28 -1
  396. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  397. package/src/components/list-view/use-list-view-drop-zone.js +5 -1
  398. package/src/components/media-placeholder/index.native.js +108 -59
  399. package/src/components/media-placeholder/styles.native.scss +59 -24
  400. package/src/components/media-replace-flow/index.native.js +12 -3
  401. package/src/components/media-upload/test/index.native.js +1 -0
  402. package/src/components/preview-options/README.md +18 -17
  403. package/src/components/preview-options/index.js +2 -2
  404. package/src/components/rich-text/content.js +1 -46
  405. package/src/components/rich-text/format-edit.js +62 -38
  406. package/src/components/rich-text/get-rich-text-values.js +99 -0
  407. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  408. package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
  409. package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
  410. package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
  411. package/src/components/spacing-sizes-control/test/utils.js +9 -1
  412. package/src/components/spacing-sizes-control/utils.js +2 -2
  413. package/src/components/text-transform-control/README.md +44 -0
  414. package/src/components/use-block-display-information/index.js +12 -5
  415. package/src/components/use-block-drop-zone/index.native.js +65 -28
  416. package/src/components/use-setting/index.js +8 -8
  417. package/src/hooks/behaviors.js +10 -16
  418. package/src/hooks/border.js +2 -1
  419. package/src/hooks/margin.js +4 -1
  420. package/src/hooks/padding.js +4 -1
  421. package/src/hooks/style.js +7 -3
  422. package/src/hooks/utils.js +5 -7
  423. package/src/private-apis.js +9 -1
  424. package/src/store/actions.js +23 -30
  425. package/src/store/private-selectors.js +3 -6
  426. package/src/store/reducer.js +0 -1
  427. package/src/store/selectors.js +36 -85
  428. package/src/store/test/actions.js +3 -0
  429. package/src/store/test/private-selectors.js +5 -5
  430. package/src/store/test/reducer.js +14 -7
  431. package/src/store/test/selectors.js +8 -7
  432. package/src/utils/object.js +32 -2
  433. package/src/utils/test/object.js +36 -0
  434. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  435. package/build/components/block-mobile-toolbar/index.native.js +0 -135
  436. package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
  437. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  438. package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
  439. package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
  440. package/src/components/block-mobile-toolbar/index.native.js +0 -127
  441. package/src/components/block-mobile-toolbar/style.native.scss +0 -16
  442. /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
@@ -2,27 +2,28 @@
2
2
  * External dependencies
3
3
  */
4
4
  import fastDeepEqual from 'fast-deep-equal/es6';
5
- import { get, set } from 'lodash';
6
5
  /**
7
6
  * WordPress dependencies
8
7
  */
9
8
 
10
9
  import { useContext, useCallback, useMemo } from '@wordpress/element';
11
10
  import { useSelect } from '@wordpress/data';
12
- import { store as blocksStore } from '@wordpress/blocks';
11
+ import { store as blocksStore, hasBlockSupport } from '@wordpress/blocks';
13
12
  import { _x } from '@wordpress/i18n';
14
13
  /**
15
14
  * Internal dependencies
16
15
  */
17
16
 
18
17
  import { getValueFromVariable, getPresetVariableFromValue } from './utils';
18
+ import { getValueFromObjectPath, setImmutably } from '../../utils/object';
19
19
  import { GlobalStylesContext } from './context';
20
20
  import { unlock } from '../../lock-unlock';
21
21
  const EMPTY_CONFIG = {
22
22
  settings: {},
23
- styles: {}
23
+ styles: {},
24
+ behaviors: {}
24
25
  };
25
- const VALID_SETTINGS = ['appearanceTools', 'useRootPaddingAwareAlignments', 'border.color', 'border.radius', 'border.style', 'border.width', 'shadow.presets', 'shadow.defaultPresets', 'color.background', 'color.button', 'color.caption', 'color.custom', 'color.customDuotone', 'color.customGradient', 'color.defaultDuotone', 'color.defaultGradients', 'color.defaultPalette', 'color.duotone', 'color.gradients', 'color.heading', 'color.link', 'color.palette', 'color.text', 'custom', 'dimensions.minHeight', 'layout.contentSize', 'layout.definitions', 'layout.wideSize', 'position.fixed', 'position.sticky', 'spacing.customSpacingSize', 'spacing.spacingSizes', 'spacing.spacingScale', 'spacing.blockGap', 'spacing.margin', 'spacing.padding', 'spacing.units', 'typography.fluid', 'typography.customFontSize', 'typography.dropCap', 'typography.fontFamilies', 'typography.fontSizes', 'typography.fontStyle', 'typography.fontWeight', 'typography.letterSpacing', 'typography.lineHeight', 'typography.textColumns', 'typography.textDecoration', 'typography.textTransform', 'typography.writingMode'];
26
+ const VALID_SETTINGS = ['appearanceTools', 'behaviors', 'useRootPaddingAwareAlignments', 'border.color', 'border.radius', 'border.style', 'border.width', 'shadow.presets', 'shadow.defaultPresets', 'color.background', 'color.button', 'color.caption', 'color.custom', 'color.customDuotone', 'color.customGradient', 'color.defaultDuotone', 'color.defaultGradients', 'color.defaultPalette', 'color.duotone', 'color.gradients', 'color.heading', 'color.link', 'color.palette', 'color.text', 'custom', 'dimensions.minHeight', 'layout.contentSize', 'layout.definitions', 'layout.wideSize', 'position.fixed', 'position.sticky', 'spacing.customSpacingSize', 'spacing.spacingSizes', 'spacing.spacingScale', 'spacing.blockGap', 'spacing.margin', 'spacing.padding', 'spacing.units', 'typography.fluid', 'typography.customFontSize', 'typography.dropCap', 'typography.fontFamilies', 'typography.fontSizes', 'typography.fontStyle', 'typography.fontWeight', 'typography.letterSpacing', 'typography.lineHeight', 'typography.textColumns', 'typography.textDecoration', 'typography.textTransform', 'typography.writingMode'];
26
27
  export const useGlobalStylesReset = () => {
27
28
  const {
28
29
  user: config,
@@ -49,31 +50,26 @@ export function useGlobalSetting(propertyPath, blockName, source = 'all') {
49
50
  }
50
51
 
51
52
  if (propertyPath) {
52
- var _get;
53
+ var _getValueFromObjectPa;
53
54
 
54
- return (_get = get(configToUse, contextualPath)) !== null && _get !== void 0 ? _get : get(configToUse, globalPath);
55
+ return (_getValueFromObjectPa = getValueFromObjectPath(configToUse, contextualPath)) !== null && _getValueFromObjectPa !== void 0 ? _getValueFromObjectPa : getValueFromObjectPath(configToUse, globalPath);
55
56
  }
56
57
 
57
- const result = {};
58
+ let result = {};
58
59
  VALID_SETTINGS.forEach(setting => {
59
- var _get2;
60
+ var _getValueFromObjectPa2;
60
61
 
61
- const value = (_get2 = get(configToUse, `settings${appendedBlockPath}.${setting}`)) !== null && _get2 !== void 0 ? _get2 : get(configToUse, `settings.${setting}`);
62
+ const value = (_getValueFromObjectPa2 = getValueFromObjectPath(configToUse, `settings${appendedBlockPath}.${setting}`)) !== null && _getValueFromObjectPa2 !== void 0 ? _getValueFromObjectPa2 : getValueFromObjectPath(configToUse, `settings.${setting}`);
62
63
 
63
64
  if (value) {
64
- set(result, setting, value);
65
+ result = setImmutably(result, setting.split('.'), value);
65
66
  }
66
67
  });
67
68
  return result;
68
69
  }, [configs, sourceKey, propertyPath, contextualPath, globalPath, appendedBlockPath]);
69
70
 
70
71
  const setSetting = newValue => {
71
- setUserConfig(currentConfig => {
72
- // Deep clone `currentConfig` to avoid mutating it later.
73
- const newUserConfig = JSON.parse(JSON.stringify(currentConfig));
74
- set(newUserConfig, contextualPath, newValue);
75
- return newUserConfig;
76
- });
72
+ setUserConfig(currentConfig => setImmutably(currentConfig, contextualPath.split('.'), newValue));
77
73
  };
78
74
 
79
75
  return [settingValue, setSetting];
@@ -91,29 +87,24 @@ export function useGlobalStyle(path, blockName, source = 'all', {
91
87
  const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`;
92
88
 
93
89
  const setStyle = newValue => {
94
- setUserConfig(currentConfig => {
95
- // Deep clone `currentConfig` to avoid mutating it later.
96
- const newUserConfig = JSON.parse(JSON.stringify(currentConfig));
97
- set(newUserConfig, finalPath, shouldDecodeEncode ? getPresetVariableFromValue(mergedConfig.settings, blockName, path, newValue) : newValue);
98
- return newUserConfig;
99
- });
90
+ setUserConfig(currentConfig => setImmutably(currentConfig, finalPath.split('.'), shouldDecodeEncode ? getPresetVariableFromValue(mergedConfig.settings, blockName, path, newValue) : newValue));
100
91
  };
101
92
 
102
93
  let rawResult, result;
103
94
 
104
95
  switch (source) {
105
96
  case 'all':
106
- rawResult = get(mergedConfig, finalPath);
97
+ rawResult = getValueFromObjectPath(mergedConfig, finalPath);
107
98
  result = shouldDecodeEncode ? getValueFromVariable(mergedConfig, blockName, rawResult) : rawResult;
108
99
  break;
109
100
 
110
101
  case 'user':
111
- rawResult = get(userConfig, finalPath);
102
+ rawResult = getValueFromObjectPath(userConfig, finalPath);
112
103
  result = shouldDecodeEncode ? getValueFromVariable(mergedConfig, blockName, rawResult) : rawResult;
113
104
  break;
114
105
 
115
106
  case 'base':
116
- rawResult = get(baseConfig, finalPath);
107
+ rawResult = getValueFromObjectPath(baseConfig, finalPath);
117
108
  result = shouldDecodeEncode ? getValueFromVariable(baseConfig, blockName, rawResult) : rawResult;
118
109
  break;
119
110
 
@@ -210,9 +201,9 @@ export function useSettingsForBlockElement(parentSettings, blockName, element) {
210
201
  };
211
202
  }
212
203
 
213
- const sides = Array.isArray(supports?.spacing?.[key]) ? supports?.spacing?.[key] : supports?.spacing?.[key]?.sides;
204
+ const sides = Array.isArray(supports?.spacing?.[key]) ? supports?.spacing?.[key] : supports?.spacing?.[key]?.sides; // Check if spacing type is supported before adding sides.
214
205
 
215
- if (sides?.length) {
206
+ if (sides?.length && updatedSettings.spacing?.[key]) {
216
207
  updatedSettings.spacing = { ...updatedSettings.spacing,
217
208
  [key]: { ...updatedSettings.spacing?.[key],
218
209
  sides
@@ -302,4 +293,113 @@ export function useGradientsPerOrigin(settings) {
302
293
  return result;
303
294
  }, [customGradients, themeGradients, defaultGradients, shouldDisplayDefaultGradients]);
304
295
  }
296
+ export function __experimentalUseGlobalBehaviors(blockName, source = 'all') {
297
+ const {
298
+ merged: mergedConfig,
299
+ base: baseConfig,
300
+ user: userConfig,
301
+ setUserConfig
302
+ } = useContext(GlobalStylesContext);
303
+ const finalPath = !blockName ? `behaviors` : `behaviors.blocks.${blockName}`;
304
+ let rawResult, result;
305
+
306
+ switch (source) {
307
+ case 'all':
308
+ rawResult = getValueFromObjectPath(mergedConfig, finalPath);
309
+ result = getValueFromVariable(mergedConfig, blockName, rawResult);
310
+ break;
311
+
312
+ case 'user':
313
+ rawResult = getValueFromObjectPath(userConfig, finalPath);
314
+ result = getValueFromVariable(mergedConfig, blockName, rawResult);
315
+ break;
316
+
317
+ case 'base':
318
+ rawResult = getValueFromObjectPath(baseConfig, finalPath);
319
+ result = getValueFromVariable(baseConfig, blockName, rawResult);
320
+ break;
321
+
322
+ default:
323
+ throw 'Unsupported source';
324
+ }
325
+
326
+ const animation = result?.lightbox?.animation || 'zoom';
327
+
328
+ const setBehavior = newValue => {
329
+ let newBehavior; // The user saves with Apply Globally option.
330
+
331
+ if (typeof newValue === 'object') {
332
+ newBehavior = newValue;
333
+ } else {
334
+ switch (newValue) {
335
+ case 'lightbox':
336
+ newBehavior = {
337
+ lightbox: {
338
+ enabled: true,
339
+ animation
340
+ }
341
+ };
342
+ break;
343
+
344
+ case 'fade':
345
+ newBehavior = {
346
+ lightbox: {
347
+ enabled: true,
348
+ animation: 'fade'
349
+ }
350
+ };
351
+ break;
352
+
353
+ case 'zoom':
354
+ newBehavior = {
355
+ lightbox: {
356
+ enabled: true,
357
+ animation: 'zoom'
358
+ }
359
+ };
360
+ break;
361
+
362
+ case '':
363
+ newBehavior = {
364
+ lightbox: {
365
+ enabled: false,
366
+ animation
367
+ }
368
+ };
369
+ break;
370
+
371
+ default:
372
+ break;
373
+ }
374
+ }
375
+
376
+ setUserConfig(currentConfig => setImmutably(currentConfig, finalPath.split('.'), newBehavior));
377
+ };
378
+
379
+ let behavior = '';
380
+ if (result === undefined) behavior = 'default';
381
+ if (result?.lightbox.enabled) behavior = 'lightbox';
382
+ return {
383
+ behavior,
384
+ inheritedBehaviors: result,
385
+ setBehavior
386
+ };
387
+ }
388
+ export function __experimentalUseHasBehaviorsPanel(settings, name, {
389
+ blockSupportOnly = false
390
+ } = {}) {
391
+ if (!settings?.behaviors) {
392
+ return false;
393
+ } // If every behavior is disabled on block supports, do not show the behaviors inspector control.
394
+
395
+
396
+ const hasSomeBlockSupport = Object.keys(settings?.behaviors).some(key => hasBlockSupport(name, `behaviors.${key}`));
397
+
398
+ if (blockSupportOnly) {
399
+ return hasSomeBlockSupport;
400
+ } // If every behavior is disabled, do not show the behaviors inspector control.
401
+
402
+
403
+ return Object.values(settings?.behaviors).some(value => value === true && hasSomeBlockSupport);
404
+ }
305
405
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/hooks.js"],"names":["fastDeepEqual","get","set","useContext","useCallback","useMemo","useSelect","store","blocksStore","_x","getValueFromVariable","getPresetVariableFromValue","GlobalStylesContext","unlock","EMPTY_CONFIG","settings","styles","VALID_SETTINGS","useGlobalStylesReset","user","config","setUserConfig","canReset","useGlobalSetting","propertyPath","blockName","source","configs","appendedBlockPath","appendedPropertyPath","contextualPath","globalPath","sourceKey","settingValue","configToUse","result","forEach","setting","value","setSetting","newValue","currentConfig","newUserConfig","JSON","parse","stringify","useGlobalStyle","path","shouldDecodeEncode","merged","mergedConfig","base","baseConfig","userConfig","appendedPath","finalPath","setStyle","rawResult","useSettingsForBlockElement","parentSettings","element","supportedStyles","supports","select","getSupportedStyles","getBlockType","updatedSettings","includes","typography","fontSizes","customFontSize","fontFamilies","color","text","background","button","heading","link","caption","gradients","customGradient","defaultDuotone","customDuotone","key","textColumns","layout","spacing","sides","Array","isArray","length","dimensions","minHeight","charAt","toUpperCase","slice","border","shadow","useColorsPerOrigin","customColors","palette","custom","themeColors","theme","defaultColors","default","shouldDisplayDefaultColors","defaultPalette","push","name","colors","useGradientsPerOrigin","customGradients","themeGradients","defaultGradients","shouldDisplayDefaultGradients"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\nimport { get, set } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, getPresetVariableFromValue } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_CONFIG = { settings: {}, styles: {} };\n\nconst VALID_SETTINGS = [\n\t'appearanceTools',\n\t'useRootPaddingAwareAlignments',\n\t'border.color',\n\t'border.radius',\n\t'border.style',\n\t'border.width',\n\t'shadow.presets',\n\t'shadow.defaultPresets',\n\t'color.background',\n\t'color.button',\n\t'color.caption',\n\t'color.custom',\n\t'color.customDuotone',\n\t'color.customGradient',\n\t'color.defaultDuotone',\n\t'color.defaultGradients',\n\t'color.defaultPalette',\n\t'color.duotone',\n\t'color.gradients',\n\t'color.heading',\n\t'color.link',\n\t'color.palette',\n\t'color.text',\n\t'custom',\n\t'dimensions.minHeight',\n\t'layout.contentSize',\n\t'layout.definitions',\n\t'layout.wideSize',\n\t'position.fixed',\n\t'position.sticky',\n\t'spacing.customSpacingSize',\n\t'spacing.spacingSizes',\n\t'spacing.spacingScale',\n\t'spacing.blockGap',\n\t'spacing.margin',\n\t'spacing.padding',\n\t'spacing.units',\n\t'typography.fluid',\n\t'typography.customFontSize',\n\t'typography.dropCap',\n\t'typography.fontFamilies',\n\t'typography.fontSizes',\n\t'typography.fontStyle',\n\t'typography.fontWeight',\n\t'typography.letterSpacing',\n\t'typography.lineHeight',\n\t'typography.textColumns',\n\t'typography.textDecoration',\n\t'typography.textTransform',\n\t'typography.writingMode',\n];\n\nexport const useGlobalStylesReset = () => {\n\tconst { user: config, setUserConfig } = useContext( GlobalStylesContext );\n\tconst canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );\n\treturn [\n\t\tcanReset,\n\t\tuseCallback(\n\t\t\t() => setUserConfig( () => EMPTY_CONFIG ),\n\t\t\t[ setUserConfig ]\n\t\t),\n\t];\n};\n\nexport function useGlobalSetting( propertyPath, blockName, source = 'all' ) {\n\tconst { setUserConfig, ...configs } = useContext( GlobalStylesContext );\n\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = propertyPath ? '.' + propertyPath : '';\n\tconst contextualPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\tconst globalPath = `settings${ appendedPropertyPath }`;\n\tconst sourceKey = source === 'all' ? 'merged' : source;\n\n\tconst settingValue = useMemo( () => {\n\t\tconst configToUse = configs[ sourceKey ];\n\t\tif ( ! configToUse ) {\n\t\t\tthrow 'Unsupported source';\n\t\t}\n\n\t\tif ( propertyPath ) {\n\t\t\treturn (\n\t\t\t\tget( configToUse, contextualPath ) ??\n\t\t\t\tget( configToUse, globalPath )\n\t\t\t);\n\t\t}\n\n\t\tconst result = {};\n\t\tVALID_SETTINGS.forEach( ( setting ) => {\n\t\t\tconst value =\n\t\t\t\tget(\n\t\t\t\t\tconfigToUse,\n\t\t\t\t\t`settings${ appendedBlockPath }.${ setting }`\n\t\t\t\t) ?? get( configToUse, `settings.${ setting }` );\n\t\t\tif ( value ) {\n\t\t\t\tset( result, setting, value );\n\t\t\t}\n\t\t} );\n\t\treturn result;\n\t}, [\n\t\tconfigs,\n\t\tsourceKey,\n\t\tpropertyPath,\n\t\tcontextualPath,\n\t\tglobalPath,\n\t\tappendedBlockPath,\n\t] );\n\n\tconst setSetting = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) => {\n\t\t\t// Deep clone `currentConfig` to avoid mutating it later.\n\t\t\tconst newUserConfig = JSON.parse( JSON.stringify( currentConfig ) );\n\t\t\tset( newUserConfig, contextualPath, newValue );\n\n\t\t\treturn newUserConfig;\n\t\t} );\n\t};\n\n\treturn [ settingValue, setSetting ];\n}\n\nexport function useGlobalStyle(\n\tpath,\n\tblockName,\n\tsource = 'all',\n\t{ shouldDecodeEncode = true } = {}\n) {\n\tconst {\n\t\tmerged: mergedConfig,\n\t\tbase: baseConfig,\n\t\tuser: userConfig,\n\t\tsetUserConfig,\n\t} = useContext( GlobalStylesContext );\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\n\tconst setStyle = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) => {\n\t\t\t// Deep clone `currentConfig` to avoid mutating it later.\n\t\t\tconst newUserConfig = JSON.parse( JSON.stringify( currentConfig ) );\n\t\t\tset(\n\t\t\t\tnewUserConfig,\n\t\t\t\tfinalPath,\n\t\t\t\tshouldDecodeEncode\n\t\t\t\t\t? getPresetVariableFromValue(\n\t\t\t\t\t\t\tmergedConfig.settings,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tnewValue\n\t\t\t\t\t )\n\t\t\t\t\t: newValue\n\t\t\t);\n\t\t\treturn newUserConfig;\n\t\t} );\n\t};\n\n\tlet rawResult, result;\n\tswitch ( source ) {\n\t\tcase 'all':\n\t\t\trawResult = get( mergedConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\trawResult = get( userConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'base':\n\t\t\trawResult = get( baseConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( baseConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow 'Unsupported source';\n\t}\n\n\treturn [ result, setStyle ];\n}\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\tif ( ! supportedStyles.includes( 'background' ) ) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\tif ( sides?.length ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tif ( ! supportedStyles.includes( 'minHeight' ) ) {\n\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\tminHeight: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/hooks.js"],"names":["fastDeepEqual","useContext","useCallback","useMemo","useSelect","store","blocksStore","hasBlockSupport","_x","getValueFromVariable","getPresetVariableFromValue","getValueFromObjectPath","setImmutably","GlobalStylesContext","unlock","EMPTY_CONFIG","settings","styles","behaviors","VALID_SETTINGS","useGlobalStylesReset","user","config","setUserConfig","canReset","useGlobalSetting","propertyPath","blockName","source","configs","appendedBlockPath","appendedPropertyPath","contextualPath","globalPath","sourceKey","settingValue","configToUse","result","forEach","setting","value","split","setSetting","newValue","currentConfig","useGlobalStyle","path","shouldDecodeEncode","merged","mergedConfig","base","baseConfig","userConfig","appendedPath","finalPath","setStyle","rawResult","useSettingsForBlockElement","parentSettings","element","supportedStyles","supports","select","getSupportedStyles","getBlockType","updatedSettings","includes","typography","fontSizes","customFontSize","fontFamilies","color","text","background","button","heading","link","caption","gradients","customGradient","defaultDuotone","customDuotone","key","textColumns","layout","spacing","sides","Array","isArray","length","dimensions","minHeight","charAt","toUpperCase","slice","border","shadow","useColorsPerOrigin","customColors","palette","custom","themeColors","theme","defaultColors","default","shouldDisplayDefaultColors","defaultPalette","push","name","colors","useGradientsPerOrigin","customGradients","themeGradients","defaultGradients","shouldDisplayDefaultGradients","__experimentalUseGlobalBehaviors","animation","lightbox","setBehavior","newBehavior","enabled","behavior","undefined","inheritedBehaviors","__experimentalUseHasBehaviorsPanel","blockSupportOnly","hasSomeBlockSupport","Object","keys","some","values"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore, hasBlockSupport } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, getPresetVariableFromValue } from './utils';\nimport { getValueFromObjectPath, setImmutably } from '../../utils/object';\nimport { GlobalStylesContext } from './context';\nimport { unlock } from '../../lock-unlock';\n\nconst EMPTY_CONFIG = { settings: {}, styles: {}, behaviors: {} };\n\nconst VALID_SETTINGS = [\n\t'appearanceTools',\n\t'behaviors',\n\t'useRootPaddingAwareAlignments',\n\t'border.color',\n\t'border.radius',\n\t'border.style',\n\t'border.width',\n\t'shadow.presets',\n\t'shadow.defaultPresets',\n\t'color.background',\n\t'color.button',\n\t'color.caption',\n\t'color.custom',\n\t'color.customDuotone',\n\t'color.customGradient',\n\t'color.defaultDuotone',\n\t'color.defaultGradients',\n\t'color.defaultPalette',\n\t'color.duotone',\n\t'color.gradients',\n\t'color.heading',\n\t'color.link',\n\t'color.palette',\n\t'color.text',\n\t'custom',\n\t'dimensions.minHeight',\n\t'layout.contentSize',\n\t'layout.definitions',\n\t'layout.wideSize',\n\t'position.fixed',\n\t'position.sticky',\n\t'spacing.customSpacingSize',\n\t'spacing.spacingSizes',\n\t'spacing.spacingScale',\n\t'spacing.blockGap',\n\t'spacing.margin',\n\t'spacing.padding',\n\t'spacing.units',\n\t'typography.fluid',\n\t'typography.customFontSize',\n\t'typography.dropCap',\n\t'typography.fontFamilies',\n\t'typography.fontSizes',\n\t'typography.fontStyle',\n\t'typography.fontWeight',\n\t'typography.letterSpacing',\n\t'typography.lineHeight',\n\t'typography.textColumns',\n\t'typography.textDecoration',\n\t'typography.textTransform',\n\t'typography.writingMode',\n];\n\nexport const useGlobalStylesReset = () => {\n\tconst { user: config, setUserConfig } = useContext( GlobalStylesContext );\n\tconst canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );\n\treturn [\n\t\tcanReset,\n\t\tuseCallback(\n\t\t\t() => setUserConfig( () => EMPTY_CONFIG ),\n\t\t\t[ setUserConfig ]\n\t\t),\n\t];\n};\n\nexport function useGlobalSetting( propertyPath, blockName, source = 'all' ) {\n\tconst { setUserConfig, ...configs } = useContext( GlobalStylesContext );\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = propertyPath ? '.' + propertyPath : '';\n\tconst contextualPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\tconst globalPath = `settings${ appendedPropertyPath }`;\n\tconst sourceKey = source === 'all' ? 'merged' : source;\n\n\tconst settingValue = useMemo( () => {\n\t\tconst configToUse = configs[ sourceKey ];\n\t\tif ( ! configToUse ) {\n\t\t\tthrow 'Unsupported source';\n\t\t}\n\n\t\tif ( propertyPath ) {\n\t\t\treturn (\n\t\t\t\tgetValueFromObjectPath( configToUse, contextualPath ) ??\n\t\t\t\tgetValueFromObjectPath( configToUse, globalPath )\n\t\t\t);\n\t\t}\n\n\t\tlet result = {};\n\t\tVALID_SETTINGS.forEach( ( setting ) => {\n\t\t\tconst value =\n\t\t\t\tgetValueFromObjectPath(\n\t\t\t\t\tconfigToUse,\n\t\t\t\t\t`settings${ appendedBlockPath }.${ setting }`\n\t\t\t\t) ??\n\t\t\t\tgetValueFromObjectPath( configToUse, `settings.${ setting }` );\n\t\t\tif ( value ) {\n\t\t\t\tresult = setImmutably( result, setting.split( '.' ), value );\n\t\t\t}\n\t\t} );\n\t\treturn result;\n\t}, [\n\t\tconfigs,\n\t\tsourceKey,\n\t\tpropertyPath,\n\t\tcontextualPath,\n\t\tglobalPath,\n\t\tappendedBlockPath,\n\t] );\n\n\tconst setSetting = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) =>\n\t\t\tsetImmutably( currentConfig, contextualPath.split( '.' ), newValue )\n\t\t);\n\t};\n\treturn [ settingValue, setSetting ];\n}\n\nexport function useGlobalStyle(\n\tpath,\n\tblockName,\n\tsource = 'all',\n\t{ shouldDecodeEncode = true } = {}\n) {\n\tconst {\n\t\tmerged: mergedConfig,\n\t\tbase: baseConfig,\n\t\tuser: userConfig,\n\t\tsetUserConfig,\n\t} = useContext( GlobalStylesContext );\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\n\tconst setStyle = ( newValue ) => {\n\t\tsetUserConfig( ( currentConfig ) =>\n\t\t\tsetImmutably(\n\t\t\t\tcurrentConfig,\n\t\t\t\tfinalPath.split( '.' ),\n\t\t\t\tshouldDecodeEncode\n\t\t\t\t\t? getPresetVariableFromValue(\n\t\t\t\t\t\t\tmergedConfig.settings,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tnewValue\n\t\t\t\t\t )\n\t\t\t\t\t: newValue\n\t\t\t)\n\t\t);\n\t};\n\n\tlet rawResult, result;\n\tswitch ( source ) {\n\t\tcase 'all':\n\t\t\trawResult = getValueFromObjectPath( mergedConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\trawResult = getValueFromObjectPath( userConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( mergedConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tcase 'base':\n\t\t\trawResult = getValueFromObjectPath( baseConfig, finalPath );\n\t\t\tresult = shouldDecodeEncode\n\t\t\t\t? getValueFromVariable( baseConfig, blockName, rawResult )\n\t\t\t\t: rawResult;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow 'Unsupported source';\n\t}\n\n\treturn [ result, setStyle ];\n}\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\tif ( ! supportedStyles.includes( 'background' ) ) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\t// Check if spacing type is supported before adding sides.\n\t\t\tif ( sides?.length && updatedSettings.spacing?.[ key ] ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tif ( ! supportedStyles.includes( 'minHeight' ) ) {\n\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\tminHeight: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n\nexport function __experimentalUseGlobalBehaviors( blockName, source = 'all' ) {\n\tconst {\n\t\tmerged: mergedConfig,\n\t\tbase: baseConfig,\n\t\tuser: userConfig,\n\t\tsetUserConfig,\n\t} = useContext( GlobalStylesContext );\n\tconst finalPath = ! blockName\n\t\t? `behaviors`\n\t\t: `behaviors.blocks.${ blockName }`;\n\n\tlet rawResult, result;\n\tswitch ( source ) {\n\t\tcase 'all':\n\t\t\trawResult = getValueFromObjectPath( mergedConfig, finalPath );\n\t\t\tresult = getValueFromVariable( mergedConfig, blockName, rawResult );\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\trawResult = getValueFromObjectPath( userConfig, finalPath );\n\t\t\tresult = getValueFromVariable( mergedConfig, blockName, rawResult );\n\t\t\tbreak;\n\t\tcase 'base':\n\t\t\trawResult = getValueFromObjectPath( baseConfig, finalPath );\n\t\t\tresult = getValueFromVariable( baseConfig, blockName, rawResult );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow 'Unsupported source';\n\t}\n\n\tconst animation = result?.lightbox?.animation || 'zoom';\n\n\tconst setBehavior = ( newValue ) => {\n\t\tlet newBehavior;\n\t\t// The user saves with Apply Globally option.\n\t\tif ( typeof newValue === 'object' ) {\n\t\t\tnewBehavior = newValue;\n\t\t} else {\n\t\t\tswitch ( newValue ) {\n\t\t\t\tcase 'lightbox':\n\t\t\t\t\tnewBehavior = {\n\t\t\t\t\t\tlightbox: {\n\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\tanimation,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fade':\n\t\t\t\t\tnewBehavior = {\n\t\t\t\t\t\tlightbox: {\n\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\tanimation: 'fade',\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'zoom':\n\t\t\t\t\tnewBehavior = {\n\t\t\t\t\t\tlightbox: {\n\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\tanimation: 'zoom',\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase '':\n\t\t\t\t\tnewBehavior = {\n\t\t\t\t\t\tlightbox: {\n\t\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\t\tanimation,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsetUserConfig( ( currentConfig ) =>\n\t\t\tsetImmutably( currentConfig, finalPath.split( '.' ), newBehavior )\n\t\t);\n\t};\n\tlet behavior = '';\n\tif ( result === undefined ) behavior = 'default';\n\tif ( result?.lightbox.enabled ) behavior = 'lightbox';\n\n\treturn { behavior, inheritedBehaviors: result, setBehavior };\n}\n\nexport function __experimentalUseHasBehaviorsPanel(\n\tsettings,\n\tname,\n\t{ blockSupportOnly = false } = {}\n) {\n\tif ( ! settings?.behaviors ) {\n\t\treturn false;\n\t}\n\n\t// If every behavior is disabled on block supports, do not show the behaviors inspector control.\n\tconst hasSomeBlockSupport = Object.keys( settings?.behaviors ).some(\n\t\t( key ) => hasBlockSupport( name, `behaviors.${ key }` )\n\t);\n\n\tif ( blockSupportOnly ) {\n\t\treturn hasSomeBlockSupport;\n\t}\n\n\t// If every behavior is disabled, do not show the behaviors inspector control.\n\treturn Object.values( settings?.behaviors ).some(\n\t\t( value ) => value === true && hasSomeBlockSupport\n\t);\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { useGlobalStylesReset, useGlobalSetting, useGlobalStyle, useSettingsForBlockElement } from './hooks';
1
+ export { __experimentalUseGlobalBehaviors, __experimentalUseHasBehaviorsPanel, useGlobalStylesReset, useGlobalSetting, useGlobalStyle, useSettingsForBlockElement } from './hooks';
2
2
  export { getBlockCSSSelector } from './get-block-css-selector';
3
3
  export { getLayoutStyles, useGlobalStylesOutput, useGlobalStylesOutputWithConfig } from './use-global-styles-output';
4
4
  export { GlobalStylesContext } from './context';
@@ -8,6 +8,7 @@ export { default as BorderPanel, useHasBorderPanel } from './border-panel';
8
8
  export { default as ColorPanel, useHasColorPanel } from './color-panel';
9
9
  export { default as EffectsPanel, useHasEffectsPanel } from './effects-panel';
10
10
  export { default as FiltersPanel, useHasFiltersPanel } from './filters-panel';
11
+ export { default as __experimentalBehaviorsPanel } from './behaviors-panel';
11
12
  export { default as AdvancedPanel } from './advanced-panel';
12
13
  export { areGlobalStyleConfigsEqual } from './utils';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/index.js"],"names":["useGlobalStylesReset","useGlobalSetting","useGlobalStyle","useSettingsForBlockElement","getBlockCSSSelector","getLayoutStyles","useGlobalStylesOutput","useGlobalStylesOutputWithConfig","GlobalStylesContext","default","TypographyPanel","useHasTypographyPanel","DimensionsPanel","useHasDimensionsPanel","BorderPanel","useHasBorderPanel","ColorPanel","useHasColorPanel","EffectsPanel","useHasEffectsPanel","FiltersPanel","useHasFiltersPanel","AdvancedPanel","areGlobalStyleConfigsEqual"],"mappings":"AAAA,SACCA,oBADD,EAECC,gBAFD,EAGCC,cAHD,EAICC,0BAJD,QAKO,SALP;AAMA,SAASC,mBAAT,QAAoC,0BAApC;AACA,SACCC,eADD,EAECC,qBAFD,EAGCC,+BAHD,QAIO,4BAJP;AAKA,SAASC,mBAAT,QAAoC,WAApC;AACA,SACCC,OAAO,IAAIC,eADZ,EAECC,qBAFD,QAGO,oBAHP;AAIA,SACCF,OAAO,IAAIG,eADZ,EAECC,qBAFD,QAGO,oBAHP;AAIA,SAASJ,OAAO,IAAIK,WAApB,EAAiCC,iBAAjC,QAA0D,gBAA1D;AACA,SAASN,OAAO,IAAIO,UAApB,EAAgCC,gBAAhC,QAAwD,eAAxD;AACA,SAASR,OAAO,IAAIS,YAApB,EAAkCC,kBAAlC,QAA4D,iBAA5D;AACA,SAASV,OAAO,IAAIW,YAApB,EAAkCC,kBAAlC,QAA4D,iBAA5D;AACA,SAASZ,OAAO,IAAIa,aAApB,QAAyC,kBAAzC;AACA,SAASC,0BAAT,QAA2C,SAA3C","sourcesContent":["export {\n\tuseGlobalStylesReset,\n\tuseGlobalSetting,\n\tuseGlobalStyle,\n\tuseSettingsForBlockElement,\n} from './hooks';\nexport { getBlockCSSSelector } from './get-block-css-selector';\nexport {\n\tgetLayoutStyles,\n\tuseGlobalStylesOutput,\n\tuseGlobalStylesOutputWithConfig,\n} from './use-global-styles-output';\nexport { GlobalStylesContext } from './context';\nexport {\n\tdefault as TypographyPanel,\n\tuseHasTypographyPanel,\n} from './typography-panel';\nexport {\n\tdefault as DimensionsPanel,\n\tuseHasDimensionsPanel,\n} from './dimensions-panel';\nexport { default as BorderPanel, useHasBorderPanel } from './border-panel';\nexport { default as ColorPanel, useHasColorPanel } from './color-panel';\nexport { default as EffectsPanel, useHasEffectsPanel } from './effects-panel';\nexport { default as FiltersPanel, useHasFiltersPanel } from './filters-panel';\nexport { default as AdvancedPanel } from './advanced-panel';\nexport { areGlobalStyleConfigsEqual } from './utils';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/index.js"],"names":["__experimentalUseGlobalBehaviors","__experimentalUseHasBehaviorsPanel","useGlobalStylesReset","useGlobalSetting","useGlobalStyle","useSettingsForBlockElement","getBlockCSSSelector","getLayoutStyles","useGlobalStylesOutput","useGlobalStylesOutputWithConfig","GlobalStylesContext","default","TypographyPanel","useHasTypographyPanel","DimensionsPanel","useHasDimensionsPanel","BorderPanel","useHasBorderPanel","ColorPanel","useHasColorPanel","EffectsPanel","useHasEffectsPanel","FiltersPanel","useHasFiltersPanel","__experimentalBehaviorsPanel","AdvancedPanel","areGlobalStyleConfigsEqual"],"mappings":"AAAA,SACCA,gCADD,EAECC,kCAFD,EAGCC,oBAHD,EAICC,gBAJD,EAKCC,cALD,EAMCC,0BAND,QAOO,SAPP;AAQA,SAASC,mBAAT,QAAoC,0BAApC;AACA,SACCC,eADD,EAECC,qBAFD,EAGCC,+BAHD,QAIO,4BAJP;AAKA,SAASC,mBAAT,QAAoC,WAApC;AACA,SACCC,OAAO,IAAIC,eADZ,EAECC,qBAFD,QAGO,oBAHP;AAIA,SACCF,OAAO,IAAIG,eADZ,EAECC,qBAFD,QAGO,oBAHP;AAIA,SAASJ,OAAO,IAAIK,WAApB,EAAiCC,iBAAjC,QAA0D,gBAA1D;AACA,SAASN,OAAO,IAAIO,UAApB,EAAgCC,gBAAhC,QAAwD,eAAxD;AACA,SAASR,OAAO,IAAIS,YAApB,EAAkCC,kBAAlC,QAA4D,iBAA5D;AACA,SAASV,OAAO,IAAIW,YAApB,EAAkCC,kBAAlC,QAA4D,iBAA5D;AACA,SAASZ,OAAO,IAAIa,4BAApB,QAAwD,mBAAxD;AACA,SAASb,OAAO,IAAIc,aAApB,QAAyC,kBAAzC;AACA,SAASC,0BAAT,QAA2C,SAA3C","sourcesContent":["export {\n\t__experimentalUseGlobalBehaviors,\n\t__experimentalUseHasBehaviorsPanel,\n\tuseGlobalStylesReset,\n\tuseGlobalSetting,\n\tuseGlobalStyle,\n\tuseSettingsForBlockElement,\n} from './hooks';\nexport { getBlockCSSSelector } from './get-block-css-selector';\nexport {\n\tgetLayoutStyles,\n\tuseGlobalStylesOutput,\n\tuseGlobalStylesOutputWithConfig,\n} from './use-global-styles-output';\nexport { GlobalStylesContext } from './context';\nexport {\n\tdefault as TypographyPanel,\n\tuseHasTypographyPanel,\n} from './typography-panel';\nexport {\n\tdefault as DimensionsPanel,\n\tuseHasDimensionsPanel,\n} from './dimensions-panel';\nexport { default as BorderPanel, useHasBorderPanel } from './border-panel';\nexport { default as ColorPanel, useHasColorPanel } from './color-panel';\nexport { default as EffectsPanel, useHasEffectsPanel } from './effects-panel';\nexport { default as FiltersPanel, useHasFiltersPanel } from './filters-panel';\nexport { default as __experimentalBehaviorsPanel } from './behaviors-panel';\nexport { default as AdvancedPanel } from './advanced-panel';\nexport { areGlobalStyleConfigsEqual } from './utils';\n"]}
@@ -96,6 +96,22 @@ function useHasTextColumnsControl(settings) {
96
96
  return settings?.typography?.textColumns;
97
97
  }
98
98
 
99
+ function getUniqueFontSizesBySlug(settings) {
100
+ var _settings$typography$2, _fontSizesPerOrigin$c2, _fontSizesPerOrigin$t2, _fontSizesPerOrigin$d2;
101
+
102
+ const fontSizesPerOrigin = (_settings$typography$2 = settings?.typography?.fontSizes) !== null && _settings$typography$2 !== void 0 ? _settings$typography$2 : {};
103
+ const fontSizes = [].concat((_fontSizesPerOrigin$c2 = fontSizesPerOrigin?.custom) !== null && _fontSizesPerOrigin$c2 !== void 0 ? _fontSizesPerOrigin$c2 : []).concat((_fontSizesPerOrigin$t2 = fontSizesPerOrigin?.theme) !== null && _fontSizesPerOrigin$t2 !== void 0 ? _fontSizesPerOrigin$t2 : []).concat((_fontSizesPerOrigin$d2 = fontSizesPerOrigin.default) !== null && _fontSizesPerOrigin$d2 !== void 0 ? _fontSizesPerOrigin$d2 : []);
104
+ return fontSizes.reduce((acc, currentSize) => {
105
+ if (!acc.some(({
106
+ slug
107
+ }) => slug === currentSize.slug)) {
108
+ acc.push(currentSize);
109
+ }
110
+
111
+ return acc;
112
+ }, []);
113
+ }
114
+
99
115
  function TypographyToolsPanel({
100
116
  resetAllFilter,
101
117
  onChange,
@@ -135,7 +151,7 @@ export default function TypographyPanel({
135
151
  panelId,
136
152
  defaultControls = DEFAULT_CONTROLS
137
153
  }) {
138
- var _fontFamiliesPerOrigi4, _fontFamiliesPerOrigi5, _fontFamiliesPerOrigi6, _settings$typography$2, _fontSizesPerOrigin$c2, _fontSizesPerOrigin$t2, _fontSizesPerOrigin$d2;
154
+ var _fontFamiliesPerOrigi4, _fontFamiliesPerOrigi5, _fontFamiliesPerOrigi6;
139
155
 
140
156
  const decodeValue = rawValue => getValueFromVariable({
141
157
  settings
@@ -161,8 +177,7 @@ export default function TypographyPanel({
161
177
 
162
178
  const hasFontSizeEnabled = useHasFontSizeControl(settings);
163
179
  const disableCustomFontSizes = !settings?.typography?.customFontSize;
164
- const fontSizesPerOrigin = (_settings$typography$2 = settings?.typography?.fontSizes) !== null && _settings$typography$2 !== void 0 ? _settings$typography$2 : {};
165
- const fontSizes = [].concat((_fontSizesPerOrigin$c2 = fontSizesPerOrigin?.custom) !== null && _fontSizesPerOrigin$c2 !== void 0 ? _fontSizesPerOrigin$c2 : []).concat((_fontSizesPerOrigin$t2 = fontSizesPerOrigin?.theme) !== null && _fontSizesPerOrigin$t2 !== void 0 ? _fontSizesPerOrigin$t2 : []).concat((_fontSizesPerOrigin$d2 = fontSizesPerOrigin.default) !== null && _fontSizesPerOrigin$d2 !== void 0 ? _fontSizesPerOrigin$d2 : []);
180
+ const fontSizes = getUniqueFontSizesBySlug(settings);
166
181
  const fontSize = decodeValue(inheritedValue?.typography?.fontSize);
167
182
 
168
183
  const setFontSize = (newValue, metadata) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"names":["FontSizePicker","__experimentalNumberControl","NumberControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","useCallback","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextTransformControl","TextDecorationControl","WritingModeControl","getValueFromVariable","setImmutably","MIN_TEXT_COLUMNS","MAX_TEXT_COLUMNS","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasWritingMode","useHasWritingModeControl","hasTextColumns","useHasTextColumnsControl","hasFontSize","useHasFontSizeControl","disableCustomFontSizes","typography","customFontSize","fontSizesPerOrigin","fontSizes","concat","custom","theme","default","length","fontFamiliesPerOrigin","fontFamilies","sort","a","b","name","slug","localeCompare","lineHeight","hasFontStyles","fontStyle","hasFontWeights","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textDecoration","writingMode","textColumns","TypographyToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","setFontFamily","newValue","find","f","undefined","resetFontFamily","hasFontSizeEnabled","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextColumnsControl","setTextColumns","resetTextColumns","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","hasWritingModeControl","setWritingMode","resetWritingMode","previousValue"],"mappings":"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","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 } 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 TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport WritingModeControl from '../writing-mode-control';\nimport { getValueFromVariable } 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 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\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration ||\n\t\thasWritingMode ||\n\t\thasTextColumns\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes = []\n\t\t.concat( fontSizesPerOrigin?.custom ?? [] )\n\t\t.concat( fontSizesPerOrigin?.theme ?? [] )\n\t\t.concat( fontSizesPerOrigin.default ?? [] );\n\treturn !! fontSizes?.length || ! disableCustomFontSizes;\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies = []\n\t\t.concat( fontFamiliesPerOrigin?.custom ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.theme ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.default ?? [] )\n\t\t.sort( ( a, b ) =>\n\t\t\t( a?.name || a?.slug ).localeCompare( b?.name || a?.slug )\n\t\t);\n\treturn !! fontFamilies?.length;\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! hasFontWeights ) {\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 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\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>\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\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 fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies = []\n\t\t.concat( fontFamiliesPerOrigin?.custom ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.theme ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.default ?? [] );\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\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 fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes = []\n\t\t.concat( fontSizesPerOrigin?.custom ?? [] )\n\t\t.concat( fontSizesPerOrigin?.theme ?? [] )\n\t\t.concat( fontSizesPerOrigin.default ?? [] );\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\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 family' ) }\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={ __( 'Font 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={ fontSizes }\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\t__nextHasNoMarginBottom\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={ __( 'Text 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={ __( 'Text 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={ __( 'Text 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={ __( 'Text 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</Wrapper>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"names":["FontSizePicker","__experimentalNumberControl","NumberControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","useCallback","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextTransformControl","TextDecorationControl","WritingModeControl","getValueFromVariable","setImmutably","MIN_TEXT_COLUMNS","MAX_TEXT_COLUMNS","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasWritingMode","useHasWritingModeControl","hasTextColumns","useHasTextColumnsControl","hasFontSize","useHasFontSizeControl","disableCustomFontSizes","typography","customFontSize","fontSizesPerOrigin","fontSizes","concat","custom","theme","default","length","fontFamiliesPerOrigin","fontFamilies","sort","a","b","name","slug","localeCompare","lineHeight","hasFontStyles","fontStyle","hasFontWeights","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textDecoration","writingMode","textColumns","getUniqueFontSizesBySlug","reduce","acc","currentSize","some","push","TypographyToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","setFontFamily","newValue","find","f","undefined","resetFontFamily","hasFontSizeEnabled","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextColumnsControl","setTextColumns","resetTextColumns","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","hasWritingModeControl","setWritingMode","resetWritingMode","previousValue"],"mappings":"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","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 } 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 TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport WritingModeControl from '../writing-mode-control';\nimport { getValueFromVariable } 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 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\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration ||\n\t\thasWritingMode ||\n\t\thasTextColumns\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes = []\n\t\t.concat( fontSizesPerOrigin?.custom ?? [] )\n\t\t.concat( fontSizesPerOrigin?.theme ?? [] )\n\t\t.concat( fontSizesPerOrigin.default ?? [] );\n\treturn !! fontSizes?.length || ! disableCustomFontSizes;\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies = []\n\t\t.concat( fontFamiliesPerOrigin?.custom ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.theme ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.default ?? [] )\n\t\t.sort( ( a, b ) =>\n\t\t\t( a?.name || a?.slug ).localeCompare( b?.name || a?.slug )\n\t\t);\n\treturn !! fontFamilies?.length;\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! hasFontWeights ) {\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 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\nfunction getUniqueFontSizesBySlug( settings ) {\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes = []\n\t\t.concat( fontSizesPerOrigin?.custom ?? [] )\n\t\t.concat( fontSizesPerOrigin?.theme ?? [] )\n\t\t.concat( fontSizesPerOrigin.default ?? [] );\n\n\treturn fontSizes.reduce( ( acc, currentSize ) => {\n\t\tif ( ! acc.some( ( { slug } ) => slug === currentSize.slug ) ) {\n\t\t\tacc.push( currentSize );\n\t\t}\n\t\treturn acc;\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>\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\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 fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies = []\n\t\t.concat( fontFamiliesPerOrigin?.custom ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.theme ?? [] )\n\t\t.concat( fontFamiliesPerOrigin?.default ?? [] );\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\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 fontSizes = getUniqueFontSizesBySlug( 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\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 family' ) }\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={ __( 'Font 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={ fontSizes }\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\t__nextHasNoMarginBottom\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={ __( 'Text 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={ __( 'Text 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={ __( 'Text 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={ __( 'Text 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</Wrapper>\n\t);\n}\n"]}