@wordpress/block-editor 15.19.1-next.v.202605131006.0 → 15.20.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 (352) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/build/components/block-card/index.cjs +51 -41
  3. package/build/components/block-card/index.cjs.map +3 -3
  4. package/build/components/block-heading-level-dropdown/heading-level-icon.cjs.map +3 -3
  5. package/build/components/block-icon/index.cjs +7 -1
  6. package/build/components/block-icon/index.cjs.map +3 -3
  7. package/build/components/block-inspector/index.cjs +156 -11
  8. package/build/components/block-inspector/index.cjs.map +3 -3
  9. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs +38 -0
  10. package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs.map +7 -0
  11. package/build/components/block-list/use-block-props/index.cjs +1 -1
  12. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  13. package/build/components/block-list/use-block-props/use-focus-handler.cjs +3 -4
  14. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
  15. package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
  16. package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
  17. package/build/components/block-lock/modal.cjs.map +3 -3
  18. package/build/components/block-patterns-list/index.cjs +13 -2
  19. package/build/components/block-patterns-list/index.cjs.map +2 -2
  20. package/build/components/block-popover/index.cjs +13 -3
  21. package/build/components/block-popover/index.cjs.map +2 -2
  22. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  23. package/build/components/block-visibility/modal.cjs.map +3 -3
  24. package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
  25. package/build/components/colors-gradients/control.cjs +7 -4
  26. package/build/components/colors-gradients/control.cjs.map +2 -2
  27. package/build/components/global-styles/advanced-panel.cjs +24 -22
  28. package/build/components/global-styles/advanced-panel.cjs.map +3 -3
  29. package/build/components/global-styles/color-panel.cjs +95 -58
  30. package/build/components/global-styles/color-panel.cjs.map +2 -2
  31. package/build/components/global-styles/dimensions-panel.cjs +11 -5
  32. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  33. package/build/components/global-styles/index.cjs +3 -0
  34. package/build/components/global-styles/index.cjs.map +2 -2
  35. package/build/components/global-styles/shadow-panel-components.cjs +38 -26
  36. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  37. package/build/components/global-styles/state-control-badges.cjs +69 -0
  38. package/build/components/global-styles/state-control-badges.cjs.map +7 -0
  39. package/build/components/global-styles/state-control.cjs +54 -63
  40. package/build/components/global-styles/state-control.cjs.map +3 -3
  41. package/build/components/iframe/index.cjs +0 -3
  42. package/build/components/iframe/index.cjs.map +2 -2
  43. package/build/components/iframe/use-scale-canvas.cjs +4 -1
  44. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  45. package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
  46. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  47. package/build/components/inserter/index.cjs +1 -0
  48. package/build/components/inserter/index.cjs.map +2 -2
  49. package/build/components/inserter/media-tab/media-preview.cjs +27 -18
  50. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  51. package/build/components/inserter/media-tab/utils.cjs +1 -1
  52. package/build/components/inserter/media-tab/utils.cjs.map +2 -2
  53. package/build/components/inserter/panel.cjs.map +3 -3
  54. package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
  55. package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
  56. package/build/components/inspector-controls/fill.cjs +14 -4
  57. package/build/components/inspector-controls/fill.cjs.map +2 -2
  58. package/build/components/inspector-controls/groups.cjs +2 -0
  59. package/build/components/inspector-controls/groups.cjs.map +2 -2
  60. package/build/components/inspector-controls-tabs/index.cjs +13 -8
  61. package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
  62. package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
  63. package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
  64. package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
  65. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
  66. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
  67. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  68. package/build/components/list-view/block-select-button.cjs +20 -8
  69. package/build/components/list-view/block-select-button.cjs.map +2 -2
  70. package/build/components/list-view/block.cjs +2 -1
  71. package/build/components/list-view/block.cjs.map +2 -2
  72. package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
  73. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  74. package/build/components/preset-input-control/index.cjs.map +3 -3
  75. package/build/components/provider/use-media-upload-settings.cjs +1 -0
  76. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  77. package/build/components/rich-text/event-listeners/enter.cjs +9 -2
  78. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  79. package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
  80. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  81. package/build/hooks/background.cjs +13 -3
  82. package/build/hooks/background.cjs.map +2 -2
  83. package/build/hooks/block-fields/link/index.cjs.map +3 -3
  84. package/build/hooks/block-fields/media/index.cjs.map +3 -3
  85. package/build/hooks/block-style-state.cjs +112 -0
  86. package/build/hooks/block-style-state.cjs.map +7 -0
  87. package/build/hooks/border.cjs +13 -3
  88. package/build/hooks/border.cjs.map +2 -2
  89. package/build/hooks/color.cjs +28 -9
  90. package/build/hooks/color.cjs.map +2 -2
  91. package/build/hooks/dimensions.cjs +15 -6
  92. package/build/hooks/dimensions.cjs.map +2 -2
  93. package/build/hooks/layout-child.cjs +147 -61
  94. package/build/hooks/layout-child.cjs.map +2 -2
  95. package/build/hooks/layout.cjs +263 -56
  96. package/build/hooks/layout.cjs.map +3 -3
  97. package/build/hooks/state-utils.cjs +94 -0
  98. package/build/hooks/state-utils.cjs.map +7 -0
  99. package/build/hooks/states.cjs +124 -0
  100. package/build/hooks/states.cjs.map +7 -0
  101. package/build/hooks/style.cjs +304 -17
  102. package/build/hooks/style.cjs.map +3 -3
  103. package/build/hooks/typography.cjs +14 -5
  104. package/build/hooks/typography.cjs.map +2 -2
  105. package/build/layouts/constrained.cjs +128 -55
  106. package/build/layouts/constrained.cjs.map +3 -3
  107. package/build/layouts/flex.cjs +119 -31
  108. package/build/layouts/flex.cjs.map +3 -3
  109. package/build/layouts/grid.cjs +103 -40
  110. package/build/layouts/grid.cjs.map +3 -3
  111. package/build/private-apis.cjs +2 -0
  112. package/build/private-apis.cjs.map +2 -2
  113. package/build/store/private-actions.cjs +18 -0
  114. package/build/store/private-actions.cjs.map +2 -2
  115. package/build/store/private-keys.cjs +10 -2
  116. package/build/store/private-keys.cjs.map +2 -2
  117. package/build/store/private-selectors.cjs +26 -2
  118. package/build/store/private-selectors.cjs.map +2 -2
  119. package/build/store/reducer.cjs +70 -1
  120. package/build/store/reducer.cjs.map +2 -2
  121. package/build/store/utils.cjs +1 -1
  122. package/build/store/utils.cjs.map +2 -2
  123. package/build/utils/color-values.cjs +44 -0
  124. package/build/utils/color-values.cjs.map +7 -0
  125. package/build-module/components/block-card/index.mjs +52 -45
  126. package/build-module/components/block-card/index.mjs.map +2 -2
  127. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
  128. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
  129. package/build-module/components/block-icon/index.mjs +8 -2
  130. package/build-module/components/block-icon/index.mjs.map +2 -2
  131. package/build-module/components/block-inspector/index.mjs +166 -13
  132. package/build-module/components/block-inspector/index.mjs.map +2 -2
  133. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
  134. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
  135. package/build-module/components/block-list/use-block-props/index.mjs +1 -1
  136. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  137. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +7 -5
  138. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  139. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +28 -15
  140. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
  141. package/build-module/components/block-lock/modal.mjs +4 -4
  142. package/build-module/components/block-lock/modal.mjs.map +2 -2
  143. package/build-module/components/block-patterns-list/index.mjs +14 -4
  144. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  145. package/build-module/components/block-popover/index.mjs +13 -3
  146. package/build-module/components/block-popover/index.mjs.map +2 -2
  147. package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
  148. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  149. package/build-module/components/block-visibility/modal.mjs +2 -2
  150. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  151. package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
  152. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  153. package/build-module/components/colors-gradients/control.mjs +7 -4
  154. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  155. package/build-module/components/global-styles/advanced-panel.mjs +25 -27
  156. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  157. package/build-module/components/global-styles/color-panel.mjs +96 -59
  158. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  159. package/build-module/components/global-styles/dimensions-panel.mjs +14 -5
  160. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  161. package/build-module/components/global-styles/index.mjs +2 -0
  162. package/build-module/components/global-styles/index.mjs.map +2 -2
  163. package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
  164. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  165. package/build-module/components/global-styles/state-control-badges.mjs +48 -0
  166. package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
  167. package/build-module/components/global-styles/state-control.mjs +57 -71
  168. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  169. package/build-module/components/iframe/index.mjs +0 -3
  170. package/build-module/components/iframe/index.mjs.map +2 -2
  171. package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
  172. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  173. package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
  174. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  175. package/build-module/components/inserter/index.mjs +1 -0
  176. package/build-module/components/inserter/index.mjs.map +2 -2
  177. package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
  178. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  179. package/build-module/components/inserter/media-tab/utils.mjs +1 -1
  180. package/build-module/components/inserter/media-tab/utils.mjs.map +2 -2
  181. package/build-module/components/inserter/panel.mjs +2 -2
  182. package/build-module/components/inserter/panel.mjs.map +2 -2
  183. package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
  184. package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
  185. package/build-module/components/inspector-controls/fill.mjs +18 -5
  186. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  187. package/build-module/components/inspector-controls/groups.mjs +2 -0
  188. package/build-module/components/inspector-controls/groups.mjs.map +2 -2
  189. package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
  190. package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
  191. package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
  192. package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
  193. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
  194. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  195. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
  196. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  197. package/build-module/components/list-view/block-select-button.mjs +20 -9
  198. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  199. package/build-module/components/list-view/block.mjs +2 -1
  200. package/build-module/components/list-view/block.mjs.map +2 -2
  201. package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
  202. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  203. package/build-module/components/preset-input-control/index.mjs +2 -2
  204. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  205. package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
  206. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  207. package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
  208. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  209. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
  210. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  211. package/build-module/hooks/background.mjs +18 -3
  212. package/build-module/hooks/background.mjs.map +2 -2
  213. package/build-module/hooks/block-fields/link/index.mjs +3 -3
  214. package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
  215. package/build-module/hooks/block-fields/media/index.mjs +3 -3
  216. package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
  217. package/build-module/hooks/block-style-state.mjs +79 -0
  218. package/build-module/hooks/block-style-state.mjs.map +7 -0
  219. package/build-module/hooks/border.mjs +18 -3
  220. package/build-module/hooks/border.mjs.map +2 -2
  221. package/build-module/hooks/color.mjs +33 -9
  222. package/build-module/hooks/color.mjs.map +2 -2
  223. package/build-module/hooks/dimensions.mjs +20 -6
  224. package/build-module/hooks/dimensions.mjs.map +2 -2
  225. package/build-module/hooks/layout-child.mjs +141 -61
  226. package/build-module/hooks/layout-child.mjs.map +2 -2
  227. package/build-module/hooks/layout.mjs +270 -58
  228. package/build-module/hooks/layout.mjs.map +2 -2
  229. package/build-module/hooks/state-utils.mjs +64 -0
  230. package/build-module/hooks/state-utils.mjs.map +7 -0
  231. package/build-module/hooks/states.mjs +85 -0
  232. package/build-module/hooks/states.mjs.map +7 -0
  233. package/build-module/hooks/style.mjs +309 -18
  234. package/build-module/hooks/style.mjs.map +2 -2
  235. package/build-module/hooks/typography.mjs +19 -5
  236. package/build-module/hooks/typography.mjs.map +2 -2
  237. package/build-module/layouts/constrained.mjs +130 -57
  238. package/build-module/layouts/constrained.mjs.map +2 -2
  239. package/build-module/layouts/flex.mjs +123 -35
  240. package/build-module/layouts/flex.mjs.map +2 -2
  241. package/build-module/layouts/grid.mjs +105 -42
  242. package/build-module/layouts/grid.mjs.map +2 -2
  243. package/build-module/private-apis.mjs +4 -0
  244. package/build-module/private-apis.mjs.map +2 -2
  245. package/build-module/store/private-actions.mjs +16 -0
  246. package/build-module/store/private-actions.mjs.map +2 -2
  247. package/build-module/store/private-keys.mjs +7 -1
  248. package/build-module/store/private-keys.mjs.map +2 -2
  249. package/build-module/store/private-selectors.mjs +25 -2
  250. package/build-module/store/private-selectors.mjs.map +2 -2
  251. package/build-module/store/reducer.mjs +69 -1
  252. package/build-module/store/reducer.mjs.map +2 -2
  253. package/build-module/store/utils.mjs +5 -2
  254. package/build-module/store/utils.mjs.map +2 -2
  255. package/build-module/utils/color-values.mjs +19 -0
  256. package/build-module/utils/color-values.mjs.map +7 -0
  257. package/build-style/content-rtl.css +18 -3
  258. package/build-style/content.css +18 -3
  259. package/build-style/style-rtl.css +14 -17
  260. package/build-style/style.css +14 -17
  261. package/package.json +41 -41
  262. package/src/components/audio-player/index.native.js +7 -3
  263. package/src/components/block-card/index.js +67 -60
  264. package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
  265. package/src/components/block-icon/index.js +5 -2
  266. package/src/components/block-icon/index.native.js +2 -2
  267. package/src/components/block-inspector/index.js +153 -7
  268. package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
  269. package/src/components/block-list/block-selection-button.native.js +3 -3
  270. package/src/components/block-list/content.scss +0 -6
  271. package/src/components/block-list/use-block-props/index.js +1 -1
  272. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
  273. package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
  274. package/src/components/block-lock/modal.js +4 -4
  275. package/src/components/block-patterns-list/index.js +14 -5
  276. package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
  277. package/src/components/block-patterns-list/style.scss +0 -1
  278. package/src/components/block-popover/index.js +20 -10
  279. package/src/components/block-toolbar/switch-section-style.js +2 -2
  280. package/src/components/block-visibility/modal.js +2 -2
  281. package/src/components/block-visibility/viewport-visibility-info.js +2 -2
  282. package/src/components/colors/test/with-colors.js +1 -1
  283. package/src/components/colors-gradients/control.js +10 -8
  284. package/src/components/colors-gradients/test/control.js +98 -1
  285. package/src/components/global-styles/advanced-panel.js +44 -39
  286. package/src/components/global-styles/color-panel.js +133 -60
  287. package/src/components/global-styles/dimensions-panel.js +17 -4
  288. package/src/components/global-styles/index.js +1 -0
  289. package/src/components/global-styles/shadow-panel-components.js +29 -19
  290. package/src/components/global-styles/state-control-badges.js +58 -0
  291. package/src/components/global-styles/state-control.js +28 -36
  292. package/src/components/global-styles/test/color-panel.js +135 -0
  293. package/src/components/iframe/index.js +0 -3
  294. package/src/components/iframe/use-scale-canvas.js +8 -2
  295. package/src/components/inserter/hooks/use-patterns-state.js +12 -7
  296. package/src/components/inserter/index.js +1 -0
  297. package/src/components/inserter/media-tab/media-preview.js +29 -20
  298. package/src/components/inserter/media-tab/utils.js +1 -1
  299. package/src/components/inserter/panel.js +2 -2
  300. package/src/components/inserter/style.scss +1 -0
  301. package/src/components/inserter-button/index.native.js +5 -2
  302. package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
  303. package/src/components/inspector-controls/fill.js +18 -5
  304. package/src/components/inspector-controls/groups.js +2 -0
  305. package/src/components/inspector-controls-tabs/index.js +9 -5
  306. package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
  307. package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
  308. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
  309. package/src/components/list-view/block-select-button.js +19 -9
  310. package/src/components/list-view/block.js +6 -1
  311. package/src/components/media-replace-flow/style.scss +0 -18
  312. package/src/components/preset-input-control/custom-value-controls.js +13 -6
  313. package/src/components/preset-input-control/index.js +2 -2
  314. package/src/components/provider/use-media-upload-settings.js +1 -0
  315. package/src/components/rich-text/event-listeners/enter.js +14 -2
  316. package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
  317. package/src/components/unsupported-block-details/index.native.js +6 -2
  318. package/src/components/video-player/index.native.js +2 -2
  319. package/src/components/warning/index.native.js +2 -2
  320. package/src/hooks/background.js +59 -37
  321. package/src/hooks/block-fields/link/index.js +3 -3
  322. package/src/hooks/block-fields/media/index.js +3 -3
  323. package/src/hooks/block-style-state.js +127 -0
  324. package/src/hooks/border.js +25 -6
  325. package/src/hooks/color.js +40 -18
  326. package/src/hooks/dimensions.js +32 -11
  327. package/src/hooks/layout-child.js +179 -62
  328. package/src/hooks/layout.js +349 -75
  329. package/src/hooks/layout.scss +6 -0
  330. package/src/hooks/state-utils.js +158 -0
  331. package/src/hooks/states.js +109 -0
  332. package/src/hooks/style.js +456 -19
  333. package/src/hooks/test/block-style-state.js +270 -0
  334. package/src/hooks/test/layout.js +185 -0
  335. package/src/hooks/test/state-utils.js +193 -0
  336. package/src/hooks/test/style.js +301 -1
  337. package/src/hooks/typography.js +33 -14
  338. package/src/layouts/constrained.js +182 -95
  339. package/src/layouts/flex.js +141 -36
  340. package/src/layouts/grid.js +122 -32
  341. package/src/layouts/test/flex.js +57 -20
  342. package/src/private-apis.js +4 -0
  343. package/src/store/private-actions.js +32 -0
  344. package/src/store/private-keys.js +4 -0
  345. package/src/store/private-selectors.js +44 -2
  346. package/src/store/reducer.js +105 -1
  347. package/src/store/test/private-actions.js +26 -0
  348. package/src/store/test/private-selectors.js +90 -0
  349. package/src/store/test/reducer.js +363 -0
  350. package/src/store/utils.js +6 -2
  351. package/src/utils/color-values.js +28 -0
  352. package/src/utils/test/color-values.js +78 -0
