@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
@@ -1,10 +1,137 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Colord } from 'colord';
4
+ import type {
5
+ Colord,
6
+ HslColor,
7
+ HsvaColor,
8
+ HsvColor,
9
+ RgbaColor,
10
+ RgbColor,
11
+ } from 'colord';
12
+ import type { HslaColor } from 'react-colorful';
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import type { WordPressComponentProps } from '../ui/context';
17
+ import type { useDeprecatedProps } from './use-deprecated-props';
5
18
 
6
19
  export type ColorType = 'rgb' | 'hsl' | 'hex';
7
20
  export type ColorCopyButtonProps = {
8
21
  color: Colord;
9
22
  colorType: ColorType;
10
23
  };
24
+
25
+ export type LegacyAdapterProps = Parameters< typeof useDeprecatedProps >[ 0 ];
26
+
27
+ export type ColorPickerProps = WordPressComponentProps<
28
+ {
29
+ /**
30
+ * When `true` the color picker will display the alpha channel both in
31
+ * the bottom inputs as well as in the color picker itself.
32
+ *
33
+ * @default false
34
+ */
35
+ enableAlpha?: boolean;
36
+ /**
37
+ * The current color value to display in the picker.
38
+ * Must be a hex or hex8 string.
39
+ */
40
+ color?: string;
41
+ /**
42
+ * Fired when the color changes. Always passes a hex or hex8 color string.
43
+ */
44
+ onChange?: ( color: string ) => void;
45
+ /**
46
+ * An optional default value to use for the color picker.
47
+ */
48
+ defaultValue?: string;
49
+ /**
50
+ * The format to copy when clicking the displayed color format.
51
+ */
52
+ copyFormat?: ColorType;
53
+ },
54
+ 'div',
55
+ false
56
+ >;
57
+
58
+ export interface PickerProps {
59
+ color: Colord;
60
+ enableAlpha: boolean;
61
+ onChange: ( nextColor: Colord ) => void;
62
+ }
63
+
64
+ export interface ColorInputProps {
65
+ colorType: 'hsl' | 'hex' | 'rgb';
66
+ color: Colord;
67
+ onChange: ( nextColor: Colord ) => void;
68
+ enableAlpha: boolean;
69
+ }
70
+
71
+ export interface InputWithSliderProps {
72
+ min: number;
73
+ max: number;
74
+ value: number;
75
+ label: string;
76
+ abbreviation: string;
77
+ onChange: ( value: number ) => void;
78
+ }
79
+
80
+ export interface HexInputProps {
81
+ color: Colord;
82
+ onChange: ( nextColor: Colord ) => void;
83
+ enableAlpha: boolean;
84
+ }
85
+
86
+ export interface HslInputProps {
87
+ color: Colord;
88
+ onChange: ( nextColor: Colord ) => void;
89
+ enableAlpha: boolean;
90
+ }
91
+
92
+ export interface RgbInputProps {
93
+ color: Colord;
94
+ onChange: ( nextColor: Colord ) => void;
95
+ enableAlpha: boolean;
96
+ }
97
+
98
+ /**
99
+ * @deprecated
100
+ */
101
+ export type LegacyColor =
102
+ | string
103
+ | {
104
+ hex: string;
105
+ hsl: HslColor | HslaColor;
106
+ hsv: HsvColor | HsvaColor;
107
+ rgb: RgbColor | RgbaColor;
108
+ /**
109
+ * @deprecated
110
+ */
111
+ oldHue: number;
112
+ /**
113
+ * @deprecated
114
+ */
115
+ source: 'hex';
116
+ };
117
+
118
+ /**
119
+ * @deprecated
120
+ */
121
+ export interface LegacyProps {
122
+ color?: LegacyColor;
123
+ /**
124
+ * @deprecated
125
+ */
126
+ onChangeComplete: ( colors: LegacyColor ) => void;
127
+ /**
128
+ * @deprecated
129
+ */
130
+ oldHue: string;
131
+ className: string;
132
+ /**
133
+ * @deprecated
134
+ */
135
+ disableAlpha: boolean;
136
+ onChange?: never;
137
+ }
@@ -1,16 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import {
5
- colord,
6
- HslColor,
7
- HslaColor,
8
- HsvColor,
9
- HsvaColor,
10
- RgbColor,
11
- RgbaColor,
12
- } from 'colord';
13
- import type { ComponentProps } from 'react';
4
+ import { colord } from 'colord';
14
5
  import memoize from 'memize';
