@wordpress/components 23.6.0 → 23.8.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 (484) hide show
  1. package/CHANGELOG.md +43 -4
  2. package/build/angle-picker-control/angle-circle.js +1 -4
  3. package/build/angle-picker-control/angle-circle.js.map +1 -1
  4. package/build/angle-picker-control/index.js +10 -22
  5. package/build/angle-picker-control/index.js.map +1 -1
  6. package/build/angle-picker-control/styles/angle-picker-control-styles.js +24 -15
  7. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  8. package/build/animate/index.js +27 -19
  9. package/build/animate/index.js.map +1 -1
  10. package/build/animate/types.js.map +1 -0
  11. package/build/box-control/axial-input-controls.js.map +1 -1
  12. package/build/color-picker/color-input.js +0 -4
  13. package/build/color-picker/color-input.js.map +1 -1
  14. package/build/color-picker/component.js +5 -4
  15. package/build/color-picker/component.js.map +1 -1
  16. package/build/color-picker/hex-input.js.map +1 -1
  17. package/build/color-picker/hsl-input.js.map +1 -1
  18. package/build/color-picker/input-with-slider.js.map +1 -1
  19. package/build/color-picker/legacy-adapter.js.map +1 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/rgb-input.js.map +1 -1
  22. package/build/color-picker/use-deprecated-props.js.map +1 -1
  23. package/build/custom-gradient-picker/constants.js +1 -1
  24. package/build/custom-gradient-picker/constants.js.map +1 -1
  25. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  26. package/build/custom-gradient-picker/gradient-bar/control-points.js +9 -5
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/index.js +14 -9
  29. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  30. package/build/custom-gradient-picker/gradient-bar/utils.js +34 -54
  31. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  32. package/build/custom-gradient-picker/index.js +45 -16
  33. package/build/custom-gradient-picker/index.js.map +1 -1
  34. package/build/custom-gradient-picker/serializer.js +10 -4
  35. package/build/custom-gradient-picker/serializer.js.map +1 -1
  36. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  37. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  38. package/build/custom-gradient-picker/types.js +6 -0
  39. package/build/custom-gradient-picker/types.js.map +1 -0
  40. package/build/custom-gradient-picker/utils.js +17 -12
  41. package/build/custom-gradient-picker/utils.js.map +1 -1
  42. package/build/drop-zone/index.js +8 -8
  43. package/build/drop-zone/index.js.map +1 -1
  44. package/build/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  45. package/build/duotone-picker/color-list-picker/index.js.map +1 -0
  46. package/build/duotone-picker/color-list-picker/types.js +6 -0
  47. package/build/duotone-picker/color-list-picker/types.js.map +1 -0
  48. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  49. package/build/duotone-picker/duotone-picker.js +39 -2
  50. package/build/duotone-picker/duotone-picker.js.map +1 -1
  51. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  52. package/build/duotone-picker/index.js.map +1 -1
  53. package/build/duotone-picker/types.js +6 -0
  54. package/build/duotone-picker/types.js.map +1 -0
  55. package/build/duotone-picker/utils.js +13 -11
  56. package/build/duotone-picker/utils.js.map +1 -1
  57. package/build/form-token-field/index.js +9 -3
  58. package/build/form-token-field/index.js.map +1 -1
  59. package/build/gradient-picker/index.js +61 -9
  60. package/build/gradient-picker/index.js.map +1 -1
  61. package/build/gradient-picker/types.js +6 -0
  62. package/build/gradient-picker/types.js.map +1 -0
  63. package/build/index.js.map +1 -1
  64. package/build/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  65. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  66. package/build/mobile/keyboard-aware-flat-list/index.ios.js +100 -55
  67. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  68. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +82 -0
  69. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  70. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +85 -0
  71. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  72. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +44 -0
  73. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  74. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +53 -0
  75. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  76. package/build/navigator/navigator-provider/component.js +4 -2
  77. package/build/navigator/navigator-provider/component.js.map +1 -1
  78. package/build/navigator/navigator-screen/component.js +4 -3
  79. package/build/navigator/navigator-screen/component.js.map +1 -1
  80. package/build/palette-edit/index.js +1 -2
  81. package/build/palette-edit/index.js.map +1 -1
  82. package/build/private-apis.js.map +1 -1
  83. package/build/query-controls/author-select.js +2 -1
  84. package/build/query-controls/author-select.js.map +1 -1
  85. package/build/query-controls/category-select.js +3 -1
  86. package/build/query-controls/category-select.js.map +1 -1
  87. package/build/query-controls/index.js +7 -1
  88. package/build/query-controls/index.js.map +1 -1
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/sandbox/index.native.js +129 -93
  91. package/build/sandbox/index.native.js.map +1 -1
  92. package/build/tab-panel/index.js +1 -1
  93. package/build/tab-panel/index.js.map +1 -1
  94. package/build/tools-panel/tools-panel/hook.js +45 -6
  95. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  96. package/build/utils/input/input-control.js +1 -1
  97. package/build/utils/input/input-control.js.map +1 -1
  98. package/build-module/angle-picker-control/angle-circle.js +1 -4
  99. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  100. package/build-module/angle-picker-control/index.js +12 -21
  101. package/build-module/angle-picker-control/index.js.map +1 -1
  102. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +20 -13
  103. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  104. package/build-module/animate/index.js +25 -17
  105. package/build-module/animate/index.js.map +1 -1
  106. package/build-module/box-control/axial-input-controls.js.map +1 -1
  107. package/build-module/color-picker/color-input.js +0 -4
  108. package/build-module/color-picker/color-input.js.map +1 -1
  109. package/build-module/color-picker/component.js +3 -3
  110. package/build-module/color-picker/component.js.map +1 -1
  111. package/build-module/color-picker/hex-input.js.map +1 -1
  112. package/build-module/color-picker/hsl-input.js.map +1 -1
  113. package/build-module/color-picker/input-with-slider.js.map +1 -1
  114. package/build-module/color-picker/legacy-adapter.js.map +1 -1
  115. package/build-module/color-picker/picker.js +4 -0
  116. package/build-module/color-picker/picker.js.map +1 -1
  117. package/build-module/color-picker/rgb-input.js.map +1 -1
  118. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  119. package/build-module/custom-gradient-picker/constants.js +1 -1
  120. package/build-module/custom-gradient-picker/constants.js.map +1 -1
  121. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  122. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +9 -4
  123. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  124. package/build-module/custom-gradient-picker/gradient-bar/index.js +14 -8
  125. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  126. package/build-module/custom-gradient-picker/gradient-bar/utils.js +34 -54
  127. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  128. package/build-module/custom-gradient-picker/index.js +44 -17
  129. package/build-module/custom-gradient-picker/index.js.map +1 -1
  130. package/build-module/custom-gradient-picker/serializer.js +10 -4
  131. package/build-module/custom-gradient-picker/serializer.js.map +1 -1
  132. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  133. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  134. package/build-module/custom-gradient-picker/types.js +2 -0
  135. package/build-module/custom-gradient-picker/utils.js +17 -12
  136. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  137. package/build-module/drop-zone/index.js +8 -8
  138. package/build-module/drop-zone/index.js.map +1 -1
  139. package/build-module/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  140. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -0
  141. package/build-module/duotone-picker/color-list-picker/types.js +2 -0
  142. package/build-module/duotone-picker/color-list-picker/types.js.map +1 -0
  143. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  144. package/build-module/duotone-picker/duotone-picker.js +38 -2
  145. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  146. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  147. package/build-module/duotone-picker/index.js.map +1 -1
  148. package/build-module/duotone-picker/types.js +2 -0
  149. package/build-module/duotone-picker/types.js.map +1 -0
  150. package/build-module/duotone-picker/utils.js +17 -11
  151. package/build-module/duotone-picker/utils.js.map +1 -1
  152. package/build-module/form-token-field/index.js +9 -4
  153. package/build-module/form-token-field/index.js.map +1 -1
  154. package/build-module/gradient-picker/index.js +61 -10
  155. package/build-module/gradient-picker/index.js.map +1 -1
  156. package/build-module/gradient-picker/types.js +2 -0
  157. package/build-module/gradient-picker/types.js.map +1 -0
  158. package/build-module/index.js.map +1 -1
  159. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  160. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  161. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +97 -54
  162. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  163. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +73 -0
  164. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  165. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +76 -0
  166. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  167. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +33 -0
  168. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  169. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +40 -0
  170. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  171. package/build-module/navigator/navigator-provider/component.js +4 -2
  172. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  173. package/build-module/navigator/navigator-screen/component.js +4 -3
  174. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  175. package/build-module/palette-edit/index.js +1 -2
  176. package/build-module/palette-edit/index.js.map +1 -1
  177. package/build-module/private-apis.js.map +1 -1
  178. package/build-module/query-controls/author-select.js +2 -1
  179. package/build-module/query-controls/author-select.js.map +1 -1
  180. package/build-module/query-controls/category-select.js +3 -1
  181. package/build-module/query-controls/category-select.js.map +1 -1
  182. package/build-module/query-controls/index.js +7 -2
  183. package/build-module/query-controls/index.js.map +1 -1
  184. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  185. package/build-module/sandbox/index.native.js +121 -87
  186. package/build-module/sandbox/index.native.js.map +1 -1
  187. package/build-module/tab-panel/index.js +2 -2
  188. package/build-module/tab-panel/index.js.map +1 -1
  189. package/build-module/tools-panel/tools-panel/hook.js +45 -6
  190. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  191. package/build-module/utils/input/input-control.js +1 -1
  192. package/build-module/utils/input/input-control.js.map +1 -1
  193. package/build-style/style-rtl.css +41 -29
  194. package/build-style/style.css +43 -29
  195. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  196. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  197. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +6 -1
  198. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  199. package/build-types/animate/index.d.ts +27 -22
  200. package/build-types/animate/index.d.ts.map +1 -1
  201. package/build-types/animate/stories/index.d.ts +18 -0
  202. package/build-types/animate/stories/index.d.ts.map +1 -0
  203. package/build-types/animate/types.d.ts +30 -0
  204. package/build-types/animate/types.d.ts.map +1 -0
  205. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
  206. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  207. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
  208. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  209. package/build-types/border-control/border-control/hook.d.ts +2 -2
  210. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
  211. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  212. package/build-types/box-control/styles/box-control-styles.d.ts +5 -5
  213. package/build-types/button/deprecated.d.ts +2 -2
  214. package/build-types/card/card/hook.d.ts +2 -2
  215. package/build-types/card/card-body/hook.d.ts +2 -2
  216. package/build-types/card/card-divider/hook.d.ts +2 -2
  217. package/build-types/card/card-footer/hook.d.ts +2 -2
  218. package/build-types/card/card-header/hook.d.ts +2 -2
  219. package/build-types/card/card-media/hook.d.ts +2 -2
  220. package/build-types/color-palette/styles.d.ts +1 -1
  221. package/build-types/color-picker/color-input.d.ts +1 -11
  222. package/build-types/color-picker/color-input.d.ts.map +1 -1
  223. package/build-types/color-picker/component.d.ts +8 -9
  224. package/build-types/color-picker/component.d.ts.map +1 -1
  225. package/build-types/color-picker/hex-input.d.ts +1 -10
  226. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  227. package/build-types/color-picker/hsl-input.d.ts +1 -10
  228. package/build-types/color-picker/hsl-input.d.ts.map +1 -1
  229. package/build-types/color-picker/input-with-slider.d.ts +1 -9
  230. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  231. package/build-types/color-picker/legacy-adapter.d.ts +1 -3
  232. package/build-types/color-picker/legacy-adapter.d.ts.map +1 -1
  233. package/build-types/color-picker/picker.d.ts +4 -7
  234. package/build-types/color-picker/picker.d.ts.map +1 -1
  235. package/build-types/color-picker/rgb-input.d.ts +1 -10
  236. package/build-types/color-picker/rgb-input.d.ts.map +1 -1
  237. package/build-types/color-picker/stories/index.d.ts +19 -0
  238. package/build-types/color-picker/stories/index.d.ts.map +1 -0
  239. package/build-types/color-picker/styles.d.ts +5 -5
  240. package/build-types/color-picker/test/index.d.ts +2 -0
  241. package/build-types/color-picker/test/index.d.ts.map +1 -0
  242. package/build-types/color-picker/types.d.ts +105 -1
  243. package/build-types/color-picker/types.d.ts.map +1 -1
  244. package/build-types/color-picker/use-deprecated-props.d.ts +1 -44
  245. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  246. package/build-types/combobox-control/styles.d.ts +1 -1
  247. package/build-types/custom-gradient-picker/constants.d.ts +8 -8
  248. package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
  249. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts +7 -7
  250. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts.map +1 -1
  251. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts +5 -22
  252. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  253. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts +3 -9
  254. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
  255. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts +2 -0
  256. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts.map +1 -0
  257. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts +44 -92
  258. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts.map +1 -1
  259. package/build-types/custom-gradient-picker/index.d.ts +27 -6
  260. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  261. package/build-types/custom-gradient-picker/serializer.d.ts +9 -16
  262. package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
  263. package/build-types/custom-gradient-picker/stories/index.d.ts +12 -0
  264. package/build-types/custom-gradient-picker/stories/index.d.ts.map +1 -0
  265. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +3 -2
  266. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts.map +1 -1
  267. package/build-types/custom-gradient-picker/test/serializer.d.ts +2 -0
  268. package/build-types/custom-gradient-picker/test/serializer.d.ts.map +1 -0
  269. package/build-types/custom-gradient-picker/types.d.ts +118 -0
  270. package/build-types/custom-gradient-picker/types.d.ts.map +1 -0
  271. package/build-types/custom-gradient-picker/utils.d.ts +12 -4
  272. package/build-types/custom-gradient-picker/utils.d.ts.map +1 -1
  273. package/build-types/date-time/date/styles.d.ts +2 -2
  274. package/build-types/date-time/date-time/styles.d.ts +1 -1
  275. package/build-types/date-time/time/styles.d.ts +8 -8
  276. package/build-types/drop-zone/index.d.ts.map +1 -1
  277. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -0
  278. package/build-types/{color-list-picker → duotone-picker/color-list-picker}/types.d.ts +2 -2
  279. package/build-types/duotone-picker/color-list-picker/types.d.ts.map +1 -0
  280. package/build-types/duotone-picker/custom-duotone-bar.d.ts +6 -0
  281. package/build-types/duotone-picker/custom-duotone-bar.d.ts.map +1 -0
  282. package/build-types/duotone-picker/duotone-picker.d.ts +38 -0
  283. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -0
  284. package/build-types/duotone-picker/duotone-swatch.d.ts +5 -0
  285. package/build-types/duotone-picker/duotone-swatch.d.ts.map +1 -0
  286. package/build-types/duotone-picker/index.d.ts +3 -0
  287. package/build-types/duotone-picker/index.d.ts.map +1 -0
  288. package/build-types/duotone-picker/stories/duotone-picker.d.ts +12 -0
  289. package/build-types/duotone-picker/stories/duotone-picker.d.ts.map +1 -0
  290. package/build-types/duotone-picker/stories/duotone-swatch.d.ts +14 -0
  291. package/build-types/duotone-picker/stories/duotone-swatch.d.ts.map +1 -0
  292. package/build-types/duotone-picker/types.d.ts +60 -0
  293. package/build-types/duotone-picker/types.d.ts.map +1 -0
  294. package/build-types/duotone-picker/utils.d.ts +52 -0
  295. package/build-types/duotone-picker/utils.d.ts.map +1 -0
  296. package/build-types/elevation/hook.d.ts +2 -2
  297. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  298. package/build-types/flex/flex/hook.d.ts +2 -2
  299. package/build-types/flex/flex-block/hook.d.ts +2 -2
  300. package/build-types/flex/flex-item/hook.d.ts +2 -2
  301. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  302. package/build-types/form-token-field/index.d.ts.map +1 -1
  303. package/build-types/form-token-field/styles.d.ts +1 -1
  304. package/build-types/form-token-field/types.d.ts +6 -0
  305. package/build-types/form-token-field/types.d.ts.map +1 -1
  306. package/build-types/gradient-picker/index.d.ts +49 -11
  307. package/build-types/gradient-picker/index.d.ts.map +1 -1
  308. package/build-types/gradient-picker/stories/index.d.ts +14 -0
  309. package/build-types/gradient-picker/stories/index.d.ts.map +1 -0
  310. package/build-types/gradient-picker/types.d.ts +87 -0
  311. package/build-types/gradient-picker/types.d.ts.map +1 -0
  312. package/build-types/grid/hook.d.ts +2 -2
  313. package/build-types/h-stack/hook.d.ts +2 -2
  314. package/build-types/heading/hook.d.ts +2 -2
  315. package/build-types/index.d.ts +128 -0
  316. package/build-types/index.d.ts.map +1 -0
  317. package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
  318. package/build-types/item-group/item/hook.d.ts +2 -2
  319. package/build-types/item-group/item-group/hook.d.ts +2 -2
  320. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  321. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  322. package/build-types/navigator/navigator-button/hook.d.ts +2 -2
  323. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  324. package/build-types/navigator/navigator-screen/component.d.ts +1 -1
  325. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  326. package/build-types/navigator/stories/index.d.ts +1 -0
  327. package/build-types/navigator/stories/index.d.ts.map +1 -1
  328. package/build-types/navigator/types.d.ts +2 -2
  329. package/build-types/navigator/types.d.ts.map +1 -1
  330. package/build-types/number-control/index.d.ts +2 -2
  331. package/build-types/number-control/stories/index.d.ts +2 -2
  332. package/build-types/palette-edit/index.d.ts.map +1 -1
  333. package/build-types/palette-edit/styles.d.ts +3 -3
  334. package/build-types/popover/index.d.ts +1 -1
  335. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  336. package/build-types/private-apis.d.ts +2 -3
  337. package/build-types/private-apis.d.ts.map +1 -1
  338. package/build-types/query-controls/author-select.d.ts.map +1 -1
  339. package/build-types/query-controls/category-select.d.ts.map +1 -1
  340. package/build-types/query-controls/index.d.ts.map +1 -1
  341. package/build-types/range-control/index.d.ts +1 -1
  342. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  343. package/build-types/resizable-box/index.d.ts +1 -1
  344. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  345. package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
  346. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  347. package/build-types/resizable-box/stories/index.d.ts +2 -2
  348. package/build-types/scrollable/hook.d.ts +2 -2
  349. package/build-types/search-control/index.d.ts +1 -1
  350. package/build-types/search-control/stories/index.d.ts +2 -2
  351. package/build-types/spacer/hook.d.ts +2 -2
  352. package/build-types/spinner/index.d.ts +1 -1
  353. package/build-types/surface/hook.d.ts +2 -2
  354. package/build-types/tab-panel/index.d.ts.map +1 -1
  355. package/build-types/text/hook.d.ts +2 -2
  356. package/build-types/text-control/index.d.ts +1 -1
  357. package/build-types/toolbar/toolbar-button/index.d.ts +2 -2
  358. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  359. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  360. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  361. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  362. package/build-types/tools-panel/types.d.ts +1 -0
  363. package/build-types/tools-panel/types.d.ts.map +1 -1
  364. package/build-types/truncate/hook.d.ts +2 -2
  365. package/build-types/ui/control-group/hook.d.ts +2 -2
  366. package/build-types/ui/control-label/hook.d.ts +2 -2
  367. package/build-types/ui/form-group/form-group.d.ts +2 -2
  368. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  369. package/build-types/unit-control/index.d.ts +1 -1
  370. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  371. package/build-types/utils/input/input-control.d.ts.map +1 -1
  372. package/build-types/v-stack/hook.d.ts +2 -2
  373. package/package.json +20 -19
  374. package/src/angle-picker-control/angle-circle.tsx +0 -1
  375. package/src/angle-picker-control/index.tsx +14 -27
  376. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +16 -9
  377. package/src/animate/index.tsx +75 -0
  378. package/src/animate/stories/index.tsx +102 -0
  379. package/src/animate/types.ts +32 -0
  380. package/src/border-box-control/stories/index.tsx +1 -1
  381. package/src/box-control/axial-input-controls.tsx +1 -1
  382. package/src/circular-option-picker/style.scss +10 -0
  383. package/src/color-indicator/style.scss +1 -0
  384. package/src/color-picker/README.md +2 -2
  385. package/src/color-picker/color-input.tsx +1 -12
  386. package/src/color-picker/component.tsx +9 -18
  387. package/src/color-picker/hex-input.tsx +2 -7
  388. package/src/color-picker/hsl-input.tsx +2 -7
  389. package/src/color-picker/input-with-slider.tsx +1 -9
  390. package/src/color-picker/legacy-adapter.tsx +1 -2
  391. package/src/color-picker/picker.tsx +5 -6
  392. package/src/color-picker/rgb-input.tsx +2 -7
  393. package/src/color-picker/stories/index.tsx +51 -0
  394. package/src/color-picker/test/{index.js → index.tsx} +36 -18
  395. package/src/color-picker/types.ts +128 -1
  396. package/src/color-picker/use-deprecated-props.ts +2 -53
  397. package/src/combobox-control/stories/index.tsx +1 -1
  398. package/src/custom-gradient-picker/{constants.js → constants.ts} +2 -2
  399. package/src/custom-gradient-picker/gradient-bar/{control-points.js → control-points.tsx} +171 -134
  400. package/src/custom-gradient-picker/gradient-bar/{index.js → index.tsx} +32 -10
  401. package/src/custom-gradient-picker/gradient-bar/test/{utils.js → utils.ts} +58 -31
  402. package/src/custom-gradient-picker/gradient-bar/utils.ts +193 -0
  403. package/src/custom-gradient-picker/{index.js → index.tsx} +63 -22
  404. package/src/custom-gradient-picker/serializer.ts +78 -0
  405. package/src/custom-gradient-picker/stories/index.tsx +45 -0
  406. package/src/custom-gradient-picker/style.scss +25 -4
  407. package/src/custom-gradient-picker/test/{serializer.js → serializer.ts} +39 -33
  408. package/src/custom-gradient-picker/types.ts +119 -0
  409. package/src/custom-gradient-picker/{utils.js → utils.ts} +37 -22
  410. package/src/custom-select-control/test/index.js +6 -4
  411. package/src/drop-zone/index.tsx +12 -8
  412. package/src/drop-zone/style.scss +1 -1
  413. package/src/{color-list-picker → duotone-picker/color-list-picker}/index.tsx +7 -6
  414. package/src/{color-list-picker → duotone-picker/color-list-picker}/types.ts +2 -2
  415. package/src/duotone-picker/{custom-duotone-bar.js → custom-duotone-bar.tsx} +7 -1
  416. package/src/duotone-picker/{duotone-picker.js → duotone-picker.tsx} +39 -2
  417. package/src/duotone-picker/{duotone-swatch.js → duotone-swatch.tsx} +2 -1
  418. package/src/duotone-picker/stories/{duotone-picker.js → duotone-picker.tsx} +15 -8
  419. package/src/duotone-picker/stories/{duotone-swatch.js → duotone-swatch.tsx} +9 -3
  420. package/src/duotone-picker/types.ts +61 -0
  421. package/src/duotone-picker/{utils.js → utils.ts} +29 -14
  422. package/src/flex/flex-item/README.md +1 -1
  423. package/src/form-token-field/README.md +1 -0
  424. package/src/form-token-field/index.tsx +10 -3
  425. package/src/form-token-field/style.scss +0 -7
  426. package/src/form-token-field/test/index.tsx +1 -0
  427. package/src/form-token-field/types.ts +6 -0
  428. package/src/gradient-picker/README.md +16 -23
  429. package/src/gradient-picker/{index.js → index.tsx} +70 -16
  430. package/src/gradient-picker/stories/{index.js → index.tsx} +19 -8
  431. package/src/gradient-picker/types.ts +89 -0
  432. package/src/item-group/test/index.js +5 -3
  433. package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  434. package/src/mobile/keyboard-aware-flat-list/index.ios.js +118 -67
  435. package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +203 -0
  436. package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-text-input.native.js +140 -0
  437. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +82 -0
  438. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +147 -0
  439. package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +87 -0
  440. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +105 -0
  441. package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +36 -0
  442. package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +54 -0
  443. package/src/navigator/navigator-provider/component.tsx +2 -0
  444. package/src/navigator/navigator-screen/component.tsx +5 -2
  445. package/src/navigator/stories/index.tsx +68 -0
  446. package/src/navigator/test/index.tsx +52 -0
  447. package/src/navigator/types.ts +2 -1
  448. package/src/palette-edit/index.tsx +4 -5
  449. package/src/query-controls/author-select.tsx +1 -0
  450. package/src/query-controls/category-select.tsx +1 -0
  451. package/src/query-controls/index.tsx +4 -2
  452. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  453. package/src/sandbox/index.native.js +139 -112
  454. package/src/slot-fill/test/slot.js +8 -6
  455. package/src/style.scss +1 -1
  456. package/src/tab-panel/index.tsx +7 -2
  457. package/src/tools-panel/test/index.tsx +86 -0
  458. package/src/tools-panel/tools-panel/hook.ts +44 -4
  459. package/src/tools-panel/types.ts +1 -0
  460. package/src/tooltip/test/index.js +251 -301
  461. package/src/utils/input/input-control.js +1 -0
  462. package/tsconfig.json +1 -3
  463. package/tsconfig.tsbuildinfo +1 -1
  464. package/build/color-list-picker/index.js.map +0 -1
  465. package/build-module/color-list-picker/index.js.map +0 -1
  466. package/build-types/color-list-picker/index.d.ts.map +0 -1
  467. package/build-types/color-list-picker/types.d.ts.map +0 -1
  468. package/src/animate/index.js +0 -60
  469. package/src/animate/stories/index.js +0 -53
  470. package/src/color-picker/stories/index.js +0 -41
  471. package/src/custom-gradient-picker/gradient-bar/utils.js +0 -189
  472. package/src/custom-gradient-picker/serializer.js +0 -48
  473. package/src/custom-gradient-picker/stories/index.js +0 -33
  474. /package/build/{color-list-picker → animate}/types.js +0 -0
  475. /package/build-module/{color-list-picker → animate}/types.js +0 -0
  476. /package/build-module/{color-list-picker → animate}/types.js.map +0 -0
  477. /package/{build/color-list-picker → build-module/custom-gradient-picker}/types.js.map +0 -0
  478. /package/build-types/{color-list-picker → duotone-picker/color-list-picker}/index.d.ts +0 -0
  479. /package/src/custom-gradient-picker/gradient-bar/{constants.js → constants.ts} +0 -0
  480. /package/src/custom-gradient-picker/styles/{custom-gradient-picker-styles.js → custom-gradient-picker-styles.tsx} +0 -0
  481. /package/src/{color-list-picker → duotone-picker/color-list-picker}/style.scss +0 -0
  482. /package/src/duotone-picker/{index.js → index.ts} +0 -0
  483. /package/src/{index.js → index.ts} +0 -0
  484. /package/src/{private-apis.js → private-apis.ts} +0 -0
