@wordpress/components 21.2.0 → 22.0.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 (831) hide show
  1. package/CHANGELOG.md +99 -3
  2. package/CONTRIBUTING.md +20 -0
  3. package/build/angle-picker-control/index.js +1 -1
  4. package/build/angle-picker-control/index.js.map +1 -1
  5. package/build/autocomplete/autocompleter-ui.js +28 -2
  6. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  7. package/build/border-box-control/border-box-control/component.js +65 -15
  8. package/build/border-box-control/border-box-control/component.js.map +1 -1
  9. package/build/border-box-control/border-box-control/hook.js +11 -4
  10. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  11. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -3
  12. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  13. package/build/border-box-control/border-box-control-split-controls/component.js +3 -3
  14. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  15. package/build/border-box-control/border-box-control-split-controls/hook.js +8 -11
  16. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  17. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -7
  18. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  19. package/build/border-box-control/styles.js +34 -34
  20. package/build/border-box-control/styles.js.map +1 -1
  21. package/build/border-control/border-control/component.js +7 -4
  22. package/build/border-control/border-control/component.js.map +1 -1
  23. package/build/border-control/border-control/hook.js +12 -5
  24. package/build/border-control/border-control/hook.js.map +1 -1
  25. package/build/border-control/border-control-dropdown/hook.js +5 -5
  26. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  27. package/build/border-control/styles.js +19 -34
  28. package/build/border-control/styles.js.map +1 -1
  29. package/build/box-control/index.js +6 -2
  30. package/build/box-control/index.js.map +1 -1
  31. package/build/circular-option-picker/index.js +14 -14
  32. package/build/circular-option-picker/index.js.map +1 -1
  33. package/build/color-palette/index.js +83 -30
  34. package/build/color-palette/index.js.map +1 -1
  35. package/build/color-palette/styles.js +3 -3
  36. package/build/color-palette/styles.js.map +1 -1
  37. package/build/color-palette/types.js +6 -0
  38. package/build/color-palette/types.js.map +1 -0
  39. package/build/color-picker/input-with-slider.js +1 -1
  40. package/build/color-picker/input-with-slider.js.map +1 -1
  41. package/build/custom-gradient-picker/gradient-bar/index.js +1 -3
  42. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  43. package/build/custom-select-control/index.js +8 -4
  44. package/build/custom-select-control/index.js.map +1 -1
  45. package/build/date-time/date-time/index.js +2 -0
  46. package/build/date-time/date-time/index.js.map +1 -1
  47. package/build/date-time/time/index.js +4 -4
  48. package/build/date-time/time/index.js.map +1 -1
  49. package/build/disabled/index.js +14 -27
  50. package/build/disabled/index.js.map +1 -1
  51. package/build/external-link/index.js +13 -2
  52. package/build/external-link/index.js.map +1 -1
  53. package/build/focusable-iframe/index.js +0 -1
  54. package/build/focusable-iframe/index.js.map +1 -1
  55. package/build/font-size-picker/index.js +62 -49
  56. package/build/font-size-picker/index.js.map +1 -1
  57. package/build/font-size-picker/styles.js +5 -13
  58. package/build/font-size-picker/styles.js.map +1 -1
  59. package/build/font-size-picker/utils.js +1 -22
  60. package/build/font-size-picker/utils.js.map +1 -1
  61. package/build/form-file-upload/index.js.map +1 -1
  62. package/build/form-token-field/suggestions-list.js +5 -5
  63. package/build/form-token-field/suggestions-list.js.map +1 -1
  64. package/build/higher-order/with-fallback-styles/index.js +1 -1
  65. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  66. package/build/higher-order/with-filters/index.js +1 -7
  67. package/build/higher-order/with-filters/index.js.map +1 -1
  68. package/build/index.js +15 -7
  69. package/build/index.js.map +1 -1
  70. package/build/input-control/index.js +2 -0
  71. package/build/input-control/index.js.map +1 -1
  72. package/build/input-control/input-base.js +1 -1
  73. package/build/input-control/input-base.js.map +1 -1
  74. package/build/input-control/styles/input-control-styles.js +21 -21
  75. package/build/input-control/styles/input-control-styles.js.map +1 -1
  76. package/build/isolated-event-container/index.js +5 -9
  77. package/build/isolated-event-container/index.js.map +1 -1
  78. package/build/item-group/styles.js +10 -10
  79. package/build/item-group/styles.js.map +1 -1
  80. package/build/modal/aria-helper.js +2 -3
  81. package/build/modal/aria-helper.js.map +1 -1
  82. package/build/modal/index.js +42 -11
  83. package/build/modal/index.js.map +1 -1
  84. package/build/modal/types.js +6 -0
  85. package/build/modal/types.js.map +1 -0
  86. package/build/navigator/index.js +8 -8
  87. package/build/navigator/index.js.map +1 -1
  88. package/build/navigator/navigator-back-button/component.js +5 -4
  89. package/build/navigator/navigator-back-button/component.js.map +1 -1
  90. package/build/navigator/navigator-back-button/index.js +1 -1
  91. package/build/navigator/navigator-back-button/index.js.map +1 -1
  92. package/build/navigator/navigator-button/component.js +5 -4
  93. package/build/navigator/navigator-button/component.js.map +1 -1
  94. package/build/navigator/navigator-button/index.js +1 -1
  95. package/build/navigator/navigator-button/index.js.map +1 -1
  96. package/build/navigator/navigator-provider/component.js +10 -7
  97. package/build/navigator/navigator-provider/component.js.map +1 -1
  98. package/build/navigator/navigator-provider/index.js +1 -1
  99. package/build/navigator/navigator-provider/index.js.map +1 -1
  100. package/build/navigator/navigator-screen/component.js +11 -8
  101. package/build/navigator/navigator-screen/component.js.map +1 -1
  102. package/build/navigator/navigator-screen/index.js +1 -1
  103. package/build/navigator/navigator-screen/index.js.map +1 -1
  104. package/build/number-control/index.js +82 -22
  105. package/build/number-control/index.js.map +1 -1
  106. package/build/number-control/styles/number-control-styles.js +36 -6
  107. package/build/number-control/styles/number-control-styles.js.map +1 -1
  108. package/build/popover/index.js +15 -29
  109. package/build/popover/index.js.map +1 -1
  110. package/build/radio-group/index.js +7 -1
  111. package/build/radio-group/index.js.map +1 -1
  112. package/build/{radio → radio-group/radio}/index.js +7 -1
  113. package/build/radio-group/radio/index.js.map +1 -0
  114. package/build/{radio-context → radio-group/radio-context}/index.js +0 -0
  115. package/build/radio-group/radio-context/index.js.map +1 -0
  116. package/build/sandbox/index.js +55 -59
  117. package/build/sandbox/index.js.map +1 -1
  118. package/build/sandbox/index.native.js +63 -62
  119. package/build/sandbox/index.native.js.map +1 -1
  120. package/build/slot-fill/bubbles-virtually/fill.js +9 -5
  121. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  122. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  123. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  124. package/build/slot-fill/bubbles-virtually/slot.js +13 -8
  125. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  126. package/build/slot-fill/bubbles-virtually/use-slot.js +15 -9
  127. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  128. package/build/slot-fill/fill.js +12 -4
  129. package/build/slot-fill/fill.js.map +1 -1
  130. package/build/slot-fill/use-slot.js +3 -1
  131. package/build/slot-fill/use-slot.js.map +1 -1
  132. package/build/snackbar/index.js +1 -1
  133. package/build/snackbar/index.js.map +1 -1
  134. package/build/tab-panel/index.js +5 -9
  135. package/build/tab-panel/index.js.map +1 -1
  136. package/build/text-control/index.js +0 -2
  137. package/build/text-control/index.js.map +1 -1
  138. package/build/theme/index.js +62 -0
  139. package/build/theme/index.js.map +1 -0
  140. package/build/theme/styles.js +33 -0
  141. package/build/theme/styles.js.map +1 -0
  142. package/build/theme/types.js +6 -0
  143. package/build/theme/types.js.map +1 -0
  144. package/build/toggle-control/index.js +15 -3
  145. package/build/toggle-control/index.js.map +1 -1
  146. package/build/toggle-group-control/toggle-group-control/as-button-group.js +90 -0
  147. package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  148. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +90 -0
  149. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  150. package/build/toggle-group-control/toggle-group-control/component.js +21 -50
  151. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  152. package/build/toggle-group-control/toggle-group-control/styles.js +8 -8
  153. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  154. package/build/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  155. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  156. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +23 -23
  157. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  158. package/build/toolbar-dropdown-menu/index.js +1 -1
  159. package/build/toolbar-dropdown-menu/index.js.map +1 -1
  160. package/build/tools-panel/tools-panel/hook.js +3 -3
  161. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  162. package/build/tools-panel/tools-panel-item/hook.js +6 -6
  163. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  164. package/build/tooltip/index.js +4 -1
  165. package/build/tooltip/index.js.map +1 -1
  166. package/build/tooltip/index.native.js +17 -4
  167. package/build/tooltip/index.native.js.map +1 -1
  168. package/build/ui/context/context-system-provider.js +9 -22
  169. package/build/ui/context/context-system-provider.js.map +1 -1
  170. package/build/unit-control/index.js +7 -9
  171. package/build/unit-control/index.js.map +1 -1
  172. package/build/unit-control/styles/unit-control-styles.js +15 -25
  173. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  174. package/build/utils/config-values.js +0 -1
  175. package/build/utils/config-values.js.map +1 -1
  176. package/build/utils/hooks/use-update-effect.js +5 -1
  177. package/build/utils/hooks/use-update-effect.js.map +1 -1
  178. package/build-module/angle-picker-control/index.js +1 -1
  179. package/build-module/angle-picker-control/index.js.map +1 -1
  180. package/build-module/autocomplete/autocompleter-ui.js +29 -3
  181. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  182. package/build-module/border-box-control/border-box-control/component.js +63 -13
  183. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  184. package/build-module/border-box-control/border-box-control/hook.js +11 -4
  185. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  186. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -3
  187. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  188. package/build-module/border-box-control/border-box-control-split-controls/component.js +3 -3
  189. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  190. package/build-module/border-box-control/border-box-control-split-controls/hook.js +9 -10
  191. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  192. package/build-module/border-box-control/border-box-control-visualizer/hook.js +4 -6
  193. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  194. package/build-module/border-box-control/styles.js +26 -28
  195. package/build-module/border-box-control/styles.js.map +1 -1
  196. package/build-module/border-control/border-control/component.js +7 -4
  197. package/build-module/border-control/border-control/component.js.map +1 -1
  198. package/build-module/border-control/border-control/hook.js +12 -5
  199. package/build-module/border-control/border-control/hook.js.map +1 -1
  200. package/build-module/border-control/border-control-dropdown/hook.js +5 -5
  201. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  202. package/build-module/border-control/styles.js +20 -36
  203. package/build-module/border-control/styles.js.map +1 -1
  204. package/build-module/box-control/index.js +6 -2
  205. package/build-module/box-control/index.js.map +1 -1
  206. package/build-module/circular-option-picker/index.js +14 -14
  207. package/build-module/circular-option-picker/index.js.map +1 -1
  208. package/build-module/color-palette/index.js +81 -28
  209. package/build-module/color-palette/index.js.map +1 -1
  210. package/build-module/color-palette/styles.js +3 -3
  211. package/build-module/color-palette/styles.js.map +1 -1
  212. package/build-module/color-palette/types.js +2 -0
  213. package/build-module/color-palette/types.js.map +1 -0
  214. package/build-module/color-picker/input-with-slider.js +1 -1
  215. package/build-module/color-picker/input-with-slider.js.map +1 -1
  216. package/build-module/custom-gradient-picker/gradient-bar/index.js +1 -2
  217. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  218. package/build-module/custom-select-control/index.js +8 -4
  219. package/build-module/custom-select-control/index.js.map +1 -1
  220. package/build-module/date-time/date-time/index.js +2 -0
  221. package/build-module/date-time/date-time/index.js.map +1 -1
  222. package/build-module/date-time/time/index.js +4 -4
  223. package/build-module/date-time/time/index.js.map +1 -1
  224. package/build-module/disabled/index.js +15 -27
  225. package/build-module/disabled/index.js.map +1 -1
  226. package/build-module/external-link/index.js +13 -2
  227. package/build-module/external-link/index.js.map +1 -1
  228. package/build-module/focusable-iframe/index.js +0 -1
  229. package/build-module/focusable-iframe/index.js.map +1 -1
  230. package/build-module/font-size-picker/index.js +66 -51
  231. package/build-module/font-size-picker/index.js.map +1 -1
  232. package/build-module/font-size-picker/styles.js +5 -13
  233. package/build-module/font-size-picker/styles.js.map +1 -1
  234. package/build-module/font-size-picker/utils.js +1 -20
  235. package/build-module/font-size-picker/utils.js.map +1 -1
  236. package/build-module/form-file-upload/index.js.map +1 -1
  237. package/build-module/form-token-field/suggestions-list.js +5 -5
  238. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  239. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  240. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  241. package/build-module/higher-order/with-filters/index.js +1 -6
  242. package/build-module/higher-order/with-filters/index.js.map +1 -1
  243. package/build-module/index.js +4 -3
  244. package/build-module/index.js.map +1 -1
  245. package/build-module/input-control/index.js +2 -0
  246. package/build-module/input-control/index.js.map +1 -1
  247. package/build-module/input-control/input-base.js +1 -1
  248. package/build-module/input-control/input-base.js.map +1 -1
  249. package/build-module/input-control/styles/input-control-styles.js +21 -21
  250. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  251. package/build-module/isolated-event-container/index.js +7 -9
  252. package/build-module/isolated-event-container/index.js.map +1 -1
  253. package/build-module/item-group/styles.js +10 -10
  254. package/build-module/item-group/styles.js.map +1 -1
  255. package/build-module/modal/aria-helper.js +2 -3
  256. package/build-module/modal/aria-helper.js.map +1 -1
  257. package/build-module/modal/index.js +44 -12
  258. package/build-module/modal/index.js.map +1 -1
  259. package/build-module/modal/types.js +2 -0
  260. package/build-module/modal/types.js.map +1 -0
  261. package/build-module/navigator/index.js +4 -4
  262. package/build-module/navigator/index.js.map +1 -1
  263. package/build-module/navigator/navigator-back-button/component.js +3 -3
  264. package/build-module/navigator/navigator-back-button/component.js.map +1 -1
  265. package/build-module/navigator/navigator-back-button/index.js +1 -1
  266. package/build-module/navigator/navigator-back-button/index.js.map +1 -1
  267. package/build-module/navigator/navigator-button/component.js +3 -3
  268. package/build-module/navigator/navigator-button/component.js.map +1 -1
  269. package/build-module/navigator/navigator-button/index.js +1 -1
  270. package/build-module/navigator/navigator-button/index.js.map +1 -1
  271. package/build-module/navigator/navigator-provider/component.js +8 -6
  272. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  273. package/build-module/navigator/navigator-provider/index.js +1 -1
  274. package/build-module/navigator/navigator-provider/index.js.map +1 -1
  275. package/build-module/navigator/navigator-screen/component.js +9 -7
  276. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  277. package/build-module/navigator/navigator-screen/index.js +1 -1
  278. package/build-module/navigator/navigator-screen/index.js.map +1 -1
  279. package/build-module/number-control/index.js +81 -26
  280. package/build-module/number-control/index.js.map +1 -1
  281. package/build-module/number-control/styles/number-control-styles.js +30 -4
  282. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  283. package/build-module/popover/index.js +15 -29
  284. package/build-module/popover/index.js.map +1 -1
  285. package/build-module/radio-group/index.js +6 -1
  286. package/build-module/radio-group/index.js.map +1 -1
  287. package/build-module/{radio → radio-group/radio}/index.js +6 -1
  288. package/build-module/radio-group/radio/index.js.map +1 -0
  289. package/build-module/{radio-context → radio-group/radio-context}/index.js +0 -0
  290. package/build-module/radio-group/radio-context/index.js.map +1 -0
  291. package/build-module/sandbox/index.js +56 -59
  292. package/build-module/sandbox/index.js.map +1 -1
  293. package/build-module/sandbox/index.native.js +54 -52
  294. package/build-module/sandbox/index.native.js.map +1 -1
  295. package/build-module/slot-fill/bubbles-virtually/fill.js +9 -5
  296. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  297. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  298. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  299. package/build-module/slot-fill/bubbles-virtually/slot.js +13 -8
  300. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  301. package/build-module/slot-fill/bubbles-virtually/use-slot.js +15 -9
  302. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  303. package/build-module/slot-fill/fill.js +12 -4
  304. package/build-module/slot-fill/fill.js.map +1 -1
  305. package/build-module/slot-fill/use-slot.js +3 -1
  306. package/build-module/slot-fill/use-slot.js.map +1 -1
  307. package/build-module/snackbar/index.js +1 -1
  308. package/build-module/snackbar/index.js.map +1 -1
  309. package/build-module/tab-panel/index.js +5 -9
  310. package/build-module/tab-panel/index.js.map +1 -1
  311. package/build-module/text-control/index.js +0 -2
  312. package/build-module/text-control/index.js.map +1 -1
  313. package/build-module/theme/index.js +52 -0
  314. package/build-module/theme/index.js.map +1 -0
  315. package/build-module/theme/styles.js +25 -0
  316. package/build-module/theme/styles.js.map +1 -0
  317. package/build-module/theme/types.js +2 -0
  318. package/build-module/theme/types.js.map +1 -0
  319. package/build-module/toggle-control/index.js +15 -3
  320. package/build-module/toggle-control/index.js.map +1 -1
  321. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +76 -0
  322. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  323. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +75 -0
  324. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  325. package/build-module/toggle-group-control/toggle-group-control/component.js +19 -49
  326. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  327. package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -6
  328. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  329. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  330. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  331. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +21 -18
  332. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  333. package/build-module/toolbar-dropdown-menu/index.js +1 -1
  334. package/build-module/toolbar-dropdown-menu/index.js.map +1 -1
  335. package/build-module/tools-panel/tools-panel/hook.js +3 -3
  336. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  337. package/build-module/tools-panel/tools-panel-item/hook.js +6 -6
  338. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  339. package/build-module/tooltip/index.js +4 -1
  340. package/build-module/tooltip/index.js.map +1 -1
  341. package/build-module/tooltip/index.native.js +17 -4
  342. package/build-module/tooltip/index.native.js.map +1 -1
  343. package/build-module/ui/context/context-system-provider.js +6 -20
  344. package/build-module/ui/context/context-system-provider.js.map +1 -1
  345. package/build-module/unit-control/index.js +8 -10
  346. package/build-module/unit-control/index.js.map +1 -1
  347. package/build-module/unit-control/styles/unit-control-styles.js +8 -24
  348. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  349. package/build-module/utils/config-values.js +0 -1
  350. package/build-module/utils/config-values.js.map +1 -1
  351. package/build-module/utils/hooks/use-update-effect.js +5 -1
  352. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  353. package/build-style/style-rtl.css +45 -61
  354. package/build-style/style.css +43 -59
  355. package/build-types/base-field/hook.d.ts +11 -11
  356. package/build-types/border-box-control/border-box-control/component.d.ts +53 -4
  357. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  358. package/build-types/border-box-control/border-box-control/hook.d.ts +14 -12
  359. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  360. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +12 -12
  361. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  362. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  363. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  364. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +12 -12
  365. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  366. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +12 -12
  367. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  368. package/build-types/border-box-control/stories/index.d.ts +17 -0
  369. package/build-types/border-box-control/stories/index.d.ts.map +1 -0
  370. package/build-types/border-box-control/styles.d.ts +7 -6
  371. package/build-types/border-box-control/styles.d.ts.map +1 -1
  372. package/build-types/border-box-control/types.d.ts +12 -16
  373. package/build-types/border-box-control/types.d.ts.map +1 -1
  374. package/build-types/border-control/border-control/component.d.ts +2 -1
  375. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  376. package/build-types/border-control/border-control/hook.d.ts +14 -13
  377. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  378. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  379. package/build-types/border-control/border-control-dropdown/hook.d.ts +11 -11
  380. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  381. package/build-types/border-control/border-control-style-picker/hook.d.ts +11 -11
  382. package/build-types/border-control/stories/index.d.ts +12 -6
  383. package/build-types/border-control/stories/index.d.ts.map +1 -1
  384. package/build-types/border-control/styles.d.ts +3 -3
  385. package/build-types/border-control/styles.d.ts.map +1 -1
  386. package/build-types/border-control/types.d.ts +11 -9
  387. package/build-types/border-control/types.d.ts.map +1 -1
  388. package/build-types/card/card/hook.d.ts +12 -12
  389. package/build-types/card/card-body/hook.d.ts +12 -12
  390. package/build-types/card/card-divider/hook.d.ts +13 -13
  391. package/build-types/card/card-footer/hook.d.ts +12 -12
  392. package/build-types/card/card-header/hook.d.ts +12 -12
  393. package/build-types/card/card-media/hook.d.ts +12 -12
  394. package/build-types/card/stories/index.d.ts.map +1 -1
  395. package/build-types/circular-option-picker/index.d.ts +4 -24
  396. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  397. package/build-types/color-palette/index.d.ts +33 -18
  398. package/build-types/color-palette/index.d.ts.map +1 -1
  399. package/build-types/color-palette/stories/index.d.ts +21 -0
  400. package/build-types/color-palette/stories/index.d.ts.map +1 -0
  401. package/build-types/color-palette/styles.d.ts +3 -2
  402. package/build-types/color-palette/styles.d.ts.map +1 -1
  403. package/build-types/color-palette/test/index.d.ts +2 -0
  404. package/build-types/color-palette/test/index.d.ts.map +1 -0
  405. package/build-types/color-palette/types.d.ts +86 -0
  406. package/build-types/color-palette/types.d.ts.map +1 -0
  407. package/build-types/color-picker/styles.d.ts +5 -4
  408. package/build-types/color-picker/styles.d.ts.map +1 -1
  409. package/build-types/confirm-dialog/component.d.ts +4 -4
  410. package/build-types/confirm-dialog/types.d.ts +5 -1
  411. package/build-types/confirm-dialog/types.d.ts.map +1 -1
  412. package/build-types/custom-select-control/index.d.ts +1 -12
  413. package/build-types/custom-select-control/index.d.ts.map +1 -1
  414. package/build-types/custom-select-control/styles.d.ts +3 -1
  415. package/build-types/custom-select-control/styles.d.ts.map +1 -1
  416. package/build-types/date-time/date/styles.d.ts +3 -3
  417. package/build-types/date-time/date-time/index.d.ts +2 -0
  418. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  419. package/build-types/date-time/date-time/styles.d.ts +3 -3
  420. package/build-types/date-time/stories/date-time.d.ts.map +1 -1
  421. package/build-types/date-time/time/styles.d.ts +8 -4
  422. package/build-types/date-time/time/styles.d.ts.map +1 -1
  423. package/build-types/disabled/index.d.ts +8 -1
  424. package/build-types/disabled/index.d.ts.map +1 -1
  425. package/build-types/elevation/hook.d.ts +12 -12
  426. package/build-types/external-link/index.d.ts.map +1 -1
  427. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  428. package/build-types/external-link/test/index.d.ts +2 -0
  429. package/build-types/external-link/test/index.d.ts.map +1 -0
  430. package/build-types/flex/flex/hook.d.ts +12 -12
  431. package/build-types/flex/flex-block/hook.d.ts +12 -12
  432. package/build-types/flex/flex-item/hook.d.ts +12 -12
  433. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  434. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +3 -3
  435. package/build-types/focusable-iframe/index.d.ts.map +1 -1
  436. package/build-types/font-size-picker/index.d.ts.map +1 -1
  437. package/build-types/font-size-picker/styles.d.ts.map +1 -1
  438. package/build-types/font-size-picker/types.d.ts +1 -1
  439. package/build-types/font-size-picker/utils.d.ts +0 -8
  440. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  441. package/build-types/form-file-upload/index.d.ts.map +1 -1
  442. package/build-types/form-file-upload/types.d.ts +5 -4
  443. package/build-types/form-file-upload/types.d.ts.map +1 -1
  444. package/build-types/grid/hook.d.ts +12 -12
  445. package/build-types/h-stack/component.d.ts +1 -1
  446. package/build-types/h-stack/hook.d.ts +12 -12
  447. package/build-types/heading/hook.d.ts +12 -12
  448. package/build-types/input-control/index.d.ts +1 -1
  449. package/build-types/input-control/index.d.ts.map +1 -1
  450. package/build-types/input-control/input-base.d.ts +5 -2
  451. package/build-types/input-control/input-base.d.ts.map +1 -1
  452. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  453. package/build-types/input-control/types.d.ts +3 -8
  454. package/build-types/input-control/types.d.ts.map +1 -1
  455. package/build-types/input-control/utils.d.ts +1 -1
  456. package/build-types/isolated-event-container/index.d.ts +3 -2
  457. package/build-types/isolated-event-container/index.d.ts.map +1 -1
  458. package/build-types/item-group/item/hook.d.ts +13 -13
  459. package/build-types/item-group/item-group/hook.d.ts +13 -13
  460. package/build-types/modal/aria-helper.d.ts +4 -4
  461. package/build-types/modal/aria-helper.d.ts.map +1 -1
  462. package/build-types/modal/index.d.ts +35 -2
  463. package/build-types/modal/index.d.ts.map +1 -1
  464. package/build-types/modal/stories/index.d.ts +9 -0
  465. package/build-types/modal/stories/index.d.ts.map +1 -0
  466. package/build-types/modal/test/aria-helper.d.ts +2 -0
  467. package/build-types/modal/test/aria-helper.d.ts.map +1 -0
  468. package/build-types/modal/test/index.d.ts +2 -0
  469. package/build-types/modal/test/index.d.ts.map +1 -0
  470. package/build-types/modal/types.d.ts +134 -0
  471. package/build-types/modal/types.d.ts.map +1 -0
  472. package/build-types/navigator/index.d.ts +4 -4
  473. package/build-types/navigator/index.d.ts.map +1 -1
  474. package/build-types/navigator/navigator-back-button/component.d.ts +4 -2
  475. package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
  476. package/build-types/navigator/navigator-back-button/hook.d.ts +14 -13
  477. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  478. package/build-types/navigator/navigator-back-button/index.d.ts +1 -1
  479. package/build-types/navigator/navigator-back-button/index.d.ts.map +1 -1
  480. package/build-types/navigator/navigator-button/component.d.ts +4 -2
  481. package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
  482. package/build-types/navigator/navigator-button/hook.d.ts +14 -13
  483. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  484. package/build-types/navigator/navigator-button/index.d.ts +1 -1
  485. package/build-types/navigator/navigator-button/index.d.ts.map +1 -1
  486. package/build-types/navigator/navigator-provider/component.d.ts +2 -2
  487. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  488. package/build-types/navigator/navigator-provider/index.d.ts +1 -1
  489. package/build-types/navigator/navigator-provider/index.d.ts.map +1 -1
  490. package/build-types/navigator/navigator-screen/component.d.ts +2 -2
  491. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  492. package/build-types/navigator/navigator-screen/index.d.ts +1 -1
  493. package/build-types/navigator/navigator-screen/index.d.ts.map +1 -1
  494. package/build-types/navigator/stories/index.d.ts +9 -0
  495. package/build-types/navigator/stories/index.d.ts.map +1 -0
  496. package/build-types/navigator/test/index.d.ts +2 -0
  497. package/build-types/navigator/test/index.d.ts.map +1 -0
  498. package/build-types/navigator/types.d.ts +4 -1
  499. package/build-types/navigator/types.d.ts.map +1 -1
  500. package/build-types/number-control/index.d.ts +2 -4
  501. package/build-types/number-control/index.d.ts.map +1 -1
  502. package/build-types/number-control/styles/number-control-styles.d.ts +5 -0
  503. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  504. package/build-types/number-control/types.d.ts +12 -0
  505. package/build-types/number-control/types.d.ts.map +1 -1
  506. package/build-types/popover/index.d.ts +1 -1
  507. package/build-types/popover/index.d.ts.map +1 -1
  508. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  509. package/build-types/popover/stories/index.d.ts +2 -0
  510. package/build-types/popover/stories/index.d.ts.map +1 -1
  511. package/build-types/popover/types.d.ts +18 -14
  512. package/build-types/popover/types.d.ts.map +1 -1
  513. package/build-types/radio-group/index.d.ts +10 -0
  514. package/build-types/radio-group/index.d.ts.map +1 -0
  515. package/build-types/radio-group/radio/index.d.ts +7 -0
  516. package/build-types/radio-group/radio/index.d.ts.map +1 -0
  517. package/build-types/{radio-context → radio-group/radio-context}/index.d.ts +0 -0
  518. package/build-types/radio-group/radio-context/index.d.ts.map +1 -0
  519. package/build-types/range-control/index.d.ts +1 -1
  520. package/build-types/range-control/styles/range-control-styles.d.ts +2 -1
  521. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  522. package/build-types/resizable-box/index.d.ts +1 -1
  523. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  524. package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
  525. package/build-types/scrollable/hook.d.ts +12 -12
  526. package/build-types/search-control/index.d.ts +2 -2
  527. package/build-types/search-control/stories/index.d.ts +4 -4
  528. package/build-types/select-control/stories/index.d.ts.map +1 -1
  529. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -1
  530. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  531. package/build-types/slot-fill/fill.d.ts.map +1 -1
  532. package/build-types/slot-fill/use-slot.d.ts.map +1 -1
  533. package/build-types/spacer/hook.d.ts +12 -12
  534. package/build-types/spinner/index.d.ts +1 -1
  535. package/build-types/surface/hook.d.ts +12 -12
  536. package/build-types/tab-panel/index.d.ts.map +1 -1
  537. package/build-types/text/hook.d.ts +12 -12
  538. package/build-types/text-control/index.d.ts +2 -4
  539. package/build-types/text-control/index.d.ts.map +1 -1
  540. package/build-types/text-control/stories/index.d.ts.map +1 -1
  541. package/build-types/theme/index.d.ts +31 -0
  542. package/build-types/theme/index.d.ts.map +1 -0
  543. package/build-types/theme/stories/index.d.ts +13 -0
  544. package/build-types/theme/stories/index.d.ts.map +1 -0
  545. package/build-types/theme/styles.d.ts +10 -0
  546. package/build-types/theme/styles.d.ts.map +1 -0
  547. package/build-types/theme/test/index.d.ts +2 -0
  548. package/build-types/theme/test/index.d.ts.map +1 -0
  549. package/build-types/theme/types.d.ts +21 -0
  550. package/build-types/theme/types.d.ts.map +1 -0
  551. package/build-types/toggle-control/index.d.ts.map +1 -1
  552. package/build-types/toggle-control/types.d.ts +2 -1
  553. package/build-types/toggle-control/types.d.ts.map +1 -1
  554. package/build-types/toggle-group-control/stories/index.d.ts +2 -2
  555. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  556. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +6 -0
  557. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -0
  558. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +6 -0
  559. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -0
  560. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
  561. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  562. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  563. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  564. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  565. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -7
  566. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  567. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  568. package/build-types/toggle-group-control/types.d.ts +19 -14
  569. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  570. package/build-types/tools-panel/tools-panel/hook.d.ts +12 -12
  571. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  572. package/build-types/tools-panel/tools-panel-header/hook.d.ts +12 -12
  573. package/build-types/tools-panel/tools-panel-item/hook.d.ts +12 -12
  574. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  575. package/build-types/tooltip/index.d.ts.map +1 -1
  576. package/build-types/truncate/hook.d.ts +12 -12
  577. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  578. package/build-types/ui/control-group/hook.d.ts +12 -12
  579. package/build-types/ui/control-label/component.d.ts +1 -1
  580. package/build-types/ui/control-label/hook.d.ts +12 -12
  581. package/build-types/ui/form-group/form-group.d.ts +4 -4
  582. package/build-types/ui/form-group/use-form-group.d.ts +28 -28
  583. package/build-types/unit-control/index.d.ts +2 -2
  584. package/build-types/unit-control/index.d.ts.map +1 -1
  585. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -5
  586. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  587. package/build-types/unit-control/types.d.ts +3 -3
  588. package/build-types/unit-control/types.d.ts.map +1 -1
  589. package/build-types/utils/config-values.d.ts +0 -1
  590. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  591. package/build-types/utils/types.d.ts +0 -14
  592. package/build-types/utils/types.d.ts.map +1 -1
  593. package/build-types/v-stack/component.d.ts +2 -2
  594. package/build-types/v-stack/hook.d.ts +12 -12
  595. package/build-types/v-stack/stories/index.d.ts +2 -2
  596. package/package.json +17 -17
  597. package/src/angle-picker-control/index.js +1 -1
  598. package/src/angle-picker-control/stories/index.js +3 -0
  599. package/src/autocomplete/autocompleter-ui.js +29 -2
  600. package/src/autocomplete/test/index.js +89 -0
  601. package/src/base-field/test/index.js +4 -6
  602. package/src/border-box-control/border-box-control/README.md +8 -0
  603. package/src/border-box-control/border-box-control/component.tsx +66 -13
  604. package/src/border-box-control/border-box-control/hook.ts +11 -2
  605. package/src/border-box-control/border-box-control-linked-button/hook.ts +3 -6
  606. package/src/border-box-control/border-box-control-split-controls/component.tsx +3 -6
  607. package/src/border-box-control/border-box-control-split-controls/hook.ts +11 -14
  608. package/src/border-box-control/border-box-control-visualizer/hook.ts +4 -7
  609. package/src/border-box-control/stories/index.tsx +90 -0
  610. package/src/border-box-control/styles.ts +28 -22
  611. package/src/border-box-control/test/index.js +291 -121
  612. package/src/border-box-control/types.ts +12 -16
  613. package/src/border-control/border-control/README.md +14 -0
  614. package/src/border-control/border-control/component.tsx +6 -3
  615. package/src/border-control/border-control/hook.ts +10 -6
  616. package/src/border-control/border-control-dropdown/hook.ts +5 -7
  617. package/src/border-control/stories/index.tsx +12 -14
  618. package/src/border-control/styles.ts +20 -23
  619. package/src/border-control/test/index.js +139 -96
  620. package/src/border-control/types.ts +11 -9
  621. package/src/box-control/README.md +14 -0
  622. package/src/box-control/index.js +4 -0
  623. package/src/box-control/stories/index.js +8 -27
  624. package/src/button/README.md +2 -15
  625. package/src/button/stories/index.js +109 -178
  626. package/src/button/style.scss +40 -77
  627. package/src/button/test/index.js +3 -5
  628. package/src/card/stories/index.tsx +27 -31
  629. package/src/card/test/__snapshots__/index.tsx.snap +36 -35
  630. package/src/card/test/index.tsx +2 -6
  631. package/src/circular-option-picker/index.js +14 -20
  632. package/src/color-palette/README.md +51 -49
  633. package/src/color-palette/{index.js → index.tsx} +132 -51
  634. package/src/color-palette/stories/{index.js → index.tsx} +38 -27
  635. package/src/color-palette/style.scss +2 -2
  636. package/src/color-palette/{styles.js → styles.ts} +0 -0
  637. package/src/color-palette/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  638. package/src/color-palette/test/{index.js → index.tsx} +1 -1
  639. package/src/color-palette/types.ts +93 -0
  640. package/src/color-picker/input-with-slider.tsx +1 -1
  641. package/src/combobox-control/test/index.js +1 -1
  642. package/src/confirm-dialog/types.ts +6 -0
  643. package/src/custom-gradient-picker/gradient-bar/index.js +1 -3
  644. package/src/custom-select-control/README.md +14 -0
  645. package/src/custom-select-control/index.js +22 -15
  646. package/src/date-time/date-time/index.tsx +2 -0
  647. package/src/date-time/stories/date-time.tsx +4 -0
  648. package/src/date-time/time/index.tsx +4 -4
  649. package/src/date-time/time/test/index.tsx +2 -6
  650. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -0
  651. package/src/disabled/README.md +2 -0
  652. package/src/disabled/index.tsx +19 -34
  653. package/src/disabled/test/index.tsx +9 -82
  654. package/src/dropdown/test/index.js +4 -3
  655. package/src/external-link/index.tsx +14 -6
  656. package/src/external-link/test/index.tsx +106 -0
  657. package/src/focusable-iframe/index.js +0 -1
  658. package/src/font-size-picker/README.md +3 -3
  659. package/src/font-size-picker/index.tsx +153 -143
  660. package/src/font-size-picker/styles.ts +3 -1
  661. package/src/font-size-picker/test/index.tsx +447 -174
  662. package/src/font-size-picker/test/utils.ts +6 -50
  663. package/src/font-size-picker/types.ts +1 -1
  664. package/src/font-size-picker/utils.ts +1 -23
  665. package/src/form-file-upload/README.md +1 -3
  666. package/src/form-file-upload/index.tsx +1 -0
  667. package/src/form-file-upload/test/index.tsx +1 -1
  668. package/src/form-file-upload/types.ts +5 -4
  669. package/src/form-toggle/test/__snapshots__/index.tsx.snap +15 -13
  670. package/src/form-toggle/test/index.tsx +1 -1
  671. package/src/form-token-field/suggestions-list.tsx +5 -5
  672. package/src/h-stack/test/__snapshots__/index.tsx.snap +36 -30
  673. package/src/h-stack/test/index.tsx +3 -3
  674. package/src/higher-order/with-fallback-styles/index.js +6 -2
  675. package/src/higher-order/with-filters/index.js +4 -9
  676. package/src/higher-order/with-focus-outside/test/index.js +44 -45
  677. package/src/higher-order/with-focus-return/test/index.js +34 -30
  678. package/src/higher-order/with-notices/test/index.js +1 -1
  679. package/src/index.js +4 -2
  680. package/src/input-control/index.tsx +2 -0
  681. package/src/input-control/input-base.tsx +3 -3
  682. package/src/input-control/styles/input-control-styles.tsx +1 -0
  683. package/src/input-control/test/index.js +2 -2
  684. package/src/input-control/types.ts +4 -11
  685. package/src/isolated-event-container/index.tsx +32 -0
  686. package/src/item-group/styles.ts +1 -1
  687. package/src/item-group/test/__snapshots__/index.js.snap +90 -85
  688. package/src/item-group/test/index.js +8 -18
  689. package/src/menu-item/test/index.js +0 -3
  690. package/src/mobile/bottom-sheet/test/range-cell.native.js +16 -14
  691. package/src/modal/README.md +53 -54
  692. package/src/modal/{aria-helper.js → aria-helper.ts} +5 -7
  693. package/src/modal/{index.js → index.tsx} +48 -12
  694. package/src/modal/stories/{index.js → index.tsx} +47 -42
  695. package/src/modal/test/{aria-helper.js → aria-helper.ts} +0 -0
  696. package/src/modal/test/{index.js → index.tsx} +13 -3
  697. package/src/modal/types.ts +144 -0
  698. package/src/navigation/test/index.js +1 -1
  699. package/src/navigator/index.ts +4 -4
  700. package/src/navigator/navigator-back-button/component.tsx +4 -4
  701. package/src/navigator/navigator-back-button/index.ts +1 -1
  702. package/src/navigator/navigator-button/component.tsx +4 -4
  703. package/src/navigator/navigator-button/index.ts +1 -1
  704. package/src/navigator/navigator-provider/component.tsx +6 -4
  705. package/src/navigator/navigator-provider/index.ts +1 -1
  706. package/src/navigator/navigator-screen/component.tsx +17 -6
  707. package/src/navigator/navigator-screen/index.ts +1 -1
  708. package/src/navigator/stories/index.tsx +210 -0
  709. package/src/navigator/test/index.tsx +509 -0
  710. package/src/navigator/types.ts +2 -0
  711. package/src/notice/test/__snapshots__/index.js.snap +39 -38
  712. package/src/notice/test/index.js +15 -36
  713. package/src/notice/test/list.js +6 -14
  714. package/src/number-control/README.md +9 -4
  715. package/src/number-control/index.tsx +100 -33
  716. package/src/number-control/styles/number-control-styles.js +26 -1
  717. package/src/number-control/test/index.js +53 -2
  718. package/src/number-control/types.ts +12 -0
  719. package/src/panel/test/body.js +2 -2
  720. package/src/placeholder/style.scss +5 -0
  721. package/src/popover/README.md +12 -7
  722. package/src/popover/index.tsx +20 -30
  723. package/src/popover/stories/index.tsx +29 -1
  724. package/src/popover/style.scss +9 -0
  725. package/src/popover/types.ts +18 -15
  726. package/src/radio-group/README.md +4 -0
  727. package/src/radio-group/index.js +6 -1
  728. package/src/{radio → radio-group/radio}/index.js +6 -1
  729. package/src/{radio-context → radio-group/radio-context}/index.js +0 -0
  730. package/src/radio-group/stories/index.js +11 -2
  731. package/src/sandbox/index.js +62 -47
  732. package/src/sandbox/index.native.js +72 -52
  733. package/src/sandbox/test/index.js +8 -11
  734. package/src/select-control/stories/index.tsx +9 -4
  735. package/src/shortcut/test/index.tsx +1 -1
  736. package/src/slot-fill/bubbles-virtually/fill.js +5 -5
  737. package/src/slot-fill/bubbles-virtually/slot-fill-provider.js +5 -3
  738. package/src/slot-fill/bubbles-virtually/slot.js +10 -8
  739. package/src/slot-fill/bubbles-virtually/use-slot.js +15 -9
  740. package/src/slot-fill/fill.js +12 -2
  741. package/src/slot-fill/use-slot.js +3 -0
  742. package/src/snackbar/index.js +1 -1
  743. package/src/style.scss +4 -0
  744. package/src/surface/test/__snapshots__/index.tsx.snap +58 -46
  745. package/src/surface/test/index.tsx +6 -16
  746. package/src/tab-panel/index.tsx +5 -9
  747. package/src/tab-panel/test/index.tsx +78 -1
  748. package/src/text/test/__snapshots__/index.tsx.snap +19 -15
  749. package/src/text/test/index.tsx +2 -2
  750. package/src/text-control/index.tsx +0 -2
  751. package/src/text-control/stories/index.tsx +5 -6
  752. package/src/text-highlight/test/index.tsx +1 -3
  753. package/src/theme/README.md +34 -0
  754. package/src/theme/index.tsx +51 -0
  755. package/src/theme/stories/index.tsx +47 -0
  756. package/src/theme/styles.ts +28 -0
  757. package/src/theme/test/index.tsx +101 -0
  758. package/src/theme/types.ts +21 -0
  759. package/src/toggle-control/README.md +6 -4
  760. package/src/toggle-control/index.tsx +13 -2
  761. package/src/toggle-control/types.ts +2 -4
  762. package/src/toggle-group-control/stories/index.tsx +4 -4
  763. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +219 -160
  764. package/src/toggle-group-control/test/index.tsx +129 -2
  765. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +103 -0
  766. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +99 -0
  767. package/src/toggle-group-control/toggle-group-control/component.tsx +29 -74
  768. package/src/toggle-group-control/toggle-group-control/styles.ts +12 -10
  769. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +49 -25
  770. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +39 -19
  771. package/src/toggle-group-control/types.ts +75 -63
  772. package/src/toolbar/test/index.js +2 -2
  773. package/src/toolbar-dropdown-menu/index.js +1 -1
  774. package/src/toolbar-group/test/index.js +6 -10
  775. package/src/tools-panel/stories/index.js +0 -1
  776. package/src/tools-panel/stories/tools-panel-with-item-group-slot.js +0 -1
  777. package/src/tools-panel/test/index.js +4 -6
  778. package/src/tools-panel/tools-panel/hook.ts +2 -9
  779. package/src/tools-panel/tools-panel-item/hook.ts +17 -3
  780. package/src/tooltip/index.js +3 -0
  781. package/src/tooltip/index.native.js +15 -0
  782. package/src/tooltip/test/index.native.js +1 -2
  783. package/src/tree-grid/test/__snapshots__/cell.js.snap +20 -20
  784. package/src/tree-grid/test/__snapshots__/roving-tab-index-item.js.snap +17 -15
  785. package/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap +3 -1
  786. package/src/tree-grid/test/__snapshots__/row.js.snap +33 -25
  787. package/src/tree-grid/test/cell.js +4 -4
  788. package/src/tree-grid/test/roving-tab-index-item.js +8 -8
  789. package/src/tree-grid/test/roving-tab-index.js +3 -3
  790. package/src/tree-grid/test/row.js +20 -16
  791. package/src/truncate/test/index.tsx +4 -4
  792. package/src/ui/context/context-system-provider.js +5 -18
  793. package/src/ui/context/test/__snapshots__/context-system-provider.js.snap +23 -17
  794. package/src/ui/context/test/context-system-provider.js +3 -3
  795. package/src/ui/control-group/test/__snapshots__/index.js.snap +18 -16
  796. package/src/ui/control-group/test/index.js +1 -1
  797. package/src/ui/control-label/test/__snapshots__/index.js.snap +27 -21
  798. package/src/ui/control-label/test/index.js +3 -3
  799. package/src/ui/form-group/test/__snapshots__/index.js.snap +34 -30
  800. package/src/ui/form-group/test/index.js +2 -2
  801. package/src/ui/shortcut/test/__snapshots__/index.js.snap +1 -1
  802. package/src/ui/shortcut/test/index.js +3 -2
  803. package/src/ui/spinner/test/__snapshots__/index.js.snap +75 -73
  804. package/src/ui/spinner/test/index.js +10 -13
  805. package/src/ui/tooltip/test/index.js +16 -14
  806. package/src/unit-control/index.tsx +29 -30
  807. package/src/unit-control/styles/unit-control-styles.ts +6 -12
  808. package/src/unit-control/test/utils.ts +43 -0
  809. package/src/unit-control/types.ts +5 -6
  810. package/src/utils/config-values.js +0 -1
  811. package/src/utils/hooks/use-update-effect.js +5 -1
  812. package/src/utils/theme-variables.scss +8 -0
  813. package/src/utils/types.ts +0 -15
  814. package/src/v-stack/test/__snapshots__/index.tsx.snap +36 -30
  815. package/src/v-stack/test/index.tsx +3 -3
  816. package/src/view/test/__snapshots__/index.js.snap +34 -24
  817. package/src/view/test/index.js +5 -5
  818. package/src/visually-hidden/README.md +4 -0
  819. package/tsconfig.json +0 -2
  820. package/tsconfig.tsbuildinfo +1 -1
  821. package/build/radio/index.js.map +0 -1
  822. package/build/radio-context/index.js.map +0 -1
  823. package/build-module/radio/index.js.map +0 -1
  824. package/build-module/radio-context/index.js.map +0 -1
  825. package/build-types/radio-context/index.d.ts.map +0 -1
  826. package/src/border-box-control/stories/index.js +0 -106
  827. package/src/form-file-upload/stories/index.js +0 -51
  828. package/src/isolated-event-container/index.js +0 -28
  829. package/src/navigator/stories/index.js +0 -194
  830. package/src/navigator/test/index.js +0 -472
  831. package/src/radio/stories/index.js +0 -20
