icode-hooks 0.3.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 (311) hide show
  1. package/README.md +65 -0
  2. package/dist/icode-hooks.js +1 -0
  3. package/es/createUpdateEffect/index.d.ts +4 -0
  4. package/es/createUpdateEffect/index.js +22 -0
  5. package/es/index.d.ts +9 -0
  6. package/es/index.js +9 -0
  7. package/es/useBoolean/index.d.ts +8 -0
  8. package/es/useBoolean/index.js +27 -0
  9. package/es/useCreation/index.d.ts +2 -0
  10. package/es/useCreation/index.js +21 -0
  11. package/es/useLatest/index.d.ts +3 -0
  12. package/es/useLatest/index.js +7 -0
  13. package/es/useMemoizedFn/index.d.ts +3 -0
  14. package/es/useMemoizedFn/index.js +31 -0
  15. package/es/useMount/index.d.ts +2 -0
  16. package/es/useMount/index.js +15 -0
  17. package/es/usePrescription/api.d.ts +7 -0
  18. package/es/usePrescription/api.js +17 -0
  19. package/es/usePrescription/index.d.ts +36 -0
  20. package/es/usePrescription/index.js +119 -0
  21. package/es/usePrescription/types.d.ts +15 -0
  22. package/es/usePrescription/types.js +1 -0
  23. package/es/useRequest/index.d.ts +4 -0
  24. package/es/useRequest/index.js +4 -0
  25. package/es/useRequest/routes-doc/use-request/demos/basic/cancel.d.ts +3 -0
  26. package/es/useRequest/routes-doc/use-request/demos/basic/cancel.js +56 -0
  27. package/es/useRequest/routes-doc/use-request/demos/basic/default.d.ts +6 -0
  28. package/es/useRequest/routes-doc/use-request/demos/basic/default.js +30 -0
  29. package/es/useRequest/routes-doc/use-request/demos/basic/lifeCycle.d.ts +3 -0
  30. package/es/useRequest/routes-doc/use-request/demos/basic/lifeCycle.js +55 -0
  31. package/es/useRequest/routes-doc/use-request/demos/basic/manualRun.d.ts +7 -0
  32. package/es/useRequest/routes-doc/use-request/demos/basic/manualRun.js +53 -0
  33. package/es/useRequest/routes-doc/use-request/demos/basic/manualRunAsync.d.ts +7 -0
  34. package/es/useRequest/routes-doc/use-request/demos/basic/manualRunAsync.js +67 -0
  35. package/es/useRequest/routes-doc/use-request/demos/basic/mutate.d.ts +6 -0
  36. package/es/useRequest/routes-doc/use-request/demos/basic/mutate.js +68 -0
  37. package/es/useRequest/routes-doc/use-request/demos/basic/params.d.ts +3 -0
  38. package/es/useRequest/routes-doc/use-request/demos/basic/params.js +44 -0
  39. package/es/useRequest/routes-doc/use-request/demos/basic/refresh.d.ts +6 -0
  40. package/es/useRequest/routes-doc/use-request/demos/basic/refresh.js +35 -0
  41. package/es/useRequest/routes-doc/use-request/demos/cache/cacheKey.d.ts +3 -0
  42. package/es/useRequest/routes-doc/use-request/demos/cache/cacheKey.js +41 -0
  43. package/es/useRequest/routes-doc/use-request/demos/cache/clearCache.d.ts +3 -0
  44. package/es/useRequest/routes-doc/use-request/demos/cache/clearCache.js +80 -0
  45. package/es/useRequest/routes-doc/use-request/demos/cache/params.d.ts +3 -0
  46. package/es/useRequest/routes-doc/use-request/demos/cache/params.js +65 -0
  47. package/es/useRequest/routes-doc/use-request/demos/cache/setCache.d.ts +3 -0
  48. package/es/useRequest/routes-doc/use-request/demos/cache/setCache.js +48 -0
  49. package/es/useRequest/routes-doc/use-request/demos/cache/share.d.ts +3 -0
  50. package/es/useRequest/routes-doc/use-request/demos/cache/share.js +37 -0
  51. package/es/useRequest/routes-doc/use-request/demos/cache/staleTime.d.ts +3 -0
  52. package/es/useRequest/routes-doc/use-request/demos/cache/staleTime.js +43 -0
  53. package/es/useRequest/routes-doc/use-request/demos/debounce/debounce.d.ts +3 -0
  54. package/es/useRequest/routes-doc/use-request/demos/debounce/debounce.js +41 -0
  55. package/es/useRequest/routes-doc/use-request/demos/index/default.d.ts +3 -0
  56. package/es/useRequest/routes-doc/use-request/demos/index/default.js +23 -0
  57. package/es/useRequest/routes-doc/use-request/demos/index/manual.d.ts +7 -0
  58. package/es/useRequest/routes-doc/use-request/demos/index/manual.js +50 -0
  59. package/es/useRequest/routes-doc/use-request/demos/loadingDelay/loadingDelay.d.ts +3 -0
  60. package/es/useRequest/routes-doc/use-request/demos/loadingDelay/loadingDelay.js +29 -0
  61. package/es/useRequest/routes-doc/use-request/demos/polling/polling.d.ts +3 -0
  62. package/es/useRequest/routes-doc/use-request/demos/polling/polling.js +31 -0
  63. package/es/useRequest/routes-doc/use-request/demos/polling/pollingError.d.ts +3 -0
  64. package/es/useRequest/routes-doc/use-request/demos/polling/pollingError.js +37 -0
  65. package/es/useRequest/routes-doc/use-request/demos/ready/manualReady.d.ts +3 -0
  66. package/es/useRequest/routes-doc/use-request/demos/ready/manualReady.js +36 -0
  67. package/es/useRequest/routes-doc/use-request/demos/ready/ready.d.ts +3 -0
  68. package/es/useRequest/routes-doc/use-request/demos/ready/ready.js +28 -0
  69. package/es/useRequest/routes-doc/use-request/demos/refresh/refreshDeps.d.ts +3 -0
  70. package/es/useRequest/routes-doc/use-request/demos/refresh/refreshDeps.js +60 -0
  71. package/es/useRequest/routes-doc/use-request/demos/refreshOnWindowFocus/refreshOnWindowFocus.d.ts +3 -0
  72. package/es/useRequest/routes-doc/use-request/demos/refreshOnWindowFocus/refreshOnWindowFocus.js +18 -0
  73. package/es/useRequest/routes-doc/use-request/demos/retry/retry.d.ts +3 -0
  74. package/es/useRequest/routes-doc/use-request/demos/retry/retry.js +42 -0
  75. package/es/useRequest/routes-doc/use-request/demos/throttle/throttle.d.ts +3 -0
  76. package/es/useRequest/routes-doc/use-request/demos/throttle/throttle.js +41 -0
  77. package/es/useRequest/src/Fetch.d.ts +20 -0
  78. package/es/useRequest/src/Fetch.js +161 -0
  79. package/es/useRequest/src/plugins/useAutoRunPlugin.d.ts +3 -0
  80. package/es/useRequest/src/plugins/useAutoRunPlugin.js +56 -0
  81. package/es/useRequest/src/plugins/useCachePlugin.d.ts +3 -0
  82. package/es/useRequest/src/plugins/useCachePlugin.js +143 -0
  83. package/es/useRequest/src/plugins/useDebouncePlugin.d.ts +3 -0
  84. package/es/useRequest/src/plugins/useDebouncePlugin.js +61 -0
  85. package/es/useRequest/src/plugins/useLoadingDelayPlugin.d.ts +3 -0
  86. package/es/useRequest/src/plugins/useLoadingDelayPlugin.js +40 -0
  87. package/es/useRequest/src/plugins/usePollingPlugin.d.ts +3 -0
  88. package/es/useRequest/src/plugins/usePollingPlugin.js +65 -0
  89. package/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.d.ts +3 -0
  90. package/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.js +30 -0
  91. package/es/useRequest/src/plugins/useRetryPlugin.d.ts +3 -0
  92. package/es/useRequest/src/plugins/useRetryPlugin.js +45 -0
  93. package/es/useRequest/src/plugins/useThrottlePlugin.d.ts +3 -0
  94. package/es/useRequest/src/plugins/useThrottlePlugin.js +53 -0
  95. package/es/useRequest/src/types.d.ts +73 -0
  96. package/es/useRequest/src/types.js +1 -0
  97. package/es/useRequest/src/useRequest.d.ts +3 -0
  98. package/es/useRequest/src/useRequest.js +14 -0
  99. package/es/useRequest/src/useRequestImplement.d.ts +5 -0
  100. package/es/useRequest/src/useRequestImplement.js +72 -0
  101. package/es/useRequest/src/utils/cache.d.ts +14 -0
  102. package/es/useRequest/src/utils/cache.js +32 -0
  103. package/es/useRequest/src/utils/cachePromise.d.ts +4 -0
  104. package/es/useRequest/src/utils/cachePromise.js +17 -0
  105. package/es/useRequest/src/utils/cacheSubscribe.d.ts +4 -0
  106. package/es/useRequest/src/utils/cacheSubscribe.js +19 -0
  107. package/es/useRequest/src/utils/isDocumentVisible.d.ts +1 -0
  108. package/es/useRequest/src/utils/isDocumentVisible.js +7 -0
  109. package/es/useRequest/src/utils/isOnline.d.ts +1 -0
  110. package/es/useRequest/src/utils/isOnline.js +7 -0
  111. package/es/useRequest/src/utils/limit.d.ts +1 -0
  112. package/es/useRequest/src/utils/limit.js +17 -0
  113. package/es/useRequest/src/utils/subscribeFocus.d.ts +3 -0
  114. package/es/useRequest/src/utils/subscribeFocus.js +27 -0
  115. package/es/useRequest/src/utils/subscribeReVisible.d.ts +3 -0
  116. package/es/useRequest/src/utils/subscribeReVisible.js +21 -0
  117. package/es/useToggle/index.d.ts +10 -0
  118. package/es/useToggle/index.js +41 -0
  119. package/es/useUnmount/index.d.ts +2 -0
  120. package/es/useUnmount/index.js +17 -0
  121. package/es/useUpdate/index.d.ts +2 -0
  122. package/es/useUpdate/index.js +10 -0
  123. package/es/useUpdateEffect/index.d.ts +3 -0
  124. package/es/useUpdateEffect/index.js +3 -0
  125. package/es/utils/createEffectWithTarget.d.ts +4 -0
  126. package/es/utils/createEffectWithTarget.js +48 -0
  127. package/es/utils/depsAreSame.d.ts +2 -0
  128. package/es/utils/depsAreSame.js +8 -0
  129. package/es/utils/depsEqual.d.ts +2 -0
  130. package/es/utils/depsEqual.js +11 -0
  131. package/es/utils/domTarget.d.ts +6 -0
  132. package/es/utils/domTarget.js +20 -0
  133. package/es/utils/getDocumentOrShadow.d.ts +3 -0
  134. package/es/utils/getDocumentOrShadow.js +28 -0
  135. package/es/utils/index.d.ts +6 -0
  136. package/es/utils/index.js +18 -0
  137. package/es/utils/isAppleDevice.d.ts +2 -0
  138. package/es/utils/isAppleDevice.js +3 -0
  139. package/es/utils/isBrowser.d.ts +2 -0
  140. package/es/utils/isBrowser.js +2 -0
  141. package/es/utils/isDev.d.ts +2 -0
  142. package/es/utils/isDev.js +3 -0
  143. package/es/utils/lodash-polyfill.d.ts +2 -0
  144. package/es/utils/lodash-polyfill.js +11 -0
  145. package/es/utils/testingHelpers.d.ts +2 -0
  146. package/es/utils/testingHelpers.js +19 -0
  147. package/es/utils/tests.d.ts +4 -0
  148. package/es/utils/tests.js +12 -0
  149. package/es/utils/useDeepCompareWithTarget.d.ts +4 -0
  150. package/es/utils/useDeepCompareWithTarget.js +14 -0
  151. package/es/utils/useEffectWithTarget.d.ts +2 -0
  152. package/es/utils/useEffectWithTarget.js +5 -0
  153. package/es/utils/useIsomorphicLayoutEffectWithTarget.d.ts +2 -0
  154. package/es/utils/useIsomorphicLayoutEffectWithTarget.js +5 -0
  155. package/es/utils/useLayoutEffectWithTarget.d.ts +2 -0
  156. package/es/utils/useLayoutEffectWithTarget.js +4 -0
  157. package/lib/createUpdateEffect/index.d.ts +4 -0
  158. package/lib/createUpdateEffect/index.js +28 -0
  159. package/lib/index.d.ts +9 -0
  160. package/lib/index.js +69 -0
  161. package/lib/useBoolean/index.d.ts +8 -0
  162. package/lib/useBoolean/index.js +33 -0
  163. package/lib/useCreation/index.d.ts +2 -0
  164. package/lib/useCreation/index.js +28 -0
  165. package/lib/useLatest/index.d.ts +3 -0
  166. package/lib/useLatest/index.js +13 -0
  167. package/lib/useMemoizedFn/index.d.ts +3 -0
  168. package/lib/useMemoizedFn/index.js +40 -0
  169. package/lib/useMount/index.d.ts +2 -0
  170. package/lib/useMount/index.js +23 -0
  171. package/lib/usePrescription/api.d.ts +7 -0
  172. package/lib/usePrescription/api.js +23 -0
  173. package/lib/usePrescription/index.d.ts +36 -0
  174. package/lib/usePrescription/index.js +127 -0
  175. package/lib/usePrescription/types.d.ts +15 -0
  176. package/lib/usePrescription/types.js +5 -0
  177. package/lib/useRequest/index.d.ts +4 -0
  178. package/lib/useRequest/index.js +16 -0
  179. package/lib/useRequest/routes-doc/use-request/demos/basic/cancel.d.ts +3 -0
  180. package/lib/useRequest/routes-doc/use-request/demos/basic/cancel.js +65 -0
  181. package/lib/useRequest/routes-doc/use-request/demos/basic/default.d.ts +6 -0
  182. package/lib/useRequest/routes-doc/use-request/demos/basic/default.js +38 -0
  183. package/lib/useRequest/routes-doc/use-request/demos/basic/lifeCycle.d.ts +3 -0
  184. package/lib/useRequest/routes-doc/use-request/demos/basic/lifeCycle.js +64 -0
  185. package/lib/useRequest/routes-doc/use-request/demos/basic/manualRun.d.ts +7 -0
  186. package/lib/useRequest/routes-doc/use-request/demos/basic/manualRun.js +63 -0
  187. package/lib/useRequest/routes-doc/use-request/demos/basic/manualRunAsync.d.ts +7 -0
  188. package/lib/useRequest/routes-doc/use-request/demos/basic/manualRunAsync.js +77 -0
  189. package/lib/useRequest/routes-doc/use-request/demos/basic/mutate.d.ts +6 -0
  190. package/lib/useRequest/routes-doc/use-request/demos/basic/mutate.js +78 -0
  191. package/lib/useRequest/routes-doc/use-request/demos/basic/params.d.ts +3 -0
  192. package/lib/useRequest/routes-doc/use-request/demos/basic/params.js +53 -0
  193. package/lib/useRequest/routes-doc/use-request/demos/basic/refresh.d.ts +6 -0
  194. package/lib/useRequest/routes-doc/use-request/demos/basic/refresh.js +45 -0
  195. package/lib/useRequest/routes-doc/use-request/demos/cache/cacheKey.d.ts +3 -0
  196. package/lib/useRequest/routes-doc/use-request/demos/cache/cacheKey.js +48 -0
  197. package/lib/useRequest/routes-doc/use-request/demos/cache/clearCache.d.ts +3 -0
  198. package/lib/useRequest/routes-doc/use-request/demos/cache/clearCache.js +87 -0
  199. package/lib/useRequest/routes-doc/use-request/demos/cache/params.d.ts +3 -0
  200. package/lib/useRequest/routes-doc/use-request/demos/cache/params.js +74 -0
  201. package/lib/useRequest/routes-doc/use-request/demos/cache/setCache.d.ts +3 -0
  202. package/lib/useRequest/routes-doc/use-request/demos/cache/setCache.js +55 -0
  203. package/lib/useRequest/routes-doc/use-request/demos/cache/share.d.ts +3 -0
  204. package/lib/useRequest/routes-doc/use-request/demos/cache/share.js +44 -0
  205. package/lib/useRequest/routes-doc/use-request/demos/cache/staleTime.d.ts +3 -0
  206. package/lib/useRequest/routes-doc/use-request/demos/cache/staleTime.js +50 -0
  207. package/lib/useRequest/routes-doc/use-request/demos/debounce/debounce.d.ts +3 -0
  208. package/lib/useRequest/routes-doc/use-request/demos/debounce/debounce.js +48 -0
  209. package/lib/useRequest/routes-doc/use-request/demos/index/default.d.ts +3 -0
  210. package/lib/useRequest/routes-doc/use-request/demos/index/default.js +30 -0
  211. package/lib/useRequest/routes-doc/use-request/demos/index/manual.d.ts +7 -0
  212. package/lib/useRequest/routes-doc/use-request/demos/index/manual.js +60 -0
  213. package/lib/useRequest/routes-doc/use-request/demos/loadingDelay/loadingDelay.d.ts +3 -0
  214. package/lib/useRequest/routes-doc/use-request/demos/loadingDelay/loadingDelay.js +36 -0
  215. package/lib/useRequest/routes-doc/use-request/demos/polling/polling.d.ts +3 -0
  216. package/lib/useRequest/routes-doc/use-request/demos/polling/polling.js +38 -0
  217. package/lib/useRequest/routes-doc/use-request/demos/polling/pollingError.d.ts +3 -0
  218. package/lib/useRequest/routes-doc/use-request/demos/polling/pollingError.js +44 -0
  219. package/lib/useRequest/routes-doc/use-request/demos/ready/manualReady.d.ts +3 -0
  220. package/lib/useRequest/routes-doc/use-request/demos/ready/manualReady.js +43 -0
  221. package/lib/useRequest/routes-doc/use-request/demos/ready/ready.d.ts +3 -0
  222. package/lib/useRequest/routes-doc/use-request/demos/ready/ready.js +35 -0
  223. package/lib/useRequest/routes-doc/use-request/demos/refresh/refreshDeps.d.ts +3 -0
  224. package/lib/useRequest/routes-doc/use-request/demos/refresh/refreshDeps.js +69 -0
  225. package/lib/useRequest/routes-doc/use-request/demos/refreshOnWindowFocus/refreshOnWindowFocus.d.ts +3 -0
  226. package/lib/useRequest/routes-doc/use-request/demos/refreshOnWindowFocus/refreshOnWindowFocus.js +25 -0
  227. package/lib/useRequest/routes-doc/use-request/demos/retry/retry.d.ts +3 -0
  228. package/lib/useRequest/routes-doc/use-request/demos/retry/retry.js +51 -0
  229. package/lib/useRequest/routes-doc/use-request/demos/throttle/throttle.d.ts +3 -0
  230. package/lib/useRequest/routes-doc/use-request/demos/throttle/throttle.js +48 -0
  231. package/lib/useRequest/src/Fetch.d.ts +20 -0
  232. package/lib/useRequest/src/Fetch.js +168 -0
  233. package/lib/useRequest/src/plugins/useAutoRunPlugin.d.ts +3 -0
  234. package/lib/useRequest/src/plugins/useAutoRunPlugin.js +63 -0
  235. package/lib/useRequest/src/plugins/useCachePlugin.d.ts +3 -0
  236. package/lib/useRequest/src/plugins/useCachePlugin.js +150 -0
  237. package/lib/useRequest/src/plugins/useDebouncePlugin.d.ts +3 -0
  238. package/lib/useRequest/src/plugins/useDebouncePlugin.js +67 -0
  239. package/lib/useRequest/src/plugins/useLoadingDelayPlugin.d.ts +3 -0
  240. package/lib/useRequest/src/plugins/useLoadingDelayPlugin.js +46 -0
  241. package/lib/useRequest/src/plugins/usePollingPlugin.d.ts +3 -0
  242. package/lib/useRequest/src/plugins/usePollingPlugin.js +72 -0
  243. package/lib/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.d.ts +3 -0
  244. package/lib/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.js +37 -0
  245. package/lib/useRequest/src/plugins/useRetryPlugin.d.ts +3 -0
  246. package/lib/useRequest/src/plugins/useRetryPlugin.js +51 -0
  247. package/lib/useRequest/src/plugins/useThrottlePlugin.d.ts +3 -0
  248. package/lib/useRequest/src/plugins/useThrottlePlugin.js +59 -0
  249. package/lib/useRequest/src/types.d.ts +73 -0
  250. package/lib/useRequest/src/types.js +5 -0
  251. package/lib/useRequest/src/useRequest.d.ts +3 -0
  252. package/lib/useRequest/src/useRequest.js +21 -0
  253. package/lib/useRequest/src/useRequestImplement.d.ts +5 -0
  254. package/lib/useRequest/src/useRequestImplement.js +80 -0
  255. package/lib/useRequest/src/utils/cache.d.ts +14 -0
  256. package/lib/useRequest/src/utils/cache.js +37 -0
  257. package/lib/useRequest/src/utils/cachePromise.d.ts +4 -0
  258. package/lib/useRequest/src/utils/cachePromise.js +22 -0
  259. package/lib/useRequest/src/utils/cacheSubscribe.d.ts +4 -0
  260. package/lib/useRequest/src/utils/cacheSubscribe.js +24 -0
  261. package/lib/useRequest/src/utils/isDocumentVisible.d.ts +1 -0
  262. package/lib/useRequest/src/utils/isDocumentVisible.js +14 -0
  263. package/lib/useRequest/src/utils/isOnline.d.ts +1 -0
  264. package/lib/useRequest/src/utils/isOnline.js +14 -0
  265. package/lib/useRequest/src/utils/limit.d.ts +1 -0
  266. package/lib/useRequest/src/utils/limit.js +23 -0
  267. package/lib/useRequest/src/utils/subscribeFocus.d.ts +3 -0
  268. package/lib/useRequest/src/utils/subscribeFocus.js +35 -0
  269. package/lib/useRequest/src/utils/subscribeReVisible.d.ts +3 -0
  270. package/lib/useRequest/src/utils/subscribeReVisible.js +28 -0
  271. package/lib/useToggle/index.d.ts +10 -0
  272. package/lib/useToggle/index.js +47 -0
  273. package/lib/useUnmount/index.d.ts +2 -0
  274. package/lib/useUnmount/index.js +25 -0
  275. package/lib/useUpdate/index.d.ts +2 -0
  276. package/lib/useUpdate/index.js +16 -0
  277. package/lib/useUpdateEffect/index.d.ts +3 -0
  278. package/lib/useUpdateEffect/index.js +9 -0
  279. package/lib/utils/createEffectWithTarget.d.ts +4 -0
  280. package/lib/utils/createEffectWithTarget.js +55 -0
  281. package/lib/utils/depsAreSame.d.ts +2 -0
  282. package/lib/utils/depsAreSame.js +14 -0
  283. package/lib/utils/depsEqual.d.ts +2 -0
  284. package/lib/utils/depsEqual.js +17 -0
  285. package/lib/utils/domTarget.d.ts +6 -0
  286. package/lib/utils/domTarget.js +27 -0
  287. package/lib/utils/getDocumentOrShadow.d.ts +3 -0
  288. package/lib/utils/getDocumentOrShadow.js +34 -0
  289. package/lib/utils/index.d.ts +6 -0
  290. package/lib/utils/index.js +26 -0
  291. package/lib/utils/isAppleDevice.d.ts +2 -0
  292. package/lib/utils/isAppleDevice.js +9 -0
  293. package/lib/utils/isBrowser.d.ts +2 -0
  294. package/lib/utils/isBrowser.js +8 -0
  295. package/lib/utils/isDev.d.ts +2 -0
  296. package/lib/utils/isDev.js +9 -0
  297. package/lib/utils/lodash-polyfill.d.ts +2 -0
  298. package/lib/utils/lodash-polyfill.js +23 -0
  299. package/lib/utils/testingHelpers.d.ts +2 -0
  300. package/lib/utils/testingHelpers.js +26 -0
  301. package/lib/utils/tests.d.ts +4 -0
  302. package/lib/utils/tests.js +30 -0
  303. package/lib/utils/useDeepCompareWithTarget.d.ts +4 -0
  304. package/lib/utils/useDeepCompareWithTarget.js +21 -0
  305. package/lib/utils/useEffectWithTarget.d.ts +2 -0
  306. package/lib/utils/useEffectWithTarget.js +12 -0
  307. package/lib/utils/useIsomorphicLayoutEffectWithTarget.d.ts +2 -0
  308. package/lib/utils/useIsomorphicLayoutEffectWithTarget.js +12 -0
  309. package/lib/utils/useLayoutEffectWithTarget.d.ts +2 -0
  310. package/lib/utils/useLayoutEffectWithTarget.js +11 -0
  311. package/package.json +28 -0
