@wordpress/block-editor 16.0.0 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +8 -0
  3. package/build/components/alignment-control/ui.cjs +2 -4
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +40 -10
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +5 -3
  8. package/build/components/block-alignment-control/ui.cjs.map +2 -2
  9. package/build/components/block-inspector/index.cjs +73 -46
  10. package/build/components/block-inspector/index.cjs.map +2 -2
  11. package/build/components/block-list/block-html.cjs +4 -1
  12. package/build/components/block-list/block-html.cjs.map +2 -2
  13. package/build/components/block-list/use-block-props/index.cjs +5 -2
  14. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  15. package/build/components/block-list/use-block-props/use-focus-handler.cjs +2 -3
  16. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  17. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
  18. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
  19. package/build/components/block-parent-selector/index.cjs +2 -2
  20. package/build/components/block-parent-selector/index.cjs.map +2 -2
  21. package/build/components/block-toolbar/switch-section-style.cjs +4 -2
  22. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  23. package/build/components/block-tools/empty-block-inserter.cjs +2 -7
  24. package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
  25. package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
  26. package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
  27. package/build/components/border-radius-control/utils.cjs +8 -58
  28. package/build/components/border-radius-control/utils.cjs.map +2 -2
  29. package/build/components/colors-gradients/control.cjs +5 -3
  30. package/build/components/colors-gradients/control.cjs.map +2 -2
  31. package/build/components/dimension-control/index.cjs +30 -20
  32. package/build/components/dimension-control/index.cjs.map +3 -3
  33. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
  34. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  35. package/build/components/editor-styles/index.cjs +9 -1
  36. package/build/components/editor-styles/index.cjs.map +2 -2
  37. package/build/components/global-styles/background-panel.cjs +66 -25
  38. package/build/components/global-styles/background-panel.cjs.map +3 -3
  39. package/build/components/global-styles/border-panel.cjs +153 -55
  40. package/build/components/global-styles/border-panel.cjs.map +3 -3
  41. package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
  42. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
  43. package/build/components/global-styles/color-panel.cjs +63 -17
  44. package/build/components/global-styles/color-panel.cjs.map +2 -2
  45. package/build/components/global-styles/dimensions-panel.cjs +242 -64
  46. package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
  47. package/build/components/global-styles/filters-panel.cjs +59 -20
  48. package/build/components/global-styles/filters-panel.cjs.map +3 -3
  49. package/build/components/global-styles/hooks.cjs +4 -1
  50. package/build/components/global-styles/hooks.cjs.map +2 -2
  51. package/build/components/global-styles/inheritance/index.cjs +142 -0
  52. package/build/components/global-styles/inheritance/index.cjs.map +7 -0
  53. package/build/components/global-styles/inherited-value-context.cjs +173 -0
  54. package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
  55. package/build/components/global-styles/shadow-panel-components.cjs +38 -20
  56. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  57. package/build/components/global-styles/state-control.cjs +1 -1
  58. package/build/components/global-styles/state-control.cjs.map +2 -2
  59. package/build/components/global-styles/typography-panel.cjs +271 -78
  60. package/build/components/global-styles/typography-panel.cjs.map +3 -3
  61. package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
  62. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
  63. package/build/components/line-height-control/index.cjs +1 -1
  64. package/build/components/line-height-control/index.cjs.map +2 -2
  65. package/build/components/link-control/index.cjs +3 -1
  66. package/build/components/link-control/index.cjs.map +2 -2
  67. package/build/components/preset-input-control/index.cjs +2 -1
  68. package/build/components/preset-input-control/index.cjs.map +2 -2
  69. package/build/components/provider/block-refs-provider.cjs +8 -2
  70. package/build/components/provider/block-refs-provider.cjs.map +2 -2
  71. package/build/components/provider/index.cjs +1 -1
  72. package/build/components/provider/index.cjs.map +2 -2
  73. package/build/components/provider/use-block-sync.cjs +18 -6
  74. package/build/components/provider/use-block-sync.cjs.map +2 -2
  75. package/build/components/provider/use-media-upload-settings.cjs +3 -1
  76. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  77. package/build/components/rich-text/index.cjs +23 -13
  78. package/build/components/rich-text/index.cjs.map +2 -2
  79. package/build/components/spacing-sizes-control/utils.cjs +6 -19
  80. package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
  81. package/build/components/text-indent-control/index.cjs +8 -2
  82. package/build/components/text-indent-control/index.cjs.map +2 -2
  83. package/build/components/url-input/index.cjs +303 -344
  84. package/build/components/url-input/index.cjs.map +3 -3
  85. package/build/components/writing-flow/index.cjs +2 -0
  86. package/build/components/writing-flow/index.cjs.map +3 -3
  87. package/build/components/writing-flow/use-arrow-nav.cjs +24 -1
  88. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  89. package/build/components/writing-flow/use-click-selection.cjs +28 -2
  90. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  91. package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
  92. package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
  93. package/build/components/writing-flow/use-editable-root.cjs +5 -42
  94. package/build/components/writing-flow/use-editable-root.cjs.map +2 -2
  95. package/build/components/writing-flow/use-home-end.cjs +1 -1
  96. package/build/components/writing-flow/use-home-end.cjs.map +2 -2
  97. package/build/components/writing-flow/use-selection-observer.cjs +17 -13
  98. package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
  99. package/build/components/writing-flow/utils.cjs +3 -14
  100. package/build/components/writing-flow/utils.cjs.map +2 -2
  101. package/build/hooks/background.cjs +13 -10
  102. package/build/hooks/background.cjs.map +2 -2
  103. package/build/hooks/block-style-variation.cjs +4 -45
  104. package/build/hooks/block-style-variation.cjs.map +3 -3
  105. package/build/hooks/border.cjs +19 -4
  106. package/build/hooks/border.cjs.map +2 -2
  107. package/build/hooks/custom-css.cjs +6 -2
  108. package/build/hooks/custom-css.cjs.map +2 -2
  109. package/build/hooks/dimensions.cjs +15 -4
  110. package/build/hooks/dimensions.cjs.map +2 -2
  111. package/build/hooks/duotone.cjs +26 -14
  112. package/build/hooks/duotone.cjs.map +3 -3
  113. package/build/hooks/elements.cjs +14 -4
  114. package/build/hooks/elements.cjs.map +2 -2
  115. package/build/hooks/line-height.cjs +1 -2
  116. package/build/hooks/line-height.cjs.map +2 -2
  117. package/build/hooks/typography.cjs +13 -4
  118. package/build/hooks/typography.cjs.map +2 -2
  119. package/build/private-apis.cjs +9 -5
  120. package/build/private-apis.cjs.map +3 -3
  121. package/build/store/actions.cjs +9 -4
  122. package/build/store/actions.cjs.map +2 -2
  123. package/build/store/private-selectors.cjs +28 -1
  124. package/build/store/private-selectors.cjs.map +2 -2
  125. package/build/store/reducer.cjs +6 -6
  126. package/build/store/reducer.cjs.map +2 -2
  127. package/build/store/selectors.cjs +23 -0
  128. package/build/store/selectors.cjs.map +2 -2
  129. package/build/utils/native-undo.cjs +55 -0
  130. package/build/utils/native-undo.cjs.map +7 -0
  131. package/build-module/components/alignment-control/ui.mjs +2 -4
  132. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  133. package/build-module/components/background-image-control/index.mjs +43 -10
  134. package/build-module/components/background-image-control/index.mjs.map +2 -2
  135. package/build-module/components/block-alignment-control/ui.mjs +5 -3
  136. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  137. package/build-module/components/block-inspector/index.mjs +74 -46
  138. package/build-module/components/block-inspector/index.mjs.map +2 -2
  139. package/build-module/components/block-list/block-html.mjs +4 -1
  140. package/build-module/components/block-list/block-html.mjs.map +2 -2
  141. package/build-module/components/block-list/use-block-props/index.mjs +5 -2
  142. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  143. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +2 -3
  144. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  145. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
  146. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
  147. package/build-module/components/block-parent-selector/index.mjs +2 -2
  148. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  149. package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
  150. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  151. package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
  152. package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
  153. package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
  154. package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
  155. package/build-module/components/border-radius-control/utils.mjs +11 -53
  156. package/build-module/components/border-radius-control/utils.mjs.map +2 -2
  157. package/build-module/components/colors-gradients/control.mjs +5 -3
  158. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  159. package/build-module/components/dimension-control/index.mjs +30 -20
  160. package/build-module/components/dimension-control/index.mjs.map +2 -2
  161. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
  162. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  163. package/build-module/components/editor-styles/index.mjs +9 -1
  164. package/build-module/components/editor-styles/index.mjs.map +2 -2
  165. package/build-module/components/global-styles/background-panel.mjs +71 -29
  166. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  167. package/build-module/components/global-styles/border-panel.mjs +157 -56
  168. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  169. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
  170. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  171. package/build-module/components/global-styles/color-panel.mjs +63 -17
  172. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  173. package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
  174. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  175. package/build-module/components/global-styles/filters-panel.mjs +64 -21
  176. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  177. package/build-module/components/global-styles/hooks.mjs +4 -1
  178. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  179. package/build-module/components/global-styles/inheritance/index.mjs +108 -0
  180. package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
  181. package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
  182. package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
  183. package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
  184. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  185. package/build-module/components/global-styles/state-control.mjs +1 -1
  186. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  187. package/build-module/components/global-styles/typography-panel.mjs +276 -79
  188. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  189. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
  190. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  191. package/build-module/components/line-height-control/index.mjs +1 -1
  192. package/build-module/components/line-height-control/index.mjs.map +2 -2
  193. package/build-module/components/link-control/index.mjs +4 -2
  194. package/build-module/components/link-control/index.mjs.map +2 -2
  195. package/build-module/components/preset-input-control/index.mjs +2 -1
  196. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  197. package/build-module/components/provider/block-refs-provider.mjs +8 -2
  198. package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
  199. package/build-module/components/provider/index.mjs +1 -1
  200. package/build-module/components/provider/index.mjs.map +2 -2
  201. package/build-module/components/provider/use-block-sync.mjs +18 -6
  202. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  203. package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
  204. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  205. package/build-module/components/rich-text/index.mjs +28 -14
  206. package/build-module/components/rich-text/index.mjs.map +2 -2
  207. package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
  208. package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
  209. package/build-module/components/text-indent-control/index.mjs +8 -2
  210. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  211. package/build-module/components/url-input/index.mjs +306 -353
  212. package/build-module/components/url-input/index.mjs.map +2 -2
  213. package/build-module/components/writing-flow/index.mjs +2 -0
  214. package/build-module/components/writing-flow/index.mjs.map +2 -2
  215. package/build-module/components/writing-flow/use-arrow-nav.mjs +24 -1
  216. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  217. package/build-module/components/writing-flow/use-click-selection.mjs +28 -2
  218. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  219. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
  220. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
  221. package/build-module/components/writing-flow/use-editable-root.mjs +5 -37
  222. package/build-module/components/writing-flow/use-editable-root.mjs.map +2 -2
  223. package/build-module/components/writing-flow/use-home-end.mjs +1 -1
  224. package/build-module/components/writing-flow/use-home-end.mjs.map +2 -2
  225. package/build-module/components/writing-flow/use-selection-observer.mjs +18 -14
  226. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  227. package/build-module/components/writing-flow/utils.mjs +2 -11
  228. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  229. package/build-module/hooks/background.mjs +13 -10
  230. package/build-module/hooks/background.mjs.map +2 -2
  231. package/build-module/hooks/block-style-variation.mjs +8 -44
  232. package/build-module/hooks/block-style-variation.mjs.map +2 -2
  233. package/build-module/hooks/border.mjs +19 -4
  234. package/build-module/hooks/border.mjs.map +2 -2
  235. package/build-module/hooks/custom-css.mjs +7 -3
  236. package/build-module/hooks/custom-css.mjs.map +2 -2
  237. package/build-module/hooks/dimensions.mjs +15 -4
  238. package/build-module/hooks/dimensions.mjs.map +2 -2
  239. package/build-module/hooks/duotone.mjs +20 -9
  240. package/build-module/hooks/duotone.mjs.map +2 -2
  241. package/build-module/hooks/elements.mjs +14 -4
  242. package/build-module/hooks/elements.mjs.map +2 -2
  243. package/build-module/hooks/line-height.mjs +1 -2
  244. package/build-module/hooks/line-height.mjs.map +2 -2
  245. package/build-module/hooks/typography.mjs +13 -4
  246. package/build-module/hooks/typography.mjs.map +2 -2
  247. package/build-module/private-apis.mjs +7 -3
  248. package/build-module/private-apis.mjs.map +2 -2
  249. package/build-module/store/actions.mjs +9 -4
  250. package/build-module/store/actions.mjs.map +2 -2
  251. package/build-module/store/private-selectors.mjs +29 -1
  252. package/build-module/store/private-selectors.mjs.map +2 -2
  253. package/build-module/store/reducer.mjs +6 -6
  254. package/build-module/store/reducer.mjs.map +2 -2
  255. package/build-module/store/selectors.mjs +23 -0
  256. package/build-module/store/selectors.mjs.map +2 -2
  257. package/build-module/utils/native-undo.mjs +29 -0
  258. package/build-module/utils/native-undo.mjs.map +7 -0
  259. package/build-style/content-rtl.css +10 -18
  260. package/build-style/content.css +10 -18
  261. package/build-style/style-rtl.css +150 -7
  262. package/build-style/style.css +150 -7
  263. package/package.json +40 -41
  264. package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
  265. package/src/components/alignment-control/ui.js +2 -4
  266. package/src/components/background-image-control/index.js +74 -37
  267. package/src/components/background-image-control/style.scss +13 -4
  268. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
  269. package/src/components/block-alignment-control/test/index.js +1 -1
  270. package/src/components/block-alignment-control/ui.js +4 -2
  271. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
  272. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  273. package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
  274. package/src/components/block-inspector/index.js +60 -31
  275. package/src/components/block-list/block-html.js +5 -0
  276. package/src/components/block-list/content.scss +1 -11
  277. package/src/components/block-list/use-block-props/index.js +5 -1
  278. package/src/components/block-list/use-block-props/use-focus-handler.js +9 -8
  279. package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
  280. package/src/components/block-parent-selector/index.js +5 -2
  281. package/src/components/block-toolbar/switch-section-style.js +5 -2
  282. package/src/components/block-tools/empty-block-inserter.js +3 -7
  283. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
  284. package/src/components/block-vertical-alignment-control/test/index.js +18 -2
  285. package/src/components/block-vertical-alignment-control/ui.js +3 -5
  286. package/src/components/border-radius-control/test/utils.js +0 -41
  287. package/src/components/border-radius-control/utils.js +16 -107
  288. package/src/components/button-block-appender/content.scss +6 -2
  289. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  290. package/src/components/colors-gradients/control.js +6 -3
  291. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
  292. package/src/components/dimension-control/index.js +13 -1
  293. package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
  294. package/src/components/editor-styles/index.js +16 -1
  295. package/src/components/global-styles/background-panel.js +107 -34
  296. package/src/components/global-styles/border-panel.js +219 -48
  297. package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
  298. package/src/components/global-styles/color-panel.js +92 -11
  299. package/src/components/global-styles/dimensions-panel.js +422 -71
  300. package/src/components/global-styles/filters-panel.js +88 -28
  301. package/src/components/global-styles/hooks.js +8 -1
  302. package/src/components/global-styles/inheritance/index.js +204 -0
  303. package/src/components/global-styles/inheritance/style.scss +184 -0
  304. package/src/components/global-styles/inheritance/test/index.js +281 -0
  305. package/src/components/global-styles/inherited-value-context.js +271 -0
  306. package/src/components/global-styles/shadow-panel-components.js +48 -26
  307. package/src/components/global-styles/state-control.js +2 -2
  308. package/src/components/global-styles/test/background-panel.js +338 -1
  309. package/src/components/global-styles/test/border-panel.js +441 -0
  310. package/src/components/global-styles/test/color-panel.js +182 -2
  311. package/src/components/global-styles/test/dimensions-panel.js +753 -0
  312. package/src/components/global-styles/test/filters-panel.js +194 -0
  313. package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
  314. package/src/components/global-styles/test/inherited-value-context.js +454 -0
  315. package/src/components/global-styles/test/typography-panel-core.js +185 -0
  316. package/src/components/global-styles/test/typography-panel.js +849 -12
  317. package/src/components/global-styles/typography-panel.js +449 -100
  318. package/src/components/image-editor/style.scss +33 -0
  319. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  320. package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
  321. package/src/components/line-height-control/index.js +1 -1
  322. package/src/components/link-control/index.js +7 -2
  323. package/src/components/preset-input-control/index.js +4 -1
  324. package/src/components/provider/block-refs-provider.js +12 -2
  325. package/src/components/provider/index.js +2 -2
  326. package/src/components/provider/use-block-sync.js +18 -6
  327. package/src/components/provider/use-media-upload-settings.js +2 -0
  328. package/src/components/rich-text/index.js +37 -16
  329. package/src/components/spacing-sizes-control/test/utils.js +16 -5
  330. package/src/components/spacing-sizes-control/utils.js +11 -28
  331. package/src/components/text-indent-control/index.js +8 -0
  332. package/src/components/url-input/index.js +363 -431
  333. package/src/components/url-input/test/index.js +592 -0
  334. package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
  335. package/src/components/writing-flow/index.js +2 -0
  336. package/src/components/writing-flow/use-arrow-nav.js +51 -1
  337. package/src/components/writing-flow/use-click-selection.js +54 -3
  338. package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
  339. package/src/components/writing-flow/use-editable-root.js +7 -77
  340. package/src/components/writing-flow/use-home-end.js +17 -9
  341. package/src/components/writing-flow/use-selection-observer.js +32 -15
  342. package/src/components/writing-flow/utils.js +3 -24
  343. package/src/hooks/background.js +26 -21
  344. package/src/hooks/block-fields/rich-text/styles.scss +1 -1
  345. package/src/hooks/block-style-variation.js +8 -74
  346. package/src/hooks/border.js +19 -4
  347. package/src/hooks/custom-css.js +15 -6
  348. package/src/hooks/dimensions.js +17 -4
  349. package/src/hooks/duotone.js +26 -8
  350. package/src/hooks/elements.js +14 -3
  351. package/src/hooks/line-height.js +0 -1
  352. package/src/hooks/test/inherited-value-wiring.js +411 -0
  353. package/src/hooks/test/preset-round-trip.js +456 -0
  354. package/src/hooks/typography.js +35 -23
  355. package/src/private-apis.js +11 -2
  356. package/src/store/actions.js +10 -4
  357. package/src/store/private-selectors.js +57 -1
  358. package/src/store/reducer.js +9 -9
  359. package/src/store/selectors.js +56 -8
  360. package/src/store/test/private-selectors.js +160 -1
  361. package/src/style.scss +2 -0
  362. package/src/utils/native-undo.js +56 -0
  363. package/build/components/duotone/utils.cjs +0 -87
  364. package/build/components/duotone/utils.cjs.map +0 -7
  365. package/build-module/components/duotone/utils.mjs +0 -59
  366. package/build-module/components/duotone/utils.mjs.map +0 -7
  367. package/src/components/duotone/utils.js +0 -90
  368. package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/border-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\tconst border = useMemo( () => {\n\t\tif ( hasSplitBorders( inheritedValue?.border ) ) {\n\t\t\tconst borderValue = { ...inheritedValue?.border };\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tborderValue[ side ] = {\n\t\t\t\t\t...borderValue[ side ],\n\t\t\t\t\tcolor: decodeValue( borderValue[ side ]?.color ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn borderValue;\n\t\t}\n\t\treturn {\n\t\t\t...inheritedValue?.border,\n\t\t\tcolor: inheritedValue?.border?.color\n\t\t\t\t? decodeValue( inheritedValue?.border?.color )\n\t\t\t\t: undefined,\n\t\t};\n\t}, [ inheritedValue?.border, decodeValue ] );\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst borderRadiusValues = useMemo( () => {\n\t\tif ( typeof inheritedValue?.border?.radius !== 'object' ) {\n\t\t\treturn decodeValue( inheritedValue?.border?.radius );\n\t\t}\n\n\t\treturn {\n\t\t\ttopLeft: decodeValue( inheritedValue?.border?.radius?.topLeft ),\n\t\t\ttopRight: decodeValue( inheritedValue?.border?.radius?.topRight ),\n\t\t\tbottomLeft: decodeValue(\n\t\t\t\tinheritedValue?.border?.radius?.bottomLeft\n\t\t\t),\n\t\t\tbottomRight: decodeValue(\n\t\t\t\tinheritedValue?.border?.radius?.bottomRight\n\t\t\t),\n\t\t};\n\t}, [ inheritedValue?.border?.radius, decodeValue ] );\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\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\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tdisableCustomColors={ ! areCustomSolidsEnabled }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\thideLabelFromVision={ ! hasShadowControl }\n\t\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tpresets={ settings?.border?.radiusSizes }\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["ToolsPanel", "hasSplitBorders", "ToolsPanelItem", "isDefinedBorder", "BorderRadiusControl"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\t// Always keep the layout className (e.g. `single-column`); only the\n\t// inheritance treatment is gated on `showInheritanceLabelIndicators`.\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, className ) =>\n\t\tgetInheritanceProps(\n\t\t\tshowInheritanceLabelIndicators && isInherited,\n\t\t\tshowInheritanceLabelIndicators && hasLocalOverride,\n\t\t\tclassName\n\t\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\t// Decode a `border` sub-tree (handles split borders + flat shape).\n\tconst decodeBorder = useCallback(\n\t\t( source ) => {\n\t\t\tif ( ! source ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ( hasSplitBorders( source ) ) {\n\t\t\t\tconst out = { ...source };\n\t\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\t\tout[ side ] = {\n\t\t\t\t\t\t...out[ side ],\n\t\t\t\t\t\tcolor: decodeValue( out[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...source,\n\t\t\t\tcolor: source.color ? decodeValue( source.color ) : undefined,\n\t\t\t};\n\t\t},\n\t\t[ decodeValue ]\n\t);\n\t// Local-then-inherited: prefer the user's locally-set border (whether\n\t// flat or split) when defined, otherwise fall back to the inherited\n\t// Global Styles border. The merge happens at the sub-tree root, not\n\t// at the leaf level — borders are commonly authored as a single\n\t// affordance in the inspector, so partial leaf merges would be\n\t// surprising.\n\tconst localBorder = useMemo(\n\t\t() => decodeBorder( value?.border ),\n\t\t[ value?.border, decodeBorder ]\n\t);\n\tconst inheritedBorder = useMemo(\n\t\t() => decodeBorder( inheritedValue?.border ),\n\t\t[ inheritedValue?.border, decodeBorder ]\n\t);\n\tconst isBorderPlaceholder =\n\t\t! isDefinedBorder( value?.border ) &&\n\t\t!! inheritedBorder &&\n\t\tisDefinedBorder( inheritedBorder );\n\tconst border = isBorderPlaceholder ? inheritedBorder : localBorder;\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius. Display inherited values through the control's `values`\n\t// prop when local values are empty so UnitControl can parse the numeric\n\t// quantity and selected unit normally (e.g. `2.5em` -> `2.5` + `em`).\n\t// `hasBorderRadius` remains local-only, so displaying the inherited value\n\t// does not mark the ToolsPanel item as customised or commit on mount.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst localBorderRadius = useMemo( () => {\n\t\tif ( typeof value?.border?.radius !== 'object' ) {\n\t\t\treturn decodeValue( value?.border?.radius );\n\t\t}\n\t\treturn {\n\t\t\ttopLeft: decodeValue( value?.border?.radius?.topLeft ),\n\t\t\ttopRight: decodeValue( value?.border?.radius?.topRight ),\n\t\t\tbottomLeft: decodeValue( value?.border?.radius?.bottomLeft ),\n\t\t\tbottomRight: decodeValue( value?.border?.radius?.bottomRight ),\n\t\t};\n\t}, [ value?.border?.radius, decodeValue ] );\n\tconst inheritedBorderRadius = useMemo( () => {\n\t\tconst rawRadius = inheritedValue?.border?.radius;\n\t\tif ( typeof rawRadius !== 'object' ) {\n\t\t\treturn decodeValue( rawRadius );\n\t\t}\n\t\treturn {\n\t\t\ttopLeft: decodeValue( rawRadius?.topLeft ),\n\t\t\ttopRight: decodeValue( rawRadius?.topRight ),\n\t\t\tbottomLeft: decodeValue( rawRadius?.bottomLeft ),\n\t\t\tbottomRight: decodeValue( rawRadius?.bottomRight ),\n\t\t};\n\t}, [ inheritedValue?.border?.radius, decodeValue ] );\n\t// Spread the local border, not the merged display value, or setting a\n\t// radius bakes the inherited border into the local override. Mirror of\n\t// the guard in `onBorderChange`.\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...value?.border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( ( [ , v ] ) => !! v );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst isBorderRadiusPlaceholder =\n\t\t! hasBorderRadius() &&\n\t\tinheritedBorderRadius !== undefined &&\n\t\tinheritedBorderRadius !== '';\n\t// Build an object value so unlinked-mode shows per-corner inherited\n\t// values. The control accepts either a string or an object; passing the\n\t// object form is correct in both modes (the control collapses to the\n\t// `all`/first corner in linked mode).\n\tconst borderRadius = useMemo( () => {\n\t\tif ( ! isBorderRadiusPlaceholder ) {\n\t\t\treturn localBorderRadius;\n\t\t}\n\t\tif ( typeof inheritedBorderRadius === 'string' ) {\n\t\t\treturn inheritedBorderRadius;\n\t\t}\n\t\tconst obj = inheritedBorderRadius;\n\t\tif ( ! obj ) {\n\t\t\treturn localBorderRadius;\n\t\t}\n\t\tconst all =\n\t\t\tobj.topLeft &&\n\t\t\tobj.topLeft === obj.topRight &&\n\t\t\tobj.topLeft === obj.bottomLeft &&\n\t\t\tobj.topLeft === obj.bottomRight\n\t\t\t\t? obj.topLeft\n\t\t\t\t: undefined;\n\t\treturn { all, ...obj };\n\t}, [\n\t\tisBorderRadiusPlaceholder,\n\t\tlocalBorderRadius,\n\t\tinheritedBorderRadius,\n\t] );\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow. At rest, the popover toggle button uses the placeholder\n\t// treatment, and the popover preset list pre-selects the inherited shadow.\n\t// The interceptor below recognises the user's \"accept inherited\" click as\n\t// an explicit commit, mirroring the ToggleGroup pattern in the typography\n\t// panel.\n\tconst localShadow = decodeValue( value?.shadow );\n\tconst inheritedShadow = decodeValue( inheritedValue?.shadow );\n\tconst isShadowPlaceholder =\n\t\tlocalShadow === undefined &&\n\t\tinheritedShadow !== undefined &&\n\t\tinheritedShadow !== '';\n\tconst shadow = isShadowPlaceholder ? inheritedShadow : localShadow;\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\t// Display-without-commit interceptor for the shadow preset list. When the\n\t// user is at the at-rest preselect (local is undefined, inherited is the\n\t// active shadow), `ShadowPresets`' default toggle-off behaviour would\n\t// interpret the click on the highlighted preset as `undefined` (clear).\n\t// Re-route it to an explicit commit of the inherited value, so clicking\n\t// the visible preselected preset is the user's \"accept this inherited\n\t// value\" affordance.\n\tconst setShadowWithInheritedCommit = ( newValue ) => {\n\t\tif ( isShadowPlaceholder && newValue === undefined ) {\n\t\t\tsetShadow( inheritedShadow );\n\t\t\treturn;\n\t\t}\n\t\tsetShadow( newValue );\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\t// A local override exists when the user has set a shadow that shadows an\n\t// inherited one. Only then does the toggle render the blue-dot reset\n\t// affordance (mirroring the color/gradient controls); a merely-inherited\n\t// value at rest shows no reset button.\n\tconst hasShadowLocalOverride =\n\t\tshowInheritanceLabelIndicators &&\n\t\thasShadow() &&\n\t\tinheritedShadow !== undefined;\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Read from `value` (local-only) rather than\n\t\t// `border` (the merged display value), otherwise an inherited\n\t\t// radius gets baked into the local override every time the\n\t\t// user touches color/style/width — which both pollutes the\n\t\t// stored attribute and causes the radius `ToolsPanelItem` to\n\t\t// flip into the `has-local-override-from-global-styles` state\n\t\t// even though the user never customised the radius. The\n\t\t// `radius` key must come after the spread so it wins over any\n\t\t// `radius` field forwarded by `BorderBoxControl`'s inner\n\t\t// `BorderControl`, which merges its incoming `value` with the\n\t\t// changed prop. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( {\n\t\t\t...updatedBorder,\n\t\t\tradius: value?.border?.radius,\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\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\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisBorderPlaceholder,\n\t\t\t\t\t\tisDefinedBorder( value?.border ) &&\n\t\t\t\t\t\t\t!! inheritedBorder &&\n\t\t\t\t\t\t\tisDefinedBorder( inheritedBorder )\n\t\t\t\t\t) }\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ( showInheritanceLabelIndicators ||\n\t\t\t\t\t\thasShadowControl ) && (\n\t\t\t\t\t\t// Render the visible label as `BaseControl.VisualLabel`\n\t\t\t\t\t\t// (which produces `.components-base-control__label`)\n\t\t\t\t\t\t// rather than passing `label` to `BorderBoxControl`,\n\t\t\t\t\t\t// whose internal `<StyledLabel>` carries no stable\n\t\t\t\t\t\t// className. The inheritance treatment and the\n\t\t\t\t\t\t// local-override reset affordance both target\n\t\t\t\t\t\t// `.components-base-control__label`, so the visible\n\t\t\t\t\t\t// \"Border\" label has to be a `BaseControl` label to\n\t\t\t\t\t\t// receive them.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// Render it whenever a Shadow control is also present so\n\t\t\t\t\t\t// the two controls stay disambiguated (mirrors the\n\t\t\t\t\t\t// Shadow label's `hasBorderControl` guard below, and\n\t\t\t\t\t\t// trunk's `hideLabelFromVision={ ! hasShadowControl }`),\n\t\t\t\t\t\t// even when inheritance indicators are off (e.g. in\n\t\t\t\t\t\t// Global Styles).\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Border' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) }\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tdisableCustomColors={ ! areCustomSolidsEnabled }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisBorderRadiusPlaceholder,\n\t\t\t\t\t\thasBorderRadius() && inheritedBorderRadius !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\thasInlineEndToggle\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tpresets={ settings?.border?.radiusSizes }\n\t\t\t\t\t\tvalues={ borderRadius }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisShadowPlaceholder,\n\t\t\t\t\t\thasShadow() && inheritedShadow !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\t// The shadow toggle renders its own reset affordance (blue\n\t\t\t\t\t// dot for a local override, default reset otherwise) inside\n\t\t\t\t\t// the control, mirroring the color/gradient controls, so the\n\t\t\t\t\t// panel item must not render a second sibling reset dot.\n\t\t\t\t\tshowLocalOverrideActionsInLabel={ false }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadowWithInheritedCommit }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\thasLocalValue={ hasShadow() }\n\t\t\t\t\t\thasLocalOverride={ hasShadowLocalOverride }\n\t\t\t\t\t\tonReset={ resetShadow }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ToolsPanel", "hasSplitBorders", "isDefinedBorder", "BorderRadiusControl"]
7
7
  }
@@ -40,6 +40,7 @@ var import_i18n = require("@wordpress/i18n");
40
40
  var import_icons = require("@wordpress/icons");
41
41
  var import_control = __toESM(require("../colors-gradients/control.cjs"));
42
42
  var import_lock_unlock = require("../../lock-unlock.cjs");
43
+ var import_inheritance = require("./inheritance/index.cjs");
43
44
  var import_jsx_runtime = require("react/jsx-runtime");
44
45
  var { Tabs } = (0, import_lock_unlock.unlock)(import_components.privateApis);
45
46
  function DropdownContent({
@@ -48,9 +49,9 @@ function DropdownContent({
48
49
  contrastWarning
49
50
  }) {
50
51
  const { key: firstTabKey, ...firstTab } = tabs[0] ?? {};
51
- const defaultTabId = tabs.find(
52
- (tab) => tab.userValue !== void 0
53
- )?.key;
52
+ const defaultTabId = (tabs.find((tab) => tab.userValue !== void 0) ?? tabs.find(
53
+ (tab) => tab.isPlaceholder || tab.inheritedValue !== void 0
54
+ ))?.key;
54
55
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "block-editor-panel-color-gradient-settings__dropdown-content", children: [
55
56
  tabs.length === 1 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
56
57
  ColorGradientTab,
@@ -99,11 +100,22 @@ function ColorGradientTab({
99
100
  isGradient,
100
101
  inheritedValue,
101
102
  inheritedSlug,
103
+ userSlug,
102
104
  userValue,
103
105
  setValue,
106
+ isPlaceholder,
104
107
  colorGradientControlSettings,
105
108
  contrastWarning
106
109
  }) {
110
+ const displayed = userValue ?? inheritedValue;
111
+ const displayedSlug = userValue !== void 0 ? userSlug : inheritedSlug;
112
+ const onChange = (newValue, newSlug) => {
113
+ if (isPlaceholder && newValue === void 0) {
114
+ setValue(inheritedValue, inheritedSlug);
115
+ return;
116
+ }
117
+ setValue(newValue, newSlug);
118
+ };
107
119
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
108
120
  import_control.default,
109
121
  {
@@ -111,12 +123,13 @@ function ColorGradientTab({
111
123
  showTitle: false,
112
124
  enableAlpha: true,
113
125
  __experimentalIsRenderedInSidebar: true,
114
- colorValue: isGradient ? void 0 : inheritedValue,
115
- colorSlug: isGradient ? void 0 : inheritedSlug,
116
- gradientValue: isGradient ? inheritedValue : void 0,
117
- onColorChange: isGradient ? void 0 : setValue,
118
- onGradientChange: isGradient ? setValue : void 0,
119
- clearable: inheritedValue === userValue,
126
+ colorValue: isGradient ? void 0 : displayed,
127
+ colorSlug: isGradient ? void 0 : displayedSlug,
128
+ gradientValue: isGradient ? displayed : void 0,
129
+ gradientSlug: isGradient ? displayedSlug : void 0,
130
+ onColorChange: isGradient ? void 0 : onChange,
131
+ onGradientChange: isGradient ? onChange : void 0,
132
+ clearable: userValue !== void 0,
120
133
  headingLevel: 3,
121
134
  noticeProps: !isGradient && contrastWarning ? {
122
135
  children: contrastWarning,
@@ -137,13 +150,20 @@ function ColorGradientDropdownItem({
137
150
  colorGradientControlSettings,
138
151
  panelId,
139
152
  contrastWarning,
140
- className = "block-editor-tools-panel-color-gradient-settings__item"
153
+ className = "block-editor-tools-panel-color-gradient-settings__item",
154
+ isPlaceholder = false,
155
+ hasInheritedValue = false,
156
+ showInheritanceLabelIndicators = (0, import_inheritance.isGlobalStylesInheritanceEnabled)()
141
157
  }) {
142
158
  const colorGradientDropdownButtonRef = (0, import_element.useRef)(void 0);
159
+ const itemClassName = (0, import_clsx.default)("block-editor-color-gradient-item", className);
160
+ const hasLocalOverride = showInheritanceLabelIndicators && hasValue() && hasInheritedValue;
161
+ const inheritanceProps = showInheritanceLabelIndicators ? (0, import_inheritance.getInheritanceProps)(isPlaceholder, hasLocalOverride, itemClassName) : { className: itemClassName };
143
162
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
144
- import_components.__experimentalToolsPanelItem,
163
+ import_inheritance.InheritanceToolsPanelItem,
145
164
  {
146
- className: (0, import_clsx.default)("block-editor-color-gradient-item", className),
165
+ ...inheritanceProps,
166
+ showLocalOverrideActionsInLabel: false,
147
167
  hasValue,
148
168
  label,
149
169
  onDeselect: resetValue,
@@ -175,7 +195,19 @@ function ColorGradientDropdownItem({
175
195
  label
176
196
  }
177
197
  ) }),
178
- hasValue() && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
198
+ hasValue() && (hasLocalOverride ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
199
+ import_inheritance.InheritanceResetButton,
200
+ {
201
+ className: "block-editor-panel-color-gradient-settings__reset",
202
+ onResetToInherited: () => {
203
+ resetValue();
204
+ if (isOpen) {
205
+ onToggle();
206
+ }
207
+ colorGradientDropdownButtonRef.current?.focus();
208
+ }
209
+ }
210
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
179
211
  import_components.Button,
180
212
  {
181
213
  __next40pxDefaultSize: true,
@@ -191,7 +223,7 @@ function ColorGradientDropdownItem({
191
223
  colorGradientDropdownButtonRef.current?.focus();
192
224
  }
193
225
  }
194
- ),
226
+ )),
195
227
  contrastWarning && // An icon-only warning that stays visible while a
196
228
  // contrast warning is in effect. It is not a menu;
197
229
  // activating it opens the color picker popover where
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/color-gradient-dropdown-item.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalHStack as HStack,\n\t__experimentalZStack as ZStack,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tColorIndicator,\n\tFlex,\n\tFlexItem,\n\tDropdown,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { reset as resetIcon, caution as cautionIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientControl from '../colors-gradients/control';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\n/**\n * @typedef {Object} DropdownContentProps\n * @property {Array} tabs Tab configurations to render.\n * @property {Object} colorGradientControlSettings Settings passed to ColorGradientControl.\n * @property {string} [contrastWarning] Contrast warning message for the color value.\n */\n\n/**\n * Renders the dropdown content containing the color/gradient picker tabs.\n *\n * @param {DropdownContentProps} props\n */\nfunction DropdownContent( {\n\ttabs,\n\tcolorGradientControlSettings,\n\tcontrastWarning,\n} ) {\n\tconst { key: firstTabKey, ...firstTab } = tabs[ 0 ] ?? {};\n\tconst defaultTabId = tabs.find(\n\t\t( tab ) => tab.userValue !== undefined\n\t)?.key;\n\treturn (\n\t\t<DropdownContentWrapper paddingSize=\"none\">\n\t\t\t<div className=\"block-editor-panel-color-gradient-settings__dropdown-content\">\n\t\t\t\t{ tabs.length === 1 && (\n\t\t\t\t\t<ColorGradientTab\n\t\t\t\t\t\tkey={ firstTabKey }\n\t\t\t\t\t\t{ ...firstTab }\n\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ tabs.length > 1 && (\n\t\t\t\t\t<Tabs defaultTabId={ defaultTabId }>\n\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t<Tabs.Tab key={ tab.key } tabId={ tab.key }>\n\t\t\t\t\t\t\t\t\t{ tab.label }\n\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Tabs.TabList>\n\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst { key: tabKey, ...restTabProps } = tab;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\ttabId={ tabKey }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColorGradientTab\n\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t{ ...restTabProps }\n\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DropdownContentWrapper>\n\t);\n}\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n};\n\nconst LabeledColorIndicators = ( { indicators, label } ) => (\n\t<HStack justify=\"flex-start\">\n\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t{ indicators.map( ( indicator, index ) => (\n\t\t\t\t<Flex key={ index } expanded={ false }>\n\t\t\t\t\t<ColorIndicator colorValue={ indicator } />\n\t\t\t\t</Flex>\n\t\t\t) ) }\n\t\t</ZStack>\n\t\t<FlexItem className=\"block-editor-panel-color-gradient-settings__color-name\">\n\t\t\t{ label }\n\t\t</FlexItem>\n\t</HStack>\n);\n\nfunction ColorGradientTab( {\n\tisGradient,\n\tinheritedValue,\n\tinheritedSlug,\n\tuserValue,\n\tsetValue,\n\tcolorGradientControlSettings,\n\tcontrastWarning,\n} ) {\n\treturn (\n\t\t<ColorGradientControl\n\t\t\t{ ...colorGradientControlSettings }\n\t\t\tshowTitle={ false }\n\t\t\tenableAlpha\n\t\t\t__experimentalIsRenderedInSidebar\n\t\t\tcolorValue={ isGradient ? undefined : inheritedValue }\n\t\t\tcolorSlug={ isGradient ? undefined : inheritedSlug }\n\t\t\tgradientValue={ isGradient ? inheritedValue : undefined }\n\t\t\tonColorChange={ isGradient ? undefined : setValue }\n\t\t\tonGradientChange={ isGradient ? setValue : undefined }\n\t\t\tclearable={ inheritedValue === userValue }\n\t\t\theadingLevel={ 3 }\n\t\t\tnoticeProps={\n\t\t\t\t! isGradient && contrastWarning\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tchildren: contrastWarning,\n\t\t\t\t\t\t\tstatus: 'warning',\n\t\t\t\t\t\t\tspokenMessage: null,\n\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t'block-editor-panel-color-gradient-settings__contrast-notice',\n\t\t\t\t\t }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t);\n}\n\n// Renders a ToolsPanelItem that opens a dropdown containing one or more\n// color/gradient pickers. Shared between the Color, Background, and\n// Typography panels for consistent color-style controls.\nexport default function ColorGradientDropdownItem( {\n\tlabel,\n\thasValue,\n\tresetValue,\n\tisShownByDefault,\n\tindicators,\n\ttabs,\n\tcolorGradientControlSettings,\n\tpanelId,\n\tcontrastWarning,\n\tclassName = 'block-editor-tools-panel-color-gradient-settings__item',\n} ) {\n\tconst colorGradientDropdownButtonRef = useRef( undefined );\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName={ clsx( 'block-editor-color-gradient-item', className ) }\n\t\t\thasValue={ hasValue }\n\t\t\tlabel={ label }\n\t\t\tonDeselect={ resetValue }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<Dropdown\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tclassName=\"block-editor-tools-panel-color-gradient-settings__dropdown\"\n\t\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\t\tconst toggleProps = {\n\t\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t\t'block-editor-panel-color-gradient-settings__dropdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-open': isOpen,\n\t\t\t\t\t\t\t\t'has-contrast-warning': !! contrastWarning,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t\tref: colorGradientDropdownButtonRef,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button { ...toggleProps } __next40pxDefaultSize>\n\t\t\t\t\t\t\t\t<LabeledColorIndicators\n\t\t\t\t\t\t\t\t\tindicators={ indicators }\n\t\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{ hasValue() && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-panel-color-gradient-settings__reset\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tresetValue();\n\t\t\t\t\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcolorGradientDropdownButtonRef.current?.focus();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ contrastWarning && (\n\t\t\t\t\t\t\t\t// An icon-only warning that stays visible while a\n\t\t\t\t\t\t\t\t// contrast warning is in effect. It is not a menu;\n\t\t\t\t\t\t\t\t// activating it opens the color picker popover where\n\t\t\t\t\t\t\t\t// the full warning notice is shown, so the indicator\n\t\t\t\t\t\t\t\t// doubles as a shortcut to where the issue is fixed.\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\ticon={ cautionIcon }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Low contrast' ) }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-panel-color-gradient-settings__contrast-warning\"\n\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\trenderContent={ () => (\n\t\t\t\t\t<DropdownContent\n\t\t\t\t\t\ttabs={ tabs }\n\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</ToolsPanelItem>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["componentsPrivateApis", "DropdownContentWrapper", "HStack", "ZStack", "ColorGradientControl", "ToolsPanelItem", "clsx", "resetIcon", "cautionIcon"]
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalZStack as ZStack,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tColorIndicator,\n\tFlex,\n\tFlexItem,\n\tDropdown,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { reset as resetIcon, caution as cautionIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientControl from '../colors-gradients/control';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tgetInheritanceProps,\n\tInheritanceResetButton,\n\tInheritanceToolsPanelItem,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\n/**\n * @typedef {Object} DropdownContentProps\n * @property {Array} tabs Tab configurations to render.\n * @property {Object} colorGradientControlSettings Settings passed to ColorGradientControl.\n * @property {string} [contrastWarning] Contrast warning message for the color value.\n */\n\n/**\n * Renders the dropdown content containing the color/gradient picker tabs.\n *\n * @param {DropdownContentProps} props\n */\nfunction DropdownContent( {\n\ttabs,\n\tcolorGradientControlSettings,\n\tcontrastWarning,\n} ) {\n\tconst { key: firstTabKey, ...firstTab } = tabs[ 0 ] ?? {};\n\tconst defaultTabId = (\n\t\ttabs.find( ( tab ) => tab.userValue !== undefined ) ??\n\t\ttabs.find(\n\t\t\t( tab ) => tab.isPlaceholder || tab.inheritedValue !== undefined\n\t\t)\n\t)?.key;\n\treturn (\n\t\t<DropdownContentWrapper paddingSize=\"none\">\n\t\t\t<div className=\"block-editor-panel-color-gradient-settings__dropdown-content\">\n\t\t\t\t{ tabs.length === 1 && (\n\t\t\t\t\t<ColorGradientTab\n\t\t\t\t\t\tkey={ firstTabKey }\n\t\t\t\t\t\t{ ...firstTab }\n\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ tabs.length > 1 && (\n\t\t\t\t\t<Tabs defaultTabId={ defaultTabId }>\n\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t<Tabs.Tab key={ tab.key } tabId={ tab.key }>\n\t\t\t\t\t\t\t\t\t{ tab.label }\n\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Tabs.TabList>\n\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst { key: tabKey, ...restTabProps } = tab;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\ttabId={ tabKey }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColorGradientTab\n\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t{ ...restTabProps }\n\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DropdownContentWrapper>\n\t);\n}\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n};\n\nconst LabeledColorIndicators = ( { indicators, label } ) => (\n\t<HStack justify=\"flex-start\">\n\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t{ indicators.map( ( indicator, index ) => (\n\t\t\t\t<Flex key={ index } expanded={ false }>\n\t\t\t\t\t<ColorIndicator colorValue={ indicator } />\n\t\t\t\t</Flex>\n\t\t\t) ) }\n\t\t</ZStack>\n\t\t<FlexItem className=\"block-editor-panel-color-gradient-settings__color-name\">\n\t\t\t{ label }\n\t\t</FlexItem>\n\t</HStack>\n);\n\nfunction ColorGradientTab( {\n\tisGradient,\n\tinheritedValue,\n\tinheritedSlug,\n\tuserSlug,\n\tuserValue,\n\tsetValue,\n\tisPlaceholder,\n\tcolorGradientControlSettings,\n\tcontrastWarning,\n} ) {\n\t// Display value: prefer the user's local value when set; otherwise fall\n\t// back to the inherited value so the at-rest preselection is visible\n\t// inside the picker.\n\tconst displayed = userValue ?? inheritedValue;\n\t// Slug of the displayed value: the block's own when it has one, otherwise\n\t// the inherited one. Slug matching keeps two same-hex presets apart; a\n\t// slug-less (custom) value falls back to hex matching.\n\tconst displayedSlug = userValue !== undefined ? userSlug : inheritedSlug;\n\t// Display-without-commit interceptor. `ColorPalette` and `GradientPicker`\n\t// fire `onChange( undefined )` when the user clicks the currently-selected\n\t// option. At rest (placeholder mode), that click is the user's \"accept\n\t// inherited\" gesture: the displayed value comes from `inheritedValue`, so\n\t// re-route the `undefined` payload to a commit of the inherited value\n\t// instead of the default \"clear local\" behaviour. Once a local value is\n\t// set, the same click correctly clears local back to at rest.\n\tconst onChange = ( newValue, newSlug ) => {\n\t\tif ( isPlaceholder && newValue === undefined ) {\n\t\t\tsetValue( inheritedValue, inheritedSlug );\n\t\t\treturn;\n\t\t}\n\t\tsetValue( newValue, newSlug );\n\t};\n\treturn (\n\t\t<ColorGradientControl\n\t\t\t{ ...colorGradientControlSettings }\n\t\t\tshowTitle={ false }\n\t\t\tenableAlpha\n\t\t\t__experimentalIsRenderedInSidebar\n\t\t\tcolorValue={ isGradient ? undefined : displayed }\n\t\t\tcolorSlug={ isGradient ? undefined : displayedSlug }\n\t\t\tgradientValue={ isGradient ? displayed : undefined }\n\t\t\tgradientSlug={ isGradient ? displayedSlug : undefined }\n\t\t\tonColorChange={ isGradient ? undefined : onChange }\n\t\t\tonGradientChange={ isGradient ? onChange : undefined }\n\t\t\t/*\n\t\t\t * The control is clearable whenever a local value is set, so the\n\t\t\t * user can always reset their own override back to the inherited\n\t\t\t * (placeholder) value. In placeholder mode (no local value) there\n\t\t\t * is nothing local to clear; clicking the active swatch accepts the\n\t\t\t * inherited value via the onChange interceptor above instead.\n\t\t\t */\n\t\t\tclearable={ userValue !== undefined }\n\t\t\theadingLevel={ 3 }\n\t\t\tnoticeProps={\n\t\t\t\t! isGradient && contrastWarning\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tchildren: contrastWarning,\n\t\t\t\t\t\t\tstatus: 'warning',\n\t\t\t\t\t\t\tspokenMessage: null,\n\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t'block-editor-panel-color-gradient-settings__contrast-notice',\n\t\t\t\t\t }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t);\n}\n\n// Renders a ToolsPanelItem that opens a dropdown containing one or more\n// color/gradient pickers. Shared between the Color, Background, and\n// Typography panels for consistent color-style controls.\nexport default function ColorGradientDropdownItem( {\n\tlabel,\n\thasValue,\n\tresetValue,\n\tisShownByDefault,\n\tindicators,\n\ttabs,\n\tcolorGradientControlSettings,\n\tpanelId,\n\tcontrastWarning,\n\tclassName = 'block-editor-tools-panel-color-gradient-settings__item',\n\tisPlaceholder = false,\n\thasInheritedValue = false,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst colorGradientDropdownButtonRef = useRef( undefined );\n\tconst itemClassName = clsx( 'block-editor-color-gradient-item', className );\n\t// A local override exists when the user has set a value that shadows an\n\t// inherited one — only then do we offer the reset-to-inherited / push\n\t// actions and the override label indicator.\n\tconst hasLocalOverride =\n\t\tshowInheritanceLabelIndicators && hasValue() && hasInheritedValue;\n\tconst inheritanceProps = showInheritanceLabelIndicators\n\t\t? getInheritanceProps( isPlaceholder, hasLocalOverride, itemClassName )\n\t\t: { className: itemClassName };\n\treturn (\n\t\t<InheritanceToolsPanelItem\n\t\t\t{ ...inheritanceProps }\n\t\t\tshowLocalOverrideActionsInLabel={ false }\n\t\t\thasValue={ hasValue }\n\t\t\tlabel={ label }\n\t\t\tonDeselect={ resetValue }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<Dropdown\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tclassName=\"block-editor-tools-panel-color-gradient-settings__dropdown\"\n\t\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\t\tconst toggleProps = {\n\t\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t\t'block-editor-panel-color-gradient-settings__dropdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-open': isOpen,\n\t\t\t\t\t\t\t\t'has-contrast-warning': !! contrastWarning,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t\tref: colorGradientDropdownButtonRef,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button { ...toggleProps } __next40pxDefaultSize>\n\t\t\t\t\t\t\t\t<LabeledColorIndicators\n\t\t\t\t\t\t\t\t\tindicators={ indicators }\n\t\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{ hasValue() &&\n\t\t\t\t\t\t\t\t( hasLocalOverride ? (\n\t\t\t\t\t\t\t\t\t<InheritanceResetButton\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-panel-color-gradient-settings__reset\"\n\t\t\t\t\t\t\t\t\t\tonResetToInherited={ () => {\n\t\t\t\t\t\t\t\t\t\t\tresetValue();\n\t\t\t\t\t\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcolorGradientDropdownButtonRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-panel-color-gradient-settings__reset\"\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tresetValue();\n\t\t\t\t\t\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcolorGradientDropdownButtonRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ contrastWarning && (\n\t\t\t\t\t\t\t\t// An icon-only warning that stays visible while a\n\t\t\t\t\t\t\t\t// contrast warning is in effect. It is not a menu;\n\t\t\t\t\t\t\t\t// activating it opens the color picker popover where\n\t\t\t\t\t\t\t\t// the full warning notice is shown, so the indicator\n\t\t\t\t\t\t\t\t// doubles as a shortcut to where the issue is fixed.\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\ticon={ cautionIcon }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Low contrast' ) }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-panel-color-gradient-settings__contrast-warning\"\n\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\trenderContent={ () => (\n\t\t\t\t\t<DropdownContent\n\t\t\t\t\t\ttabs={ tabs }\n\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</InheritanceToolsPanelItem>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["componentsPrivateApis", "DropdownContentWrapper", "HStack", "ZStack", "ColorGradientControl", "clsx", "resetIcon", "cautionIcon"]
7
7
  }
@@ -44,11 +44,13 @@ module.exports = __toCommonJS(color_panel_exports);
44
44
  var import_components = require("@wordpress/components");
45
45
  var import_element = require("@wordpress/element");
46
46
  var import_i18n = require("@wordpress/i18n");
47
+ var import_style_engine = require("@wordpress/style-engine");
47
48
  var import_color_gradient_dropdown_item = __toESM(require("./color-gradient-dropdown-item.cjs"));
48
49
  var import_hooks = require("./hooks.cjs");
49
50
  var import_utils = require("./utils.cjs");
50
51
  var import_object = require("../../utils/object.cjs");
51
52
  var import_color_values = require("../../utils/color-values.cjs");
53
+ var import_inheritance = require("./inheritance/index.cjs");
52
54
  var import_jsx_runtime = require("react/jsx-runtime");
53
55
  function useHasColorPanel(settings) {
54
56
  const hasLinkPanel = useHasLinkPanel(settings);
@@ -129,7 +131,8 @@ function ColorPanel({
129
131
  defaultControls = DEFAULT_CONTROLS,
130
132
  label,
131
133
  children,
132
- contrastWarning
134
+ contrastWarning,
135
+ showInheritanceLabelIndicators = (0, import_inheritance.isGlobalStylesInheritanceEnabled)()
133
136
  }) {
134
137
  const {
135
138
  colors,
@@ -142,8 +145,9 @@ function ColorPanel({
142
145
  decodeValue,
143
146
  encodeGradientValue
144
147
  } = (0, import_hooks.useColorGradientSettings)(settings);
148
+ const decodeInheritedColor = (rawValue) => (0, import_style_engine.getCSSValueFromRawStyle)(decodeValue(rawValue));
145
149
  const showLinkPanel = useHasLinkPanel(settings);
146
- const linkColor = decodeValue(
150
+ const linkColor = decodeInheritedColor(
147
151
  inheritedValue?.elements?.link?.color?.text
148
152
  );
149
153
  const userLinkColor = decodeValue(value?.elements?.link?.color?.text);
@@ -156,7 +160,7 @@ function ColorPanel({
156
160
  )
157
161
  );
158
162
  };
159
- const hoverLinkColor = decodeValue(
163
+ const hoverLinkColor = decodeInheritedColor(
160
164
  inheritedValue?.elements?.link?.[":hover"]?.color?.text
161
165
  );
162
166
  const userHoverLinkColor = decodeValue(
@@ -272,7 +276,12 @@ function ColorPanel({
272
276
  hasValue: hasLink,
273
277
  resetValue: resetLink,
274
278
  isShownByDefault: defaultControls.link,
275
- indicators: [linkColor, hoverLinkColor],
279
+ indicators: [
280
+ userLinkColor ?? linkColor,
281
+ userHoverLinkColor ?? hoverLinkColor
282
+ ],
283
+ isPlaceholder: userLinkColor === void 0 && userHoverLinkColor === void 0 && (linkColor !== void 0 || hoverLinkColor !== void 0),
284
+ hasInheritedValue: linkColor !== void 0 || hoverLinkColor !== void 0,
276
285
  contrastWarning,
277
286
  tabs: [
278
287
  {
@@ -283,8 +292,13 @@ function ColorPanel({
283
292
  inheritedValue?.elements?.link?.color?.text,
284
293
  "color"
285
294
  ),
295
+ userSlug: (0, import_color_values.extractPresetSlug)(
296
+ value?.elements?.link?.color?.text,
297
+ "color"
298
+ ),
286
299
  setValue: setLinkColor,
287
- userValue: userLinkColor
300
+ userValue: userLinkColor,
301
+ isPlaceholder: userLinkColor === void 0 && linkColor !== void 0
288
302
  },
289
303
  {
290
304
  key: "hover",
@@ -294,8 +308,13 @@ function ColorPanel({
294
308
  inheritedValue?.elements?.link?.[":hover"]?.color?.text,
295
309
  "color"
296
310
  ),
311
+ userSlug: (0, import_color_values.extractPresetSlug)(
312
+ value?.elements?.link?.[":hover"]?.color?.text,
313
+ "color"
314
+ ),
297
315
  setValue: setHoverLinkColor,
298
- userValue: userHoverLinkColor
316
+ userValue: userHoverLinkColor,
317
+ isPlaceholder: userHoverLinkColor === void 0 && hoverLinkColor !== void 0
299
318
  }
300
319
  ]
301
320
  }
@@ -304,13 +323,13 @@ function ColorPanel({
304
323
  if (!showPanel) {
305
324
  return;
306
325
  }
307
- const elementBackgroundColor = decodeValue(
326
+ const elementBackgroundColor = decodeInheritedColor(
308
327
  inheritedValue?.elements?.[name]?.color?.background
309
328
  );
310
- const elementGradient = decodeValue(
329
+ const elementGradient = decodeInheritedColor(
311
330
  inheritedValue?.elements?.[name]?.color?.gradient
312
331
  );
313
- const elementTextColor = decodeValue(
332
+ const elementTextColor = decodeInheritedColor(
314
333
  inheritedValue?.elements?.[name]?.color?.text
315
334
  );
316
335
  const elementBackgroundUserColor = decodeValue(
@@ -359,16 +378,21 @@ function ColorPanel({
359
378
  newValue.elements[name].color.gradient = void 0;
360
379
  onChange(newValue);
361
380
  };
362
- const setElementGradient = (newGradient) => {
381
+ const setElementGradient = (newGradient, newSlug) => {
363
382
  const newValue = (0, import_object.setImmutably)(
364
383
  value,
365
384
  ["elements", name, "color", "gradient"],
366
- encodeGradientValue(newGradient)
385
+ encodeGradientValue(newGradient, newSlug)
367
386
  );
368
387
  newValue.elements[name].color.background = void 0;
369
388
  onChange(newValue);
370
389
  };
371
390
  const supportsBackground = name !== "caption";
391
+ const isElementTextPlaceholder = elementTextUserColor === void 0 && elementTextColor !== void 0;
392
+ const isElementBackgroundPlaceholder = elementBackgroundUserColor === void 0 && elementBackgroundColor !== void 0;
393
+ const isElementGradientPlaceholder = elementGradientUserColor === void 0 && elementGradient !== void 0;
394
+ const isElementPlaceholder = elementTextUserColor === void 0 && elementBackgroundUserColor === void 0 && elementGradientUserColor === void 0 && (elementTextColor !== void 0 || elementBackgroundColor !== void 0 || elementGradient !== void 0);
395
+ const hasElementInheritedValue = elementTextColor !== void 0 || elementBackgroundColor !== void 0 || elementGradient !== void 0;
372
396
  items.push({
373
397
  key: name,
374
398
  label: elementLabel,
@@ -376,9 +400,11 @@ function ColorPanel({
376
400
  resetValue: resetElement,
377
401
  isShownByDefault: defaultControls[name],
378
402
  indicators: supportsBackground ? [
379
- elementTextColor,
380
- elementGradient ?? elementBackgroundColor
381
- ] : [elementTextColor],
403
+ elementTextUserColor ?? elementTextColor,
404
+ elementGradientUserColor ?? elementGradient ?? elementBackgroundUserColor ?? elementBackgroundColor
405
+ ] : [elementTextUserColor ?? elementTextColor],
406
+ isPlaceholder: isElementPlaceholder,
407
+ hasInheritedValue: hasElementInheritedValue,
382
408
  tabs: [
383
409
  hasSolidColors && {
384
410
  key: "text",
@@ -388,8 +414,13 @@ function ColorPanel({
388
414
  inheritedValue?.elements?.[name]?.color?.text,
389
415
  "color"
390
416
  ),
417
+ userSlug: (0, import_color_values.extractPresetSlug)(
418
+ value?.elements?.[name]?.color?.text,
419
+ "color"
420
+ ),
391
421
  setValue: setElementTextColor,
392
- userValue: elementTextUserColor
422
+ userValue: elementTextUserColor,
423
+ isPlaceholder: isElementTextPlaceholder
393
424
  },
394
425
  hasSolidColors && supportsBackground && {
395
426
  key: "background",
@@ -399,16 +430,30 @@ function ColorPanel({
399
430
  inheritedValue?.elements?.[name]?.color?.background,
400
431
  "color"
401
432
  ),
433
+ userSlug: (0, import_color_values.extractPresetSlug)(
434
+ value?.elements?.[name]?.color?.background,
435
+ "color"
436
+ ),
402
437
  setValue: setElementBackgroundColor,
403
- userValue: elementBackgroundUserColor
438
+ userValue: elementBackgroundUserColor,
439
+ isPlaceholder: isElementBackgroundPlaceholder
404
440
  },
405
441
  hasGradientColors && supportsBackground && {
406
442
  key: "gradient",
407
443
  label: (0, import_i18n.__)("Gradient"),
408
444
  inheritedValue: elementGradient,
445
+ inheritedSlug: (0, import_color_values.extractPresetSlug)(
446
+ inheritedValue?.elements?.[name]?.color?.gradient,
447
+ "gradient"
448
+ ),
449
+ userSlug: (0, import_color_values.extractPresetSlug)(
450
+ value?.elements?.[name]?.color?.gradient,
451
+ "gradient"
452
+ ),
409
453
  setValue: setElementGradient,
410
454
  userValue: elementGradientUserColor,
411
- isGradient: true
455
+ isGradient: true,
456
+ isPlaceholder: isElementGradientPlaceholder
412
457
  }
413
458
  ].filter(Boolean)
414
459
  });
@@ -428,6 +473,7 @@ function ColorPanel({
428
473
  import_color_gradient_dropdown_item.default,
429
474
  {
430
475
  ...restItem,
476
+ showInheritanceLabelIndicators,
431
477
  colorGradientControlSettings: {
432
478
  colors,
433
479
  disableCustomColors: !areCustomSolidsEnabled,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/color-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport {\n\tuseColorsPerOrigin,\n\tuseGradientsPerOrigin,\n\tuseColorGradientSettings,\n} from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\n\n// Despite the \"ColorPanel\" name, this gates only the element-level color\n// controls (link, heading, button, caption, h1–h6) — surfaced as the\n// \"Elements\" panel in the block inspector and the \"Colors\" screen in\n// Global Styles. Top-level text and background color moved to the\n// Typography and Background panels, so this returns false for blocks\n// whose only color support is text and/or background.\nexport function useHasColorPanel( settings ) {\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn hasLinkPanel || hasHeadingPanel || hasButtonPanel || hasCaptionPanel;\n}\n\nexport function useHasTextPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.text &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasLinkPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.link &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasCaptionPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.caption &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasHeadingPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.heading &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasButtonPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.button &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasBackgroundColorPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.background &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function ColorToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label || __( 'Elements' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\theadingLevel={ 3 }\n\t\t\tclassName=\"color-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"color-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nexport default function ColorPanel( {\n\tas: Wrapper = ColorToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tlabel,\n\tchildren,\n\tcontrastWarning,\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tallColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\t// Links\n\tconst showLinkPanel = useHasLinkPanel( settings );\n\tconst linkColor = decodeValue(\n\t\tinheritedValue?.elements?.link?.color?.text\n\t);\n\tconst userLinkColor = decodeValue( value?.elements?.link?.color?.text );\n\tconst setLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hoverLinkColor = decodeValue(\n\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst userHoverLinkColor = decodeValue(\n\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst setHoverLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLink = () => !! userLinkColor || !! userHoverLinkColor;\n\tconst resetLink = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably(\n\t\t\tnewValue,\n\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tonChange( newValue );\n\t};\n\n\tconst showCaptionPanel = useHasCaptionPanel( settings );\n\tconst showButtonPanel = useHasButtonPanel( settings );\n\tconst showHeadingPanel = useHasHeadingPanel( settings );\n\n\t// Elements\n\tconst elements = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'caption',\n\t\t\t\tlabel: __( 'Captions' ),\n\t\t\t\tshowPanel: showCaptionPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'button',\n\t\t\t\tlabel: __( 'Button' ),\n\t\t\t\tshowPanel: showButtonPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'heading',\n\t\t\t\tlabel: __( 'Heading' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h1',\n\t\t\t\tlabel: __( 'H1' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h2',\n\t\t\t\tlabel: __( 'H2' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h3',\n\t\t\t\tlabel: __( 'H3' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h4',\n\t\t\t\tlabel: __( 'H4' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h5',\n\t\t\t\tlabel: __( 'H5' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h6',\n\t\t\t\tlabel: __( 'H6' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t],\n\t\t[ showCaptionPanel, showButtonPanel, showHeadingPanel ]\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\telements: {\n\t\t\t\t\t...previousValue?.elements,\n\t\t\t\t\tlink: {\n\t\t\t\t\t\t...previousValue?.elements?.link,\n\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t':hover': {\n\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...elements.reduce( ( acc, element ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[ element.name ]: {\n\t\t\t\t\t\t\t\t...previousValue?.elements?.[ element.name ],\n\t\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[ elements ]\n\t);\n\n\tconst items = [\n\t\tshowLinkPanel && {\n\t\t\tkey: 'link',\n\t\t\tlabel: __( 'Link' ),\n\t\t\thasValue: hasLink,\n\t\t\tresetValue: resetLink,\n\t\t\tisShownByDefault: defaultControls.link,\n\t\t\tindicators: [ linkColor, hoverLinkColor ],\n\t\t\tcontrastWarning,\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'link',\n\t\t\t\t\tlabel: __( 'Default' ),\n\t\t\t\t\tinheritedValue: linkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setLinkColor,\n\t\t\t\t\tuserValue: userLinkColor,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: 'hover',\n\t\t\t\t\tlabel: __( 'Hover' ),\n\t\t\t\t\tinheritedValue: hoverLinkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color\n\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setHoverLinkColor,\n\t\t\t\t\tuserValue: userHoverLinkColor,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t].filter( Boolean );\n\n\telements.forEach( ( { name, label: elementLabel, showPanel } ) => {\n\t\tif ( ! showPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementBackgroundColor = decodeValue(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradient = decodeValue(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextColor = decodeValue(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst elementBackgroundUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradientUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst hasElement = () =>\n\t\t\t!! (\n\t\t\t\telementTextUserColor ||\n\t\t\t\telementBackgroundUserColor ||\n\t\t\t\telementGradientUserColor\n\t\t\t);\n\t\tconst resetElement = () => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tundefined\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tnewValue.elements[ name ].color.text = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\n\t\tconst setElementTextColor = ( newTextColor, newSlug ) => {\n\t\t\tonChange(\n\t\t\t\tsetImmutably(\n\t\t\t\t\tvalue,\n\t\t\t\t\t[ 'elements', name, 'color', 'text' ],\n\t\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\t\tallColors,\n\t\t\t\t\t\tnewTextColor,\n\t\t\t\t\t\tnewSlug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tconst setElementBackgroundColor = ( newBackgroundColor, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\tallColors,\n\t\t\t\t\tnewBackgroundColor,\n\t\t\t\t\tnewSlug\n\t\t\t\t)\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\tconst setElementGradient = ( newGradient ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'gradient' ],\n\t\t\t\tencodeGradientValue( newGradient )\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.background = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\t// Background color is not supported for `caption`\n\t\t// as there isn't yet a way to set padding for the element.\n\t\tconst supportsBackground = name !== 'caption';\n\n\t\titems.push( {\n\t\t\tkey: name,\n\t\t\tlabel: elementLabel,\n\t\t\thasValue: hasElement,\n\t\t\tresetValue: resetElement,\n\t\t\tisShownByDefault: defaultControls[ name ],\n\t\t\tindicators: supportsBackground\n\t\t\t\t? [\n\t\t\t\t\t\telementTextColor,\n\t\t\t\t\t\telementGradient ?? elementBackgroundColor,\n\t\t\t\t ]\n\t\t\t\t: [ elementTextColor ],\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\tuserValue: elementTextUserColor,\n\t\t\t\t},\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\tinheritedValue: elementBackgroundColor,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color\n\t\t\t\t\t\t\t\t?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementBackgroundColor,\n\t\t\t\t\t\tuserValue: elementBackgroundUserColor,\n\t\t\t\t\t},\n\t\t\t\thasGradientColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\tinheritedValue: elementGradient,\n\t\t\t\t\t\tsetValue: setElementGradient,\n\t\t\t\t\t\tuserValue: elementGradientUserColor,\n\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t},\n\t\t\t].filter( Boolean ),\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\tlabel={ label }\n\t\t>\n\t\t\t{ items.map( ( item ) => {\n\t\t\t\tconst { key, ...restItem } = item;\n\t\t\t\treturn (\n\t\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t{ ...restItem }\n\t\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t\t\tgradients,\n\t\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ children }\n\t\t</Wrapper>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getCSSValueFromRawStyle } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport {\n\tuseColorsPerOrigin,\n\tuseGradientsPerOrigin,\n\tuseColorGradientSettings,\n} from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\nimport { isGlobalStylesInheritanceEnabled } from './inheritance';\n\n// Despite the \"ColorPanel\" name, this gates only the element-level color\n// controls (link, heading, button, caption, h1–h6) — surfaced as the\n// \"Elements\" panel in the block inspector and the \"Colors\" screen in\n// Global Styles. Top-level text and background color moved to the\n// Typography and Background panels, so this returns false for blocks\n// whose only color support is text and/or background.\nexport function useHasColorPanel( settings ) {\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn hasLinkPanel || hasHeadingPanel || hasButtonPanel || hasCaptionPanel;\n}\n\nexport function useHasTextPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.text &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasLinkPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.link &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasCaptionPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.caption &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasHeadingPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.heading &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasButtonPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.button &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasBackgroundColorPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.background &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function ColorToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label || __( 'Elements' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\theadingLevel={ 3 }\n\t\t\tclassName=\"color-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"color-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nexport default function ColorPanel( {\n\tas: Wrapper = ColorToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tlabel,\n\tchildren,\n\tcontrastWarning,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tallColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\t// When an inherited preset isn't in the panel's palette, `decodeValue`\n\t// returns the raw `var:preset|…` token rather than a paintable colour.\n\t// Fall back to its CSS custom property so the swatch still renders.\n\tconst decodeInheritedColor = ( rawValue ) =>\n\t\tgetCSSValueFromRawStyle( decodeValue( rawValue ) );\n\n\t// Links\n\tconst showLinkPanel = useHasLinkPanel( settings );\n\tconst linkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.color?.text\n\t);\n\tconst userLinkColor = decodeValue( value?.elements?.link?.color?.text );\n\tconst setLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hoverLinkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst userHoverLinkColor = decodeValue(\n\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst setHoverLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLink = () => !! userLinkColor || !! userHoverLinkColor;\n\tconst resetLink = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably(\n\t\t\tnewValue,\n\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tonChange( newValue );\n\t};\n\n\tconst showCaptionPanel = useHasCaptionPanel( settings );\n\tconst showButtonPanel = useHasButtonPanel( settings );\n\tconst showHeadingPanel = useHasHeadingPanel( settings );\n\n\t// Elements\n\tconst elements = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'caption',\n\t\t\t\tlabel: __( 'Captions' ),\n\t\t\t\tshowPanel: showCaptionPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'button',\n\t\t\t\tlabel: __( 'Button' ),\n\t\t\t\tshowPanel: showButtonPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'heading',\n\t\t\t\tlabel: __( 'Heading' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h1',\n\t\t\t\tlabel: __( 'H1' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h2',\n\t\t\t\tlabel: __( 'H2' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h3',\n\t\t\t\tlabel: __( 'H3' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h4',\n\t\t\t\tlabel: __( 'H4' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h5',\n\t\t\t\tlabel: __( 'H5' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h6',\n\t\t\t\tlabel: __( 'H6' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t],\n\t\t[ showCaptionPanel, showButtonPanel, showHeadingPanel ]\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\telements: {\n\t\t\t\t\t...previousValue?.elements,\n\t\t\t\t\tlink: {\n\t\t\t\t\t\t...previousValue?.elements?.link,\n\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t':hover': {\n\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...elements.reduce( ( acc, element ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[ element.name ]: {\n\t\t\t\t\t\t\t\t...previousValue?.elements?.[ element.name ],\n\t\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[ elements ]\n\t);\n\n\tconst items = [\n\t\tshowLinkPanel && {\n\t\t\tkey: 'link',\n\t\t\tlabel: __( 'Link' ),\n\t\t\thasValue: hasLink,\n\t\t\tresetValue: resetLink,\n\t\t\tisShownByDefault: defaultControls.link,\n\t\t\tindicators: [\n\t\t\t\tuserLinkColor ?? linkColor,\n\t\t\t\tuserHoverLinkColor ?? hoverLinkColor,\n\t\t\t],\n\t\t\tisPlaceholder:\n\t\t\t\tuserLinkColor === undefined &&\n\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t( linkColor !== undefined || hoverLinkColor !== undefined ),\n\t\t\thasInheritedValue:\n\t\t\t\tlinkColor !== undefined || hoverLinkColor !== undefined,\n\t\t\tcontrastWarning,\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'link',\n\t\t\t\t\tlabel: __( 'Default' ),\n\t\t\t\t\tinheritedValue: linkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setLinkColor,\n\t\t\t\t\tuserValue: userLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserLinkColor === undefined && linkColor !== undefined,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: 'hover',\n\t\t\t\t\tlabel: __( 'Hover' ),\n\t\t\t\t\tinheritedValue: hoverLinkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color\n\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setHoverLinkColor,\n\t\t\t\t\tuserValue: userHoverLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t\t\thoverLinkColor !== undefined,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t].filter( Boolean );\n\n\telements.forEach( ( { name, label: elementLabel, showPanel } ) => {\n\t\tif ( ! showPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementBackgroundColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradient = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst elementBackgroundUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradientUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst hasElement = () =>\n\t\t\t!! (\n\t\t\t\telementTextUserColor ||\n\t\t\t\telementBackgroundUserColor ||\n\t\t\t\telementGradientUserColor\n\t\t\t);\n\t\tconst resetElement = () => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tundefined\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tnewValue.elements[ name ].color.text = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\n\t\tconst setElementTextColor = ( newTextColor, newSlug ) => {\n\t\t\tonChange(\n\t\t\t\tsetImmutably(\n\t\t\t\t\tvalue,\n\t\t\t\t\t[ 'elements', name, 'color', 'text' ],\n\t\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\t\tallColors,\n\t\t\t\t\t\tnewTextColor,\n\t\t\t\t\t\tnewSlug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tconst setElementBackgroundColor = ( newBackgroundColor, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\tallColors,\n\t\t\t\t\tnewBackgroundColor,\n\t\t\t\t\tnewSlug\n\t\t\t\t)\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\tconst setElementGradient = ( newGradient, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'gradient' ],\n\t\t\t\tencodeGradientValue( newGradient, newSlug )\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.background = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\t// Background color is not supported for `caption`\n\t\t// as there isn't yet a way to set padding for the element.\n\t\tconst supportsBackground = name !== 'caption';\n\n\t\t// Per-tab placeholder flags. The item-level placeholder is active when\n\t\t// there is no local color on any axis and at least one inherited color.\n\t\tconst isElementTextPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementTextColor !== undefined;\n\t\tconst isElementBackgroundPlaceholder =\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementBackgroundColor !== undefined;\n\t\tconst isElementGradientPlaceholder =\n\t\t\telementGradientUserColor === undefined &&\n\t\t\telementGradient !== undefined;\n\t\tconst isElementPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementGradientUserColor === undefined &&\n\t\t\t( elementTextColor !== undefined ||\n\t\t\t\telementBackgroundColor !== undefined ||\n\t\t\t\telementGradient !== undefined );\n\t\tconst hasElementInheritedValue =\n\t\t\telementTextColor !== undefined ||\n\t\t\telementBackgroundColor !== undefined ||\n\t\t\telementGradient !== undefined;\n\n\t\titems.push( {\n\t\t\tkey: name,\n\t\t\tlabel: elementLabel,\n\t\t\thasValue: hasElement,\n\t\t\tresetValue: resetElement,\n\t\t\tisShownByDefault: defaultControls[ name ],\n\t\t\tindicators: supportsBackground\n\t\t\t\t? [\n\t\t\t\t\t\telementTextUserColor ?? elementTextColor,\n\t\t\t\t\t\telementGradientUserColor ??\n\t\t\t\t\t\t\telementGradient ??\n\t\t\t\t\t\t\telementBackgroundUserColor ??\n\t\t\t\t\t\t\telementBackgroundColor,\n\t\t\t\t ]\n\t\t\t\t: [ elementTextUserColor ?? elementTextColor ],\n\t\t\tisPlaceholder: isElementPlaceholder,\n\t\t\thasInheritedValue: hasElementInheritedValue,\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\tuserValue: elementTextUserColor,\n\t\t\t\t\tisPlaceholder: isElementTextPlaceholder,\n\t\t\t\t},\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\tinheritedValue: elementBackgroundColor,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color\n\t\t\t\t\t\t\t\t?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementBackgroundColor,\n\t\t\t\t\t\tuserValue: elementBackgroundUserColor,\n\t\t\t\t\t\tisPlaceholder: isElementBackgroundPlaceholder,\n\t\t\t\t\t},\n\t\t\t\thasGradientColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\tinheritedValue: elementGradient,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementGradient,\n\t\t\t\t\t\tuserValue: elementGradientUserColor,\n\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\tisPlaceholder: isElementGradientPlaceholder,\n\t\t\t\t\t},\n\t\t\t].filter( Boolean ),\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\tlabel={ label }\n\t\t>\n\t\t\t{ items.map( ( item ) => {\n\t\t\t\tconst { key, ...restItem } = item;\n\t\t\t\treturn (\n\t\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t{ ...restItem }\n\t\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t\t\tgradients,\n\t\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ children }\n\t\t</Wrapper>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["ToolsPanel", "ColorGradientDropdownItem"]
7
7
  }