@@ -12,24 +12,30 @@ import {
12
12
  describe( 'It should serialize a gradient', () => {
13
13
  test( 'serializeGradientColor', () => {
14
14
  expect(
15
- serializeGradientColor( { type: 'rgba', value: [ 1, 2, 3, 0.5 ] } )
15
+ serializeGradientColor( {
16
+ type: 'rgba',
17
+ value: [ '1', '2', '3', '0.5' ],
18
+ } )
16
19
  ).toBe( 'rgba(1,2,3,0.5)' );
17
20
 
18
21
  expect(
19
- serializeGradientColor( { type: 'rgb', value: [ 255, 0, 0 ] } )
22
+ serializeGradientColor( {
23
+ type: 'rgb',
24
+ value: [ '255', '0', '0' ],
25
+ } )
20
26
  ).toBe( 'rgb(255,0,0)' );
21
27
  } );
22
28
 
23
29
  test( 'serializeGradientPosition', () => {
24
- expect( serializeGradientPosition( { type: '%', value: 70 } ) ).toBe(
30
+ expect( serializeGradientPosition( { type: '%', value: '70' } ) ).toBe(
25
31
  '70%'
26
32
  );
27
33
 
28
- expect( serializeGradientPosition( { type: '%', value: 0 } ) ).toBe(
34
+ expect( serializeGradientPosition( { type: '%', value: '0' } ) ).toBe(
29
35
  '0%'
30
36
  );
31
37
 
32
- expect( serializeGradientPosition( { type: 'px', value: 4 } ) ).toBe(
38
+ expect( serializeGradientPosition( { type: 'px', value: '4' } ) ).toBe(
33
39
  '4px'
34
40
  );
35
41
  } );
@@ -38,35 +44,35 @@ describe( 'It should serialize a gradient', () => {
38
44
  expect(
39
45
  serializeGradientColorStop( {
40
46
  type: 'rgba',
41
- value: [ 1, 2, 3, 0.5 ],
42
- length: { type: '%', value: 70 },
47
+ value: [ '1', '2', '3', '0.5' ],
48
+ length: { type: '%', value: '70' },
43
49
  } )
44
50
  ).toBe( 'rgba(1,2,3,0.5) 70%' );
45
51
 
46
52
  expect(
47
53
  serializeGradientColorStop( {
48
54
  type: 'rgb',
49
- value: [ 255, 0, 0 ],
50
- length: { type: '%', value: 0 },
55
+ value: [ '255', '0', '0' ],
56
+ length: { type: '%', value: '0' },
51
57
  } )
52
58
  ).toBe( 'rgb(255,0,0) 0%' );
53
59
 
54
60
  expect(
55
61
  serializeGradientColorStop( {
56
62
  type: 'rgba',
57
- value: [ 1, 2, 3, 0.5 ],
58
- length: { type: 'px', value: 100 },
63
+ value: [ '1', '2', '3', '0.5' ],
64
+ length: { type: 'px', value: '100' },
59
65
  } )
60
66
  ).toBe( 'rgba(1,2,3,0.5) 100px' );
61
67
  } );
62
68
 
63
69
  test( 'serializeGradientOrientation', () => {
64
70
  expect(
65
- serializeGradientOrientation( { type: 'angular', value: 40 } )
71
+ serializeGradientOrientation( { type: 'angular', value: '40' } )
66
72
  ).toBe( '40deg' );
67
73
 
68
74
  expect(
69
- serializeGradientOrientation( { type: 'angular', value: 0 } )
75
+ serializeGradientOrientation( { type: 'angular', value: '0' } )
70
76
  ).toBe( '0deg' );
71
77
  } );
72
78
 
@@ -74,17 +80,17 @@ describe( 'It should serialize a gradient', () => {
74
80
  expect(
75
81
  serializeGradient( {
76
82
  type: 'linear-gradient',
77
- orientation: { type: 'angular', value: 40 },
83
+ orientation: { type: 'angular', value: '40' },
78
84
  colorStops: [
79
85
  {
80
86
  type: 'rgba',
81
- value: [ 1, 2, 3, 0.5 ],
82
- length: { type: '%', value: 70 },
87
+ value: [ '1', '2', '3', '0.5' ],
88
+ length: { type: '%', value: '70' },
83
89
  },
84
90
  {
85
91
  type: 'rgba',
86
- value: [ 255, 1, 1, 0.9 ],
87
- length: { type: '%', value: 40 },
92
+ value: [ '255', '1', '1', '0.9' ],
93
+ length: { type: '%', value: '40' },
88
94
  },
89
95
  ],
90
96
  } )
@@ -98,13 +104,13 @@ describe( 'It should serialize a gradient', () => {
98
104
  colorStops: [
99
105
  {
100
106
  type: 'rgba',
101
- value: [ 1, 2, 3, 0.5 ],
102
- length: { type: '%', value: 70 },
107
+ value: [ '1', '2', '3', '0.5' ],
108
+ length: { type: '%', value: '70' },
103
109
  },
104
110
  {
105
111
  type: 'rgba',
106
- value: [ 255, 1, 1, 0.9 ],
107
- length: { type: '%', value: 40 },
112
+ value: [ '255', '1', '1', '0.9' ],
113
+ length: { type: '%', value: '40' },
108
114
  },
109
115
  ],
110
116
  } )
@@ -117,12 +123,12 @@ describe( 'It should serialize a gradient', () => {
117
123
  {
118
124
  type: 'hex',
119
125
  value: '000',
120
- length: { type: '%', value: 70 },
126
+ length: { type: '%', value: '70' },
121
127
  },
122
128
  {
123
129
  type: 'hex',
124
130
  value: 'fff',
125
- length: { type: '%', value: 40 },
131
+ length: { type: '%', value: '40' },
126
132
  },
127
133
  ],
128
134
  } )
@@ -131,27 +137,27 @@ describe( 'It should serialize a gradient', () => {
131
137
  expect(
132
138
  serializeGradient( {
133
139
  type: 'linear-gradient',
134
- orientation: { type: 'angular', value: 0 },
140
+ orientation: { type: 'angular', value: '0' },
135
141
  colorStops: [
136
142
  {
137
143
  type: 'rgba',
138
- value: [ 1, 2, 3, 0.5 ],
139
- length: { type: '%', value: 0 },
144
+ value: [ '1', '2', '3', '0.5' ],
145
+ length: { type: '%', value: '0' },
140
146
  },
141
147
  {
142
148
  type: 'rgba',
143
- value: [ 255, 1, 1, 0.9 ],
144
- length: { type: '%', value: 40 },
149
+ value: [ '255', '1', '1', '0.9' ],
150
+ length: { type: '%', value: '40' },
145
151
  },
146
152
  {
147
153
  type: 'rgba',
148
- value: [ 1, 2, 3, 0.5 ],
149
- length: { type: '%', value: 100 },
154
+ value: [ '1', '2', '3', '0.5' ],
155
+ length: { type: '%', value: '100' },
150
156
  },
151
157
  {
152
158
  type: 'rgba',
153
- value: [ 10, 20, 30, 0.5 ],
154
- length: { type: '%', value: 20 },
159
+ value: [ '10', '20', '30', '0.5' ],
160
+ length: { type: '%', value: '20' },
155
161
  },
156
162
  ],
157
163
  } )
@@ -0,0 +1,119 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type gradientParser from 'gradient-parser';
5
+
6
+ export type CustomGradientPickerProps = {
7
+ /**
8
+ * Start opting in to the new margin-free styles that will become the default
9
+ * in a future version, currently scheduled to be WordPress 6.4. (The prop
10
+ * can be safely removed once this happens.)
11
+ *
12
+ * @default false
13
+ */
14
+ __nextHasNoMargin?: boolean;
15
+ /**
16
+ * The current value of the gradient. Pass a css gradient string (See default value for example).
17
+ * Optionally pass in a `null` value to specify no gradient is currently selected.
18
+ *
19
+ * @default 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)'
20
+ */
21
+ value?: string | null;
22
+ /**
23
+ * The function called when a new gradient has been defined. It is passed to
24
+ * the `currentGradient` as an argument.
25
+ */
26
+ onChange: ( currentGradient: string ) => void;
27
+ /**
28
+ * Whether this is rendered in the sidebar.
29
+ *
30
+ * @default false
31
+ */
32
+ __experimentalIsRenderedInSidebar?: boolean;
33
+ };
34
+
35
+ export type GradientAnglePickerProps = {
36
+ gradientAST:
37
+ | gradientParser.LinearGradientNode
38
+ | gradientParser.RepeatingLinearGradientNode;
39
+ hasGradient: boolean;
40
+ onChange: ( gradient: string ) => void;
41
+ };
42
+
43
+ export type GradientTypePickerProps = {
44
+ gradientAST: gradientParser.GradientNode;
45
+ hasGradient: boolean;
46
+ onChange: ( gradient: string ) => void;
47
+ };
48
+
49
+ export type ControlPoint = { color: string; position: number };
50
+
51
+ export type CustomGradientBarProps = {
52
+ background: React.CSSProperties[ 'background' ];
53
+ hasGradient: boolean;
54
+ value: ControlPoint[];
55
+ onChange: ( newControlPoints: ControlPoint[] ) => void;
56
+ disableInserter?: boolean;
57
+ disableAlpha?: boolean;
58
+ __experimentalIsRenderedInSidebar?: boolean;
59
+ };
60
+
61
+ export type CustomGradientBarIdleState = { id: 'IDLE' };
62
+ type CustomGradientBarMovingInserterState = {
63
+ id: 'MOVING_INSERTER';
64
+ insertPosition: number;
65
+ };
66
+ type CustomGradientBarInsertingControlPointState = {
67
+ id: 'INSERTING_CONTROL_POINT';
68
+ insertPosition: number;
69
+ };
70
+ type CustomGradientBarMovingControlPointState = { id: 'MOVING_CONTROL_POINT' };
71
+
72
+ export type CustomGradientBarReducerState =
73
+ | CustomGradientBarIdleState
74
+ | CustomGradientBarMovingInserterState
75
+ | CustomGradientBarInsertingControlPointState
76
+ | CustomGradientBarMovingControlPointState;
77
+
78
+ export type CustomGradientBarReducerAction =
79
+ | { type: 'MOVE_INSERTER'; insertPosition: number }
80
+ | { type: 'STOP_INSERTER_MOVE' }
81
+ | { type: 'OPEN_INSERTER' }
82
+ | { type: 'CLOSE_INSERTER' }
83
+ | { type: 'START_CONTROL_CHANGE' }
84
+ | { type: 'STOP_CONTROL_CHANGE' };
85
+
86
+ export type ControlPointButtonProps = {
87
+ isOpen: boolean;
88
+ position: ControlPoint[ 'position' ];
89
+ color: string;
90
+ };
91
+
92
+ export type ControlPointsProps = {
93
+ disableRemove: boolean;
94
+ disableAlpha: boolean;
95
+ gradientPickerDomRef: React.RefObject< HTMLDivElement >;
96
+ ignoreMarkerPosition?: number;
97
+ value: ControlPoint[];
98
+ onChange: ( controlPoints: ControlPoint[] ) => void;
99
+ onStartControlPointChange: () => void;
100
+ onStopControlPointChange: () => void;
101
+ __experimentalIsRenderedInSidebar: boolean;
102
+ };
103
+
104
+ export type ControlPointMoveState = {
105
+ initialPosition: number;
106
+ index: number;
107
+ significantMoveHappened: boolean;
108
+ listenersActivated: boolean;
109
+ };
110
+
111
+ export type InsertPointProps = {
112
+ value: ControlPoint[];
113
+ onChange: ( controlPoints: ControlPoint[] ) => void;
114
+ onOpenInserter: () => void;
115
+ onCloseInserter: () => void;
116
+ insertPosition: number;
117
+ disableAlpha: boolean;
118
+ __experimentalIsRenderedInSidebar: boolean;
119
+ };
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * External dependencies
5
3
  */
@@ -16,10 +14,13 @@ import {
16
14
  DIRECTIONAL_ORIENTATION_ANGLE_MAP,
17
15
  } from './constants';
18
16
  import { serializeGradient } from './serializer';
17
+ import type { ControlPoint } from './types';
19
18
 
20
19
  extend( [ namesPlugin ] );
21
20
 
22
- export function getLinearGradientRepresentation( gradientAST ) {
21
+ export function getLinearGradientRepresentation(
22
+ gradientAST: gradientParser.GradientNode
23
+ ) {
23
24
  return serializeGradient( {
24
25
  type: 'linear-gradient',
25
26
  orientation: HORIZONTAL_GRADIENT_ORIENTATION,
@@ -27,29 +28,41 @@ export function getLinearGradientRepresentation( gradientAST ) {
27
28
  } );
28
29
  }
29
30
 
30
- function hasUnsupportedLength( item ) {
31
+ function hasUnsupportedLength( item: gradientParser.ColorStop ) {
31
32
  return item.length === undefined || item.length.type !== '%';
32
33
  }
33
34
 
34
- export function getGradientAstWithDefault( value ) {
35
+ export function getGradientAstWithDefault( value?: string | null ) {
35
36
  // gradientAST will contain the gradient AST as parsed by gradient-parser npm module.
36
37
  // More information of its structure available at https://www.npmjs.com/package/gradient-parser#ast.
37
- let gradientAST;
38
+ let gradientAST: gradientParser.GradientNode | undefined;
39
+ let hasGradient = !! value;
40
+
41
+ const valueToParse = value ?? DEFAULT_GRADIENT;
38
42
 
39
43
  try {
40
- gradientAST = gradientParser.parse( value )[ 0 ];
41
- gradientAST.value = value;
44
+ gradientAST = gradientParser.parse( valueToParse )[ 0 ];
42
45
  } catch ( error ) {
46
+ // eslint-disable-next-line no-console
47
+ console.warn(
48
+ 'wp.components.CustomGradientPicker failed to parse the gradient with error',
49
+ error
50
+ );
51
+
43
52
  gradientAST = gradientParser.parse( DEFAULT_GRADIENT )[ 0 ];
44
- gradientAST.value = DEFAULT_GRADIENT;
53
+ hasGradient = false;
45
54
  }
46
55
 
47
- if ( gradientAST.orientation?.type === 'directional' ) {
48
- gradientAST.orientation.type = 'angular';
49
- gradientAST.orientation.value =
50
- DIRECTIONAL_ORIENTATION_ANGLE_MAP[
56
+ if (
57
+ ! Array.isArray( gradientAST.orientation ) &&
58
+ gradientAST.orientation?.type === 'directional'
59
+ ) {
60
+ gradientAST.orientation = {
61
+ type: 'angular',
62
+ value: DIRECTIONAL_ORIENTATION_ANGLE_MAP[
51
63
  gradientAST.orientation.value
52
- ].toString();
64
+ ].toString(),
65
+ };
53
66
  }
54
67
 
55
68
  if ( gradientAST.colorStops.some( hasUnsupportedLength ) ) {
@@ -57,19 +70,18 @@ export function getGradientAstWithDefault( value ) {
57
70
  const step = 100 / ( colorStops.length - 1 );
58
71
  colorStops.forEach( ( stop, index ) => {
59
72
  stop.length = {
60
- value: step * index,
73
+ value: `${ step * index }`,
61
74
  type: '%',
62
75
  };
63
76
  } );
64
- gradientAST.value = serializeGradient( gradientAST );
65
77
  }
66
78
 
67
- return gradientAST;
79
+ return { gradientAST, hasGradient };
68
80
  }
69
81
 
70
82
  export function getGradientAstWithControlPoints(
71
- gradientAST,
72
- newControlPoints
83
+ gradientAST: gradientParser.GradientNode,
84
+ newControlPoints: ControlPoint[]
73
85
  ) {
74
86
  return {
75
87
  ...gradientAST,
@@ -81,13 +93,16 @@ export function getGradientAstWithControlPoints(
81
93
  value: position?.toString(),
82
94
  },
83
95
  type: a < 1 ? 'rgba' : 'rgb',
84
- value: a < 1 ? [ r, g, b, a ] : [ r, g, b ],
96
+ value:
97
+ a < 1
98
+ ? [ `${ r }`, `${ g }`, `${ b }`, `${ a }` ]
99
+ : [ `${ r }`, `${ g }`, `${ b }` ],
85
100
  };
86
101
  } ),
87
- };
102
+ } as gradientParser.GradientNode;
88
103
  }
89
104
 
90
- export function getStopCssColor( colorStop ) {
105
+ export function getStopCssColor( colorStop: gradientParser.ColorStop ) {
91
106
  switch ( colorStop.type ) {
92
107
  case 'hex':
93
108
  return `#${ colorStop.value }`;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, fireEvent, screen } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -9,7 +10,8 @@ import { render, fireEvent, screen } from '@testing-library/react';
9
10
  import CustomSelectControl from '..';
10
11
 
11
12
  describe( 'CustomSelectControl', () => {
12
- it( 'Captures the keypress event and does not let it propagate', () => {
13
+ it( 'Captures the keypress event and does not let it propagate', async () => {
14
+ const user = userEvent.setup();
13
15
  const onKeyDown = jest.fn();
14
16
  const options = [
15
17
  {
@@ -39,10 +41,10 @@ describe( 'CustomSelectControl', () => {
39
41
  </div>
40
42
  );
41
43
  const toggleButton = screen.getByRole( 'button' );
42
- fireEvent.click( toggleButton );
44
+ await user.click( toggleButton );
43
45
 
44
46
  const customSelect = screen.getByRole( 'listbox' );
45
- fireEvent.keyDown( customSelect );
47
+ await user.type( customSelect, '{enter}' );
46
48
 
47
49
  expect( onKeyDown ).toHaveBeenCalledTimes( 0 );
48
50
  } );
@@ -120,30 +120,34 @@ export function DropZoneComponent( {
120
120
 
121
121
  let children;
122
122
  const backdrop = {
123
- hidden: { scaleY: 0, opacity: 0 },
123
+ hidden: { opacity: 0 },
124
124
  show: {
125
- scaleY: 1,
126
125
  opacity: 1,
127
126
  transition: {
128
127
  type: 'tween',
129
128
  duration: 0.2,
130
- delay: 0.1,
131
- delayChildren: 0.2,
129
+ delay: 0,
130
+ delayChildren: 0.1,
132
131
  },
133
132
  },
134
133
  exit: {
135
- scaleY: 1,
136
134
  opacity: 0,
137
135
  transition: {
138
- duration: 0.3,
136
+ duration: 0.2,
139
137
  delayChildren: 0,
140
138
  },
141
139
  },
142
140
  };
143
141
 
144
142
  const foreground = {
145
- hidden: { opacity: 0, scale: 0.75 },
146
- show: { opacity: 1, scale: 1 },
143
+ hidden: { opacity: 0, scale: 0.9 },
144
+ show: {
145
+ opacity: 1,
146
+ scale: 1,
147
+ transition: {
148
+ duration: 0.1,
149
+ },
150
+ },
147
151
  exit: { opacity: 0, scale: 0.9 },
148
152
  };
149
153
 
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  .components-drop-zone__content-icon {
41
- margin: 0 auto;
41
+ margin: 0 auto $grid-unit-10;
42
42
  line-height: 0;
43
43
  fill: currentColor;
44
44
  pointer-events: none;
@@ -7,11 +7,11 @@ import { swatch } from '@wordpress/icons';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import Button from '../button';
11
- import ColorPalette from '../color-palette';
12
- import ColorIndicator from '../color-indicator';
13
- import Icon from '../icon';
14
- import { HStack } from '../h-stack';
10
+ import Button from '../../button';
11
+ import ColorPalette from '../../color-palette';
12
+ import ColorIndicator from '../../color-indicator';
13
+ import Icon from '../../icon';
14
+ import { HStack } from '../../h-stack';
15
15
  import type { ColorListPickerProps, ColorOptionProps } from './types';
16
16
 
17
17
  function ColorOption( {
@@ -75,7 +75,8 @@ function ColorListPicker( {
75
75
  disableCustomColors={ disableCustomColors }
76
76
  enableAlpha={ enableAlpha }
77
77
  onChange={ ( newColor ) => {
78
- const newColors = value.slice();
78
+ const newColors: ( string | undefined )[] =
79
+ value.slice();
79
80
  newColors[ index ] = newColor;
80
81
  onChange( newColors );
81
82
  } }
@@ -5,7 +5,7 @@ import type { CSSProperties } from 'react';
5
5
 
6
6
  export type ColorListPickerProps = {
7
7
  /**
8
- * A list of predifened colors. Each color is an object with a `name` and a
8
+ * A list of predefined colors. Each color is an object with a `name` and a
9
9
  * `color` value.
10
10
  * The `name` is a string used to identify the color in the UI.
11
11
  * The `color` is a valid CSS color string.
@@ -21,7 +21,7 @@ export type ColorListPickerProps = {
21
21
  /**
22
22
  * An array containing the currently selected colors.
23
23
  */
24
- value?: Array< string | undefined >;
24
+ value?: Array< string >;
25
25
  /**
26
26
  * Controls whether the custom color picker is displayed.
27
27
  */
@@ -11,7 +11,13 @@ import {
11
11
 
12
12
  const PLACEHOLDER_VALUES = [ '#333', '#CCC' ];
13
13
 
14
- export default function CustomDuotoneBar( { value, onChange } ) {
14
+ export default function CustomDuotoneBar( {
15
+ value,
16
+ onChange,
17
+ }: {
18
+ value?: string[];
19
+ onChange: ( value?: string[] ) => void;
20
+ } ) {
15
21
  const hasGradient = !! value;
16
22
  const values = hasGradient ? value : PLACEHOLDER_VALUES;
17
23
  const background = getGradientFromCSSColors( values );
@@ -12,14 +12,48 @@ import { __, sprintf } from '@wordpress/i18n';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import ColorListPicker from '../color-list-picker';
15
+ import ColorListPicker from './color-list-picker';
16
16
  import CircularOptionPicker from '../circular-option-picker';
17
17
  import { VStack } from '../v-stack';
18
18
 
19
19
  import CustomDuotoneBar from './custom-duotone-bar';
20
20
  import { getDefaultColors, getGradientFromCSSColors } from './utils';
21
21
  import { Spacer } from '../spacer';
22
+ import type { DuotonePickerProps } from './types';
22
23
 
24
+ /**
25
+ * ```jsx
26
+ * import { DuotonePicker, DuotoneSwatch } from '@wordpress/components';
27
+ * import { useState } from '@wordpress/element';
28
+ *
29
+ * const DUOTONE_PALETTE = [
30
+ * { colors: [ '#8c00b7', '#fcff41' ], name: 'Purple and yellow', slug: 'purple-yellow' },
31
+ * { colors: [ '#000097', '#ff4747' ], name: 'Blue and red', slug: 'blue-red' },
32
+ * ];
33
+ *
34
+ * const COLOR_PALETTE = [
35
+ * { color: '#ff4747', name: 'Red', slug: 'red' },
36
+ * { color: '#fcff41', name: 'Yellow', slug: 'yellow' },
37
+ * { color: '#000097', name: 'Blue', slug: 'blue' },
38
+ * { color: '#8c00b7', name: 'Purple', slug: 'purple' },
39
+ * ];
40
+ *
41
+ * const Example = () => {
42
+ * const [ duotone, setDuotone ] = useState( [ '#000000', '#ffffff' ] );
43
+ * return (
44
+ * <>
45
+ * <DuotonePicker
46
+ * duotonePalette={ DUOTONE_PALETTE }
47
+ * colorPalette={ COLOR_PALETTE }
48
+ * value={ duotone }
49
+ * onChange={ setDuotone }
50
+ * />
51
+ * <DuotoneSwatch values={ duotone } />
52
+ * </>
53
+ * );
54
+ * };
55
+ * ```
56
+ */
23
57
  function DuotonePicker( {
24
58
  clearable = true,
25
59
  unsetable = true,
@@ -29,7 +63,7 @@ function DuotonePicker( {
29
63
  disableCustomDuotone,
30
64
  value,
31
65
  onChange,
32
- } ) {
66
+ }: DuotonePickerProps ) {
33
67
  const [ defaultDark, defaultLight ] = useMemo(
34
68
  () => getDefaultColors( colorPalette ),
35
69
  [ colorPalette ]
@@ -125,6 +159,9 @@ function DuotonePicker( {
125
159
  newColors.length >= 2
126
160
  ? newColors
127
161
  : undefined;
162
+ // @ts-expect-error TODO: The color arrays for a DuotonePicker should be a tuple of two colors,
163
+ // but it's currently typed as a string[].
164
+ // See also https://github.com/WordPress/gutenberg/pull/49060#discussion_r1136951035
128
165
  onChange( newValue );
129
166
  } }
130
167
  />
@@ -9,8 +9,9 @@ import { swatch } from '@wordpress/icons';
9
9
  import ColorIndicator from '../color-indicator';
10
10
  import Icon from '../icon';
11
11
  import { getGradientFromCSSColors } from './utils';
12
+ import type { DuotoneSwatchProps } from './types';
12
13
 
13
- function DuotoneSwatch( { values } ) {
14
+ function DuotoneSwatch( { values }: DuotoneSwatchProps ) {
14
15
  return values ? (
15
16
  <ColorIndicator
16
17
  colorValue={ getGradientFromCSSColors( values, '135deg' ) }