@@ -62,7 +62,9 @@ const useKeyboardVisibility = () => {
62
62
  return () => {
63
63
  showListener.remove();
64
64
  hideListener.remove();
65
- };
65
+ }; // Disable reason: deferring this refactor to the native team.
66
+ // see https://github.com/WordPress/gutenberg/pull/41166
67
+ // eslint-disable-next-line react-hooks/exhaustive-deps
66
68
  }, []);
67
69
  return keyboardVisible;
68
70
  };
@@ -106,7 +108,9 @@ const Tooltip = _ref => {
106
108
  });
107
109
  }
108
110
 
109
- return () => onHandleScreenTouch(null);
111
+ return () => onHandleScreenTouch(null); // Disable reason: deferring this refactor to the native team.
112
+ // see https://github.com/WordPress/gutenberg/pull/41166
113
+ // eslint-disable-next-line react-hooks/exhaustive-deps
110
114
  }, [visible]); // Manage visibility animation.
111
115
 
112
116
  (0, _element.useEffect)(() => {
@@ -115,7 +119,10 @@ const Tooltip = _ref => {
115
119
  previousVisible && previousVisible !== visible) {
116
120
  setAnimating(true);
117
121
  startAnimation();
118
- }
122
+ } // Disable reason: deferring this refactor to the native team.
123
+ // see https://github.com/WordPress/gutenberg/pull/41166
124
+ // eslint-disable-next-line react-hooks/exhaustive-deps
125
+
119
126
  }, [visible]); // Manage tooltip visibility and position in relation to keyboard.