@@ -0,0 +1,53 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { throttle } from 'lodash-es';
3
+ import { useEffect, useRef } from 'react';
4
+ var useThrottlePlugin = function (fetchInstance, _a) {
5
+ var throttleWait = _a.throttleWait,
6
+ throttleLeading = _a.throttleLeading,
7
+ throttleTrailing = _a.throttleTrailing;
8
+ var throttledRef = useRef();
9
+ var options = {};
10
+ if (throttleLeading !== undefined) {
11
+ options.leading = throttleLeading;
12
+ }
13
+ if (throttleTrailing !== undefined) {
14
+ options.trailing = throttleTrailing;
15
+ }
16
+ useEffect(function () {
17
+ if (throttleWait) {
18
+ var _originRunAsync_1 = fetchInstance.runAsync.bind(fetchInstance);
19
+ throttledRef.current = throttle(function (callback) {
20
+ callback();
21
+ }, throttleWait, options);
22
+ // throttle runAsync should be promise
23
+ // https://github.com/lodash/lodash/issues/4400#issuecomment-834800398
24
+ fetchInstance.runAsync = function () {
25
+ var args = [];
26
+ for (var _i = 0; _i < arguments.length; _i++) {
27
+ args[_i] = arguments[_i];
28
+ }
29
+ return new Promise(function (resolve, reject) {
30
+ var _a;
31
+ (_a = throttledRef.current) === null || _a === void 0 ? void 0 : _a.call(throttledRef, function () {
32
+ _originRunAsync_1.apply(void 0, __spreadArray([], __read(args), false)).then(resolve).catch(reject);
33
+ });
34
+ });
35
+ };
36
+ return function () {
37
+ var _a;
38
+ fetchInstance.runAsync = _originRunAsync_1;
39
+ (_a = throttledRef.current) === null || _a === void 0 ? void 0 : _a.cancel();
40
+ };
41
+ }
42
+ }, [throttleWait, throttleLeading, throttleTrailing]);
43
+ if (!throttleWait) {
44
+ return {};
45
+ }
46
+ return {
47
+ onCancel: function () {
48
+ var _a;
49
+ (_a = throttledRef.current) === null || _a === void 0 ? void 0 : _a.cancel();
50
+ }
51
+ };
52
+ };
53
+ export default useThrottlePlugin;
@@ -0,0 +1,73 @@
1
+ import type { DependencyList } from 'react';
2
+ import type Fetch from './Fetch';
3
+ import type { CachedData } from './utils/cache';
4
+ export type Service<TData, TParams extends any[]> = (...args: TParams) => Promise<TData>;
5
+ export type Subscribe = () => void;
6
+ export interface FetchState<TData, TParams extends any[]> {
7
+ loading: boolean;
8
+ params?: TParams;
9
+ data?: TData;
10
+ error?: Error;
11
+ }
12
+ export interface PluginReturn<TData, TParams extends any[]> {
13
+ onBefore?: (params: TParams) => ({
14
+ stopNow?: boolean;
15
+ returnNow?: boolean;
16
+ } & Partial<FetchState<TData, TParams>>) | void;
17
+ onRequest?: (service: Service<TData, TParams>, params: TParams) => {
18
+ servicePromise?: Promise<TData>;
19
+ };
20
+ onSuccess?: (data: TData, params: TParams) => void;
21
+ onError?: (e: Error, params: TParams) => void;
22
+ onFinally?: (params: TParams, data?: TData, e?: Error) => void;
23
+ onCancel?: () => void;
24
+ onMutate?: (data: TData) => void;
25
+ }
26
+ export interface Options<TData, TParams extends any[]> {
27
+ manual?: boolean;
28
+ onBefore?: (params: TParams) => void;
29
+ onSuccess?: (data: TData, params: TParams) => void;
30
+ onError?: (e: Error, params: TParams) => void;
31
+ onFinally?: (params: TParams, data?: TData, e?: Error) => void;
32
+ defaultParams?: TParams;
33
+ refreshDeps?: DependencyList;
34
+ refreshDepsAction?: () => void;
35
+ loadingDelay?: number;
36
+ pollingInterval?: number;
37
+ pollingWhenHidden?: boolean;
38
+ pollingErrorRetryCount?: number;
39
+ refreshOnWindowFocus?: boolean;
40
+ focusTimespan?: number;
41
+ debounceWait?: number;
42
+ debounceLeading?: boolean;
43
+ debounceTrailing?: boolean;
44
+ debounceMaxWait?: number;
45
+ throttleWait?: number;
46
+ throttleLeading?: boolean;
47
+ throttleTrailing?: boolean;
48
+ cacheKey?: string;
49
+ cacheTime?: number;
50
+ staleTime?: number;
51
+ setCache?: (data: CachedData<TData, TParams>) => void;
52
+ getCache?: (params: TParams) => CachedData<TData, TParams> | undefined;
53
+ retryCount?: number;
54
+ retryInterval?: number;
55
+ ready?: boolean;
56
+ }
57
+ export type Plugin<TData, TParams extends any[]> = {
58
+ (fetchInstance: Fetch<TData, TParams>, options: Options<TData, TParams>): PluginReturn<TData, TParams>;
59
+ onInit?: (options: Options<TData, TParams>) => Partial<FetchState<TData, TParams>>;
60
+ };
61
+ export interface Result<TData, TParams extends any[]> {
62
+ loading: boolean;
63
+ data?: TData;
64
+ error?: Error;
65
+ params: TParams | [];
66
+ cancel: Fetch<TData, TParams>['cancel'];
67
+ refresh: Fetch<TData, TParams>['refresh'];
68
+ refreshAsync: Fetch<TData, TParams>['refreshAsync'];
69
+ run: Fetch<TData, TParams>['run'];
70
+ runAsync: Fetch<TData, TParams>['runAsync'];
71
+ mutate: Fetch<TData, TParams>['mutate'];
72
+ }
73
+ export type Timeout = ReturnType<typeof setTimeout>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { Options, Plugin, Service } from './types';
2
+ declare function useRequest<TData, TParams extends any[]>(service: Service<TData, TParams>, options?: Options<TData, TParams>, plugins?: Plugin<TData, TParams>[]): import("./types").Result<TData, TParams>;
3
+ export default useRequest;
@@ -0,0 +1,14 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import useAutoRunPlugin from './plugins/useAutoRunPlugin';
3
+ import useCachePlugin from './plugins/useCachePlugin';
4
+ import useDebouncePlugin from './plugins/useDebouncePlugin';
5
+ import useLoadingDelayPlugin from './plugins/useLoadingDelayPlugin';
6
+ import usePollingPlugin from './plugins/usePollingPlugin';
7
+ import useRefreshOnWindowFocusPlugin from './plugins/useRefreshOnWindowFocusPlugin';
8
+ import useRetryPlugin from './plugins/useRetryPlugin';
9
+ import useThrottlePlugin from './plugins/useThrottlePlugin';
10
+ import useRequestImplement from './useRequestImplement';
11
+ function useRequest(service, options, plugins) {
12
+ return useRequestImplement(service, options, __spreadArray(__spreadArray([], __read(plugins || []), false), [useDebouncePlugin, useLoadingDelayPlugin, usePollingPlugin, useRefreshOnWindowFocusPlugin, useThrottlePlugin, useAutoRunPlugin, useCachePlugin, useRetryPlugin], false));
13
+ }
14
+ export default useRequest;
@@ -0,0 +1,5 @@
1
+ import type { Options, Plugin, Result, Service } from './types';
2
+ declare function useRequestImplement<TData, TParams extends any[]>(service: Service<TData, TParams>, // 请求函数
3
+ options?: Options<TData, TParams>, // 请求配置
4
+ plugins?: Plugin<TData, TParams>[]): Result<TData, TParams>;
5
+ export default useRequestImplement;
@@ -0,0 +1,72 @@
1
+ import { __assign, __read, __rest, __spreadArray } from "tslib";
2
+ import useCreation from '../../useCreation';
3
+ import useLatest from '../../useLatest';
4
+ import useMemoizedFn from '../../useMemoizedFn';
5
+ import useMount from '../../useMount';
6
+ import useUnmount from '../../useUnmount';
7
+ import useUpdate from '../../useUpdate';
8
+ import isDev from '../../utils/isDev';
9
+ import Fetch from './Fetch';
10
+ function useRequestImplement(service,
11
+ // 请求函数
12
+ options,
13
+ // 请求配置
14
+ plugins) {
15
+ if (options === void 0) {
16
+ options = {};
17
+ }
18
+ if (plugins === void 0) {
19
+ plugins = [];
20
+ }
21
+ var _a = options.manual,
22
+ manual = _a === void 0 ? false : _a,
23
+ rest = __rest(options, ["manual"]);
24
+ if (isDev) {
25
+ if (options.defaultParams && !Array.isArray(options.defaultParams)) {
26
+ console.warn("expected defaultParams is array, got ".concat(typeof options.defaultParams));
27
+ }
28
+ }
29
+ var fetchOptions = __assign({
30
+ manual: manual
31
+ }, rest);
32
+ var serviceRef = useLatest(service);
33
+ var update = useUpdate();
34
+ var fetchInstance = useCreation(function () {
35
+ // 筛选出所有插件的 onInit 把没有返回值的插件过滤掉
36
+ var initState = plugins.map(function (p) {
37
+ var _a;
38
+ return (_a = p === null || p === void 0 ? void 0 : p.onInit) === null || _a === void 0 ? void 0 : _a.call(p, fetchOptions);
39
+ }).filter(Boolean);
40
+ return new Fetch(serviceRef, fetchOptions, update, Object.assign.apply(Object, __spreadArray([{}], __read(initState), false)));
41
+ }, []);
42
+ fetchInstance.options = fetchOptions;
43
+ // run all plugins hooks
44
+ fetchInstance.pluginImpls = plugins.map(function (p) {
45
+ return p(fetchInstance, fetchOptions);
46
+ });
47
+ // 挂载时执行
48
+ useMount(function () {
49
+ if (!manual) {
50
+ // useCachePlugin can set fetchInstance.state.params from cache when init
51
+ var params = fetchInstance.state.params || options.defaultParams || [];
52
+ // @ts-ignore
53
+ fetchInstance.run.apply(fetchInstance, __spreadArray([], __read(params), false));
54
+ }
55
+ });
56
+ useUnmount(function () {
57
+ fetchInstance.cancel();
58
+ });
59
+ return {
60
+ loading: fetchInstance.state.loading,
61
+ data: fetchInstance.state.data,
62
+ error: fetchInstance.state.error,
63
+ params: fetchInstance.state.params || [],
64
+ cancel: useMemoizedFn(fetchInstance.cancel.bind(fetchInstance)),
65
+ refresh: useMemoizedFn(fetchInstance.refresh.bind(fetchInstance)),
66
+ refreshAsync: useMemoizedFn(fetchInstance.refreshAsync.bind(fetchInstance)),
67
+ run: useMemoizedFn(fetchInstance.run.bind(fetchInstance)),
68
+ runAsync: useMemoizedFn(fetchInstance.runAsync.bind(fetchInstance)),
69
+ mutate: useMemoizedFn(fetchInstance.mutate.bind(fetchInstance))
70
+ };
71
+ }
72
+ export default useRequestImplement;
@@ -0,0 +1,14 @@
1
+ type Timer = ReturnType<typeof setTimeout>;
2
+ type CachedKey = string | number;
3
+ export interface CachedData<TData = any, TParams = any> {
4
+ data: TData;
5
+ params: TParams;
6
+ time: number;
7
+ }
8
+ interface RecordData extends CachedData {
9
+ timer: Timer | undefined;
10
+ }
11
+ declare const setCache: (key: CachedKey, cacheTime: number, cachedData: CachedData) => void;
12
+ declare const getCache: (key: CachedKey) => RecordData | undefined;
13
+ declare const clearCache: (key?: string | string[]) => void;
14
+ export { getCache, setCache, clearCache };
@@ -0,0 +1,32 @@
1
+ import { __assign } from "tslib";
2
+ var cache = new Map();
3
+ var setCache = function (key, cacheTime, cachedData) {
4
+ var currentCache = cache.get(key);
5
+ if (currentCache === null || currentCache === void 0 ? void 0 : currentCache.timer) {
6
+ clearTimeout(currentCache.timer);
7
+ }
8
+ var timer = undefined;
9
+ if (cacheTime > -1) {
10
+ // if cache out, clear it
11
+ timer = setTimeout(function () {
12
+ cache.delete(key);
13
+ }, cacheTime);
14
+ }
15
+ cache.set(key, __assign(__assign({}, cachedData), {
16
+ timer: timer
17
+ }));
18
+ };
19
+ var getCache = function (key) {
20
+ return cache.get(key);
21
+ };
22
+ var clearCache = function (key) {
23
+ if (key) {
24
+ var cacheKeys = Array.isArray(key) ? key : [key];
25
+ cacheKeys.forEach(function (cacheKey) {
26
+ return cache.delete(cacheKey);
27
+ });
28
+ } else {
29
+ cache.clear();
30
+ }
31
+ };
32
+ export { getCache, setCache, clearCache };
@@ -0,0 +1,4 @@
1
+ type CachedKey = string | number;
2
+ declare const getCachePromise: (cacheKey: CachedKey) => Promise<any> | undefined;
3
+ declare const setCachePromise: (cacheKey: CachedKey, promise: Promise<any>) => void;
4
+ export { getCachePromise, setCachePromise };
@@ -0,0 +1,17 @@
1
+ var cachePromise = new Map();
2
+ var getCachePromise = function (cacheKey) {
3
+ return cachePromise.get(cacheKey);
4
+ };
5
+ var setCachePromise = function (cacheKey, promise) {
6
+ // Should cache the same promise, cannot be promise.finally
7
+ // Because the promise.finally will change the reference of the promise
8
+ cachePromise.set(cacheKey, promise);
9
+ // no use promise.finally for compatibility
10
+ promise.then(function (res) {
11
+ cachePromise.delete(cacheKey);
12
+ return res;
13
+ }).catch(function () {
14
+ cachePromise.delete(cacheKey);
15
+ });
16
+ };
17
+ export { getCachePromise, setCachePromise };
@@ -0,0 +1,4 @@
1
+ type Listener = (data: any) => void;
2
+ declare const trigger: (key: string, data: any) => void;
3
+ declare const subscribe: (key: string, listener: Listener) => () => void;
4
+ export { trigger, subscribe };
@@ -0,0 +1,19 @@
1
+ var listeners = {};
2
+ var trigger = function (key, data) {
3
+ if (listeners[key]) {
4
+ listeners[key].forEach(function (item) {
5
+ return item(data);
6
+ });
7
+ }
8
+ };
9
+ var subscribe = function (key, listener) {
10
+ if (!listeners[key]) {
11
+ listeners[key] = [];
12
+ }
13
+ listeners[key].push(listener);
14
+ return function unsubscribe() {
15
+ var index = listeners[key].indexOf(listener);
16
+ listeners[key].splice(index, 1);
17
+ };
18
+ };
19
+ export { trigger, subscribe };
@@ -0,0 +1 @@
1
+ export default function isDocumentVisible(): boolean;
@@ -0,0 +1,7 @@
1
+ import isBrowser from '../../../utils/isBrowser';
2
+ export default function isDocumentVisible() {
3
+ if (isBrowser) {
4
+ return document.visibilityState !== 'hidden'; // 如果浏览器可见,元素是可见的
5
+ }
6
+ return true;
7
+ }
@@ -0,0 +1 @@
1
+ export default function isOnline(): boolean;
@@ -0,0 +1,7 @@
1
+ import isBrowser from '../../../utils/isBrowser';
2
+ export default function isOnline() {
3
+ if (isBrowser && typeof navigator.onLine !== 'undefined') {
4
+ return navigator.onLine;
5
+ }
6
+ return true;
7
+ }
@@ -0,0 +1 @@
1
+ export default function limit(fn: any, timespan: number): (...args: any[]) => void;
@@ -0,0 +1,17 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ // 限制函数执行频率
3
+ export default function limit(fn, timespan) {
4
+ var pending = false;
5
+ return function () {
6
+ var args = [];
7
+ for (var _i = 0; _i < arguments.length; _i++) {
8
+ args[_i] = arguments[_i];
9
+ }
10
+ if (pending) return;
11
+ pending = true;
12
+ fn.apply(void 0, __spreadArray([], __read(args), false));
13
+ setTimeout(function () {
14
+ pending = false;
15
+ }, timespan);
16
+ };
17
+ }
@@ -0,0 +1,3 @@
1
+ type Listener = () => void;
2
+ declare function subscribe(listener: Listener): () => void;
3
+ export default subscribe;
@@ -0,0 +1,27 @@
1
+ // from swr
2
+ import isBrowser from '../../../utils/isBrowser';
3
+ import isDocumentVisible from './isDocumentVisible';
4
+ import isOnline from './isOnline';
5
+ var listeners = [];
6
+ function subscribe(listener) {
7
+ listeners.push(listener);
8
+ return function unsubscribe() {
9
+ var index = listeners.indexOf(listener);
10
+ if (index > -1) {
11
+ listeners.splice(index, 1);
12
+ }
13
+ };
14
+ }
15
+ // 订阅窗口聚焦事件
16
+ if (isBrowser) {
17
+ var revalidate = function () {
18
+ if (!isDocumentVisible() || !isOnline()) return;
19
+ for (var i = 0; i < listeners.length; i++) {
20
+ var listener = listeners[i];
21
+ listener();
22
+ }
23
+ };
24
+ window.addEventListener('visibilitychange', revalidate, false);
25
+ window.addEventListener('focus', revalidate, false);
26
+ }
27
+ export default subscribe;
@@ -0,0 +1,3 @@
1
+ type Listener = () => void;
2
+ declare function subscribe(listener: Listener): () => void;
3
+ export default subscribe;
@@ -0,0 +1,21 @@
1
+ import isBrowser from '../../../utils/isBrowser';
2
+ import isDocumentVisible from './isDocumentVisible';
3
+ var listeners = [];
4
+ function subscribe(listener) {
5
+ listeners.push(listener);
6
+ return function unsubscribe() {
7
+ var index = listeners.indexOf(listener);
8
+ listeners.splice(index, 1);
9
+ };
10
+ }
11
+ if (isBrowser) {
12
+ var revalidate = function () {
13
+ if (!isDocumentVisible()) return; // 如果页面隐藏,则停止轮询,并订阅可见事件
14
+ for (var i = 0; i < listeners.length; i++) {
15
+ var listener = listeners[i];
16
+ listener();
17
+ }
18
+ };
19
+ window.addEventListener('visibilitychange', revalidate, false);
20
+ }
21
+ export default subscribe;
@@ -0,0 +1,10 @@
1
+ export interface Actions<T> {
2
+ setLeft: () => void;
3
+ setRight: () => void;
4
+ toggle: () => void;
5
+ set: (value: T) => void;
6
+ }
7
+ declare function useToggle<T = boolean>(): [boolean, Actions<T>];
8
+ declare function useToggle<T>(defaultValue: T): [T, Actions<T>];
9
+ declare function useToggle<T, U>(defaultValue: T, reverseValue: U): [T | U, Actions<T | U>];
10
+ export default useToggle;
@@ -0,0 +1,41 @@
1
+ import { __read } from "tslib";
2
+ import { useMemo, useState } from 'react';
3
+ // 这是唯一真正执行的实现函数(前面三个仅用于类型提示)。
4
+ // D/R 是实现签名的泛型占位符,用于覆盖上面所有重载情况。
5
+ function useToggle(defaultValue, reverseValue) {
6
+ if (defaultValue === void 0) {
7
+ defaultValue = false;
8
+ }
9
+ var _a = __read(useState(defaultValue), 2),
10
+ state = _a[0],
11
+ setState = _a[1];
12
+ var actions = useMemo(function () {
13
+ // 如果没传 reverseValue,就用 !defaultValue 作为“另一侧值”(常见于 boolean 场景)。
14
+ var reverseValueOrigin = reverseValue === undefined ? !defaultValue : reverseValue;
15
+ // toggle:在 defaultValue 与 reverseValueOrigin 之间切换。
16
+ var toggle = function () {
17
+ return setState(function (v) {
18
+ return v === defaultValue ? reverseValueOrigin : defaultValue;
19
+ });
20
+ };
21
+ // set:直接设置为传入值,值类型受泛型约束(D | R)。
22
+ var set = function (value) {
23
+ return setState(value);
24
+ };
25
+ // setLeft/setRight:这里语义是“切回左值/右值”。
26
+ var setLeft = function () {
27
+ return setState(defaultValue);
28
+ };
29
+ var setRight = function () {
30
+ return setState(reverseValueOrigin);
31
+ };
32
+ return {
33
+ toggle: toggle,
34
+ set: set,
35
+ setLeft: setLeft,
36
+ setRight: setRight
37
+ };
38
+ }, []);
39
+ return [state, actions];
40
+ }
41
+ export default useToggle;
@@ -0,0 +1,2 @@
1
+ declare const useUnmount: (fn: any) => void;
2
+ export default useUnmount;
@@ -0,0 +1,17 @@
1
+ import { useEffect } from 'react';
2
+ import { isFunction } from '../utils';
3
+ import isDev from '../utils/isDev';
4
+ // 为了在开发阶段做参数校验、打印警告,帮你早点发现错误;生产环境不做这些检查,避免性能和包体积成本。
5
+ var useUnmount = function (fn) {
6
+ if (isDev) {
7
+ if (!isFunction(fn)) {
8
+ console.error("useMount:parameter `fn` expected to be a function,but got \"".concat(typeof fn, "\"."));
9
+ }
10
+ }
11
+ useEffect(function () {
12
+ return function () {
13
+ fn === null || fn === void 0 ? void 0 : fn();
14
+ };
15
+ }, []);
16
+ };
17
+ export default useUnmount;
@@ -0,0 +1,2 @@
1
+ declare const useUpdate: () => () => void;
2
+ export default useUpdate;
@@ -0,0 +1,10 @@
1
+ import { __read } from "tslib";
2
+ import { useCallback, useState } from 'react';
3
+ var useUpdate = function () {
4
+ var _a = __read(useState({}), 2),
5
+ setState = _a[1];
6
+ return useCallback(function () {
7
+ return setState({});
8
+ }, []);
9
+ };
10
+ export default useUpdate;
@@ -0,0 +1,3 @@
1
+ import { useEffect } from 'react';
2
+ declare const _default: typeof useEffect | typeof import("react").useLayoutEffect;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { useEffect } from 'react';
2
+ import { createUpdateEffect } from '../createUpdateEffect';
3
+ export default createUpdateEffect(useEffect);
@@ -0,0 +1,4 @@
1
+ import type { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react';
2
+ import type { BasicTarget } from './domTarget';
3
+ declare const createEffectWithTarget: (useEffectType: typeof useEffect | typeof useLayoutEffect) => (effect: EffectCallback, deps: DependencyList, target: BasicTarget<any> | BasicTarget<any>[]) => void;
4
+ export default createEffectWithTarget;
@@ -0,0 +1,48 @@
1
+ import { useRef } from 'react';
2
+ import useUnmount from '../useUnmount';
3
+ import depsAreSame from './depsAreSame';
4
+ import { getTargetElement } from './domTarget';
5
+ // 创建一个 effect 函数,用于在组件渲染时执行副作用,并且可以指定依赖项和目标元素
6
+ var createEffectWithTarget = function (useEffectType) {
7
+ /**
8
+ *
9
+ * @param effect
10
+ * @param deps
11
+ * @param target target should compare ref.current vs ref.current, dom vs dom, ()=>dom vs ()=>dom
12
+ */
13
+ var useEffectWithTarget = function (effect, deps, target) {
14
+ var hasInitRef = useRef(false);
15
+ var lastElementRef = useRef([]);
16
+ var lastDepsRef = useRef([]);
17
+ var unLoadRef = useRef();
18
+ useEffectType(function () {
19
+ var _a;
20
+ var targets = Array.isArray(target) ? target : [target];
21
+ var els = targets.map(function (item) {
22
+ return getTargetElement(item);
23
+ });
24
+ // init run
25
+ if (!hasInitRef.current) {
26
+ hasInitRef.current = true;
27
+ lastElementRef.current = els;
28
+ lastDepsRef.current = deps;
29
+ unLoadRef.current = effect();
30
+ return;
31
+ }
32
+ if (els.length !== lastElementRef.current.length || !depsAreSame(els, lastElementRef.current) || !depsAreSame(deps, lastDepsRef.current)) {
33
+ (_a = unLoadRef.current) === null || _a === void 0 ? void 0 : _a.call(unLoadRef);
34
+ lastElementRef.current = els;
35
+ lastDepsRef.current = deps;
36
+ unLoadRef.current = effect();
37
+ }
38
+ });
39
+ useUnmount(function () {
40
+ var _a;
41
+ (_a = unLoadRef.current) === null || _a === void 0 ? void 0 : _a.call(unLoadRef);
42
+ // for react-refresh
43
+ hasInitRef.current = false;
44
+ });
45
+ };
46
+ return useEffectWithTarget;
47
+ };
48
+ export default createEffectWithTarget;
@@ -0,0 +1,2 @@
1
+ import type { DependencyList } from 'react';
2
+ export default function depsAreSame(oldDeps: DependencyList, deps: DependencyList): boolean;
@@ -0,0 +1,8 @@
1
+ // 判断两个依赖项是否相同
2
+ export default function depsAreSame(oldDeps, deps) {
3
+ if (oldDeps === deps) return true;
4
+ for (var i = 0; i < oldDeps.length; i++) {
5
+ if (!Object.is(oldDeps[i], deps[i])) return false;
6
+ }
7
+ return true;
8
+ }
@@ -0,0 +1,2 @@
1
+ import type { DependencyList } from 'react';
2
+ export declare const depsEqual: (aDeps?: DependencyList, bDeps?: DependencyList) => any;
@@ -0,0 +1,11 @@
1
+ import { isEqual } from 'lodash-es';
2
+ // 判断两个依赖项是否相等
3
+ export var depsEqual = function (aDeps, bDeps) {
4
+ if (aDeps === void 0) {
5
+ aDeps = [];
6
+ }
7
+ if (bDeps === void 0) {
8
+ bDeps = [];
9
+ }
10
+ return isEqual(aDeps, bDeps);
11
+ };
@@ -0,0 +1,6 @@
1
+ import type { MutableRefObject } from 'react';
2
+ type TargetValue<T> = T | undefined | null;
3
+ type TargetType = HTMLElement | Element | Window | Document;
4
+ export type BasicTarget<T extends TargetType = Element> = (() => TargetValue<T>) | TargetValue<T> | MutableRefObject<TargetValue<T>>;
5
+ export declare function getTargetElement<T extends TargetType>(target: BasicTarget<T>, defaultElement?: T): TargetValue<T>;
6
+ export {};
@@ -0,0 +1,20 @@
1
+ import { isFunction } from './index';
2
+ import isBrowser from './isBrowser';
3
+ // 获取目标元素
4
+ export function getTargetElement(target, defaultElement) {
5
+ if (!isBrowser) {
6
+ return undefined;
7
+ }
8
+ if (!target) {
9
+ return defaultElement;
10
+ }
11
+ var targetElement;
12
+ if (isFunction(target)) {
13
+ targetElement = target();
14
+ } else if ('current' in target) {
15
+ targetElement = target.current;
16
+ } else {
17
+ targetElement = target;
18
+ }
19
+ return targetElement;
20
+ }