15
6
 
16
7
  /**
@@ -21,49 +12,7 @@ import { useCallback } from '@wordpress/element';
21
12
  /**
22
13
  * Internal dependencies
23
14
  */
24
- import type ColorPicker from './component';
25
-
26
- type ColorPickerProps = ComponentProps< typeof ColorPicker >;
27
-
28
- /**
29
- * @deprecated
30
- */
31
- type LegacyColor =
32
- | string
33
- | {
34
- hex: string;
35
- hsl: HslColor | HslaColor;
36
- hsv: HsvColor | HsvaColor;
37
- rgb: RgbColor | RgbaColor;
38
- /**
39
- * @deprecated
40
- */
41
- oldHue: number;
42
- /**
43
- * @deprecated
44
- */
45
- source: 'hex';
46
- };
47
-
48
- /**
49
- * @deprecated
50
- */
51
- export interface LegacyProps {
52
- color?: LegacyColor;
53
- /**
54
- * @deprecated
55
- */
56
- onChangeComplete: ( colors: LegacyColor ) => void;
57
- /**
58
- * @deprecated
59
- */
60
- oldHue: string;
61
- className: string;
62
- /**
63
- * @deprecated
64
- */
65
- disableAlpha: boolean;
66
- }
15
+ import type { ColorPickerProps, LegacyColor, LegacyProps } from './types';
67
16
 