120
127
 
121
128
  (0, _element.useEffect)(() => {
@@ -132,7 +139,10 @@ const Tooltip = _ref => {
132
139
  if (typeof previousVisible !== 'undefined' && !keyboardVisible) {
133
140
  setAnimating(true);
134
141
  setVisible(false);
135
- }
142
+ } // Disable reason: deferring this refactor to the native team.
143
+ // see https://github.com/WordPress/gutenberg/pull/41166
144
+ // eslint-disable-next-line react-hooks/exhaustive-deps
145
+
136
146
  }, [visible, keyboardVisible]); // Manage tooltip position during keyboard frame changes.
137
147
 
138
148
  (0, _element.useEffect)(() => {
@@ -250,6 +260,9 @@ const TooltipSlot = _ref3 => {
250
260
  handleScreenTouch();
251
261
  setHandleScreenTouch(null);
252
262
  }; // Memoize context value to avoid unnecessary rerenders of the Provider's children
263
+ // Disable reason: deferring this refactor to the native team.
264
+ // see https://github.com/WordPress/gutenberg/pull/41166
265
+ // eslint-disable-next-line react-hooks/exhaustive-deps
253
266
 
254
267
 
255
268
  const value = (0, _element.useMemo)(() => ({
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/tooltip/index.native.js"],"names":["RIGHT_ALIGN_ARROW_OFFSET","TOOLTIP_VERTICAL_OFFSET","TooltipContext","onHandleScreenTouch","Fill","Slot","useKeyboardVisibility","keyboardVisible","setKeyboardVisible","previousKeyboardVisible","showListener","Keyboard","addListener","keyboardHideEvent","Platform","select","android","ios","hideListener","remove","Tooltip","children","position","text","visible","initialVisible","referenceElementRef","animationValue","Animated","Value","current","horizontalPosition","split","setVisible","animating","setAnimating","hidden","previousVisible","referenceLayout","setReferenceLayout","height","width","x","y","tooltipLayout","setTooltipLayout","startAnimation","getReferenceElementPosition","frameListener","timing","toValue","duration","useNativeDriver","delay","easing","Easing","out","quad","start","tooltipStyles","styles","tooltip","left","Math","floor","top","tooltipBoxStyles","tooltip__box","elevation","opacity","shadowColor","tooltip__shadow","color","shadowOffset","shadowOpacity","shadowRadius","transform","translateY","interpolate","inputRange","outputRange","arrowStyles","tooltip__arrow","requestAnimationFrame","measure","_x","_y","pageX","pageY","getTooltipLayout","nativeEvent","layout","ref","onLayout","tooltip__text","TooltipSlot","rest","handleScreenTouch","setHandleScreenTouch","callback","handleTouchStart","value","undefined","StyleSheet","absoluteFill"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tAnimated,\n\tEasing,\n\tKeyboard,\n\tPlatform,\n\tStyleSheet,\n\tText,\n\tView,\n} from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcloneElement,\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { createSlotFill } from '../slot-fill';\nimport styles from './style.scss';\n\nconst RIGHT_ALIGN_ARROW_OFFSET = 16;\nconst TOOLTIP_VERTICAL_OFFSET = 2;\n\nconst TooltipContext = createContext( {\n\tonHandleScreenTouch: () => {},\n} );\nconst { Fill, Slot } = createSlotFill( 'Tooltip' );\n\nconst useKeyboardVisibility = () => {\n\tconst [ keyboardVisible, setKeyboardVisible ] = useState( false );\n\tconst previousKeyboardVisible = usePrevious( keyboardVisible );\n\n\tuseEffect( () => {\n\t\tconst showListener = Keyboard.addListener( 'keyboardDidShow', () => {\n\t\t\tif ( previousKeyboardVisible !== true ) {\n\t\t\t\tsetKeyboardVisible( true );\n\t\t\t}\n\t\t} );\n\t\tconst keyboardHideEvent = Platform.select( {\n\t\t\tandroid: 'keyboardDidHide',\n\t\t\tios: 'keyboardWillHide',\n\t\t} );\n\t\tconst hideListener = Keyboard.addListener( keyboardHideEvent, () => {\n\t\t\tif ( previousKeyboardVisible !== false ) {\n\t\t\t\tsetKeyboardVisible( false );\n\t\t\t}\n\t\t} );\n\t\treturn () => {\n\t\t\tshowListener.remove();\n\t\t\thideListener.remove();\n\t\t};\n\t}, [] );\n\n\treturn keyboardVisible;\n};\n\nconst Tooltip = ( {\n\tchildren,\n\tposition = 'top',\n\ttext,\n\tvisible: initialVisible = false,\n} ) => {\n\tconst referenceElementRef = useRef( null );\n\tconst animationValue = useRef( new Animated.Value( 0 ) ).current;\n\tconst [ , horizontalPosition = 'center' ] = position.split( ' ' );\n\tconst [ visible, setVisible ] = useState( initialVisible );\n\tconst [ animating, setAnimating ] = useState( false );\n\tconst hidden = ! visible && ! animating;\n\tconst previousVisible = usePrevious( visible );\n\tconst [ referenceLayout, setReferenceLayout ] = useState( {\n\t\theight: 0,\n\t\twidth: 0,\n\t\tx: 0,\n\t\ty: 0,\n\t} );\n\tconst [ tooltipLayout, setTooltipLayout ] = useState( {\n\t\theight: 0,\n\t\twidth: 0,\n\t} );\n\tconst { onHandleScreenTouch } = useContext( TooltipContext );\n\tconst keyboardVisible = useKeyboardVisibility();\n\n\t// Register callback to dismiss the tooltip whenever the screen is touched.\n\tuseEffect( () => {\n\t\tif ( visible ) {\n\t\t\tonHandleScreenTouch( () => {\n\t\t\t\tsetAnimating( true );\n\t\t\t\tsetVisible( false );\n\t\t\t} );\n\t\t}\n\t\treturn () => onHandleScreenTouch( null );\n\t}, [ visible ] );\n\n\t// Manage visibility animation.\n\tuseEffect( () => {\n\t\tif (\n\t\t\t// Initial render and visibility enabled, animate show.\n\t\t\t( typeof previousVisible === 'undefined' && visible ) ||\n\t\t\t// Previously visible, animate hide\n\t\t\t( previousVisible && previousVisible !== visible )\n\t\t) {\n\t\t\tsetAnimating( true );\n\t\t\tstartAnimation();\n\t\t}\n\t}, [ visible ] );\n\n\t// Manage tooltip visibility and position in relation to keyboard.\n\tuseEffect( () => {\n\t\tif ( ! visible ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update tooltip position if keyboard is visible.\n\t\tif ( keyboardVisible ) {\n\t\t\tgetReferenceElementPosition();\n\t\t}\n\n\t\t// Hide tooltip if keyboard hides\n\t\tif ( typeof previousVisible !== 'undefined' && ! keyboardVisible ) {\n\t\t\tsetAnimating( true );\n\t\t\tsetVisible( false );\n\t\t}\n\t}, [ visible, keyboardVisible ] );\n\n\t// Manage tooltip position during keyboard frame changes.\n\tuseEffect( () => {\n\t\tconst frameListener = Keyboard.addListener(\n\t\t\t'keyboardWillChangeFrame',\n\t\t\t() => {\n\t\t\t\tif ( visible ) {\n\t\t\t\t\tgetReferenceElementPosition();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tframeListener.remove();\n\t\t};\n\t}, [ visible ] );\n\n\tconst startAnimation = () => {\n\t\tAnimated.timing( animationValue, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: visible ? 300 : 150,\n\t\t\tuseNativeDriver: true,\n\t\t\tdelay: visible ? 500 : 0,\n\t\t\teasing: Easing.out( Easing.quad ),\n\t\t} ).start( () => {\n\t\t\tsetAnimating( false );\n\t\t} );\n\t};\n\n\tconst tooltipStyles = [\n\t\tstyles.tooltip,\n\t\t{\n\t\t\tleft:\n\t\t\t\treferenceLayout.x +\n\t\t\t\tMath.floor( referenceLayout.width / 2 ) -\n\t\t\t\t( horizontalPosition === 'right'\n\t\t\t\t\t? RIGHT_ALIGN_ARROW_OFFSET\n\t\t\t\t\t: Math.floor( tooltipLayout.width / 2 ) ),\n\t\t\ttop:\n\t\t\t\treferenceLayout.y -\n\t\t\t\ttooltipLayout.height -\n\t\t\t\tTOOLTIP_VERTICAL_OFFSET,\n\t\t},\n\t];\n\tconst tooltipBoxStyles = [\n\t\tstyles.tooltip__box,\n\t\thorizontalPosition === 'right' && styles[ 'tooltip--rightAlign' ],\n\t\t{\n\t\t\televation: 2,\n\t\t\topacity: animationValue,\n\t\t\tshadowColor: styles.tooltip__shadow?.color,\n\t\t\tshadowOffset: { height: 2, width: 0 },\n\t\t\tshadowOpacity: 0.25,\n\t\t\tshadowRadius: 2,\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateY: animationValue.interpolate( {\n\t\t\t\t\t\tinputRange: [ 0, 1 ],\n\t\t\t\t\t\toutputRange: [ visible ? 4 : -8, -8 ],\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n\tconst arrowStyles = [\n\t\tstyles.tooltip__arrow,\n\t\thorizontalPosition === 'right' &&\n\t\t\tstyles[ 'tooltip__arrow--rightAlign' ],\n\t];\n\n\tconst getReferenceElementPosition = () => {\n\t\t// rAF allows render to complete before calculating layout\n\t\t// eslint-disable-next-line no-undef\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( ! referenceElementRef.current ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treferenceElementRef.current.measure(\n\t\t\t\t( _x, _y, width, height, pageX, pageY ) => {\n\t\t\t\t\tsetReferenceLayout( {\n\t\t\t\t\t\theight,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tx: pageX,\n\t\t\t\t\t\ty: pageY,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t);\n\t\t} );\n\t};\n\tconst getTooltipLayout = ( { nativeEvent } ) => {\n\t\tconst { height, width } = nativeEvent.layout;\n\t\tsetTooltipLayout( { height, width } );\n\t};\n\n\tif ( hidden ) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ cloneElement( children, {\n\t\t\t\tref: referenceElementRef,\n\t\t\t\tonLayout: getReferenceElementPosition,\n\t\t\t} ) }\n\t\t\t<Fill>\n\t\t\t\t<View onLayout={ getTooltipLayout } style={ tooltipStyles }>\n\t\t\t\t\t<Animated.View style={ tooltipBoxStyles }>\n\t\t\t\t\t\t<Text style={ styles.tooltip__text }>{ text }</Text>\n\t\t\t\t\t\t<View style={ arrowStyles } />\n\t\t\t\t\t</Animated.View>\n\t\t\t\t</View>\n\t\t\t</Fill>\n\t\t</>\n\t);\n};\n\nconst TooltipSlot = ( { children, ...rest } ) => {\n\tconst [ handleScreenTouch, setHandleScreenTouch ] = useState( null );\n\tconst onHandleScreenTouch = ( callback ) => {\n\t\t// Must use function to set state below as `callback` is a function itself.\n\t\tsetHandleScreenTouch( () => callback );\n\t};\n\tconst handleTouchStart = () => {\n\t\thandleScreenTouch();\n\t\tsetHandleScreenTouch( null );\n\t};\n\t// Memoize context value to avoid unnecessary rerenders of the Provider's children\n\tconst value = useMemo( () => ( { onHandleScreenTouch } ) );\n\n\treturn (\n\t\t<TooltipContext.Provider value={ value }>\n\t\t\t<View\n\t\t\t\tonTouchStart={\n\t\t\t\t\ttypeof handleScreenTouch === 'function'\n\t\t\t\t\t\t? handleTouchStart\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tpointerEvents=\"box-none\"\n\t\t\t\tstyle={ StyleSheet.absoluteFill }\n\t\t\t\ttestID=\"tooltip-overlay\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t\t<Slot { ...rest } />\n\t\t\t</View>\n\t\t</TooltipContext.Provider>\n\t);\n};\n\nTooltip.Slot = TooltipSlot;\n\nexport default Tooltip;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/tooltip/index.native.js"],"names":["RIGHT_ALIGN_ARROW_OFFSET","TOOLTIP_VERTICAL_OFFSET","TooltipContext","onHandleScreenTouch","Fill","Slot","useKeyboardVisibility","keyboardVisible","setKeyboardVisible","previousKeyboardVisible","showListener","Keyboard","addListener","keyboardHideEvent","Platform","select","android","ios","hideListener","remove","Tooltip","children","position","text","visible","initialVisible","referenceElementRef","animationValue","Animated","Value","current","horizontalPosition","split","setVisible","animating","setAnimating","hidden","previousVisible","referenceLayout","setReferenceLayout","height","width","x","y","tooltipLayout","setTooltipLayout","startAnimation","getReferenceElementPosition","frameListener","timing","toValue","duration","useNativeDriver","delay","easing","Easing","out","quad","start","tooltipStyles","styles","tooltip","left","Math","floor","top","tooltipBoxStyles","tooltip__box","elevation","opacity","shadowColor","tooltip__shadow","color","shadowOffset","shadowOpacity","shadowRadius","transform","translateY","interpolate","inputRange","outputRange","arrowStyles","tooltip__arrow","requestAnimationFrame","measure","_x","_y","pageX","pageY","getTooltipLayout","nativeEvent","layout","ref","onLayout","tooltip__text","TooltipSlot","rest","handleScreenTouch","setHandleScreenTouch","callback","handleTouchStart","value","undefined","StyleSheet","absoluteFill"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tAnimated,\n\tEasing,\n\tKeyboard,\n\tPlatform,\n\tStyleSheet,\n\tText,\n\tView,\n} from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcloneElement,\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { createSlotFill } from '../slot-fill';\nimport styles from './style.scss';\n\nconst RIGHT_ALIGN_ARROW_OFFSET = 16;\nconst TOOLTIP_VERTICAL_OFFSET = 2;\n\nconst TooltipContext = createContext( {\n\tonHandleScreenTouch: () => {},\n} );\nconst { Fill, Slot } = createSlotFill( 'Tooltip' );\n\nconst useKeyboardVisibility = () => {\n\tconst [ keyboardVisible, setKeyboardVisible ] = useState( false );\n\tconst previousKeyboardVisible = usePrevious( keyboardVisible );\n\n\tuseEffect( () => {\n\t\tconst showListener = Keyboard.addListener( 'keyboardDidShow', () => {\n\t\t\tif ( previousKeyboardVisible !== true ) {\n\t\t\t\tsetKeyboardVisible( true );\n\t\t\t}\n\t\t} );\n\t\tconst keyboardHideEvent = Platform.select( {\n\t\t\tandroid: 'keyboardDidHide',\n\t\t\tios: 'keyboardWillHide',\n\t\t} );\n\t\tconst hideListener = Keyboard.addListener( keyboardHideEvent, () => {\n\t\t\tif ( previousKeyboardVisible !== false ) {\n\t\t\t\tsetKeyboardVisible( false );\n\t\t\t}\n\t\t} );\n\t\treturn () => {\n\t\t\tshowListener.remove();\n\t\t\thideListener.remove();\n\t\t};\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\treturn keyboardVisible;\n};\n\nconst Tooltip = ( {\n\tchildren,\n\tposition = 'top',\n\ttext,\n\tvisible: initialVisible = false,\n} ) => {\n\tconst referenceElementRef = useRef( null );\n\tconst animationValue = useRef( new Animated.Value( 0 ) ).current;\n\tconst [ , horizontalPosition = 'center' ] = position.split( ' ' );\n\tconst [ visible, setVisible ] = useState( initialVisible );\n\tconst [ animating, setAnimating ] = useState( false );\n\tconst hidden = ! visible && ! animating;\n\tconst previousVisible = usePrevious( visible );\n\tconst [ referenceLayout, setReferenceLayout ] = useState( {\n\t\theight: 0,\n\t\twidth: 0,\n\t\tx: 0,\n\t\ty: 0,\n\t} );\n\tconst [ tooltipLayout, setTooltipLayout ] = useState( {\n\t\theight: 0,\n\t\twidth: 0,\n\t} );\n\tconst { onHandleScreenTouch } = useContext( TooltipContext );\n\tconst keyboardVisible = useKeyboardVisibility();\n\n\t// Register callback to dismiss the tooltip whenever the screen is touched.\n\tuseEffect( () => {\n\t\tif ( visible ) {\n\t\t\tonHandleScreenTouch( () => {\n\t\t\t\tsetAnimating( true );\n\t\t\t\tsetVisible( false );\n\t\t\t} );\n\t\t}\n\t\treturn () => onHandleScreenTouch( null );\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ visible ] );\n\n\t// Manage visibility animation.\n\tuseEffect( () => {\n\t\tif (\n\t\t\t// Initial render and visibility enabled, animate show.\n\t\t\t( typeof previousVisible === 'undefined' && visible ) ||\n\t\t\t// Previously visible, animate hide\n\t\t\t( previousVisible && previousVisible !== visible )\n\t\t) {\n\t\t\tsetAnimating( true );\n\t\t\tstartAnimation();\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ visible ] );\n\n\t// Manage tooltip visibility and position in relation to keyboard.\n\tuseEffect( () => {\n\t\tif ( ! visible ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update tooltip position if keyboard is visible.\n\t\tif ( keyboardVisible ) {\n\t\t\tgetReferenceElementPosition();\n\t\t}\n\n\t\t// Hide tooltip if keyboard hides\n\t\tif ( typeof previousVisible !== 'undefined' && ! keyboardVisible ) {\n\t\t\tsetAnimating( true );\n\t\t\tsetVisible( false );\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ visible, keyboardVisible ] );\n\n\t// Manage tooltip position during keyboard frame changes.\n\tuseEffect( () => {\n\t\tconst frameListener = Keyboard.addListener(\n\t\t\t'keyboardWillChangeFrame',\n\t\t\t() => {\n\t\t\t\tif ( visible ) {\n\t\t\t\t\tgetReferenceElementPosition();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tframeListener.remove();\n\t\t};\n\t}, [ visible ] );\n\n\tconst startAnimation = () => {\n\t\tAnimated.timing( animationValue, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: visible ? 300 : 150,\n\t\t\tuseNativeDriver: true,\n\t\t\tdelay: visible ? 500 : 0,\n\t\t\teasing: Easing.out( Easing.quad ),\n\t\t} ).start( () => {\n\t\t\tsetAnimating( false );\n\t\t} );\n\t};\n\n\tconst tooltipStyles = [\n\t\tstyles.tooltip,\n\t\t{\n\t\t\tleft:\n\t\t\t\treferenceLayout.x +\n\t\t\t\tMath.floor( referenceLayout.width / 2 ) -\n\t\t\t\t( horizontalPosition === 'right'\n\t\t\t\t\t? RIGHT_ALIGN_ARROW_OFFSET\n\t\t\t\t\t: Math.floor( tooltipLayout.width / 2 ) ),\n\t\t\ttop:\n\t\t\t\treferenceLayout.y -\n\t\t\t\ttooltipLayout.height -\n\t\t\t\tTOOLTIP_VERTICAL_OFFSET,\n\t\t},\n\t];\n\tconst tooltipBoxStyles = [\n\t\tstyles.tooltip__box,\n\t\thorizontalPosition === 'right' && styles[ 'tooltip--rightAlign' ],\n\t\t{\n\t\t\televation: 2,\n\t\t\topacity: animationValue,\n\t\t\tshadowColor: styles.tooltip__shadow?.color,\n\t\t\tshadowOffset: { height: 2, width: 0 },\n\t\t\tshadowOpacity: 0.25,\n\t\t\tshadowRadius: 2,\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateY: animationValue.interpolate( {\n\t\t\t\t\t\tinputRange: [ 0, 1 ],\n\t\t\t\t\t\toutputRange: [ visible ? 4 : -8, -8 ],\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n\tconst arrowStyles = [\n\t\tstyles.tooltip__arrow,\n\t\thorizontalPosition === 'right' &&\n\t\t\tstyles[ 'tooltip__arrow--rightAlign' ],\n\t];\n\n\tconst getReferenceElementPosition = () => {\n\t\t// rAF allows render to complete before calculating layout\n\t\t// eslint-disable-next-line no-undef\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( ! referenceElementRef.current ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treferenceElementRef.current.measure(\n\t\t\t\t( _x, _y, width, height, pageX, pageY ) => {\n\t\t\t\t\tsetReferenceLayout( {\n\t\t\t\t\t\theight,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\tx: pageX,\n\t\t\t\t\t\ty: pageY,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t);\n\t\t} );\n\t};\n\tconst getTooltipLayout = ( { nativeEvent } ) => {\n\t\tconst { height, width } = nativeEvent.layout;\n\t\tsetTooltipLayout( { height, width } );\n\t};\n\n\tif ( hidden ) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ cloneElement( children, {\n\t\t\t\tref: referenceElementRef,\n\t\t\t\tonLayout: getReferenceElementPosition,\n\t\t\t} ) }\n\t\t\t<Fill>\n\t\t\t\t<View onLayout={ getTooltipLayout } style={ tooltipStyles }>\n\t\t\t\t\t<Animated.View style={ tooltipBoxStyles }>\n\t\t\t\t\t\t<Text style={ styles.tooltip__text }>{ text }</Text>\n\t\t\t\t\t\t<View style={ arrowStyles } />\n\t\t\t\t\t</Animated.View>\n\t\t\t\t</View>\n\t\t\t</Fill>\n\t\t</>\n\t);\n};\n\nconst TooltipSlot = ( { children, ...rest } ) => {\n\tconst [ handleScreenTouch, setHandleScreenTouch ] = useState( null );\n\tconst onHandleScreenTouch = ( callback ) => {\n\t\t// Must use function to set state below as `callback` is a function itself.\n\t\tsetHandleScreenTouch( () => callback );\n\t};\n\tconst handleTouchStart = () => {\n\t\thandleScreenTouch();\n\t\tsetHandleScreenTouch( null );\n\t};\n\t// Memoize context value to avoid unnecessary rerenders of the Provider's children\n\t// Disable reason: deferring this refactor to the native team.\n\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst value = useMemo( () => ( { onHandleScreenTouch } ) );\n\n\treturn (\n\t\t<TooltipContext.Provider value={ value }>\n\t\t\t<View\n\t\t\t\tonTouchStart={\n\t\t\t\t\ttypeof handleScreenTouch === 'function'\n\t\t\t\t\t\t? handleTouchStart\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tpointerEvents=\"box-none\"\n\t\t\t\tstyle={ StyleSheet.absoluteFill }\n\t\t\t\ttestID=\"tooltip-overlay\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t\t<Slot { ...rest } />\n\t\t\t</View>\n\t\t</TooltipContext.Provider>\n\t);\n};\n\nTooltip.Slot = TooltipSlot;\n\nexport default Tooltip;\n"]}
@@ -13,6 +13,8 @@ var _lodash = require("lodash");
13
13
 
14
14
  var _warning = _interopRequireDefault(require("@wordpress/warning"));
15
15
 
16
+ var _utils = require("../../utils");
17
+
16
18
  /**
17
19
  * External dependencies
18
20
  */
@@ -20,33 +22,16 @@ var _warning = _interopRequireDefault(require("@wordpress/warning"));
20
22
  /**
21
23
  * WordPress dependencies
22
24
  */
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
23
29
  const ComponentsContext = (0, _element.createContext)(
24
30
  /** @type {Record<string, any>} */
25
31
  {});
26
32
  exports.ComponentsContext = ComponentsContext;
27
33
 
28
34
  const useComponentsContext = () => (0, _element.useContext)(ComponentsContext);
29
- /**
30
- * Runs an effect only on update (i.e., ignores the first render)
31
- *
32
- * @param {import('react').EffectCallback} effect
33
- * @param {import('react').DependencyList} deps
34
- */
35
-
36
-
37
- exports.useComponentsContext = useComponentsContext;
38
-
39
- function useUpdateEffect(effect, deps) {
40
- const mounted = (0, _element.useRef)(false);
41
- (0, _element.useEffect)(() => {
42
- if (mounted.current) {
43
- return effect();
44
- }
45
-
46
- mounted.current = true;
47
- return undefined;
48
- }, deps);
49
- }
50
35
  /**
51
36
  * Consolidates incoming ContextSystem values with a (potential) parent ContextSystem value.
52
37
  *
@@ -58,13 +43,15 @@ function useUpdateEffect(effect, deps) {
58
43
  */
59
44
 
60
45
 
46
+ exports.useComponentsContext = useComponentsContext;
47
+
61
48
  function useContextSystemBridge(_ref) {
62
49
  let {
63
50
  value
64
51
  } = _ref;
65
52
  const parentContext = useComponentsContext();
66
53
  const valueRef = (0, _element.useRef)(value);
67
- useUpdateEffect(() => {
54
+ (0, _utils.useUpdateEffect)(() => {
68
55
  if ( // Objects are equivalent.
69
56
  (0, _lodash.isEqual)(valueRef.current, value) && // But not the same reference.
70
57
  valueRef.current !== value) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/ui/context/context-system-provider.js"],"names":["ComponentsContext","useComponentsContext","useUpdateEffect","effect","deps","mounted","current","undefined","useContextSystemBridge","value","parentContext","valueRef","JSON","stringify","config","parse","BaseContextSystemProvider","children","contextValue","ContextSystemProvider"],"mappings":";;;;;;;;;AAQA;;AALA;;AAaA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;AAWO,MAAMA,iBAAiB,GAAG;AAChC;AAAqC,EADL,CAA1B;;;AAGA,MAAMC,oBAAoB,GAAG,MAAM,yBAAYD,iBAAZ,CAAnC;AAEP;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAASE,eAAT,CAA0BC,MAA1B,EAAkCC,IAAlC,EAAyC;AACxC,QAAMC,OAAO,GAAG,qBAAQ,KAAR,CAAhB;AACA,0BAAW,MAAM;AAChB,QAAKA,OAAO,CAACC,OAAb,EAAuB;AACtB,aAAOH,MAAM,EAAb;AACA;;AACDE,IAAAA,OAAO,CAACC,OAAR,GAAkB,IAAlB;AACA,WAAOC,SAAP;AACA,GAND,EAMGH,IANH;AAOA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,sBAAT,OAA6C;AAAA,MAAZ;AAAEC,IAAAA;AAAF,GAAY;AAC5C,QAAMC,aAAa,GAAGT,oBAAoB,EAA1C;AAEA,QAAMU,QAAQ,GAAG,qBAAQF,KAAR,CAAjB;AAEAP,EAAAA,eAAe,CAAE,MAAM;AACtB,SACC;AACA,yBAASS,QAAQ,CAACL,OAAlB,EAA2BG,KAA3B,KACA;AACAE,IAAAA,QAAQ,CAACL,OAAT,KAAqBG,KAJtB,EAKE;AACD,qHAAO,gCAAgCG,IAAI,CAACC,SAAL,CAAgBJ,KAAhB,CAAyB,EAAhE;AACA;AACD,GATc,EASZ,CAAEA,KAAF,CATY,CAAf,CAL4C,CAgB5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMK,MAAM,GAAG,sBAAS,MAAM;AAC7B;AACA,WAAO,mBAAOF,IAAI,CAACG,KAAL,CAAYH,IAAI,CAACC,SAAL,CAAgBH,aAAhB,CAAZ,CAAP,EAAsDD,KAAtD,CAAP;AACA,GAHc,EAGZ,CAAEC,aAAF,EAAiBD,KAAjB,CAHY,CAAf;AAKA,SAAOK,MAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAME,yBAAyB,GAAG,SAA2B;AAAA,MAAzB;AAAEC,IAAAA,QAAF;AAAYR,IAAAA;AAAZ,GAAyB;AAC5D,QAAMS,YAAY,GAAGV,sBAAsB,CAAE;AAAEC,IAAAA;AAAF,GAAF,CAA3C;AAEA,SACC,4BAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAGS;AAApC,KACGD,QADH,CADD;AAKA,CARD;;AAUO,MAAME,qBAAqB,GAAG,mBAAMH,yBAAN,CAA9B","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual, merge } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\n\tmemo,\n} from '@wordpress/element';\nimport warn from '@wordpress/warning';\n\nexport const ComponentsContext = createContext(\n\t/** @type {Record<string, any>} */ ( {} )\n);\nexport const useComponentsContext = () => useContext( ComponentsContext );\n\n/**\n * Runs an effect only on update (i.e., ignores the first render)\n *\n * @param {import('react').EffectCallback} effect\n * @param {import('react').DependencyList} deps\n */\nfunction useUpdateEffect( effect, deps ) {\n\tconst mounted = useRef( false );\n\tuseEffect( () => {\n\t\tif ( mounted.current ) {\n\t\t\treturn effect();\n\t\t}\n\t\tmounted.current = true;\n\t\treturn undefined;\n\t}, deps );\n}\n\n/**\n * Consolidates incoming ContextSystem values with a (potential) parent ContextSystem value.\n *\n * Note: This function will warn if it detects an un-memoized `value`\n *\n * @param {Object} props\n * @param {Record<string, any>} props.value\n * @return {Record<string, any>} The consolidated value.\n */\nfunction useContextSystemBridge( { value } ) {\n\tconst parentContext = useComponentsContext();\n\n\tconst valueRef = useRef( value );\n\n\tuseUpdateEffect( () => {\n\t\tif (\n\t\t\t// Objects are equivalent.\n\t\t\tisEqual( valueRef.current, value ) &&\n\t\t\t// But not the same reference.\n\t\t\tvalueRef.current !== value\n\t\t) {\n\t\t\twarn( `Please memoize your context: ${ JSON.stringify( value ) }` );\n\t\t}\n\t}, [ value ] );\n\n\t// `parentContext` will always be memoized (i.e., the result of this hook itself)\n\t// or the default value from when the `ComponentsContext` was originally\n\t// initialized (which will never change, it's a static variable)\n\t// so this memoization will prevent `merge` and `JSON.parse/stringify` from rerunning unless\n\t// the references to `value` change OR the `parentContext` has an actual material change\n\t// (because again, it's guaranteed to be memoized or a static reference to the empty object\n\t// so we know that the only changes for `parentContext` are material ones... i.e., why we\n\t// don't have to warn in the `useUpdateEffect` hook above for `parentContext` and we only\n\t// need to bother with the `value`). The `useUpdateEffect` above will ensure that we are\n\t// correctly warning when the `value` isn't being properly memoized. All of that to say\n\t// that this should be super safe to assume that `useMemo` will only run on actual\n\t// changes to the two dependencies, therefore saving us calls to `merge` and `JSON.parse/stringify`!\n\tconst config = useMemo( () => {\n\t\t// Deep clone `parentContext` to avoid mutating it later.\n\t\treturn merge( JSON.parse( JSON.stringify( parentContext ) ), value );\n\t}, [ parentContext, value ] );\n\n\treturn config;\n}\n\n/**\n * A Provider component that can modify props for connected components within\n * the Context system.\n *\n * @example\n * ```jsx\n * <ContextSystemProvider value={{ Button: { size: 'small' }}}>\n * <Button>...</Button>\n * </ContextSystemProvider>\n * ```\n *\n * @template {Record<string, any>} T\n * @param {Object} options\n * @param {import('react').ReactNode} options.children Children to render.\n * @param {T} options.value Props to render into connected components.\n * @return {JSX.Element} A Provider wrapped component.\n */\nconst BaseContextSystemProvider = ( { children, value } ) => {\n\tconst contextValue = useContextSystemBridge( { value } );\n\n\treturn (\n\t\t<ComponentsContext.Provider value={ contextValue }>\n\t\t\t{ children }\n\t\t</ComponentsContext.Provider>\n\t);\n};\n\nexport const ContextSystemProvider = memo( BaseContextSystemProvider );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/ui/context/context-system-provider.js"],"names":["ComponentsContext","useComponentsContext","useContextSystemBridge","value","parentContext","valueRef","current","JSON","stringify","config","parse","BaseContextSystemProvider","children","contextValue","ContextSystemProvider"],"mappings":";;;;;;;;;AAQA;;AALA;;AAYA;;AAKA;;AApBA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;AAGO,MAAMA,iBAAiB,GAAG;AAChC;AAAqC,EADL,CAA1B;;;AAGA,MAAMC,oBAAoB,GAAG,MAAM,yBAAYD,iBAAZ,CAAnC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAASE,sBAAT,OAA6C;AAAA,MAAZ;AAAEC,IAAAA;AAAF,GAAY;AAC5C,QAAMC,aAAa,GAAGH,oBAAoB,EAA1C;AAEA,QAAMI,QAAQ,GAAG,qBAAQF,KAAR,CAAjB;AAEA,8BAAiB,MAAM;AACtB,SACC;AACA,yBAASE,QAAQ,CAACC,OAAlB,EAA2BH,KAA3B,KACA;AACAE,IAAAA,QAAQ,CAACC,OAAT,KAAqBH,KAJtB,EAKE;AACD,qHAAO,gCAAgCI,IAAI,CAACC,SAAL,CAAgBL,KAAhB,CAAyB,EAAhE;AACA;AACD,GATD,EASG,CAAEA,KAAF,CATH,EAL4C,CAgB5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMM,MAAM,GAAG,sBAAS,MAAM;AAC7B;AACA,WAAO,mBAAOF,IAAI,CAACG,KAAL,CAAYH,IAAI,CAACC,SAAL,CAAgBJ,aAAhB,CAAZ,CAAP,EAAsDD,KAAtD,CAAP;AACA,GAHc,EAGZ,CAAEC,aAAF,EAAiBD,KAAjB,CAHY,CAAf;AAKA,SAAOM,MAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAME,yBAAyB,GAAG,SAA2B;AAAA,MAAzB;AAAEC,IAAAA,QAAF;AAAYT,IAAAA;AAAZ,GAAyB;AAC5D,QAAMU,YAAY,GAAGX,sBAAsB,CAAE;AAAEC,IAAAA;AAAF,GAAF,CAA3C;AAEA,SACC,4BAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAGU;AAApC,KACGD,QADH,CADD;AAKA,CARD;;AAUO,MAAME,qBAAqB,GAAG,mBAAMH,yBAAN,CAA9B","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual, merge } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseRef,\n\tuseMemo,\n\tmemo,\n} from '@wordpress/element';\nimport warn from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport { useUpdateEffect } from '../../utils';\n\nexport const ComponentsContext = createContext(\n\t/** @type {Record<string, any>} */ ( {} )\n);\nexport const useComponentsContext = () => useContext( ComponentsContext );\n\n/**\n * Consolidates incoming ContextSystem values with a (potential) parent ContextSystem value.\n *\n * Note: This function will warn if it detects an un-memoized `value`\n *\n * @param {Object} props\n * @param {Record<string, any>} props.value\n * @return {Record<string, any>} The consolidated value.\n */\nfunction useContextSystemBridge( { value } ) {\n\tconst parentContext = useComponentsContext();\n\n\tconst valueRef = useRef( value );\n\n\tuseUpdateEffect( () => {\n\t\tif (\n\t\t\t// Objects are equivalent.\n\t\t\tisEqual( valueRef.current, value ) &&\n\t\t\t// But not the same reference.\n\t\t\tvalueRef.current !== value\n\t\t) {\n\t\t\twarn( `Please memoize your context: ${ JSON.stringify( value ) }` );\n\t\t}\n\t}, [ value ] );\n\n\t// `parentContext` will always be memoized (i.e., the result of this hook itself)\n\t// or the default value from when the `ComponentsContext` was originally\n\t// initialized (which will never change, it's a static variable)\n\t// so this memoization will prevent `merge` and `JSON.parse/stringify` from rerunning unless\n\t// the references to `value` change OR the `parentContext` has an actual material change\n\t// (because again, it's guaranteed to be memoized or a static reference to the empty object\n\t// so we know that the only changes for `parentContext` are material ones... i.e., why we\n\t// don't have to warn in the `useUpdateEffect` hook above for `parentContext` and we only\n\t// need to bother with the `value`). The `useUpdateEffect` above will ensure that we are\n\t// correctly warning when the `value` isn't being properly memoized. All of that to say\n\t// that this should be super safe to assume that `useMemo` will only run on actual\n\t// changes to the two dependencies, therefore saving us calls to `merge` and `JSON.parse/stringify`!\n\tconst config = useMemo( () => {\n\t\t// Deep clone `parentContext` to avoid mutating it later.\n\t\treturn merge( JSON.parse( JSON.stringify( parentContext ) ), value );\n\t}, [ parentContext, value ] );\n\n\treturn config;\n}\n\n/**\n * A Provider component that can modify props for connected components within\n * the Context system.\n *\n * @example\n * ```jsx\n * <ContextSystemProvider value={{ Button: { size: 'small' }}}>\n * <Button>...</Button>\n * </ContextSystemProvider>\n * ```\n *\n * @template {Record<string, any>} T\n * @param {Object} options\n * @param {import('react').ReactNode} options.children Children to render.\n * @param {T} options.value Props to render into connected components.\n * @return {JSX.Element} A Provider wrapped component.\n */\nconst BaseContextSystemProvider = ( { children, value } ) => {\n\tconst contextValue = useContextSystemBridge( { value } );\n\n\treturn (\n\t\t<ComponentsContext.Provider value={ contextValue }>\n\t\t\t{ children }\n\t\t</ComponentsContext.Provider>\n\t);\n};\n\nexport const ContextSystemProvider = memo( BaseContextSystemProvider );\n"]}
@@ -66,7 +66,6 @@ function UnforwardedUnitControl(unitControlProps, forwardedRef) {
66
66
  onChange: onChangeProp,
67
67
  onUnitChange,
68
68
  size = 'default',
69
- style,
70
69
  unit: unitProp,
71
70
  units: unitsProp = _utils.CSS_UNITS,
72
71
  value: valueProp,
@@ -99,7 +98,9 @@ function UnforwardedUnitControl(unitControlProps, forwardedRef) {
99
98
  }, [parsedUnit, setUnit]); // Stores parsed value for hand-off in state reducer.
100
99
 
101
100
  const refParsedQuantity = (0, _element.useRef)(undefined);
102
- const classes = (0, _classnames.default)('components-unit-control', className);
101
+ const classes = (0, _classnames.default)('components-unit-control', // This class is added for legacy purposes to maintain it on the outer
102
+ // wrapper. See: https://github.com/WordPress/gutenberg/pull/45139
103
+ 'components-unit-control-wrapper', className);
103
104
 
104
105
  const handleOnQuantityChange = (nextQuantityValue, changeProps) => {
105
106
  if (nextQuantityValue === '' || typeof nextQuantityValue === 'undefined' || nextQuantityValue === null) {
@@ -145,7 +146,7 @@ function UnforwardedUnitControl(unitControlProps, forwardedRef) {
145
146
  const changeProps = {
146
147
  event,
147
148
  data
148
- }; // The `onChange` callback already gets called, no need to call it explicitely.
149
+ }; // The `onChange` callback already gets called, no need to call it explicitly.
149
150
 
150
151
  onUnitChange === null || onUnitChange === void 0 ? void 0 : onUnitChange(validParsedUnit, changeProps);
151
152
  setUnit(validParsedUnit);
@@ -230,16 +231,13 @@ function UnforwardedUnitControl(unitControlProps, forwardedRef) {
230
231
  step = (_activeUnit$step = activeUnit === null || activeUnit === void 0 ? void 0 : activeUnit.step) !== null && _activeUnit$step !== void 0 ? _activeUnit$step : 1;
231
232
  }
232
233
 
233
- return (0, _element.createElement)(_unitControlStyles.Root, {
234
- className: "components-unit-control-wrapper",
235
- style: style
236
- }, (0, _element.createElement)(_unitControlStyles.ValueInput, (0, _extends2.default)({
234
+ return (0, _element.createElement)(_unitControlStyles.ValueInput, (0, _extends2.default)({
237
235
  type: isPressEnterToChange ? 'text' : 'number'
238
236
  }, props, {
239
237
  autoComplete: autoComplete,
240
238
  className: classes,
241
239
  disabled: disabled,
242
- hideHTMLArrows: true,
240
+ spinControls: "none",
243
241
  isPressEnterToChange: isPressEnterToChange,
244
242
  label: label,
245
243
  onBlur: handleOnBlur,
@@ -251,7 +249,7 @@ function UnforwardedUnitControl(unitControlProps, forwardedRef) {
251
249
  value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : '',
252
250
  step: step,
253
251
  __unstableStateReducer: stateReducer
254
- })));
252
+ }));
255
253
  }
256
254
  /**
257
255
  * `UnitControl` allows the user to set a numeric quantity as well as a unit (e.g. `px`).
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/unit-control/index.tsx"],"names":["UnforwardedUnitControl","unitControlProps","forwardedRef","__unstableStateReducer","stateReducerProp","autoComplete","children","className","disabled","disableUnits","isPressEnterToChange","isResetValueOnUnitChange","isUnitSelectTabbable","label","onChange","onChangeProp","onUnitChange","size","style","unit","unitProp","units","unitsProp","CSS_UNITS","value","valueProp","onBlur","onBlurProp","props","since","hint","version","nonNullValueProp","undefined","parsedQuantity","parsedUnit","setUnit","length","initial","fallback","refParsedQuantity","classes","handleOnQuantityChange","nextQuantityValue","changeProps","onChangeValue","join","handleOnUnitChange","nextUnitValue","data","nextValue","default","mayUpdateUnit","event","isNaN","Number","currentTarget","current","validParsedQuantity","validParsedUnit","Array","isArray","find","option","handleOnBlur","handleOnKeyDown","key","unitControlStateReducer","state","action","nextState","type","inputControlActionTypes","COMMIT","toString","stateReducer","baseState","inputSuffix","step","activeUnit","UnitControl"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport type {\n\tFocusEventHandler,\n\tKeyboardEvent,\n\tForwardedRef,\n\tSyntheticEvent,\n\tChangeEvent,\n\tPointerEvent,\n} from 'react';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { forwardRef, useMemo, useRef, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../ui/context';\nimport * as inputControlActionTypes from '../input-control/reducer/actions';\nimport { Root, ValueInput } from './styles/unit-control-styles';\nimport UnitSelectControl from './unit-select-control';\nimport {\n\tCSS_UNITS,\n\tgetParsedQuantityAndUnit,\n\tgetUnitsWithCurrentUnit,\n\tgetValidParsedQuantityAndUnit,\n} from './utils';\nimport { useControlledState } from '../utils/hooks';\nimport type { UnitControlProps, UnitControlOnChangeCallback } from './types';\nimport type { StateReducer } from '../input-control/reducer/state';\n\nfunction UnforwardedUnitControl(\n\tunitControlProps: WordPressComponentProps<\n\t\tUnitControlProps,\n\t\t'input',\n\t\tfalse\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst {\n\t\t__unstableStateReducer: stateReducerProp,\n\t\tautoComplete = 'off',\n\t\t// @ts-expect-error Ensure that children is omitted from restProps\n\t\tchildren,\n\t\tclassName,\n\t\tdisabled = false,\n\t\tdisableUnits = false,\n\t\tisPressEnterToChange = false,\n\t\tisResetValueOnUnitChange = false,\n\t\tisUnitSelectTabbable = true,\n\t\tlabel,\n\t\tonChange: onChangeProp,\n\t\tonUnitChange,\n\t\tsize = 'default',\n\t\tstyle,\n\t\tunit: unitProp,\n\t\tunits: unitsProp = CSS_UNITS,\n\t\tvalue: valueProp,\n\t\tonBlur: onBlurProp,\n\t\t...props\n\t} = unitControlProps;\n\n\tif ( 'unit' in unitControlProps ) {\n\t\tdeprecated( 'UnitControl unit prop', {\n\t\t\tsince: '5.6',\n\t\t\thint: 'The unit should be provided within the `value` prop.',\n\t\t\tversion: '6.2',\n\t\t} );\n\t}\n\n\t// The `value` prop, in theory, should not be `null`, but the following line\n\t// ensures it fallback to `undefined` in case a consumer of `UnitControl`\n\t// still passes `null` as a `value`.\n\tconst nonNullValueProp = valueProp ?? undefined;\n\tconst units = useMemo(\n\t\t() => getUnitsWithCurrentUnit( nonNullValueProp, unitProp, unitsProp ),\n\t\t[ nonNullValueProp, unitProp, unitsProp ]\n\t);\n\tconst [ parsedQuantity, parsedUnit ] = getParsedQuantityAndUnit(\n\t\tnonNullValueProp,\n\t\tunitProp,\n\t\tunits\n\t);\n\n\tconst [ unit, setUnit ] = useControlledState< string | undefined >(\n\t\tunits.length === 1 ? units[ 0 ].value : unitProp,\n\t\t{\n\t\t\tinitial: parsedUnit,\n\t\t\tfallback: '',\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tif ( parsedUnit !== undefined ) {\n\t\t\tsetUnit( parsedUnit );\n\t\t}\n\t}, [ parsedUnit, setUnit ] );\n\n\t// Stores parsed value for hand-off in state reducer.\n\tconst refParsedQuantity = useRef< number | undefined >( undefined );\n\n\tconst classes = classnames( 'components-unit-control', className );\n\n\tconst handleOnQuantityChange = (\n\t\tnextQuantityValue: number | string | undefined,\n\t\tchangeProps: {\n\t\t\tevent:\n\t\t\t\t| ChangeEvent< HTMLInputElement >\n\t\t\t\t| PointerEvent< HTMLInputElement >;\n\t\t}\n\t) => {\n\t\tif (\n\t\t\tnextQuantityValue === '' ||\n\t\t\ttypeof nextQuantityValue === 'undefined' ||\n\t\t\tnextQuantityValue === null\n\t\t) {\n\t\t\tonChangeProp?.( '', changeProps );\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * Customizing the onChange callback.\n\t\t * This allows as to broadcast a combined value+unit to onChange.\n\t\t */\n\t\tconst onChangeValue = getValidParsedQuantityAndUnit(\n\t\t\tnextQuantityValue,\n\t\t\tunits,\n\t\t\tparsedQuantity,\n\t\t\tunit\n\t\t).join( '' );\n\n\t\tonChangeProp?.( onChangeValue, changeProps );\n\t};\n\n\tconst handleOnUnitChange: UnitControlOnChangeCallback = (\n\t\tnextUnitValue,\n\t\tchangeProps\n\t) => {\n\t\tconst { data } = changeProps;\n\n\t\tlet nextValue = `${ parsedQuantity ?? '' }${ nextUnitValue }`;\n\n\t\tif ( isResetValueOnUnitChange && data?.default !== undefined ) {\n\t\t\tnextValue = `${ data.default }${ nextUnitValue }`;\n\t\t}\n\n\t\tonChangeProp?.( nextValue, changeProps );\n\t\tonUnitChange?.( nextUnitValue, changeProps );\n\n\t\tsetUnit( nextUnitValue );\n\t};\n\n\tconst mayUpdateUnit = ( event: SyntheticEvent< HTMLInputElement > ) => {\n\t\tif ( ! isNaN( Number( event.currentTarget.value ) ) ) {\n\t\t\trefParsedQuantity.current = undefined;\n\t\t\treturn;\n\t\t}\n\t\tconst [ validParsedQuantity, validParsedUnit ] =\n\t\t\tgetValidParsedQuantityAndUnit(\n\t\t\t\tevent.currentTarget.value,\n\t\t\t\tunits,\n\t\t\t\tparsedQuantity,\n\t\t\t\tunit\n\t\t\t);\n\n\t\trefParsedQuantity.current = validParsedQuantity;\n\n\t\tif ( isPressEnterToChange && validParsedUnit !== unit ) {\n\t\t\tconst data = Array.isArray( units )\n\t\t\t\t? units.find( ( option ) => option.value === validParsedUnit )\n\t\t\t\t: undefined;\n\t\t\tconst changeProps = { event, data };\n\n\t\t\t// The `onChange` callback already gets called, no need to call it explicitely.\n\t\t\tonUnitChange?.( validParsedUnit, changeProps );\n\n\t\t\tsetUnit( validParsedUnit );\n\t\t}\n\t};\n\n\tconst handleOnBlur: FocusEventHandler< HTMLInputElement > = ( event ) => {\n\t\tmayUpdateUnit( event );\n\t\tonBlurProp?.( event );\n\t};\n\n\tconst handleOnKeyDown = ( event: KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\t\tif ( key === 'Enter' ) {\n\t\t\tmayUpdateUnit( event );\n\t\t}\n\t};\n\n\t/**\n\t * \"Middleware\" function that intercepts updates from InputControl.\n\t * This allows us to tap into actions to transform the (next) state for\n\t * InputControl.\n\t *\n\t * @param state State from InputControl\n\t * @param action Action triggering state change\n\t * @return The updated state to apply to InputControl\n\t */\n\tconst unitControlStateReducer: StateReducer = ( state, action ) => {\n\t\tconst nextState = { ...state };\n\n\t\t/*\n\t\t * On commits (when pressing ENTER and on blur if\n\t\t * isPressEnterToChange is true), if a parse has been performed\n\t\t * then use that result to update the state.\n\t\t */\n\t\tif ( action.type === inputControlActionTypes.COMMIT ) {\n\t\t\tif ( refParsedQuantity.current !== undefined ) {\n\t\t\t\tnextState.value = (\n\t\t\t\t\trefParsedQuantity.current ?? ''\n\t\t\t\t).toString();\n\t\t\t\trefParsedQuantity.current = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn nextState;\n\t};\n\n\tlet stateReducer: StateReducer = unitControlStateReducer;\n\tif ( stateReducerProp ) {\n\t\tstateReducer = ( state, action ) => {\n\t\t\tconst baseState = unitControlStateReducer( state, action );\n\t\t\treturn stateReducerProp( baseState, action );\n\t\t};\n\t}\n\n\tconst inputSuffix = ! disableUnits ? (\n\t\t<UnitSelectControl\n\t\t\taria-label={ __( 'Select unit' ) }\n\t\t\tdisabled={ disabled }\n\t\t\tisUnitSelectTabbable={ isUnitSelectTabbable }\n\t\t\tonChange={ handleOnUnitChange }\n\t\t\tsize={ size }\n\t\t\tunit={ unit }\n\t\t\tunits={ units }\n\t\t\tonBlur={ onBlurProp }\n\t\t/>\n\t) : null;\n\n\tlet step = props.step;\n\n\t/*\n\t * If no step prop has been passed, lookup the active unit and\n\t * try to get step from `units`, or default to a value of `1`\n\t */\n\tif ( ! step && units ) {\n\t\tconst activeUnit = units.find( ( option ) => option.value === unit );\n\t\tstep = activeUnit?.step ?? 1;\n\t}\n\n\treturn (\n\t\t<Root className=\"components-unit-control-wrapper\" style={ style }>\n\t\t\t<ValueInput\n\t\t\t\ttype={ isPressEnterToChange ? 'text' : 'number' }\n\t\t\t\t{ ...props }\n\t\t\t\tautoComplete={ autoComplete }\n\t\t\t\tclassName={ classes }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\thideHTMLArrows\n\t\t\t\tisPressEnterToChange={ isPressEnterToChange }\n\t\t\t\tlabel={ label }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tonKeyDown={ handleOnKeyDown }\n\t\t\t\tonChange={ handleOnQuantityChange }\n\t\t\t\tref={ forwardedRef }\n\t\t\t\tsize={ size }\n\t\t\t\tsuffix={ inputSuffix }\n\t\t\t\tvalue={ parsedQuantity ?? '' }\n\t\t\t\tstep={ step }\n\t\t\t\t__unstableStateReducer={ stateReducer }\n\t\t\t/>\n\t\t</Root>\n\t);\n}\n\n/**\n * `UnitControl` allows the user to set a numeric quantity as well as a unit (e.g. `px`).\n *\n *\n * @example\n * ```jsx\n * import { __experimentalUnitControl as UnitControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const Example = () => {\n * const [ value, setValue ] = useState( '10px' );\n *\n * return <UnitControl onChange={ setValue } value={ value } />;\n * };\n * ```\n */\nexport const UnitControl = forwardRef( UnforwardedUnitControl );\n\nexport { parseQuantityAndUnitFromRawValue, useCustomUnits } from './utils';\nexport default UnitControl;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/unit-control/index.tsx"],"names":["UnforwardedUnitControl","unitControlProps","forwardedRef","__unstableStateReducer","stateReducerProp","autoComplete","children","className","disabled","disableUnits","isPressEnterToChange","isResetValueOnUnitChange","isUnitSelectTabbable","label","onChange","onChangeProp","onUnitChange","size","unit","unitProp","units","unitsProp","CSS_UNITS","value","valueProp","onBlur","onBlurProp","props","since","hint","version","nonNullValueProp","undefined","parsedQuantity","parsedUnit","setUnit","length","initial","fallback","refParsedQuantity","classes","handleOnQuantityChange","nextQuantityValue","changeProps","onChangeValue","join","handleOnUnitChange","nextUnitValue","data","nextValue","default","mayUpdateUnit","event","isNaN","Number","currentTarget","current","validParsedQuantity","validParsedUnit","Array","isArray","find","option","handleOnBlur","handleOnKeyDown","key","unitControlStateReducer","state","action","nextState","type","inputControlActionTypes","COMMIT","toString","stateReducer","baseState","inputSuffix","step","activeUnit","UnitControl"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport type {\n\tFocusEventHandler,\n\tKeyboardEvent,\n\tForwardedRef,\n\tSyntheticEvent,\n} from 'react';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { forwardRef, useMemo, useRef, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../ui/context';\nimport * as inputControlActionTypes from '../input-control/reducer/actions';\nimport { ValueInput } from './styles/unit-control-styles';\nimport UnitSelectControl from './unit-select-control';\nimport {\n\tCSS_UNITS,\n\tgetParsedQuantityAndUnit,\n\tgetUnitsWithCurrentUnit,\n\tgetValidParsedQuantityAndUnit,\n} from './utils';\nimport { useControlledState } from '../utils/hooks';\nimport type { UnitControlProps, UnitControlOnChangeCallback } from './types';\nimport type { StateReducer } from '../input-control/reducer/state';\n\nfunction UnforwardedUnitControl(\n\tunitControlProps: WordPressComponentProps<\n\t\tUnitControlProps,\n\t\t'input',\n\t\tfalse\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst {\n\t\t__unstableStateReducer: stateReducerProp,\n\t\tautoComplete = 'off',\n\t\t// @ts-expect-error Ensure that children is omitted from restProps\n\t\tchildren,\n\t\tclassName,\n\t\tdisabled = false,\n\t\tdisableUnits = false,\n\t\tisPressEnterToChange = false,\n\t\tisResetValueOnUnitChange = false,\n\t\tisUnitSelectTabbable = true,\n\t\tlabel,\n\t\tonChange: onChangeProp,\n\t\tonUnitChange,\n\t\tsize = 'default',\n\t\tunit: unitProp,\n\t\tunits: unitsProp = CSS_UNITS,\n\t\tvalue: valueProp,\n\t\tonBlur: onBlurProp,\n\t\t...props\n\t} = unitControlProps;\n\n\tif ( 'unit' in unitControlProps ) {\n\t\tdeprecated( 'UnitControl unit prop', {\n\t\t\tsince: '5.6',\n\t\t\thint: 'The unit should be provided within the `value` prop.',\n\t\t\tversion: '6.2',\n\t\t} );\n\t}\n\n\t// The `value` prop, in theory, should not be `null`, but the following line\n\t// ensures it fallback to `undefined` in case a consumer of `UnitControl`\n\t// still passes `null` as a `value`.\n\tconst nonNullValueProp = valueProp ?? undefined;\n\tconst units = useMemo(\n\t\t() => getUnitsWithCurrentUnit( nonNullValueProp, unitProp, unitsProp ),\n\t\t[ nonNullValueProp, unitProp, unitsProp ]\n\t);\n\tconst [ parsedQuantity, parsedUnit ] = getParsedQuantityAndUnit(\n\t\tnonNullValueProp,\n\t\tunitProp,\n\t\tunits\n\t);\n\n\tconst [ unit, setUnit ] = useControlledState< string | undefined >(\n\t\tunits.length === 1 ? units[ 0 ].value : unitProp,\n\t\t{\n\t\t\tinitial: parsedUnit,\n\t\t\tfallback: '',\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tif ( parsedUnit !== undefined ) {\n\t\t\tsetUnit( parsedUnit );\n\t\t}\n\t}, [ parsedUnit, setUnit ] );\n\n\t// Stores parsed value for hand-off in state reducer.\n\tconst refParsedQuantity = useRef< number | undefined >( undefined );\n\n\tconst classes = classnames(\n\t\t'components-unit-control',\n\t\t// This class is added for legacy purposes to maintain it on the outer\n\t\t// wrapper. See: https://github.com/WordPress/gutenberg/pull/45139\n\t\t'components-unit-control-wrapper',\n\t\tclassName\n\t);\n\n\tconst handleOnQuantityChange = (\n\t\tnextQuantityValue: number | string | undefined,\n\t\tchangeProps: {\n\t\t\tevent: SyntheticEvent;\n\t\t}\n\t) => {\n\t\tif (\n\t\t\tnextQuantityValue === '' ||\n\t\t\ttypeof nextQuantityValue === 'undefined' ||\n\t\t\tnextQuantityValue === null\n\t\t) {\n\t\t\tonChangeProp?.( '', changeProps );\n\t\t\treturn;\n\t\t}\n\n\t\t/*\n\t\t * Customizing the onChange callback.\n\t\t * This allows as to broadcast a combined value+unit to onChange.\n\t\t */\n\t\tconst onChangeValue = getValidParsedQuantityAndUnit(\n\t\t\tnextQuantityValue,\n\t\t\tunits,\n\t\t\tparsedQuantity,\n\t\t\tunit\n\t\t).join( '' );\n\n\t\tonChangeProp?.( onChangeValue, changeProps );\n\t};\n\n\tconst handleOnUnitChange: UnitControlOnChangeCallback = (\n\t\tnextUnitValue,\n\t\tchangeProps\n\t) => {\n\t\tconst { data } = changeProps;\n\n\t\tlet nextValue = `${ parsedQuantity ?? '' }${ nextUnitValue }`;\n\n\t\tif ( isResetValueOnUnitChange && data?.default !== undefined ) {\n\t\t\tnextValue = `${ data.default }${ nextUnitValue }`;\n\t\t}\n\n\t\tonChangeProp?.( nextValue, changeProps );\n\t\tonUnitChange?.( nextUnitValue, changeProps );\n\n\t\tsetUnit( nextUnitValue );\n\t};\n\n\tconst mayUpdateUnit = ( event: SyntheticEvent< HTMLInputElement > ) => {\n\t\tif ( ! isNaN( Number( event.currentTarget.value ) ) ) {\n\t\t\trefParsedQuantity.current = undefined;\n\t\t\treturn;\n\t\t}\n\t\tconst [ validParsedQuantity, validParsedUnit ] =\n\t\t\tgetValidParsedQuantityAndUnit(\n\t\t\t\tevent.currentTarget.value,\n\t\t\t\tunits,\n\t\t\t\tparsedQuantity,\n\t\t\t\tunit\n\t\t\t);\n\n\t\trefParsedQuantity.current = validParsedQuantity;\n\n\t\tif ( isPressEnterToChange && validParsedUnit !== unit ) {\n\t\t\tconst data = Array.isArray( units )\n\t\t\t\t? units.find( ( option ) => option.value === validParsedUnit )\n\t\t\t\t: undefined;\n\t\t\tconst changeProps = { event, data };\n\n\t\t\t// The `onChange` callback already gets called, no need to call it explicitly.\n\t\t\tonUnitChange?.( validParsedUnit, changeProps );\n\n\t\t\tsetUnit( validParsedUnit );\n\t\t}\n\t};\n\n\tconst handleOnBlur: FocusEventHandler< HTMLInputElement > = ( event ) => {\n\t\tmayUpdateUnit( event );\n\t\tonBlurProp?.( event );\n\t};\n\n\tconst handleOnKeyDown = ( event: KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\t\tif ( key === 'Enter' ) {\n\t\t\tmayUpdateUnit( event );\n\t\t}\n\t};\n\n\t/**\n\t * \"Middleware\" function that intercepts updates from InputControl.\n\t * This allows us to tap into actions to transform the (next) state for\n\t * InputControl.\n\t *\n\t * @param state State from InputControl\n\t * @param action Action triggering state change\n\t * @return The updated state to apply to InputControl\n\t */\n\tconst unitControlStateReducer: StateReducer = ( state, action ) => {\n\t\tconst nextState = { ...state };\n\n\t\t/*\n\t\t * On commits (when pressing ENTER and on blur if\n\t\t * isPressEnterToChange is true), if a parse has been performed\n\t\t * then use that result to update the state.\n\t\t */\n\t\tif ( action.type === inputControlActionTypes.COMMIT ) {\n\t\t\tif ( refParsedQuantity.current !== undefined ) {\n\t\t\t\tnextState.value = (\n\t\t\t\t\trefParsedQuantity.current ?? ''\n\t\t\t\t).toString();\n\t\t\t\trefParsedQuantity.current = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn nextState;\n\t};\n\n\tlet stateReducer: StateReducer = unitControlStateReducer;\n\tif ( stateReducerProp ) {\n\t\tstateReducer = ( state, action ) => {\n\t\t\tconst baseState = unitControlStateReducer( state, action );\n\t\t\treturn stateReducerProp( baseState, action );\n\t\t};\n\t}\n\n\tconst inputSuffix = ! disableUnits ? (\n\t\t<UnitSelectControl\n\t\t\taria-label={ __( 'Select unit' ) }\n\t\t\tdisabled={ disabled }\n\t\t\tisUnitSelectTabbable={ isUnitSelectTabbable }\n\t\t\tonChange={ handleOnUnitChange }\n\t\t\tsize={ size }\n\t\t\tunit={ unit }\n\t\t\tunits={ units }\n\t\t\tonBlur={ onBlurProp }\n\t\t/>\n\t) : null;\n\n\tlet step = props.step;\n\n\t/*\n\t * If no step prop has been passed, lookup the active unit and\n\t * try to get step from `units`, or default to a value of `1`\n\t */\n\tif ( ! step && units ) {\n\t\tconst activeUnit = units.find( ( option ) => option.value === unit );\n\t\tstep = activeUnit?.step ?? 1;\n\t}\n\n\treturn (\n\t\t<ValueInput\n\t\t\ttype={ isPressEnterToChange ? 'text' : 'number' }\n\t\t\t{ ...props }\n\t\t\tautoComplete={ autoComplete }\n\t\t\tclassName={ classes }\n\t\t\tdisabled={ disabled }\n\t\t\tspinControls=\"none\"\n\t\t\tisPressEnterToChange={ isPressEnterToChange }\n\t\t\tlabel={ label }\n\t\t\tonBlur={ handleOnBlur }\n\t\t\tonKeyDown={ handleOnKeyDown }\n\t\t\tonChange={ handleOnQuantityChange }\n\t\t\tref={ forwardedRef }\n\t\t\tsize={ size }\n\t\t\tsuffix={ inputSuffix }\n\t\t\tvalue={ parsedQuantity ?? '' }\n\t\t\tstep={ step }\n\t\t\t__unstableStateReducer={ stateReducer }\n\t\t/>\n\t);\n}\n\n/**\n * `UnitControl` allows the user to set a numeric quantity as well as a unit (e.g. `px`).\n *\n *\n * @example\n * ```jsx\n * import { __experimentalUnitControl as UnitControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const Example = () => {\n * const [ value, setValue ] = useState( '10px' );\n *\n * return <UnitControl onChange={ setValue } value={ value } />;\n * };\n * ```\n */\nexport const UnitControl = forwardRef( UnforwardedUnitControl );\n\nexport { parseQuantityAndUnitFromRawValue, useCustomUnits } from './utils';\nexport default UnitControl;\n"]}