@wordpress/block-editor 15.19.1-next.v.202605131032.0 → 15.21.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 (342) hide show
  1. package/CHANGELOG.md +17 -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/use-focus-handler.cjs +3 -4
  12. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
  13. package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
  14. package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
  15. package/build/components/block-lock/modal.cjs.map +3 -3
  16. package/build/components/block-patterns-list/index.cjs +13 -2
  17. package/build/components/block-patterns-list/index.cjs.map +2 -2
  18. package/build/components/block-popover/index.cjs +13 -3
  19. package/build/components/block-popover/index.cjs.map +2 -2
  20. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  21. package/build/components/block-visibility/modal.cjs.map +3 -3
  22. package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
  23. package/build/components/child-layout-control/index.cjs +10 -5
  24. package/build/components/child-layout-control/index.cjs.map +2 -2
  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 +15 -8
  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/use-scale-canvas.cjs +4 -1
  42. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  43. package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
  44. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  45. package/build/components/inserter/index.cjs +1 -0
  46. package/build/components/inserter/index.cjs.map +2 -2
  47. package/build/components/inserter/media-tab/media-preview.cjs +27 -18
  48. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  49. package/build/components/inserter/panel.cjs.map +3 -3
  50. package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
  51. package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
  52. package/build/components/inspector-controls/fill.cjs +14 -4
  53. package/build/components/inspector-controls/fill.cjs.map +2 -2
  54. package/build/components/inspector-controls/groups.cjs +2 -0
  55. package/build/components/inspector-controls/groups.cjs.map +2 -2
  56. package/build/components/inspector-controls-tabs/index.cjs +13 -8
  57. package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
  58. package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
  59. package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
  60. package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
  61. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
  62. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
  63. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  64. package/build/components/list-view/block-select-button.cjs +20 -8
  65. package/build/components/list-view/block-select-button.cjs.map +2 -2
  66. package/build/components/list-view/block.cjs +2 -1
  67. package/build/components/list-view/block.cjs.map +2 -2
  68. package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
  69. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  70. package/build/components/preset-input-control/index.cjs.map +3 -3
  71. package/build/components/provider/use-media-upload-settings.cjs +1 -0
  72. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  73. package/build/components/rich-text/event-listeners/enter.cjs +9 -2
  74. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  75. package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
  76. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  77. package/build/hooks/background.cjs +13 -3
  78. package/build/hooks/background.cjs.map +2 -2
  79. package/build/hooks/block-fields/link/index.cjs.map +3 -3
  80. package/build/hooks/block-fields/media/index.cjs.map +3 -3
  81. package/build/hooks/block-style-state.cjs +112 -0
  82. package/build/hooks/block-style-state.cjs.map +7 -0
  83. package/build/hooks/border.cjs +13 -3
  84. package/build/hooks/border.cjs.map +2 -2
  85. package/build/hooks/color.cjs +28 -9
  86. package/build/hooks/color.cjs.map +2 -2
  87. package/build/hooks/dimensions.cjs +15 -6
  88. package/build/hooks/dimensions.cjs.map +2 -2
  89. package/build/hooks/layout-child.cjs +147 -61
  90. package/build/hooks/layout-child.cjs.map +2 -2
  91. package/build/hooks/layout.cjs +263 -56
  92. package/build/hooks/layout.cjs.map +3 -3
  93. package/build/hooks/state-utils.cjs +94 -0
  94. package/build/hooks/state-utils.cjs.map +7 -0
  95. package/build/hooks/states.cjs +124 -0
  96. package/build/hooks/states.cjs.map +7 -0
  97. package/build/hooks/style.cjs +304 -17
  98. package/build/hooks/style.cjs.map +3 -3
  99. package/build/hooks/typography.cjs +14 -5
  100. package/build/hooks/typography.cjs.map +2 -2
  101. package/build/layouts/constrained.cjs +128 -55
  102. package/build/layouts/constrained.cjs.map +3 -3
  103. package/build/layouts/flex.cjs +119 -31
  104. package/build/layouts/flex.cjs.map +3 -3
  105. package/build/layouts/grid.cjs +103 -40
  106. package/build/layouts/grid.cjs.map +3 -3
  107. package/build/private-apis.cjs +2 -0
  108. package/build/private-apis.cjs.map +2 -2
  109. package/build/store/private-actions.cjs +18 -0
  110. package/build/store/private-actions.cjs.map +2 -2
  111. package/build/store/private-keys.cjs +10 -2
  112. package/build/store/private-keys.cjs.map +2 -2
  113. package/build/store/private-selectors.cjs +32 -2
  114. package/build/store/private-selectors.cjs.map +2 -2
  115. package/build/store/reducer.cjs +70 -1
  116. package/build/store/reducer.cjs.map +2 -2
  117. package/build/store/utils.cjs +1 -1
  118. package/build/store/utils.cjs.map +2 -2
  119. package/build/utils/color-values.cjs +44 -0
  120. package/build/utils/color-values.cjs.map +7 -0
  121. package/build-module/components/block-card/index.mjs +52 -45
  122. package/build-module/components/block-card/index.mjs.map +2 -2
  123. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
  124. package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
  125. package/build-module/components/block-icon/index.mjs +8 -2
  126. package/build-module/components/block-icon/index.mjs.map +2 -2
  127. package/build-module/components/block-inspector/index.mjs +166 -13
  128. package/build-module/components/block-inspector/index.mjs.map +2 -2
  129. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
  130. package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
  131. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +7 -5
  132. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  133. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +28 -15
  134. package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
  135. package/build-module/components/block-lock/modal.mjs +4 -4
  136. package/build-module/components/block-lock/modal.mjs.map +2 -2
  137. package/build-module/components/block-patterns-list/index.mjs +14 -4
  138. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  139. package/build-module/components/block-popover/index.mjs +13 -3
  140. package/build-module/components/block-popover/index.mjs.map +2 -2
  141. package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
  142. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  143. package/build-module/components/block-visibility/modal.mjs +2 -2
  144. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  145. package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
  146. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  147. package/build-module/components/child-layout-control/index.mjs +10 -5
  148. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  149. package/build-module/components/colors-gradients/control.mjs +7 -4
  150. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  151. package/build-module/components/global-styles/advanced-panel.mjs +25 -27
  152. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  153. package/build-module/components/global-styles/color-panel.mjs +96 -59
  154. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  155. package/build-module/components/global-styles/dimensions-panel.mjs +20 -8
  156. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  157. package/build-module/components/global-styles/index.mjs +2 -0
  158. package/build-module/components/global-styles/index.mjs.map +2 -2
  159. package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
  160. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  161. package/build-module/components/global-styles/state-control-badges.mjs +48 -0
  162. package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
  163. package/build-module/components/global-styles/state-control.mjs +57 -71
  164. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  165. package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
  166. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  167. package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
  168. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  169. package/build-module/components/inserter/index.mjs +1 -0
  170. package/build-module/components/inserter/index.mjs.map +2 -2
  171. package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
  172. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  173. package/build-module/components/inserter/panel.mjs +2 -2
  174. package/build-module/components/inserter/panel.mjs.map +2 -2
  175. package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
  176. package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
  177. package/build-module/components/inspector-controls/fill.mjs +18 -5
  178. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  179. package/build-module/components/inspector-controls/groups.mjs +2 -0
  180. package/build-module/components/inspector-controls/groups.mjs.map +2 -2
  181. package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
  182. package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
  183. package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
  184. package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
  185. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
  186. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  187. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
  188. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  189. package/build-module/components/list-view/block-select-button.mjs +20 -9
  190. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  191. package/build-module/components/list-view/block.mjs +2 -1
  192. package/build-module/components/list-view/block.mjs.map +2 -2
  193. package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
  194. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  195. package/build-module/components/preset-input-control/index.mjs +2 -2
  196. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  197. package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
  198. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  199. package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
  200. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  201. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
  202. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  203. package/build-module/hooks/background.mjs +18 -3
  204. package/build-module/hooks/background.mjs.map +2 -2
  205. package/build-module/hooks/block-fields/link/index.mjs +3 -3
  206. package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
  207. package/build-module/hooks/block-fields/media/index.mjs +3 -3
  208. package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
  209. package/build-module/hooks/block-style-state.mjs +79 -0
  210. package/build-module/hooks/block-style-state.mjs.map +7 -0
  211. package/build-module/hooks/border.mjs +18 -3
  212. package/build-module/hooks/border.mjs.map +2 -2
  213. package/build-module/hooks/color.mjs +33 -9
  214. package/build-module/hooks/color.mjs.map +2 -2
  215. package/build-module/hooks/dimensions.mjs +20 -6
  216. package/build-module/hooks/dimensions.mjs.map +2 -2
  217. package/build-module/hooks/layout-child.mjs +141 -61
  218. package/build-module/hooks/layout-child.mjs.map +2 -2
  219. package/build-module/hooks/layout.mjs +270 -58
  220. package/build-module/hooks/layout.mjs.map +2 -2
  221. package/build-module/hooks/state-utils.mjs +64 -0
  222. package/build-module/hooks/state-utils.mjs.map +7 -0
  223. package/build-module/hooks/states.mjs +85 -0
  224. package/build-module/hooks/states.mjs.map +7 -0
  225. package/build-module/hooks/style.mjs +309 -18
  226. package/build-module/hooks/style.mjs.map +2 -2
  227. package/build-module/hooks/typography.mjs +19 -5
  228. package/build-module/hooks/typography.mjs.map +2 -2
  229. package/build-module/layouts/constrained.mjs +130 -57
  230. package/build-module/layouts/constrained.mjs.map +2 -2
  231. package/build-module/layouts/flex.mjs +123 -35
  232. package/build-module/layouts/flex.mjs.map +2 -2
  233. package/build-module/layouts/grid.mjs +105 -42
  234. package/build-module/layouts/grid.mjs.map +2 -2
  235. package/build-module/private-apis.mjs +4 -0
  236. package/build-module/private-apis.mjs.map +2 -2
  237. package/build-module/store/private-actions.mjs +16 -0
  238. package/build-module/store/private-actions.mjs.map +2 -2
  239. package/build-module/store/private-keys.mjs +7 -1
  240. package/build-module/store/private-keys.mjs.map +2 -2
  241. package/build-module/store/private-selectors.mjs +30 -2
  242. package/build-module/store/private-selectors.mjs.map +2 -2
  243. package/build-module/store/reducer.mjs +69 -1
  244. package/build-module/store/reducer.mjs.map +2 -2
  245. package/build-module/store/utils.mjs +5 -2
  246. package/build-module/store/utils.mjs.map +2 -2
  247. package/build-module/utils/color-values.mjs +19 -0
  248. package/build-module/utils/color-values.mjs.map +7 -0
  249. package/build-style/content-rtl.css +18 -3
  250. package/build-style/content.css +18 -3
  251. package/build-style/style-rtl.css +14 -17
  252. package/build-style/style.css +14 -17
  253. package/package.json +39 -39
  254. package/src/components/audio-player/index.native.js +7 -3
  255. package/src/components/block-card/index.js +67 -60
  256. package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
  257. package/src/components/block-icon/index.js +5 -2
  258. package/src/components/block-icon/index.native.js +2 -2
  259. package/src/components/block-inspector/index.js +153 -7
  260. package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
  261. package/src/components/block-list/block-selection-button.native.js +3 -3
  262. package/src/components/block-list/content.scss +0 -6
  263. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
  264. package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
  265. package/src/components/block-lock/modal.js +4 -4
  266. package/src/components/block-patterns-list/index.js +14 -5
  267. package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
  268. package/src/components/block-patterns-list/style.scss +0 -1
  269. package/src/components/block-popover/index.js +20 -10
  270. package/src/components/block-toolbar/switch-section-style.js +2 -2
  271. package/src/components/block-visibility/modal.js +2 -2
  272. package/src/components/block-visibility/viewport-visibility-info.js +2 -2
  273. package/src/components/child-layout-control/index.js +15 -8
  274. package/src/components/child-layout-control/test/index.js +126 -0
  275. package/src/components/colors-gradients/control.js +10 -8
  276. package/src/components/colors-gradients/test/control.js +98 -1
  277. package/src/components/global-styles/advanced-panel.js +44 -39
  278. package/src/components/global-styles/color-panel.js +133 -60
  279. package/src/components/global-styles/dimensions-panel.js +29 -8
  280. package/src/components/global-styles/index.js +1 -0
  281. package/src/components/global-styles/shadow-panel-components.js +29 -19
  282. package/src/components/global-styles/state-control-badges.js +58 -0
  283. package/src/components/global-styles/state-control.js +28 -36
  284. package/src/components/global-styles/test/color-panel.js +135 -0
  285. package/src/components/iframe/use-scale-canvas.js +8 -2
  286. package/src/components/inserter/hooks/use-patterns-state.js +12 -7
  287. package/src/components/inserter/index.js +1 -0
  288. package/src/components/inserter/media-tab/media-preview.js +29 -20
  289. package/src/components/inserter/panel.js +2 -2
  290. package/src/components/inserter/style.scss +1 -0
  291. package/src/components/inserter-button/index.native.js +5 -2
  292. package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
  293. package/src/components/inspector-controls/fill.js +18 -5
  294. package/src/components/inspector-controls/groups.js +2 -0
  295. package/src/components/inspector-controls-tabs/index.js +9 -5
  296. package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
  297. package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
  298. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
  299. package/src/components/list-view/block-select-button.js +19 -9
  300. package/src/components/list-view/block.js +6 -1
  301. package/src/components/media-replace-flow/style.scss +0 -18
  302. package/src/components/preset-input-control/custom-value-controls.js +13 -6
  303. package/src/components/preset-input-control/index.js +2 -2
  304. package/src/components/provider/use-media-upload-settings.js +1 -0
  305. package/src/components/rich-text/event-listeners/enter.js +14 -2
  306. package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
  307. package/src/components/unsupported-block-details/index.native.js +6 -2
  308. package/src/components/video-player/index.native.js +2 -2
  309. package/src/components/warning/index.native.js +2 -2
  310. package/src/hooks/background.js +59 -37
  311. package/src/hooks/block-fields/link/index.js +3 -3
  312. package/src/hooks/block-fields/media/index.js +3 -3
  313. package/src/hooks/block-style-state.js +127 -0
  314. package/src/hooks/border.js +25 -6
  315. package/src/hooks/color.js +40 -18
  316. package/src/hooks/dimensions.js +32 -11
  317. package/src/hooks/layout-child.js +179 -62
  318. package/src/hooks/layout.js +349 -75
  319. package/src/hooks/layout.scss +6 -0
  320. package/src/hooks/state-utils.js +158 -0
  321. package/src/hooks/states.js +109 -0
  322. package/src/hooks/style.js +456 -19
  323. package/src/hooks/test/block-style-state.js +270 -0
  324. package/src/hooks/test/layout.js +185 -0
  325. package/src/hooks/test/state-utils.js +193 -0
  326. package/src/hooks/test/style.js +301 -1
  327. package/src/hooks/typography.js +33 -14
  328. package/src/layouts/constrained.js +182 -95
  329. package/src/layouts/flex.js +141 -36
  330. package/src/layouts/grid.js +122 -32
  331. package/src/layouts/test/flex.js +57 -20
  332. package/src/private-apis.js +4 -0
  333. package/src/store/private-actions.js +32 -0
  334. package/src/store/private-keys.js +4 -0
  335. package/src/store/private-selectors.js +61 -2
  336. package/src/store/reducer.js +105 -1
  337. package/src/store/test/private-actions.js +26 -0
  338. package/src/store/test/private-selectors.js +143 -0
  339. package/src/store/test/reducer.js +363 -0
  340. package/src/store/utils.js +6 -2
  341. package/src/utils/color-values.js +28 -0
  342. package/src/utils/test/color-values.js +78 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/child-layout-control/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalVStack as VStack,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useGetNumberOfBlocksBeforeCell } from '../grid/use-get-number-of-blocks-before-cell';\nimport { store as blockEditorStore } from '../../store';\nimport { useSettings } from '../use-settings';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @param {boolean} props.isShownByDefault\n * @param {string} props.panelId\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tif ( parentLayoutType === 'flex' ) {\n\t\treturn (\n\t\t\t<FlexControls\n\t\t\t\tchildLayout={ childLayout }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t/>\n\t\t);\n\t} else if ( parentLayoutType === 'grid' ) {\n\t\treturn (\n\t\t\t<GridControls\n\t\t\t\tchildLayout={ childLayout }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction FlexControls( {\n\tchildLayout,\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst { selfStretch, flexSize } = childLayout;\n\tconst { orientation = 'horizontal' } = parentLayout ?? {};\n\tconst hasFlexValue = () => !! selfStretch;\n\tconst flexResetLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vh',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst resetFlex = () => {\n\t\tonChange( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\thasValue={ hasFlexValue }\n\t\t\tlabel={ flexResetLabel }\n\t\t\tonDeselect={ resetFlex }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<ToggleGroupControl\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst newFlexSize = value !== 'fixed' ? null : flexSize;\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tisBlock\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fit\"\n\t\t\t\t\tvalue=\"fit\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Fit',\n\t\t\t\t\t\t'Intrinsic block width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fill\"\n\t\t\t\t\tvalue=\"fill\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Grow',\n\t\t\t\t\t\t'Block with expanding width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fixed\"\n\t\t\t\t\tvalue=\"fixed\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Fixed',\n\t\t\t\t\t\t'Block with fixed width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t<UnitControl\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\tunits={ units }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tlabel={ flexResetLabel }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n\nfunction GridControls( {\n\tchildLayout,\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst { columnStart, rowStart, columnSpan, rowSpan } = childLayout;\n\tconst { columnCount, rowCount } = parentLayout ?? {};\n\tconst rootClientId = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).getBlockRootClientId( panelId )\n\t);\n\tconst { moveBlocksToPosition, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\trootClientId,\n\t\tcolumnCount || 3\n\t);\n\tconst hasStartValue = () => !! columnStart || !! rowStart;\n\tconst hasSpanValue = () => !! columnSpan || !! rowSpan;\n\tconst resetGridStarts = () => {\n\t\tonChange( {\n\t\t\tcolumnStart: undefined,\n\t\t\trowStart: undefined,\n\t\t} );\n\t};\n\tconst resetGridSpans = () => {\n\t\tonChange( {\n\t\t\tcolumnSpan: undefined,\n\t\t\trowSpan: undefined,\n\t\t} );\n\t};\n\n\t// Calculate max column span based on current position and grid width\n\tconst maxColumnSpan = columnCount\n\t\t? columnCount - ( columnStart ?? 1 ) + 1\n\t\t: undefined;\n\n\t// Calculate max row span based on current position and grid height\n\tconst maxRowSpan =\n\t\twindow.__experimentalEnableGridInteractivity && rowCount\n\t\t\t? rowCount - ( rowStart ?? 1 ) + 1\n\t\t\t: undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<Flex\n\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\thasValue={ hasSpanValue }\n\t\t\t\tlabel={ __( 'Grid span' ) }\n\t\t\t\tonDeselect={ resetGridSpans }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t>\n\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tlabel={ __( 'Column span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\tconst newColumnSpan =\n\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\tconst constrainedValue = maxColumnSpan\n\t\t\t\t\t\t\t\t? Math.min( newColumnSpan, maxColumnSpan )\n\t\t\t\t\t\t\t\t: newColumnSpan;\n\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\tcolumnSpan: constrainedValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnSpan ?? 1 }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ maxColumnSpan }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tlabel={ __( 'Row span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newRowSpan =\n\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\tconst constrainedValue = maxRowSpan\n\t\t\t\t\t\t\t\t? Math.min( newRowSpan, maxRowSpan )\n\t\t\t\t\t\t\t\t: newRowSpan;\n\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\trowSpan: constrainedValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ rowSpan ?? 1 }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ maxRowSpan }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\n\t\t\t{ window.__experimentalEnableGridInteractivity && (\n\t\t\t\t// Use Flex with an explicit width on the FlexItem instead of HStack to\n\t\t\t\t// work around an issue in webkit where inputs with a max attribute are\n\t\t\t\t// sized incorrectly.\n\t\t\t\t<Flex\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\thasValue={ hasStartValue }\n\t\t\t\t\tlabel={ __( 'Grid placement' ) }\n\t\t\t\t\tonDeselect={ resetGridStarts }\n\t\t\t\t\tisShownByDefault={ false }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tlabel={ __( 'Column' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\t\tconst newColumnStart =\n\t\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart: newColumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t[ panelId ],\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\t\tnewColumnStart,\n\t\t\t\t\t\t\t\t\t\trowStart\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\tvalue={ columnStart ?? 1 }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t\tcolumnCount\n\t\t\t\t\t\t\t\t\t? columnCount - ( columnSpan ?? 1 ) + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tlabel={ __( 'Row' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\t\tconst newRowStart =\n\t\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart: newRowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t[ panelId ],\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\t\tnewRowStart\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\tvalue={ rowStart ?? 1 }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t\trowCount\n\t\t\t\t\t\t\t\t\t? rowCount - ( rowSpan ?? 1 ) + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalVStack as VStack,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useGetNumberOfBlocksBeforeCell } from '../grid/use-get-number-of-blocks-before-cell';\nimport { store as blockEditorStore } from '../../store';\nimport { useSettings } from '../use-settings';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @param {boolean} props.isShownByDefault Whether the control is shown by default.\n * @param {string} props.panelId The panel ID.\n * @param {boolean} props.showGridSpanDefaults Whether unset grid span controls should show default values.\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n\tshowGridSpanDefaults = true,\n} ) {\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tif ( parentLayoutType === 'flex' ) {\n\t\treturn (\n\t\t\t<FlexControls\n\t\t\t\tchildLayout={ childLayout }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t/>\n\t\t);\n\t} else if ( parentLayoutType === 'grid' ) {\n\t\treturn (\n\t\t\t<GridControls\n\t\t\t\tchildLayout={ childLayout }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tshowGridSpanDefaults={ showGridSpanDefaults }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction FlexControls( {\n\tchildLayout,\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst { selfStretch, flexSize } = childLayout;\n\tconst { orientation = 'horizontal' } = parentLayout ?? {};\n\tconst hasFlexValue = () => !! selfStretch;\n\tconst flexResetLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vh',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst resetFlex = () => {\n\t\tonChange( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\thasValue={ hasFlexValue }\n\t\t\tlabel={ flexResetLabel }\n\t\t\tonDeselect={ resetFlex }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<ToggleGroupControl\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst newFlexSize = value !== 'fixed' ? null : flexSize;\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tisBlock\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fit\"\n\t\t\t\t\tvalue=\"fit\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Fit',\n\t\t\t\t\t\t'Intrinsic block width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fill\"\n\t\t\t\t\tvalue=\"fill\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Grow',\n\t\t\t\t\t\t'Block with expanding width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"fixed\"\n\t\t\t\t\tvalue=\"fixed\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Fixed',\n\t\t\t\t\t\t'Block with fixed width in flex layout'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t<UnitControl\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\tunits={ units }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tlabel={ flexResetLabel }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n\nfunction GridControls( {\n\tchildLayout,\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n\tshowGridSpanDefaults,\n} ) {\n\tconst { columnStart, rowStart, columnSpan, rowSpan } = childLayout;\n\tconst { columnCount, rowCount } = parentLayout ?? {};\n\tconst rootClientId = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).getBlockRootClientId( panelId )\n\t);\n\tconst { moveBlocksToPosition, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\trootClientId,\n\t\tcolumnCount || 3\n\t);\n\tconst hasStartValue = () => !! columnStart || !! rowStart;\n\tconst hasSpanValue = () => !! columnSpan || !! rowSpan;\n\tconst resetGridStarts = () => {\n\t\tonChange( {\n\t\t\tcolumnStart: undefined,\n\t\t\trowStart: undefined,\n\t\t} );\n\t};\n\tconst resetGridSpans = () => {\n\t\tonChange( {\n\t\t\tcolumnSpan: undefined,\n\t\t\trowSpan: undefined,\n\t\t} );\n\t};\n\n\t// Calculate max column span based on current position and grid width\n\tconst maxColumnSpan = columnCount\n\t\t? columnCount - ( columnStart ?? 1 ) + 1\n\t\t: undefined;\n\n\t// Calculate max row span based on current position and grid height\n\tconst maxRowSpan =\n\t\twindow.__experimentalEnableGridInteractivity && rowCount\n\t\t\t? rowCount - ( rowStart ?? 1 ) + 1\n\t\t\t: undefined;\n\tconst columnSpanValue =\n\t\tcolumnSpan ?? ( showGridSpanDefaults ? 1 : undefined );\n\tconst rowSpanValue = rowSpan ?? ( showGridSpanDefaults ? 1 : undefined );\n\n\treturn (\n\t\t<>\n\t\t\t<Flex\n\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\thasValue={ hasSpanValue }\n\t\t\t\tlabel={ __( 'Grid span' ) }\n\t\t\t\tonDeselect={ resetGridSpans }\n\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\tpanelId={ panelId }\n\t\t\t>\n\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tlabel={ __( 'Column span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\tconst newColumnSpan =\n\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\tconst constrainedValue = maxColumnSpan\n\t\t\t\t\t\t\t\t? Math.min( newColumnSpan, maxColumnSpan )\n\t\t\t\t\t\t\t\t: newColumnSpan;\n\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\tcolumnSpan: constrainedValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnSpanValue }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ maxColumnSpan }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tlabel={ __( 'Row span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newRowSpan =\n\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\tconst constrainedValue = maxRowSpan\n\t\t\t\t\t\t\t\t? Math.min( newRowSpan, maxRowSpan )\n\t\t\t\t\t\t\t\t: newRowSpan;\n\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\trowSpan: constrainedValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ rowSpanValue }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ maxRowSpan }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\n\t\t\t{ window.__experimentalEnableGridInteractivity && (\n\t\t\t\t// Use Flex with an explicit width on the FlexItem instead of HStack to\n\t\t\t\t// work around an issue in webkit where inputs with a max attribute are\n\t\t\t\t// sized incorrectly.\n\t\t\t\t<Flex\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\thasValue={ hasStartValue }\n\t\t\t\t\tlabel={ __( 'Grid placement' ) }\n\t\t\t\t\tonDeselect={ resetGridStarts }\n\t\t\t\t\tisShownByDefault={ false }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tlabel={ __( 'Column' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\t\tconst newColumnStart =\n\t\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart: newColumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t[ panelId ],\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\t\tnewColumnStart,\n\t\t\t\t\t\t\t\t\t\trowStart\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\tvalue={ columnStart ?? 1 }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t\tcolumnCount\n\t\t\t\t\t\t\t\t\t? columnCount - ( columnSpan ?? 1 ) + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tlabel={ __( 'Row' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t// Don't allow unsetting.\n\t\t\t\t\t\t\t\tconst newRowStart =\n\t\t\t\t\t\t\t\t\tvalue === '' ? 1 : parseInt( value, 10 );\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart: newRowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t[ panelId ],\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\t\tnewRowStart\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\tvalue={ rowStart ?? 1 }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t\trowCount\n\t\t\t\t\t\t\t\t\t? rowCount - ( rowSpan ?? 1 ) + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -30,6 +30,7 @@ function ColorGradientControlInner({
30
30
  onColorChange,
31
31
  onGradientChange,
32
32
  colorValue,
33
+ colorSlug,
33
34
  gradientValue,
34
35
  clearable,
35
36
  showTitle = true,
@@ -41,15 +42,17 @@ function ColorGradientControlInner({
41
42
  if (!canChooseAColor && !canChooseAGradient) {
42
43
  return null;
43
44
  }
45
+ const colorPaletteOnChange = canChooseAGradient ? (newColor, _index, newSlug) => {
46
+ onColorChange(newColor, newSlug);
47
+ onGradientChange();
48
+ } : (newColor, _index, newSlug) => onColorChange(newColor, newSlug);
44
49
  const tabPanels = {
45
50
  [TAB_IDS.color]: /* @__PURE__ */ jsx(
46
51
  ColorPalette,
47
52
  {
48
53
  value: colorValue,
49
- onChange: canChooseAGradient ? (newColor) => {
50
- onColorChange(newColor);
51
- onGradientChange();
52
- } : onColorChange,
54
+ selectedSlug: colorSlug,
55
+ onChange: colorPaletteOnChange,
53
56
  ...{ colors, disableCustomColors },
54
57
  __experimentalIsRenderedInSidebar,
55
58
  clearable,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/colors-gradients/control.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBaseControl,\n\t__experimentalVStack as VStack,\n\tColorPalette,\n\tGradientPicker,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\nconst colorsAndGradientKeys = [\n\t'colors',\n\t'disableCustomColors',\n\t'gradients',\n\t'disableCustomGradients',\n];\n\nconst TAB_IDS = { color: 'color', gradient: 'gradient' };\n\nfunction ColorGradientControlInner( {\n\tcolors,\n\tgradients,\n\tdisableCustomColors,\n\tdisableCustomGradients,\n\t__experimentalIsRenderedInSidebar,\n\tclassName,\n\tlabel,\n\tonColorChange,\n\tonGradientChange,\n\tcolorValue,\n\tgradientValue,\n\tclearable,\n\tshowTitle = true,\n\tenableAlpha,\n\theadingLevel,\n} ) {\n\tconst canChooseAColor =\n\t\tonColorChange &&\n\t\t( ( colors && colors.length > 0 ) || ! disableCustomColors );\n\tconst canChooseAGradient =\n\t\tonGradientChange &&\n\t\t( ( gradients && gradients.length > 0 ) || ! disableCustomGradients );\n\n\tif ( ! canChooseAColor && ! canChooseAGradient ) {\n\t\treturn null;\n\t}\n\n\tconst tabPanels = {\n\t\t[ TAB_IDS.color ]: (\n\t\t\t<ColorPalette\n\t\t\t\tvalue={ colorValue }\n\t\t\t\tonChange={\n\t\t\t\t\tcanChooseAGradient\n\t\t\t\t\t\t? ( newColor ) => {\n\t\t\t\t\t\t\t\tonColorChange( newColor );\n\t\t\t\t\t\t\t\tonGradientChange();\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: onColorChange\n\t\t\t\t}\n\t\t\t\t{ ...{ colors, disableCustomColors } }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tclearable={ clearable }\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t),\n\t\t[ TAB_IDS.gradient ]: (\n\t\t\t<GradientPicker\n\t\t\t\tvalue={ gradientValue }\n\t\t\t\tonChange={\n\t\t\t\t\tcanChooseAColor\n\t\t\t\t\t\t? ( newGradient ) => {\n\t\t\t\t\t\t\t\tonGradientChange( newGradient );\n\t\t\t\t\t\t\t\tonColorChange();\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: onGradientChange\n\t\t\t\t}\n\t\t\t\t{ ...{ gradients, disableCustomGradients } }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tclearable={ clearable }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t),\n\t};\n\n\tconst renderPanelType = ( type ) => (\n\t\t<div className=\"block-editor-color-gradient-control__panel\">\n\t\t\t{ tabPanels[ type ] }\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-color-gradient-control',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t>\n\t\t\t<fieldset className=\"block-editor-color-gradient-control__fieldset\">\n\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t{ showTitle && (\n\t\t\t\t\t\t<legend>\n\t\t\t\t\t\t\t<div className=\"block-editor-color-gradient-control__color-indicator\">\n\t\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</legend>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canChooseAColor && canChooseAGradient && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\t\tdefaultTabId={\n\t\t\t\t\t\t\t\t\tgradientValue\n\t\t\t\t\t\t\t\t\t\t? TAB_IDS.gradient\n\t\t\t\t\t\t\t\t\t\t: !! canChooseAColor && TAB_IDS.color\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\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t\t<Tabs.Tab tabId={ TAB_IDS.color }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Color' ) }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t\t<Tabs.Tab tabId={ TAB_IDS.gradient }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Gradient' ) }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\ttabId={ TAB_IDS.color }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-color-gradient-control__panel\"\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ tabPanels.color }\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\ttabId={ TAB_IDS.gradient }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-color-gradient-control__panel\"\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ tabPanels.gradient }\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! canChooseAGradient && renderPanelType( TAB_IDS.color ) }\n\t\t\t\t\t{ ! canChooseAColor && renderPanelType( TAB_IDS.gradient ) }\n\t\t\t\t</VStack>\n\t\t\t</fieldset>\n\t\t</BaseControl>\n\t);\n}\n\nfunction ColorGradientControlSelect( props ) {\n\tconst [ colors, gradients, customColors, customGradients ] = useSettings(\n\t\t'color.palette',\n\t\t'color.gradients',\n\t\t'color.custom',\n\t\t'color.customGradient'\n\t);\n\n\treturn (\n\t\t<ColorGradientControlInner\n\t\t\tcolors={ colors }\n\t\t\tgradients={ gradients }\n\t\t\tdisableCustomColors={ ! customColors }\n\t\t\tdisableCustomGradients={ ! customGradients }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n\nfunction ColorGradientControl( props ) {\n\tif (\n\t\tcolorsAndGradientKeys.every( ( key ) => props.hasOwnProperty( key ) )\n\t) {\n\t\treturn <ColorGradientControlInner { ...props } />;\n\t}\n\treturn <ColorGradientControlSelect { ...props } />;\n}\n\nexport default ColorGradientControl;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBaseControl,\n\t__experimentalVStack as VStack,\n\tColorPalette,\n\tGradientPicker,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\nconst colorsAndGradientKeys = [\n\t'colors',\n\t'disableCustomColors',\n\t'gradients',\n\t'disableCustomGradients',\n];\n\nconst TAB_IDS = { color: 'color', gradient: 'gradient' };\n\nfunction ColorGradientControlInner( {\n\tcolors,\n\tgradients,\n\tdisableCustomColors,\n\tdisableCustomGradients,\n\t__experimentalIsRenderedInSidebar,\n\tclassName,\n\tlabel,\n\tonColorChange,\n\tonGradientChange,\n\tcolorValue,\n\tcolorSlug,\n\tgradientValue,\n\tclearable,\n\tshowTitle = true,\n\tenableAlpha,\n\theadingLevel,\n} ) {\n\tconst canChooseAColor =\n\t\tonColorChange &&\n\t\t( ( colors && colors.length > 0 ) || ! disableCustomColors );\n\tconst canChooseAGradient =\n\t\tonGradientChange &&\n\t\t( ( gradients && gradients.length > 0 ) || ! disableCustomGradients );\n\n\tif ( ! canChooseAColor && ! canChooseAGradient ) {\n\t\treturn null;\n\t}\n\n\tconst colorPaletteOnChange = canChooseAGradient\n\t\t? ( newColor, _index, newSlug ) => {\n\t\t\t\tonColorChange( newColor, newSlug );\n\t\t\t\tonGradientChange();\n\t\t }\n\t\t: ( newColor, _index, newSlug ) => onColorChange( newColor, newSlug );\n\n\tconst tabPanels = {\n\t\t[ TAB_IDS.color ]: (\n\t\t\t<ColorPalette\n\t\t\t\tvalue={ colorValue }\n\t\t\t\tselectedSlug={ colorSlug }\n\t\t\t\tonChange={ colorPaletteOnChange }\n\t\t\t\t{ ...{ colors, disableCustomColors } }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tclearable={ clearable }\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t),\n\t\t[ TAB_IDS.gradient ]: (\n\t\t\t<GradientPicker\n\t\t\t\tvalue={ gradientValue }\n\t\t\t\tonChange={\n\t\t\t\t\tcanChooseAColor\n\t\t\t\t\t\t? ( newGradient ) => {\n\t\t\t\t\t\t\t\tonGradientChange( newGradient );\n\t\t\t\t\t\t\t\tonColorChange();\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: onGradientChange\n\t\t\t\t}\n\t\t\t\t{ ...{ gradients, disableCustomGradients } }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tclearable={ clearable }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t),\n\t};\n\n\tconst renderPanelType = ( type ) => (\n\t\t<div className=\"block-editor-color-gradient-control__panel\">\n\t\t\t{ tabPanels[ type ] }\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-color-gradient-control',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t>\n\t\t\t<fieldset className=\"block-editor-color-gradient-control__fieldset\">\n\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t{ showTitle && (\n\t\t\t\t\t\t<legend>\n\t\t\t\t\t\t\t<div className=\"block-editor-color-gradient-control__color-indicator\">\n\t\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</legend>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canChooseAColor && canChooseAGradient && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\t\tdefaultTabId={\n\t\t\t\t\t\t\t\t\tgradientValue\n\t\t\t\t\t\t\t\t\t\t? TAB_IDS.gradient\n\t\t\t\t\t\t\t\t\t\t: !! canChooseAColor && TAB_IDS.color\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\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t\t<Tabs.Tab tabId={ TAB_IDS.color }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Color' ) }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t\t<Tabs.Tab tabId={ TAB_IDS.gradient }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Gradient' ) }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\ttabId={ TAB_IDS.color }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-color-gradient-control__panel\"\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ tabPanels.color }\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\ttabId={ TAB_IDS.gradient }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-color-gradient-control__panel\"\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ tabPanels.gradient }\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! canChooseAGradient && renderPanelType( TAB_IDS.color ) }\n\t\t\t\t\t{ ! canChooseAColor && renderPanelType( TAB_IDS.gradient ) }\n\t\t\t\t</VStack>\n\t\t\t</fieldset>\n\t\t</BaseControl>\n\t);\n}\n\nfunction ColorGradientControlSelect( props ) {\n\tconst [ colors, gradients, customColors, customGradients ] = useSettings(\n\t\t'color.palette',\n\t\t'color.gradients',\n\t\t'color.custom',\n\t\t'color.customGradient'\n\t);\n\n\treturn (\n\t\t<ColorGradientControlInner\n\t\t\tcolors={ colors }\n\t\t\tgradients={ gradients }\n\t\t\tdisableCustomColors={ ! customColors }\n\t\t\tdisableCustomGradients={ ! customGradients }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n\nfunction ColorGradientControl( props ) {\n\tif (\n\t\tcolorsAndGradientKeys.every( ( key ) => props.hasOwnProperty( key ) )\n\t) {\n\t\treturn <ColorGradientControlInner { ...props } />;\n\t}\n\treturn <ColorGradientControlSelect { ...props } />;\n}\n\nexport default ColorGradientControl;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -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
  },