68
17
  function isLegacyProps( props: any ): props is LegacyProps {
69
18
  return (
@@ -36,7 +36,7 @@ const meta: ComponentMeta< typeof ComboboxControl > = {
36
36
  };
37
37
  export default meta;
38
38
 
39
- const mapCountryOption = ( country: typeof countries[ number ] ) => ( {
39
+ const mapCountryOption = ( country: ( typeof countries )[ number ] ) => ( {
40
40
  value: country.code,
41
41
  label: country.name,
42
42
  } );
@@ -10,8 +10,8 @@ export const DEFAULT_LINEAR_GRADIENT_ANGLE = 180;
10
10
 
11
11
  export const HORIZONTAL_GRADIENT_ORIENTATION = {
12
12
  type: 'angular',
13
- value: 90,
14
- };
13
+ value: '90',
14
+ } as const;
15
15
 
16
16
  export const GRADIENT_OPTIONS = [
17
17
  { value: 'linear-gradient', label: __( 'Linear' ) },
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * External dependencies
5
3
  */
@@ -36,8 +34,21 @@ import {
36
34
  MINIMUM_SIGNIFICANT_MOVE,
37
35
  KEYBOARD_CONTROL_POINT_VARIATION,
38
36
  } from './constants';
37
+ import type { WordPressComponentProps } from '../../ui/context';
38
+ import type {
39
+ ControlPointButtonProps,
40
+ ControlPointMoveState,
41
+ ControlPointsProps,
42
+ InsertPointProps,
43
+ } from '../types';
44
+ import type { CustomColorPickerDropdownProps } from '../../color-palette/types';
39
45
 
40
- function ControlPointButton( { isOpen, position, color, ...additionalProps } ) {
46
+ function ControlPointButton( {
47
+ isOpen,
48
+ position,
49
+ color,
50
+ ...additionalProps
51
+ }: WordPressComponentProps< ControlPointButtonProps, 'button', true > ) {
41
52
  const instanceId = useInstanceId( ControlPointButton );
42
53
  const descriptionId = `components-custom-gradient-picker__control-point-button-description-${ instanceId }`;
43
54
  return (
@@ -75,13 +86,14 @@ function GradientColorPickerDropdown( {
75
86
  isRenderedInSidebar,
76
87
  className,
77
88
  ...props
78
- } ) {
89
+ }: CustomColorPickerDropdownProps ) {
79
90
  // Open the popover below the gradient control/insertion point
80
91
  const popoverProps = useMemo(
81
- () => ( {
82
- placement: 'bottom',
83
- offset: 8,
84
- } ),
92
+ () =>
93
+ ( {
94
+ placement: 'bottom',
95
+ offset: 8,
96
+ } as const ),
85
97
  []
86
98
  );
87
99
 
@@ -110,16 +122,25 @@ function ControlPoints( {
110
122
  onStartControlPointChange,
111
123
  onStopControlPointChange,
112
124
  __experimentalIsRenderedInSidebar,
113
- } ) {
114
- const controlPointMoveState = useRef();
125
+ }: ControlPointsProps ) {
126
+ const controlPointMoveState = useRef< ControlPointMoveState >();
127
+
128
+ const onMouseMove = ( event: MouseEvent ) => {
129
+ if (
130
+ controlPointMoveState.current === undefined ||
131
+ gradientPickerDomRef.current === null
132
+ ) {
133
+ return;
134
+ }
115
135
 
116
- const onMouseMove = ( event ) => {
117
136
  const relativePosition = getHorizontalRelativeGradientPosition(
118
137
  event.clientX,
119
138
  gradientPickerDomRef.current
120
139
  );
140
+
121
141
  const { initialPosition, index, significantMoveHappened } =
122
142
  controlPointMoveState.current;
143
+
123
144
  if (
124
145
  ! significantMoveHappened &&
125
146
  Math.abs( initialPosition - relativePosition ) >=
@@ -150,142 +171,158 @@ function ControlPoints( {
150
171
  // Adding `cleanEventListeners` to the dependency array below requires the function itself to be wrapped in a `useCallback`
151
172
  // This memoization would prevent the event listeners from being properly cleaned.
152
173
  // Instead, we'll pass a ref to the function in our `useEffect` so `cleanEventListeners` itself is no longer a dependency.
153
- const cleanEventListenersRef = useRef();
174
+ const cleanEventListenersRef = useRef< () => void >();
154
175
  cleanEventListenersRef.current = cleanEventListeners;
155
176
 
156
177
  useEffect( () => {
157
178
  return () => {
158
- cleanEventListenersRef.current();
179
+ cleanEventListenersRef.current?.();
159
180
  };
160
181
  }, [] );
161
182
 
162
- return controlPoints.map( ( point, index ) => {
163
- const initialPosition = point?.position;
164
- return (
165
- ignoreMarkerPosition !== initialPosition && (
166
- <GradientColorPickerDropdown
167
- isRenderedInSidebar={ __experimentalIsRenderedInSidebar }
168
- key={ index }
169
- onClose={ onStopControlPointChange }
170
- renderToggle={ ( { isOpen, onToggle } ) => (
171
- <ControlPointButton
183
+ return (
184
+ <>
185
+ { controlPoints.map( ( point, index ) => {
186
+ const initialPosition = point?.position;
187
+ return (
188
+ ignoreMarkerPosition !== initialPosition && (
189
+ <GradientColorPickerDropdown
190
+ isRenderedInSidebar={
191
+ __experimentalIsRenderedInSidebar
192
+ }
172
193
  key={ index }
173
- onClick={ () => {
174
- if (
175
- controlPointMoveState.current &&
176
- controlPointMoveState.current
177
- .significantMoveHappened
178
- ) {
179
- return;
180
- }
181
- if ( isOpen ) {
182
- onStopControlPointChange();
183
- } else {
184
- onStartControlPointChange();
185
- }
186
- onToggle();
187
- } }
188
- onMouseDown={ () => {
189
- if ( window && window.addEventListener ) {
190
- controlPointMoveState.current = {
191
- initialPosition,
192
- index,
193
- significantMoveHappened: false,
194
- listenersActivated: true,
195
- };
196
- onStartControlPointChange();
197
- window.addEventListener(
198
- 'mousemove',
199
- onMouseMove
200
- );
201
- window.addEventListener(
202
- 'mouseup',
203
- cleanEventListeners
204
- );
205
- }
206
- } }
207
- onKeyDown={ ( event ) => {
208
- if ( event.code === 'ArrowLeft' ) {
209
- // Stop propagation of the key press event to avoid focus moving
210
- // to another editor area.
211
- event.stopPropagation();
212
- onChange(
213
- updateControlPointPosition(
214
- controlPoints,
215
- index,
216
- clampPercent(
217
- point.position -
218
- KEYBOARD_CONTROL_POINT_VARIATION
219
- )
220
- )
221
- );
222
- } else if ( event.code === 'ArrowRight' ) {
223
- // Stop propagation of the key press event to avoid focus moving
224
- // to another editor area.
225
- event.stopPropagation();
226
- onChange(
227
- updateControlPointPosition(
228
- controlPoints,
229
- index,
230
- clampPercent(
231
- point.position +
232
- KEYBOARD_CONTROL_POINT_VARIATION
233
- )
234
- )
235
- );
236
- }
237
- } }
238
- isOpen={ isOpen }
239
- position={ point.position }
240
- color={ point.color }
241
- />
242
- ) }
243
- renderContent={ ( { onClose } ) => (
244
- <>
245
- <ColorPicker
246
- enableAlpha={ ! disableAlpha }
247
- color={ point.color }
248
- onChange={ ( color ) => {
249
- onChange(
250
- updateControlPointColor(
251
- controlPoints,
252
- index,
253
- colord( color ).toRgbString()
254
- )
255
- );
256
- } }
257
- />
258
- { ! disableRemove && controlPoints.length > 2 && (
259
- <HStack
260
- className="components-custom-gradient-picker__remove-control-point-wrapper"
261
- alignment="center"
262
- >
263
- <Button
264
- onClick={ () => {
194
+ onClose={ onStopControlPointChange }
195
+ renderToggle={ ( { isOpen, onToggle } ) => (
196
+ <ControlPointButton
197
+ key={ index }
198
+ onClick={ () => {
199
+ if (
200
+ controlPointMoveState.current &&
201
+ controlPointMoveState.current
202
+ .significantMoveHappened
203
+ ) {
204
+ return;
205
+ }
206
+ if ( isOpen ) {
207
+ onStopControlPointChange();
208
+ } else {
209
+ onStartControlPointChange();
210
+ }
211
+ onToggle();
212
+ } }
213
+ onMouseDown={ () => {
214
+ if (
215
+ window &&
216
+ window.addEventListener
217
+ ) {
218
+ controlPointMoveState.current = {
219
+ initialPosition,
220
+ index,
221
+ significantMoveHappened: false,
222
+ listenersActivated: true,
223
+ };
224
+ onStartControlPointChange();
225
+ window.addEventListener(
226
+ 'mousemove',
227
+ onMouseMove
228
+ );
229
+ window.addEventListener(
230
+ 'mouseup',
231
+ cleanEventListeners
232
+ );
233
+ }
234
+ } }
235
+ onKeyDown={ ( event ) => {
236
+ if ( event.code === 'ArrowLeft' ) {
237
+ // Stop propagation of the key press event to avoid focus moving
238
+ // to another editor area.
239
+ event.stopPropagation();
265
240
  onChange(
266
- removeControlPoint(
241
+ updateControlPointPosition(
267
242
  controlPoints,
268
- index
243
+ index,
244
+ clampPercent(
245
+ point.position -
246
+ KEYBOARD_CONTROL_POINT_VARIATION
247
+ )
248
+ )
249
+ );
250
+ } else if (
251
+ event.code === 'ArrowRight'
252
+ ) {
253
+ // Stop propagation of the key press event to avoid focus moving
254
+ // to another editor area.
255
+ event.stopPropagation();
256
+ onChange(
257
+ updateControlPointPosition(
258
+ controlPoints,
259
+ index,
260
+ clampPercent(
261
+ point.position +
262
+ KEYBOARD_CONTROL_POINT_VARIATION
263
+ )
264
+ )
265
+ );
266
+ }
267
+ } }
268
+ isOpen={ isOpen }
269
+ position={ point.position }
270
+ color={ point.color }
271
+ />
272
+ ) }
273
+ renderContent={ ( { onClose } ) => (
274
+ <>
275
+ <ColorPicker
276
+ enableAlpha={ ! disableAlpha }
277
+ color={ point.color }
278
+ onChange={ ( color ) => {
279
+ onChange(
280
+ updateControlPointColor(
281
+ controlPoints,
282
+ index,
283
+ colord(
284
+ color
285
+ ).toRgbString()
269
286
  )
270
287
  );
271
- onClose();
272
288
  } }
273
- variant="link"
274
- >
275
- { __( 'Remove Control Point' ) }
276
- </Button>
277
- </HStack>
289
+ />
290
+ { ! disableRemove &&
291
+ controlPoints.length > 2 && (
292
+ <HStack
293
+ className="components-custom-gradient-picker__remove-control-point-wrapper"
294
+ alignment="center"
295
+ >
296
+ <Button
297
+ onClick={ () => {
298
+ onChange(
299
+ removeControlPoint(
300
+ controlPoints,
301
+ index
302
+ )
303
+ );
304
+ onClose();
305
+ } }
306
+ variant="link"
307
+ >
308
+ { __(
309
+ 'Remove Control Point'
310
+ ) }
311
+ </Button>
312
+ </HStack>
313
+ ) }
314
+ </>
278
315
  ) }
279
- </>
280
- ) }
281
- style={ {
282
- left: `${ point.position }%`,
283
- transform: 'translateX( -50% )',
284
- } }
285
- />
286
- )
287
- );
288
- } );
316
+ style={ {
317
+ left: `${ point.position }%`,
318
+ transform: 'translateX( -50% )',
319
+ } }
320
+ />
321
+ )
322
+ );
323
+ } ) }
324
+ </>
325
+ );
289
326
  }
290
327
 
291
328
  function InsertPoint( {
@@ -296,7 +333,7 @@ function InsertPoint( {
296
333
  insertPosition,
297
334
  disableAlpha,
298
335
  __experimentalIsRenderedInSidebar,
299
- } ) {
336
+ }: InsertPointProps ) {
300
337
  const [ alreadyInsertedPoint, setAlreadyInsertedPoint ] = useState( false );
301
338
  return (
302
339
  <GradientColorPickerDropdown
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * External dependencies
5
3
  */
@@ -16,8 +14,18 @@ import { useRef, useReducer } from '@wordpress/element';
16
14
  import ControlPoints from './control-points';
17
15
  import { getHorizontalRelativeGradientPosition } from './utils';
18
16
  import { MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_POINT } from './constants';
17
+ import type {
18
+ CustomGradientBarProps,
19
+ CustomGradientBarReducerState,
20
+ CustomGradientBarReducerAction,
21
+ CustomGradientBarIdleState,
22
+ } from '../types';
23
+ import type { MouseEventHandler } from 'react';
19
24
 
20
- function customGradientBarReducer( state, action ) {
25
+ const customGradientBarReducer = (
26
+ state: CustomGradientBarReducerState,
27
+ action: CustomGradientBarReducerAction
28
+ ): CustomGradientBarReducerState => {
21
29
  switch ( action.type ) {
22
30
  case 'MOVE_INSERTER':
23
31
  if ( state.id === 'IDLE' || state.id === 'MOVING_INSERTER' ) {
@@ -65,8 +73,10 @@ function customGradientBarReducer( state, action ) {
65
73
  break;
66
74
  }
67
75
  return state;
68
- }
69
- const customGradientBarReducerInitialState = { id: 'IDLE' };
76
+ };
77
+ const customGradientBarReducerInitialState: CustomGradientBarIdleState = {
78
+ id: 'IDLE',
79
+ };
70
80
 
71
81
  export default function CustomGradientBar( {
72
82
  background,
@@ -75,15 +85,21 @@ export default function CustomGradientBar( {
75
85
  onChange,
76
86
  disableInserter = false,
77
87
  disableAlpha = false,
78
- __experimentalIsRenderedInSidebar,
79
- } ) {
80
- const gradientMarkersContainerDomRef = useRef();
88
+ __experimentalIsRenderedInSidebar = false,
89
+ }: CustomGradientBarProps ) {
90
+ const gradientMarkersContainerDomRef = useRef< HTMLDivElement >( null );
81
91
 
82
92
  const [ gradientBarState, gradientBarStateDispatch ] = useReducer(
83
93
  customGradientBarReducer,
84
94
  customGradientBarReducerInitialState
85
95
  );
86
- const onMouseEnterAndMove = ( event ) => {
96
+ const onMouseEnterAndMove: MouseEventHandler< HTMLDivElement > = (
97
+ event
98
+ ) => {
99
+ if ( ! gradientMarkersContainerDomRef.current ) {
100
+ return;
101
+ }
102
+
87
103
  const insertPosition = getHorizontalRelativeGradientPosition(
88
104
  event.clientX,
89
105
  gradientMarkersContainerDomRef.current
@@ -123,9 +139,15 @@ export default function CustomGradientBar( {
123
139
  ) }
124
140
  onMouseEnter={ onMouseEnterAndMove }
125
141
  onMouseMove={ onMouseEnterAndMove }
126
- style={ { background } }
127
142
  onMouseLeave={ onMouseLeave }
128
143
  >
144
+ <div
145
+ className="components-custom-gradient-picker__gradient-bar-background"
146
+ style={ {
147
+ background,
148
+ opacity: hasGradient ? 1 : 0.4,
149
+ } }
150
+ />
129
151
  <div
130
152
  ref={ gradientMarkersContainerDomRef }
131
153
  className="components-custom-gradient-picker__markers-container"