@usels/core 0.0.1-beta.3

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 (341) hide show
  1. package/README.md +21 -0
  2. package/dist/browser/useEventListener/index.d.mts +56 -0
  3. package/dist/browser/useEventListener/index.d.ts +56 -0
  4. package/dist/browser/useEventListener/index.js +112 -0
  5. package/dist/browser/useEventListener/index.js.map +1 -0
  6. package/dist/browser/useEventListener/index.mjs +88 -0
  7. package/dist/browser/useEventListener/index.mjs.map +1 -0
  8. package/dist/browser/useMediaQuery/demo.d.mts +5 -0
  9. package/dist/browser/useMediaQuery/demo.d.ts +5 -0
  10. package/dist/browser/useMediaQuery/demo.js +82 -0
  11. package/dist/browser/useMediaQuery/demo.js.map +1 -0
  12. package/dist/browser/useMediaQuery/demo.mjs +62 -0
  13. package/dist/browser/useMediaQuery/demo.mjs.map +1 -0
  14. package/dist/browser/useMediaQuery/index.d.mts +11 -0
  15. package/dist/browser/useMediaQuery/index.d.ts +11 -0
  16. package/dist/browser/useMediaQuery/index.js +89 -0
  17. package/dist/browser/useMediaQuery/index.js.map +1 -0
  18. package/dist/browser/useMediaQuery/index.mjs +64 -0
  19. package/dist/browser/useMediaQuery/index.mjs.map +1 -0
  20. package/dist/components/Auto/index.d.mts +33 -0
  21. package/dist/components/Auto/index.d.ts +33 -0
  22. package/dist/components/Auto/index.js +66 -0
  23. package/dist/components/Auto/index.js.map +1 -0
  24. package/dist/components/Auto/index.mjs +34 -0
  25. package/dist/components/Auto/index.mjs.map +1 -0
  26. package/dist/elements/useDocumentVisibility/demo.d.mts +5 -0
  27. package/dist/elements/useDocumentVisibility/demo.d.ts +5 -0
  28. package/dist/elements/useDocumentVisibility/demo.js +130 -0
  29. package/dist/elements/useDocumentVisibility/demo.js.map +1 -0
  30. package/dist/elements/useDocumentVisibility/demo.mjs +114 -0
  31. package/dist/elements/useDocumentVisibility/demo.mjs.map +1 -0
  32. package/dist/elements/useDocumentVisibility/index.d.mts +5 -0
  33. package/dist/elements/useDocumentVisibility/index.d.ts +5 -0
  34. package/dist/elements/useDocumentVisibility/index.js +45 -0
  35. package/dist/elements/useDocumentVisibility/index.js.map +1 -0
  36. package/dist/elements/useDocumentVisibility/index.mjs +21 -0
  37. package/dist/elements/useDocumentVisibility/index.mjs.map +1 -0
  38. package/dist/elements/useElementBounding/demo.d.mts +5 -0
  39. package/dist/elements/useElementBounding/demo.d.ts +5 -0
  40. package/dist/elements/useElementBounding/demo.js +86 -0
  41. package/dist/elements/useElementBounding/demo.js.map +1 -0
  42. package/dist/elements/useElementBounding/demo.mjs +66 -0
  43. package/dist/elements/useElementBounding/demo.mjs.map +1 -0
  44. package/dist/elements/useElementBounding/index.d.mts +46 -0
  45. package/dist/elements/useElementBounding/index.d.ts +46 -0
  46. package/dist/elements/useElementBounding/index.js +122 -0
  47. package/dist/elements/useElementBounding/index.js.map +1 -0
  48. package/dist/elements/useElementBounding/index.mjs +98 -0
  49. package/dist/elements/useElementBounding/index.mjs.map +1 -0
  50. package/dist/elements/useElementSize/demo.d.mts +5 -0
  51. package/dist/elements/useElementSize/demo.d.ts +5 -0
  52. package/dist/elements/useElementSize/demo.js +82 -0
  53. package/dist/elements/useElementSize/demo.js.map +1 -0
  54. package/dist/elements/useElementSize/demo.mjs +62 -0
  55. package/dist/elements/useElementSize/demo.mjs.map +1 -0
  56. package/dist/elements/useElementSize/index.d.mts +34 -0
  57. package/dist/elements/useElementSize/index.d.ts +34 -0
  58. package/dist/elements/useElementSize/index.js +85 -0
  59. package/dist/elements/useElementSize/index.js.map +1 -0
  60. package/dist/elements/useElementSize/index.mjs +61 -0
  61. package/dist/elements/useElementSize/index.mjs.map +1 -0
  62. package/dist/elements/useElementVisibility/demo.d.mts +5 -0
  63. package/dist/elements/useElementVisibility/demo.d.ts +5 -0
  64. package/dist/elements/useElementVisibility/demo.js +110 -0
  65. package/dist/elements/useElementVisibility/demo.js.map +1 -0
  66. package/dist/elements/useElementVisibility/demo.mjs +90 -0
  67. package/dist/elements/useElementVisibility/demo.mjs.map +1 -0
  68. package/dist/elements/useElementVisibility/index.d.mts +43 -0
  69. package/dist/elements/useElementVisibility/index.d.ts +43 -0
  70. package/dist/elements/useElementVisibility/index.js +58 -0
  71. package/dist/elements/useElementVisibility/index.js.map +1 -0
  72. package/dist/elements/useElementVisibility/index.mjs +34 -0
  73. package/dist/elements/useElementVisibility/index.mjs.map +1 -0
  74. package/dist/elements/useIntersectionObserver/demo.d.mts +5 -0
  75. package/dist/elements/useIntersectionObserver/demo.d.ts +5 -0
  76. package/dist/elements/useIntersectionObserver/demo.js +173 -0
  77. package/dist/elements/useIntersectionObserver/demo.js.map +1 -0
  78. package/dist/elements/useIntersectionObserver/demo.mjs +153 -0
  79. package/dist/elements/useIntersectionObserver/demo.mjs.map +1 -0
  80. package/dist/elements/useIntersectionObserver/index.d.mts +47 -0
  81. package/dist/elements/useIntersectionObserver/index.d.ts +47 -0
  82. package/dist/elements/useIntersectionObserver/index.js +111 -0
  83. package/dist/elements/useIntersectionObserver/index.js.map +1 -0
  84. package/dist/elements/useIntersectionObserver/index.mjs +87 -0
  85. package/dist/elements/useIntersectionObserver/index.mjs.map +1 -0
  86. package/dist/elements/useMouseInElement/demo.d.mts +5 -0
  87. package/dist/elements/useMouseInElement/demo.d.ts +5 -0
  88. package/dist/elements/useMouseInElement/demo.js +103 -0
  89. package/dist/elements/useMouseInElement/demo.js.map +1 -0
  90. package/dist/elements/useMouseInElement/demo.mjs +83 -0
  91. package/dist/elements/useMouseInElement/demo.mjs.map +1 -0
  92. package/dist/elements/useMouseInElement/index.d.mts +56 -0
  93. package/dist/elements/useMouseInElement/index.d.ts +56 -0
  94. package/dist/elements/useMouseInElement/index.js +148 -0
  95. package/dist/elements/useMouseInElement/index.js.map +1 -0
  96. package/dist/elements/useMouseInElement/index.mjs +124 -0
  97. package/dist/elements/useMouseInElement/index.mjs.map +1 -0
  98. package/dist/elements/useMutationObserver/demo.d.mts +5 -0
  99. package/dist/elements/useMutationObserver/demo.d.ts +5 -0
  100. package/dist/elements/useMutationObserver/demo.js +240 -0
  101. package/dist/elements/useMutationObserver/demo.js.map +1 -0
  102. package/dist/elements/useMutationObserver/demo.mjs +220 -0
  103. package/dist/elements/useMutationObserver/demo.mjs.map +1 -0
  104. package/dist/elements/useMutationObserver/index.d.mts +15 -0
  105. package/dist/elements/useMutationObserver/index.d.ts +15 -0
  106. package/dist/elements/useMutationObserver/index.js +69 -0
  107. package/dist/elements/useMutationObserver/index.js.map +1 -0
  108. package/dist/elements/useMutationObserver/index.mjs +45 -0
  109. package/dist/elements/useMutationObserver/index.mjs.map +1 -0
  110. package/dist/elements/useParentElement/demo.d.mts +5 -0
  111. package/dist/elements/useParentElement/demo.d.ts +5 -0
  112. package/dist/elements/useParentElement/demo.js +132 -0
  113. package/dist/elements/useParentElement/demo.js.map +1 -0
  114. package/dist/elements/useParentElement/demo.mjs +112 -0
  115. package/dist/elements/useParentElement/demo.mjs.map +1 -0
  116. package/dist/elements/useParentElement/index.d.mts +7 -0
  117. package/dist/elements/useParentElement/index.d.ts +7 -0
  118. package/dist/elements/useParentElement/index.js +47 -0
  119. package/dist/elements/useParentElement/index.js.map +1 -0
  120. package/dist/elements/useParentElement/index.mjs +23 -0
  121. package/dist/elements/useParentElement/index.mjs.map +1 -0
  122. package/dist/elements/useRef$/index.js +89 -0
  123. package/dist/elements/useRef$/index.js.map +1 -0
  124. package/dist/elements/useRef$/index.mjs +62 -0
  125. package/dist/elements/useRef$/index.mjs.map +1 -0
  126. package/dist/elements/useRef_/index.d.mts +60 -0
  127. package/dist/elements/useRef_/index.d.ts +60 -0
  128. package/dist/elements/useResizeObserver/demo.d.mts +5 -0
  129. package/dist/elements/useResizeObserver/demo.d.ts +5 -0
  130. package/dist/elements/useResizeObserver/demo.js +90 -0
  131. package/dist/elements/useResizeObserver/demo.js.map +1 -0
  132. package/dist/elements/useResizeObserver/demo.mjs +70 -0
  133. package/dist/elements/useResizeObserver/demo.mjs.map +1 -0
  134. package/dist/elements/useResizeObserver/index.d.mts +36 -0
  135. package/dist/elements/useResizeObserver/index.d.ts +36 -0
  136. package/dist/elements/useResizeObserver/index.js +74 -0
  137. package/dist/elements/useResizeObserver/index.js.map +1 -0
  138. package/dist/elements/useResizeObserver/index.mjs +49 -0
  139. package/dist/elements/useResizeObserver/index.mjs.map +1 -0
  140. package/dist/elements/useWindowFocus/demo.d.mts +5 -0
  141. package/dist/elements/useWindowFocus/demo.d.ts +5 -0
  142. package/dist/elements/useWindowFocus/demo.js +100 -0
  143. package/dist/elements/useWindowFocus/demo.js.map +1 -0
  144. package/dist/elements/useWindowFocus/demo.mjs +80 -0
  145. package/dist/elements/useWindowFocus/demo.mjs.map +1 -0
  146. package/dist/elements/useWindowFocus/index.d.mts +5 -0
  147. package/dist/elements/useWindowFocus/index.d.ts +5 -0
  148. package/dist/elements/useWindowFocus/index.js +42 -0
  149. package/dist/elements/useWindowFocus/index.js.map +1 -0
  150. package/dist/elements/useWindowFocus/index.mjs +18 -0
  151. package/dist/elements/useWindowFocus/index.mjs.map +1 -0
  152. package/dist/elements/useWindowSize/demo.d.mts +5 -0
  153. package/dist/elements/useWindowSize/demo.d.ts +5 -0
  154. package/dist/elements/useWindowSize/demo.js +78 -0
  155. package/dist/elements/useWindowSize/demo.js.map +1 -0
  156. package/dist/elements/useWindowSize/demo.mjs +58 -0
  157. package/dist/elements/useWindowSize/demo.mjs.map +1 -0
  158. package/dist/elements/useWindowSize/index.d.mts +17 -0
  159. package/dist/elements/useWindowSize/index.d.ts +17 -0
  160. package/dist/elements/useWindowSize/index.js +96 -0
  161. package/dist/elements/useWindowSize/index.js.map +1 -0
  162. package/dist/elements/useWindowSize/index.mjs +76 -0
  163. package/dist/elements/useWindowSize/index.mjs.map +1 -0
  164. package/dist/function/get/index.d.mts +45 -0
  165. package/dist/function/get/index.d.ts +45 -0
  166. package/dist/function/get/index.js +39 -0
  167. package/dist/function/get/index.js.map +1 -0
  168. package/dist/function/get/index.mjs +15 -0
  169. package/dist/function/get/index.mjs.map +1 -0
  170. package/dist/function/peek/index.d.mts +46 -0
  171. package/dist/function/peek/index.d.ts +46 -0
  172. package/dist/function/peek/index.js +39 -0
  173. package/dist/function/peek/index.js.map +1 -0
  174. package/dist/function/peek/index.mjs +15 -0
  175. package/dist/function/peek/index.mjs.map +1 -0
  176. package/dist/function/useMayObservableOptions/index.d.mts +59 -0
  177. package/dist/function/useMayObservableOptions/index.d.ts +59 -0
  178. package/dist/function/useMayObservableOptions/index.js +109 -0
  179. package/dist/function/useMayObservableOptions/index.js.map +1 -0
  180. package/dist/function/useMayObservableOptions/index.mjs +88 -0
  181. package/dist/function/useMayObservableOptions/index.mjs.map +1 -0
  182. package/dist/function/useSupported/index.d.mts +6 -0
  183. package/dist/function/useSupported/index.d.ts +6 -0
  184. package/dist/function/useSupported/index.js +37 -0
  185. package/dist/function/useSupported/index.js.map +1 -0
  186. package/dist/function/useSupported/index.mjs +13 -0
  187. package/dist/function/useSupported/index.mjs.map +1 -0
  188. package/dist/function/useWhenMounted/index.d.mts +6 -0
  189. package/dist/function/useWhenMounted/index.d.ts +6 -0
  190. package/dist/function/useWhenMounted/index.js +37 -0
  191. package/dist/function/useWhenMounted/index.js.map +1 -0
  192. package/dist/function/useWhenMounted/index.mjs +13 -0
  193. package/dist/function/useWhenMounted/index.mjs.map +1 -0
  194. package/dist/index.d.mts +24 -0
  195. package/dist/index.d.ts +24 -0
  196. package/dist/index.js +63 -0
  197. package/dist/index.js.map +1 -0
  198. package/dist/index.mjs +22 -0
  199. package/dist/index.mjs.map +1 -0
  200. package/dist/sensors/useScroll/demo.d.mts +5 -0
  201. package/dist/sensors/useScroll/demo.d.ts +5 -0
  202. package/dist/sensors/useScroll/demo.js +121 -0
  203. package/dist/sensors/useScroll/demo.js.map +1 -0
  204. package/dist/sensors/useScroll/demo.mjs +101 -0
  205. package/dist/sensors/useScroll/demo.mjs.map +1 -0
  206. package/dist/sensors/useScroll/index.d.mts +42 -0
  207. package/dist/sensors/useScroll/index.d.ts +42 -0
  208. package/dist/sensors/useScroll/index.js +149 -0
  209. package/dist/sensors/useScroll/index.js.map +1 -0
  210. package/dist/sensors/useScroll/index.mjs +125 -0
  211. package/dist/sensors/useScroll/index.mjs.map +1 -0
  212. package/dist/sensors/useWindowScroll/demo.d.mts +5 -0
  213. package/dist/sensors/useWindowScroll/demo.d.ts +5 -0
  214. package/dist/sensors/useWindowScroll/demo.js +84 -0
  215. package/dist/sensors/useWindowScroll/demo.js.map +1 -0
  216. package/dist/sensors/useWindowScroll/demo.mjs +64 -0
  217. package/dist/sensors/useWindowScroll/demo.mjs.map +1 -0
  218. package/dist/sensors/useWindowScroll/index.d.mts +9 -0
  219. package/dist/sensors/useWindowScroll/index.d.ts +9 -0
  220. package/dist/sensors/useWindowScroll/index.js +36 -0
  221. package/dist/sensors/useWindowScroll/index.js.map +1 -0
  222. package/dist/sensors/useWindowScroll/index.mjs +12 -0
  223. package/dist/sensors/useWindowScroll/index.mjs.map +1 -0
  224. package/dist/shared/configurable.d.mts +21 -0
  225. package/dist/shared/configurable.d.ts +21 -0
  226. package/dist/shared/configurable.js +39 -0
  227. package/dist/shared/configurable.js.map +1 -0
  228. package/dist/shared/configurable.mjs +12 -0
  229. package/dist/shared/configurable.mjs.map +1 -0
  230. package/dist/shared/index.d.mts +4 -0
  231. package/dist/shared/index.d.ts +4 -0
  232. package/dist/shared/index.js +31 -0
  233. package/dist/shared/index.js.map +1 -0
  234. package/dist/shared/index.mjs +7 -0
  235. package/dist/shared/index.mjs.map +1 -0
  236. package/dist/shared/normalizeTargets/index.d.mts +21 -0
  237. package/dist/shared/normalizeTargets/index.d.ts +21 -0
  238. package/dist/shared/normalizeTargets/index.js +36 -0
  239. package/dist/shared/normalizeTargets/index.js.map +1 -0
  240. package/dist/shared/normalizeTargets/index.mjs +12 -0
  241. package/dist/shared/normalizeTargets/index.mjs.map +1 -0
  242. package/dist/shared/utils.d.mts +15 -0
  243. package/dist/shared/utils.d.ts +15 -0
  244. package/dist/shared/utils.js +87 -0
  245. package/dist/shared/utils.js.map +1 -0
  246. package/dist/shared/utils.mjs +52 -0
  247. package/dist/shared/utils.mjs.map +1 -0
  248. package/dist/types.d.mts +52 -0
  249. package/dist/types.d.ts +52 -0
  250. package/dist/types.js +17 -0
  251. package/dist/types.js.map +1 -0
  252. package/dist/types.mjs +1 -0
  253. package/dist/types.mjs.map +1 -0
  254. package/package.json +54 -0
  255. package/src/browser/useEventListener/index.md +109 -0
  256. package/src/browser/useEventListener/index.spec.ts +611 -0
  257. package/src/browser/useEventListener/index.ts +242 -0
  258. package/src/browser/useMediaQuery/demo.tsx +58 -0
  259. package/src/browser/useMediaQuery/index.md +40 -0
  260. package/src/browser/useMediaQuery/index.spec.ts +267 -0
  261. package/src/browser/useMediaQuery/index.ts +96 -0
  262. package/src/components/Auto/index.tsx +65 -0
  263. package/src/elements/useDocumentVisibility/demo.tsx +111 -0
  264. package/src/elements/useDocumentVisibility/index.md +51 -0
  265. package/src/elements/useDocumentVisibility/index.spec.ts +114 -0
  266. package/src/elements/useDocumentVisibility/index.ts +26 -0
  267. package/src/elements/useElementBounding/demo.tsx +63 -0
  268. package/src/elements/useElementBounding/index.md +59 -0
  269. package/src/elements/useElementBounding/index.ts +159 -0
  270. package/src/elements/useElementSize/demo.tsx +48 -0
  271. package/src/elements/useElementSize/index.md +60 -0
  272. package/src/elements/useElementSize/index.spec.ts +295 -0
  273. package/src/elements/useElementSize/index.ts +100 -0
  274. package/src/elements/useElementVisibility/deep-observable-pattern.spec.ts +453 -0
  275. package/src/elements/useElementVisibility/demo.tsx +97 -0
  276. package/src/elements/useElementVisibility/index.md +98 -0
  277. package/src/elements/useElementVisibility/index.spec.ts +227 -0
  278. package/src/elements/useElementVisibility/index.ts +78 -0
  279. package/src/elements/useIntersectionObserver/demo.tsx +180 -0
  280. package/src/elements/useIntersectionObserver/index.md +99 -0
  281. package/src/elements/useIntersectionObserver/index.spec.ts +482 -0
  282. package/src/elements/useIntersectionObserver/index.ts +149 -0
  283. package/src/elements/useMouseInElement/demo.tsx +79 -0
  284. package/src/elements/useMouseInElement/index.md +71 -0
  285. package/src/elements/useMouseInElement/index.spec.ts +398 -0
  286. package/src/elements/useMouseInElement/index.ts +209 -0
  287. package/src/elements/useMutationObserver/demo.tsx +270 -0
  288. package/src/elements/useMutationObserver/index.md +99 -0
  289. package/src/elements/useMutationObserver/index.spec.ts +421 -0
  290. package/src/elements/useMutationObserver/index.ts +66 -0
  291. package/src/elements/useParentElement/demo.tsx +120 -0
  292. package/src/elements/useParentElement/index.md +67 -0
  293. package/src/elements/useParentElement/index.spec.ts +208 -0
  294. package/src/elements/useParentElement/index.ts +35 -0
  295. package/src/elements/useRef$/index.md +62 -0
  296. package/src/elements/useRef$/index.spec.ts +205 -0
  297. package/src/elements/useRef$/index.ts +137 -0
  298. package/src/elements/useRef$/useImperativeHandle.spec.ts +339 -0
  299. package/src/elements/useResizeObserver/demo.tsx +56 -0
  300. package/src/elements/useResizeObserver/index.md +51 -0
  301. package/src/elements/useResizeObserver/index.spec.ts +312 -0
  302. package/src/elements/useResizeObserver/index.ts +106 -0
  303. package/src/elements/useWindowFocus/demo.tsx +71 -0
  304. package/src/elements/useWindowFocus/index.md +35 -0
  305. package/src/elements/useWindowFocus/index.spec.ts +103 -0
  306. package/src/elements/useWindowFocus/index.ts +21 -0
  307. package/src/elements/useWindowSize/demo.tsx +46 -0
  308. package/src/elements/useWindowSize/index.md +50 -0
  309. package/src/elements/useWindowSize/index.spec.ts +310 -0
  310. package/src/elements/useWindowSize/index.ts +107 -0
  311. package/src/function/get/index.md +25 -0
  312. package/src/function/get/index.spec.ts +87 -0
  313. package/src/function/get/index.ts +70 -0
  314. package/src/function/peek/index.spec.ts +97 -0
  315. package/src/function/peek/index.ts +69 -0
  316. package/src/function/useMayObservableOptions/index.spec.ts +521 -0
  317. package/src/function/useMayObservableOptions/index.ts +173 -0
  318. package/src/function/useSupported/index.md +38 -0
  319. package/src/function/useSupported/index.spec.ts +116 -0
  320. package/src/function/useSupported/index.ts +14 -0
  321. package/src/function/useWhenMounted/index.md +25 -0
  322. package/src/function/useWhenMounted/index.spec.ts +120 -0
  323. package/src/function/useWhenMounted/index.ts +16 -0
  324. package/src/index.ts +25 -0
  325. package/src/sensors/useScroll/demo.tsx +98 -0
  326. package/src/sensors/useScroll/index.md +112 -0
  327. package/src/sensors/useScroll/index.spec.ts +678 -0
  328. package/src/sensors/useScroll/index.ts +201 -0
  329. package/src/sensors/useWindowScroll/demo.tsx +69 -0
  330. package/src/sensors/useWindowScroll/index.md +88 -0
  331. package/src/sensors/useWindowScroll/index.spec.ts +69 -0
  332. package/src/sensors/useWindowScroll/index.ts +11 -0
  333. package/src/shared/configurable.ts +35 -0
  334. package/src/shared/index.ts +4 -0
  335. package/src/shared/normalizeTargets/index.spec.ts +76 -0
  336. package/src/shared/normalizeTargets/index.ts +27 -0
  337. package/src/shared/utils.ts +67 -0
  338. package/src/types.ts +56 -0
  339. package/tsconfig.json +9 -0
  340. package/tsup.config.ts +10 -0
  341. package/vitest.config.ts +22 -0
