react-atom-trigger 1.0.17 → 1.1.1

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.
package/README.md CHANGED
@@ -60,6 +60,20 @@ So, if you already have some scroll event listener, just provide it to AtomTrigg
60
60
  ## Utility hooks
61
61
  For someone who wants everything out-of-the-box, `useWindowDimensions`, `useWindowScroll` and `useContainerScroll` hooks are also available for import.
62
62
 
63
+ ## Build
64
+ This package is built with `tsdown`.
65
+
66
+ Build output:
67
+
68
+ ```text
69
+ lib/index.js
70
+ lib/index.es.js
71
+ lib/index.d.ts
72
+ ```
73
+
74
+ ## UMD global
75
+ When the UMD bundle is loaded directly in the browser, the library is exposed as `window.reactAtomTrigger`.
76
+
63
77
  ## Examples
64
78
  It is sometimes better to tweak and see for yourself: [CodeSandbox examples](https://codesandbox.io/examples/package/react-atom-trigger).
65
79
 
@@ -68,4 +82,3 @@ It is sometimes better to tweak and see for yourself: [CodeSandbox examples](htt
68
82
 
69
83
 
70
84
 
71
-
package/lib/index.d.ts CHANGED
@@ -1,3 +1,49 @@
1
- export { default as AtomTrigger } from './AtomTrigger';
2
- export * from './AtomTrigger';
3
- export * from './utils';
1
+ import React from "react";
2
+
3
+ //#region src/AtomTrigger.types.d.ts
4
+ type ScrollEvent = {
5
+ scrollX: number;
6
+ scrollY: number;
7
+ };
8
+ type Dimensions = {
9
+ width: number;
10
+ height: number;
11
+ };
12
+ type DebugInfo = {
13
+ timesTriggered: {
14
+ leftViewport: number;
15
+ enteredViewport: number;
16
+ };
17
+ trigger: 'entered' | 'left';
18
+ };
19
+ interface IAtomTriggerProps {
20
+ scrollEvent: ScrollEvent;
21
+ behavior?: 'default' | 'enter' | 'leave';
22
+ callback: () => unknown;
23
+ getDebugInfo?: (data: DebugInfo) => void;
24
+ triggerOnce?: boolean;
25
+ className?: string;
26
+ dimensions: Dimensions;
27
+ offset?: [number, number, number, number];
28
+ }
29
+ //#endregion
30
+ //#region src/AtomTrigger.d.ts
31
+ declare const AtomTrigger: React.FC<IAtomTriggerProps>;
32
+ //#endregion
33
+ //#region src/utils.d.ts
34
+ type Options = {
35
+ passiveEventListener?: boolean;
36
+ eventListenerTimeoutMs?: number;
37
+ };
38
+ declare function log<T>(log: T, color?: string): void;
39
+ declare function useWindowDimensions(options?: Options | undefined): Dimensions;
40
+ declare function useContainerScroll({
41
+ containerRef,
42
+ options
43
+ }: {
44
+ containerRef?: React.RefObject<HTMLElement | null>;
45
+ options?: Options;
46
+ }): ScrollEvent;
47
+ declare function useWindowScroll(options?: Options): ScrollEvent;
48
+ //#endregion
49
+ export { AtomTrigger, Options, log, useContainerScroll, useWindowDimensions, useWindowScroll };
package/lib/index.es.js CHANGED
@@ -1 +1 @@
1
- import e from"react";const t=({scrollEvent:t,callback:r,getDebugInfo:n,triggerOnce:o=!1,className:s,behavior:i="default",dimensions:c,offset:u=[0,0,0,0]})=>{const l=e.useRef(null),[f,d]=e.useState(void 0),a=e.useRef(void 0),[p,v]=e.useState({leftViewport:0,enteredViewport:0});return e.useLayoutEffect((()=>{if(l.current){const e=l.current.getBoundingClientRect(),[t,r,n,o]=u;e.top>t&&e.bottom<c.height-n&&e.left>o&&e.right<c.width-r?d("inViewport"):e.top>c.height-n?d("bottom"):d("top")}}),[l,t,c,u]),e.useLayoutEffect((()=>{if(void 0===a.current&&void 0!==f&&(a.current=f),"inViewport"===f&&("bottom"===a.current||"top"===a.current)){if("enter"===i&&(!o||o&&p.enteredViewport)||"default"===i&&(!o||o&&(p.enteredViewport<1||p.leftViewport<1))){r&&r();const e={...p,enteredViewport:p.enteredViewport+1};n&&n({timesTriggered:e,trigger:"entered"}),v(e)}a.current=f}if(("top"===f||"bottom"===f)&&"inViewport"===a.current&&(a.current=f,"leave"===i&&(!o||o&&0===p.leftViewport)||"default"===i&&(!o||o&&(p.leftViewport<1||p.enteredViewport<1)))){r&&r();const e={...p,leftViewport:p.leftViewport+1};n&&n({timesTriggered:e,trigger:"left"}),v(e)}}),[f,r,o,i,n]),e.createElement("div",{ref:l,style:{display:"table"},className:s})};function r(e,t){"development"===process.env.NODE_ENV&&(t=t?`background: ${t}; color: #fff`:"background: #007700; color: #fff",console.group("%c log: "+e,t),console.groupEnd())}function n(){const{scrollX:e,scrollY:t}=window;return{scrollX:e,scrollY:t}}function o(){const{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}}function s(t){const[r,n]=e.useState(o()),s=e.useRef(null),i=e.useRef(!1),c=t?.eventListenerTimeoutMs||15;return e.useEffect((()=>{const e=o();function r(){s.current&&clearTimeout(s.current),s.current=setTimeout((()=>n(o())),c)}return n(e),window.addEventListener("resize",r,{passive:t?.passiveEventListener}),i.current=!0,()=>{i&&window.removeEventListener("resize",r)}}),[]),r}function i({containerRef:t,options:r}){const[o,s]=e.useState(n()),i=e.useRef(null),c=e.useRef(!1);return e.useEffect((()=>{const e=e=>{const t=e.target;i.current&&clearTimeout(i.current),i.current=setTimeout((()=>{s({scrollX:t.scrollLeft,scrollY:t.scrollTop})}),r?.eventListenerTimeoutMs||15)},n=t?.current;return n&&(n&&!1===c.current&&n.addEventListener("scroll",e,{passive:r?.passiveEventListener}),c.current=!0),()=>{c&&n&&n.removeEventListener("scroll",e)}}),[t]),o}function c(t){const[r,o]=e.useState(n()),s=e.useRef(null),i=e.useRef(!1);return e.useEffect((()=>{const e=()=>{s.current&&clearTimeout(s.current),s.current=setTimeout((()=>{const{scrollX:e,scrollY:t}=n();o({scrollX:e,scrollY:t})}),t?.eventListenerTimeoutMs||20)};return window.addEventListener("scroll",e,{passive:t?.passiveEventListener}),i.current=!0,()=>{i&&window.removeEventListener("scroll",e)}}),[]),r}export{t as AtomTrigger,r as log,i as useContainerScroll,s as useWindowDimensions,c as useWindowScroll};
1
+ import e from"react";const t=typeof window>`u`?e.useEffect:e.useLayoutEffect,n=({scrollEvent:n,callback:r,getDebugInfo:i,triggerOnce:a=!1,className:o,behavior:s=`default`,dimensions:c,offset:l=[0,0,0,0]})=>{let u=e.useRef(null),[d,f]=e.useState(void 0),p=e.useRef(void 0),[m,h]=e.useState({leftViewport:0,enteredViewport:0});return t(()=>{if(u.current){let e=u.current.getBoundingClientRect(),[t,n,r,i]=l;e.top>t&&e.bottom<c.height-r&&e.left>i&&e.right<c.width-n?f(`inViewport`):e.top>c.height-r?f(`bottom`):f(`top`)}},[u,n,c,l]),t(()=>{if(p.current===void 0&&d!==void 0&&(p.current=d),d===`inViewport`&&(p.current===`bottom`||p.current===`top`)){if(s===`enter`&&(!a||a&&m.enteredViewport===0)||s===`default`&&(!a||a&&(m.enteredViewport<1||m.leftViewport<1))){r&&r();let e={...m,enteredViewport:m.enteredViewport+1};i&&i({timesTriggered:e,trigger:`entered`}),h(e)}p.current=d}if((d===`top`||d===`bottom`)&&p.current===`inViewport`&&(p.current=d,s===`leave`&&(!a||a&&m.leftViewport===0)||s===`default`&&(!a||a&&(m.leftViewport<1||m.enteredViewport<1)))){r&&r();let e={...m,leftViewport:m.leftViewport+1};i&&i({timesTriggered:e,trigger:`left`}),h(e)}},[d,r,a,s,i]),e.createElement(`div`,{ref:u,style:{display:`table`},className:o})},r={scrollX:0,scrollY:0},i={width:0,height:0},a=typeof window<`u`;function o(e,t){}function s(){if(!a)return r;let{scrollX:e,scrollY:t}=window;return{scrollX:e,scrollY:t}}function c(){if(!a)return i;let{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}}function l(e){return e?{scrollX:e.scrollLeft,scrollY:e.scrollTop}:r}function u(t){let[n,r]=e.useState(()=>c()),i=e.useRef(null),o=t?.eventListenerTimeoutMs||15;return e.useEffect(()=>{if(!a)return;r(c());function e(){i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r(c()),o)}return window.addEventListener(`resize`,e,{passive:t?.passiveEventListener}),()=>{i.current&&clearTimeout(i.current),window.removeEventListener(`resize`,e)}},[t?.eventListenerTimeoutMs,t?.passiveEventListener]),n}function d({containerRef:t,options:n}){let[i,a]=e.useState(()=>l(t?.current)),o=e.useRef(null),s=t?.current;return e.useEffect(()=>{if(!s){a(r);return}let e=e=>{let t=e.target;o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{a({scrollX:t.scrollLeft,scrollY:t.scrollTop})},n?.eventListenerTimeoutMs||15)};return a(l(s)),s.addEventListener(`scroll`,e,{passive:n?.passiveEventListener}),()=>{o.current&&clearTimeout(o.current),s.removeEventListener(`scroll`,e)}},[s,n?.eventListenerTimeoutMs,n?.passiveEventListener]),i}function f(t){let[n,r]=e.useState(()=>s()),i=e.useRef(null);return e.useEffect(()=>{if(!a)return;let e=()=>{i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{let{scrollX:e,scrollY:t}=s();r({scrollX:e,scrollY:t})},t?.eventListenerTimeoutMs||20)};return window.addEventListener(`scroll`,e,{passive:t?.passiveEventListener}),()=>{i.current&&clearTimeout(i.current),window.removeEventListener(`scroll`,e)}},[t?.eventListenerTimeoutMs,t?.passiveEventListener]),n}export{n as AtomTrigger,o as log,d as useContainerScroll,u as useWindowDimensions,f as useWindowScroll};
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["react-atom-trigger"]={},e.React)}(this,(function(e,t){"use strict";function r(){const{scrollX:e,scrollY:t}=window;return{scrollX:e,scrollY:t}}function n(){const{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}}e.AtomTrigger=({scrollEvent:e,callback:r,getDebugInfo:n,triggerOnce:o=!1,className:i,behavior:s="default",dimensions:c,offset:u=[0,0,0,0]})=>{const l=t.useRef(null),[f,d]=t.useState(void 0),a=t.useRef(void 0),[p,g]=t.useState({leftViewport:0,enteredViewport:0});return t.useLayoutEffect((()=>{if(l.current){const e=l.current.getBoundingClientRect(),[t,r,n,o]=u;e.top>t&&e.bottom<c.height-n&&e.left>o&&e.right<c.width-r?d("inViewport"):e.top>c.height-n?d("bottom"):d("top")}}),[l,e,c,u]),t.useLayoutEffect((()=>{if(void 0===a.current&&void 0!==f&&(a.current=f),"inViewport"===f&&("bottom"===a.current||"top"===a.current)){if("enter"===s&&(!o||o&&p.enteredViewport)||"default"===s&&(!o||o&&(p.enteredViewport<1||p.leftViewport<1))){r&&r();const e={...p,enteredViewport:p.enteredViewport+1};n&&n({timesTriggered:e,trigger:"entered"}),g(e)}a.current=f}if(("top"===f||"bottom"===f)&&"inViewport"===a.current&&(a.current=f,"leave"===s&&(!o||o&&0===p.leftViewport)||"default"===s&&(!o||o&&(p.leftViewport<1||p.enteredViewport<1)))){r&&r();const e={...p,leftViewport:p.leftViewport+1};n&&n({timesTriggered:e,trigger:"left"}),g(e)}}),[f,r,o,s,n]),t.createElement("div",{ref:l,style:{display:"table"},className:i})},e.log=function(e,t){"development"===process.env.NODE_ENV&&(t=t?`background: ${t}; color: #fff`:"background: #007700; color: #fff",console.group("%c log: "+e,t),console.groupEnd())},e.useContainerScroll=function({containerRef:e,options:n}){const[o,i]=t.useState(r()),s=t.useRef(null),c=t.useRef(!1);return t.useEffect((()=>{const t=e=>{const t=e.target;s.current&&clearTimeout(s.current),s.current=setTimeout((()=>{i({scrollX:t.scrollLeft,scrollY:t.scrollTop})}),n?.eventListenerTimeoutMs||15)},r=e?.current;return r&&(r&&!1===c.current&&r.addEventListener("scroll",t,{passive:n?.passiveEventListener}),c.current=!0),()=>{c&&r&&r.removeEventListener("scroll",t)}}),[e]),o},e.useWindowDimensions=function(e){const[r,o]=t.useState(n()),i=t.useRef(null),s=t.useRef(!1),c=e?.eventListenerTimeoutMs||15;return t.useEffect((()=>{const t=n();function r(){i.current&&clearTimeout(i.current),i.current=setTimeout((()=>o(n())),c)}return o(t),window.addEventListener("resize",r,{passive:e?.passiveEventListener}),s.current=!0,()=>{s&&window.removeEventListener("resize",r)}}),[]),r},e.useWindowScroll=function(e){const[n,o]=t.useState(r()),i=t.useRef(null),s=t.useRef(!1);return t.useEffect((()=>{const t=()=>{i.current&&clearTimeout(i.current),i.current=setTimeout((()=>{const{scrollX:e,scrollY:t}=r();o({scrollX:e,scrollY:t})}),e?.eventListenerTimeoutMs||20)};return window.addEventListener("scroll",t,{passive:e?.passiveEventListener}),s.current=!0,()=>{s&&window.removeEventListener("scroll",t)}}),[]),n}}));
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`)):typeof define==`function`&&define.amd?define([`exports`,`react`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.reactAtomTrigger={},e.React))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e};t=((e,t,i)=>(i=e==null?{}:n(o(e)),c(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)))(t);let l=typeof window>`u`?t.default.useEffect:t.default.useLayoutEffect,u=({scrollEvent:e,callback:n,getDebugInfo:r,triggerOnce:i=!1,className:a,behavior:o=`default`,dimensions:s,offset:c=[0,0,0,0]})=>{let u=t.default.useRef(null),[d,f]=t.default.useState(void 0),p=t.default.useRef(void 0),[m,h]=t.default.useState({leftViewport:0,enteredViewport:0});return l(()=>{if(u.current){let e=u.current.getBoundingClientRect(),[t,n,r,i]=c;e.top>t&&e.bottom<s.height-r&&e.left>i&&e.right<s.width-n?f(`inViewport`):e.top>s.height-r?f(`bottom`):f(`top`)}},[u,e,s,c]),l(()=>{if(p.current===void 0&&d!==void 0&&(p.current=d),d===`inViewport`&&(p.current===`bottom`||p.current===`top`)){if(o===`enter`&&(!i||i&&m.enteredViewport===0)||o===`default`&&(!i||i&&(m.enteredViewport<1||m.leftViewport<1))){n&&n();let e={...m,enteredViewport:m.enteredViewport+1};r&&r({timesTriggered:e,trigger:`entered`}),h(e)}p.current=d}if((d===`top`||d===`bottom`)&&p.current===`inViewport`&&(p.current=d,o===`leave`&&(!i||i&&m.leftViewport===0)||o===`default`&&(!i||i&&(m.leftViewport<1||m.enteredViewport<1)))){n&&n();let e={...m,leftViewport:m.leftViewport+1};r&&r({timesTriggered:e,trigger:`left`}),h(e)}},[d,n,i,o,r]),t.default.createElement(`div`,{ref:u,style:{display:`table`},className:a})},d={scrollX:0,scrollY:0},f={width:0,height:0},p=typeof window<`u`;function m(e,t){}function h(){if(!p)return d;let{scrollX:e,scrollY:t}=window;return{scrollX:e,scrollY:t}}function g(){if(!p)return f;let{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}}function _(e){return e?{scrollX:e.scrollLeft,scrollY:e.scrollTop}:d}function v(e){let[n,r]=t.default.useState(()=>g()),i=t.default.useRef(null),a=e?.eventListenerTimeoutMs||15;return t.default.useEffect(()=>{if(!p)return;r(g());function t(){i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r(g()),a)}return window.addEventListener(`resize`,t,{passive:e?.passiveEventListener}),()=>{i.current&&clearTimeout(i.current),window.removeEventListener(`resize`,t)}},[e?.eventListenerTimeoutMs,e?.passiveEventListener]),n}function y({containerRef:e,options:n}){let[r,i]=t.default.useState(()=>_(e?.current)),a=t.default.useRef(null),o=e?.current;return t.default.useEffect(()=>{if(!o){i(d);return}let e=e=>{let t=e.target;a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{i({scrollX:t.scrollLeft,scrollY:t.scrollTop})},n?.eventListenerTimeoutMs||15)};return i(_(o)),o.addEventListener(`scroll`,e,{passive:n?.passiveEventListener}),()=>{a.current&&clearTimeout(a.current),o.removeEventListener(`scroll`,e)}},[o,n?.eventListenerTimeoutMs,n?.passiveEventListener]),r}function b(e){let[n,r]=t.default.useState(()=>h()),i=t.default.useRef(null);return t.default.useEffect(()=>{if(!p)return;let t=()=>{i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{let{scrollX:e,scrollY:t}=h();r({scrollX:e,scrollY:t})},e?.eventListenerTimeoutMs||20)};return window.addEventListener(`scroll`,t,{passive:e?.passiveEventListener}),()=>{i.current&&clearTimeout(i.current),window.removeEventListener(`scroll`,t)}},[e?.eventListenerTimeoutMs,e?.passiveEventListener]),n}e.AtomTrigger=u,e.log=m,e.useContainerScroll=y,e.useWindowDimensions=v,e.useWindowScroll=b});
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.es.js",
7
7
  "typings": "lib/index.d.ts",
8
- "version": "1.0.17",
8
+ "version": "1.1.1",
9
9
  "license": "MIT",
10
10
  "author": "innrVoice <innrvoice@icloud.com>",
11
11
  "repository": {
@@ -16,31 +16,18 @@
16
16
  "url": "https://github.com/innrvoice/react-atom-trigger/issues"
17
17
  },
18
18
  "scripts": {
19
- "build": "rimraf lib && rollup -c rollup.config.js"
19
+ "build": "tsdown",
20
+ "lint": "oxlint . --ignore-pattern node_modules --ignore-pattern lib"
20
21
  },
21
22
  "peerDependencies": {
22
23
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
23
24
  },
24
25
  "devDependencies": {
25
- "@rollup/plugin-commonjs": "^28.0.3",
26
- "@rollup/plugin-node-resolve": "^16.0.1",
27
- "@rollup/plugin-terser": "0.4.4",
28
26
  "@types/node": "^20.6.3",
29
27
  "@types/react": "^19.0.12",
30
- "@typescript-eslint/eslint-plugin": "^8.20.0",
31
- "@typescript-eslint/parser": "^8.20.0",
32
- "eslint": "^9.18.0",
33
- "eslint-config-prettier": "^10.0.1",
34
- "eslint-plugin-node": "^11.1.0",
35
- "eslint-plugin-prettier": "^5.2.1",
36
- "eslint-plugin-react": "^7.27.1",
37
- "eslint-plugin-react-hooks": "^5.1.0",
38
- "eslint-plugin-sort-imports-es6-autofix": "^0.6.0",
28
+ "oxlint": "^1.50.0",
39
29
  "prettier": "^3.4.2",
40
- "rimraf": "^6.0.1",
41
- "rollup": "^4.37.0",
42
- "rollup-plugin-node-externals": "^8.0.0",
43
- "rollup-plugin-typescript2": "^0.36.0",
30
+ "tsdown": "^0.21.7",
44
31
  "tslib": "^2.8.0",
45
32
  "typescript": "^5.6.3"
46
33
  },
@@ -54,10 +41,11 @@
54
41
  "files": [
55
42
  "lib"
56
43
  ],
57
- "volta": {
58
- "node": "20.18.1"
59
- },
60
44
  "resolutions": {
61
- "glob": "11.1.0"
45
+ "**/defu": "6.1.6",
46
+ "**/picomatch": "4.0.4"
47
+ },
48
+ "engines": {
49
+ "node": ">=20.19.0"
62
50
  }
63
51
  }
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import { IAtomTriggerProps } from './AtomTrigger.types';
3
- declare const AtomTrigger: React.FC<IAtomTriggerProps>;
4
- export default AtomTrigger;
@@ -1,25 +0,0 @@
1
- export type ScrollEvent = {
2
- scrollX: number;
3
- scrollY: number;
4
- };
5
- export type Dimensions = {
6
- width: number;
7
- height: number;
8
- };
9
- export type DebugInfo = {
10
- timesTriggered: {
11
- leftViewport: number;
12
- enteredViewport: number;
13
- };
14
- trigger: 'entered' | 'left';
15
- };
16
- export interface IAtomTriggerProps {
17
- scrollEvent: ScrollEvent;
18
- behavior?: 'default' | 'enter' | 'leave';
19
- callback: () => unknown;
20
- getDebugInfo?: (data: DebugInfo) => void;
21
- triggerOnce?: boolean;
22
- className?: string;
23
- dimensions: Dimensions;
24
- offset?: [number, number, number, number];
25
- }
package/lib/utils.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { Dimensions, ScrollEvent } from './AtomTrigger.types';
3
- export type Options = {
4
- passiveEventListener?: boolean;
5
- eventListenerTimeoutMs?: number;
6
- };
7
- export declare function log<T>(log: T, color?: string): void;
8
- export declare function useWindowDimensions(options?: Options | undefined): Dimensions;
9
- export declare function useContainerScroll({ containerRef, options, }: {
10
- containerRef?: React.RefObject<HTMLDivElement>;
11
- options?: Options;
12
- }): ScrollEvent;
13
- export declare function useWindowScroll(options?: Options): ScrollEvent;