@@ -1,9 +1,6 @@
1
1
  // packages/block-editor/src/components/global-styles/advanced-panel.js
2
- import {
3
- TextareaControl,
4
- Notice,
5
- __experimentalVStack as VStack
6
- } from "@wordpress/components";
2
+ import { TextareaControl, Notice } from "@wordpress/components";
3
+ import { Stack } from "@wordpress/ui";
7
4
  import { useState } from "@wordpress/element";
8
5
  import { __ } from "@wordpress/i18n";
9
6
  import { default as transformStyles } from "../../utils/transform-styles/index.mjs";
@@ -14,43 +11,44 @@ function validateCSS(css) {
14
11
  }
15
12
  return true;
16
13
  }
14
+ function getMarkupValidationError(css) {
15
+ return validateCSS(css) ? null : __("The custom CSS is invalid. Do not use <> markup.");
16
+ }
17
+ function getCSSValidationError(css) {
18
+ if (!css) {
19
+ return null;
20
+ }
21
+ const markupError = getMarkupValidationError(css);
22
+ if (markupError) {
23
+ return markupError;
24
+ }
25
+ const [transformed] = transformStyles(
26
+ [{ css }],
27
+ ".for-validation-only"
28
+ );
29
+ return transformed === null ? __("There is an error with your CSS structure.") : null;
30
+ }
17
31
  function AdvancedPanel({
18
32
  value,
19
33
  onChange,
20
34
  inheritedValue = value,
21
35
  help
22
36
  }) {
23
- const [cssError, setCSSError] = useState(null);
24
37
  const customCSS = inheritedValue?.css;
38
+ const [cssError, setCSSError] = useState(
39
+ () => getCSSValidationError(customCSS)
40
+ );
25
41
  function handleOnChange(newValue) {
26
42
  onChange({
27
43
  ...value,
28
44
  css: newValue
29
45
  });
30
- if (!validateCSS(newValue)) {
31
- setCSSError(
32
- __("The custom CSS is invalid. Do not use <> markup.")
33
- );
34
- return;
35
- }
36
- if (cssError) {
37
- setCSSError(null);
38
- }
46
+ setCSSError(getMarkupValidationError(newValue));
39
47
  }
40
48
  function handleOnBlur(event) {
41
- const cssValue = event?.target?.value;
42
- if (!cssValue || !validateCSS(cssValue)) {
43
- return;
44
- }
45
- const [transformed] = transformStyles(
46
- [{ css: cssValue }],
47
- ".for-validation-only"
48
- );
49
- setCSSError(
50
- transformed === null ? __("There is an error with your CSS structure.") : null
51
- );
49
+ setCSSError(getCSSValidationError(event?.target?.value));
52
50
  }
53
- return /* @__PURE__ */ jsxs(VStack, { spacing: 3, children: [
51
+ return /* @__PURE__ */ jsxs(Stack, { direction: "column", gap: "md", children: [
54
52
  cssError && /* @__PURE__ */ jsx(Notice, { status: "error", onRemove: () => setCSSError(null), children: cssError }),
55
53
  /* @__PURE__ */ jsx(
56
54
  TextareaControl,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/advanced-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tTextareaControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\n/**\n * Validates that a CSS string doesn't contain HTML markup.\n * Uses the same validation as the PHP/global styles REST API.\n *\n * @param {string} css The CSS string to validate.\n * @return {boolean} True if the CSS is valid, false otherwise.\n */\nexport function validateCSS( css ) {\n\t// Check for HTML markup.\n\tif ( typeof css === 'string' && /<\\/?\\w/.test( css ) ) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\thelp,\n} ) {\n\t// Custom CSS\n\tconst [ cssError, setCSSError ] = useState( null );\n\tconst customCSS = inheritedValue?.css;\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\n\t\t// Validate immediately on change for quick feedback.\n\t\tif ( ! validateCSS( newValue ) ) {\n\t\t\tsetCSSError(\n\t\t\t\t__( 'The custom CSS is invalid. Do not use <> markup.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear HTML markup error if CSS is now valid.\n\t\tif ( cssError ) {\n\t\t\tsetCSSError( null );\n\t\t}\n\t}\n\tfunction handleOnBlur( event ) {\n\t\tconst cssValue = event?.target?.value;\n\n\t\tif ( ! cssValue || ! validateCSS( cssValue ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the value is valid CSS structure on blur (more expensive check).\n\t\t// Pass a wrapping selector to ensure that `transformStyles` validates the CSS.\n\t\t// Note that the wrapping selector here is not used in the actual output of any styles.\n\t\tconst [ transformed ] = transformStyles(\n\t\t\t[ { css: cssValue } ],\n\t\t\t'.for-validation-only'\n\t\t);\n\n\t\tsetCSSError(\n\t\t\ttransformed === null\n\t\t\t\t? __( 'There is an error with your CSS structure.' )\n\t\t\t\t: null\n\t\t);\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ cssError && (\n\t\t\t\t<Notice status=\"error\" onRemove={ () => setCSSError( null ) }>\n\t\t\t\t\t{ cssError }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ __( 'Additional CSS' ) }\n\t\t\t\tvalue={ customCSS }\n\t\t\t\tonChange={ ( newValue ) => handleOnChange( newValue ) }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tclassName=\"block-editor-global-styles-advanced-panel__custom-css-input\"\n\t\t\t\tspellCheck={ false }\n\t\t\t\thelp={ help }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,gBAAgB;AACzB,SAAS,UAAU;AAKnB,SAAS,WAAW,uBAAuB;AAoEzC,SAEE,KAFF;AA3DK,SAAS,YAAa,KAAM;AAElC,MAAK,OAAO,QAAQ,YAAY,SAAS,KAAM,GAAI,GAAI;AACtD,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAEe,SAAR,cAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AACD,GAAI;AAEH,QAAM,CAAE,UAAU,WAAY,IAAI,SAAU,IAAK;AACjD,QAAM,YAAY,gBAAgB;AAClC,WAAS,eAAgB,UAAW;AACnC,aAAU;AAAA,MACT,GAAG;AAAA,MACH,KAAK;AAAA,IACN,CAAE;AAGF,QAAK,CAAE,YAAa,QAAS,GAAI;AAChC;AAAA,QACC,GAAI,kDAAmD;AAAA,MACxD;AACA;AAAA,IACD;AAGA,QAAK,UAAW;AACf,kBAAa,IAAK;AAAA,IACnB;AAAA,EACD;AACA,WAAS,aAAc,OAAQ;AAC9B,UAAM,WAAW,OAAO,QAAQ;AAEhC,QAAK,CAAE,YAAY,CAAE,YAAa,QAAS,GAAI;AAC9C;AAAA,IACD;AAKA,UAAM,CAAE,WAAY,IAAI;AAAA,MACvB,CAAE,EAAE,KAAK,SAAS,CAAE;AAAA,MACpB;AAAA,IACD;AAEA;AAAA,MACC,gBAAgB,OACb,GAAI,4CAA6C,IACjD;AAAA,IACJ;AAAA,EACD;AAEA,SACC,qBAAC,UAAO,SAAU,GACf;AAAA,gBACD,oBAAC,UAAO,QAAO,SAAQ,UAAW,MAAM,YAAa,IAAK,GACvD,oBACH;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,gBAAiB;AAAA,QAC7B,OAAQ;AAAA,QACR,UAAW,CAAE,aAAc,eAAgB,QAAS;AAAA,QACpD,QAAS;AAAA,QACT,WAAU;AAAA,QACV,YAAa;AAAA,QACb;AAAA;AAAA,IACD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { TextareaControl, Notice } from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\n/**\n * Validates that a CSS string doesn't contain HTML markup.\n * Uses the same validation as the PHP/global styles REST API.\n *\n * @param {string} css The CSS string to validate.\n * @return {boolean} True if the CSS is valid, false otherwise.\n */\nexport function validateCSS( css ) {\n\t// Check for HTML markup.\n\tif ( typeof css === 'string' && /<\\/?\\w/.test( css ) ) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/**\n * Returns the error message string if the CSS contains HTML markup, or null if it is clean.\n *\n * @param {string} css The CSS string to check.\n * @return {string|null} An error message, or null if the CSS is valid.\n */\nfunction getMarkupValidationError( css ) {\n\treturn validateCSS( css )\n\t\t? null\n\t\t: __( 'The custom CSS is invalid. Do not use <> markup.' );\n}\n\n/**\n * Full CSS validation: markup check first (fast), then a CSS parser (slower).\n *\n * @param {string} css The CSS string to validate.\n * @return {string|null} An error message, or null if the CSS is valid.\n */\nfunction getCSSValidationError( css ) {\n\tif ( ! css ) {\n\t\treturn null;\n\t}\n\tconst markupError = getMarkupValidationError( css );\n\tif ( markupError ) {\n\t\treturn markupError;\n\t}\n\tconst [ transformed ] = transformStyles(\n\t\t[ { css } ],\n\t\t'.for-validation-only'\n\t);\n\treturn transformed === null\n\t\t? __( 'There is an error with your CSS structure.' )\n\t\t: null;\n}\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\thelp,\n} ) {\n\t// Custom CSS\n\tconst customCSS = inheritedValue?.css;\n\tconst [ cssError, setCSSError ] = useState( () =>\n\t\tgetCSSValidationError( customCSS )\n\t);\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\n\t\tsetCSSError( getMarkupValidationError( newValue ) );\n\t}\n\tfunction handleOnBlur( event ) {\n\t\tsetCSSError( getCSSValidationError( event?.target?.value ) );\n\t}\n\n\treturn (\n\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t{ cssError && (\n\t\t\t\t<Notice status=\"error\" onRemove={ () => setCSSError( null ) }>\n\t\t\t\t\t{ cssError }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ __( 'Additional CSS' ) }\n\t\t\t\tvalue={ customCSS }\n\t\t\t\tonChange={ ( newValue ) => handleOnChange( newValue ) }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tclassName=\"block-editor-global-styles-advanced-panel__custom-css-input\"\n\t\t\t\tspellCheck={ false }\n\t\t\t\thelp={ help }\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,iBAAiB,cAAc;AACxC,SAAS,aAAa;AACtB,SAAS,gBAAgB;AACzB,SAAS,UAAU;AAKnB,SAAS,WAAW,uBAAuB;AA4EzC,SAEE,KAFF;AAnEK,SAAS,YAAa,KAAM;AAElC,MAAK,OAAO,QAAQ,YAAY,SAAS,KAAM,GAAI,GAAI;AACtD,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAQA,SAAS,yBAA0B,KAAM;AACxC,SAAO,YAAa,GAAI,IACrB,OACA,GAAI,kDAAmD;AAC3D;AAQA,SAAS,sBAAuB,KAAM;AACrC,MAAK,CAAE,KAAM;AACZ,WAAO;AAAA,EACR;AACA,QAAM,cAAc,yBAA0B,GAAI;AAClD,MAAK,aAAc;AAClB,WAAO;AAAA,EACR;AACA,QAAM,CAAE,WAAY,IAAI;AAAA,IACvB,CAAE,EAAE,IAAI,CAAE;AAAA,IACV;AAAA,EACD;AACA,SAAO,gBAAgB,OACpB,GAAI,4CAA6C,IACjD;AACJ;AAEe,SAAR,cAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AACD,GAAI;AAEH,QAAM,YAAY,gBAAgB;AAClC,QAAM,CAAE,UAAU,WAAY,IAAI;AAAA,IAAU,MAC3C,sBAAuB,SAAU;AAAA,EAClC;AACA,WAAS,eAAgB,UAAW;AACnC,aAAU;AAAA,MACT,GAAG;AAAA,MACH,KAAK;AAAA,IACN,CAAE;AAEF,gBAAa,yBAA0B,QAAS,CAAE;AAAA,EACnD;AACA,WAAS,aAAc,OAAQ;AAC9B,gBAAa,sBAAuB,OAAO,QAAQ,KAAM,CAAE;AAAA,EAC5D;AAEA,SACC,qBAAC,SAAM,WAAU,UAAS,KAAI,MAC3B;AAAA,gBACD,oBAAC,UAAO,QAAO,SAAQ,UAAW,MAAM,YAAa,IAAK,GACvD,oBACH;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,gBAAiB;AAAA,QAC7B,OAAQ;AAAA,QACR,UAAW,CAAE,aAAc,eAAgB,QAAS;AAAA,QACpD,QAAS;AAAA,QACT,WAAU;AAAA,QACV,YAAa;AAAA,QACb;AAAA;AAAA,IACD;AAAA,KACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -13,7 +13,7 @@ import {
13
13
  Button,
14
14
  privateApis as componentsPrivateApis
15
15
  } from "@wordpress/components";
16
- import { useCallback, useRef } from "@wordpress/element";
16
+ import { useMemo, useRef } from "@wordpress/element";
17
17
  import { __ } from "@wordpress/i18n";
18
18
  import { getValueFromVariable } from "@wordpress/global-styles-engine";
19
19
  import { reset as resetIcon } from "@wordpress/icons";
@@ -21,6 +21,7 @@ import ColorGradientControl from "../colors-gradients/control.mjs";
21
21
  import { useColorsPerOrigin, useGradientsPerOrigin } from "./hooks.mjs";
22
22
  import { useToolsPanelDropdownMenuProps } from "./utils.mjs";
23
23
  import { setImmutably } from "../../utils/object.mjs";
24
+ import { extractPresetSlug } from "../../utils/color-values.mjs";
24
25
  import { unlock } from "../../lock-unlock.mjs";
25
26
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
26
27
  function useHasColorPanel(settings) {
@@ -88,6 +89,13 @@ function ColorToolsPanel({
88
89
  }
89
90
  );
90
91
  }
92
+ function encodeColorValueWithPalette(allColors, colorValue, slug) {
93
+ if (slug) {
94
+ return "var:preset|color|" + slug;
95
+ }
96
+ const colorObject = allColors.find(({ color }) => color === colorValue);
97
+ return colorObject ? "var:preset|color|" + colorObject.slug : colorValue;
98
+ }
91
99
  var DEFAULT_CONTROLS = {
92
100
  text: true,
93
101
  background: true,
@@ -109,6 +117,7 @@ var LabeledColorIndicators = ({ indicators, label }) => /* @__PURE__ */ jsxs(HSt
109
117
  function ColorPanelTab({
110
118
  isGradient,
111
119
  inheritedValue,
120
+ inheritedSlug,
112
121
  userValue,
113
122
  setValue,
114
123
  colorGradientControlSettings
@@ -121,6 +130,7 @@ function ColorPanelTab({
121
130
  enableAlpha: true,
122
131
  __experimentalIsRenderedInSidebar: true,
123
132
  colorValue: isGradient ? void 0 : inheritedValue,
133
+ colorSlug: isGradient ? void 0 : inheritedSlug,
124
134
  gradientValue: isGradient ? inheritedValue : void 0,
125
135
  onColorChange: isGradient ? void 0 : setValue,
126
136
  onGradientChange: isGradient ? setValue : void 0,
@@ -258,15 +268,10 @@ function ColorPanel({
258
268
  const hasBackgroundGradientSupport = !!settings?.background?.gradient;
259
269
  const showGradientColors = hasGradientColors && !hasBackgroundGradientSupport;
260
270
  const decodeValue = (rawValue) => getValueFromVariable({ settings }, "", rawValue);
261
- const encodeColorValue = (colorValue) => {
262
- const allColors = colors.flatMap(
263
- ({ colors: originColors }) => originColors
264
- );
265
- const colorObject = allColors.find(
266
- ({ color }) => color === colorValue
267
- );
268
- return colorObject ? "var:preset|color|" + colorObject.slug : colorValue;
269
- };
271
+ const allColors = useMemo(
272
+ () => colors.flatMap(({ colors: originColors }) => originColors),
273
+ [colors]
274
+ );
270
275
  const encodeGradientValue = (gradientValue) => {
271
276
  const allGradients = gradients.flatMap(
272
277
  ({ gradients: originGradients }) => originGradients
@@ -282,11 +287,11 @@ function ColorPanel({
282
287
  const gradient = decodeValue(inheritedValue?.color?.gradient);
283
288
  const userGradient = decodeValue(value?.color?.gradient);
284
289
  const hasBackground = () => !!userBackgroundColor || !hasBackgroundGradientSupport && !!userGradient;
285
- const setBackgroundColor = (newColor) => {
290
+ const setBackgroundColor = (newColor, newSlug) => {
286
291
  const newValue = setImmutably(
287
292
  value,
288
293
  ["color", "background"],
289
- encodeColorValue(newColor)
294
+ encodeColorValueWithPalette(allColors, newColor, newSlug)
290
295
  );
291
296
  if (!hasBackgroundGradientSupport) {
292
297
  newValue.color.gradient = void 0;
@@ -318,12 +323,12 @@ function ColorPanel({
318
323
  inheritedValue?.elements?.link?.color?.text
319
324
  );
320
325
  const userLinkColor = decodeValue(value?.elements?.link?.color?.text);
321
- const setLinkColor = (newColor) => {
326
+ const setLinkColor = (newColor, newSlug) => {
322
327
  onChange(
323
328
  setImmutably(
324
329
  value,
325
330
  ["elements", "link", "color", "text"],
326
- encodeColorValue(newColor)
331
+ encodeColorValueWithPalette(allColors, newColor, newSlug)
327
332
  )
328
333
  );
329
334
  };
@@ -333,12 +338,12 @@ function ColorPanel({
333
338
  const userHoverLinkColor = decodeValue(
334
339
  value?.elements?.link?.[":hover"]?.color?.text
335
340
  );
336
- const setHoverLinkColor = (newColor) => {
341
+ const setHoverLinkColor = (newColor, newSlug) => {
337
342
  onChange(
338
343
  setImmutably(
339
344
  value,
340
345
  ["elements", "link", ":hover", "color", "text"],
341
- encodeColorValue(newColor)
346
+ encodeColorValueWithPalette(allColors, newColor, newSlug)
342
347
  )
343
348
  );
344
349
  };
@@ -357,20 +362,23 @@ function ColorPanel({
357
362
  onChange(newValue);
358
363
  };
359
364
  const showTextPanel = useHasTextPanel(settings);
365
+ const showCaptionPanel = useHasCaptionPanel(settings);
366
+ const showButtonPanel = useHasButtonPanel(settings);
367
+ const showHeadingPanel = useHasHeadingPanel(settings);
360
368
  const textColor = decodeValue(inheritedValue?.color?.text);
361
369
  const userTextColor = decodeValue(value?.color?.text);
362
370
  const hasTextColor = () => !!userTextColor;
363
- const setTextColor = (newColor) => {
371
+ const setTextColor = (newColor, newSlug) => {
364
372
  let changedObject = setImmutably(
365
373
  value,
366
374
  ["color", "text"],
367
- encodeColorValue(newColor)
375
+ encodeColorValueWithPalette(allColors, newColor, newSlug)
368
376
  );
369
- if (textColor === linkColor) {
377
+ if (inheritedValue?.color?.text === inheritedValue?.elements?.link?.color?.text) {
370
378
  changedObject = setImmutably(
371
379
  changedObject,
372
380
  ["elements", "link", "color", "text"],
373
- encodeColorValue(newColor)
381
+ encodeColorValueWithPalette(allColors, newColor, newSlug)
374
382
  );
375
383
  }
376
384
  onChange(changedObject);
@@ -380,77 +388,74 @@ function ColorPanel({
380
388
  {
381
389
  name: "caption",
382
390
  label: __("Captions"),
383
- showPanel: useHasCaptionPanel(settings)
391
+ showPanel: showCaptionPanel
384
392
  },
385
393
  {
386
394
  name: "button",
387
395
  label: __("Button"),
388
- showPanel: useHasButtonPanel(settings)
396
+ showPanel: showButtonPanel
389
397
  },
390
398
  {
391
399
  name: "heading",
392
400
  label: __("Heading"),
393
- showPanel: useHasHeadingPanel(settings)
401
+ showPanel: showHeadingPanel
394
402
  },
395
403
  {
396
404
  name: "h1",
397
405
  label: __("H1"),
398
- showPanel: useHasHeadingPanel(settings)
406
+ showPanel: showHeadingPanel
399
407
  },
400
408
  {
401
409
  name: "h2",
402
410
  label: __("H2"),
403
- showPanel: useHasHeadingPanel(settings)
411
+ showPanel: showHeadingPanel
404
412
  },
405
413
  {
406
414
  name: "h3",
407
415
  label: __("H3"),
408
- showPanel: useHasHeadingPanel(settings)
416
+ showPanel: showHeadingPanel
409
417
  },
410
418
  {
411
419
  name: "h4",
412
420
  label: __("H4"),
413
- showPanel: useHasHeadingPanel(settings)
421
+ showPanel: showHeadingPanel
414
422
  },
415
423
  {
416
424
  name: "h5",
417
425
  label: __("H5"),
418
- showPanel: useHasHeadingPanel(settings)
426
+ showPanel: showHeadingPanel
419
427
  },
420
428
  {
421
429
  name: "h6",
422
430
  label: __("H6"),
423
- showPanel: useHasHeadingPanel(settings)
431
+ showPanel: showHeadingPanel
424
432
  }
425
433
  ];
426
- const resetAllFilter = useCallback(
427
- (previousValue) => {
428
- return {
429
- ...previousValue,
430
- color: void 0,
431
- elements: {
432
- ...previousValue?.elements,
433
- link: {
434
- ...previousValue?.elements?.link,
435
- color: void 0,
436
- ":hover": {
434
+ const resetAllFilter = (previousValue) => {
435
+ return {
436
+ ...previousValue,
437
+ color: void 0,
438
+ elements: {
439
+ ...previousValue?.elements,
440
+ link: {
441
+ ...previousValue?.elements?.link,
442
+ color: void 0,
443
+ ":hover": {
444
+ color: void 0
445
+ }
446
+ },
447
+ ...elements.reduce((acc, element) => {
448
+ return {
449
+ ...acc,
450
+ [element.name]: {
451
+ ...previousValue?.elements?.[element.name],
437
452
  color: void 0
438
453
  }
439
- },
440
- ...elements.reduce((acc, element) => {
441
- return {
442
- ...acc,
443
- [element.name]: {
444
- ...previousValue?.elements?.[element.name],
445
- color: void 0
446
- }
447
- };
448
- }, {})
449
- }
450
- };
451
- },
452
- [elements]
453
- );
454
+ };
455
+ }, {})
456
+ }
457
+ };
458
+ };
454
459
  const items = [
455
460
  showTextPanel && {
456
461
  key: "text",
@@ -464,6 +469,10 @@ function ColorPanel({
464
469
  key: "text",
465
470
  label: __("Text"),
466
471
  inheritedValue: textColor,
472
+ inheritedSlug: extractPresetSlug(
473
+ inheritedValue?.color?.text,
474
+ "color"
475
+ ),
467
476
  setValue: setTextColor,
468
477
  userValue: userTextColor
469
478
  }
@@ -483,6 +492,10 @@ function ColorPanel({
483
492
  key: "background",
484
493
  label: __("Color"),
485
494
  inheritedValue: backgroundColor,
495
+ inheritedSlug: extractPresetSlug(
496
+ inheritedValue?.color?.background,
497
+ "color"
498
+ ),
486
499
  setValue: setBackgroundColor,
487
500
  userValue: userBackgroundColor
488
501
  },
@@ -508,6 +521,10 @@ function ColorPanel({
508
521
  key: "link",
509
522
  label: __("Default"),
510
523
  inheritedValue: linkColor,
524
+ inheritedSlug: extractPresetSlug(
525
+ inheritedValue?.elements?.link?.color?.text,
526
+ "color"
527
+ ),
511
528
  setValue: setLinkColor,
512
529
  userValue: userLinkColor
513
530
  },
@@ -515,6 +532,10 @@ function ColorPanel({
515
532
  key: "hover",
516
533
  label: __("Hover"),
517
534
  inheritedValue: hoverLinkColor,
535
+ inheritedSlug: extractPresetSlug(
536
+ inheritedValue?.elements?.link?.[":hover"]?.color?.text,
537
+ "color"
538
+ ),
518
539
  setValue: setHoverLinkColor,
519
540
  userValue: userHoverLinkColor
520
541
  }
@@ -554,20 +575,28 @@ function ColorPanel({
554
575
  newValue.elements[name].color.text = void 0;
555
576
  onChange(newValue);
556
577
  };
557
- const setElementTextColor = (newTextColor) => {
578
+ const setElementTextColor = (newTextColor, newSlug) => {
558
579
  onChange(
559
580
  setImmutably(
560
581
  value,
561
582
  ["elements", name, "color", "text"],
562
- encodeColorValue(newTextColor)
583
+ encodeColorValueWithPalette(
584
+ allColors,
585
+ newTextColor,
586
+ newSlug
587
+ )
563
588
  )
564
589
  );
565
590
  };
566
- const setElementBackgroundColor = (newBackgroundColor) => {
591
+ const setElementBackgroundColor = (newBackgroundColor, newSlug) => {
567
592
  const newValue = setImmutably(
568
593
  value,
569
594
  ["elements", name, "color", "background"],
570
- encodeColorValue(newBackgroundColor)
595
+ encodeColorValueWithPalette(
596
+ allColors,
597
+ newBackgroundColor,
598
+ newSlug
599
+ )
571
600
  );
572
601
  newValue.elements[name].color.gradient = void 0;
573
602
  onChange(newValue);
@@ -600,6 +629,10 @@ function ColorPanel({
600
629
  key: "text",
601
630
  label: __("Text"),
602
631
  inheritedValue: elementTextColor,
632
+ inheritedSlug: extractPresetSlug(
633
+ inheritedValue?.elements?.[name]?.color?.text,
634
+ "color"
635
+ ),
603
636
  setValue: setElementTextColor,
604
637
  userValue: elementTextUserColor
605
638
  },
@@ -607,6 +640,10 @@ function ColorPanel({
607
640
  key: "background",
608
641
  label: __("Background"),
609
642
  inheritedValue: elementBackgroundColor,
643
+ inheritedSlug: extractPresetSlug(
644
+ inheritedValue?.elements?.[name]?.color?.background,
645
+ "color"
646
+ ),
610
647
  setValue: setElementBackgroundColor,
611
648
  userValue: elementBackgroundUserColor
612
649
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/color-panel.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\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 { useCallback, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport { reset as resetIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientControl from '../colors-gradients/control';\nimport { useColorsPerOrigin, useGradientsPerOrigin } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { unlock } from '../../lock-unlock';\n\nexport function useHasColorPanel( settings ) {\n\tconst hasTextPanel = useHasTextPanel( settings );\n\tconst hasBackgroundPanel = useHasBackgroundColorPanel( settings );\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn (\n\t\thasTextPanel ||\n\t\thasBackgroundPanel ||\n\t\thasLinkPanel ||\n\t\thasHeadingPanel ||\n\t\thasButtonPanel ||\n\t\thasCaptionPanel\n\t);\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\ttext: true,\n\tbackground: true,\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n};\n\nconst { Tabs } = unlock( componentsPrivateApis );\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 ColorPanelTab( {\n\tisGradient,\n\tinheritedValue,\n\tuserValue,\n\tsetValue,\n\tcolorGradientControlSettings,\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\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/>\n\t);\n}\n\nexport function ColorPanelDropdown( {\n\tlabel,\n\thasValue,\n\tresetValue,\n\tisShownByDefault,\n\tindicators,\n\ttabs,\n\tcolorGradientControlSettings,\n\tpanelId,\n\tclassName = 'block-editor-tools-panel-color-gradient-settings__item',\n} ) {\n\tconst currentTab = tabs.find( ( tab ) => tab.userValue !== undefined );\n\tconst { key: firstTabKey, ...firstTab } = tabs[ 0 ] ?? {};\n\tconst colorGradientDropdownButtonRef = useRef( undefined );\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName={ 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{ 'is-open': isOpen }\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\t// Return focus to parent button\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</>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\trenderContent={ () => (\n\t\t\t\t\t<DropdownContentWrapper paddingSize=\"none\">\n\t\t\t\t\t\t<div className=\"block-editor-panel-color-gradient-settings__dropdown-content\">\n\t\t\t\t\t\t\t{ tabs.length === 1 && (\n\t\t\t\t\t\t\t\t<ColorPanelTab\n\t\t\t\t\t\t\t\t\tkey={ firstTabKey }\n\t\t\t\t\t\t\t\t\t{ ...firstTab }\n\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\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{ tabs.length > 1 && (\n\t\t\t\t\t\t\t\t<Tabs defaultTabId={ currentTab?.key }>\n\t\t\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ tab.key }\n\t\t\t\t\t\t\t\t\t\t\t\ttabId={ tab.key }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ tab.label }\n\t\t\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Tabs.TabList>\n\n\t\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\t\t\t\tconst { key: tabKey, ...restTabProps } =\n\t\t\t\t\t\t\t\t\t\t\ttab;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\ttabId={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<ColorPanelTab\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...restTabProps }\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</Tabs.TabPanel>\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</Tabs>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DropdownContentWrapper>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</ToolsPanelItem>\n\t);\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} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst areCustomGradientsEnabled = settings?.color?.customGradient;\n\tconst hasSolidColors = colors.length > 0 || areCustomSolidsEnabled;\n\tconst hasGradientColors = gradients.length > 0 || areCustomGradientsEnabled;\n\t// When a block opts into background.gradient support, the gradient\n\t// picker moves to the Background panel. Hide it here to avoid\n\t// showing duplicate gradient controls.\n\tconst hasBackgroundGradientSupport = !! settings?.background?.gradient;\n\tconst showGradientColors =\n\t\thasGradientColors && ! hasBackgroundGradientSupport;\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\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 encodeGradientValue = ( gradientValue ) => {\n\t\tconst allGradients = gradients.flatMap(\n\t\t\t( { gradients: originGradients } ) => originGradients\n\t\t);\n\t\tconst gradientObject = allGradients.find(\n\t\t\t( { gradient } ) => gradient === gradientValue\n\t\t);\n\t\treturn gradientObject\n\t\t\t? 'var:preset|gradient|' + gradientObject.slug\n\t\t\t: gradientValue;\n\t};\n\n\t// BackgroundColor\n\tconst showBackgroundPanel = useHasBackgroundColorPanel( settings );\n\tconst backgroundColor = decodeValue( inheritedValue?.color?.background );\n\tconst userBackgroundColor = decodeValue( value?.color?.background );\n\tconst gradient = decodeValue( inheritedValue?.color?.gradient );\n\tconst userGradient = decodeValue( value?.color?.gradient );\n\tconst hasBackground = () =>\n\t\t!! userBackgroundColor ||\n\t\t( ! hasBackgroundGradientSupport && !! userGradient );\n\tconst setBackgroundColor = ( newColor ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tencodeColorValue( newColor )\n\t\t);\n\t\tif ( ! hasBackgroundGradientSupport ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\tconst setGradient = ( newGradient ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient )\n\t\t);\n\t\tnewValue.color.background = undefined;\n\t\tonChange( newValue );\n\t};\n\tconst resetBackground = () => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tundefined\n\t\t);\n\t\tif ( ! hasBackgroundGradientSupport ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\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 ) => {\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\tencodeColorValue( newColor )\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 ) => {\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\tencodeColorValue( newColor )\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\t// Text Color\n\tconst showTextPanel = useHasTextPanel( settings );\n\tconst textColor = decodeValue( inheritedValue?.color?.text );\n\tconst userTextColor = decodeValue( value?.color?.text );\n\tconst hasTextColor = () => !! userTextColor;\n\tconst setTextColor = ( newColor ) => {\n\t\tlet changedObject = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'text' ],\n\t\t\tencodeColorValue( newColor )\n\t\t);\n\t\tif ( textColor === linkColor ) {\n\t\t\tchangedObject = setImmutably(\n\t\t\t\tchangedObject,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tencodeColorValue( newColor )\n\t\t\t);\n\t\t}\n\n\t\tonChange( changedObject );\n\t};\n\tconst resetTextColor = () => setTextColor( undefined );\n\n\t// Elements\n\tconst elements = [\n\t\t{\n\t\t\tname: 'caption',\n\t\t\tlabel: __( 'Captions' ),\n\t\t\tshowPanel: useHasCaptionPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'button',\n\t\t\tlabel: __( 'Button' ),\n\t\t\tshowPanel: useHasButtonPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'heading',\n\t\t\tlabel: __( 'Heading' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h1',\n\t\t\tlabel: __( 'H1' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h2',\n\t\t\tlabel: __( 'H2' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h3',\n\t\t\tlabel: __( 'H3' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h4',\n\t\t\tlabel: __( 'H4' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h5',\n\t\t\tlabel: __( 'H5' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\n\t\t{\n\t\t\tname: 'h6',\n\t\t\tlabel: __( 'H6' ),\n\t\t\tshowPanel: useHasHeadingPanel( settings ),\n\t\t},\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\tcolor: undefined,\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\tshowTextPanel && {\n\t\t\tkey: 'text',\n\t\t\tlabel: __( 'Text' ),\n\t\t\thasValue: hasTextColor,\n\t\t\tresetValue: resetTextColor,\n\t\t\tisShownByDefault: defaultControls.text,\n\t\t\tindicators: [ textColor ],\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: textColor,\n\t\t\t\t\tsetValue: setTextColor,\n\t\t\t\t\tuserValue: userTextColor,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tshowBackgroundPanel && {\n\t\t\tkey: 'background',\n\t\t\tlabel: __( 'Background' ),\n\t\t\thasValue: hasBackground,\n\t\t\tresetValue: resetBackground,\n\t\t\tisShownByDefault: defaultControls.background,\n\t\t\tindicators: [\n\t\t\t\t( showGradientColors ? gradient : undefined ) ??\n\t\t\t\t\tbackgroundColor,\n\t\t\t],\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'background',\n\t\t\t\t\tlabel: __( 'Color' ),\n\t\t\t\t\tinheritedValue: backgroundColor,\n\t\t\t\t\tsetValue: setBackgroundColor,\n\t\t\t\t\tuserValue: userBackgroundColor,\n\t\t\t\t},\n\t\t\t\tshowGradientColors && {\n\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\tinheritedValue: gradient,\n\t\t\t\t\tsetValue: setGradient,\n\t\t\t\t\tuserValue: userGradient,\n\t\t\t\t\tisGradient: true,\n\t\t\t\t},\n\t\t\t].filter( Boolean ),\n\t\t},\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\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\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\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 ) => {\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\tencodeColorValue( newTextColor )\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tconst setElementBackgroundColor = ( newBackgroundColor ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tencodeColorValue( newBackgroundColor )\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\tconst supportsTextColor = true;\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:\n\t\t\t\tsupportsTextColor && supportsBackground\n\t\t\t\t\t? [\n\t\t\t\t\t\t\telementTextColor,\n\t\t\t\t\t\t\telementGradient ?? elementBackgroundColor,\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\tsupportsTextColor\n\t\t\t\t\t\t\t\t? elementTextColor\n\t\t\t\t\t\t\t\t: elementGradient ?? elementBackgroundColor,\n\t\t\t\t\t ],\n\t\t\ttabs: [\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsTextColor && {\n\t\t\t\t\t\tkey: 'text',\n\t\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\t\tuserValue: elementTextUserColor,\n\t\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\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<ColorPanelDropdown\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 * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\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 { useMemo, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport { reset as resetIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientControl from '../colors-gradients/control';\nimport { useColorsPerOrigin, useGradientsPerOrigin } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { extractPresetSlug } from '../../utils/color-values';\nimport { unlock } from '../../lock-unlock';\n\nexport function useHasColorPanel( settings ) {\n\tconst hasTextPanel = useHasTextPanel( settings );\n\tconst hasBackgroundPanel = useHasBackgroundColorPanel( settings );\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn (\n\t\thasTextPanel ||\n\t\thasBackgroundPanel ||\n\t\thasLinkPanel ||\n\t\thasHeadingPanel ||\n\t\thasButtonPanel ||\n\t\thasCaptionPanel\n\t);\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\n/**\n * Encodes a color value for storage in the style object.\n *\n * When a `slug` is provided it is used directly (slug-based selection path).\n * Otherwise the function falls back to looking up the hex value in the\n * palette; if found it encodes the slug, otherwise it stores the raw hex.\n *\n * Extracted to module scope so it is not re-created on every render.\n * Callers pass the flattened palette (`allColors`), computed once in `ColorPanel` from the per-origin `colors` array.\n *\n * @param {Array} allColors Flat array of `{ color, slug }` objects.\n * @param {string|void} colorValue Hex or CSS color string.\n * @param {string|void} slug Optional palette slug from slug-aware selection.\n * @return {string|void} Encoded value suitable for the style object.\n */\nfunction encodeColorValueWithPalette( allColors, colorValue, slug ) {\n\tif ( slug ) {\n\t\treturn 'var:preset|color|' + slug;\n\t}\n\tconst colorObject = allColors.find( ( { color } ) => color === colorValue );\n\treturn colorObject ? 'var:preset|color|' + colorObject.slug : colorValue;\n}\n\nconst DEFAULT_CONTROLS = {\n\ttext: true,\n\tbackground: true,\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n};\n\nconst { Tabs } = unlock( componentsPrivateApis );\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 ColorPanelTab( {\n\tisGradient,\n\tinheritedValue,\n\tinheritedSlug,\n\tuserValue,\n\tsetValue,\n\tcolorGradientControlSettings,\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/>\n\t);\n}\n\nexport function ColorPanelDropdown( {\n\tlabel,\n\thasValue,\n\tresetValue,\n\tisShownByDefault,\n\tindicators,\n\ttabs,\n\tcolorGradientControlSettings,\n\tpanelId,\n\tclassName = 'block-editor-tools-panel-color-gradient-settings__item',\n} ) {\n\tconst currentTab = tabs.find( ( tab ) => tab.userValue !== undefined );\n\tconst { key: firstTabKey, ...firstTab } = tabs[ 0 ] ?? {};\n\tconst colorGradientDropdownButtonRef = useRef( undefined );\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName={ 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{ 'is-open': isOpen }\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\t// Return focus to parent button\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</>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\trenderContent={ () => (\n\t\t\t\t\t<DropdownContentWrapper paddingSize=\"none\">\n\t\t\t\t\t\t<div className=\"block-editor-panel-color-gradient-settings__dropdown-content\">\n\t\t\t\t\t\t\t{ tabs.length === 1 && (\n\t\t\t\t\t\t\t\t<ColorPanelTab\n\t\t\t\t\t\t\t\t\tkey={ firstTabKey }\n\t\t\t\t\t\t\t\t\t{ ...firstTab }\n\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\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{ tabs.length > 1 && (\n\t\t\t\t\t\t\t\t<Tabs defaultTabId={ currentTab?.key }>\n\t\t\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ tab.key }\n\t\t\t\t\t\t\t\t\t\t\t\ttabId={ tab.key }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ tab.label }\n\t\t\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Tabs.TabList>\n\n\t\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\t\t\t\tconst { key: tabKey, ...restTabProps } =\n\t\t\t\t\t\t\t\t\t\t\ttab;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\ttabId={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<ColorPanelTab\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ tabKey }\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...restTabProps }\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGradientControlSettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</Tabs.TabPanel>\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</Tabs>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DropdownContentWrapper>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</ToolsPanelItem>\n\t);\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} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst areCustomGradientsEnabled = settings?.color?.customGradient;\n\tconst hasSolidColors = colors.length > 0 || areCustomSolidsEnabled;\n\tconst hasGradientColors = gradients.length > 0 || areCustomGradientsEnabled;\n\t// When a block opts into background.gradient support, the gradient\n\t// picker moves to the Background panel. Hide it here to avoid\n\t// showing duplicate gradient controls.\n\tconst hasBackgroundGradientSupport = !! settings?.background?.gradient;\n\tconst showGradientColors =\n\t\thasGradientColors && ! hasBackgroundGradientSupport;\n\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\tconst allColors = useMemo(\n\t\t() => colors.flatMap( ( { colors: originColors } ) => originColors ),\n\t\t[ colors ]\n\t);\n\n\tconst encodeGradientValue = ( gradientValue ) => {\n\t\tconst allGradients = gradients.flatMap(\n\t\t\t( { gradients: originGradients } ) => originGradients\n\t\t);\n\t\tconst gradientObject = allGradients.find(\n\t\t\t( { gradient } ) => gradient === gradientValue\n\t\t);\n\t\treturn gradientObject\n\t\t\t? 'var:preset|gradient|' + gradientObject.slug\n\t\t\t: gradientValue;\n\t};\n\n\t// BackgroundColor\n\tconst showBackgroundPanel = useHasBackgroundColorPanel( settings );\n\tconst backgroundColor = decodeValue( inheritedValue?.color?.background );\n\tconst userBackgroundColor = decodeValue( value?.color?.background );\n\tconst gradient = decodeValue( inheritedValue?.color?.gradient );\n\tconst userGradient = decodeValue( value?.color?.gradient );\n\tconst hasBackground = () =>\n\t\t!! userBackgroundColor ||\n\t\t( ! hasBackgroundGradientSupport && !! userGradient );\n\tconst setBackgroundColor = ( newColor, newSlug ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t);\n\t\tif ( ! hasBackgroundGradientSupport ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\tconst setGradient = ( newGradient ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient )\n\t\t);\n\t\tnewValue.color.background = undefined;\n\t\tonChange( newValue );\n\t};\n\tconst resetBackground = () => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tundefined\n\t\t);\n\t\tif ( ! hasBackgroundGradientSupport ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\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\t// Text Color\n\tconst showTextPanel = useHasTextPanel( settings );\n\tconst showCaptionPanel = useHasCaptionPanel( settings );\n\tconst showButtonPanel = useHasButtonPanel( settings );\n\tconst showHeadingPanel = useHasHeadingPanel( settings );\n\tconst textColor = decodeValue( inheritedValue?.color?.text );\n\tconst userTextColor = decodeValue( value?.color?.text );\n\tconst hasTextColor = () => !! userTextColor;\n\tconst setTextColor = ( newColor, newSlug ) => {\n\t\tlet changedObject = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'text' ],\n\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t);\n\t\t// Compare raw encoded references (e.g. `var:preset|color|slug`), not\n\t\t// decoded hex values. Two palette entries can share the same hex but\n\t\t// carry different slugs (e.g. `var:preset|color|dark-background` and\n\t\t// `var:preset|color|dark-text` both resolving to `#000`); comparing decoded\n\t\t// values would conflate them and incorrectly force the link color to\n\t\t// follow the text color even when the user deliberately chose a\n\t\t// different palette slot.\n\t\t//\n\t\t// Note: this is stricter than the previous decoded comparison.\n\t\t// If text and link were stored in different formats that resolved to\n\t\t// the same hex (e.g. one as `var:preset|color|x` and the other as\n\t\t// `var(--wp--preset--color--x)`), the old check would sync them\n\t\t// and this one will not. In practice this should not arise because\n\t\t// both values are written through the same encoding path.\n\t\tif (\n\t\t\tinheritedValue?.color?.text ===\n\t\t\tinheritedValue?.elements?.link?.color?.text\n\t\t) {\n\t\t\tchangedObject = setImmutably(\n\t\t\t\tchangedObject,\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\n\t\tonChange( changedObject );\n\t};\n\tconst resetTextColor = () => setTextColor( undefined );\n\n\t// Elements\n\tconst elements = [\n\t\t{\n\t\t\tname: 'caption',\n\t\t\tlabel: __( 'Captions' ),\n\t\t\tshowPanel: showCaptionPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'button',\n\t\t\tlabel: __( 'Button' ),\n\t\t\tshowPanel: showButtonPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'heading',\n\t\t\tlabel: __( 'Heading' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h1',\n\t\t\tlabel: __( 'H1' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h2',\n\t\t\tlabel: __( 'H2' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h3',\n\t\t\tlabel: __( 'H3' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h4',\n\t\t\tlabel: __( 'H4' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h5',\n\t\t\tlabel: __( 'H5' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t\t{\n\t\t\tname: 'h6',\n\t\t\tlabel: __( 'H6' ),\n\t\t\tshowPanel: showHeadingPanel,\n\t\t},\n\t];\n\n\tconst resetAllFilter = ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tcolor: undefined,\n\t\t\telements: {\n\t\t\t\t...previousValue?.elements,\n\t\t\t\tlink: {\n\t\t\t\t\t...previousValue?.elements?.link,\n\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t':hover': {\n\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t...elements.reduce( ( acc, element ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t[ element.name ]: {\n\t\t\t\t\t\t\t...previousValue?.elements?.[ element.name ],\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}, {} ),\n\t\t\t},\n\t\t};\n\t};\n\n\tconst items = [\n\t\tshowTextPanel && {\n\t\t\tkey: 'text',\n\t\t\tlabel: __( 'Text' ),\n\t\t\thasValue: hasTextColor,\n\t\t\tresetValue: resetTextColor,\n\t\t\tisShownByDefault: defaultControls.text,\n\t\t\tindicators: [ textColor ],\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: textColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setTextColor,\n\t\t\t\t\tuserValue: userTextColor,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tshowBackgroundPanel && {\n\t\t\tkey: 'background',\n\t\t\tlabel: __( 'Background' ),\n\t\t\thasValue: hasBackground,\n\t\t\tresetValue: resetBackground,\n\t\t\tisShownByDefault: defaultControls.background,\n\t\t\tindicators: [\n\t\t\t\t( showGradientColors ? gradient : undefined ) ??\n\t\t\t\t\tbackgroundColor,\n\t\t\t],\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'background',\n\t\t\t\t\tlabel: __( 'Color' ),\n\t\t\t\t\tinheritedValue: backgroundColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.color?.background,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setBackgroundColor,\n\t\t\t\t\tuserValue: userBackgroundColor,\n\t\t\t\t},\n\t\t\t\tshowGradientColors && {\n\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\tinheritedValue: gradient,\n\t\t\t\t\tsetValue: setGradient,\n\t\t\t\t\tuserValue: userGradient,\n\t\t\t\t\tisGradient: true,\n\t\t\t\t},\n\t\t\t].filter( Boolean ),\n\t\t},\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\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\tconst supportsTextColor = true;\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:\n\t\t\t\tsupportsTextColor && supportsBackground\n\t\t\t\t\t? [\n\t\t\t\t\t\t\telementTextColor,\n\t\t\t\t\t\t\telementGradient ?? elementBackgroundColor,\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\tsupportsTextColor\n\t\t\t\t\t\t\t\t? elementTextColor\n\t\t\t\t\t\t\t\t: elementGradient ?? elementBackgroundColor,\n\t\t\t\t\t ],\n\t\t\ttabs: [\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsTextColor && {\n\t\t\t\t\t\tkey: 'text',\n\t\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\t\tuserValue: elementTextUserColor,\n\t\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<ColorPanelDropdown\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": ";AAGA,OAAO,UAAU;AAKjB;AAAA,EACC,4BAA4B;AAAA,EAC5B,gCAAgC;AAAA,EAChC,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,wCAAwC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,OACT;AACP,SAAS,SAAS,cAAc;AAChC,SAAS,UAAU;AACnB,SAAS,4BAA4B;AACrC,SAAS,SAAS,iBAAiB;AAKnC,OAAO,0BAA0B;AACjC,SAAS,oBAAoB,6BAA6B;AAC1D,SAAS,sCAAsC;AAC/C,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,cAAc;AA0GpB,SA6HG,UA7HH,KAgDF,YAhDE;AAxGI,SAAS,iBAAkB,UAAW;AAC5C,QAAM,eAAe,gBAAiB,QAAS;AAC/C,QAAM,qBAAqB,2BAA4B,QAAS;AAChE,QAAM,eAAe,gBAAiB,QAAS;AAC/C,QAAM,kBAAkB,mBAAoB,QAAS;AACrD,QAAM,iBAAiB,kBAAmB,QAAS;AACnD,QAAM,kBAAkB,mBAAoB,QAAS;AAErD,SACC,gBACA,sBACA,gBACA,mBACA,kBACA;AAEF;AAEO,SAAS,gBAAiB,UAAW;AAC3C,QAAM,SAAS,mBAAoB,QAAS;AAC5C,SACC,UAAU,OAAO,SACf,QAAQ,SAAS,KAAK,UAAU,OAAO;AAE3C;AAEO,SAAS,gBAAiB,UAAW;AAC3C,QAAM,SAAS,mBAAoB,QAAS;AAC5C,SACC,UAAU,OAAO,SACf,QAAQ,SAAS,KAAK,UAAU,OAAO;AAE3C;AAEO,SAAS,mBAAoB,UAAW;AAC9C,QAAM,SAAS,mBAAoB,QAAS;AAC5C,SACC,UAAU,OAAO,YACf,QAAQ,SAAS,KAAK,UAAU,OAAO;AAE3C;AAEO,SAAS,mBAAoB,UAAW;AAC9C,QAAM,SAAS,mBAAoB,QAAS;AAC5C,QAAM,YAAY,sBAAuB,QAAS;AAClD,SACC,UAAU,OAAO,YACf,QAAQ,SAAS,KAClB,UAAU,OAAO,UACjB,WAAW,SAAS,KACpB,UAAU,OAAO;AAEpB;AAEO,SAAS,kBAAmB,UAAW;AAC7C,QAAM,SAAS,mBAAoB,QAAS;AAC5C,QAAM,YAAY,sBAAuB,QAAS;AAClD,SACC,UAAU,OAAO,WACf,QAAQ,SAAS,KAClB,UAAU,OAAO,UACjB,WAAW,SAAS,KACpB,UAAU,OAAO;AAEpB;AAEO,SAAS,2BAA4B,UAAW;AACtD,QAAM,SAAS,mBAAoB,QAAS;AAC5C,QAAM,YAAY,sBAAuB,QAAS;AAClD,SACC,UAAU,OAAO,eACf,QAAQ,SAAS,KAClB,UAAU,OAAO,UACjB,WAAW,SAAS,KACpB,UAAU,OAAO;AAEpB;AAEO,SAAS,gBAAiB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,oBAAoB,+BAA+B;AACzD,QAAM,WAAW,MAAM;AACtB,UAAM,eAAe,eAAgB,KAAM;AAC3C,aAAU,YAAa;AAAA,EACxB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,SAAS,GAAI,UAAW;AAAA,MAChC;AAAA,MACA;AAAA,MACA,iBAAe;AAAA,MACf,cAAe;AAAA,MACf,WAAU;AAAA,MACV,qCAAoC;AAAA,MACpC,oCAAmC;AAAA,MACnC;AAAA,MAEA,8BAAC,SAAI,WAAU,4CACZ,UACH;AAAA;AAAA,EACD;AAEF;AAiBA,SAAS,4BAA6B,WAAW,YAAY,MAAO;AACnE,MAAK,MAAO;AACX,WAAO,sBAAsB;AAAA,EAC9B;AACA,QAAM,cAAc,UAAU,KAAM,CAAE,EAAE,MAAM,MAAO,UAAU,UAAW;AAC1E,SAAO,cAAc,sBAAsB,YAAY,OAAO;AAC/D;AAEA,IAAM,mBAAmB;AAAA,EACxB,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACV;AAEA,IAAM,eAAe;AAAA,EACpB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AACR;AAEA,IAAM,EAAE,KAAK,IAAI,OAAQ,qBAAsB;AAE/C,IAAM,yBAAyB,CAAE,EAAE,YAAY,MAAM,MACpD,qBAAC,UAAO,SAAQ,cACf;AAAA,sBAAC,UAAO,WAAY,OAAQ,QAAS,IAClC,qBAAW,IAAK,CAAE,WAAW,UAC9B,oBAAC,QAAmB,UAAW,OAC9B,8BAAC,kBAAe,YAAa,WAAY,KAD9B,KAEZ,CACC,GACH;AAAA,EACA,oBAAC,YAAS,WAAU,0DACjB,iBACH;AAAA,GACD;AAGD,SAAS,cAAe;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL,WAAY;AAAA,MACZ,aAAW;AAAA,MACX,mCAAiC;AAAA,MACjC,YAAa,aAAa,SAAY;AAAA,MACtC,WAAY,aAAa,SAAY;AAAA,MACrC,eAAgB,aAAa,iBAAiB;AAAA,MAC9C,eAAgB,aAAa,SAAY;AAAA,MACzC,kBAAmB,aAAa,WAAW;AAAA,MAC3C,WAAY,mBAAmB;AAAA,MAC/B,cAAe;AAAA;AAAA,EAChB;AAEF;AAEO,SAAS,mBAAoB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACb,GAAI;AACH,QAAM,aAAa,KAAK,KAAM,CAAE,QAAS,IAAI,cAAc,MAAU;AACrE,QAAM,EAAE,KAAK,aAAa,GAAG,SAAS,IAAI,KAAM,CAAE,KAAK,CAAC;AACxD,QAAM,iCAAiC,OAAQ,MAAU;AACzD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAa;AAAA,MACb;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UACV,cAAe,CAAE,EAAE,UAAU,OAAO,MAAO;AAC1C,kBAAM,cAAc;AAAA,cACnB,SAAS;AAAA,cACT,WAAW;AAAA,gBACV;AAAA,gBACA,EAAE,WAAW,OAAO;AAAA,cACrB;AAAA,cACA,iBAAiB;AAAA,cACjB,KAAK;AAAA,YACN;AAEA,mBACC,iCACC;AAAA,kCAAC,UAAS,GAAG,aAAc,uBAAqB,MAC/C;AAAA,gBAAC;AAAA;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,cACD,GACD;AAAA,cACE,SAAS,KACV;AAAA,gBAAC;AAAA;AAAA,kBACA,uBAAqB;AAAA,kBACrB,OAAQ,GAAI,OAAQ;AAAA,kBACpB,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,MAAO;AAAA,kBACP,SAAU,MAAM;AACf,+BAAW;AACX,wBAAK,QAAS;AACb,+BAAS;AAAA,oBACV;AAEA,mDAA+B,SAAS,MAAM;AAAA,kBAC/C;AAAA;AAAA,cACD;AAAA,eAEF;AAAA,UAEF;AAAA,UACA,eAAgB,MACf,oBAAC,0BAAuB,aAAY,QACnC,+BAAC,SAAI,WAAU,gEACZ;AAAA,iBAAK,WAAW,KACjB;AAAA,cAAC;AAAA;AAAA,gBAEE,GAAG;AAAA,gBACL;AAAA;AAAA,cAFM;AAAA,YAKP;AAAA,YAEC,KAAK,SAAS,KACf,qBAAC,QAAK,cAAe,YAAY,KAChC;AAAA,kCAAC,KAAK,SAAL,EACE,eAAK,IAAK,CAAE,QACb;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBAEA,OAAQ,IAAI;AAAA,kBAEV,cAAI;AAAA;AAAA,gBAHA,IAAI;AAAA,cAIX,CACC,GACH;AAAA,cAEE,KAAK,IAAK,CAAE,QAAS;AACtB,sBAAM,EAAE,KAAK,QAAQ,GAAG,aAAa,IACpC;AACD,uBACC;AAAA,kBAAC,KAAK;AAAA,kBAAL;AAAA,oBAEA,OAAQ;AAAA,oBACR,WAAY;AAAA,oBAEZ;AAAA,sBAAC;AAAA;AAAA,wBAEE,GAAG;AAAA,wBACL;AAAA;AAAA,sBAFM;AAAA,oBAKP;AAAA;AAAA,kBAVM;AAAA,gBAWP;AAAA,cAEF,CAAE;AAAA,eACH;AAAA,aAEF,GACD;AAAA;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;AAEe,SAAR,WAA6B;AAAA,EACnC,IAAI,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AACD,GAAI;AACH,QAAM,SAAS,mBAAoB,QAAS;AAC5C,QAAM,YAAY,sBAAuB,QAAS;AAClD,QAAM,yBAAyB,UAAU,OAAO;AAChD,QAAM,4BAA4B,UAAU,OAAO;AACnD,QAAM,iBAAiB,OAAO,SAAS,KAAK;AAC5C,QAAM,oBAAoB,UAAU,SAAS,KAAK;AAIlD,QAAM,+BAA+B,CAAC,CAAE,UAAU,YAAY;AAC9D,QAAM,qBACL,qBAAqB,CAAE;AAExB,QAAM,cAAc,CAAE,aACrB,qBAAsB,EAAE,SAAS,GAAG,IAAI,QAAS;AAElD,QAAM,YAAY;AAAA,IACjB,MAAM,OAAO,QAAS,CAAE,EAAE,QAAQ,aAAa,MAAO,YAAa;AAAA,IACnE,CAAE,MAAO;AAAA,EACV;AAEA,QAAM,sBAAsB,CAAE,kBAAmB;AAChD,UAAM,eAAe,UAAU;AAAA,MAC9B,CAAE,EAAE,WAAW,gBAAgB,MAAO;AAAA,IACvC;AACA,UAAM,iBAAiB,aAAa;AAAA,MACnC,CAAE,EAAE,UAAAA,UAAS,MAAOA,cAAa;AAAA,IAClC;AACA,WAAO,iBACJ,yBAAyB,eAAe,OACxC;AAAA,EACJ;AAGA,QAAM,sBAAsB,2BAA4B,QAAS;AACjE,QAAM,kBAAkB,YAAa,gBAAgB,OAAO,UAAW;AACvE,QAAM,sBAAsB,YAAa,OAAO,OAAO,UAAW;AAClE,QAAM,WAAW,YAAa,gBAAgB,OAAO,QAAS;AAC9D,QAAM,eAAe,YAAa,OAAO,OAAO,QAAS;AACzD,QAAM,gBAAgB,MACrB,CAAC,CAAE,uBACD,CAAE,gCAAgC,CAAC,CAAE;AACxC,QAAM,qBAAqB,CAAE,UAAU,YAAa;AACnD,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,YAAa;AAAA,MACxB,4BAA6B,WAAW,UAAU,OAAQ;AAAA,IAC3D;AACA,QAAK,CAAE,8BAA+B;AACrC,eAAS,MAAM,WAAW;AAAA,IAC3B;AACA,aAAU,QAAS;AAAA,EACpB;AACA,QAAM,cAAc,CAAE,gBAAiB;AACtC,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,UAAW;AAAA,MACtB,oBAAqB,WAAY;AAAA,IAClC;AACA,aAAS,MAAM,aAAa;AAC5B,aAAU,QAAS;AAAA,EACpB;AACA,QAAM,kBAAkB,MAAM;AAC7B,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,YAAa;AAAA,MACxB;AAAA,IACD;AACA,QAAK,CAAE,8BAA+B;AACrC,eAAS,MAAM,WAAW;AAAA,IAC3B;AACA,aAAU,QAAS;AAAA,EACpB;AAGA,QAAM,gBAAgB,gBAAiB,QAAS;AAChD,QAAM,YAAY;AAAA,IACjB,gBAAgB,UAAU,MAAM,OAAO;AAAA,EACxC;AACA,QAAM,gBAAgB,YAAa,OAAO,UAAU,MAAM,OAAO,IAAK;AACtE,QAAM,eAAe,CAAE,UAAU,YAAa;AAC7C;AAAA,MACC;AAAA,QACC;AAAA,QACA,CAAE,YAAY,QAAQ,SAAS,MAAO;AAAA,QACtC,4BAA6B,WAAW,UAAU,OAAQ;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AACA,QAAM,iBAAiB;AAAA,IACtB,gBAAgB,UAAU,OAAQ,QAAS,GAAG,OAAO;AAAA,EACtD;AACA,QAAM,qBAAqB;AAAA,IAC1B,OAAO,UAAU,OAAQ,QAAS,GAAG,OAAO;AAAA,EAC7C;AACA,QAAM,oBAAoB,CAAE,UAAU,YAAa;AAClD;AAAA,MACC;AAAA,QACC;AAAA,QACA,CAAE,YAAY,QAAQ,UAAU,SAAS,MAAO;AAAA,QAChD,4BAA6B,WAAW,UAAU,OAAQ;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AACA,QAAM,UAAU,MAAM,CAAC,CAAE,iBAAiB,CAAC,CAAE;AAC7C,QAAM,YAAY,MAAM;AACvB,QAAI,WAAW;AAAA,MACd;AAAA,MACA,CAAE,YAAY,QAAQ,UAAU,SAAS,MAAO;AAAA,MAChD;AAAA,IACD;AACA,eAAW;AAAA,MACV;AAAA,MACA,CAAE,YAAY,QAAQ,SAAS,MAAO;AAAA,MACtC;AAAA,IACD;AACA,aAAU,QAAS;AAAA,EACpB;AAGA,QAAM,gBAAgB,gBAAiB,QAAS;AAChD,QAAM,mBAAmB,mBAAoB,QAAS;AACtD,QAAM,kBAAkB,kBAAmB,QAAS;AACpD,QAAM,mBAAmB,mBAAoB,QAAS;AACtD,QAAM,YAAY,YAAa,gBAAgB,OAAO,IAAK;AAC3D,QAAM,gBAAgB,YAAa,OAAO,OAAO,IAAK;AACtD,QAAM,eAAe,MAAM,CAAC,CAAE;AAC9B,QAAM,eAAe,CAAE,UAAU,YAAa;AAC7C,QAAI,gBAAgB;AAAA,MACnB;AAAA,MACA,CAAE,SAAS,MAAO;AAAA,MAClB,4BAA6B,WAAW,UAAU,OAAQ;AAAA,IAC3D;AAeA,QACC,gBAAgB,OAAO,SACvB,gBAAgB,UAAU,MAAM,OAAO,MACtC;AACD,sBAAgB;AAAA,QACf;AAAA,QACA,CAAE,YAAY,QAAQ,SAAS,MAAO;AAAA,QACtC,4BAA6B,WAAW,UAAU,OAAQ;AAAA,MAC3D;AAAA,IACD;AAEA,aAAU,aAAc;AAAA,EACzB;AACA,QAAM,iBAAiB,MAAM,aAAc,MAAU;AAGrD,QAAM,WAAW;AAAA,IAChB;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,UAAW;AAAA,MACtB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,QAAS;AAAA,MACpB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,SAAU;AAAA,MACrB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAO,GAAI,IAAK;AAAA,MAChB,WAAW;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,iBAAiB,CAAE,kBAAmB;AAC3C,WAAO;AAAA,MACN,GAAG;AAAA,MACH,OAAO;AAAA,MACP,UAAU;AAAA,QACT,GAAG,eAAe;AAAA,QAClB,MAAM;AAAA,UACL,GAAG,eAAe,UAAU;AAAA,UAC5B,OAAO;AAAA,UACP,UAAU;AAAA,YACT,OAAO;AAAA,UACR;AAAA,QACD;AAAA,QACA,GAAG,SAAS,OAAQ,CAAE,KAAK,YAAa;AACvC,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,CAAE,QAAQ,IAAK,GAAG;AAAA,cACjB,GAAG,eAAe,WAAY,QAAQ,IAAK;AAAA,cAC3C,OAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,GAAG,CAAC,CAAE;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,QAAM,QAAQ;AAAA,IACb,iBAAiB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO,GAAI,MAAO;AAAA,MAClB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,kBAAkB,gBAAgB;AAAA,MAClC,YAAY,CAAE,SAAU;AAAA,MACxB,MAAM;AAAA,QACL;AAAA,UACC,KAAK;AAAA,UACL,OAAO,GAAI,MAAO;AAAA,UAClB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,OAAO;AAAA,YACvB;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,IACD;AAAA,IACA,uBAAuB;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,GAAI,YAAa;AAAA,MACxB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,kBAAkB,gBAAgB;AAAA,MAClC,YAAY;AAAA,SACT,qBAAqB,WAAW,WACjC;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACL,kBAAkB;AAAA,UACjB,KAAK;AAAA,UACL,OAAO,GAAI,OAAQ;AAAA,UACnB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,OAAO;AAAA,YACvB;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,QACA,sBAAsB;AAAA,UACrB,KAAK;AAAA,UACL,OAAO,GAAI,UAAW;AAAA,UACtB,gBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,QACb;AAAA,MACD,EAAE,OAAQ,OAAQ;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO,GAAI,MAAO;AAAA,MAClB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,kBAAkB,gBAAgB;AAAA,MAClC,YAAY,CAAE,WAAW,cAAe;AAAA,MACxC,MAAM;AAAA,QACL;AAAA,UACC,KAAK;AAAA,UACL,OAAO,GAAI,SAAU;AAAA,UACrB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,UAAU,MAAM,OAAO;AAAA,YACvC;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,QACA;AAAA,UACC,KAAK;AAAA,UACL,OAAO,GAAI,OAAQ;AAAA,UACnB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,UAAU,OAAQ,QAAS,GAAG,OAC3C;AAAA,YACH;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,IACD;AAAA,EACD,EAAE,OAAQ,OAAQ;AAElB,WAAS,QAAS,CAAE,EAAE,MAAM,OAAO,cAAc,UAAU,MAAO;AACjE,QAAK,CAAE,WAAY;AAClB;AAAA,IACD;AAEA,UAAM,yBAAyB;AAAA,MAC9B,gBAAgB,WAAY,IAAK,GAAG,OAAO;AAAA,IAC5C;AACA,UAAM,kBAAkB;AAAA,MACvB,gBAAgB,WAAY,IAAK,GAAG,OAAO;AAAA,IAC5C;AACA,UAAM,mBAAmB;AAAA,MACxB,gBAAgB,WAAY,IAAK,GAAG,OAAO;AAAA,IAC5C;AACA,UAAM,6BAA6B;AAAA,MAClC,OAAO,WAAY,IAAK,GAAG,OAAO;AAAA,IACnC;AACA,UAAM,2BAA2B;AAAA,MAChC,OAAO,WAAY,IAAK,GAAG,OAAO;AAAA,IACnC;AACA,UAAM,uBAAuB;AAAA,MAC5B,OAAO,WAAY,IAAK,GAAG,OAAO;AAAA,IACnC;AACA,UAAM,aAAa,MAClB,CAAC,EACA,wBACA,8BACA;AAEF,UAAM,eAAe,MAAM;AAC1B,YAAM,WAAW;AAAA,QAChB;AAAA,QACA,CAAE,YAAY,MAAM,SAAS,YAAa;AAAA,QAC1C;AAAA,MACD;AACA,eAAS,SAAU,IAAK,EAAE,MAAM,WAAW;AAC3C,eAAS,SAAU,IAAK,EAAE,MAAM,OAAO;AACvC,eAAU,QAAS;AAAA,IACpB;AAEA,UAAM,sBAAsB,CAAE,cAAc,YAAa;AACxD;AAAA,QACC;AAAA,UACC;AAAA,UACA,CAAE,YAAY,MAAM,SAAS,MAAO;AAAA,UACpC;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACA,UAAM,4BAA4B,CAAE,oBAAoB,YAAa;AACpE,YAAM,WAAW;AAAA,QAChB;AAAA,QACA,CAAE,YAAY,MAAM,SAAS,YAAa;AAAA,QAC1C;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACA,eAAS,SAAU,IAAK,EAAE,MAAM,WAAW;AAC3C,eAAU,QAAS;AAAA,IACpB;AACA,UAAM,qBAAqB,CAAE,gBAAiB;AAC7C,YAAM,WAAW;AAAA,QAChB;AAAA,QACA,CAAE,YAAY,MAAM,SAAS,UAAW;AAAA,QACxC,oBAAqB,WAAY;AAAA,MAClC;AACA,eAAS,SAAU,IAAK,EAAE,MAAM,aAAa;AAC7C,eAAU,QAAS;AAAA,IACpB;AACA,UAAM,oBAAoB;AAG1B,UAAM,qBAAqB,SAAS;AAEpC,UAAM,KAAM;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,kBAAkB,gBAAiB,IAAK;AAAA,MACxC,YACC,qBAAqB,qBAClB;AAAA,QACA;AAAA,QACA,mBAAmB;AAAA,MACnB,IACA;AAAA,QACA,oBACG,mBACA,mBAAmB;AAAA,MACtB;AAAA,MACJ,MAAM;AAAA,QACL,kBACC,qBAAqB;AAAA,UACpB,KAAK;AAAA,UACL,OAAO,GAAI,MAAO;AAAA,UAClB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,WAAY,IAAK,GAAG,OAAO;AAAA,YAC3C;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,QACD,kBACC,sBAAsB;AAAA,UACrB,KAAK;AAAA,UACL,OAAO,GAAI,YAAa;AAAA,UACxB,gBAAgB;AAAA,UAChB,eAAe;AAAA,YACd,gBAAgB,WAAY,IAAK,GAAG,OACjC;AAAA,YACH;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,WAAW;AAAA,QACZ;AAAA,QACD,qBACC,sBAAsB;AAAA,UACrB,KAAK;AAAA,UACL,OAAO,GAAI,UAAW;AAAA,UACtB,gBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,QACb;AAAA,MACF,EAAE,OAAQ,OAAQ;AAAA,IACnB,CAAE;AAAA,EACH,CAAE;AAEF,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEE;AAAA,cAAM,IAAK,CAAE,SAAU;AACxB,gBAAM,EAAE,KAAK,GAAG,SAAS,IAAI;AAC7B,iBACC;AAAA,YAAC;AAAA;AAAA,cAEE,GAAG;AAAA,cACL,8BAA+B;AAAA,gBAC9B;AAAA,gBACA,qBAAqB,CAAE;AAAA,gBACvB;AAAA,gBACA,wBAAwB,CAAE;AAAA,cAC3B;AAAA,cACA;AAAA;AAAA,YARM;AAAA,UASP;AAAA,QAEF,CAAE;AAAA,QACA;AAAA;AAAA;AAAA,EACH;AAEF;",
6
6
  "names": ["gradient"]
7
7
  }