@@ -0,0 +1,24 @@
1
+ export { AnyFn, Arrayable, Awaitable, DeepMaybeObservable, Fn, MaybeObservable, Pausable, Stoppable, TimerHandle } from './types.js';
2
+ export { get } from './function/get/index.js';
3
+ export { peek } from './function/peek/index.js';
4
+ export { UseSupportedReturn, useSupported } from './function/useSupported/index.js';
5
+ export { UseWhenMountedReturn, useWhenMounted } from './function/useWhenMounted/index.js';
6
+ export { MaybeElement, Ref$, getElement, isRef$, peekElement, useRef$ } from './elements/useRef_/index.js';
7
+ export { UseResizeObserverOptions, UseResizeObserverReturn, useResizeObserver } from './elements/useResizeObserver/index.js';
8
+ export { UseElementSizeOptions, UseElementSizeReturn, useElementSize } from './elements/useElementSize/index.js';
9
+ export { UseElementBoundingOptions, UseElementBoundingReturn, useElementBounding } from './elements/useElementBounding/index.js';
10
+ export { UseMutationObserverOptions, UseMutationObserverReturn, useMutationObserver } from './elements/useMutationObserver/index.js';
11
+ export { UseIntersectionObserverOptions, UseIntersectionObserverReturn, useIntersectionObserver } from './elements/useIntersectionObserver/index.js';
12
+ export { UseElementVisibilityOptions, useElementVisibility } from './elements/useElementVisibility/index.js';
13
+ export { useDocumentVisibility } from './elements/useDocumentVisibility/index.js';
14
+ export { useWindowFocus } from './elements/useWindowFocus/index.js';
15
+ export { UseWindowSizeOptions, UseWindowSizeReturn, useWindowSize } from './elements/useWindowSize/index.js';
16
+ export { useParentElement } from './elements/useParentElement/index.js';
17
+ export { UseMouseInElementOptions, UseMouseInElementReturn, useMouseInElement } from './elements/useMouseInElement/index.js';
18
+ export { ArrivedState, ScrollDirections, UseScrollOptions, UseScrollReturn, useScroll } from './sensors/useScroll/index.js';
19
+ export { useWindowScroll } from './sensors/useWindowScroll/index.js';
20
+ export { GeneralEventListener, useEventListener } from './browser/useEventListener/index.js';
21
+ export { UseMediaQueryOptions, UseMediaQueryReturn, evaluateSSRQuery, useMediaQuery } from './browser/useMediaQuery/index.js';
22
+ export { normalizeTargets } from './shared/normalizeTargets/index.js';
23
+ import '@legendapp/state';
24
+ import 'react';
package/dist/index.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var index_exports = {};
17
+ module.exports = __toCommonJS(index_exports);
18
+ __reExport(index_exports, require("./types"), module.exports);
19
+ __reExport(index_exports, require("./function/get"), module.exports);
20
+ __reExport(index_exports, require("./function/peek"), module.exports);
21
+ __reExport(index_exports, require("./function/useSupported"), module.exports);
22
+ __reExport(index_exports, require("./function/useWhenMounted"), module.exports);
23
+ __reExport(index_exports, require("./elements/useRef$"), module.exports);
24
+ __reExport(index_exports, require("./elements/useResizeObserver"), module.exports);
25
+ __reExport(index_exports, require("./elements/useElementSize"), module.exports);
26
+ __reExport(index_exports, require("./elements/useElementBounding"), module.exports);
27
+ __reExport(index_exports, require("./elements/useMutationObserver"), module.exports);
28
+ __reExport(index_exports, require("./elements/useIntersectionObserver"), module.exports);
29
+ __reExport(index_exports, require("./elements/useElementVisibility"), module.exports);
30
+ __reExport(index_exports, require("./elements/useDocumentVisibility"), module.exports);
31
+ __reExport(index_exports, require("./elements/useWindowFocus"), module.exports);
32
+ __reExport(index_exports, require("./elements/useWindowSize"), module.exports);
33
+ __reExport(index_exports, require("./elements/useParentElement"), module.exports);
34
+ __reExport(index_exports, require("./elements/useMouseInElement"), module.exports);
35
+ __reExport(index_exports, require("./sensors/useScroll"), module.exports);
36
+ __reExport(index_exports, require("./sensors/useWindowScroll"), module.exports);
37
+ __reExport(index_exports, require("./browser/useEventListener"), module.exports);
38
+ __reExport(index_exports, require("./browser/useMediaQuery"), module.exports);
39
+ // Annotate the CommonJS export names for ESM import in node:
40
+ 0 && (module.exports = {
41
+ ...require("./types"),
42
+ ...require("./function/get"),
43
+ ...require("./function/peek"),
44
+ ...require("./function/useSupported"),
45
+ ...require("./function/useWhenMounted"),
46
+ ...require("./elements/useRef$"),
47
+ ...require("./elements/useResizeObserver"),
48
+ ...require("./elements/useElementSize"),
49
+ ...require("./elements/useElementBounding"),
50
+ ...require("./elements/useMutationObserver"),
51
+ ...require("./elements/useIntersectionObserver"),
52
+ ...require("./elements/useElementVisibility"),
53
+ ...require("./elements/useDocumentVisibility"),
54
+ ...require("./elements/useWindowFocus"),
55
+ ...require("./elements/useWindowSize"),
56
+ ...require("./elements/useParentElement"),
57
+ ...require("./elements/useMouseInElement"),
58
+ ...require("./sensors/useScroll"),
59
+ ...require("./sensors/useWindowScroll"),
60
+ ...require("./browser/useEventListener"),
61
+ ...require("./browser/useMediaQuery")
62
+ });
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./types\";\n\nexport * from \"./function/get\";\nexport * from \"./function/peek\";\nexport * from \"./function/useSupported\";\nexport * from \"./function/useWhenMounted\";\n\nexport * from \"./elements/useRef$\";\nexport * from \"./elements/useResizeObserver\";\nexport * from \"./elements/useElementSize\";\nexport * from \"./elements/useElementBounding\";\nexport * from \"./elements/useMutationObserver\";\nexport * from \"./elements/useIntersectionObserver\";\nexport * from \"./elements/useElementVisibility\";\nexport * from \"./elements/useDocumentVisibility\";\nexport * from \"./elements/useWindowFocus\";\nexport * from \"./elements/useWindowSize\";\nexport * from \"./elements/useParentElement\";\nexport * from \"./elements/useMouseInElement\";\n\nexport * from \"./sensors/useScroll\";\nexport * from \"./sensors/useWindowScroll\";\n\nexport * from \"./browser/useEventListener\";\nexport * from \"./browser/useMediaQuery\";\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,oBAAd;AAEA,0BAAc,2BAFd;AAGA,0BAAc,4BAHd;AAIA,0BAAc,oCAJd;AAKA,0BAAc,sCALd;AAOA,0BAAc,+BAPd;AAQA,0BAAc,yCARd;AASA,0BAAc,sCATd;AAUA,0BAAc,0CAVd;AAWA,0BAAc,2CAXd;AAYA,0BAAc,+CAZd;AAaA,0BAAc,4CAbd;AAcA,0BAAc,6CAdd;AAeA,0BAAc,sCAfd;AAgBA,0BAAc,qCAhBd;AAiBA,0BAAc,wCAjBd;AAkBA,0BAAc,yCAlBd;AAoBA,0BAAc,gCApBd;AAqBA,0BAAc,sCArBd;AAuBA,0BAAc,uCAvBd;AAwBA,0BAAc,oCAxBd;","names":[]}
package/dist/index.mjs ADDED
@@ -0,0 +1,22 @@
1
+ export * from "./types";
2
+ export * from "./function/get";
3
+ export * from "./function/peek";
4
+ export * from "./function/useSupported";
5
+ export * from "./function/useWhenMounted";
6
+ export * from "./elements/useRef$";
7
+ export * from "./elements/useResizeObserver";
8
+ export * from "./elements/useElementSize";
9
+ export * from "./elements/useElementBounding";
10
+ export * from "./elements/useMutationObserver";
11
+ export * from "./elements/useIntersectionObserver";
12
+ export * from "./elements/useElementVisibility";
13
+ export * from "./elements/useDocumentVisibility";
14
+ export * from "./elements/useWindowFocus";
15
+ export * from "./elements/useWindowSize";
16
+ export * from "./elements/useParentElement";
17
+ export * from "./elements/useMouseInElement";
18
+ export * from "./sensors/useScroll";
19
+ export * from "./sensors/useWindowScroll";
20
+ export * from "./browser/useEventListener";
21
+ export * from "./browser/useMediaQuery";
22
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./types\";\n\nexport * from \"./function/get\";\nexport * from \"./function/peek\";\nexport * from \"./function/useSupported\";\nexport * from \"./function/useWhenMounted\";\n\nexport * from \"./elements/useRef$\";\nexport * from \"./elements/useResizeObserver\";\nexport * from \"./elements/useElementSize\";\nexport * from \"./elements/useElementBounding\";\nexport * from \"./elements/useMutationObserver\";\nexport * from \"./elements/useIntersectionObserver\";\nexport * from \"./elements/useElementVisibility\";\nexport * from \"./elements/useDocumentVisibility\";\nexport * from \"./elements/useWindowFocus\";\nexport * from \"./elements/useWindowSize\";\nexport * from \"./elements/useParentElement\";\nexport * from \"./elements/useMouseInElement\";\n\nexport * from \"./sensors/useScroll\";\nexport * from \"./sensors/useWindowScroll\";\n\nexport * from \"./browser/useEventListener\";\nexport * from \"./browser/useMediaQuery\";\n"],"mappings":"AAAA,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function UseScrollDemo(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { UseScrollDemo as default };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function UseScrollDemo(): react_jsx_runtime.JSX.Element;
4
+
5
+ export { UseScrollDemo as default };
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var demo_exports = {};
20
+ __export(demo_exports, {
21
+ default: () => UseScrollDemo
22
+ });
23
+ module.exports = __toCommonJS(demo_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_useRef = require("../../elements/useRef$");
26
+ var import__ = require(".");
27
+ const badge = (active) => ({
28
+ display: "inline-flex",
29
+ alignItems: "center",
30
+ padding: "2px 8px",
31
+ borderRadius: "4px",
32
+ fontSize: "12px",
33
+ fontFamily: "monospace",
34
+ background: active ? "var(--sl-color-green-low, #f0fdf4)" : "var(--sl-color-gray-5, #f1f5f9)",
35
+ color: active ? "var(--sl-color-green, #16a34a)" : "var(--sl-color-gray-3, #64748b)",
36
+ border: `1px solid ${active ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-gray-4, #e2e8f0)"}`,
37
+ transition: "all 0.15s"
38
+ });
39
+ function UseScrollDemo() {
40
+ const el$ = (0, import_useRef.useRef$)();
41
+ const { x$, y$, isScrolling$, arrivedState$, directions$ } = (0, import__.useScroll)(el$);
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "10px" }, children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
44
+ "div",
45
+ {
46
+ style: {
47
+ display: "flex",
48
+ flexWrap: "wrap",
49
+ gap: "8px",
50
+ padding: "8px 12px",
51
+ borderRadius: "6px",
52
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
53
+ background: "var(--sl-color-gray-6, #f8fafc)",
54
+ fontFamily: "monospace",
55
+ fontSize: "13px"
56
+ },
57
+ children: [
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
59
+ "x: ",
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: x$.get() })
61
+ ] }),
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
63
+ "y: ",
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: y$.get() })
65
+ ] }),
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: badge(isScrolling$.get()), children: isScrolling$.get() ? "scrolling" : "idle" }),
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: badge(arrivedState$.top.get()), children: "top" }),
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: badge(arrivedState$.bottom.get()), children: "bottom" }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: { color: "var(--sl-color-gray-3, #94a3b8)" }, children: [
70
+ directions$.top.get() && "\u2191",
71
+ directions$.bottom.get() && "\u2193",
72
+ directions$.left.get() && "\u2190",
73
+ directions$.right.get() && "\u2192"
74
+ ] })
75
+ ]
76
+ }
77
+ ),
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
79
+ "div",
80
+ {
81
+ ref: el$,
82
+ style: {
83
+ height: "200px",
84
+ overflowY: "auto",
85
+ borderRadius: "6px",
86
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
87
+ background: "var(--sl-color-gray-7, #fff)"
88
+ },
89
+ children: Array.from({ length: 20 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
90
+ "div",
91
+ {
92
+ style: {
93
+ padding: "8px 14px",
94
+ borderBottom: "1px solid var(--sl-color-gray-6, #f1f5f9)",
95
+ fontSize: "13px",
96
+ color: "var(--sl-color-gray-2, #475569)",
97
+ fontFamily: "monospace"
98
+ },
99
+ children: [
100
+ "Item ",
101
+ i + 1
102
+ ]
103
+ },
104
+ i
105
+ ))
106
+ }
107
+ ),
108
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
109
+ "p",
110
+ {
111
+ style: {
112
+ margin: 0,
113
+ fontSize: "11px",
114
+ color: "var(--sl-color-gray-3, #94a3b8)"
115
+ },
116
+ children: "Scroll inside the box to see x, y, arrivedState, and directions update."
117
+ }
118
+ )
119
+ ] });
120
+ }
121
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/sensors/useScroll/demo.tsx"],"sourcesContent":["import { useRef$ } from \"../../elements/useRef$\";\nimport { useScroll } from \".\";\n\nconst badge = (active: boolean): React.CSSProperties => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"2px 8px\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n fontFamily: \"monospace\",\n background: active\n ? \"var(--sl-color-green-low, #f0fdf4)\"\n : \"var(--sl-color-gray-5, #f1f5f9)\",\n color: active\n ? \"var(--sl-color-green, #16a34a)\"\n : \"var(--sl-color-gray-3, #64748b)\",\n border: `1px solid ${active ? \"var(--sl-color-green, #22c55e)\" : \"var(--sl-color-gray-4, #e2e8f0)\"}`,\n transition: \"all 0.15s\",\n});\n\nexport default function UseScrollDemo() {\n const el$ = useRef$<HTMLDivElement>();\n const { x$, y$, isScrolling$, arrivedState$, directions$ } = useScroll(el$);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {/* Stats */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n background: \"var(--sl-color-gray-6, #f8fafc)\",\n fontFamily: \"monospace\",\n fontSize: \"13px\",\n }}\n >\n <span>\n x: <strong>{x$.get()}</strong>\n </span>\n <span>\n y: <strong>{y$.get()}</strong>\n </span>\n <span style={badge(isScrolling$.get())}>\n {isScrolling$.get() ? \"scrolling\" : \"idle\"}\n </span>\n <span style={badge(arrivedState$.top.get())}>top</span>\n <span style={badge(arrivedState$.bottom.get())}>bottom</span>\n <span style={{ color: \"var(--sl-color-gray-3, #94a3b8)\" }}>\n {directions$.top.get() && \"↑\"}\n {directions$.bottom.get() && \"↓\"}\n {directions$.left.get() && \"←\"}\n {directions$.right.get() && \"→\"}\n </span>\n </div>\n\n {/* Scrollable container */}\n <div\n ref={el$}\n style={{\n height: \"200px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n background: \"var(--sl-color-gray-7, #fff)\",\n }}\n >\n {Array.from({ length: 20 }, (_, i) => (\n <div\n key={i}\n style={{\n padding: \"8px 14px\",\n borderBottom: \"1px solid var(--sl-color-gray-6, #f1f5f9)\",\n fontSize: \"13px\",\n color: \"var(--sl-color-gray-2, #475569)\",\n fontFamily: \"monospace\",\n }}\n >\n Item {i + 1}\n </div>\n ))}\n </div>\n\n <p\n style={{\n margin: 0,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Scroll inside the box to see x, y, arrivedState, and directions update.\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCQ;AAxCR,oBAAwB;AACxB,eAA0B;AAE1B,MAAM,QAAQ,CAAC,YAA0C;AAAA,EACvD,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY,SACR,uCACA;AAAA,EACJ,OAAO,SACH,mCACA;AAAA,EACJ,QAAQ,aAAa,SAAS,mCAAmC,iCAAiC;AAAA,EAClG,YAAY;AACd;AAEe,SAAR,gBAAiC;AACtC,QAAM,UAAM,uBAAwB;AACpC,QAAM,EAAE,IAAI,IAAI,cAAc,eAAe,YAAY,QAAI,oBAAU,GAAG;AAE1E,SACE,6CAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,GAElE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,UAAU;AAAA,UACV,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,UAAU;AAAA,QACZ;AAAA,QAEA;AAAA,uDAAC,UAAK;AAAA;AAAA,YACD,4CAAC,YAAQ,aAAG,IAAI,GAAE;AAAA,aACvB;AAAA,UACA,6CAAC,UAAK;AAAA;AAAA,YACD,4CAAC,YAAQ,aAAG,IAAI,GAAE;AAAA,aACvB;AAAA,UACA,4CAAC,UAAK,OAAO,MAAM,aAAa,IAAI,CAAC,GAClC,uBAAa,IAAI,IAAI,cAAc,QACtC;AAAA,UACA,4CAAC,UAAK,OAAO,MAAM,cAAc,IAAI,IAAI,CAAC,GAAG,iBAAG;AAAA,UAChD,4CAAC,UAAK,OAAO,MAAM,cAAc,OAAO,IAAI,CAAC,GAAG,oBAAM;AAAA,UACtD,6CAAC,UAAK,OAAO,EAAE,OAAO,kCAAkC,GACrD;AAAA,wBAAY,IAAI,IAAI,KAAK;AAAA,YACzB,YAAY,OAAO,IAAI,KAAK;AAAA,YAC5B,YAAY,KAAK,IAAI,KAAK;AAAA,YAC1B,YAAY,MAAM,IAAI,KAAK;AAAA,aAC9B;AAAA;AAAA;AAAA,IACF;AAAA,IAGA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,QACd;AAAA,QAEC,gBAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAC9B;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,cAAc;AAAA,cACd,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,YACd;AAAA,YACD;AAAA;AAAA,cACO,IAAI;AAAA;AAAA;AAAA,UATL;AAAA,QAUP,CACD;AAAA;AAAA,IACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,101 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useRef$ } from "../../elements/useRef$";
3
+ import { useScroll } from ".";
4
+ const badge = (active) => ({
5
+ display: "inline-flex",
6
+ alignItems: "center",
7
+ padding: "2px 8px",
8
+ borderRadius: "4px",
9
+ fontSize: "12px",
10
+ fontFamily: "monospace",
11
+ background: active ? "var(--sl-color-green-low, #f0fdf4)" : "var(--sl-color-gray-5, #f1f5f9)",
12
+ color: active ? "var(--sl-color-green, #16a34a)" : "var(--sl-color-gray-3, #64748b)",
13
+ border: `1px solid ${active ? "var(--sl-color-green, #22c55e)" : "var(--sl-color-gray-4, #e2e8f0)"}`,
14
+ transition: "all 0.15s"
15
+ });
16
+ function UseScrollDemo() {
17
+ const el$ = useRef$();
18
+ const { x$, y$, isScrolling$, arrivedState$, directions$ } = useScroll(el$);
19
+ return /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "10px" }, children: [
20
+ /* @__PURE__ */ jsxs(
21
+ "div",
22
+ {
23
+ style: {
24
+ display: "flex",
25
+ flexWrap: "wrap",
26
+ gap: "8px",
27
+ padding: "8px 12px",
28
+ borderRadius: "6px",
29
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
30
+ background: "var(--sl-color-gray-6, #f8fafc)",
31
+ fontFamily: "monospace",
32
+ fontSize: "13px"
33
+ },
34
+ children: [
35
+ /* @__PURE__ */ jsxs("span", { children: [
36
+ "x: ",
37
+ /* @__PURE__ */ jsx("strong", { children: x$.get() })
38
+ ] }),
39
+ /* @__PURE__ */ jsxs("span", { children: [
40
+ "y: ",
41
+ /* @__PURE__ */ jsx("strong", { children: y$.get() })
42
+ ] }),
43
+ /* @__PURE__ */ jsx("span", { style: badge(isScrolling$.get()), children: isScrolling$.get() ? "scrolling" : "idle" }),
44
+ /* @__PURE__ */ jsx("span", { style: badge(arrivedState$.top.get()), children: "top" }),
45
+ /* @__PURE__ */ jsx("span", { style: badge(arrivedState$.bottom.get()), children: "bottom" }),
46
+ /* @__PURE__ */ jsxs("span", { style: { color: "var(--sl-color-gray-3, #94a3b8)" }, children: [
47
+ directions$.top.get() && "\u2191",
48
+ directions$.bottom.get() && "\u2193",
49
+ directions$.left.get() && "\u2190",
50
+ directions$.right.get() && "\u2192"
51
+ ] })
52
+ ]
53
+ }
54
+ ),
55
+ /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ ref: el$,
59
+ style: {
60
+ height: "200px",
61
+ overflowY: "auto",
62
+ borderRadius: "6px",
63
+ border: "1px solid var(--sl-color-gray-5, #e2e8f0)",
64
+ background: "var(--sl-color-gray-7, #fff)"
65
+ },
66
+ children: Array.from({ length: 20 }, (_, i) => /* @__PURE__ */ jsxs(
67
+ "div",
68
+ {
69
+ style: {
70
+ padding: "8px 14px",
71
+ borderBottom: "1px solid var(--sl-color-gray-6, #f1f5f9)",
72
+ fontSize: "13px",
73
+ color: "var(--sl-color-gray-2, #475569)",
74
+ fontFamily: "monospace"
75
+ },
76
+ children: [
77
+ "Item ",
78
+ i + 1
79
+ ]
80
+ },
81
+ i
82
+ ))
83
+ }
84
+ ),
85
+ /* @__PURE__ */ jsx(
86
+ "p",
87
+ {
88
+ style: {
89
+ margin: 0,
90
+ fontSize: "11px",
91
+ color: "var(--sl-color-gray-3, #94a3b8)"
92
+ },
93
+ children: "Scroll inside the box to see x, y, arrivedState, and directions update."
94
+ }
95
+ )
96
+ ] });
97
+ }
98
+ export {
99
+ UseScrollDemo as default
100
+ };
101
+ //# sourceMappingURL=demo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/sensors/useScroll/demo.tsx"],"sourcesContent":["import { useRef$ } from \"../../elements/useRef$\";\nimport { useScroll } from \".\";\n\nconst badge = (active: boolean): React.CSSProperties => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"2px 8px\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n fontFamily: \"monospace\",\n background: active\n ? \"var(--sl-color-green-low, #f0fdf4)\"\n : \"var(--sl-color-gray-5, #f1f5f9)\",\n color: active\n ? \"var(--sl-color-green, #16a34a)\"\n : \"var(--sl-color-gray-3, #64748b)\",\n border: `1px solid ${active ? \"var(--sl-color-green, #22c55e)\" : \"var(--sl-color-gray-4, #e2e8f0)\"}`,\n transition: \"all 0.15s\",\n});\n\nexport default function UseScrollDemo() {\n const el$ = useRef$<HTMLDivElement>();\n const { x$, y$, isScrolling$, arrivedState$, directions$ } = useScroll(el$);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {/* Stats */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n background: \"var(--sl-color-gray-6, #f8fafc)\",\n fontFamily: \"monospace\",\n fontSize: \"13px\",\n }}\n >\n <span>\n x: <strong>{x$.get()}</strong>\n </span>\n <span>\n y: <strong>{y$.get()}</strong>\n </span>\n <span style={badge(isScrolling$.get())}>\n {isScrolling$.get() ? \"scrolling\" : \"idle\"}\n </span>\n <span style={badge(arrivedState$.top.get())}>top</span>\n <span style={badge(arrivedState$.bottom.get())}>bottom</span>\n <span style={{ color: \"var(--sl-color-gray-3, #94a3b8)\" }}>\n {directions$.top.get() && \"↑\"}\n {directions$.bottom.get() && \"↓\"}\n {directions$.left.get() && \"←\"}\n {directions$.right.get() && \"→\"}\n </span>\n </div>\n\n {/* Scrollable container */}\n <div\n ref={el$}\n style={{\n height: \"200px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n border: \"1px solid var(--sl-color-gray-5, #e2e8f0)\",\n background: \"var(--sl-color-gray-7, #fff)\",\n }}\n >\n {Array.from({ length: 20 }, (_, i) => (\n <div\n key={i}\n style={{\n padding: \"8px 14px\",\n borderBottom: \"1px solid var(--sl-color-gray-6, #f1f5f9)\",\n fontSize: \"13px\",\n color: \"var(--sl-color-gray-2, #475569)\",\n fontFamily: \"monospace\",\n }}\n >\n Item {i + 1}\n </div>\n ))}\n </div>\n\n <p\n style={{\n margin: 0,\n fontSize: \"11px\",\n color: \"var(--sl-color-gray-3, #94a3b8)\",\n }}\n >\n Scroll inside the box to see x, y, arrivedState, and directions update.\n </p>\n </div>\n );\n}\n"],"mappings":"AAwCQ,SACK,KADL;AAxCR,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAE1B,MAAM,QAAQ,CAAC,YAA0C;AAAA,EACvD,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY,SACR,uCACA;AAAA,EACJ,OAAO,SACH,mCACA;AAAA,EACJ,QAAQ,aAAa,SAAS,mCAAmC,iCAAiC;AAAA,EAClG,YAAY;AACd;AAEe,SAAR,gBAAiC;AACtC,QAAM,MAAM,QAAwB;AACpC,QAAM,EAAE,IAAI,IAAI,cAAc,eAAe,YAAY,IAAI,UAAU,GAAG;AAE1E,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,GAElE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,UAAU;AAAA,UACV,KAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,UAAU;AAAA,QACZ;AAAA,QAEA;AAAA,+BAAC,UAAK;AAAA;AAAA,YACD,oBAAC,YAAQ,aAAG,IAAI,GAAE;AAAA,aACvB;AAAA,UACA,qBAAC,UAAK;AAAA;AAAA,YACD,oBAAC,YAAQ,aAAG,IAAI,GAAE;AAAA,aACvB;AAAA,UACA,oBAAC,UAAK,OAAO,MAAM,aAAa,IAAI,CAAC,GAClC,uBAAa,IAAI,IAAI,cAAc,QACtC;AAAA,UACA,oBAAC,UAAK,OAAO,MAAM,cAAc,IAAI,IAAI,CAAC,GAAG,iBAAG;AAAA,UAChD,oBAAC,UAAK,OAAO,MAAM,cAAc,OAAO,IAAI,CAAC,GAAG,oBAAM;AAAA,UACtD,qBAAC,UAAK,OAAO,EAAE,OAAO,kCAAkC,GACrD;AAAA,wBAAY,IAAI,IAAI,KAAK;AAAA,YACzB,YAAY,OAAO,IAAI,KAAK;AAAA,YAC5B,YAAY,KAAK,IAAI,KAAK;AAAA,YAC1B,YAAY,MAAM,IAAI,KAAK;AAAA,aAC9B;AAAA;AAAA;AAAA,IACF;AAAA,IAGA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,YAAY;AAAA,QACd;AAAA,QAEC,gBAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAC9B;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,cAAc;AAAA,cACd,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,YACd;AAAA,YACD;AAAA;AAAA,cACO,IAAI;AAAA;AAAA;AAAA,UATL;AAAA,QAUP,CACD;AAAA;AAAA,IACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,OAAO;AAAA,QACT;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,42 @@
1
+ import { Observable } from '@legendapp/state';
2
+ import { MaybeElement } from '../../elements/useRef_/index.mjs';
3
+ import { MaybeObservable } from '../../types.mjs';
4
+ import 'react';
5
+
6
+ interface UseScrollOptions {
7
+ throttle?: number;
8
+ idle?: number;
9
+ onStop?: () => void;
10
+ onError?: (error: unknown) => void;
11
+ offset?: {
12
+ left?: number;
13
+ right?: number;
14
+ top?: number;
15
+ bottom?: number;
16
+ };
17
+ behavior?: ScrollBehavior;
18
+ eventListenerOptions?: MaybeObservable<AddEventListenerOptions>;
19
+ }
20
+ interface ArrivedState {
21
+ left: boolean;
22
+ right: boolean;
23
+ top: boolean;
24
+ bottom: boolean;
25
+ }
26
+ interface ScrollDirections {
27
+ left: boolean;
28
+ right: boolean;
29
+ top: boolean;
30
+ bottom: boolean;
31
+ }
32
+ interface UseScrollReturn {
33
+ x$: Observable<number>;
34
+ y$: Observable<number>;
35
+ isScrolling$: Observable<boolean>;
36
+ arrivedState$: Observable<ArrivedState>;
37
+ directions$: Observable<ScrollDirections>;
38
+ measure: () => void;
39
+ }
40
+ declare function useScroll(element: MaybeElement, options?: UseScrollOptions): UseScrollReturn;
41
+
42
+ export { type ArrivedState, type ScrollDirections, type UseScrollOptions, type UseScrollReturn, useScroll };
@@ -0,0 +1,42 @@
1
+ import { Observable } from '@legendapp/state';
2
+ import { MaybeElement } from '../../elements/useRef_/index.js';
3
+ import { MaybeObservable } from '../../types.js';
4
+ import 'react';
5
+
6
+ interface UseScrollOptions {
7
+ throttle?: number;
8
+ idle?: number;
9
+ onStop?: () => void;
10
+ onError?: (error: unknown) => void;
11
+ offset?: {
12
+ left?: number;
13
+ right?: number;
14
+ top?: number;
15
+ bottom?: number;
16
+ };
17
+ behavior?: ScrollBehavior;
18
+ eventListenerOptions?: MaybeObservable<AddEventListenerOptions>;
19
+ }
20
+ interface ArrivedState {
21
+ left: boolean;
22
+ right: boolean;
23
+ top: boolean;
24
+ bottom: boolean;
25
+ }
26
+ interface ScrollDirections {
27
+ left: boolean;
28
+ right: boolean;
29
+ top: boolean;
30
+ bottom: boolean;
31
+ }
32
+ interface UseScrollReturn {
33
+ x$: Observable<number>;
34
+ y$: Observable<number>;
35
+ isScrolling$: Observable<boolean>;
36
+ arrivedState$: Observable<ArrivedState>;
37
+ directions$: Observable<ScrollDirections>;
38
+ measure: () => void;
39
+ }
40
+ declare function useScroll(element: MaybeElement, options?: UseScrollOptions): UseScrollReturn;
41
+
42
+ export { type ArrivedState, type ScrollDirections, type UseScrollOptions, type UseScrollReturn, useScroll };
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var useScroll_exports = {};
21
+ __export(useScroll_exports, {
22
+ useScroll: () => useScroll
23
+ });
24
+ module.exports = __toCommonJS(useScroll_exports);
25
+ var import_react = require("@legendapp/state/react");
26
+ var import_react2 = require("react");
27
+ var import_es_toolkit = require("es-toolkit");
28
+ var import_useRef = require("../../elements/useRef$");
29
+ var import_shared = require("../../shared");
30
+ var import_useEventListener = require("../../browser/useEventListener");
31
+ function getScrollValues(el) {
32
+ if (!el) return { x: 0, y: 0 };
33
+ if ((0, import_shared.isWindow)(el)) return { x: el.scrollX, y: el.scrollY };
34
+ if (el instanceof Document)
35
+ return {
36
+ x: el.documentElement.scrollLeft,
37
+ y: el.documentElement.scrollTop
38
+ };
39
+ return { x: el.scrollLeft, y: el.scrollTop };
40
+ }
41
+ function getScrollDimensions(el) {
42
+ if (!el || (0, import_shared.isWindow)(el)) {
43
+ return {
44
+ scrollW: document.documentElement.scrollWidth,
45
+ scrollH: document.documentElement.scrollHeight,
46
+ clientW: window.innerWidth,
47
+ clientH: window.innerHeight
48
+ };
49
+ }
50
+ if (el instanceof Document) {
51
+ const root = el.documentElement;
52
+ return {
53
+ scrollW: root.scrollWidth,
54
+ scrollH: root.scrollHeight,
55
+ clientW: root.clientWidth,
56
+ clientH: root.clientHeight
57
+ };
58
+ }
59
+ return {
60
+ scrollW: el.scrollWidth,
61
+ scrollH: el.scrollHeight,
62
+ clientW: el.clientWidth,
63
+ clientH: el.clientHeight
64
+ };
65
+ }
66
+ function useScroll(element, options) {
67
+ const initial = getScrollValues((0, import_useRef.peekElement)(element));
68
+ const x$ = (0, import_react.useObservable)(initial.x);
69
+ const y$ = (0, import_react.useObservable)(initial.y);
70
+ const isScrolling$ = (0, import_react.useObservable)(false);
71
+ const arrivedState$ = (0, import_react.useObservable)({
72
+ left: true,
73
+ right: false,
74
+ top: true,
75
+ bottom: false
76
+ });
77
+ const directions$ = (0, import_react.useObservable)({
78
+ left: false,
79
+ right: false,
80
+ top: false,
81
+ bottom: false
82
+ });
83
+ const idleTimer = (0, import_react2.useRef)(null);
84
+ const resetIdle = () => {
85
+ if (idleTimer.current) clearTimeout(idleTimer.current);
86
+ isScrolling$.set(true);
87
+ idleTimer.current = setTimeout(() => {
88
+ isScrolling$.set(false);
89
+ options?.onStop?.();
90
+ }, options?.idle ?? 200);
91
+ };
92
+ const measure = () => {
93
+ const el = (0, import_useRef.peekElement)(element);
94
+ if (!el) return;
95
+ const prevX = x$.peek();
96
+ const prevY = y$.peek();
97
+ const { x: newX, y: newY } = getScrollValues(el);
98
+ directions$.assign({
99
+ left: newX < prevX,
100
+ right: newX > prevX,
101
+ top: newY < prevY,
102
+ bottom: newY > prevY
103
+ });
104
+ x$.set(newX);
105
+ y$.set(newY);
106
+ const { scrollW, scrollH, clientW, clientH } = getScrollDimensions(el);
107
+ const maxX = scrollW - clientW;
108
+ const maxY = scrollH - clientH;
109
+ const offset = options?.offset ?? {};
110
+ arrivedState$.assign({
111
+ left: newX <= (offset.left ?? 0),
112
+ right: newX >= maxX - (offset.right ?? 0),
113
+ top: newY <= (offset.top ?? 0),
114
+ bottom: newY >= maxY - (offset.bottom ?? 0)
115
+ });
116
+ resetIdle();
117
+ };
118
+ const measureRef = (0, import_react2.useRef)(measure);
119
+ measureRef.current = measure;
120
+ const handler = (0, import_react2.useMemo)(() => {
121
+ const ms = options?.throttle ?? 0;
122
+ return ms > 0 ? (0, import_es_toolkit.throttle)(() => measureRef.current(), ms) : () => measureRef.current();
123
+ }, []);
124
+ (0, import_useEventListener.useEventListener)(
125
+ element,
126
+ "scroll",
127
+ handler,
128
+ options?.eventListenerOptions ?? { capture: false, passive: true }
129
+ );
130
+ (0, import_react.useMount)(() => {
131
+ measure();
132
+ return () => {
133
+ if (idleTimer.current) clearTimeout(idleTimer.current);
134
+ };
135
+ });
136
+ return {
137
+ x$,
138
+ y$,
139
+ isScrolling$,
140
+ arrivedState$,
141
+ directions$,
142
+ measure
143
+ };
144
+ }
145
+ // Annotate the CommonJS export names for ESM import in node:
146
+ 0 && (module.exports = {
147
+ useScroll
148
+ });
149
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/sensors/useScroll/index.ts"],"sourcesContent":["\"use client\";\nimport type { Observable } from \"@legendapp/state\";\nimport { useMount, useObservable } from \"@legendapp/state/react\";\nimport { useMemo, useRef } from \"react\";\nimport { throttle } from \"es-toolkit\";\nimport { type MaybeElement, peekElement } from \"../../elements/useRef$\";\nimport { isWindow } from \"../../shared\";\nimport type { MaybeObservable } from \"../../types\";\nimport { useEventListener } from \"../../browser/useEventListener\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface UseScrollOptions {\n throttle?: number;\n idle?: number;\n onStop?: () => void;\n onError?: (error: unknown) => void;\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n behavior?: ScrollBehavior;\n eventListenerOptions?: MaybeObservable<AddEventListenerOptions>;\n}\n\nexport interface ArrivedState {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n}\n\nexport interface ScrollDirections {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n}\n\nexport interface UseScrollReturn {\n x$: Observable<number>;\n y$: Observable<number>;\n isScrolling$: Observable<boolean>;\n arrivedState$: Observable<ArrivedState>;\n directions$: Observable<ScrollDirections>;\n measure: () => void;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction getScrollValues(el: HTMLElement | Document | Window | null): {\n x: number;\n y: number;\n} {\n if (!el) return { x: 0, y: 0 };\n if (isWindow(el)) return { x: el.scrollX, y: el.scrollY };\n if (el instanceof Document)\n return {\n x: el.documentElement.scrollLeft,\n y: el.documentElement.scrollTop,\n };\n return { x: el.scrollLeft, y: el.scrollTop };\n}\n\nfunction getScrollDimensions(el: HTMLElement | Document | Window | null): {\n scrollW: number;\n scrollH: number;\n clientW: number;\n clientH: number;\n} {\n if (!el || isWindow(el)) {\n return {\n scrollW: document.documentElement.scrollWidth,\n scrollH: document.documentElement.scrollHeight,\n clientW: window.innerWidth,\n clientH: window.innerHeight,\n };\n }\n if (el instanceof Document) {\n const root = el.documentElement;\n return {\n scrollW: root.scrollWidth,\n scrollH: root.scrollHeight,\n clientW: root.clientWidth,\n clientH: root.clientHeight,\n };\n }\n return {\n scrollW: el.scrollWidth,\n scrollH: el.scrollHeight,\n clientW: el.clientWidth,\n clientH: el.clientHeight,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useScroll(\n element: MaybeElement,\n options?: UseScrollOptions,\n): UseScrollReturn {\n const initial = getScrollValues(peekElement(element));\n\n const x$ = useObservable<number>(initial.x);\n const y$ = useObservable<number>(initial.y);\n const isScrolling$ = useObservable<boolean>(false);\n const arrivedState$ = useObservable<ArrivedState>({\n left: true,\n right: false,\n top: true,\n bottom: false,\n });\n const directions$ = useObservable<ScrollDirections>({\n left: false,\n right: false,\n top: false,\n bottom: false,\n });\n\n const idleTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const resetIdle = () => {\n if (idleTimer.current) clearTimeout(idleTimer.current);\n isScrolling$.set(true);\n idleTimer.current = setTimeout(() => {\n isScrolling$.set(false);\n options?.onStop?.();\n }, options?.idle ?? 200);\n };\n\n const measure = () => {\n const el = peekElement(element);\n if (!el) return;\n\n const prevX = x$.peek();\n const prevY = y$.peek();\n const { x: newX, y: newY } = getScrollValues(el);\n\n directions$.assign({\n left: newX < prevX,\n right: newX > prevX,\n top: newY < prevY,\n bottom: newY > prevY,\n });\n\n x$.set(newX);\n y$.set(newY);\n\n const { scrollW, scrollH, clientW, clientH } = getScrollDimensions(el);\n const maxX = scrollW - clientW;\n const maxY = scrollH - clientH;\n const offset = options?.offset ?? {};\n\n arrivedState$.assign({\n left: newX <= (offset.left ?? 0),\n right: newX >= maxX - (offset.right ?? 0),\n top: newY <= (offset.top ?? 0),\n bottom: newY >= maxY - (offset.bottom ?? 0),\n });\n\n resetIdle();\n };\n\n const measureRef = useRef(measure);\n measureRef.current = measure;\n\n const handler = useMemo(() => {\n const ms = options?.throttle ?? 0;\n return ms > 0\n ? throttle(() => measureRef.current(), ms)\n : () => measureRef.current();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEventListener(element as any, \"scroll\", handler,\n options?.eventListenerOptions ?? { capture: false, passive: true },\n );\n\n useMount(() => {\n measure();\n return () => {\n if (idleTimer.current) clearTimeout(idleTimer.current);\n };\n });\n\n return {\n x$,\n y$,\n isScrolling$,\n arrivedState$,\n directions$,\n measure,\n };\n}\n"],"mappings":"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","names":["import_react"]}