@1money/react-ui 1.15.3 → 1.17.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 (378) hide show
  1. package/AGENTS.md +393 -0
  2. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  3. package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
  4. package/es/components/CheckboxGroup/interface.d.ts +21 -15
  5. package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  6. package/es/components/Flex/Flex.d.ts +5 -0
  7. package/es/components/Flex/Flex.js +50 -0
  8. package/es/components/Flex/constants.d.ts +41 -0
  9. package/es/components/Flex/constants.js +45 -0
  10. package/es/components/Flex/index.d.ts +5 -0
  11. package/es/components/Flex/index.js +6 -0
  12. package/es/components/Flex/interface.d.ts +13 -0
  13. package/es/components/Flex/interface.js +2 -0
  14. package/es/components/Flex/style/Flex.css +1 -0
  15. package/es/components/Flex/style/Flex.scss +70 -0
  16. package/es/components/Flex/style/css.js +2 -0
  17. package/es/components/Flex/style/index.d.ts +1 -0
  18. package/es/components/Flex/style/index.js +2 -0
  19. package/es/components/Form/Form.d.ts +29 -0
  20. package/es/components/Form/Form.js +188 -0
  21. package/es/components/Form/FormItem.d.ts +4 -0
  22. package/es/components/Form/FormItem.js +165 -0
  23. package/es/components/Form/FormItemContent.d.ts +18 -0
  24. package/es/components/Form/FormItemContent.js +146 -0
  25. package/es/components/Form/constants.d.ts +46 -0
  26. package/es/components/Form/constants.js +65 -0
  27. package/es/components/Form/helper.d.ts +120 -0
  28. package/es/components/Form/helper.js +284 -0
  29. package/es/components/Form/index.d.ts +20 -0
  30. package/es/components/Form/index.js +21 -0
  31. package/es/components/Form/interface.d.ts +238 -0
  32. package/es/components/Form/interface.js +2 -0
  33. package/es/components/Form/style/Form.css +1 -0
  34. package/es/components/Form/style/Form.scss +167 -0
  35. package/es/components/Form/style/css.js +2 -0
  36. package/es/components/Form/style/index.d.ts +1 -0
  37. package/es/components/Form/style/index.js +2 -0
  38. package/es/components/Form/useFormItemContext.d.ts +32 -0
  39. package/es/components/Form/useFormItemContext.js +55 -0
  40. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  41. package/es/components/Form/useFormItemWatch.js +69 -0
  42. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  43. package/es/components/Form/useValidationTrigger.js +74 -0
  44. package/es/components/Grid/Col.d.ts +5 -0
  45. package/es/components/Grid/Col.js +97 -0
  46. package/es/components/Grid/Grid.d.ts +12 -0
  47. package/es/components/Grid/Grid.js +12 -0
  48. package/es/components/Grid/Row.d.ts +5 -0
  49. package/es/components/Grid/Row.js +48 -0
  50. package/es/components/Grid/constants.d.ts +55 -0
  51. package/es/components/Grid/constants.js +66 -0
  52. package/es/components/Grid/helper.d.ts +10 -0
  53. package/es/components/Grid/helper.js +44 -0
  54. package/es/components/Grid/index.d.ts +7 -0
  55. package/es/components/Grid/index.js +8 -0
  56. package/es/components/Grid/interface.d.ts +38 -0
  57. package/es/components/Grid/interface.js +2 -0
  58. package/es/components/Grid/style/Grid.css +1 -0
  59. package/es/components/Grid/style/Grid.scss +196 -0
  60. package/es/components/Grid/style/css.js +2 -0
  61. package/es/components/Grid/style/index.d.ts +1 -0
  62. package/es/components/Grid/style/index.js +2 -0
  63. package/es/components/Input/Input.js +72 -74
  64. package/es/components/Input/interface.d.ts +9 -9
  65. package/es/components/InputAmount/InputAmount.js +228 -276
  66. package/es/components/InputAmount/helper.d.ts +46 -0
  67. package/es/components/InputAmount/helper.js +115 -0
  68. package/es/components/InputAmount/style/normal.css +1 -1
  69. package/es/components/InputAmount/style/normal.scss +2 -2
  70. package/es/components/InputAmount/style/primary.css +1 -1
  71. package/es/components/InputAmount/style/primary.scss +2 -2
  72. package/es/components/Message/style/Message.css +1 -1
  73. package/es/components/Message/style/Message.scss +3 -3
  74. package/es/components/ProForm/ProForm.d.ts +33 -0
  75. package/es/components/ProForm/ProForm.js +208 -0
  76. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  77. package/es/components/ProForm/ProFormDependency.js +61 -0
  78. package/es/components/ProForm/ProFormList.d.ts +19 -0
  79. package/es/components/ProForm/ProFormList.js +348 -0
  80. package/es/components/ProForm/Submitter.d.ts +21 -0
  81. package/es/components/ProForm/Submitter.js +76 -0
  82. package/es/components/ProForm/constants.d.ts +34 -0
  83. package/es/components/ProForm/constants.js +40 -0
  84. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  85. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  86. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  87. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  88. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  89. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  90. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  91. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  92. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  93. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  94. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  95. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  96. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  97. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  98. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  99. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  100. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  101. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  102. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  103. package/es/components/ProForm/fields/ProFormText.js +15 -0
  104. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  105. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  106. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  107. package/es/components/ProForm/fields/createProFormField.js +200 -0
  108. package/es/components/ProForm/fields/index.d.ts +12 -0
  109. package/es/components/ProForm/fields/index.js +13 -0
  110. package/es/components/ProForm/index.d.ts +7 -0
  111. package/es/components/ProForm/index.js +7 -0
  112. package/es/components/ProForm/interface.d.ts +306 -0
  113. package/es/components/ProForm/interface.js +2 -0
  114. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  115. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  116. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  117. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  118. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  119. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  120. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  121. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  122. package/es/components/ProForm/layouts/index.d.ts +4 -0
  123. package/es/components/ProForm/layouts/index.js +5 -0
  124. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  125. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  126. package/es/components/ProForm/style/ProForm.module.css +1 -0
  127. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  128. package/es/components/ProForm/style/css.js +3 -0
  129. package/es/components/ProForm/style/index.d.ts +1 -0
  130. package/es/components/ProForm/style/index.js +3 -0
  131. package/es/components/ProForm/utils.d.ts +72 -0
  132. package/es/components/ProForm/utils.js +206 -0
  133. package/es/components/RadioGroup/RadioGroup.js +46 -23
  134. package/es/components/RadioGroup/interface.d.ts +3 -1
  135. package/es/components/Select/Select.d.ts +1 -1
  136. package/es/components/Select/Select.js +113 -106
  137. package/es/components/Select/constants.d.ts +18 -0
  138. package/es/components/Select/constants.js +19 -0
  139. package/es/components/Sidebar/Sidebar.js +21 -23
  140. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  141. package/es/components/Sidebar/SidebarLogo.js +33 -0
  142. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  143. package/es/components/Sidebar/SimplySidebar.js +18 -22
  144. package/es/components/Sidebar/Stepper.js +14 -14
  145. package/es/components/Sidebar/constants.d.ts +16 -0
  146. package/es/components/Sidebar/constants.js +17 -0
  147. package/es/components/Sidebar/style/Sidebar.css +1 -1
  148. package/es/components/Sidebar/style/Sidebar.scss +1 -1
  149. package/es/components/Sidebar/style/SimplySidebar.css +1 -1
  150. package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
  151. package/es/components/Sidebar/style/Stepper.css +1 -1
  152. package/es/components/Sidebar/style/Stepper.scss +11 -1
  153. package/es/components/Space/Space.d.ts +5 -0
  154. package/es/components/Space/Space.js +71 -0
  155. package/es/components/Space/constants.d.ts +33 -0
  156. package/es/components/Space/constants.js +37 -0
  157. package/es/components/Space/index.d.ts +5 -0
  158. package/es/components/Space/index.js +6 -0
  159. package/es/components/Space/interface.d.ts +12 -0
  160. package/es/components/Space/interface.js +2 -0
  161. package/es/components/Space/style/Space.css +1 -0
  162. package/es/components/Space/style/Space.scss +40 -0
  163. package/es/components/Space/style/css.js +2 -0
  164. package/es/components/Space/style/index.d.ts +1 -0
  165. package/es/components/Space/style/index.js +2 -0
  166. package/es/components/Switch/Switch.js +28 -25
  167. package/es/components/Switch/interface.d.ts +9 -4
  168. package/es/components/useControlledState/index.d.ts +14 -0
  169. package/es/components/useControlledState/index.js +32 -0
  170. package/es/components/useEventCallback/index.d.ts +11 -0
  171. package/es/components/useEventCallback/index.js +17 -0
  172. package/es/components/useLayoutEffect/index.d.ts +11 -0
  173. package/es/components/useLayoutEffect/index.js +17 -0
  174. package/es/components/useLayoutState/index.d.ts +13 -0
  175. package/es/components/useLayoutState/index.js +71 -0
  176. package/es/components/useMemoizedFn/index.d.ts +12 -0
  177. package/es/components/useMemoizedFn/index.js +27 -0
  178. package/es/components/usePrevious/index.d.ts +11 -0
  179. package/es/components/usePrevious/index.js +19 -0
  180. package/es/components/useSafeState/index.d.ts +12 -0
  181. package/es/components/useSafeState/index.js +24 -0
  182. package/es/components/useSyncState/index.d.ts +14 -0
  183. package/es/components/useSyncState/index.js +37 -0
  184. package/es/components/useUpdateEffect/index.d.ts +9 -0
  185. package/es/components/useUpdateEffect/index.js +19 -0
  186. package/es/index.css +1 -1
  187. package/es/index.d.ts +32 -2
  188. package/es/index.js +30 -1
  189. package/jest.setup.d.ts +1 -0
  190. package/jest.setup.ts +1 -0
  191. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  192. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  193. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  194. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  195. package/lib/components/Flex/Flex.d.ts +5 -0
  196. package/lib/components/Flex/Flex.js +60 -0
  197. package/lib/components/Flex/constants.d.ts +41 -0
  198. package/lib/components/Flex/constants.js +51 -0
  199. package/lib/components/Flex/index.d.ts +5 -0
  200. package/lib/components/Flex/index.js +60 -0
  201. package/lib/components/Flex/interface.d.ts +13 -0
  202. package/lib/components/Flex/interface.js +6 -0
  203. package/lib/components/Flex/style/Flex.css +1 -0
  204. package/lib/components/Flex/style/Flex.scss +70 -0
  205. package/lib/components/Flex/style/css.js +4 -0
  206. package/lib/components/Flex/style/index.d.ts +1 -0
  207. package/lib/components/Flex/style/index.js +4 -0
  208. package/lib/components/Form/Form.d.ts +29 -0
  209. package/lib/components/Form/Form.js +199 -0
  210. package/lib/components/Form/FormItem.d.ts +4 -0
  211. package/lib/components/Form/FormItem.js +176 -0
  212. package/lib/components/Form/FormItemContent.d.ts +18 -0
  213. package/lib/components/Form/FormItemContent.js +156 -0
  214. package/lib/components/Form/constants.d.ts +46 -0
  215. package/lib/components/Form/constants.js +71 -0
  216. package/lib/components/Form/helper.d.ts +120 -0
  217. package/lib/components/Form/helper.js +290 -0
  218. package/lib/components/Form/index.d.ts +20 -0
  219. package/lib/components/Form/index.js +45 -0
  220. package/lib/components/Form/interface.d.ts +238 -0
  221. package/lib/components/Form/interface.js +6 -0
  222. package/lib/components/Form/style/Form.css +1 -0
  223. package/lib/components/Form/style/Form.scss +167 -0
  224. package/lib/components/Form/style/css.js +4 -0
  225. package/lib/components/Form/style/index.d.ts +1 -0
  226. package/lib/components/Form/style/index.js +4 -0
  227. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  228. package/lib/components/Form/useFormItemContext.js +62 -0
  229. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  230. package/lib/components/Form/useFormItemWatch.js +76 -0
  231. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  232. package/lib/components/Form/useValidationTrigger.js +81 -0
  233. package/lib/components/Grid/Col.d.ts +5 -0
  234. package/lib/components/Grid/Col.js +107 -0
  235. package/lib/components/Grid/Grid.d.ts +12 -0
  236. package/lib/components/Grid/Grid.js +18 -0
  237. package/lib/components/Grid/Row.d.ts +5 -0
  238. package/lib/components/Grid/Row.js +58 -0
  239. package/lib/components/Grid/constants.d.ts +55 -0
  240. package/lib/components/Grid/constants.js +72 -0
  241. package/lib/components/Grid/helper.d.ts +10 -0
  242. package/lib/components/Grid/helper.js +51 -0
  243. package/lib/components/Grid/index.d.ts +7 -0
  244. package/lib/components/Grid/index.js +62 -0
  245. package/lib/components/Grid/interface.d.ts +38 -0
  246. package/lib/components/Grid/interface.js +6 -0
  247. package/lib/components/Grid/style/Grid.css +1 -0
  248. package/lib/components/Grid/style/Grid.scss +196 -0
  249. package/lib/components/Grid/style/css.js +4 -0
  250. package/lib/components/Grid/style/index.d.ts +1 -0
  251. package/lib/components/Grid/style/index.js +4 -0
  252. package/lib/components/Input/Input.js +71 -73
  253. package/lib/components/Input/interface.d.ts +9 -9
  254. package/lib/components/InputAmount/InputAmount.js +230 -278
  255. package/lib/components/InputAmount/helper.d.ts +46 -0
  256. package/lib/components/InputAmount/helper.js +122 -0
  257. package/lib/components/InputAmount/style/normal.css +1 -1
  258. package/lib/components/InputAmount/style/normal.scss +2 -2
  259. package/lib/components/InputAmount/style/primary.css +1 -1
  260. package/lib/components/InputAmount/style/primary.scss +2 -2
  261. package/lib/components/Message/style/Message.css +1 -1
  262. package/lib/components/Message/style/Message.scss +3 -3
  263. package/lib/components/ProForm/ProForm.d.ts +33 -0
  264. package/lib/components/ProForm/ProForm.js +216 -0
  265. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  266. package/lib/components/ProForm/ProFormDependency.js +67 -0
  267. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  268. package/lib/components/ProForm/ProFormList.js +355 -0
  269. package/lib/components/ProForm/Submitter.d.ts +21 -0
  270. package/lib/components/ProForm/Submitter.js +83 -0
  271. package/lib/components/ProForm/constants.d.ts +34 -0
  272. package/lib/components/ProForm/constants.js +46 -0
  273. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  274. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  275. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  276. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  277. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  278. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  279. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  280. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  281. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  282. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  283. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  284. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  285. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  286. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  287. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  288. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  289. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  290. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  291. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  292. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  293. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  294. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  295. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  296. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  297. package/lib/components/ProForm/fields/index.d.ts +12 -0
  298. package/lib/components/ProForm/fields/index.js +90 -0
  299. package/lib/components/ProForm/index.d.ts +7 -0
  300. package/lib/components/ProForm/index.js +73 -0
  301. package/lib/components/ProForm/interface.d.ts +306 -0
  302. package/lib/components/ProForm/interface.js +6 -0
  303. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  304. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  305. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  306. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  307. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  308. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  309. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  310. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  311. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  312. package/lib/components/ProForm/layouts/index.js +40 -0
  313. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  314. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  315. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  316. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  317. package/lib/components/ProForm/style/css.js +4 -0
  318. package/lib/components/ProForm/style/index.d.ts +1 -0
  319. package/lib/components/ProForm/style/index.js +4 -0
  320. package/lib/components/ProForm/utils.d.ts +72 -0
  321. package/lib/components/ProForm/utils.js +213 -0
  322. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  323. package/lib/components/RadioGroup/interface.d.ts +3 -1
  324. package/lib/components/Select/Select.d.ts +1 -1
  325. package/lib/components/Select/Select.js +114 -107
  326. package/lib/components/Select/constants.d.ts +18 -0
  327. package/lib/components/Select/constants.js +25 -0
  328. package/lib/components/Sidebar/Sidebar.js +21 -23
  329. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  330. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  331. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  332. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  333. package/lib/components/Sidebar/Stepper.js +14 -14
  334. package/lib/components/Sidebar/constants.d.ts +16 -0
  335. package/lib/components/Sidebar/constants.js +23 -0
  336. package/lib/components/Sidebar/style/Sidebar.css +1 -1
  337. package/lib/components/Sidebar/style/Sidebar.scss +1 -1
  338. package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
  339. package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
  340. package/lib/components/Sidebar/style/Stepper.css +1 -1
  341. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  342. package/lib/components/Space/Space.d.ts +5 -0
  343. package/lib/components/Space/Space.js +81 -0
  344. package/lib/components/Space/constants.d.ts +33 -0
  345. package/lib/components/Space/constants.js +43 -0
  346. package/lib/components/Space/index.d.ts +5 -0
  347. package/lib/components/Space/index.js +53 -0
  348. package/lib/components/Space/interface.d.ts +12 -0
  349. package/lib/components/Space/interface.js +6 -0
  350. package/lib/components/Space/style/Space.css +1 -0
  351. package/lib/components/Space/style/Space.scss +40 -0
  352. package/lib/components/Space/style/css.js +4 -0
  353. package/lib/components/Space/style/index.d.ts +1 -0
  354. package/lib/components/Space/style/index.js +4 -0
  355. package/lib/components/Switch/Switch.js +27 -24
  356. package/lib/components/Switch/interface.d.ts +9 -4
  357. package/lib/components/useControlledState/index.d.ts +14 -0
  358. package/lib/components/useControlledState/index.js +39 -0
  359. package/lib/components/useEventCallback/index.d.ts +11 -0
  360. package/lib/components/useEventCallback/index.js +24 -0
  361. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  362. package/lib/components/useLayoutEffect/index.js +23 -0
  363. package/lib/components/useLayoutState/index.d.ts +13 -0
  364. package/lib/components/useLayoutState/index.js +79 -0
  365. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  366. package/lib/components/useMemoizedFn/index.js +33 -0
  367. package/lib/components/usePrevious/index.d.ts +11 -0
  368. package/lib/components/usePrevious/index.js +25 -0
  369. package/lib/components/useSafeState/index.d.ts +12 -0
  370. package/lib/components/useSafeState/index.js +31 -0
  371. package/lib/components/useSyncState/index.d.ts +14 -0
  372. package/lib/components/useSyncState/index.js +44 -0
  373. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  374. package/lib/components/useUpdateEffect/index.js +25 -0
  375. package/lib/index.css +1 -1
  376. package/lib/index.d.ts +32 -2
  377. package/lib/index.js +251 -1
  378. package/package.json +31 -1
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = useEventCallback;
8
+ var _react = require("react");
9
+ var _useLatest = _interopRequireDefault(require("../useLatest"));
10
+ /**
11
+ * A hook that returns a stable callback reference that always invokes
12
+ * the latest version of the provided function. Similar to the React
13
+ * useEvent RFC proposal.
14
+ *
15
+ * @param fn The function to wrap
16
+ * @returns A stable callback that always calls the latest fn
17
+ */
18
+ function useEventCallback(fn) {
19
+ var fnRef = (0, _useLatest["default"])(fn);
20
+ return (0, _react.useCallback)(function () {
21
+ return fnRef.current.apply(fnRef, arguments);
22
+ }, []);
23
+ }
24
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlRXZlbnRDYWxsYmFjay9pbmRleC50cyIsImNvbXBvbmVudHMvdXNlRXZlbnRDYWxsYmFjay9pbmRleC5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJ1c2VFdmVudENhbGxiYWNrIiwiZm4iLCJmblJlZiIsInVzZUxhdGVzdCIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImFwcGx5IiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUE7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBREljLFNBQVVHLGdCQUFnQkEsQ0FBeUJDLEVBQVksRUFBQTtFQUMzRSxJQUFNQyxLQUFLLEdBQUcsSUFBQUMscUJBQVMsRUFBQ0YsRUFBRSxDQUFDO0VBRTNCLE9BQU8sSUFBQUcsa0JBQVcsRUFBQyxZQUFlO0lBQ2hDLE9BQU9GLEtBQUssQ0FBQ0csT0FBTyxDQUFBQyxLQUFBLENBQWJKLEtBQUssRUFBQUssU0FBZ0IsQ0FBQztFQUMvQixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ1IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VFdmVudENhbGxiYWNrL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnLi4vdXNlTGF0ZXN0Jztcbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyBhIHN0YWJsZSBjYWxsYmFjayByZWZlcmVuY2UgdGhhdCBhbHdheXMgaW52b2tlc1xuICogdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvbi4gU2ltaWxhciB0byB0aGUgUmVhY3RcbiAqIHVzZUV2ZW50IFJGQyBwcm9wb3NhbC5cbiAqXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHdyYXBcbiAqIEByZXR1cm5zIEEgc3RhYmxlIGNhbGxiYWNrIHRoYXQgYWx3YXlzIGNhbGxzIHRoZSBsYXRlc3QgZm5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICAgIGNvbnN0IGZuUmVmID0gdXNlTGF0ZXN0KGZuKTtcbiAgICByZXR1cm4gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIGZuUmVmLmN1cnJlbnQoLi4uYXJncyk7XG4gICAgfSwgW10pO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,11 @@
1
+ import { type DependencyList } from 'react';
2
+ type EffectCallback = (mount: boolean) => void | (() => void);
3
+ /**
4
+ * A custom `useLayoutEffect` that passes a boolean indicating whether
5
+ * it's the initial mount (`true`) or a subsequent update (`false`).
6
+ *
7
+ * @param effect The effect callback that receives a `mount` parameter
8
+ * @param deps The dependency array
9
+ */
10
+ export default function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
11
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = useLayoutEffect;
7
+ var _react = require("react");
8
+ /**
9
+ * A custom `useLayoutEffect` that passes a boolean indicating whether
10
+ * it's the initial mount (`true`) or a subsequent update (`false`).
11
+ *
12
+ * @param effect The effect callback that receives a `mount` parameter
13
+ * @param deps The dependency array
14
+ */
15
+ function useLayoutEffect(effect, deps) {
16
+ var isMounted = (0, _react.useRef)(false);
17
+ (0, _react.useLayoutEffect)(function () {
18
+ var mount = !isMounted.current;
19
+ isMounted.current = true;
20
+ return effect(mount);
21
+ }, deps);
22
+ }
23
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTGF5b3V0RWZmZWN0L2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VMYXlvdXRFZmZlY3QvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsInVzZUxheW91dEVmZmVjdCIsImVmZmVjdCIsImRlcHMiLCJpc01vdW50ZWQiLCJ1c2VSZWYiLCJyZWFjdFVzZUxheW91dEVmZmVjdCIsIm1vdW50IiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUE7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURRYyxTQUFVQyxlQUFlQSxDQUFDQyxNQUFzQixFQUFFQyxJQUFxQixFQUFBO0VBQ25GLElBQU1DLFNBQVMsR0FBRyxJQUFBQyxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBRS9CLElBQUFDLHNCQUFvQixFQUFDLFlBQUs7SUFDeEIsSUFBTUMsS0FBSyxHQUFHLENBQUNILFNBQVMsQ0FBQ0ksT0FBTztJQUNoQ0osU0FBUyxDQUFDSSxPQUFPLEdBQUcsSUFBSTtJQUN4QixPQUFPTixNQUFNLENBQUNLLEtBQUssQ0FBQztFQUN0QixDQUFDLEVBQUVKLElBQUksQ0FBQztBQUNWIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlTGF5b3V0RWZmZWN0L2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgYXMgcmVhY3RVc2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEEgY3VzdG9tIGB1c2VMYXlvdXRFZmZlY3RgIHRoYXQgcGFzc2VzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXJcbiAqIGl0J3MgdGhlIGluaXRpYWwgbW91bnQgKGB0cnVlYCkgb3IgYSBzdWJzZXF1ZW50IHVwZGF0ZSAoYGZhbHNlYCkuXG4gKlxuICogQHBhcmFtIGVmZmVjdCBUaGUgZWZmZWN0IGNhbGxiYWNrIHRoYXQgcmVjZWl2ZXMgYSBgbW91bnRgIHBhcmFtZXRlclxuICogQHBhcmFtIGRlcHMgVGhlIGRlcGVuZGVuY3kgYXJyYXlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTGF5b3V0RWZmZWN0KGVmZmVjdCwgZGVwcykge1xuICAgIGNvbnN0IGlzTW91bnRlZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgcmVhY3RVc2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBtb3VudCA9ICFpc01vdW50ZWQuY3VycmVudDtcbiAgICAgICAgaXNNb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZWZmZWN0KG1vdW50KTtcbiAgICB9LCBkZXBzKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,13 @@
1
+ export type Updater<State> = (prev: State) => State;
2
+ /**
3
+ * Execute code before next frame but async.
4
+ *
5
+ * Batches multiple state updates into a single microtask (via `Promise.resolve`),
6
+ * reducing unnecessary re-renders when multiple updates happen synchronously.
7
+ *
8
+ * @param defaultState The initial state value
9
+ * @returns A tuple of `[state, setFrameState]`
10
+ */
11
+ export default function useLayoutState<State>(defaultState: State): [State, (updater: Updater<State>) => void];
12
+ /** Lock frame, when frame pass reset the lock. */
13
+ export declare function useTimeoutLock<State>(defaultState?: State): [(state: State) => void, () => State | null];
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = useLayoutState;
8
+ exports.useTimeoutLock = useTimeoutLock;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = require("react");
11
+ /**
12
+ * Execute code before next frame but async.
13
+ *
14
+ * Batches multiple state updates into a single microtask (via `Promise.resolve`),
15
+ * reducing unnecessary re-renders when multiple updates happen synchronously.
16
+ *
17
+ * @param defaultState The initial state value
18
+ * @returns A tuple of `[state, setFrameState]`
19
+ */
20
+ function useLayoutState(defaultState) {
21
+ var stateRef = (0, _react.useRef)(defaultState);
22
+ var _useState = (0, _react.useState)({}),
23
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
24
+ forceUpdate = _useState2[1];
25
+ var lastPromiseRef = (0, _react.useRef)(null);
26
+ var updateBatchRef = (0, _react.useRef)([]);
27
+ var setFrameState = (0, _react.useCallback)(function (updater) {
28
+ updateBatchRef.current.push(updater);
29
+ var promise = Promise.resolve();
30
+ lastPromiseRef.current = promise;
31
+ promise.then(function () {
32
+ if (lastPromiseRef.current === promise) {
33
+ var prevBatch = updateBatchRef.current;
34
+ var prevState = stateRef.current;
35
+ updateBatchRef.current = [];
36
+ prevBatch.forEach(function (batchUpdater) {
37
+ stateRef.current = batchUpdater(stateRef.current);
38
+ });
39
+ lastPromiseRef.current = null;
40
+ if (prevState !== stateRef.current) {
41
+ forceUpdate({});
42
+ }
43
+ }
44
+ });
45
+ }, []);
46
+ (0, _react.useEffect)(function () {
47
+ return function () {
48
+ lastPromiseRef.current = null;
49
+ };
50
+ }, []);
51
+ return [stateRef.current, setFrameState];
52
+ }
53
+ /** Lock frame, when frame pass reset the lock. */
54
+ function useTimeoutLock(defaultState) {
55
+ var frameRef = (0, _react.useRef)(defaultState !== null && defaultState !== void 0 ? defaultState : null);
56
+ var timeoutRef = (0, _react.useRef)(null);
57
+ function cleanUp() {
58
+ if (timeoutRef.current != null) {
59
+ clearTimeout(timeoutRef.current);
60
+ timeoutRef.current = null;
61
+ }
62
+ }
63
+ function setState(newState) {
64
+ frameRef.current = newState;
65
+ cleanUp();
66
+ timeoutRef.current = setTimeout(function () {
67
+ frameRef.current = null;
68
+ timeoutRef.current = null;
69
+ }, 100);
70
+ }
71
+ function getState() {
72
+ return frameRef.current;
73
+ }
74
+ (0, _react.useEffect)(function () {
75
+ return cleanUp;
76
+ }, []);
77
+ return [setState, getState];
78
+ }
79
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTGF5b3V0U3RhdGUvaW5kZXgudHMiLCJjb21wb25lbnRzL3VzZUxheW91dFN0YXRlL2luZGV4LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VMYXlvdXRTdGF0ZSIsImRlZmF1bHRTdGF0ZSIsInN0YXRlUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZm9yY2VVcGRhdGUiLCJsYXN0UHJvbWlzZVJlZiIsInVwZGF0ZUJhdGNoUmVmIiwic2V0RnJhbWVTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXBkYXRlciIsImN1cnJlbnQiLCJwdXNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInByZXZCYXRjaCIsInByZXZTdGF0ZSIsImZvckVhY2giLCJiYXRjaFVwZGF0ZXIiLCJ1c2VFZmZlY3QiLCJ1c2VUaW1lb3V0TG9jayIsImZyYW1lUmVmIiwidGltZW91dFJlZiIsImNsZWFuVXAiLCJjbGVhclRpbWVvdXQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwic2V0VGltZW91dCIsImdldFN0YXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFJQTtBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURJYyxTQUFVQyxjQUFjQSxDQUNwQ0MsWUFBbUIsRUFBQTtFQUVuQixJQUFNQyxRQUFRLEdBQUcsSUFBQUMsYUFBTSxFQUFDRixZQUFZLENBQUM7RUFDckMsSUFBQUcsU0FBQSxHQUF3QixJQUFBQyxlQUFRLEVBQUMsQ0FBQSxDQUFFLENBQUM7SUFBQUMsVUFBQSxPQUFBQyxlQUFBLGFBQUFILFNBQUE7SUFBM0JJLFdBQVcsR0FBQUYsVUFBQTtFQUVwQixJQUFNRyxjQUFjLEdBQUcsSUFBQU4sYUFBTSxFQUF1QixJQUFJLENBQUM7RUFDekQsSUFBTU8sY0FBYyxHQUFHLElBQUFQLGFBQU0sRUFBbUIsRUFBRSxDQUFDO0VBRW5ELElBQU1RLGFBQWEsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLFVBQUNDLE9BQXVCLEVBQUk7SUFDNURILGNBQWMsQ0FBQ0ksT0FBTyxDQUFDQyxJQUFJLENBQUNGLE9BQU8sQ0FBQztJQUVwQyxJQUFNRyxPQUFPLEdBQUdDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFBLENBQUU7SUFDakNULGNBQWMsQ0FBQ0ssT0FBTyxHQUFHRSxPQUFPO0lBRWhDQSxPQUFPLENBQUNHLElBQUksQ0FBQyxZQUFLO01BQ2hCLElBQUlWLGNBQWMsQ0FBQ0ssT0FBTyxLQUFLRSxPQUFPLEVBQUU7UUFDdEMsSUFBTUksU0FBUyxHQUFHVixjQUFjLENBQUNJLE9BQU87UUFDeEMsSUFBTU8sU0FBUyxHQUFHbkIsUUFBUSxDQUFDWSxPQUFPO1FBQ2xDSixjQUFjLENBQUNJLE9BQU8sR0FBRyxFQUFFO1FBRTNCTSxTQUFTLENBQUNFLE9BQU8sQ0FBQyxVQUFBQyxZQUFZLEVBQUc7VUFDL0JyQixRQUFRLENBQUNZLE9BQU8sR0FBR1MsWUFBWSxDQUFDckIsUUFBUSxDQUFDWSxPQUFPLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBRUZMLGNBQWMsQ0FBQ0ssT0FBTyxHQUFHLElBQUk7UUFFN0IsSUFBSU8sU0FBUyxLQUFLbkIsUUFBUSxDQUFDWSxPQUFPLEVBQUU7VUFDbENOLFdBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQztRQUNqQjtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQUFnQixnQkFBUyxFQUNQO0lBQUEsT0FBTSxZQUFLO01BQ1RmLGNBQWMsQ0FBQ0ssT0FBTyxHQUFHLElBQUk7SUFDL0IsQ0FBQztFQUFBLEdBQ0QsRUFBRSxDQUNIO0VBRUQsT0FBTyxDQUFDWixRQUFRLENBQUNZLE9BQU8sRUFBRUgsYUFBYSxDQUFDO0FBQzFDO0FBRUE7QUFDTSxTQUFVYyxjQUFjQSxDQUM1QnhCLFlBQW9CLEVBQUE7RUFFcEIsSUFBTXlCLFFBQVEsR0FBRyxJQUFBdkIsYUFBTSxFQUFlRixZQUFZLEtBQUEsSUFBQSxJQUFaQSxZQUFZLEtBQUEsS0FBQSxDQUFBLEdBQVpBLFlBQVksR0FBSSxJQUFJLENBQUM7RUFDM0QsSUFBTTBCLFVBQVUsR0FBRyxJQUFBeEIsYUFBTSxFQUF1QyxJQUFJLENBQUM7RUFFckUsU0FBU3lCLE9BQU9BLENBQUEsRUFBQTtJQUNkLElBQUlELFVBQVUsQ0FBQ2IsT0FBTyxJQUFJLElBQUksRUFBRTtNQUM5QmUsWUFBWSxDQUFDRixVQUFVLENBQUNiLE9BQU8sQ0FBQztNQUNoQ2EsVUFBVSxDQUFDYixPQUFPLEdBQUcsSUFBSTtJQUMzQjtFQUNGO0VBRUEsU0FBU2dCLFFBQVFBLENBQUNDLFFBQWUsRUFBQTtJQUMvQkwsUUFBUSxDQUFDWixPQUFPLEdBQUdpQixRQUFRO0lBQzNCSCxPQUFPLENBQUEsQ0FBRTtJQUVURCxVQUFVLENBQUNiLE9BQU8sR0FBR2tCLFVBQVUsQ0FBQyxZQUFLO01BQ25DTixRQUFRLENBQUNaLE9BQU8sR0FBRyxJQUFJO01BQ3ZCYSxVQUFVLENBQUNiLE9BQU8sR0FBRyxJQUFJO0lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDVDtFQUVBLFNBQVNtQixRQUFRQSxDQUFBLEVBQUE7SUFDZixPQUFPUCxRQUFRLENBQUNaLE9BQU87RUFDekI7RUFFQSxJQUFBVSxnQkFBUyxFQUFDO0lBQUEsT0FBTUksT0FBTztFQUFBLEdBQUUsRUFBRSxDQUFDO0VBRTVCLE9BQU8sQ0FBQ0UsUUFBUSxFQUFFRyxRQUFRLENBQUM7QUFDN0IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VMYXlvdXRTdGF0ZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogRXhlY3V0ZSBjb2RlIGJlZm9yZSBuZXh0IGZyYW1lIGJ1dCBhc3luYy5cbiAqXG4gKiBCYXRjaGVzIG11bHRpcGxlIHN0YXRlIHVwZGF0ZXMgaW50byBhIHNpbmdsZSBtaWNyb3Rhc2sgKHZpYSBgUHJvbWlzZS5yZXNvbHZlYCksXG4gKiByZWR1Y2luZyB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzIHdoZW4gbXVsdGlwbGUgdXBkYXRlcyBoYXBwZW4gc3luY2hyb25vdXNseS5cbiAqXG4gKiBAcGFyYW0gZGVmYXVsdFN0YXRlIFRoZSBpbml0aWFsIHN0YXRlIHZhbHVlXG4gKiBAcmV0dXJucyBBIHR1cGxlIG9mIGBbc3RhdGUsIHNldEZyYW1lU3RhdGVdYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMYXlvdXRTdGF0ZShkZWZhdWx0U3RhdGUpIHtcbiAgICBjb25zdCBzdGF0ZVJlZiA9IHVzZVJlZihkZWZhdWx0U3RhdGUpO1xuICAgIGNvbnN0IFssIGZvcmNlVXBkYXRlXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBsYXN0UHJvbWlzZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB1cGRhdGVCYXRjaFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3Qgc2V0RnJhbWVTdGF0ZSA9IHVzZUNhbGxiYWNrKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQucHVzaCh1cGRhdGVyKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID0gcHJvbWlzZTtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldkJhdGNoID0gdXBkYXRlQmF0Y2hSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSBzdGF0ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmV2QmF0Y2guZm9yRWFjaChiYXRjaFVwZGF0ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZVJlZi5jdXJyZW50ID0gYmF0Y2hVcGRhdGVyKHN0YXRlUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2U3RhdGUgIT09IHN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgICAgIGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gW3N0YXRlUmVmLmN1cnJlbnQsIHNldEZyYW1lU3RhdGVdO1xufVxuLyoqIExvY2sgZnJhbWUsIHdoZW4gZnJhbWUgcGFzcyByZXNldCB0aGUgbG9jay4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaW1lb3V0TG9jayhkZWZhdWx0U3RhdGUpIHtcbiAgICBjb25zdCBmcmFtZVJlZiA9IHVzZVJlZihkZWZhdWx0U3RhdGUgIT09IG51bGwgJiYgZGVmYXVsdFN0YXRlICE9PSB2b2lkIDAgPyBkZWZhdWx0U3RhdGUgOiBudWxsKTtcbiAgICBjb25zdCB0aW1lb3V0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGZ1bmN0aW9uIGNsZWFuVXAoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0UmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBuZXdTdGF0ZTtcbiAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgdGltZW91dFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiBmcmFtZVJlZi5jdXJyZW50O1xuICAgIH1cbiAgICB1c2VFZmZlY3QoKCkgPT4gY2xlYW5VcCwgW10pO1xuICAgIHJldHVybiBbc2V0U3RhdGUsIGdldFN0YXRlXTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,12 @@
1
+ type Fn<T extends unknown[], R> = (...args: T) => R;
2
+ /**
3
+ * A hook that returns a memoized version of a callback function.
4
+ * Unlike `useCallback`, it maintains referential equality across renders
5
+ * without requiring a dependency array, while always calling the latest
6
+ * version of the function.
7
+ *
8
+ * @param fn The function to memoize
9
+ * @returns A memoized function with stable reference
10
+ */
11
+ export default function useMemoizedFn<T extends unknown[], R>(fn: Fn<T, R>): Fn<T, R>;
12
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = useMemoizedFn;
7
+ var _react = require("react");
8
+ /**
9
+ * A hook that returns a memoized version of a callback function.
10
+ * Unlike `useCallback`, it maintains referential equality across renders
11
+ * without requiring a dependency array, while always calling the latest
12
+ * version of the function.
13
+ *
14
+ * @param fn The function to memoize
15
+ * @returns A memoized function with stable reference
16
+ */
17
+ function useMemoizedFn(fn) {
18
+ var fnRef = (0, _react.useRef)(fn);
19
+ fnRef.current = (0, _react.useMemo)(function () {
20
+ return fn;
21
+ }, [fn]);
22
+ var memoizedFn = (0, _react.useRef)(undefined);
23
+ if (!memoizedFn.current) {
24
+ memoizedFn.current = function () {
25
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ args[_key] = arguments[_key];
27
+ }
28
+ return fnRef.current.apply(this, args);
29
+ };
30
+ }
31
+ return memoizedFn.current;
32
+ }
33
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTWVtb2l6ZWRGbi9pbmRleC50cyIsImNvbXBvbmVudHMvdXNlTWVtb2l6ZWRGbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTWVtb2l6ZWRGbiIsImZuIiwiZm5SZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwidXNlTWVtbyIsIm1lbW9pemVkRm4iLCJ1bmRlZmluZWQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImFwcGx5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFJQTtBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURJYyxTQUFVQyxhQUFhQSxDQUF5QkMsRUFBWSxFQUFBO0VBQ3hFLElBQU1DLEtBQUssR0FBRyxJQUFBQyxhQUFNLEVBQUNGLEVBQUUsQ0FBQztFQUN4QkMsS0FBSyxDQUFDRSxPQUFPLEdBQUcsSUFBQUMsY0FBTyxFQUFDO0lBQUEsT0FBTUosRUFBRTtFQUFBLEdBQUUsQ0FBQ0EsRUFBRSxDQUFDLENBQUM7RUFFdkMsSUFBTUssVUFBVSxHQUFHLElBQUFILGFBQU0sRUFBdUJJLFNBQVMsQ0FBQztFQUMxRCxJQUFJLENBQUNELFVBQVUsQ0FBQ0YsT0FBTyxFQUFFO0lBQ3ZCRSxVQUFVLENBQUNGLE9BQU8sR0FBRyxZQUFtQztNQUFBLFNBQUFJLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQVBDLElBQU8sT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBUEYsSUFBTyxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQ3RELE9BQU9YLEtBQUssQ0FBQ0UsT0FBTyxDQUFDVSxLQUFLLENBQUMsSUFBSSxFQUFFSCxJQUFJLENBQUM7SUFDeEMsQ0FBQztFQUNIO0VBRUEsT0FBT0wsVUFBVSxDQUFDRixPQUFtQjtBQUN2QyIsImZpbGUiOiJjb21wb25lbnRzL3VzZU1lbW9pemVkRm4vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyBhIG1lbW9pemVkIHZlcnNpb24gb2YgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqIFVubGlrZSBgdXNlQ2FsbGJhY2tgLCBpdCBtYWludGFpbnMgcmVmZXJlbnRpYWwgZXF1YWxpdHkgYWNyb3NzIHJlbmRlcnNcbiAqIHdpdGhvdXQgcmVxdWlyaW5nIGEgZGVwZW5kZW5jeSBhcnJheSwgd2hpbGUgYWx3YXlzIGNhbGxpbmcgdGhlIGxhdGVzdFxuICogdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byBtZW1vaXplXG4gKiBAcmV0dXJucyBBIG1lbW9pemVkIGZ1bmN0aW9uIHdpdGggc3RhYmxlIHJlZmVyZW5jZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNZW1vaXplZEZuKGZuKSB7XG4gICAgY29uc3QgZm5SZWYgPSB1c2VSZWYoZm4pO1xuICAgIGZuUmVmLmN1cnJlbnQgPSB1c2VNZW1vKCgpID0+IGZuLCBbZm5dKTtcbiAgICBjb25zdCBtZW1vaXplZEZuID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgaWYgKCFtZW1vaXplZEZuLmN1cnJlbnQpIHtcbiAgICAgICAgbWVtb2l6ZWRGbi5jdXJyZW50ID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBmblJlZi5jdXJyZW50LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRGbi5jdXJyZW50O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns the last distinct value observed before the current `value`.
3
+ *
4
+ * Because the internal effect depends on `[value]`, the ref is only updated
5
+ * when `value` changes. That means this hook tracks the previous value on
6
+ * value-change boundaries (not every render).
7
+ *
8
+ * @param value The value to track
9
+ * @returns The previous distinct value, or `undefined` until one exists
10
+ */
11
+ export default function usePrevious<T>(value: T): T | undefined;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = usePrevious;
7
+ var _react = require("react");
8
+ /**
9
+ * Returns the last distinct value observed before the current `value`.
10
+ *
11
+ * Because the internal effect depends on `[value]`, the ref is only updated
12
+ * when `value` changes. That means this hook tracks the previous value on
13
+ * value-change boundaries (not every render).
14
+ *
15
+ * @param value The value to track
16
+ * @returns The previous distinct value, or `undefined` until one exists
17
+ */
18
+ function usePrevious(value) {
19
+ var ref = (0, _react.useRef)(undefined);
20
+ (0, _react.useEffect)(function () {
21
+ ref.current = value;
22
+ }, [value]);
23
+ return ref.current;
24
+ }
25
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlUHJldmlvdXMvaW5kZXgudHMiLCJjb21wb25lbnRzL3VzZVByZXZpb3VzL2luZGV4LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VQcmV2aW91cyIsInZhbHVlIiwicmVmIiwidXNlUmVmIiwidW5kZWZpbmVkIiwidXNlRWZmZWN0IiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURFYyxTQUFVQyxXQUFXQSxDQUFJQyxLQUFRLEVBQUE7RUFDN0MsSUFBTUMsR0FBRyxHQUFHLElBQUFDLGFBQU0sRUFBZ0JDLFNBQVMsQ0FBQztFQUU1QyxJQUFBQyxnQkFBUyxFQUFDLFlBQUs7SUFDYkgsR0FBRyxDQUFDSSxPQUFPLEdBQUdMLEtBQUs7RUFDckIsQ0FBQyxFQUFFLENBQUNBLEtBQUssQ0FBQyxDQUFDO0VBRVgsT0FBT0MsR0FBRyxDQUFDSSxPQUFPO0FBQ3BCIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlUHJldmlvdXMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBsYXN0IGRpc3RpbmN0IHZhbHVlIG9ic2VydmVkIGJlZm9yZSB0aGUgY3VycmVudCBgdmFsdWVgLlxuICpcbiAqIEJlY2F1c2UgdGhlIGludGVybmFsIGVmZmVjdCBkZXBlbmRzIG9uIGBbdmFsdWVdYCwgdGhlIHJlZiBpcyBvbmx5IHVwZGF0ZWRcbiAqIHdoZW4gYHZhbHVlYCBjaGFuZ2VzLiBUaGF0IG1lYW5zIHRoaXMgaG9vayB0cmFja3MgdGhlIHByZXZpb3VzIHZhbHVlIG9uXG4gKiB2YWx1ZS1jaGFuZ2UgYm91bmRhcmllcyAobm90IGV2ZXJ5IHJlbmRlcikuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0cmFja1xuICogQHJldHVybnMgVGhlIHByZXZpb3VzIGRpc3RpbmN0IHZhbHVlLCBvciBgdW5kZWZpbmVkYCB1bnRpbCBvbmUgZXhpc3RzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVByZXZpb3VzKHZhbHVlKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9LCBbdmFsdWVdKTtcbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,12 @@
1
+ import { type Dispatch, type SetStateAction } from 'react';
2
+ /**
3
+ * It is exactly the same as `React.useState`, but after the component is unmounted,
4
+ * the setState in the asynchronous callback will no longer be executed to avoid
5
+ * memory leakage caused by updating the state after the component is unmounted.
6
+ *
7
+ * @param initialState The initial state value or initializer function
8
+ * @returns A tuple of [state, setSafeState] similar to useState
9
+ */
10
+ declare function useSafeState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
11
+ declare function useSafeState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];
12
+ export default useSafeState;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ // eslint-disable-next-line no-redeclare
11
+ function useSafeState(initialState) {
12
+ var isMountedRef = (0, _react.useRef)(true);
13
+ var _useState = (0, _react.useState)(initialState),
14
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
15
+ state = _useState2[0],
16
+ setState = _useState2[1];
17
+ (0, _react.useEffect)(function () {
18
+ isMountedRef.current = true;
19
+ return function () {
20
+ isMountedRef.current = false;
21
+ };
22
+ }, []);
23
+ var setSafeState = (0, _react.useCallback)(function (value) {
24
+ if (isMountedRef.current) {
25
+ setState(value);
26
+ }
27
+ }, []);
28
+ return [state, setSafeState];
29
+ }
30
+ var _default = exports["default"] = useSafeState;
31
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlU2FmZVN0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VTYWZlU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJpc01vdW50ZWRSZWYiLCJ1c2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZSIsInNldFN0YXRlIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInNldFNhZmVTdGF0ZSIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBYUE7QUFDQSxTQUFTQyxZQUFZQSxDQUNuQkMsWUFBNEIsRUFBQTtFQUU1QixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsYUFBTSxFQUFDLElBQUksQ0FBQztFQUNqQyxJQUFBQyxTQUFBLEdBQTBCLElBQUFDLGVBQVEsRUFBZ0JKLFlBQXlDLENBQUM7SUFBQUssVUFBQSxPQUFBQyxlQUFBLGFBQUFILFNBQUE7SUFBckZJLEtBQUssR0FBQUYsVUFBQTtJQUFFRyxRQUFRLEdBQUFILFVBQUE7RUFFdEIsSUFBQUksZ0JBQVMsRUFBQyxZQUFLO0lBQ2JSLFlBQVksQ0FBQ1MsT0FBTyxHQUFHLElBQUk7SUFDM0IsT0FBTyxZQUFLO01BQ1ZULFlBQVksQ0FBQ1MsT0FBTyxHQUFHLEtBQUs7SUFDOUIsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsa0JBQVcsRUFBMEMsVUFBQUMsS0FBSyxFQUFHO0lBQ2hGLElBQUlaLFlBQVksQ0FBQ1MsT0FBTyxFQUFFO01BQ3hCRixRQUFRLENBQUNLLEtBQUssQ0FBQztJQUNqQjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPLENBQUNOLEtBQUssRUFBRUksWUFBWSxDQUFDO0FBQzlCO0FBQUMsSUFBQUcsUUFBQSxHQUFBQyxPQUFBLGNBRWNoQixZQUFZIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlU2FmZVN0YXRlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,14 @@
1
+ import { type SetStateAction } from 'react';
2
+ type GetState<T> = () => T;
3
+ type SetState<T> = (value: SetStateAction<T>) => void;
4
+ /**
5
+ * Same as `React.useState` but will always get the latest state.
6
+ * This is useful when React merges multiple state updates into one.
7
+ * e.g. `onTransitionEnd` triggers multiple events at once that will be merged
8
+ * into a single state update in React.
9
+ *
10
+ * @param initialState The initial state value or initializer function
11
+ * @returns A tuple of [getState, setState] where getState always returns the latest value
12
+ */
13
+ export default function useSyncState<T>(initialState: T | (() => T)): [GetState<T>, SetState<T>];
14
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = useSyncState;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _useEventCallback = _interopRequireDefault(require("../useEventCallback"));
11
+ /** Sentinel value distinguishing "not yet initialized" from any valid state, including `null`. */
12
+ var UNINITIALIZED = Symbol('useSyncState.uninitialized');
13
+ /**
14
+ * Same as `React.useState` but will always get the latest state.
15
+ * This is useful when React merges multiple state updates into one.
16
+ * e.g. `onTransitionEnd` triggers multiple events at once that will be merged
17
+ * into a single state update in React.
18
+ *
19
+ * @param initialState The initial state value or initializer function
20
+ * @returns A tuple of [getState, setState] where getState always returns the latest value
21
+ */
22
+ function useSyncState(initialState) {
23
+ var stateRef = (0, _react.useRef)(UNINITIALIZED);
24
+ // Initialize ref on first render
25
+ if (stateRef.current === UNINITIALIZED) {
26
+ stateRef.current = typeof initialState === 'function' ? initialState() : initialState;
27
+ }
28
+ var _useState = (0, _react.useState)({}),
29
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
30
+ forceUpdate = _useState2[1];
31
+ var getState = (0, _useEventCallback["default"])(function () {
32
+ return stateRef.current;
33
+ });
34
+ var setState = (0, _useEventCallback["default"])(function (value) {
35
+ var prevState = stateRef.current;
36
+ var nextState = typeof value === 'function' ? value(prevState) : value;
37
+ if (!Object.is(prevState, nextState)) {
38
+ stateRef.current = nextState;
39
+ forceUpdate({});
40
+ }
41
+ });
42
+ return [getState, setState];
43
+ }
44
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlU3luY1N0YXRlL2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VTeW5jU3RhdGUvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsIl91c2VFdmVudENhbGxiYWNrIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIlVOSU5JVElBTElaRUQiLCJTeW1ib2wiLCJ1c2VTeW5jU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzdGF0ZVJlZiIsInVzZVJlZiIsImN1cnJlbnQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJmb3JjZVVwZGF0ZSIsImdldFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsInNldFN0YXRlIiwidmFsdWUiLCJwcmV2U3RhdGUiLCJuZXh0U3RhdGUiLCJPYmplY3QiLCJpcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBS0E7QUFDQSxJQUFNRyxhQUFhLEdBQUdDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztBQUUxRDtBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURNYyxTQUFVQyxZQUFZQSxDQUFJQyxZQUEyQixFQUFBO0VBQ2pFLElBQU1DLFFBQVEsR0FBRyxJQUFBQyxhQUFNLEVBQTJCTCxhQUFhLENBQUM7RUFFaEU7RUFDQSxJQUFJSSxRQUFRLENBQUNFLE9BQU8sS0FBS04sYUFBYSxFQUFFO0lBQ3RDSSxRQUFRLENBQUNFLE9BQU8sR0FDZCxPQUFPSCxZQUFZLEtBQUssVUFBVSxHQUFJQSxZQUF3QixDQUFBLENBQUUsR0FBR0EsWUFBWTtFQUNuRjtFQUVBLElBQUFJLFNBQUEsR0FBd0IsSUFBQUMsZUFBUSxFQUFDLENBQUEsQ0FBRSxDQUFDO0lBQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQTNCSSxXQUFXLEdBQUFGLFVBQUE7RUFFcEIsSUFBTUcsUUFBUSxHQUFHLElBQUFDLDRCQUFnQixFQUFRO0lBQUEsT0FBTVQsUUFBUSxDQUFDRSxPQUFZO0VBQUEsRUFBQztFQUVyRSxJQUFNUSxRQUFRLEdBQUcsSUFBQUQsNEJBQWdCLEVBQTRCLFVBQUFFLEtBQUssRUFBRztJQUNuRSxJQUFNQyxTQUFTLEdBQUdaLFFBQVEsQ0FBQ0UsT0FBWTtJQUN2QyxJQUFNVyxTQUFTLEdBQUcsT0FBT0YsS0FBSyxLQUFLLFVBQVUsR0FBSUEsS0FBd0IsQ0FBQ0MsU0FBUyxDQUFDLEdBQUdELEtBQUs7SUFFNUYsSUFBSSxDQUFDRyxNQUFNLENBQUNDLEVBQUUsQ0FBQ0gsU0FBUyxFQUFFQyxTQUFTLENBQUMsRUFBRTtNQUNwQ2IsUUFBUSxDQUFDRSxPQUFPLEdBQUdXLFNBQVM7TUFDNUJOLFdBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQztJQUNqQjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8sQ0FBQ0MsUUFBUSxFQUFFRSxRQUFRLENBQUM7QUFDN0IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VTeW5jU3RhdGUvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91c2VFdmVudENhbGxiYWNrJztcbi8qKiBTZW50aW5lbCB2YWx1ZSBkaXN0aW5ndWlzaGluZyBcIm5vdCB5ZXQgaW5pdGlhbGl6ZWRcIiBmcm9tIGFueSB2YWxpZCBzdGF0ZSwgaW5jbHVkaW5nIGBudWxsYC4gKi9cbmNvbnN0IFVOSU5JVElBTElaRUQgPSBTeW1ib2woJ3VzZVN5bmNTdGF0ZS51bmluaXRpYWxpemVkJyk7XG4vKipcbiAqIFNhbWUgYXMgYFJlYWN0LnVzZVN0YXRlYCBidXQgd2lsbCBhbHdheXMgZ2V0IHRoZSBsYXRlc3Qgc3RhdGUuXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIFJlYWN0IG1lcmdlcyBtdWx0aXBsZSBzdGF0ZSB1cGRhdGVzIGludG8gb25lLlxuICogZS5nLiBgb25UcmFuc2l0aW9uRW5kYCB0cmlnZ2VycyBtdWx0aXBsZSBldmVudHMgYXQgb25jZSB0aGF0IHdpbGwgYmUgbWVyZ2VkXG4gKiBpbnRvIGEgc2luZ2xlIHN0YXRlIHVwZGF0ZSBpbiBSZWFjdC5cbiAqXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlIFRoZSBpbml0aWFsIHN0YXRlIHZhbHVlIG9yIGluaXRpYWxpemVyIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyBBIHR1cGxlIG9mIFtnZXRTdGF0ZSwgc2V0U3RhdGVdIHdoZXJlIGdldFN0YXRlIGFsd2F5cyByZXR1cm5zIHRoZSBsYXRlc3QgdmFsdWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU3luY1N0YXRlKGluaXRpYWxTdGF0ZSkge1xuICAgIGNvbnN0IHN0YXRlUmVmID0gdXNlUmVmKFVOSU5JVElBTElaRUQpO1xuICAgIC8vIEluaXRpYWxpemUgcmVmIG9uIGZpcnN0IHJlbmRlclxuICAgIGlmIChzdGF0ZVJlZi5jdXJyZW50ID09PSBVTklOSVRJQUxJWkVEKSB7XG4gICAgICAgIHN0YXRlUmVmLmN1cnJlbnQgPVxuICAgICAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IGluaXRpYWxTdGF0ZSgpIDogaW5pdGlhbFN0YXRlO1xuICAgIH1cbiAgICBjb25zdCBbLCBmb3JjZVVwZGF0ZV0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgZ2V0U3RhdGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHN0YXRlUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHNldFN0YXRlID0gdXNlRXZlbnRDYWxsYmFjayh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHN0YXRlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHByZXZTdGF0ZSkgOiB2YWx1ZTtcbiAgICAgICAgaWYgKCFPYmplY3QuaXMocHJldlN0YXRlLCBuZXh0U3RhdGUpKSB7XG4gICAgICAgICAgICBzdGF0ZVJlZi5jdXJyZW50ID0gbmV4dFN0YXRlO1xuICAgICAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIFtnZXRTdGF0ZSwgc2V0U3RhdGVdO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,9 @@
1
+ import { type DependencyList, type EffectCallback } from 'react';
2
+ /**
3
+ * A hook identical to `useEffect`, but it skips the effect on the initial mount
4
+ * and only runs on subsequent updates.
5
+ *
6
+ * @param effect The effect callback to run on updates
7
+ * @param deps The dependency array
8
+ */
9
+ export default function useUpdateEffect(effect: EffectCallback, deps?: DependencyList): void;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = useUpdateEffect;
7
+ var _react = require("react");
8
+ /**
9
+ * A hook identical to `useEffect`, but it skips the effect on the initial mount
10
+ * and only runs on subsequent updates.
11
+ *
12
+ * @param effect The effect callback to run on updates
13
+ * @param deps The dependency array
14
+ */
15
+ function useUpdateEffect(effect, deps) {
16
+ var isMounted = (0, _react.useRef)(false);
17
+ (0, _react.useEffect)(function () {
18
+ if (!isMounted.current) {
19
+ isMounted.current = true;
20
+ return;
21
+ }
22
+ return effect();
23
+ }, deps);
24
+ }
25
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlVXBkYXRlRWZmZWN0L2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VVcGRhdGVFZmZlY3QvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsInVzZVVwZGF0ZUVmZmVjdCIsImVmZmVjdCIsImRlcHMiLCJpc01vdW50ZWQiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBREVjLFNBQVVDLGVBQWVBLENBQUNDLE1BQXNCLEVBQUVDLElBQXFCLEVBQUE7RUFDbkYsSUFBTUMsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBQyxLQUFLLENBQUM7RUFFL0IsSUFBQUMsZ0JBQVMsRUFBQyxZQUFLO0lBQ2IsSUFBSSxDQUFDRixTQUFTLENBQUNHLE9BQU8sRUFBRTtNQUN0QkgsU0FBUyxDQUFDRyxPQUFPLEdBQUcsSUFBSTtNQUN4QjtJQUNGO0lBQ0EsT0FBT0wsTUFBTSxDQUFBLENBQUU7RUFDakIsQ0FBQyxFQUFFQyxJQUFJLENBQUM7QUFDViIsImZpbGUiOiJjb21wb25lbnRzL3VzZVVwZGF0ZUVmZmVjdC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEEgaG9vayBpZGVudGljYWwgdG8gYHVzZUVmZmVjdGAsIGJ1dCBpdCBza2lwcyB0aGUgZWZmZWN0IG9uIHRoZSBpbml0aWFsIG1vdW50XG4gKiBhbmQgb25seSBydW5zIG9uIHN1YnNlcXVlbnQgdXBkYXRlcy5cbiAqXG4gKiBAcGFyYW0gZWZmZWN0IFRoZSBlZmZlY3QgY2FsbGJhY2sgdG8gcnVuIG9uIHVwZGF0ZXNcbiAqIEBwYXJhbSBkZXBzIFRoZSBkZXBlbmRlbmN5IGFycmF5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVVwZGF0ZUVmZmVjdChlZmZlY3QsIGRlcHMpIHtcbiAgICBjb25zdCBpc01vdW50ZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNNb3VudGVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlzTW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWZmZWN0KCk7XG4gICAgfSwgZGVwcyk7XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==